tango-api-schema 2.2.85 → 2.2.87

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.
@@ -1,619 +1,619 @@
1
- import mongoose from 'mongoose';
2
-
3
- const client = new mongoose.Schema(
4
- {
5
- clientName: {
6
- type: String,
7
- trim: true,
8
- required: true,
9
- unique: true,
10
- },
11
- clientId: {
12
- type: String,
13
- trim: true,
14
- required: true,
15
- unique: true,
16
- },
17
- tangoId: {
18
- type: Number,
19
- require: true,
20
- },
21
- userId: {
22
- type: mongoose.Types.ObjectId,
23
- required: true,
24
- },
25
- planDetails: {
26
- totalStores: {
27
- type: String,
28
- require: true,
29
- },
30
- storeSize: {
31
- type: String,
32
- require: true,
33
- },
34
- totalCamera: {
35
- type: Number,
36
- require: true,
37
- },
38
- subscriptionPeriod: {
39
- type: String,
40
- enum: ['monthly','quarterly','annual'],
41
- },
42
- subscriptionType: {
43
- type: String,
44
- enum: ['free','premium','enterprise'],
45
- },
46
- paymentStatus: {
47
- type: String,
48
- enum: ['free','trial','paid','unbilled','due'],
49
- },
50
- product: [
51
- {
52
- productName: {
53
- type: String,
54
- },
55
- trialStartDate: {
56
- type: Date,
57
- },
58
- trialEndDate: {
59
- type: Date,
60
- },
61
- subscribedDate: {
62
- type: Date
63
- },
64
- status: {
65
- type: String,
66
- enum: ['trial','live'],
67
- default: 'trial'
68
- }
69
- }
70
- ],
71
- },
72
- status: {
73
- type: String,
74
- enum: ['active','deactive','hold','suspended'],
75
- default: 'active'
76
- },
77
- profileDetails: {
78
- logo: {
79
- type: String
80
- },
81
- registeredCompanyName: {
82
- type: String,
83
- },
84
- industry: {
85
- type: String,
86
- enum: ['apparel','footwear','skincare','foodandbeverage','techstartup','grooming','leather','furniture','mattress','customerelectronics','jewellery','interiordesign','ev','fintech','perfume','fashionaccessories','innerwear','nutrition','fashionandlifestyle','eyewear']
87
- },
88
- clientType: {
89
- type: String,
90
- enum: ['partnership','proprietorship','pvtltd','person']
91
- },
92
- registeredAddress: {
93
- type: String,
94
- },
95
- headQuarters: {
96
- type: String,
97
- },
98
- website: {
99
- type: String,
100
- },
101
- },
102
- billingDetails: {
103
- tradeName: {
104
- type: String,
105
- },
106
- gstNumber: {
107
- type: String,
108
- },
109
- authorityName: {
110
- type: String,
111
- },
112
- authorityEmail: {
113
- type: String,
114
- },
115
- billingAddress: {
116
- type: String,
117
- },
118
- companyName: {
119
- type: String,
120
- },
121
- PlaceOfSupply: {
122
- type: String,
123
- },
124
- },
125
- signatoryDetail: {
126
- name: {
127
- type: String,
128
- },
129
- email: {
130
- type: String,
131
- },
132
- number: {
133
- type: String,
134
- },
135
- designation: {
136
- type: String,
137
- },
138
- },
139
- ticketConfigs: {
140
- installationReAssign: {
141
- type: Number,
142
- default:0
143
- },
144
- downTimeType: {
145
- type: Number, // 0 for one camera and 1 for multi cameras
146
- enum:[0,1],
147
- default:0
148
- },
149
- infraReport:{},
150
- infraDownTime: {
151
- type: Number,
152
- default:1,
153
- enum:[1,2,3,4,5,6,8,9,10,11,12]
154
- },
155
- MinFilesCount:{
156
- type: Number,
157
- default:0
158
- },
159
- rcaTicketAssign:{// root cause anlysis
160
- type: Number,
161
- enum:[1,2,3,4,5,6,8,9,10,11,12],
162
- default:1
163
- },
164
- refreshAlert:{
165
- type: Number,
166
- default:1,
167
- enum:[0,1,2,3,4,5,6,8,9,10]
168
- },
169
- statusCheckAlert:{
170
- type: Number,
171
- default:1,
172
- enum:[1,2,3,4,5,6,8,9,10,11,12]
173
- },
174
- accuracyPercentage: {
175
- type: Number, // in less than
176
- default:10
177
- },
178
- reTrain: {
179
- type: Number, // calculate no of past days
180
- enum:[1,2,3,4,5,6,8,9,10,11,12],
181
- default:1
182
- },
183
- emailAlert:{
184
- type: Boolean,
185
- default: false
186
- },
187
- matConfig:{
188
- enabled:{
189
- type: Boolean,
190
- default: false
191
- }
192
- }
193
- },
194
- reportConfigs: {
195
- report: {
196
- type: Boolean,
197
- default:true
198
- },
199
- reportName: {
200
- type: String,
201
- },
202
- },
203
- auditConfigs: {
204
- audit: {
205
- type: Boolean,
206
- default: true
207
- },
208
- traxAudit: {
209
- type: Boolean,
210
- default: false
211
- },
212
- count:{
213
- type:Number,
214
- default:200
215
- },
216
- ratio:{
217
- type:Number,
218
- default:0.75,
219
- },
220
- queueName: {
221
- type: String,
222
- },
223
- zoneQueueName: {
224
- type: String,
225
- },
226
- trafficQueueName: {
227
- type: String,
228
- },
229
- traxQueueName: {
230
- unattendedCustomer :{
231
- type:String
232
- },
233
- leftInMiddle:{
234
- type:String
235
- },
236
- uniformDetection:{
237
- type:String
238
- },
239
- mobileDetection:{
240
- type:String
241
- },
242
- cameraAngleChange:{
243
- type:String
244
- },
245
- hygiene:{
246
- type:String
247
- }
248
- }
249
- },
250
- assignedUsers: {
251
- csm: {
252
- type: Object,
253
- },
254
- ops: {
255
- type: Array,
256
- },
257
- },
258
- featureConfigs: {
259
- open: {
260
- type: String,
261
- default: "10:00:00"
262
- },
263
- close: {
264
- type: String,
265
- default: "23:00:00"
266
- },
267
- infraAlert: {
268
- condition: {
269
- type: String,
270
- default:"<"
271
- },
272
- value: {
273
- type: Number,
274
- default:"1"
275
- },
276
- },
277
- bouncedLimit: {
278
- condition: {
279
- type: String,
280
- default:'<='
281
- },
282
- value: {
283
- type: String,
284
- default: "1"
285
- },
286
- },
287
- missedOpportunityFrom: {
288
- condition: {
289
- type: String,
290
- default: '>'
291
- },
292
- value: {
293
- type: String,
294
- default:'1'
295
- },
296
- },
297
- missedOpportunityTo: {
298
- condition: {
299
- type: String,
300
- default:"<="
301
- },
302
- value: {
303
- type: String,
304
- default:"5"
305
- },
306
- },
307
- conversion: {
308
- condition: {
309
- type: String,
310
- default:">"
311
- },
312
- value: {
313
- type: String,
314
- default:'5'
315
- },
316
- },
317
- billableCalculation: {
318
- type: String,
319
- default:"engagers-count"
320
- },
321
- missedOpportunityCalculation: {
322
- type: String,
323
- default:"engagers-conversion"
324
- },
325
- conversionCalculation: {
326
- type: String,
327
- default:"engagers-count"
328
- },
329
- isNormalized: {
330
- type: Boolean,
331
- default: false,
332
- },
333
- isPasserByData: {
334
- type: Boolean,
335
- default: false,
336
- },
337
- isFootfallDirectory: {
338
- type: Boolean,
339
- default: false,
340
- },
341
- isExcludedArea:{
342
- type:Boolean,
343
- default:true
344
- },
345
- updateFeatureConfig:{
346
- type:Boolean,
347
- default:true
348
- },
349
- isCameraDisabled:{
350
- type:Boolean,
351
- default:false
352
- },
353
- isbillingDisabled:{
354
- type:Boolean,
355
- default:false
356
- },
357
- isNewDashboard:{
358
- type:Boolean,
359
- default:false
360
- },
361
- isFootfallAuditStores:{
362
- type:Boolean,
363
- default:false
364
- },
365
- isNewTraffic:{
366
- type:Boolean,
367
- default:false
368
- },
369
- isNewZone:{
370
- type:Boolean,
371
- default:false
372
- },
373
- isNewReports:{
374
- type:Boolean,
375
- default:false
376
- },
377
- isNOB:{
378
- type:Boolean,
379
- default:false
380
- },
381
- isNewZoneV2:{
382
- type:Boolean,
383
- default:false
384
- },
385
- isTrax:{
386
- type:Boolean,
387
- default:false
388
- },
389
- isControlCenter:{
390
- type:Boolean,
391
- default:false
392
- },
393
- isFootfallDirectoryAudit:{
394
- type:Boolean,
395
- default:false
396
- },
397
- isFootfallDirectoryLimit:{
398
- type:Boolean,
399
- default:false
400
- },
401
- traxDateRange:{
402
- type:Number,
403
- default:30
404
- },
405
- trafficDateRange:{
406
- type:Number,
407
- default:180
408
- },
409
- streamBy:{
410
- type: String,
411
- enum: ["Rtsp", "Edge"],
412
- default: "Rtsp"
413
- },
414
- trackerFF:{
415
- type: Boolean,
416
- default:true
417
- }
418
- },
419
- document: {
420
- addressProof: {
421
- path: {
422
- type: String,
423
-
424
- },
425
- },
426
- gst: {
427
- number: {
428
- type: String,
429
- },
430
- path: {
431
- type: String,
432
-
433
- },
434
- },
435
- pan: {
436
- number: {
437
- type: String,
438
- },
439
- path: {
440
- type: String,
441
-
442
- },
443
- },
444
- cin: {
445
- number: {
446
- type: String,
447
- },
448
- path: {
449
- type: String,
450
-
451
- },
452
- },
453
-
454
- },
455
- price:{
456
- type:Number
457
- },
458
- paymentInvoice: {
459
- proRate: {
460
- type: String,
461
- enum: ['before15','after15'],
462
- default: 'before15',
463
- },
464
- paymentType: {
465
- type:String,
466
- enum: ['online','banktransfer'],
467
- default: 'online',
468
- },
469
- paymentCycle: {
470
- type:String,
471
- },
472
- currencyType: {
473
- type:String
474
- },
475
- invoiceTo:{
476
- type:Array
477
- },
478
- paymentAgreementTo:{
479
- type:Array
480
- },
481
- invoiceOn: {
482
- type:String,
483
- enum: ['lastday','25th'],
484
- default: '25th',
485
- },
486
- extendPaymentPeriodDays: {
487
- type:Number,
488
- default: 5,
489
- },
490
- invoiceCC:{
491
- type:Array
492
- },
493
- PomNumber:{
494
- type:String
495
- }
496
- },
497
- priceType:{
498
- type:String,
499
- enum: ['standard','step'],
500
- default: 'standard',
501
- },
502
- virtualAccount:{
503
- accountNo:{
504
- type:String
505
- },
506
- ifscCode:{
507
- type:String
508
- },
509
- swiftCode:{
510
- type:String
511
- },
512
- branch:{
513
- type:String
514
- }
515
- },
516
- clientApi: {
517
- apiKey: {
518
- type: String,
519
- default: null,
520
- },
521
- status: {
522
- type: Boolean,
523
- default: false,
524
- },
525
- allowedIps: {
526
- type: Array,
527
- default: [ '*' ],
528
- },
529
- },
530
- notifyCsmAssign: {
531
- type: Boolean,
532
- default:false
533
- },
534
- edgeApp:{
535
- password:{
536
- type:String,
537
- },
538
- },
539
- averageTransactionValue: {
540
- type: String,
541
- default: ''
542
- },
543
- domainConfig:{
544
- ssoLogin: {
545
- isEnable: {
546
- type: Boolean,
547
- default: false,
548
- },
549
- domainName: {
550
- type: Array,
551
- },
552
- },
553
- ipWhitelisting: {
554
- enableWhitelisting: {
555
- type: Boolean,
556
- default: false,
557
- },
558
- allowedIps: {
559
- type: Array,
560
- },
561
- },
562
- enableOtp:{
563
- type: Boolean,
564
- default: false,
565
- }
566
- },
567
- storeRadiusConfig: {
568
- type: Number,
569
- default: 200
570
- },
571
- controlCenterConfigs:{
572
- taskList:{
573
- type: [String],
574
- default: ['Hygiene Task','Operations','Maintenence'],
575
- validate: {
576
- validator: function (arr) {
577
- return arr.length >= 1 && arr.length <= 16; // Minimum and maximum length
578
- },
579
- message: 'List must have between 1 and 15 task.',
580
- },
581
- }
582
- },
583
- traxRAWImageUpload: {
584
- type: Boolean,
585
- default:false
586
- },
587
- emailersConfig: {
588
- daily: {
589
- type: Boolean,
590
- default:false
591
- },
592
- weekly: {
593
- type: Boolean,
594
- default:false
595
- },
596
- monthly: {
597
- type: Boolean,
598
- default:false
599
- },
600
- sendTo: {
601
- type: Array,
602
- },
603
- },
604
- clientConfigs: {
605
- exportLimit: {
606
- type: Number,
607
- default: 10000
608
- },
609
- },
610
- },
611
- {
612
- strict: true,
613
- versionKey: false,
614
- timestamps: true,
615
- },
616
- );
617
-
618
-
619
- export default mongoose.model( 'client', client );
1
+ import mongoose from 'mongoose';
2
+
3
+ const client = new mongoose.Schema(
4
+ {
5
+ clientName: {
6
+ type: String,
7
+ trim: true,
8
+ required: true,
9
+ unique: true,
10
+ },
11
+ clientId: {
12
+ type: String,
13
+ trim: true,
14
+ required: true,
15
+ unique: true,
16
+ },
17
+ tangoId: {
18
+ type: Number,
19
+ require: true,
20
+ },
21
+ userId: {
22
+ type: mongoose.Types.ObjectId,
23
+ required: true,
24
+ },
25
+ planDetails: {
26
+ totalStores: {
27
+ type: String,
28
+ require: true,
29
+ },
30
+ storeSize: {
31
+ type: String,
32
+ require: true,
33
+ },
34
+ totalCamera: {
35
+ type: Number,
36
+ require: true,
37
+ },
38
+ subscriptionPeriod: {
39
+ type: String,
40
+ enum: ['monthly','quarterly','annual'],
41
+ },
42
+ subscriptionType: {
43
+ type: String,
44
+ enum: ['free','premium','enterprise'],
45
+ },
46
+ paymentStatus: {
47
+ type: String,
48
+ enum: ['free','trial','paid','unbilled','due'],
49
+ },
50
+ product: [
51
+ {
52
+ productName: {
53
+ type: String,
54
+ },
55
+ trialStartDate: {
56
+ type: Date,
57
+ },
58
+ trialEndDate: {
59
+ type: Date,
60
+ },
61
+ subscribedDate: {
62
+ type: Date
63
+ },
64
+ status: {
65
+ type: String,
66
+ enum: ['trial','live'],
67
+ default: 'trial'
68
+ }
69
+ }
70
+ ],
71
+ },
72
+ status: {
73
+ type: String,
74
+ enum: ['active','deactive','hold','suspended'],
75
+ default: 'active'
76
+ },
77
+ profileDetails: {
78
+ logo: {
79
+ type: String
80
+ },
81
+ registeredCompanyName: {
82
+ type: String,
83
+ },
84
+ industry: {
85
+ type: String,
86
+ enum: ['apparel','footwear','skincare','foodandbeverage','techstartup','grooming','leather','furniture','mattress','customerelectronics','jewellery','interiordesign','ev','fintech','perfume','fashionaccessories','innerwear','nutrition','fashionandlifestyle','eyewear']
87
+ },
88
+ clientType: {
89
+ type: String,
90
+ enum: ['partnership','proprietorship','pvtltd','person']
91
+ },
92
+ registeredAddress: {
93
+ type: String,
94
+ },
95
+ headQuarters: {
96
+ type: String,
97
+ },
98
+ website: {
99
+ type: String,
100
+ },
101
+ },
102
+ billingDetails: {
103
+ tradeName: {
104
+ type: String,
105
+ },
106
+ gstNumber: {
107
+ type: String,
108
+ },
109
+ authorityName: {
110
+ type: String,
111
+ },
112
+ authorityEmail: {
113
+ type: String,
114
+ },
115
+ billingAddress: {
116
+ type: String,
117
+ },
118
+ companyName: {
119
+ type: String,
120
+ },
121
+ PlaceOfSupply: {
122
+ type: String,
123
+ },
124
+ },
125
+ signatoryDetail: {
126
+ name: {
127
+ type: String,
128
+ },
129
+ email: {
130
+ type: String,
131
+ },
132
+ number: {
133
+ type: String,
134
+ },
135
+ designation: {
136
+ type: String,
137
+ },
138
+ },
139
+ ticketConfigs: {
140
+ installationReAssign: {
141
+ type: Number,
142
+ default:0
143
+ },
144
+ downTimeType: {
145
+ type: Number, // 0 for one camera and 1 for multi cameras
146
+ enum:[0,1],
147
+ default:0
148
+ },
149
+ infraReport:{},
150
+ infraDownTime: {
151
+ type: Number,
152
+ default:1,
153
+ enum:[1,2,3,4,5,6,8,9,10,11,12]
154
+ },
155
+ MinFilesCount:{
156
+ type: Number,
157
+ default:0
158
+ },
159
+ rcaTicketAssign:{// root cause anlysis
160
+ type: Number,
161
+ enum:[1,2,3,4,5,6,8,9,10,11,12],
162
+ default:1
163
+ },
164
+ refreshAlert:{
165
+ type: Number,
166
+ default:1,
167
+ enum:[0,1,2,3,4,5,6,8,9,10]
168
+ },
169
+ statusCheckAlert:{
170
+ type: Number,
171
+ default:1,
172
+ enum:[1,2,3,4,5,6,8,9,10,11,12]
173
+ },
174
+ accuracyPercentage: {
175
+ type: Number, // in less than
176
+ default:10
177
+ },
178
+ reTrain: {
179
+ type: Number, // calculate no of past days
180
+ enum:[1,2,3,4,5,6,8,9,10,11,12],
181
+ default:1
182
+ },
183
+ emailAlert:{
184
+ type: Boolean,
185
+ default: false
186
+ },
187
+ matConfig:{
188
+ enabled:{
189
+ type: Boolean,
190
+ default: false
191
+ }
192
+ }
193
+ },
194
+ reportConfigs: {
195
+ report: {
196
+ type: Boolean,
197
+ default:true
198
+ },
199
+ reportName: {
200
+ type: String,
201
+ },
202
+ },
203
+ auditConfigs: {
204
+ audit: {
205
+ type: Boolean,
206
+ default: true
207
+ },
208
+ traxAudit: {
209
+ type: Boolean,
210
+ default: false
211
+ },
212
+ count:{
213
+ type:Number,
214
+ default:200
215
+ },
216
+ ratio:{
217
+ type:Number,
218
+ default:0.75,
219
+ },
220
+ queueName: {
221
+ type: String,
222
+ },
223
+ zoneQueueName: {
224
+ type: String,
225
+ },
226
+ trafficQueueName: {
227
+ type: String,
228
+ },
229
+ traxQueueName: {
230
+ unattendedCustomer :{
231
+ type:String
232
+ },
233
+ leftInMiddle:{
234
+ type:String
235
+ },
236
+ uniformDetection:{
237
+ type:String
238
+ },
239
+ mobileDetection:{
240
+ type:String
241
+ },
242
+ cameraAngleChange:{
243
+ type:String
244
+ },
245
+ hygiene:{
246
+ type:String
247
+ }
248
+ }
249
+ },
250
+ assignedUsers: {
251
+ csm: {
252
+ type: Object,
253
+ },
254
+ ops: {
255
+ type: Array,
256
+ },
257
+ },
258
+ featureConfigs: {
259
+ open: {
260
+ type: String,
261
+ default: "10:00:00"
262
+ },
263
+ close: {
264
+ type: String,
265
+ default: "23:00:00"
266
+ },
267
+ infraAlert: {
268
+ condition: {
269
+ type: String,
270
+ default:"<"
271
+ },
272
+ value: {
273
+ type: Number,
274
+ default:"1"
275
+ },
276
+ },
277
+ bouncedLimit: {
278
+ condition: {
279
+ type: String,
280
+ default:'<='
281
+ },
282
+ value: {
283
+ type: String,
284
+ default: "1"
285
+ },
286
+ },
287
+ missedOpportunityFrom: {
288
+ condition: {
289
+ type: String,
290
+ default: '>'
291
+ },
292
+ value: {
293
+ type: String,
294
+ default:'1'
295
+ },
296
+ },
297
+ missedOpportunityTo: {
298
+ condition: {
299
+ type: String,
300
+ default:"<="
301
+ },
302
+ value: {
303
+ type: String,
304
+ default:"5"
305
+ },
306
+ },
307
+ conversion: {
308
+ condition: {
309
+ type: String,
310
+ default:">"
311
+ },
312
+ value: {
313
+ type: String,
314
+ default:'5'
315
+ },
316
+ },
317
+ billableCalculation: {
318
+ type: String,
319
+ default:"engagers-count"
320
+ },
321
+ missedOpportunityCalculation: {
322
+ type: String,
323
+ default:"engagers-conversion"
324
+ },
325
+ conversionCalculation: {
326
+ type: String,
327
+ default:"engagers-count"
328
+ },
329
+ isNormalized: {
330
+ type: Boolean,
331
+ default: false,
332
+ },
333
+ isPasserByData: {
334
+ type: Boolean,
335
+ default: false,
336
+ },
337
+ isFootfallDirectory: {
338
+ type: Boolean,
339
+ default: false,
340
+ },
341
+ isExcludedArea:{
342
+ type:Boolean,
343
+ default:true
344
+ },
345
+ updateFeatureConfig:{
346
+ type:Boolean,
347
+ default:true
348
+ },
349
+ isCameraDisabled:{
350
+ type:Boolean,
351
+ default:false
352
+ },
353
+ isbillingDisabled:{
354
+ type:Boolean,
355
+ default:false
356
+ },
357
+ isNewDashboard:{
358
+ type:Boolean,
359
+ default:false
360
+ },
361
+ isFootfallAuditStores:{
362
+ type:Boolean,
363
+ default:false
364
+ },
365
+ isNewTraffic:{
366
+ type:Boolean,
367
+ default:false
368
+ },
369
+ isNewZone:{
370
+ type:Boolean,
371
+ default:false
372
+ },
373
+ isNewReports:{
374
+ type:Boolean,
375
+ default:false
376
+ },
377
+ isNOB:{
378
+ type:Boolean,
379
+ default:false
380
+ },
381
+ isNewZoneV2:{
382
+ type:Boolean,
383
+ default:false
384
+ },
385
+ isTrax:{
386
+ type:Boolean,
387
+ default:false
388
+ },
389
+ isControlCenter:{
390
+ type:Boolean,
391
+ default:false
392
+ },
393
+ isFootfallDirectoryAudit:{
394
+ type:Boolean,
395
+ default:false
396
+ },
397
+ isFootfallDirectoryLimit:{
398
+ type:Boolean,
399
+ default:false
400
+ },
401
+ traxDateRange:{
402
+ type:Number,
403
+ default:30
404
+ },
405
+ trafficDateRange:{
406
+ type:Number,
407
+ default:180
408
+ },
409
+ streamBy:{
410
+ type: String,
411
+ enum: ["Rtsp", "Edge"],
412
+ default: "Rtsp"
413
+ },
414
+ trackerFF:{
415
+ type: Boolean,
416
+ default:true
417
+ }
418
+ },
419
+ document: {
420
+ addressProof: {
421
+ path: {
422
+ type: String,
423
+
424
+ },
425
+ },
426
+ gst: {
427
+ number: {
428
+ type: String,
429
+ },
430
+ path: {
431
+ type: String,
432
+
433
+ },
434
+ },
435
+ pan: {
436
+ number: {
437
+ type: String,
438
+ },
439
+ path: {
440
+ type: String,
441
+
442
+ },
443
+ },
444
+ cin: {
445
+ number: {
446
+ type: String,
447
+ },
448
+ path: {
449
+ type: String,
450
+
451
+ },
452
+ },
453
+
454
+ },
455
+ price:{
456
+ type:Number
457
+ },
458
+ paymentInvoice: {
459
+ proRate: {
460
+ type: String,
461
+ enum: ['before15','after15'],
462
+ default: 'before15',
463
+ },
464
+ paymentType: {
465
+ type:String,
466
+ enum: ['online','banktransfer'],
467
+ default: 'online',
468
+ },
469
+ paymentCycle: {
470
+ type:String,
471
+ },
472
+ currencyType: {
473
+ type:String
474
+ },
475
+ invoiceTo:{
476
+ type:Array
477
+ },
478
+ paymentAgreementTo:{
479
+ type:Array
480
+ },
481
+ invoiceOn: {
482
+ type:String,
483
+ enum: ['lastday','25th'],
484
+ default: '25th',
485
+ },
486
+ extendPaymentPeriodDays: {
487
+ type:Number,
488
+ default: 5,
489
+ },
490
+ invoiceCC:{
491
+ type:Array
492
+ },
493
+ PomNumber:{
494
+ type:String
495
+ }
496
+ },
497
+ priceType:{
498
+ type:String,
499
+ enum: ['standard','step'],
500
+ default: 'standard',
501
+ },
502
+ virtualAccount:{
503
+ accountNo:{
504
+ type:String
505
+ },
506
+ ifscCode:{
507
+ type:String
508
+ },
509
+ swiftCode:{
510
+ type:String
511
+ },
512
+ branch:{
513
+ type:String
514
+ }
515
+ },
516
+ clientApi: {
517
+ apiKey: {
518
+ type: String,
519
+ default: null,
520
+ },
521
+ status: {
522
+ type: Boolean,
523
+ default: false,
524
+ },
525
+ allowedIps: {
526
+ type: Array,
527
+ default: [ '*' ],
528
+ },
529
+ },
530
+ notifyCsmAssign: {
531
+ type: Boolean,
532
+ default:false
533
+ },
534
+ edgeApp:{
535
+ password:{
536
+ type:String,
537
+ },
538
+ },
539
+ averageTransactionValue: {
540
+ type: String,
541
+ default: ''
542
+ },
543
+ domainConfig:{
544
+ ssoLogin: {
545
+ isEnable: {
546
+ type: Boolean,
547
+ default: false,
548
+ },
549
+ domainName: {
550
+ type: Array,
551
+ },
552
+ },
553
+ ipWhitelisting: {
554
+ enableWhitelisting: {
555
+ type: Boolean,
556
+ default: false,
557
+ },
558
+ allowedIps: {
559
+ type: Array,
560
+ },
561
+ },
562
+ enableOtp:{
563
+ type: Boolean,
564
+ default: false,
565
+ }
566
+ },
567
+ storeRadiusConfig: {
568
+ type: Number,
569
+ default: 200
570
+ },
571
+ controlCenterConfigs:{
572
+ taskList:{
573
+ type: [String],
574
+ default: ['Hygiene Task','Operations','Maintenence'],
575
+ validate: {
576
+ validator: function (arr) {
577
+ return arr.length >= 1 && arr.length <= 16; // Minimum and maximum length
578
+ },
579
+ message: 'List must have between 1 and 15 task.',
580
+ },
581
+ }
582
+ },
583
+ traxRAWImageUpload: {
584
+ type: Boolean,
585
+ default:false
586
+ },
587
+ emailersConfig: {
588
+ daily: {
589
+ type: Boolean,
590
+ default:false
591
+ },
592
+ weekly: {
593
+ type: Boolean,
594
+ default:false
595
+ },
596
+ monthly: {
597
+ type: Boolean,
598
+ default:false
599
+ },
600
+ sendTo: {
601
+ type: Array,
602
+ },
603
+ },
604
+ clientConfigs: {
605
+ exportLimit: {
606
+ type: Number,
607
+ default: 10000
608
+ },
609
+ },
610
+ },
611
+ {
612
+ strict: true,
613
+ versionKey: false,
614
+ timestamps: true,
615
+ },
616
+ );
617
+
618
+
619
+ export default mongoose.model( 'client', client );