@things-factory/integration-lmd 8.0.0-beta.9 → 8.0.0
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/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -14
- package/server/controllers/citylink/apis/index.ts +1 -0
- package/server/controllers/citylink/apis/shipment-request/create-shipment-request.ts +12 -0
- package/server/controllers/citylink/apis/shipment-request/index.ts +1 -0
- package/server/controllers/citylink/citylink.ts +161 -0
- package/server/controllers/citylink/index.ts +8 -0
- package/server/controllers/citylink/platform-action.ts +39 -0
- package/server/controllers/etrax/apis/create-shipment-request.ts +82 -0
- package/server/controllers/etrax/apis/index.ts +1 -0
- package/server/controllers/etrax/etrax.ts +108 -0
- package/server/controllers/etrax/index.ts +7 -0
- package/server/controllers/etrax/platform-action.ts +32 -0
- package/server/controllers/index.ts +10 -0
- package/server/controllers/lmd-api/decorators.ts +47 -0
- package/server/controllers/lmd-api/index.ts +39 -0
- package/server/engine/connector/index.ts +1 -0
- package/server/engine/connector/lmd-connector.ts +33 -0
- package/server/engine/index.ts +2 -0
- package/server/engine/task/index.ts +1 -0
- package/server/engine/task/lmd-api.ts +64 -0
- package/server/entities/courier-service.ts +44 -0
- package/server/entities/index.ts +6 -0
- package/server/entities/last-mile-delivery.ts +84 -0
- package/server/graphql/index.ts +9 -0
- package/server/graphql/resolvers/courier-service/courier-service-query.ts +54 -0
- package/server/graphql/resolvers/courier-service/create-courier-service.ts +16 -0
- package/server/graphql/resolvers/courier-service/delete-courier-service.ts +13 -0
- package/server/graphql/resolvers/courier-service/delete-courier-services.ts +18 -0
- package/server/graphql/resolvers/courier-service/index.ts +19 -0
- package/server/graphql/resolvers/courier-service/update-courier-service.ts +20 -0
- package/server/graphql/resolvers/courier-service/update-multiple-courier-service.ts +46 -0
- package/server/graphql/resolvers/index.ts +2 -0
- package/server/graphql/resolvers/last-mile-delivery/create-last-mile-delivery.ts +14 -0
- package/server/graphql/resolvers/last-mile-delivery/delete-last-mile-deliveries.ts +26 -0
- package/server/graphql/resolvers/last-mile-delivery/delete-last-mile-delivery.ts +13 -0
- package/server/graphql/resolvers/last-mile-delivery/index.ts +19 -0
- package/server/graphql/resolvers/last-mile-delivery/last-mile-delivery-query.ts +52 -0
- package/server/graphql/resolvers/last-mile-delivery/update-last-mile-delivery.ts +18 -0
- package/server/graphql/resolvers/last-mile-delivery/update-multiple-last-mile-delivery.ts +45 -0
- package/server/graphql/types/courier-service/courier-service-list.ts +8 -0
- package/server/graphql/types/courier-service/courier-service-patch.ts +11 -0
- package/server/graphql/types/courier-service/courier-service.ts +15 -0
- package/server/graphql/types/courier-service/index.ts +21 -0
- package/server/graphql/types/courier-service/new-courier-service.ts +9 -0
- package/server/graphql/types/index.ts +2 -0
- package/server/graphql/types/last-mile-delivery/index.ts +21 -0
- package/server/graphql/types/last-mile-delivery/last-mile-delivery-list.ts +8 -0
- package/server/graphql/types/last-mile-delivery/last-mile-delivery-patch.ts +20 -0
- package/server/graphql/types/last-mile-delivery/last-mile-delivery.ts +25 -0
- package/server/graphql/types/last-mile-delivery/new-last-mile-delivery.ts +18 -0
- package/server/index.ts +9 -0
- package/server/middlewares/index.ts +3 -0
- package/server/migrations/index.ts +9 -0
- package/server/routes.ts +26 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ConnectionManager, TaskRegistry } from '@things-factory/integration-base'
|
|
2
|
+
import { getRepository } from '@things-factory/shell'
|
|
3
|
+
import { access } from '@things-factory/utils'
|
|
4
|
+
|
|
5
|
+
import { LastMileAPI as API } from '../../controllers/lmd-api'
|
|
6
|
+
import { LastMileDelivery } from '../../entities'
|
|
7
|
+
|
|
8
|
+
async function LastMileAPI(step, { logger, data, domain }) {
|
|
9
|
+
var {
|
|
10
|
+
connection,
|
|
11
|
+
params: { account: name, api, accessor }
|
|
12
|
+
} = step
|
|
13
|
+
|
|
14
|
+
var client = ConnectionManager.getConnectionInstanceByName(domain, connection) || {}
|
|
15
|
+
if (!client) {
|
|
16
|
+
throw new Error(`no connection : ${connection}`)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (!api) {
|
|
20
|
+
throw new Error(`no api defined`)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const repository = getRepository(LastMileDelivery)
|
|
24
|
+
const lastMile: LastMileDelivery = await repository.findOne({
|
|
25
|
+
where: { domain: { id: domain.id }, name }
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
if (!lastMile) {
|
|
29
|
+
throw new Error(`no last mile delivery defined`)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var result = await API[api](lastMile, accessor ? access(accessor, data) : {})
|
|
33
|
+
|
|
34
|
+
return {
|
|
35
|
+
data: result
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
LastMileAPI.parameterSpec = [
|
|
40
|
+
{
|
|
41
|
+
type: 'entity-selector',
|
|
42
|
+
name: 'lastMileDelivery',
|
|
43
|
+
label: 'lastMileDelivery',
|
|
44
|
+
property: {
|
|
45
|
+
queryName: 'lastMileDeliveries',
|
|
46
|
+
valueKey: 'name'
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'select',
|
|
51
|
+
name: 'api',
|
|
52
|
+
label: 'api',
|
|
53
|
+
property: {
|
|
54
|
+
options: ['', 'createShipmentRequest']
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
type: 'string',
|
|
59
|
+
name: 'accessor',
|
|
60
|
+
label: 'accessor'
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
TaskRegistry.registerTaskHandler('lmd-api', LastMileAPI)
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
@Entity()
|
|
6
|
+
@Index(
|
|
7
|
+
'ix_courier_service_0',
|
|
8
|
+
(courierService: CourierService) => [courierService.domain, courierService.name, courierService.transporterId],
|
|
9
|
+
{
|
|
10
|
+
unique: true
|
|
11
|
+
}
|
|
12
|
+
)
|
|
13
|
+
export class CourierService {
|
|
14
|
+
@PrimaryGeneratedColumn('uuid')
|
|
15
|
+
id: string
|
|
16
|
+
|
|
17
|
+
@ManyToOne(type => Domain)
|
|
18
|
+
domain: Domain
|
|
19
|
+
|
|
20
|
+
@Column()
|
|
21
|
+
name: string
|
|
22
|
+
|
|
23
|
+
@Column({ nullable: true })
|
|
24
|
+
description: string
|
|
25
|
+
|
|
26
|
+
@Column({ nullable: true })
|
|
27
|
+
transporterId: string
|
|
28
|
+
|
|
29
|
+
@CreateDateColumn()
|
|
30
|
+
createdAt: Date
|
|
31
|
+
|
|
32
|
+
@UpdateDateColumn()
|
|
33
|
+
updatedAt: Date
|
|
34
|
+
|
|
35
|
+
@ManyToOne(type => User, {
|
|
36
|
+
nullable: true
|
|
37
|
+
})
|
|
38
|
+
creator: User
|
|
39
|
+
|
|
40
|
+
@ManyToOne(type => User, {
|
|
41
|
+
nullable: true
|
|
42
|
+
})
|
|
43
|
+
updater: User
|
|
44
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { User } from '@things-factory/auth-base'
|
|
2
|
+
import { Domain } from '@things-factory/shell'
|
|
3
|
+
import {
|
|
4
|
+
Column,
|
|
5
|
+
CreateDateColumn,
|
|
6
|
+
Entity,
|
|
7
|
+
Index,
|
|
8
|
+
ManyToOne,
|
|
9
|
+
ManyToMany,
|
|
10
|
+
JoinTable,
|
|
11
|
+
PrimaryGeneratedColumn,
|
|
12
|
+
UpdateDateColumn
|
|
13
|
+
} from 'typeorm'
|
|
14
|
+
import { CourierService } from '../entities'
|
|
15
|
+
|
|
16
|
+
@Entity()
|
|
17
|
+
@Index(
|
|
18
|
+
'ix_last_mile_delivery_0',
|
|
19
|
+
(lastMileDelivery: LastMileDelivery) => [lastMileDelivery.domain, lastMileDelivery.id],
|
|
20
|
+
{ unique: true }
|
|
21
|
+
)
|
|
22
|
+
export class LastMileDelivery {
|
|
23
|
+
@PrimaryGeneratedColumn('uuid')
|
|
24
|
+
id: string
|
|
25
|
+
|
|
26
|
+
@ManyToOne(type => Domain)
|
|
27
|
+
domain: Domain
|
|
28
|
+
|
|
29
|
+
@Column()
|
|
30
|
+
name: string
|
|
31
|
+
|
|
32
|
+
@Column({ nullable: true })
|
|
33
|
+
description: string
|
|
34
|
+
|
|
35
|
+
@Column()
|
|
36
|
+
platform: string
|
|
37
|
+
|
|
38
|
+
@ManyToMany(type => CourierService)
|
|
39
|
+
@JoinTable()
|
|
40
|
+
courierServices: CourierService[]
|
|
41
|
+
|
|
42
|
+
@Column({ nullable: true })
|
|
43
|
+
clientId: string
|
|
44
|
+
|
|
45
|
+
@Column({ nullable: true })
|
|
46
|
+
clientType: string
|
|
47
|
+
|
|
48
|
+
@Column({ nullable: true })
|
|
49
|
+
clientName: string
|
|
50
|
+
|
|
51
|
+
@Column()
|
|
52
|
+
countryCode: string
|
|
53
|
+
|
|
54
|
+
@Column({ nullable: true })
|
|
55
|
+
secretKey: string
|
|
56
|
+
|
|
57
|
+
@Column({ nullable: true })
|
|
58
|
+
accessInfo: string
|
|
59
|
+
|
|
60
|
+
@Column({ nullable: true })
|
|
61
|
+
accessToken: string
|
|
62
|
+
|
|
63
|
+
@Column({ nullable: true })
|
|
64
|
+
refreshToken: string
|
|
65
|
+
|
|
66
|
+
@Column()
|
|
67
|
+
status: string
|
|
68
|
+
|
|
69
|
+
@CreateDateColumn()
|
|
70
|
+
createdAt: Date
|
|
71
|
+
|
|
72
|
+
@UpdateDateColumn()
|
|
73
|
+
updatedAt: Date
|
|
74
|
+
|
|
75
|
+
@ManyToOne(type => User, {
|
|
76
|
+
nullable: true
|
|
77
|
+
})
|
|
78
|
+
creator: User
|
|
79
|
+
|
|
80
|
+
@ManyToOne(type => User, {
|
|
81
|
+
nullable: true
|
|
82
|
+
})
|
|
83
|
+
updater: User
|
|
84
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { convertListParams, getRepository, ListParam } from '@things-factory/shell'
|
|
2
|
+
|
|
3
|
+
import { CourierService as CourierServiceEntity } from '../../../entities'
|
|
4
|
+
|
|
5
|
+
export const Query = {
|
|
6
|
+
async courierService(_: any, { name }, context: ResolverContext) {
|
|
7
|
+
const { domain, user, tx } = context.state
|
|
8
|
+
const repository = tx.getRepository(CourierServiceEntity)
|
|
9
|
+
|
|
10
|
+
return await repository.findOne({
|
|
11
|
+
where: { domain: { id: domain.id }, name }
|
|
12
|
+
})
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
async courierServices(_: any, params: ListParam, context: ResolverContext) {
|
|
16
|
+
const { domain, user, tx } = context.state
|
|
17
|
+
const convertedParams = convertListParams(params)
|
|
18
|
+
const [items, total] = await tx.getRepository(CourierServiceEntity).findAndCount({
|
|
19
|
+
...convertedParams,
|
|
20
|
+
where: { domain: { id: domain.id } }
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
return { items, total }
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const CourierService = {
|
|
28
|
+
async domain(courierService) {
|
|
29
|
+
return (
|
|
30
|
+
await getRepository(CourierServiceEntity).findOne({
|
|
31
|
+
where: { id: courierService.id },
|
|
32
|
+
relations: ['domain']
|
|
33
|
+
})
|
|
34
|
+
)?.domain
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
async creator(courierService) {
|
|
38
|
+
return (
|
|
39
|
+
await getRepository(CourierServiceEntity).findOne({
|
|
40
|
+
where: { id: courierService.id },
|
|
41
|
+
relations: ['creator']
|
|
42
|
+
})
|
|
43
|
+
)?.creator
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
async updater(courierService) {
|
|
47
|
+
return (
|
|
48
|
+
await getRepository(CourierServiceEntity).findOne({
|
|
49
|
+
where: { id: courierService.id },
|
|
50
|
+
relations: ['updater']
|
|
51
|
+
})
|
|
52
|
+
)?.updater
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { getRepository } from '@things-factory/shell'
|
|
2
|
+
|
|
3
|
+
import { CourierService } from '../../../entities'
|
|
4
|
+
|
|
5
|
+
export const createCourierService = {
|
|
6
|
+
async createCourierService(_: any, { courierService }, context: ResolverContext) {
|
|
7
|
+
const { domain, user } = context.state
|
|
8
|
+
|
|
9
|
+
return await getRepository(CourierService).save({
|
|
10
|
+
...courierService,
|
|
11
|
+
domain,
|
|
12
|
+
creator: user,
|
|
13
|
+
updater: user
|
|
14
|
+
})
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { getRepository } from '@things-factory/shell'
|
|
2
|
+
|
|
3
|
+
import { CourierService } from '../../../entities'
|
|
4
|
+
|
|
5
|
+
export const deleteCourierService = {
|
|
6
|
+
async deleteCourierService(_: any, { name }, context: ResolverContext) {
|
|
7
|
+
const { domain, user } = context.state
|
|
8
|
+
|
|
9
|
+
await getRepository(CourierService).delete({ domain: { id: domain.id }, name })
|
|
10
|
+
|
|
11
|
+
return true
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { In } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { getRepository } from '@things-factory/shell'
|
|
4
|
+
|
|
5
|
+
import { CourierService } from '../../../entities'
|
|
6
|
+
|
|
7
|
+
export const deleteCourierServices = {
|
|
8
|
+
async deleteCourierServices(_: any, { names }, context: ResolverContext) {
|
|
9
|
+
const { domain, user } = context.state
|
|
10
|
+
|
|
11
|
+
await getRepository(CourierService).delete({
|
|
12
|
+
domain: { id: domain.id },
|
|
13
|
+
name: In(names)
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
return true
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Query, CourierService } from './courier-service-query'
|
|
2
|
+
|
|
3
|
+
import { updateCourierService } from './update-courier-service'
|
|
4
|
+
import { updateMultipleCourierService } from './update-multiple-courier-service'
|
|
5
|
+
import { createCourierService } from './create-courier-service'
|
|
6
|
+
import { deleteCourierService } from './delete-courier-service'
|
|
7
|
+
import { deleteCourierServices } from './delete-courier-services'
|
|
8
|
+
|
|
9
|
+
export const CourierServiceResolver = {
|
|
10
|
+
CourierService,
|
|
11
|
+
Query,
|
|
12
|
+
Mutation: {
|
|
13
|
+
...updateCourierService,
|
|
14
|
+
...updateMultipleCourierService,
|
|
15
|
+
...createCourierService,
|
|
16
|
+
...deleteCourierService,
|
|
17
|
+
...deleteCourierServices
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getRepository } from '@things-factory/shell'
|
|
2
|
+
|
|
3
|
+
import { CourierService } from '../../../entities'
|
|
4
|
+
|
|
5
|
+
export const updateCourierService = {
|
|
6
|
+
async updateCourierService(_: any, { name, patch }, context: ResolverContext) {
|
|
7
|
+
const { domain, user } = context.state
|
|
8
|
+
|
|
9
|
+
const repository = getRepository(CourierService)
|
|
10
|
+
const courierService = await repository.findOne({
|
|
11
|
+
where: { domain: { id: domain.id }, name }
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
return await repository.save({
|
|
15
|
+
...courierService,
|
|
16
|
+
...patch,
|
|
17
|
+
updater: user
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { getRepository } from '@things-factory/shell'
|
|
2
|
+
|
|
3
|
+
import { CourierService } from '../../../entities'
|
|
4
|
+
|
|
5
|
+
export const updateMultipleCourierService = {
|
|
6
|
+
async updateMultipleCourierService(_: any, { patches }, context: ResolverContext) {
|
|
7
|
+
const { domain, user } = context.state
|
|
8
|
+
|
|
9
|
+
let results = []
|
|
10
|
+
const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
|
|
11
|
+
const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
|
|
12
|
+
const courierServiceRepo = getRepository(CourierService)
|
|
13
|
+
|
|
14
|
+
if (_createRecords.length > 0) {
|
|
15
|
+
for (let i = 0; i < _createRecords.length; i++) {
|
|
16
|
+
const newRecord = _createRecords[i]
|
|
17
|
+
|
|
18
|
+
const result = await courierServiceRepo.save({
|
|
19
|
+
...newRecord,
|
|
20
|
+
domain: domain,
|
|
21
|
+
creator: user,
|
|
22
|
+
updater: user
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
results.push({ ...result, cuFlag: '+' })
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (_updateRecords.length > 0) {
|
|
30
|
+
for (let i = 0; i < _updateRecords.length; i++) {
|
|
31
|
+
const newRecord = _updateRecords[i]
|
|
32
|
+
const courierService = await courierServiceRepo.findOneBy({ domain: { id: domain.id }, id: newRecord.id })
|
|
33
|
+
|
|
34
|
+
const result = await courierServiceRepo.save({
|
|
35
|
+
...courierService,
|
|
36
|
+
...newRecord,
|
|
37
|
+
updater: user
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
results.push({ ...result, cuFlag: 'M' })
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return results
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LastMileDelivery } from '../../../entities'
|
|
2
|
+
|
|
3
|
+
export const createLastMileDelivery = {
|
|
4
|
+
async createLastMileDelivery(_: any, { lastMileDelivery }, context: ResolverContext) {
|
|
5
|
+
const { domain, user, tx } = context.state
|
|
6
|
+
|
|
7
|
+
return await tx.getRepository(LastMileDelivery).save({
|
|
8
|
+
...lastMileDelivery,
|
|
9
|
+
domain,
|
|
10
|
+
creator: user,
|
|
11
|
+
updater: user
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { In } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { LMD_STATUS } from '../../../controllers'
|
|
4
|
+
import { LastMileDelivery } from '../../../entities'
|
|
5
|
+
|
|
6
|
+
export const deleteLastMileDeliveries = {
|
|
7
|
+
async deleteLastMileDeliveries(_: any, { ids }, context: ResolverContext) {
|
|
8
|
+
const { domain, user, tx } = context.state
|
|
9
|
+
|
|
10
|
+
let lastMileDeliveries: LastMileDelivery[] = await tx.getRepository(LastMileDelivery).find({
|
|
11
|
+
where: { id: In(ids) }
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
lastMileDeliveries = lastMileDeliveries.map((lastMileDelivery: LastMileDelivery) => {
|
|
15
|
+
return {
|
|
16
|
+
...lastMileDelivery,
|
|
17
|
+
status: LMD_STATUS.TERMINATED,
|
|
18
|
+
updater: user
|
|
19
|
+
}
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
await tx.getRepository(LastMileDelivery).save(lastMileDeliveries)
|
|
23
|
+
|
|
24
|
+
return true
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { getRepository } from '@things-factory/shell'
|
|
2
|
+
|
|
3
|
+
import { LastMileDelivery } from '../../../entities'
|
|
4
|
+
|
|
5
|
+
export const deleteLastMileDelivery = {
|
|
6
|
+
async deleteLastMileDelivery(_: any, { name }, context: ResolverContext) {
|
|
7
|
+
const { domain, user } = context.state
|
|
8
|
+
|
|
9
|
+
await getRepository(LastMileDelivery).delete({ domain: { id: domain.id }, name })
|
|
10
|
+
|
|
11
|
+
return true
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Query, LastMileDelivery } from './last-mile-delivery-query'
|
|
2
|
+
|
|
3
|
+
import { updateLastMileDelivery } from './update-last-mile-delivery'
|
|
4
|
+
import { updateMultipleLastMileDelivery } from './update-multiple-last-mile-delivery'
|
|
5
|
+
import { createLastMileDelivery } from './create-last-mile-delivery'
|
|
6
|
+
import { deleteLastMileDelivery } from './delete-last-mile-delivery'
|
|
7
|
+
import { deleteLastMileDeliveries } from './delete-last-mile-deliveries'
|
|
8
|
+
|
|
9
|
+
export const LastMileDeliveryResolver = {
|
|
10
|
+
LastMileDelivery,
|
|
11
|
+
Query,
|
|
12
|
+
Mutation: {
|
|
13
|
+
...updateLastMileDelivery,
|
|
14
|
+
...updateMultipleLastMileDelivery,
|
|
15
|
+
...createLastMileDelivery,
|
|
16
|
+
...deleteLastMileDelivery,
|
|
17
|
+
...deleteLastMileDeliveries
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { convertListParams, getRepository, ListParam } from '@things-factory/shell'
|
|
2
|
+
|
|
3
|
+
import { LastMileDelivery as LastMileDeliveryEntity } from '../../../entities'
|
|
4
|
+
|
|
5
|
+
export const Query = {
|
|
6
|
+
async lastMileDelivery(_: any, { name }, context: ResolverContext) {
|
|
7
|
+
const { domain, user } = context.state
|
|
8
|
+
const repository = getRepository(LastMileDeliveryEntity)
|
|
9
|
+
|
|
10
|
+
return await repository.findOne({
|
|
11
|
+
where: { domain: { id: domain.id }, name }
|
|
12
|
+
})
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
async lastMileDeliveries(_: any, params: ListParam, context: ResolverContext) {
|
|
16
|
+
const convertedParams = convertListParams(params)
|
|
17
|
+
const [items, total] = await getRepository(LastMileDeliveryEntity).findAndCount({
|
|
18
|
+
...convertedParams
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
return { items, total }
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const LastMileDelivery = {
|
|
26
|
+
async domain(lastMileDelivery) {
|
|
27
|
+
return (
|
|
28
|
+
await getRepository(LastMileDeliveryEntity).findOne({
|
|
29
|
+
where: { id: lastMileDelivery.id },
|
|
30
|
+
relations: ['domain']
|
|
31
|
+
})
|
|
32
|
+
)?.domain
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
async creator(lastMileDelivery) {
|
|
36
|
+
return (
|
|
37
|
+
await getRepository(LastMileDeliveryEntity).findOne({
|
|
38
|
+
where: { id: lastMileDelivery.id },
|
|
39
|
+
relations: ['creator']
|
|
40
|
+
})
|
|
41
|
+
)?.creator
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
async updater(lastMileDelivery) {
|
|
45
|
+
return (
|
|
46
|
+
await getRepository(LastMileDeliveryEntity).findOne({
|
|
47
|
+
where: { id: lastMileDelivery.id },
|
|
48
|
+
relations: ['updater']
|
|
49
|
+
})
|
|
50
|
+
)?.updater
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LastMileDelivery } from '../../../entities'
|
|
2
|
+
|
|
3
|
+
export const updateLastMileDelivery = {
|
|
4
|
+
async updateLastMileDelivery(_: any, { name, patch }, context: ResolverContext) {
|
|
5
|
+
const { domain, user, tx } = context.state
|
|
6
|
+
|
|
7
|
+
const repository = tx.getRepository(LastMileDelivery)
|
|
8
|
+
const lastMileDelivery = await repository.findOne({
|
|
9
|
+
where: { domain: { id: domain.id }, name }
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
return await repository.save({
|
|
13
|
+
...lastMileDelivery,
|
|
14
|
+
...patch,
|
|
15
|
+
updater: user
|
|
16
|
+
})
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { LastMileDelivery } from '../../../entities'
|
|
2
|
+
|
|
3
|
+
export const updateMultipleLastMileDelivery = {
|
|
4
|
+
async updateMultipleLastMileDelivery(_: any, { patches }, context: ResolverContext) {
|
|
5
|
+
const { domain, user, tx } = context.state
|
|
6
|
+
|
|
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 lastMileDeliveryRepo = tx.getRepository(LastMileDelivery)
|
|
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 lastMileDeliveryRepo.save({
|
|
17
|
+
...newRecord,
|
|
18
|
+
domain: domain,
|
|
19
|
+
status: 'inactive',
|
|
20
|
+
creator: user,
|
|
21
|
+
updater: 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 lastMileDelivery = await lastMileDeliveryRepo.findOneBy({ domain: { id: domain.id }, id: newRecord.id })
|
|
32
|
+
|
|
33
|
+
const result = await lastMileDeliveryRepo.save({
|
|
34
|
+
...lastMileDelivery,
|
|
35
|
+
...newRecord,
|
|
36
|
+
updater: user
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
results.push({ ...result, cuFlag: 'M' })
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return results
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import gql from 'graphql-tag'
|
|
2
|
+
|
|
3
|
+
export const CourierService = gql`
|
|
4
|
+
type CourierService {
|
|
5
|
+
id: String
|
|
6
|
+
name: String
|
|
7
|
+
domain: Domain
|
|
8
|
+
description: String
|
|
9
|
+
transporterId: String
|
|
10
|
+
updater: User
|
|
11
|
+
creator: User
|
|
12
|
+
updatedAt: String
|
|
13
|
+
createdAt: String
|
|
14
|
+
}
|
|
15
|
+
`
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import gql from 'graphql-tag'
|
|
2
|
+
|
|
3
|
+
export * from './courier-service'
|
|
4
|
+
export * from './new-courier-service'
|
|
5
|
+
export * from './courier-service-patch'
|
|
6
|
+
export * from './courier-service-list'
|
|
7
|
+
|
|
8
|
+
export const CourierServiceResolver = gql`
|
|
9
|
+
extend type Mutation {
|
|
10
|
+
createCourierService(courierService: NewCourierService!): CourierService
|
|
11
|
+
updateCourierService(name: String!, patch: CourierServicePatch!): CourierService
|
|
12
|
+
updateMultipleCourierService(patches: [CourierServicePatch]!): [CourierService]
|
|
13
|
+
deleteCourierService(name: String!): Boolean
|
|
14
|
+
deleteCourierServices(names: [String]!): Boolean
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
extend type Query {
|
|
18
|
+
courierServices(filters: [Filter], pagination: Pagination, sortings: [Sorting]): CourierServiceList @transaction
|
|
19
|
+
courierService(name: String!): CourierService @transaction
|
|
20
|
+
}
|
|
21
|
+
`
|