@things-factory/operato-hub 4.3.743 → 4.3.745

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 (26) hide show
  1. package/config.development.js +41 -75
  2. package/dist-server/routers/api/restful-apis/v1/company/add-contact-points.js +71 -2
  3. package/dist-server/routers/api/restful-apis/v1/company/add-contact-points.js.map +1 -1
  4. package/dist-server/routers/api/restful-apis/v1/company/index.js +1 -0
  5. package/dist-server/routers/api/restful-apis/v1/company/index.js.map +1 -1
  6. package/dist-server/routers/api/restful-apis/v1/company/update-contact-points.js +243 -0
  7. package/dist-server/routers/api/restful-apis/v1/company/update-contact-points.js.map +1 -0
  8. package/dist-server/routers/api/restful-apis/v1/utils/params.js +109 -28
  9. package/dist-server/routers/api/restful-apis/v1/utils/params.js.map +1 -1
  10. package/dist-server/routers/api/restful-apis/v1/warehouse/index.js +1 -0
  11. package/dist-server/routers/api/restful-apis/v1/warehouse/index.js.map +1 -1
  12. package/dist-server/routers/api/restful-apis/v1/warehouse/update-arrival-notice.js +365 -0
  13. package/dist-server/routers/api/restful-apis/v1/warehouse/update-arrival-notice.js.map +1 -0
  14. package/dist-server/routers/api/restful-apis/v1/warehouse/update-release-order-details.js +946 -19
  15. package/dist-server/routers/api/restful-apis/v1/warehouse/update-release-order-details.js.map +1 -1
  16. package/openapi/v1/contact-point.yaml +266 -0
  17. package/openapi/v1/inbound.yaml +349 -0
  18. package/openapi/v1/outbound.yaml +256 -150
  19. package/package.json +18 -18
  20. package/server/routers/api/restful-apis/v1/company/add-contact-points.ts +91 -2
  21. package/server/routers/api/restful-apis/v1/company/index.ts +1 -0
  22. package/server/routers/api/restful-apis/v1/company/update-contact-points.ts +267 -0
  23. package/server/routers/api/restful-apis/v1/utils/params.ts +109 -28
  24. package/server/routers/api/restful-apis/v1/warehouse/index.ts +1 -0
  25. package/server/routers/api/restful-apis/v1/warehouse/update-arrival-notice.ts +429 -0
  26. package/server/routers/api/restful-apis/v1/warehouse/update-release-order-details.ts +1122 -29
