@things-factory/integration-fulfillment 8.0.0-beta.0 → 8.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +11 -11
- package/server/controllers/fulfillment-api/decorators.ts +0 -44
- package/server/controllers/fulfillment-api/index.ts +0 -64
- package/server/controllers/fulfillment-api/types.ts +0 -0
- package/server/controllers/index.ts +0 -1
- package/server/controllers/operato/cancel-release-order.ts +0 -19
- package/server/controllers/operato/create-inbound-order.ts +0 -33
- package/server/controllers/operato/create-outbound-order.ts +0 -17
- package/server/controllers/operato/create-sales-invoice.ts +0 -17
- package/server/controllers/operato/echo.ts +0 -14
- package/server/controllers/operato/get-center-products.ts +0 -20
- package/server/controllers/operato/get-inbound-order.ts +0 -22
- package/server/controllers/operato/get-inventory-product-group-open-api.ts +0 -19
- package/server/controllers/operato/get-inventory-product-group.ts +0 -19
- package/server/controllers/operato/get-outbound-order.ts +0 -22
- package/server/controllers/operato/get-outbound-orders.ts +0 -21
- package/server/controllers/operato/index.ts +0 -31
- package/server/controllers/operato/operato.ts +0 -130
- package/server/controllers/operato/platform-action.ts +0 -51
- package/server/controllers/operato/update-release-order-details.ts +0 -17
- package/server/entities/fulfillment-center.ts +0 -82
- package/server/entities/index.ts +0 -5
- package/server/graphql/index.ts +0 -7
- package/server/graphql/resolvers/fulfillment-center/create-fulfillment-center.ts +0 -14
- package/server/graphql/resolvers/fulfillment-center/delete-fulfillment-center.ts +0 -10
- package/server/graphql/resolvers/fulfillment-center/delete-fulfillment-centers.ts +0 -15
- package/server/graphql/resolvers/fulfillment-center/fulfillment-center.ts +0 -14
- package/server/graphql/resolvers/fulfillment-center/fulfillment-centers.ts +0 -16
- package/server/graphql/resolvers/fulfillment-center/having-fulfillment-center.ts +0 -21
- package/server/graphql/resolvers/fulfillment-center/index.ts +0 -27
- package/server/graphql/resolvers/fulfillment-center/operato/deactivate-operato-center.ts +0 -49
- package/server/graphql/resolvers/fulfillment-center/operato/generate-operato-access-token.ts +0 -63
- package/server/graphql/resolvers/fulfillment-center/operato/get-operato-auth-url.ts +0 -14
- package/server/graphql/resolvers/fulfillment-center/operato/index.ts +0 -14
- package/server/graphql/resolvers/fulfillment-center/operato/refresh-operato-access-token.ts +0 -62
- package/server/graphql/resolvers/fulfillment-center/update-fulfillment-center.ts +0 -18
- package/server/graphql/resolvers/fulfillment-center/update-multiple-fulfillment-center.ts +0 -45
- package/server/graphql/resolvers/index.ts +0 -5
- package/server/graphql/types/fulfillment-center/fulfillment-center-list.ts +0 -8
- package/server/graphql/types/fulfillment-center/fulfillment-center-patch.ts +0 -13
- package/server/graphql/types/fulfillment-center/fulfillment-center.ts +0 -19
- package/server/graphql/types/fulfillment-center/index.ts +0 -52
- package/server/graphql/types/fulfillment-center/new-fulfillment-center.ts +0 -11
- package/server/graphql/types/index.ts +0 -9
- package/server/index.ts +0 -6
- package/server/migrations/index.ts +0 -9
- package/server/routes.ts +0 -25
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { User } from '@things-factory/auth-base'
|
|
2
|
-
import { Domain } from '@things-factory/shell'
|
|
3
|
-
import { Column, CreateDateColumn, Entity, Index, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'
|
|
4
|
-
|
|
5
|
-
export const enum FulfillmentCenterStatus {
|
|
6
|
-
Active = 'active',
|
|
7
|
-
Inactive = 'inactive'
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
@Entity()
|
|
11
|
-
@Index(
|
|
12
|
-
'ix_fulfillment-center_0',
|
|
13
|
-
(fulfillmentCenter: FulfillmentCenter) => [fulfillmentCenter.domain, fulfillmentCenter.name],
|
|
14
|
-
{ unique: true }
|
|
15
|
-
)
|
|
16
|
-
export class FulfillmentCenter {
|
|
17
|
-
@PrimaryGeneratedColumn('uuid')
|
|
18
|
-
id: string
|
|
19
|
-
|
|
20
|
-
@ManyToOne(type => Domain)
|
|
21
|
-
domain: Domain
|
|
22
|
-
|
|
23
|
-
@Column()
|
|
24
|
-
platform: string
|
|
25
|
-
|
|
26
|
-
@Column({
|
|
27
|
-
nullable: true
|
|
28
|
-
})
|
|
29
|
-
centerId: string
|
|
30
|
-
|
|
31
|
-
@Column()
|
|
32
|
-
countryCode: string
|
|
33
|
-
|
|
34
|
-
@Column({
|
|
35
|
-
nullable: true
|
|
36
|
-
})
|
|
37
|
-
status: string
|
|
38
|
-
|
|
39
|
-
@Column()
|
|
40
|
-
name: string
|
|
41
|
-
|
|
42
|
-
@Column({
|
|
43
|
-
nullable: true
|
|
44
|
-
})
|
|
45
|
-
accessInfo: string
|
|
46
|
-
|
|
47
|
-
@Column({
|
|
48
|
-
nullable: true
|
|
49
|
-
})
|
|
50
|
-
accessToken: string
|
|
51
|
-
|
|
52
|
-
@Column({
|
|
53
|
-
nullable: true
|
|
54
|
-
})
|
|
55
|
-
refreshToken: string
|
|
56
|
-
|
|
57
|
-
@Column({
|
|
58
|
-
nullable: true
|
|
59
|
-
})
|
|
60
|
-
account: string
|
|
61
|
-
|
|
62
|
-
@Column({
|
|
63
|
-
nullable: true
|
|
64
|
-
})
|
|
65
|
-
description: string
|
|
66
|
-
|
|
67
|
-
@CreateDateColumn()
|
|
68
|
-
createdAt: Date
|
|
69
|
-
|
|
70
|
-
@UpdateDateColumn()
|
|
71
|
-
updatedAt: Date
|
|
72
|
-
|
|
73
|
-
@ManyToOne(type => User, {
|
|
74
|
-
nullable: true
|
|
75
|
-
})
|
|
76
|
-
creator: User
|
|
77
|
-
|
|
78
|
-
@ManyToOne(type => User, {
|
|
79
|
-
nullable: true
|
|
80
|
-
})
|
|
81
|
-
updater: User
|
|
82
|
-
}
|
package/server/entities/index.ts
DELETED
package/server/graphql/index.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { getRepository } from '@things-factory/shell'
|
|
2
|
-
|
|
3
|
-
import { FulfillmentCenter } from '../../../entities'
|
|
4
|
-
|
|
5
|
-
export const createFulfillmentCenter = {
|
|
6
|
-
async createFulfillmentCenter(_: any, { fulfillmentCenter }, context: ResolverContext) {
|
|
7
|
-
return await getRepository(FulfillmentCenter).save({
|
|
8
|
-
...fulfillmentCenter,
|
|
9
|
-
domain: context.state.domain,
|
|
10
|
-
creator: context.state.user,
|
|
11
|
-
updater: context.state.user
|
|
12
|
-
})
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { getRepository } from '@things-factory/shell'
|
|
2
|
-
|
|
3
|
-
import { FulfillmentCenter } from '../../../entities'
|
|
4
|
-
|
|
5
|
-
export const deleteFulfillmentCenter = {
|
|
6
|
-
async deleteFulfillmentCenter(_: any, { name }, context: ResolverContext) {
|
|
7
|
-
await getRepository(FulfillmentCenter).delete({ domain: { id: context.state.domain.id }, name })
|
|
8
|
-
return true
|
|
9
|
-
}
|
|
10
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { In } from 'typeorm'
|
|
2
|
-
|
|
3
|
-
import { getRepository } from '@things-factory/shell'
|
|
4
|
-
|
|
5
|
-
import { FulfillmentCenter } from '../../../entities'
|
|
6
|
-
|
|
7
|
-
export const deleteFulfillmentCenters = {
|
|
8
|
-
async deleteFulfillmentCenters(_: any, { ids }, context: ResolverContext) {
|
|
9
|
-
await getRepository(FulfillmentCenter).delete({
|
|
10
|
-
domain: { id: context.state.domain.id },
|
|
11
|
-
id: In(ids)
|
|
12
|
-
})
|
|
13
|
-
return true
|
|
14
|
-
}
|
|
15
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { getRepository } from '@things-factory/shell'
|
|
2
|
-
|
|
3
|
-
import { FulfillmentCenter } from '../../../entities'
|
|
4
|
-
|
|
5
|
-
export const fulfillmentCenterResolver = {
|
|
6
|
-
async fulfillmentCenter(_: any, { id }, context: ResolverContext) {
|
|
7
|
-
const repository = getRepository(FulfillmentCenter)
|
|
8
|
-
|
|
9
|
-
return await getRepository(FulfillmentCenter).findOne({
|
|
10
|
-
where: { domain: { id: context.state.domain.id }, id },
|
|
11
|
-
relations: ['domain', 'creator', 'updater']
|
|
12
|
-
})
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { buildQuery, getRepository, ListParam } from '@things-factory/shell'
|
|
2
|
-
|
|
3
|
-
import { FulfillmentCenter } from '../../../entities'
|
|
4
|
-
|
|
5
|
-
export const fulfillmentCentersResolver = {
|
|
6
|
-
async fulfillmentCenters(_: any, params: ListParam, context: ResolverContext) {
|
|
7
|
-
const queryBuilder = getRepository(FulfillmentCenter).createQueryBuilder('FC')
|
|
8
|
-
buildQuery(queryBuilder, params, context)
|
|
9
|
-
const [items, total] = await queryBuilder
|
|
10
|
-
.leftJoinAndSelect('FC.domain', 'DOMAIN')
|
|
11
|
-
.leftJoinAndSelect('FC.creator', 'CREATOR')
|
|
12
|
-
.leftJoinAndSelect('FC.updater', 'UPDATER')
|
|
13
|
-
.getManyAndCount()
|
|
14
|
-
return { items, total }
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import '@things-factory/auth-base' // for ResolverContext
|
|
2
|
-
|
|
3
|
-
import { getRepository } from '@things-factory/shell'
|
|
4
|
-
|
|
5
|
-
import { FulfillmentCenter } from '../../../entities'
|
|
6
|
-
|
|
7
|
-
const debug = require('debug')('things-factory:integration-fulfillment:having-fulfillment-center')
|
|
8
|
-
|
|
9
|
-
export const havingFulfillmentCenterResolver = {
|
|
10
|
-
async havingFulfillmentCenter(_: any, {}, context: ResolverContext) {
|
|
11
|
-
const { user } = context.state
|
|
12
|
-
const userCompanyDomain = user.domains.filter(domain => domain.extType === 'company')
|
|
13
|
-
const fulfillmentCenters: FulfillmentCenter[] = await getRepository(FulfillmentCenter).find({
|
|
14
|
-
where: {
|
|
15
|
-
domain: { id: userCompanyDomain[0].id }
|
|
16
|
-
}
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
return fulfillmentCenters
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { fulfillmentCenterResolver } from './fulfillment-center'
|
|
2
|
-
import { fulfillmentCentersResolver } from './fulfillment-centers'
|
|
3
|
-
import { havingFulfillmentCenterResolver } from './having-fulfillment-center'
|
|
4
|
-
|
|
5
|
-
import { updateMultipleFulfillmentCenter } from './update-multiple-fulfillment-center'
|
|
6
|
-
import { updateFulfillmentCenter } from './update-fulfillment-center'
|
|
7
|
-
import { createFulfillmentCenter } from './create-fulfillment-center'
|
|
8
|
-
import { deleteFulfillmentCenter } from './delete-fulfillment-center'
|
|
9
|
-
import { deleteFulfillmentCenters } from './delete-fulfillment-centers'
|
|
10
|
-
|
|
11
|
-
import * as Operato from './operato'
|
|
12
|
-
|
|
13
|
-
export const Query = {
|
|
14
|
-
...fulfillmentCentersResolver,
|
|
15
|
-
...fulfillmentCenterResolver,
|
|
16
|
-
...havingFulfillmentCenterResolver,
|
|
17
|
-
...Operato.Query
|
|
18
|
-
} as any
|
|
19
|
-
|
|
20
|
-
export const Mutation = {
|
|
21
|
-
...updateFulfillmentCenter,
|
|
22
|
-
...updateMultipleFulfillmentCenter,
|
|
23
|
-
...createFulfillmentCenter,
|
|
24
|
-
...deleteFulfillmentCenter,
|
|
25
|
-
...deleteFulfillmentCenters,
|
|
26
|
-
...Operato.Mutation
|
|
27
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import fetch, { Response } from 'node-fetch'
|
|
2
|
-
|
|
3
|
-
import { config } from '@things-factory/env'
|
|
4
|
-
|
|
5
|
-
import { FulfillmentCenter, FulfillmentCenterStatus } from '../../../../entities'
|
|
6
|
-
|
|
7
|
-
const debug = require('debug')('things-factory:integration-fulfillment:deactivate-operato-center')
|
|
8
|
-
|
|
9
|
-
const { protocol = 'https', host } = config.get('fulfillmentIntegrationOperato', {})
|
|
10
|
-
|
|
11
|
-
export const deactivateOperatoCenter = {
|
|
12
|
-
async deactivateOperatoCenter(_: any, { name }, context: ResolverContext): Promise<FulfillmentCenter> {
|
|
13
|
-
try {
|
|
14
|
-
const { tx, user } = context.state
|
|
15
|
-
const repository = tx.getRepository(FulfillmentCenter)
|
|
16
|
-
const fulfillmentCenter: any = await repository.findOne({
|
|
17
|
-
where: { domain: { id: context.state.domain.id }, name }
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
const disconnectURL: string = `${protocol}://${host}/oauth/disconnect`
|
|
21
|
-
const response: Response = await fetch(disconnectURL, {
|
|
22
|
-
method: 'post',
|
|
23
|
-
headers: {
|
|
24
|
-
'Content-Type': 'application/json',
|
|
25
|
-
'x-access-token': fulfillmentCenter.accessToken
|
|
26
|
-
}
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
if (!response.ok) {
|
|
30
|
-
debug('error', await response.text())
|
|
31
|
-
return
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
Object.assign(fulfillmentCenter, {
|
|
35
|
-
centerId: '',
|
|
36
|
-
accessToken: '',
|
|
37
|
-
refreshToken: '',
|
|
38
|
-
accessInfo: '',
|
|
39
|
-
countryCode: '',
|
|
40
|
-
status: FulfillmentCenterStatus.Active,
|
|
41
|
-
updater: user
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
return await repository.save(fulfillmentCenter)
|
|
45
|
-
} catch (e) {
|
|
46
|
-
throw e.message
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
package/server/graphql/resolvers/fulfillment-center/operato/generate-operato-access-token.ts
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import fetch from 'node-fetch'
|
|
2
|
-
|
|
3
|
-
import { config } from '@things-factory/env'
|
|
4
|
-
import { getRepository } from '@things-factory/shell'
|
|
5
|
-
|
|
6
|
-
import { FulfillmentCenter, FulfillmentCenterStatus } from '../../../../entities'
|
|
7
|
-
|
|
8
|
-
const { protocol = 'https', host, appKey, appSecret } = config.get('fulfillmentIntegrationOperato', {})
|
|
9
|
-
|
|
10
|
-
const debug = require('debug')('things-factory:integration-fulfillment:generate-operato-access-token')
|
|
11
|
-
|
|
12
|
-
export const generateOperatoAccessToken = {
|
|
13
|
-
async generateOperatoAccessToken(_: any, { id, code }, context: ResolverContext) {
|
|
14
|
-
const repository = getRepository(FulfillmentCenter)
|
|
15
|
-
const fulfillmentCenter: any = await repository.findOne({
|
|
16
|
-
where: { domain: { id: context.state.domain.id }, id }
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
const requestBody = {
|
|
20
|
-
grant_type: 'authorization_code',
|
|
21
|
-
client_id: appKey,
|
|
22
|
-
client_secret: appSecret,
|
|
23
|
-
redirect_uri: fulfillmentCenter.redirectUrl,
|
|
24
|
-
code
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
debug('request body', requestBody)
|
|
28
|
-
|
|
29
|
-
const response = await fetch(`${protocol}://${host}/oauth/access-token`, {
|
|
30
|
-
method: 'post',
|
|
31
|
-
headers: {
|
|
32
|
-
'Content-Type': 'application/json'
|
|
33
|
-
},
|
|
34
|
-
body: JSON.stringify(requestBody)
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
if (!response.ok) {
|
|
38
|
-
debug('error', await response.text())
|
|
39
|
-
return
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const body = await response.json()
|
|
43
|
-
const { access_token, refresh_token, centerId } = body
|
|
44
|
-
|
|
45
|
-
if (!access_token) {
|
|
46
|
-
throw new Error(`get fulfillment center information failed: ${body}`)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
var patch = {
|
|
50
|
-
accessToken: access_token,
|
|
51
|
-
refreshToken: refresh_token,
|
|
52
|
-
accessInfo: JSON.stringify(body, null, 2),
|
|
53
|
-
centerId,
|
|
54
|
-
status: FulfillmentCenterStatus.Active
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return await repository.save({
|
|
58
|
-
...fulfillmentCenter,
|
|
59
|
-
...patch,
|
|
60
|
-
updater: context.state.user
|
|
61
|
-
})
|
|
62
|
-
}
|
|
63
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { config } from '@things-factory/env'
|
|
2
|
-
|
|
3
|
-
import { Operato } from '../../../../controllers/operato'
|
|
4
|
-
|
|
5
|
-
const operatoConfig = config.get('fulfillmentIntegrationOperato', {})
|
|
6
|
-
const { appKey, appSecret, callback } = operatoConfig
|
|
7
|
-
|
|
8
|
-
export const getOperatoAuthURL = {
|
|
9
|
-
async getOperatoAuthURL(_: any, { nonce }, context: ResolverContext) {
|
|
10
|
-
const operato = new Operato({ appKey, appSecret, redirectUrl: callback })
|
|
11
|
-
|
|
12
|
-
return operato.buildAuthURL(nonce)
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { deactivateOperatoCenter } from './deactivate-operato-center'
|
|
2
|
-
import { generateOperatoAccessToken } from './generate-operato-access-token'
|
|
3
|
-
import { getOperatoAuthURL } from './get-operato-auth-url'
|
|
4
|
-
import { refreshOperatoAccessToken } from './refresh-operato-access-token'
|
|
5
|
-
|
|
6
|
-
export const Query = {
|
|
7
|
-
...getOperatoAuthURL
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const Mutation = {
|
|
11
|
-
...generateOperatoAccessToken,
|
|
12
|
-
...deactivateOperatoCenter,
|
|
13
|
-
...refreshOperatoAccessToken
|
|
14
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import fetch from 'node-fetch'
|
|
2
|
-
|
|
3
|
-
import { config } from '@things-factory/env'
|
|
4
|
-
import { getRepository } from '@things-factory/shell'
|
|
5
|
-
import { parseJwt } from '@things-factory/utils'
|
|
6
|
-
|
|
7
|
-
import { FulfillmentCenter } from '../../../../entities'
|
|
8
|
-
|
|
9
|
-
const { protocol = 'https', host, appKey, appSecret } = config.get('fulfillmentIntegrationOperato', {})
|
|
10
|
-
|
|
11
|
-
const debug = require('debug')('things-factory:integration-fulfillment:refresh-operato-access-token')
|
|
12
|
-
|
|
13
|
-
export const refreshOperatoAccessToken = {
|
|
14
|
-
async refreshOperatoAccessToken(_: any, { id }, context: ResolverContext) {
|
|
15
|
-
const repository = getRepository(FulfillmentCenter)
|
|
16
|
-
const fulfillmentCenter: any = await repository.findOne({
|
|
17
|
-
where: { domain: { id: context.state.domain.id }, id }
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
const requestBody = {
|
|
21
|
-
refreshToken: fulfillmentCenter.refreshToken
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const refreshResponse = await fetch(`${protocol}://${host}/oauth/refresh-token`, {
|
|
25
|
-
method: 'post',
|
|
26
|
-
headers: {
|
|
27
|
-
'Content-Type': 'application/json'
|
|
28
|
-
},
|
|
29
|
-
body: JSON.stringify(requestBody)
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
if (!refreshResponse.ok) {
|
|
33
|
-
throw new Error(`get operato information failed: ${await refreshResponse.text()}`)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const body = await refreshResponse.json()
|
|
37
|
-
const {
|
|
38
|
-
accessToken /* token used to call the API */,
|
|
39
|
-
id_token /* token containing user identity details (only returned if OpenID Connect scopes are requested) */,
|
|
40
|
-
expires_in /* amount of seconds until the access token expires */,
|
|
41
|
-
token_type: tokenType /* must be Bearer */,
|
|
42
|
-
refreshToken
|
|
43
|
-
/* token used to refresh the access token once it has expired (only returned if the offline_access scope is requested).
|
|
44
|
-
*/
|
|
45
|
-
} = body
|
|
46
|
-
|
|
47
|
-
const { exp } = parseJwt(accessToken)
|
|
48
|
-
|
|
49
|
-
var patch = {
|
|
50
|
-
accessToken,
|
|
51
|
-
refreshToken,
|
|
52
|
-
tokenType,
|
|
53
|
-
expiresIn: new Date(exp * 1000)
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return await repository.save({
|
|
57
|
-
...fulfillmentCenter,
|
|
58
|
-
...patch,
|
|
59
|
-
updater: context.state.user
|
|
60
|
-
})
|
|
61
|
-
}
|
|
62
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { getRepository } from '@things-factory/shell'
|
|
2
|
-
|
|
3
|
-
import { FulfillmentCenter } from '../../../entities'
|
|
4
|
-
|
|
5
|
-
export const updateFulfillmentCenter = {
|
|
6
|
-
async updateFulfillmentCenter(_: any, { name, patch }, context: ResolverContext) {
|
|
7
|
-
const repository = getRepository(FulfillmentCenter)
|
|
8
|
-
const fulfillmentCenter: any = await repository.findOne({
|
|
9
|
-
where: { domain: { id: context.state.domain.id }, name }
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
return await repository.save({
|
|
13
|
-
...fulfillmentCenter,
|
|
14
|
-
...patch,
|
|
15
|
-
updater: context.state.user
|
|
16
|
-
})
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { getRepository } from '@things-factory/shell'
|
|
2
|
-
|
|
3
|
-
import { FulfillmentCenter } from '../../../entities'
|
|
4
|
-
|
|
5
|
-
export const updateMultipleFulfillmentCenter = {
|
|
6
|
-
async updateMultipleFulfillmentCenter(_: any, { patches }, context: ResolverContext) {
|
|
7
|
-
let results = []
|
|
8
|
-
const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
|
|
9
|
-
const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
|
|
10
|
-
const fulfillmentCenterRepo = getRepository(FulfillmentCenter)
|
|
11
|
-
|
|
12
|
-
if (_createRecords.length > 0) {
|
|
13
|
-
for (let i = 0; i < _createRecords.length; i++) {
|
|
14
|
-
const newRecord = _createRecords[i]
|
|
15
|
-
|
|
16
|
-
const result = await fulfillmentCenterRepo.save({
|
|
17
|
-
...newRecord,
|
|
18
|
-
domain: context.state.domain,
|
|
19
|
-
status: 'inactive',
|
|
20
|
-
creator: context.state.user,
|
|
21
|
-
updater: context.state.user
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
results.push({ ...result, cuFlag: '+' })
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (_updateRecords.length > 0) {
|
|
29
|
-
for (let i = 0; i < _updateRecords.length; i++) {
|
|
30
|
-
const newRecord = _updateRecords[i]
|
|
31
|
-
const fulfillmentCenter = await fulfillmentCenterRepo.findOneBy({ id: newRecord.id })
|
|
32
|
-
|
|
33
|
-
const result = await fulfillmentCenterRepo.save({
|
|
34
|
-
...fulfillmentCenter,
|
|
35
|
-
...newRecord,
|
|
36
|
-
updater: context.state.user
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
results.push({ ...result, cuFlag: 'M' })
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return results
|
|
44
|
-
}
|
|
45
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import gql from 'graphql-tag'
|
|
2
|
-
|
|
3
|
-
export const FulfillmentCenter = gql`
|
|
4
|
-
type FulfillmentCenter {
|
|
5
|
-
id: String
|
|
6
|
-
name: String
|
|
7
|
-
domain: Domain
|
|
8
|
-
description: String
|
|
9
|
-
platform: String
|
|
10
|
-
centerId: String
|
|
11
|
-
countryCode: String
|
|
12
|
-
status: String
|
|
13
|
-
accessInfo: String
|
|
14
|
-
updater: User
|
|
15
|
-
creator: User
|
|
16
|
-
updatedAt: String
|
|
17
|
-
createdAt: String
|
|
18
|
-
}
|
|
19
|
-
`
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { FulfillmentCenter } from './fulfillment-center'
|
|
2
|
-
import { FulfillmentCenterList } from './fulfillment-center-list'
|
|
3
|
-
import { FulfillmentCenterPatch } from './fulfillment-center-patch'
|
|
4
|
-
import { NewFulfillmentCenter } from './new-fulfillment-center'
|
|
5
|
-
|
|
6
|
-
export const Mutation = /* GraphQL */ `
|
|
7
|
-
createFulfillmentCenter (
|
|
8
|
-
fulfillmentCenter: NewFulfillmentCenter!
|
|
9
|
-
): FulfillmentCenter
|
|
10
|
-
|
|
11
|
-
updateFulfillmentCenter (
|
|
12
|
-
name: String!
|
|
13
|
-
patch: FulfillmentCenterPatch!
|
|
14
|
-
): FulfillmentCenter
|
|
15
|
-
|
|
16
|
-
updateMultipleFulfillmentCenter (
|
|
17
|
-
patches: [FulfillmentCenterPatch]!
|
|
18
|
-
): [FulfillmentCenter]
|
|
19
|
-
|
|
20
|
-
deleteFulfillmentCenter (
|
|
21
|
-
name: String!
|
|
22
|
-
): Boolean
|
|
23
|
-
|
|
24
|
-
deleteFulfillmentCenters (
|
|
25
|
-
ids: [String]!
|
|
26
|
-
): Boolean
|
|
27
|
-
|
|
28
|
-
generateOperatoAccessToken (
|
|
29
|
-
id: String!
|
|
30
|
-
code: String!
|
|
31
|
-
): FulfillmentCenter
|
|
32
|
-
|
|
33
|
-
deactivateOperatoCenter (
|
|
34
|
-
name: String!
|
|
35
|
-
): FulfillmentCenter @transaction
|
|
36
|
-
|
|
37
|
-
refreshOperatoAccessToken (
|
|
38
|
-
id: String!
|
|
39
|
-
): FulfillmentCenter
|
|
40
|
-
`
|
|
41
|
-
|
|
42
|
-
export const Query = /* GraphQL */ `
|
|
43
|
-
fulfillmentCenters(filters: [Filter], pagination: Pagination, sortings: [Sorting]): FulfillmentCenterList
|
|
44
|
-
fulfillmentCenter(id: String!): FulfillmentCenter
|
|
45
|
-
havingFulfillmentCenter: [FulfillmentCenter]
|
|
46
|
-
|
|
47
|
-
getOperatoAuthURL (
|
|
48
|
-
nonce: String!
|
|
49
|
-
): String
|
|
50
|
-
`
|
|
51
|
-
|
|
52
|
-
export const Types = [FulfillmentCenter, NewFulfillmentCenter, FulfillmentCenterPatch, FulfillmentCenterList]
|
package/server/index.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
const glob = require('glob')
|
|
2
|
-
const path = require('path')
|
|
3
|
-
|
|
4
|
-
export var migrations = []
|
|
5
|
-
|
|
6
|
-
glob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function(file) {
|
|
7
|
-
if (file.indexOf('index.js') !== -1) return
|
|
8
|
-
migrations = migrations.concat(Object.values(require(path.resolve(file))) || [])
|
|
9
|
-
})
|
package/server/routes.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { getRedirectSubdomainPath } from '@things-factory/shell'
|
|
2
|
-
import { FulfillmentAPI } from './controllers/fulfillment-api'
|
|
3
|
-
|
|
4
|
-
process.on('bootstrap-module-global-public-route' as any, (app, routes) => {
|
|
5
|
-
/*
|
|
6
|
-
* koa application에 routes 를 추가할 수 있다.
|
|
7
|
-
*
|
|
8
|
-
* ex) routes.get('/path', async(context, next) => {})
|
|
9
|
-
* ex) routes.post('/path', async(context, next) => {})
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
routes.get('/callback-operato', async (context, next) => {
|
|
13
|
-
const { code, state } = context.query
|
|
14
|
-
|
|
15
|
-
// state를 fulfillment-center 의 id로 활용한다.
|
|
16
|
-
const store = await FulfillmentAPI.getFulfillmentCenter(state)
|
|
17
|
-
|
|
18
|
-
context.redirect(
|
|
19
|
-
`${getRedirectSubdomainPath(
|
|
20
|
-
context,
|
|
21
|
-
store.domain.subdomain
|
|
22
|
-
)}fulfillment-center-operato/${state}/connect-callback?code=${code}`
|
|
23
|
-
)
|
|
24
|
-
})
|
|
25
|
-
})
|