storemw-core-client 1.0.1

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.
Files changed (112) hide show
  1. package/.env +1 -0
  2. package/.vscode/launch.json +24 -0
  3. package/dist/config/config.d.ts +6 -0
  4. package/dist/config/config.js +13 -0
  5. package/dist/config/env.d.ts +7 -0
  6. package/dist/config/env.js +16 -0
  7. package/dist/config/index.d.ts +2 -0
  8. package/dist/config/index.js +8 -0
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.js +32 -0
  11. package/dist/lib/ApiService.d.ts +41 -0
  12. package/dist/lib/ApiService.js +143 -0
  13. package/dist/lib/index.d.ts +4 -0
  14. package/dist/lib/index.js +9 -0
  15. package/dist/lib/queryParams.d.ts +43 -0
  16. package/dist/lib/queryParams.js +99 -0
  17. package/dist/services/account/AccountService.d.ts +52 -0
  18. package/dist/services/account/AccountService.js +119 -0
  19. package/dist/services/auth/AuthService.d.ts +44 -0
  20. package/dist/services/auth/AuthService.js +76 -0
  21. package/dist/services/branch/BranchService.d.ts +124 -0
  22. package/dist/services/branch/BranchService.js +162 -0
  23. package/dist/services/business/BusinessService.d.ts +91 -0
  24. package/dist/services/business/BusinessService.js +153 -0
  25. package/dist/services/document/DocumentService.d.ts +578 -0
  26. package/dist/services/document/DocumentService.js +615 -0
  27. package/dist/services/index.d.ts +36 -0
  28. package/dist/services/index.js +97 -0
  29. package/dist/services/injection_field/InjectionFieldService.d.ts +113 -0
  30. package/dist/services/injection_field/InjectionFieldService.js +220 -0
  31. package/dist/services/inventory/InventoryService.d.ts +27 -0
  32. package/dist/services/inventory/InventoryService.js +231 -0
  33. package/dist/services/item/ItemService.d.ts +227 -0
  34. package/dist/services/item/ItemService.js +411 -0
  35. package/dist/services/location/LocationService.d.ts +154 -0
  36. package/dist/services/location/LocationService.js +256 -0
  37. package/dist/services/logistic/LogisticService.d.ts +104 -0
  38. package/dist/services/logistic/LogisticService.js +150 -0
  39. package/dist/services/permission/PermissionService.d.ts +296 -0
  40. package/dist/services/permission/PermissionService.js +576 -0
  41. package/dist/services/permission/config/custom/adminPermission.d.ts +4 -0
  42. package/dist/services/permission/config/custom/adminPermission.js +18 -0
  43. package/dist/services/permission/config/custom/config.d.ts +40 -0
  44. package/dist/services/permission/config/custom/config.js +23 -0
  45. package/dist/services/permission/config/default/adminPermission.d.ts +2 -0
  46. package/dist/services/permission/config/default/adminPermission.js +129 -0
  47. package/dist/services/permission/config/default/agentPermission.d.ts +2 -0
  48. package/dist/services/permission/config/default/agentPermission.js +43 -0
  49. package/dist/services/permission/config/default/customerPermission.d.ts +2 -0
  50. package/dist/services/permission/config/default/customerPermission.js +10 -0
  51. package/dist/services/permission/config/default/driverPermission.d.ts +2 -0
  52. package/dist/services/permission/config/default/driverPermission.js +4 -0
  53. package/dist/services/permission/config/default/workerPermission.d.ts +2 -0
  54. package/dist/services/permission/config/default/workerPermission.js +25 -0
  55. package/dist/services/rate/RateService.d.ts +201 -0
  56. package/dist/services/rate/RateService.js +303 -0
  57. package/dist/services/region/RegionService.d.ts +111 -0
  58. package/dist/services/region/RegionService.js +193 -0
  59. package/dist/services/repository/RepositoryService.d.ts +153 -0
  60. package/dist/services/repository/RepositoryService.js +243 -0
  61. package/dist/services/transaction/TransactionService.d.ts +153 -0
  62. package/dist/services/transaction/TransactionService.js +173 -0
  63. package/dist/services/user/BranchUserService.d.ts +129 -0
  64. package/dist/services/user/BranchUserService.js +193 -0
  65. package/dist/services/user/UserRoleService.d.ts +105 -0
  66. package/dist/services/user/UserRoleService.js +193 -0
  67. package/dist/services/user/UserService.d.ts +269 -0
  68. package/dist/services/user/UserService.js +477 -0
  69. package/dist/services/wallet/WalletService.d.ts +104 -0
  70. package/dist/services/wallet/WalletService.js +163 -0
  71. package/dist/utils/dateUtils.d.ts +6 -0
  72. package/dist/utils/dateUtils.js +28 -0
  73. package/dist/utils/index.d.ts +2 -0
  74. package/dist/utils/index.js +13 -0
  75. package/package.json +27 -0
  76. package/src/config/config.ts +15 -0
  77. package/src/config/env.ts +18 -0
  78. package/src/config/index.ts +2 -0
  79. package/src/index.ts +41 -0
  80. package/src/lib/ApiService.ts +170 -0
  81. package/src/lib/index.ts +5 -0
  82. package/src/lib/queryParams.ts +162 -0
  83. package/src/services/account/AccountService.ts +232 -0
  84. package/src/services/auth/AuthService.ts +125 -0
  85. package/src/services/branch/BranchService.ts +330 -0
  86. package/src/services/business/BusinessService.ts +277 -0
  87. package/src/services/document/DocumentService.ts +1471 -0
  88. package/src/services/index.ts +73 -0
  89. package/src/services/injection_field/InjectionFieldService.ts +483 -0
  90. package/src/services/inventory/InventoryService.ts +314 -0
  91. package/src/services/item/ItemService.ts +707 -0
  92. package/src/services/location/LocationService.ts +505 -0
  93. package/src/services/logistic/LogisticService.ts +285 -0
  94. package/src/services/permission/PermissionService.ts +1069 -0
  95. package/src/services/permission/config/custom/adminPermission.ts +19 -0
  96. package/src/services/permission/config/custom/config.ts +39 -0
  97. package/src/services/permission/config/default/adminPermission.ts +129 -0
  98. package/src/services/permission/config/default/agentPermission.ts +42 -0
  99. package/src/services/permission/config/default/customerPermission.ts +9 -0
  100. package/src/services/permission/config/default/driverPermission.ts +4 -0
  101. package/src/services/permission/config/default/workerPermission.ts +25 -0
  102. package/src/services/rate/RateService.ts +570 -0
  103. package/src/services/region/RegionService.ts +353 -0
  104. package/src/services/repository/RepositoryService.ts +437 -0
  105. package/src/services/transaction/TransactionService.ts +404 -0
  106. package/src/services/user/BranchUserService.ts +381 -0
  107. package/src/services/user/UserRoleService.ts +342 -0
  108. package/src/services/user/UserService.ts +807 -0
  109. package/src/services/wallet/WalletService.ts +300 -0
  110. package/src/utils/dateUtils.ts +26 -0
  111. package/src/utils/index.ts +2 -0
  112. package/tsconfig.json +119 -0