@@ -4,45 +4,28 @@ module.exports = {
4
4
  useVirtualHostBasedDomain: false,
5
5
  fallbackRoute: '/',
6
6
  subdomainOffset: 2,
7
- port: 4001,
7
+ port: 4445,
8
8
  inspect: '9260',
9
- //postgres
10
- // ormconfig: {
11
- // name: 'default',
12
- // type: 'postgres',
13
- // database: 'postgres',
14
- // username: 'postgres',
15
- // password: 'hatio',
16
- // host: '192.168.0.144',
17
- // port: 15432,
18
- // synchronize: false,
19
- // logging: true
20
- // },
21
- //operato
22
- // ormconfig: {
23
- // name: 'default',
24
- // type: 'postgres',
25
- // database: 'operato',
26
- // username: 'postgres',
27
- // password: 'hatio',
28
- // host: '192.168.0.151',
29
- // port: 15432,
30
- // synchronize: false,
31
- // logging: true
32
- // },
33
- //eric2
9
+ storage: {
10
+ type: 's3',
11
+ accessKeyId: 'AKIAUQEOPWEJHCE4MTH4',
12
+ secretAccessKey: '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',
13
+ bucketName: 'opa-one',
14
+ region: 'ap-southeast-1'
15
+ },
34
16
  // ormconfig: {
35
17
  // name: 'default',
36
18
  // type: 'postgres',
37
- // database: 'eric2',
19
+ // database: 'arif',
38
20
  // username: 'postgres',
39
21
  // password: 'hatio',
40
- // host: '192.168.0.153',
22
+ // host: '10.254.29.189',
41
23
  // port: 15432,
42
24
  // synchronize: false,
43
25
  // logging: true
44
26
  // },
45
- // arif's
27
+
28
+ // STAGING DATABASE
46
29
  ormconfig: {
47
30
  name: 'default',
48
31
  type: 'postgres',
@@ -54,30 +37,34 @@ module.exports = {
54
37
  synchronize: false,
55
38
  logging: true
56
39
  },
57
- //EMS
40
+
58
41
  // ormconfig: {
59
42
  // name: 'default',
60
43
  // type: 'postgres',
61
- // database: 'EMS',
44
+ // database: 'operato',
62
45
  // username: 'postgres',
63
46
  // password: 'hatio',
64
- // host: '192.168.0.161',
47
+ // host: '192.168.0.153',
65
48
  // port: 15432,
66
49
  // synchronize: false,
67
50
  // logging: true
68
51
  // },
69
- //db nora
52
+
53
+ //db izzah
70
54
  // ormconfig: {
71
55
  // name: 'default',
72
56
  // type: 'postgres',
73
- // database: 'postgres',
57
+ // database: '06072023',
74
58
  // username: 'postgres',
75
59
  // password: 'hatio',
76
- // host: '192.168.0.36',
60
+ // host: '192.168.0.153',
77
61
  // port: 15432,
78
62
  // synchronize: true,
79
63
  // logging: true
80
64
  // },
65
+ //postgres
66
+
67
+ // //ERIC
81
68
  // ormconfig: {
82
69
  // name: 'default',
83
70
  // type: 'postgres',
@@ -89,18 +76,20 @@ module.exports = {
89
76
  // synchronize: true,
90
77
  // logging: true
91
78
  // },
92
- //db izzah
79
+
80
+ //eric2
93
81
  // ormconfig: {
94
82
  // name: 'default',
95
83
  // type: 'postgres',
96
- // database: '06072023',
84
+ // database: 'eric2',
97
85
  // username: 'postgres',
98
86
  // password: 'hatio',
99
87
  // host: '192.168.0.153',
100
88
  // port: 15432,
101
- // synchronize: true,
89
+ // synchronize: false,
102
90
  // logging: true
103
91
  // },
92
+
104
93
  // ormconfig: {
105
94
  // name: 'default',
106
95
  // type: 'postgres',
@@ -114,7 +103,6 @@ module.exports = {
114
103
  // connectTimeoutMS: 30000,
115
104
  // extra: { poolSize: 30 }
116
105
  // },
117
-
118
106
  // ormconfig: {
119
107
  // name: 'default',
120
108
  // type: 'postgres',
@@ -128,7 +116,6 @@ module.exports = {
128
116
  // connectTimeoutMS: 30000,
129
117
  // extra: { poolSize: 30 }
130
118
  // },
131
-
132
119
  password: {
133
120
  lowerCase: true,
134
121
  upperCase: false,
@@ -180,6 +167,11 @@ module.exports = {
180
167
  ciphers: 'SSLv3'
181
168
  }
182
169
  },
170
+ jobQueue: {
171
+ // For JobQueueService/JobWorker (FIFO queue is supported)
172
+ queueUrl: 'https://sqs.ap-southeast-5.amazonaws.com/309536469266/operato-job-queue.fifo',
173
+ sqsRegion: 'ap-southeast-5'
174
+ },
183
175
  sender: 'noreply@hatiolab.com',
184
176
  notification: {
185
177
  // fcm: {
@@ -218,8 +210,7 @@ module.exports = {
218
210
  isUAT: false,
219
211
  application: 'Operato MMS',
220
212
  partnerId: 846025,
221
- partnerKey: 'd34cfd85a603f196a0d74ebe08043280c1a27788bb36bdffd61e7e0bb1c90b64',
222
- v2: true
213
+ partnerKey: 'd34cfd85a603f196a0d74ebe08043280c1a27788bb36bdffd61e7e0bb1c90b64'
223
214
  },
224
215
  marketplaceIntegrationLazada: {
225
216
  platform: 'lazada',
@@ -228,16 +219,6 @@ module.exports = {
228
219
  appSecret: 'HB3RTNEXHlVSlBr9SmWF8AjbSUT7a825',
229
220
  callback: 'https://maybank.operato-m.com/lazada-callback'
230
221
  },
231
-
232
- //testinglazada
233
- // marketplaceIntegrationLazada: {
234
- // platform: 'lazada',
235
- // application: 'powrup_bi',
236
- // appKey: '117890',
237
- // appSecret: 'tQVllnUa7irAHoNxAwXEVxoP1we1bUjE',
238
- // callback: 'https://73c5-175-141-30-142.ngrok-free.app/lazada-callback'
239
- // },
240
-
241
222
  accountingIntegrationXero: {
242
223
  platform: 'xero',
243
224
  application: 'Operato WMS',
@@ -246,36 +227,21 @@ module.exports = {
246
227
  callback: 'http://operato-h.com:3000/callback-xero',
247
228
  hostname: 'http://operato-h.com:3000/'
248
229
  },
249
- lmdIntegrationNinjavan: {
250
- clientId: 'P8WCEwMo0FHNlPECwTLetwN3diAmt5KF',
251
- secretKey: '1D0yNZGseOjhxnwri29xmuZiiuRp131L',
252
- refreshThreshold: 43200
230
+ lambda: {
231
+ region: 'ap-southeast-1',
232
+ accessKeyId: 'AKIAUQEOPWEJKL43OMZA',
233
+ secretAccessKey: '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'
253
234
  },
254
-
255
- lmdIntegrationEms: { refreshThreshold: 43200 },
256
-
257
- lmdIntegrationCitylink: { refreshThreshold: 172800000 },
258
235
  awbFileStorage: {
259
236
  type: 's3',
260
- accessKeyId: 'AKIAUQEOPWEJPXIVER74',
261
- secretAccessKey: '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',
237
+ accessKeyId: 'AKIAUQEOPWEJKL43OMZA',
238
+ secretAccessKey: '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',
262
239
  bucketName: 'operato-awb',
263
240
  region: 'ap-southeast-1'
264
241
  },
265
- lambda: {
266
- region: 'ap-southeast-1',
267
- accessKeyId: 'AKIAUQEOPWEJPXIVER74',
268
- secretAccessKey: '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'
269
- },
270
- lmdIntegrationConfig: {
271
- version: {
272
- v1: 'lmdMiddleware',
273
- v2: 'lmdMiddlewareV2'
274
- }
275
- },
276
242
  awsSesEmail: {
277
- accessKeyId: 'AKIAUQEOPWEJPXIVER74',
278
- secretAccessKey: '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',
243
+ accessKeyId: 'AKIAUQEOPWEJKQDJSEOG',
244
+ secretAccessKey: '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',
279
245
  email: 'support@hatio.asia'
280
246
  },
281
247
  reportApiUrl:
@@ -6,6 +6,55 @@ const biz_base_1 = require("@things-factory/biz-base");
6
6
  const biz_base_2 = require("@things-factory/biz-base");
7
7
  const error_util_1 = require("../utils/error-util");
8
8
  const middlewares_1 = require("../middlewares");
9
+ const VALID_DAYS = ['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY'];
10
+ const VALID_TYPES = ['CUSTOMER', 'SUPPLIER', 'WAREHOUSE'];
11
+ function validateBusinessRestDay(businessRestDay, index) {
12
+ if (businessRestDay === null || businessRestDay === undefined || businessRestDay === '') {
13
+ return; // Allow null/empty values
14
+ }
15
+ if (typeof businessRestDay !== 'string') {
16
+ const prefix = index !== undefined ? `Contact point at index ${index}: ` : '';
17
+ throw new error_util_1.ApiError('E01', `${prefix}businessRestDay must be a string. Valid options: ${VALID_DAYS.join(', ')}`);
18
+ }
19
+ const days = businessRestDay.split(',').map(day => day.trim().toUpperCase());
20
+ const invalidDays = days.filter(day => !VALID_DAYS.includes(day));
21
+ if (invalidDays.length > 0) {
22
+ const prefix = index !== undefined ? `Contact point at index ${index}: ` : '';
23
+ throw new error_util_1.ApiError('E01', `${prefix}Invalid businessRestDay value(s): ${invalidDays.join(', ')}. Valid options: ${VALID_DAYS.join(', ')}`);
24
+ }
25
+ }
26
+ function validateType(type, index) {
27
+ if (!type) {
28
+ return; // Type is required but validation will be handled by reqParams
29
+ }
30
+ if (typeof type !== 'string') {
31
+ const prefix = index !== undefined ? `Contact point at index ${index}: ` : '';
32
+ throw new error_util_1.ApiError('E01', `${prefix}type must be a string. Valid options: ${VALID_TYPES.join(', ')}`);
33
+ }
34
+ const upperType = type.toUpperCase();
35
+ if (!VALID_TYPES.includes(upperType)) {
36
+ const prefix = index !== undefined ? `Contact point at index ${index}: ` : '';
37
+ throw new error_util_1.ApiError('E01', `${prefix}Invalid type value: ${type}. Valid options: ${VALID_TYPES.join(', ')}`);
38
+ }
39
+ }
40
+ function validateReleaseShelfLife(releaseShelfLife, index) {
41
+ if (releaseShelfLife === null || releaseShelfLife === undefined || releaseShelfLife === '') {
42
+ return; // Allow null/empty values
43
+ }
44
+ const prefix = index !== undefined ? `Contact point at index ${index}: ` : '';
45
+ // Check if it's a number
46
+ if (typeof releaseShelfLife !== 'number') {
47
+ throw new error_util_1.ApiError('E01', `${prefix}releaseShelfLife must be a number (integer >= 0)`);
48
+ }
49
+ // Check if it's an integer
50
+ if (!Number.isInteger(releaseShelfLife)) {
51
+ throw new error_util_1.ApiError('E01', `${prefix}releaseShelfLife must be an integer (no decimals allowed)`);
52
+ }
53
+ // Check if it's non-negative
54
+ if (releaseShelfLife < 0) {
55
+ throw new error_util_1.ApiError('E01', `${prefix}releaseShelfLife must be 0 or above (no negative values allowed)`);
56
+ }
57
+ }
9
58
  api_1.restfulApiRouter.post('/v1/company/add-contact-points', middlewares_1.businessMiddleware, middlewares_1.validationMiddleware, middlewares_1.loggingMiddleware, async (context, next) => {
10
59
  try {
11
60
  if (!Array.isArray(context.request.body.data))
@@ -24,7 +73,20 @@ api_1.restfulApiRouter.post('/v1/company/add-contact-points', middlewares_1.busi
24
73
  const emails = [];
25
74
  const ids = [];
26
75
  let values = [];
27
- for (const datapoint of context.request.body.data) {
76
+ for (let i = 0; i < context.request.body.data.length; i++) {
77
+ const datapoint = context.request.body.data[i];
78
+ // Validate businessRestDay
79
+ if (datapoint.hasOwnProperty('businessRestDay')) {
80
+ validateBusinessRestDay(datapoint.businessRestDay, i);
81
+ }
82
+ // Validate type
83
+ if (datapoint.hasOwnProperty('type')) {
84
+ validateType(datapoint.type, i);
85
+ }
86
+ // Validate releaseShelfLife
87
+ if (datapoint.hasOwnProperty('releaseShelfLife')) {
88
+ validateReleaseShelfLife(datapoint.releaseShelfLife, i);
89
+ }
28
90
  phones.push(datapoint.phone);
29
91
  emails.push(datapoint.email);
30
92
  if (datapoint.id) {
@@ -46,7 +108,13 @@ api_1.restfulApiRouter.post('/v1/company/add-contact-points', middlewares_1.busi
46
108
  country: datapoint.country,
47
109
  releaseShelfLife: datapoint.releaseShelfLife,
48
110
  postCode: datapoint.postCode,
49
- type: datapoint.type,
111
+ type: datapoint.type ? datapoint.type.toUpperCase() : datapoint.type,
112
+ businessRestDay: datapoint.businessRestDay
113
+ ? datapoint.businessRestDay
114
+ .split(',')
115
+ .map(day => day.trim().toUpperCase())
116
+ .join(',')
117
+ : datapoint.businessRestDay,
50
118
  domain: context.state.domain,
51
119
  bizplace: bizplace,
52
120
  creator: context.state.user,
@@ -110,6 +178,7 @@ api_1.restfulApiRouter.post('/v1/company/add-contact-points', middlewares_1.busi
110
178
  releaseShelfLife: contactPoint.releaseShelfLife,
111
179
  postCode: contactPoint.postCode,
112
180
  type: contactPoint.type,
181
+ businessRestDay: contactPoint.businessRestDay,
113
182
  createdAt: contactPoint.createdAt
114
183
  };
115
184
  data.push(datapoint);
@@ -1 +1 @@
1
- {"version":3,"file":"add-contact-points.js","sourceRoot":"","sources":["../../../../../../server/routers/api/restful-apis/v1/company/add-contact-points.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add-contact-points.js","sourceRoot":"","sources":["../../../../../../server/routers/api/restful-apis/v1/company/add-contact-points.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  require("./add-contact-points");
4
+ require("./update-contact-points");
4
5
  require("./add-products");
5
6
  require("./get-bizplace-list");
6
7
  require("./get-contact-point-list");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../server/routers/api/restful-apis/v1/company/index.ts"],"names":[],"mappings":";;AAAA,gCAA6B;AAC7B,0BAAuB;AACvB,+BAA4B;AAC5B,oCAAiC;AACjC,8BAA2B;AAC3B,8BAA2B;AAC3B,iCAA8B;AAC9B,4BAAyB,CAAC,mDAAmD;AAC7E,6BAA0B;AAC1B,6BAA0B;AAC1B,iCAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../server/routers/api/restful-apis/v1/company/index.ts"],"names":[],"mappings":";;AAAA,gCAA6B;AAC7B,mCAAgC;AAChC,0BAAuB;AACvB,+BAA4B;AAC5B,oCAAiC;AACjC,8BAA2B;AAC3B,8BAA2B;AAC3B,iCAA8B;AAC9B,4BAAyB,CAAC,mDAAmD;AAC7E,6BAA0B;AAC1B,6BAA0B;AAC1B,iCAA8B"}
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const typeorm_1 = require("typeorm");
4
+ const api_1 = require("@things-factory/api");
5
+ const biz_base_1 = require("@things-factory/biz-base");
6
+ const biz_base_2 = require("@things-factory/biz-base");
7
+ const error_util_1 = require("../utils/error-util");
8
+ const middlewares_1 = require("../middlewares");
9
+ const VALID_DAYS = ['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY'];
10
+ const VALID_TYPES = ['CUSTOMER', 'SUPPLIER', 'WAREHOUSE'];
11
+ function validateBusinessRestDay(businessRestDay, index) {
12
+ if (businessRestDay === null || businessRestDay === undefined || businessRestDay === '') {
13
+ return; // Allow null/empty values
14
+ }
15
+ if (typeof businessRestDay !== 'string') {
16
+ const prefix = index !== undefined ? `Contact point at index ${index}: ` : '';
17
+ throw new error_util_1.ApiError('E01', `${prefix}businessRestDay must be a string. Valid options: ${VALID_DAYS.join(', ')}`);
18
+ }
19
+ const days = businessRestDay.split(',').map(day => day.trim().toUpperCase());
20
+ const invalidDays = days.filter(day => !VALID_DAYS.includes(day));
21
+ if (invalidDays.length > 0) {
22
+ const prefix = index !== undefined ? `Contact point at index ${index}: ` : '';
23
+ throw new error_util_1.ApiError('E01', `${prefix}Invalid businessRestDay value(s): ${invalidDays.join(', ')}. Valid options: ${VALID_DAYS.join(', ')}`);
24
+ }
25
+ }
26
+ function validateType(type, index) {
27
+ if (!type) {
28
+ return; // Type is optional for updates
29
+ }
30
+ if (typeof type !== 'string') {
31
+ const prefix = index !== undefined ? `Contact point at index ${index}: ` : '';
32
+ throw new error_util_1.ApiError('E01', `${prefix}type must be a string. Valid options: ${VALID_TYPES.join(', ')}`);
33
+ }
34
+ const upperType = type.toUpperCase();
35
+ if (!VALID_TYPES.includes(upperType)) {
36
+ const prefix = index !== undefined ? `Contact point at index ${index}: ` : '';
37
+ throw new error_util_1.ApiError('E01', `${prefix}Invalid type value: ${type}. Valid options: ${VALID_TYPES.join(', ')}`);
38
+ }
39
+ }
40
+ function validateReleaseShelfLife(releaseShelfLife, index) {
41
+ if (releaseShelfLife === null || releaseShelfLife === undefined || releaseShelfLife === '') {
42
+ return; // Allow null/empty values
43
+ }
44
+ const prefix = index !== undefined ? `Contact point at index ${index}: ` : '';
45
+ // Check if it's a number
46
+ if (typeof releaseShelfLife !== 'number') {
47
+ throw new error_util_1.ApiError('E01', `${prefix}releaseShelfLife must be a number (integer >= 0)`);
48
+ }
49
+ // Check if it's an integer
50
+ if (!Number.isInteger(releaseShelfLife)) {
51
+ throw new error_util_1.ApiError('E01', `${prefix}releaseShelfLife must be an integer (no decimals allowed)`);
52
+ }
53
+ // Check if it's non-negative
54
+ if (releaseShelfLife < 0) {
55
+ throw new error_util_1.ApiError('E01', `${prefix}releaseShelfLife must be 0 or above (no negative values allowed)`);
56
+ }
57
+ }
58
+ api_1.restfulApiRouter.post('/v1/company/update-contact-points', middlewares_1.businessMiddleware, middlewares_1.validationMiddleware, middlewares_1.loggingMiddleware, async (context, next) => {
59
+ try {
60
+ if (!Array.isArray(context.request.body.data))
61
+ throw new error_util_1.ApiError('E01', 'data field is not an array');
62
+ if (!context.request.body.hasOwnProperty('bizplaceId'))
63
+ throw new error_util_1.ApiError('E03', 'bizplaceId');
64
+ if (!context.request.body.bizplaceId)
65
+ throw new error_util_1.ApiError('E01', 'bizplaceId');
66
+ await (0, typeorm_1.getConnection)().transaction(async (tx) => {
67
+ // Validate that all contact points have IDs
68
+ const ids = [];
69
+ for (const datapoint of context.request.body.data) {
70
+ if (!datapoint.id) {
71
+ throw new error_util_1.ApiError('E01', 'All contact points must have an id field for update');
72
+ }
73
+ ids.push(datapoint.id);
74
+ }
75
+ // Verify that all contact points exist
76
+ const existingContactPoints = await tx
77
+ .getRepository(biz_base_1.ContactPoint)
78
+ .createQueryBuilder('cp')
79
+ .where('cp.id IN (:...ids)', { ids })
80
+ .andWhere('cp.bizplace_id = :bizplaceId', { bizplaceId: context.request.body.bizplaceId })
81
+ .getMany();
82
+ if (existingContactPoints.length !== ids.length) {
83
+ const foundIds = existingContactPoints.map(cp => cp.id);
84
+ const missingIds = ids.filter(id => !foundIds.includes(id));
85
+ throw new error_util_1.ApiError('E04', `Contact point(s) not found: ${missingIds.join(', ')}`);
86
+ }
87
+ // Get bizplace
88
+ const bizplace = await tx.getRepository(biz_base_2.Bizplace).findOne({
89
+ where: { id: context.request.body.bizplaceId }
90
+ });
91
+ if (!bizplace) {
92
+ throw new error_util_1.ApiError('E04', 'Bizplace not found');
93
+ }
94
+ // Check for duplicate email or phone within the batch
95
+ const phones = [];
96
+ const emails = [];
97
+ const phoneToIdMap = new Map();
98
+ const emailToIdMap = new Map();
99
+ for (let i = 0; i < context.request.body.data.length; i++) {
100
+ const datapoint = context.request.body.data[i];
101
+ // Validate businessRestDay
102
+ if (datapoint.hasOwnProperty('businessRestDay')) {
103
+ validateBusinessRestDay(datapoint.businessRestDay, i);
104
+ }
105
+ // Validate type
106
+ if (datapoint.hasOwnProperty('type')) {
107
+ validateType(datapoint.type, i);
108
+ }
109
+ // Validate releaseShelfLife
110
+ if (datapoint.hasOwnProperty('releaseShelfLife')) {
111
+ validateReleaseShelfLife(datapoint.releaseShelfLife, i);
112
+ }
113
+ if (datapoint.phone) {
114
+ phones.push(datapoint.phone);
115
+ if (phoneToIdMap.has(datapoint.phone)) {
116
+ throw new error_util_1.ApiError('E05', `Duplicate phone number in update batch: ${datapoint.phone}`);
117
+ }
118
+ phoneToIdMap.set(datapoint.phone, datapoint.id);
119
+ }
120
+ if (datapoint.email) {
121
+ emails.push(datapoint.email);
122
+ if (emailToIdMap.has(datapoint.email)) {
123
+ throw new error_util_1.ApiError('E05', `Duplicate email in update batch: ${datapoint.email}`);
124
+ }
125
+ emailToIdMap.set(datapoint.email, datapoint.id);
126
+ }
127
+ }
128
+ // Check for duplicate email or phone in existing records (excluding the records being updated)
129
+ if (phones.length > 0 || emails.length > 0) {
130
+ const checkDuplicateEmailPhone = await tx
131
+ .getRepository(biz_base_1.ContactPoint)
132
+ .createQueryBuilder('cp')
133
+ .where('cp.bizplace_id = :bizplaceId', { bizplaceId: context.request.body.bizplaceId })
134
+ .andWhere('cp.id NOT IN (:...ids)', { ids })
135
+ .andWhere(new typeorm_1.Brackets(qb => {
136
+ if (emails.length > 0) {
137
+ qb.where('cp.email IN (:...emails)', { emails });
138
+ }
139
+ if (phones.length > 0) {
140
+ if (emails.length > 0) {
141
+ qb.orWhere('cp.phone IN (:...phones)', { phones });
142
+ }
143
+ else {
144
+ qb.where('cp.phone IN (:...phones)', { phones });
145
+ }
146
+ }
147
+ }))
148
+ .getMany();
149
+ if (checkDuplicateEmailPhone.length > 0) {
150
+ const duplicates = checkDuplicateEmailPhone.map(cp => ({
151
+ id: cp.id,
152
+ email: cp.email,
153
+ phone: cp.phone
154
+ }));
155
+ throw new error_util_1.ApiError('E05', `Duplicate email or phone number found: ${JSON.stringify(duplicates)}`);
156
+ }
157
+ }
158
+ // Update contact points
159
+ const updatedContactPoints = [];
160
+ for (const datapoint of context.request.body.data) {
161
+ const existingContactPoint = existingContactPoints.find(cp => cp.id === datapoint.id);
162
+ // Only update fields that are explicitly provided
163
+ const updateData = {
164
+ updater: context.state.user
165
+ };
166
+ if (datapoint.hasOwnProperty('name'))
167
+ updateData.name = datapoint.name;
168
+ if (datapoint.hasOwnProperty('description'))
169
+ updateData.description = datapoint.description;
170
+ if (datapoint.hasOwnProperty('companyName'))
171
+ updateData.companyName = datapoint.companyName;
172
+ if (datapoint.hasOwnProperty('email'))
173
+ updateData.email = datapoint.email;
174
+ if (datapoint.hasOwnProperty('fax'))
175
+ updateData.fax = datapoint.fax;
176
+ if (datapoint.hasOwnProperty('phone'))
177
+ updateData.phone = datapoint.phone;
178
+ if (datapoint.hasOwnProperty('billingAddress'))
179
+ updateData.billingAddress = datapoint.billingAddress;
180
+ if (datapoint.hasOwnProperty('accountNo'))
181
+ updateData.accountNo = datapoint.accountNo;
182
+ if (datapoint.hasOwnProperty('address'))
183
+ updateData.address = datapoint.address;
184
+ if (datapoint.hasOwnProperty('address2'))
185
+ updateData.address2 = datapoint.address2;
186
+ if (datapoint.hasOwnProperty('city'))
187
+ updateData.city = datapoint.city;
188
+ if (datapoint.hasOwnProperty('state'))
189
+ updateData.state = datapoint.state;
190
+ if (datapoint.hasOwnProperty('country'))
191
+ updateData.country = datapoint.country;
192
+ if (datapoint.hasOwnProperty('releaseShelfLife'))
193
+ updateData.releaseShelfLife = datapoint.releaseShelfLife;
194
+ if (datapoint.hasOwnProperty('postCode'))
195
+ updateData.postCode = datapoint.postCode;
196
+ if (datapoint.hasOwnProperty('type'))
197
+ updateData.type = datapoint.type ? datapoint.type.toUpperCase() : datapoint.type;
198
+ if (datapoint.hasOwnProperty('businessRestDay'))
199
+ updateData.businessRestDay = datapoint.businessRestDay
200
+ ? datapoint.businessRestDay
201
+ .split(',')
202
+ .map(day => day.trim().toUpperCase())
203
+ .join(',')
204
+ : datapoint.businessRestDay;
205
+ const updated = await tx.getRepository(biz_base_1.ContactPoint).save(Object.assign(Object.assign({}, existingContactPoint), updateData));
206
+ updatedContactPoints.push(updated);
207
+ }
208
+ // Format response
209
+ const data = updatedContactPoints.map(contactPoint => ({
210
+ id: contactPoint.id,
211
+ name: contactPoint.name,
212
+ description: contactPoint.description,
213
+ companyName: contactPoint.companyName,
214
+ email: contactPoint.email,
215
+ fax: contactPoint.fax,
216
+ phone: contactPoint.phone,
217
+ billingAddress: contactPoint.billingAddress,
218
+ accountNo: contactPoint.accountNo,
219
+ address: contactPoint.address,
220
+ address2: contactPoint.address2,
221
+ city: contactPoint.city,
222
+ state: contactPoint.state,
223
+ country: contactPoint.country,
224
+ releaseShelfLife: contactPoint.releaseShelfLife,
225
+ postCode: contactPoint.postCode,
226
+ type: contactPoint.type,
227
+ businessRestDay: contactPoint.businessRestDay,
228
+ createdAt: contactPoint.createdAt,
229
+ updatedAt: contactPoint.updatedAt
230
+ }));
231
+ context.body = {
232
+ data
233
+ };
234
+ });
235
+ }
236
+ catch (e) {
237
+ if (e instanceof error_util_1.ApiError)
238
+ (0, error_util_1.ApiErrorHandler)(context, e);
239
+ else
240
+ (0, error_util_1.throwInternalServerError)(context, e);
241
+ }
242
+ });
243
+ //# sourceMappingURL=update-contact-points.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-contact-points.js","sourceRoot":"","sources":["../../../../../../server/routers/api/restful-apis/v1/company/update-contact-points.ts"],"names":[],"mappings":"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"}