@@ -0,0 +1,807 @@
1
+ import { ApiService, ApiServiceType } from '@/lib';
2
+
3
+ import {
4
+ buildApiListUrl,
5
+ BuildApiListParamsProps,
6
+ buildApiGetUrl,
7
+ BuildApiGetParamsProps,
8
+ filterOperatorTypes
9
+ } from '@/lib';
10
+
11
+ export const userTypes = {
12
+ administrator: "administrator",
13
+ worker: "worker",
14
+ supplier: "supplier",
15
+ customer: "customer",
16
+ driver: "driver",
17
+ retailer: "retailer",
18
+ member: "member",
19
+ } as const
20
+
21
+ export const userTargetTypes = {
22
+ administrator: "administrator",
23
+ worker: "worker",
24
+ supplier: "supplier",
25
+ customer: "customer",
26
+ driver: "driver",
27
+ retailer: "retailer",
28
+ member: "member",
29
+ } as const
30
+
31
+ export type UserType = typeof userTypes[keyof typeof userTypes]
32
+ export type UserTargetType = typeof userTargetTypes[keyof typeof userTargetTypes]
33
+ export type UserTargetKey = keyof typeof userTargetTypes
34
+
35
+ export type UserServiceProps = ApiServiceType & {
36
+ userTargetType?: UserTargetType
37
+ userType?: UserType
38
+ };
39
+
40
+ export type ListUserProps = BuildApiListParamsProps & {
41
+ userType?: UserType
42
+ }
43
+
44
+ export type GetUserProps = BuildApiGetParamsProps & {
45
+ id: number | string
46
+ userType?: UserType
47
+ }
48
+
49
+ type Gender = "male" | "female"
50
+ type AssignSupplierType = "admin" | "retail"
51
+
52
+ type UserCredential = {
53
+ username: string
54
+ password: string
55
+ // userType: UserTargetType
56
+ firstname: string
57
+ lastname: string
58
+ contact: string
59
+ email: string
60
+ status: boolean
61
+ address: string
62
+ }
63
+
64
+ export type CreateUserProps = {
65
+ userTargetType?: UserTargetType
66
+ userType?: UserType
67
+ data:
68
+ // administrator
69
+ {
70
+ administrator: {
71
+ credential: UserCredential,
72
+ locationIds: number[]
73
+ }
74
+ } |
75
+ // customer
76
+ {
77
+ customer: {
78
+ credential: UserCredential,
79
+ code: string
80
+ accountCode: string
81
+ companyName: string
82
+ regNo: string
83
+ secondaryRegNo: string
84
+ taxIdentificationNo: string,
85
+ taxRegistrationNo: string,
86
+ remark: string
87
+ salesperson: string
88
+ excludeTaxRate: number[]
89
+ }
90
+ } |
91
+ // retailer
92
+ {
93
+ retailer: {
94
+ credential: UserCredential,
95
+ code: string
96
+ accountCode: string
97
+ companyName: string
98
+ regNo: string
99
+ remark: string
100
+ isDifferentBusiness: boolean
101
+ businessId: number
102
+ }
103
+ } |
104
+ // worker
105
+ {
106
+ worker: {
107
+ credential: UserCredential,
108
+ remark: string
109
+ locationIds: number[]
110
+ }
111
+ } |
112
+ // driver
113
+ {
114
+ driver: {
115
+ credential: UserCredential,
116
+ companyName: string
117
+ remark: string
118
+ locationIds: number[]
119
+ }
120
+ } |
121
+ // supplier
122
+ {
123
+ supplier: {
124
+ credential: UserCredential,
125
+ // supplier: {
126
+ type: AssignSupplierType
127
+ companyName: string
128
+ contact: string
129
+ code: string
130
+ regNo: string
131
+ remark: string
132
+ address1: string
133
+ address2: string
134
+ postcode: string
135
+ countryId: number
136
+ stateId: number
137
+ areaId: number
138
+ bankName: string
139
+ bankAcc: string
140
+ itemIds: number[],
141
+ retailerId?: number /* Optional */
142
+ }
143
+ } &
144
+ // member
145
+ {
146
+ member: {
147
+ credential: UserCredential,
148
+ ownerUserId: number | 0 /* retailer_user_id or empty if global */
149
+ companyName: string
150
+ identityNo: string
151
+ gender: Gender,
152
+ dob: string
153
+ address1: string
154
+ address2: string
155
+ countryId: number
156
+ stateId: number
157
+ areaId: number
158
+ postcode: string
159
+ remark: string
160
+ }
161
+ }
162
+ }
163
+
164
+ export type UpdateUserProps = {
165
+ id: number
166
+ userTargetType?: UserTargetType
167
+ userType?: UserType
168
+ data:
169
+ // administatrator
170
+ {
171
+ administrator: {
172
+ credential: Omit<UserCredential, "username" | "password"> & { password?: string },
173
+ locationIds: number[]
174
+ }
175
+ } |
176
+ // customer
177
+ {
178
+ customer: {
179
+ credential: Omit<UserCredential, "username" | "password"> & { password?: string },
180
+ code: string
181
+ accountCode: string
182
+ companyName: string
183
+ regNo: string
184
+ secondaryRegNo: string
185
+ taxIdentificationNo: string,
186
+ taxRegistrationNo: string,
187
+ remark: string
188
+ salesperson: string
189
+ excludeTaxRate: number[]
190
+ }
191
+ } |
192
+ // retailer
193
+ {
194
+ retailer: {
195
+ credential: Omit<UserCredential, "username" | "password"> & { password?: string },
196
+ code: string
197
+ accountCode: string
198
+ companyName: string
199
+ regNo: string
200
+ remark: string
201
+ isDifferentBusiness: boolean
202
+ businessId: number
203
+ }
204
+ } |
205
+ // worker
206
+ {
207
+ worker: {
208
+ credential: Omit<UserCredential, "username" | "password"> & { password?: string },
209
+ remark: string
210
+ locationIds: number[]
211
+ }
212
+ } |
213
+ // driver
214
+ {
215
+ driver: {
216
+ credential: Omit<UserCredential, "username" | "password"> & { password?: string },
217
+ companyName: string
218
+ remark: string
219
+ locationIds: number[]
220
+ }
221
+ } |
222
+ // supplier
223
+ {
224
+ supplier: {
225
+ credential: Omit<UserCredential, "username" | "password"> & { password?: string },
226
+ type: AssignSupplierType
227
+ companyName: string
228
+ contact: string
229
+ code: string
230
+ regNo: string
231
+ remark: string
232
+ address1: string
233
+ address2: string
234
+ postcode: string
235
+ countryId: number
236
+ stateId: number
237
+ areaId: number
238
+ bankName: string
239
+ bankAcc: string
240
+ itemIds: number[],
241
+ retailerId?: number /* Optional */
242
+ }
243
+ } |
244
+ // member
245
+ {
246
+ member: {
247
+ credential: Omit<UserCredential, "username" | "password"> & { password?: string },
248
+ ownerUserId: number /* retailer_user_id or empty if global */
249
+ companyName: string
250
+ identityNo: string
251
+ gender: Gender,
252
+ dob: string
253
+ address1: string
254
+ address2: string
255
+ countryId: number
256
+ stateId: number
257
+ areaId: number
258
+ postcode: string
259
+ remark: string
260
+ }
261
+ }
262
+ }
263
+
264
+ export type RemoveUserProps = {
265
+ userTargetType?: UserTargetType
266
+ ids: number[]
267
+ }
268
+
269
+ export type GetDataTypeUserProps = {
270
+ userType?: UserType
271
+ }
272
+
273
+ const getCreatePayload = (userType: UserType, data: CreateUserProps["data"]) => {
274
+
275
+ if (userType === "administrator" && "administrator" in data) {
276
+
277
+ return {
278
+ credential: {
279
+ username: data.administrator.credential.username,
280
+ password: data.administrator.credential.password,
281
+ user_type: userType,
282
+ firstname: data.administrator.credential.firstname,
283
+ lastname: data.administrator.credential.lastname,
284
+ contact: data.administrator.credential.contact,
285
+ email: data.administrator.credential.email,
286
+ status: (data.administrator.credential.status === true) ? 1 : 0,
287
+ address: data.administrator.credential.address
288
+ },
289
+ administrator: [],
290
+ props: {
291
+ location_id: data.administrator.locationIds
292
+ }
293
+ }
294
+ }
295
+
296
+ if (userType === "customer" && "customer" in data) {
297
+
298
+ return {
299
+ credential: {
300
+ username: data.customer.credential.username,
301
+ password: data.customer.credential.password,
302
+ user_type: userType,
303
+ firstname: data.customer.credential.firstname,
304
+ lastname: data.customer.credential.lastname,
305
+ contact: data.customer.credential.contact,
306
+ email: data.customer.credential.email,
307
+ status: (data.customer.credential.status === true) ? 1 : 0,
308
+ address: data.customer.credential.address
309
+ },
310
+ customer: {
311
+ code: data.customer.code,
312
+ account_code: data.customer.accountCode,
313
+ company_name: data.customer.companyName,
314
+ reg_no: data.customer.regNo,
315
+ secondary_reg_no: data.customer.secondaryRegNo,
316
+ remark: data.customer.remark,
317
+ tax_identification_no: data.customer.taxIdentificationNo,
318
+ tax_registration_no: data.customer.taxRegistrationNo,
319
+ },
320
+ props: {
321
+ salesperson: data.customer.salesperson,
322
+ exclude_tax_rate: data.customer.excludeTaxRate
323
+ }
324
+ }
325
+ }
326
+
327
+ if (userType === "retailer" && "retailer" in data) {
328
+
329
+ return {
330
+ credential: {
331
+ username: data.retailer.credential.username,
332
+ password: data.retailer.credential.password,
333
+ user_type: userType,
334
+ firstname: data.retailer.credential.firstname,
335
+ lastname: data.retailer.credential.lastname,
336
+ contact: data.retailer.credential.contact,
337
+ email: data.retailer.credential.email,
338
+ status: (data.retailer.credential.status === true) ? 1 : 0,
339
+ address: data.retailer.credential.address
340
+ },
341
+ retailer: {
342
+ code: data.retailer.code,
343
+ account_code: data.retailer.accountCode,
344
+ company_name: data.retailer.companyName,
345
+ reg_no: data.retailer.regNo,
346
+ remark: data.retailer.remark
347
+ },
348
+ props: {
349
+ business_id: data.retailer.businessId
350
+ },
351
+ status: {
352
+ is_different_business: (data.retailer.isDifferentBusiness === true) ? 1 : 0
353
+ }
354
+ }
355
+ }
356
+
357
+ if (userType === "worker" && "worker" in data) {
358
+
359
+ return {
360
+ credential: {
361
+ username: data.worker.credential.username,
362
+ password: data.worker.credential.password,
363
+ user_type: userType,
364
+ firstname: data.worker.credential.firstname,
365
+ lastname: data.worker.credential.lastname,
366
+ contact: data.worker.credential.contact,
367
+ email: data.worker.credential.email,
368
+ status: (data.worker.credential.status === true) ? 1 : 0,
369
+ address: data.worker.credential.address
370
+ },
371
+ worker: {
372
+ remark: data.worker.remark
373
+ },
374
+ props: {
375
+ location_id: data.worker.locationIds
376
+ }
377
+ }
378
+ }
379
+
380
+ if (userType === "driver" && "driver" in data) {
381
+
382
+ return {
383
+ credential: {
384
+ username: data.driver.credential.username,
385
+ password: data.driver.credential.password,
386
+ user_type: userType,
387
+ firstname: data.driver.credential.firstname,
388
+ lastname: data.driver.credential.lastname,
389
+ contact: data.driver.credential.contact,
390
+ email: data.driver.credential.email,
391
+ status: (data.driver.credential.status === true) ? 1 : 0,
392
+ address: data.driver.credential.address
393
+ },
394
+ driver: {
395
+ company_name: data.driver.companyName,
396
+ remark: data.driver.remark
397
+ },
398
+ props: {
399
+ location_id: data.driver.locationIds
400
+ }
401
+ }
402
+ }
403
+
404
+ if (userType === "supplier" && "supplier" in data) {
405
+
406
+ return {
407
+ credential: {
408
+ username: data.supplier.credential.username,
409
+ password: data.supplier.credential.password,
410
+ user_type: userType,
411
+ firstname: data.supplier.credential.firstname,
412
+ lastname: data.supplier.credential.lastname,
413
+ contact: data.supplier.credential.contact,
414
+ email: data.supplier.credential.email,
415
+ status: (data.supplier.credential.status === true) ? 1 : 0,
416
+ address: data.supplier.credential.address
417
+ },
418
+ supplier: {
419
+ type: data.supplier.type,
420
+ company_name: data.supplier.companyName,
421
+ contact: data.supplier.contact,
422
+ code: data.supplier.code,
423
+ reg_no: data.supplier.regNo,
424
+ remark: data.supplier.remark,
425
+ address_1: data.supplier.address1,
426
+ address_2: data.supplier.address2,
427
+ postcode: data.supplier.postcode,
428
+ country_id: data.supplier.countryId,
429
+ state_id: data.supplier.stateId,
430
+ area_id: data.supplier.areaId,
431
+ bank_name: data.supplier.bankName,
432
+ bank_acc: data.supplier.bankAcc
433
+ },
434
+ props: {
435
+ item_id: data.supplier.itemIds,
436
+ retailer_id: data.supplier.retailerId
437
+ }
438
+ }
439
+ }
440
+
441
+ if (userType === "member" && "member" in data) {
442
+
443
+ return {
444
+ credential: {
445
+ username: data.member.credential.username,
446
+ password: data.member.credential.password,
447
+ user_type: userType,
448
+ firstname: data.member.credential.firstname,
449
+ lastname: data.member.credential.lastname,
450
+ contact: data.member.credential.contact,
451
+ email: data.member.credential.email,
452
+ status: (data.member.credential.status === true) ? 1 : 0,
453
+ address: data.member.credential.address
454
+ },
455
+ member: {
456
+ owner_user_id: (data.member.ownerUserId === 0) ? "" : data.member.ownerUserId, /* retailer_user_id or empty if global */
457
+ company_name: data.member.companyName,
458
+ identity_no: data.member.identityNo,
459
+ gender: data.member.gender,
460
+ dob: data.member.dob,
461
+ address_1: data.member.address1,
462
+ address_2: data.member.address2,
463
+ country_id: data.member.countryId,
464
+ state_id: data.member.stateId,
465
+ area_id: data.member.areaId,
466
+ postcode: data.member.postcode,
467
+ remark: data.member.remark
468
+ }
469
+ }
470
+ }
471
+ }
472
+
473
+ const getUpdatePayload = (userType: UserType, data: UpdateUserProps["data"]) => {
474
+
475
+ if (userType === "administrator" && "administrator" in data) {
476
+
477
+ return {
478
+ credential: {
479
+ ...(data.administrator.credential.password ? { password: data.administrator.credential.password } : {}),
480
+ firstname: data.administrator.credential.firstname,
481
+ lastname: data.administrator.credential.lastname,
482
+ contact: data.administrator.credential.contact,
483
+ email: data.administrator.credential.email,
484
+ status: (data.administrator.credential.status === true) ? 1 : 0,
485
+ address: data.administrator.credential.address
486
+ },
487
+ administrator: [],
488
+ props: {
489
+ location_id: data.administrator.locationIds
490
+ }
491
+ }
492
+ }
493
+
494
+ if (userType === "customer" && "customer" in data) {
495
+
496
+ return {
497
+ credential: {
498
+ ...(data.customer.credential.password ? { password: data.customer.credential.password } : {}),
499
+ firstname: data.customer.credential.firstname,
500
+ lastname: data.customer.credential.lastname,
501
+ contact: data.customer.credential.contact,
502
+ email: data.customer.credential.email,
503
+ status: (data.customer.credential.status === true) ? 1 : 0,
504
+ address: data.customer.credential.address
505
+ },
506
+ customer: {
507
+ code: data.customer.code,
508
+ account_code: data.customer.accountCode,
509
+ company_name: data.customer.companyName,
510
+ reg_no: data.customer.regNo,
511
+ secondary_reg_no: data.customer.secondaryRegNo,
512
+ remark: data.customer.remark,
513
+ tax_identification_no: data.customer.taxIdentificationNo,
514
+ tax_registration_no: data.customer.taxRegistrationNo,
515
+ },
516
+ props: {
517
+ salesperson: data.customer.salesperson,
518
+ exclude_tax_rate: data.customer.excludeTaxRate
519
+ }
520
+ }
521
+
522
+ }
523
+
524
+ if (userType === "retailer" && "retailer" in data) {
525
+
526
+ return {
527
+ credential: {
528
+ ...(data.retailer.credential.password ? { password: data.retailer.credential.password } : {}),
529
+ firstname: data.retailer.credential.firstname,
530
+ lastname: data.retailer.credential.lastname,
531
+ contact: data.retailer.credential.contact,
532
+ email: data.retailer.credential.email,
533
+ status: (data.retailer.credential.status === true) ? 1 : 0,
534
+ address: data.retailer.credential.address
535
+ },
536
+ retailer: {
537
+ code: data.retailer.code,
538
+ account_code: data.retailer.accountCode,
539
+ company_name: data.retailer.companyName,
540
+ reg_no: data.retailer.regNo,
541
+ remark: data.retailer.remark
542
+ },
543
+ props: {
544
+ business_id: data.retailer.businessId
545
+ },
546
+ status: {
547
+ is_different_business: (data.retailer.isDifferentBusiness === true) ? 1 : 0
548
+ }
549
+ }
550
+ }
551
+
552
+ if (userType === "worker" && "worker" in data) {
553
+
554
+ return {
555
+ credential: {
556
+ ...(data.worker.credential.password ? { password: data.worker.credential.password } : {}),
557
+ firstname: data.worker.credential.firstname,
558
+ lastname: data.worker.credential.lastname,
559
+ contact: data.worker.credential.contact,
560
+ email: data.worker.credential.email,
561
+ status: (data.worker.credential.status === true) ? 1 : 0,
562
+ address: data.worker.credential.address
563
+ },
564
+ worker: {
565
+ remark: data.worker.remark
566
+ },
567
+ props: {
568
+ location_id: data.worker.locationIds
569
+ }
570
+ }
571
+ }
572
+
573
+ if (userType === "driver" && "driver" in data) {
574
+
575
+ return {
576
+ credential: {
577
+ ...(data.driver.credential.password ? { password: data.driver.credential.password } : {}),
578
+ firstname: data.driver.credential.firstname,
579
+ lastname: data.driver.credential.lastname,
580
+ contact: data.driver.credential.contact,
581
+ email: data.driver.credential.email,
582
+ status: (data.driver.credential.status === true) ? 1 : 0,
583
+ address: data.driver.credential.address
584
+ },
585
+ driver: {
586
+ company_name: data.driver.companyName,
587
+ remark: data.driver.remark
588
+ },
589
+ props: {
590
+ location_id: data.driver.locationIds
591
+ }
592
+ }
593
+ }
594
+
595
+ if (userType === "supplier" && "supplier" in data) {
596
+
597
+ return {
598
+ credential: {
599
+ ...(data.supplier.credential.password ? { password: data.supplier.credential.password } : {}),
600
+ firstname: data.supplier.credential.firstname,
601
+ lastname: data.supplier.credential.lastname,
602
+ contact: data.supplier.credential.contact,
603
+ email: data.supplier.credential.email,
604
+ status: (data.supplier.credential.status === true) ? 1 : 0,
605
+ address: data.supplier.credential.address
606
+ },
607
+ supplier: {
608
+ type: data.supplier.type,
609
+ company_name: data.supplier.companyName,
610
+ contact: data.supplier.contact,
611
+ code: data.supplier.code,
612
+ reg_no: data.supplier.regNo,
613
+ remark: data.supplier.remark,
614
+ address_1: data.supplier.address1,
615
+ address_2: data.supplier.address2,
616
+ postcode: data.supplier.postcode,
617
+ country_id: data.supplier.countryId,
618
+ state_id: data.supplier.stateId,
619
+ area_id: data.supplier.areaId,
620
+ bank_name: data.supplier.bankName,
621
+ bank_acc: data.supplier.bankAcc
622
+ },
623
+ props: {
624
+ item_id: data.supplier.itemIds,
625
+ retailer_id: data.supplier.retailerId
626
+ }
627
+ }
628
+ }
629
+
630
+ if (userType === "member" && "member" in data) {
631
+
632
+ return {
633
+ credential: {
634
+ ...(data.member.credential.password ? { password: data.member.credential.password } : {}),
635
+ firstname: data.member.credential.firstname,
636
+ lastname: data.member.credential.lastname,
637
+ contact: data.member.credential.contact,
638
+ email: data.member.credential.email,
639
+ status: (data.member.credential.status === true) ? 1 : 0,
640
+ address: data.member.credential.address
641
+ },
642
+ member: {
643
+ owner_user_id: (data.member.ownerUserId === 0) ? "" : data.member.ownerUserId, /* retailer_user_id or empty if global */
644
+ company_name: data.member.companyName,
645
+ identity_no: data.member.identityNo,
646
+ gender: data.member.gender,
647
+ dob: data.member.dob,
648
+ address_1: data.member.address1,
649
+ address_2: data.member.address2,
650
+ country_id: data.member.countryId,
651
+ state_id: data.member.stateId,
652
+ area_id: data.member.areaId,
653
+ postcode: data.member.postcode,
654
+ remark: data.member.remark
655
+ }
656
+ }
657
+ }
658
+
659
+ }
660
+
661
+ export const UserService = (props?: UserServiceProps) => {
662
+
663
+ const { userType = "administrator", userTargetType, ...rest } = props ?? {};
664
+
665
+ const { makeCall } = ApiService(rest?.customToken ? { customToken: rest.customToken } : {})
666
+
667
+ const endpoint1 = "user";
668
+ const endpoint2 = "users"
669
+
670
+ const list = async (props: ListUserProps) => {
671
+
672
+ const { userType: overrideUserType } = props;
673
+
674
+ const url = buildApiListUrl(
675
+ `${endpoint2}/${overrideUserType || userType}`,
676
+ props
677
+ );
678
+
679
+ const response = await makeCall({
680
+ url,
681
+ method: "get",
682
+ payload: {},
683
+ // configuration
684
+ });
685
+
686
+ return response;
687
+
688
+ }
689
+
690
+ const get = async (props: GetUserProps) => {
691
+
692
+ const { id, userType: overrideUserType } = props;
693
+
694
+ const url = buildApiGetUrl(
695
+ `${endpoint1}/${overrideUserType || userType}/${id}`,
696
+ props
697
+ );
698
+
699
+ const response = await makeCall({
700
+ url,
701
+ method: "get",
702
+ payload: {},
703
+ // configuration
704
+ });
705
+
706
+ return response;
707
+
708
+ }
709
+
710
+ const create = async ({ data, userType: overrideUserType, userTargetType: overrideUserTargetType }: CreateUserProps) => {
711
+
712
+ let _userType = overrideUserType || userType
713
+
714
+ let payload: any = getCreatePayload(_userType, data)
715
+
716
+ let url = `${endpoint1}`;
717
+
718
+ let postData = {
719
+ scope: {
720
+ target: overrideUserTargetType || userTargetType,
721
+ action: "",
722
+ },
723
+ payload
724
+ }
725
+
726
+ const response = await makeCall({
727
+ url,
728
+ method: "post",
729
+ payload: postData
730
+ });
731
+
732
+ return response;
733
+
734
+ }
735
+
736
+ const update = async ({ id, data, userType: overrideUserType, userTargetType: overrideUserTargetType }: UpdateUserProps) => {
737
+
738
+ let url = `${endpoint1}/${id}`
739
+
740
+ let _userType = overrideUserType || userType
741
+
742
+ let payload: any = getUpdatePayload(_userType, data)
743
+
744
+
745
+ const postData = {
746
+ scope: {
747
+ target: overrideUserTargetType || userTargetType,
748
+ action: "",
749
+ },
750
+ payload
751
+ }
752
+
753
+ const response = await makeCall({
754
+ url,
755
+ method: "put",
756
+ payload: postData
757
+ });
758
+
759
+ return response;
760
+
761
+ }
762
+
763
+ const remove = async ({ ids, userTargetType: overrideUserTargetType }: RemoveUserProps) => {
764
+
765
+ let url = `${endpoint2}/delete`
766
+
767
+ const postData = {
768
+ scope: {
769
+ target: overrideUserTargetType || userTargetType,
770
+ },
771
+ payload: {
772
+ ids
773
+ }
774
+ }
775
+
776
+ const response = await makeCall({
777
+ url,
778
+ method: "post",
779
+ payload: postData
780
+ });
781
+
782
+ return response;
783
+
784
+ }
785
+
786
+ const getDataTypes = async ({ userType: overrideUserType }: GetDataTypeUserProps) => {
787
+
788
+ let url = `${endpoint2}/data_types/${overrideUserType || userType}`
789
+
790
+ const response = await makeCall({
791
+ url,
792
+ method: "get",
793
+ });
794
+
795
+ return response;
796
+
797
+ }
798
+
799
+ return {
800
+ list,
801
+ get,
802
+ create,
803
+ update,
804
+ remove,
805
+ getDataTypes
806
+ };
807
+ }