payservedb 8.3.9 → 8.4.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 (177) hide show
  1. package/.env +2 -2
  2. package/ZOHO_INTEGRATION_SCHEMA.md +644 -644
  3. package/index.js +309 -307
  4. package/package.json +17 -17
  5. package/src/models/account.js +52 -52
  6. package/src/models/agent_departments.js +59 -59
  7. package/src/models/agent_notifications.js +53 -53
  8. package/src/models/agent_performance.js +127 -127
  9. package/src/models/agent_roles.js +77 -77
  10. package/src/models/agents.js +154 -154
  11. package/src/models/apilog.js +18 -18
  12. package/src/models/approvalsWorkflows.js +49 -49
  13. package/src/models/archivedapilog.js +18 -18
  14. package/src/models/asset.js +92 -92
  15. package/src/models/assetsAssignment.js +64 -64
  16. package/src/models/auditTrail.js +346 -346
  17. package/src/models/bankdetails.js +47 -47
  18. package/src/models/billerAddress.js +124 -124
  19. package/src/models/booking_invoice.js +151 -151
  20. package/src/models/bookinganalytics.js +63 -63
  21. package/src/models/bookingconfig.js +45 -45
  22. package/src/models/bookingproperty.js +122 -122
  23. package/src/models/bookingreservation.js +192 -192
  24. package/src/models/bookingrevenuerecord.js +84 -84
  25. package/src/models/budget.js +95 -95
  26. package/src/models/budgetCategory.js +19 -19
  27. package/src/models/campaigns.js +108 -108
  28. package/src/models/cashpayment.js +264 -264
  29. package/src/models/combinedUnits.js +62 -62
  30. package/src/models/common_area_electricity.js +38 -38
  31. package/src/models/common_area_generator.js +41 -41
  32. package/src/models/common_area_utility_alert.js +37 -37
  33. package/src/models/common_area_water.js +39 -39
  34. package/src/models/communication_status.js +33 -33
  35. package/src/models/communication_user_opt.js +32 -32
  36. package/src/models/company.js +53 -53
  37. package/src/models/coreBaseSettings.js +16 -16
  38. package/src/models/coreInvoiceSettings.js +100 -100
  39. package/src/models/counter_schema.js +21 -21
  40. package/src/models/country_tax.js +42 -42
  41. package/src/models/currency_settings.js +39 -39
  42. package/src/models/customer.js +210 -210
  43. package/src/models/customer_satisfaction_survey.js +278 -278
  44. package/src/models/customer_surveys.js +139 -139
  45. package/src/models/customer_tickets.js +239 -239
  46. package/src/models/dailyChecklist.js +312 -312
  47. package/src/models/default_payment_details.js +17 -17
  48. package/src/models/deliveryTimeMarks.js +18 -18
  49. package/src/models/document_type.js +19 -19
  50. package/src/models/dutyRosterChecklist.js +250 -250
  51. package/src/models/dutyroster.js +136 -136
  52. package/src/models/email.js +37 -37
  53. package/src/models/email_sms_queue.js +61 -61
  54. package/src/models/entry_exit.js +53 -53
  55. package/src/models/expense.js +99 -99
  56. package/src/models/expense_category.js +45 -45
  57. package/src/models/facility.js +62 -62
  58. package/src/models/facilityBillingPrices.js +29 -29
  59. package/src/models/facilityInvoice.js +240 -240
  60. package/src/models/facilityInvoicePayment.js +52 -52
  61. package/src/models/facilityInvoiceRecipient.js +32 -32
  62. package/src/models/facilityWalletTransactionsMetadata.js +236 -236
  63. package/src/models/facility_departements.js +20 -20
  64. package/src/models/facility_payment_details.js +20 -20
  65. package/src/models/facilityasset.js +25 -25
  66. package/src/models/faq.js +14 -14
  67. package/src/models/gl_account_double_entries.js +25 -25
  68. package/src/models/gl_accounts.js +56 -56
  69. package/src/models/gl_entries.js +49 -49
  70. package/src/models/goodsReceivedNotes.js +115 -115
  71. package/src/models/guard.js +47 -47
  72. package/src/models/handover.js +247 -247
  73. package/src/models/inspection_category.js +38 -38
  74. package/src/models/invoice.js +387 -387
  75. package/src/models/invoicing_schedule.js +36 -36
  76. package/src/models/item_inspection.js +96 -96
  77. package/src/models/knowledge_base.js +109 -109
  78. package/src/models/knowledge_base_rating.js +44 -44
  79. package/src/models/leaseagreement.js +236 -236
  80. package/src/models/leasetemplate.js +17 -17
  81. package/src/models/levy.js +223 -223
  82. package/src/models/levy_invoice_settings.js +26 -26
  83. package/src/models/levycontract.js +177 -177
  84. package/src/models/levytype.js +23 -23
  85. package/src/models/maintenance_service_vendor.js +38 -38
  86. package/src/models/maintenance_services.js +17 -17
  87. package/src/models/maintenancerequisition.js +31 -31
  88. package/src/models/master_workplan.js +32 -32
  89. package/src/models/master_workplan_child.js +34 -34
  90. package/src/models/message.js +38 -38
  91. package/src/models/module.js +21 -21
  92. package/src/models/notification.js +44 -44
  93. package/src/models/paymentTermsMarks.js +19 -19
  94. package/src/models/penalty.js +76 -76
  95. package/src/models/pendingCredentials.js +32 -32
  96. package/src/models/powerMeterCommunicationProtocol.js +17 -17
  97. package/src/models/powerMeterCustomerAccount.js +78 -78
  98. package/src/models/powerMeterCustomerBand.js +14 -14
  99. package/src/models/powerMeterDailyReading.js +30 -30
  100. package/src/models/powerMeterGateways.js +40 -40
  101. package/src/models/powerMeterMonthlyReading.js +34 -34
  102. package/src/models/powerMeterPowerCharges.js +85 -85
  103. package/src/models/powerMeterSettings.js +159 -159
  104. package/src/models/powerMeterSingleDayReading.js +32 -32
  105. package/src/models/powerMeters.js +116 -116
  106. package/src/models/powerMetersManufacturer.js +14 -14
  107. package/src/models/power_meter_account.js +81 -81
  108. package/src/models/power_meter_command_logs.js +30 -30
  109. package/src/models/power_meter_command_queue.js +33 -33
  110. package/src/models/power_meter_negative_balance.js +44 -44
  111. package/src/models/power_prepaid_credits.js +47 -47
  112. package/src/models/power_prepaid_debits.js +53 -53
  113. package/src/models/power_prepaid_orders.js +78 -78
  114. package/src/models/power_sms_notification.js +26 -26
  115. package/src/models/privacy_policy.js +20 -0
  116. package/src/models/propertyManagerContract.js +556 -556
  117. package/src/models/propertyManagerRevenue.js +195 -195
  118. package/src/models/purchaseOrderInvoice.js +74 -74
  119. package/src/models/purchase_order.js +213 -213
  120. package/src/models/purchase_request.js +110 -110
  121. package/src/models/refresh_token.js +23 -23
  122. package/src/models/reminder.js +197 -197
  123. package/src/models/report.js +13 -13
  124. package/src/models/resident.js +121 -121
  125. package/src/models/rfq_details.js +131 -131
  126. package/src/models/rfq_response.js +153 -153
  127. package/src/models/service_charge_invoice_upload.js +42 -42
  128. package/src/models/service_charge_payments.js +27 -27
  129. package/src/models/servicerequest.js +55 -55
  130. package/src/models/settings.js +62 -62
  131. package/src/models/short_urls.js +21 -21
  132. package/src/models/smart_meter_daily_consumption.js +44 -44
  133. package/src/models/sms_africastalking.js +20 -20
  134. package/src/models/sms_balance_notification.js +26 -26
  135. package/src/models/sms_meliora.js +20 -20
  136. package/src/models/staff.js +36 -36
  137. package/src/models/stocksandspare.js +161 -161
  138. package/src/models/suppliers.js +74 -74
  139. package/src/models/terms_and_conditions.js +20 -0
  140. package/src/models/tickets.js +186 -173
  141. package/src/models/tickets_category.js +72 -72
  142. package/src/models/unitManagementTemplate.js +44 -44
  143. package/src/models/unitasset.js +25 -25
  144. package/src/models/units.js +118 -118
  145. package/src/models/user.js +186 -186
  146. package/src/models/valueaddedservices.js +79 -79
  147. package/src/models/vas_invoices_upload.js +50 -50
  148. package/src/models/vas_payments.js +24 -24
  149. package/src/models/vasinvoice.js +192 -192
  150. package/src/models/vasvendor.js +57 -57
  151. package/src/models/visitLog.js +95 -95
  152. package/src/models/visitor.js +67 -67
  153. package/src/models/waitlist.js +45 -45
  154. package/src/models/wallet.js +44 -44
  155. package/src/models/wallet_transactions.js +50 -50
  156. package/src/models/water_invoice.js +351 -351
  157. package/src/models/water_meter_Command_Queue.js +33 -33
  158. package/src/models/water_meter_account.js +88 -82
  159. package/src/models/water_meter_billing.js +58 -58
  160. package/src/models/water_meter_communication.js +17 -17
  161. package/src/models/water_meter_communication_logs.js +39 -39
  162. package/src/models/water_meter_concentrator.js +70 -70
  163. package/src/models/water_meter_daily_history.js +32 -32
  164. package/src/models/water_meter_high_risk.js +36 -36
  165. package/src/models/water_meter_iot_cards.js +34 -34
  166. package/src/models/water_meter_manufacturer.js +35 -35
  167. package/src/models/water_meter_monthly_history.js +36 -36
  168. package/src/models/water_meter_negative_amounts.js +44 -44
  169. package/src/models/water_meter_settings.js +287 -283
  170. package/src/models/water_meter_single_day_history.js +34 -34
  171. package/src/models/water_meter_size.js +15 -15
  172. package/src/models/water_meters.js +133 -133
  173. package/src/models/water_meters_delivery.js +76 -76
  174. package/src/models/water_prepaid_credit.js +47 -47
  175. package/src/models/water_prepaid_debit.js +50 -50
  176. package/src/models/workorder.js +49 -49
  177. package/src/models/zohoIntegration.js +262 -262
@@ -1,77 +1,77 @@
1
- const mongoose = require('mongoose');
2
-
3
- const agentRoleSchema = new mongoose.Schema({
4
- name: {
5
- type: String,
6
- required: [true, 'Role name is required'],
7
- trim: true,
8
- maxlength: 100
9
- },
10
- code: {
11
- type: String,
12
- required: [true, 'Role code is required'],
13
- trim: true,
14
- lowercase: true,
15
- maxlength: 50
16
- },
17
- description: {
18
- type: String,
19
- trim: true,
20
- maxlength: 500
21
- },
22
- level: {
23
- type: Number,
24
- default: 1,
25
- min: 1,
26
- max: 10,
27
- comment: 'Role hierarchy level (1=lowest, 10=highest)'
28
- },
29
- department: {
30
- type: mongoose.Schema.Types.ObjectId,
31
- ref: 'AgentDepartment',
32
- required: false
33
- },
34
- permissions: [{
35
- type: String,
36
- trim: true
37
- }],
38
- active: {
39
- type: Boolean,
40
- default: true
41
- },
42
- archived_at: {
43
- type: Date
44
- },
45
- archived_by: {
46
- type: mongoose.Schema.Types.ObjectId,
47
- ref: 'User'
48
- },
49
- created_by: {
50
- type: mongoose.Schema.Types.ObjectId,
51
- ref: 'User',
52
- required: true
53
- },
54
- updated_by: {
55
- type: mongoose.Schema.Types.ObjectId,
56
- ref: 'User'
57
- },
58
- created_at: {
59
- type: Date,
60
- default: Date.now
61
- },
62
- updated_at: {
63
- type: Date,
64
- default: Date.now
65
- }
66
- }, {
67
- timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }
68
- });
69
-
70
- // Compound index for unique role code
71
- agentRoleSchema.index({ code: 1 }, { unique: true });
72
- agentRoleSchema.index({ name: 1 });
73
- agentRoleSchema.index({ active: 1 });
74
- agentRoleSchema.index({ level: 1 });
75
- agentRoleSchema.index({ department: 1 });
76
-
77
- module.exports = mongoose.model('AgentRole', agentRoleSchema);
1
+ const mongoose = require('mongoose');
2
+
3
+ const agentRoleSchema = new mongoose.Schema({
4
+ name: {
5
+ type: String,
6
+ required: [true, 'Role name is required'],
7
+ trim: true,
8
+ maxlength: 100
9
+ },
10
+ code: {
11
+ type: String,
12
+ required: [true, 'Role code is required'],
13
+ trim: true,
14
+ lowercase: true,
15
+ maxlength: 50
16
+ },
17
+ description: {
18
+ type: String,
19
+ trim: true,
20
+ maxlength: 500
21
+ },
22
+ level: {
23
+ type: Number,
24
+ default: 1,
25
+ min: 1,
26
+ max: 10,
27
+ comment: 'Role hierarchy level (1=lowest, 10=highest)'
28
+ },
29
+ department: {
30
+ type: mongoose.Schema.Types.ObjectId,
31
+ ref: 'AgentDepartment',
32
+ required: false
33
+ },
34
+ permissions: [{
35
+ type: String,
36
+ trim: true
37
+ }],
38
+ active: {
39
+ type: Boolean,
40
+ default: true
41
+ },
42
+ archived_at: {
43
+ type: Date
44
+ },
45
+ archived_by: {
46
+ type: mongoose.Schema.Types.ObjectId,
47
+ ref: 'User'
48
+ },
49
+ created_by: {
50
+ type: mongoose.Schema.Types.ObjectId,
51
+ ref: 'User',
52
+ required: true
53
+ },
54
+ updated_by: {
55
+ type: mongoose.Schema.Types.ObjectId,
56
+ ref: 'User'
57
+ },
58
+ created_at: {
59
+ type: Date,
60
+ default: Date.now
61
+ },
62
+ updated_at: {
63
+ type: Date,
64
+ default: Date.now
65
+ }
66
+ }, {
67
+ timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }
68
+ });
69
+
70
+ // Compound index for unique role code
71
+ agentRoleSchema.index({ code: 1 }, { unique: true });
72
+ agentRoleSchema.index({ name: 1 });
73
+ agentRoleSchema.index({ active: 1 });
74
+ agentRoleSchema.index({ level: 1 });
75
+ agentRoleSchema.index({ department: 1 });
76
+
77
+ module.exports = mongoose.model('AgentRole', agentRoleSchema);
@@ -1,154 +1,154 @@
1
- const mongoose = require('mongoose');
2
-
3
- // For multitenancy, agents should be on the main database
4
- // Get or create main database connection
5
- const getMainConnection = () => {
6
- // If there's already a main connection, use it
7
- if (mongoose.connections.length > 0 && mongoose.connections[0].name) {
8
- return mongoose.connections[0];
9
- }
10
- // Otherwise use the default connection
11
- return mongoose.connection;
12
- };
13
-
14
- const agentSchema = new mongoose.Schema({
15
- user_id: {
16
- type: mongoose.Schema.Types.ObjectId,
17
- ref: 'User',
18
- required: true
19
- },
20
- agent_id: {
21
- type: String,
22
- required: true,
23
- unique: true,
24
- trim: true
25
- },
26
- name: {
27
- type: String,
28
- trim: true
29
- },
30
- email: {
31
- type: String,
32
- trim: true
33
- },
34
- phone: {
35
- type: String,
36
- trim: true
37
- },
38
- id_number: {
39
- type: String,
40
- trim: true
41
- },
42
- role: {
43
- type: String,
44
- required: [true, 'Role is required'],
45
- trim: true
46
- },
47
- department: {
48
- type: String,
49
- required: [true, 'Department is required'],
50
- trim: true
51
- },
52
- team_id: {
53
- type: String,
54
- trim: true
55
- },
56
- facility_id: {
57
- type: mongoose.Schema.Types.ObjectId,
58
- ref: 'Facility'
59
- },
60
- status: {
61
- type: String,
62
- enum: ['active', 'inactive', 'on_break', 'offline', 'suspended', 'terminated'],
63
- default: 'active'
64
- },
65
- suspended_at: {
66
- type: Date
67
- },
68
- suspended_by: {
69
- type: mongoose.Schema.Types.ObjectId,
70
- ref: 'User'
71
- },
72
- suspended_reason: {
73
- type: String,
74
- trim: true
75
- },
76
- terminated_at: {
77
- type: Date
78
- },
79
- terminated_by: {
80
- type: mongoose.Schema.Types.ObjectId,
81
- ref: 'User'
82
- },
83
- terminated_reason: {
84
- type: String,
85
- trim: true
86
- },
87
- is_available: {
88
- type: Boolean,
89
- default: false
90
- },
91
- skills: [{
92
- type: String,
93
- trim: true
94
- }],
95
- languages: [{
96
- type: String,
97
- trim: true
98
- }],
99
- max_concurrent_tickets: {
100
- type: Number,
101
- default: 5,
102
- min: 1
103
- },
104
- current_ticket_count: {
105
- type: Number,
106
- default: 0,
107
- min: 0
108
- },
109
- permissions: {
110
- type: mongoose.Schema.Types.Mixed,
111
- default: {}
112
- },
113
- profile_image: {
114
- type: String,
115
- required: false,
116
- default: null
117
- },
118
- role_history: [{
119
- previous_role: String,
120
- new_role: String,
121
- changed_by: {
122
- type: mongoose.Schema.Types.ObjectId,
123
- ref: 'User'
124
- },
125
- changed_at: {
126
- type: Date,
127
- default: Date.now
128
- },
129
- reason: String
130
- }],
131
- created_at: {
132
- type: Date,
133
- default: Date.now
134
- },
135
- updated_at: {
136
- type: Date,
137
- default: Date.now
138
- }
139
- }, {
140
- timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }
141
- });
142
-
143
- // Static method to generate agent ID
144
- agentSchema.statics.generateAgentId = function() {
145
- const randomNum = Math.floor(100000 + Math.random() * 900000); // 6 digit number
146
- return `PS25${randomNum}`;
147
- };
148
-
149
- agentSchema.index({ user_id: 1 });
150
- agentSchema.index({ agent_id: 1 });
151
- agentSchema.index({ status: 1, is_available: 1 });
152
- agentSchema.index({ team_id: 1 });
153
-
154
- module.exports = mongoose.model('Agent', agentSchema);
1
+ const mongoose = require('mongoose');
2
+
3
+ // For multitenancy, agents should be on the main database
4
+ // Get or create main database connection
5
+ const getMainConnection = () => {
6
+ // If there's already a main connection, use it
7
+ if (mongoose.connections.length > 0 && mongoose.connections[0].name) {
8
+ return mongoose.connections[0];
9
+ }
10
+ // Otherwise use the default connection
11
+ return mongoose.connection;
12
+ };
13
+
14
+ const agentSchema = new mongoose.Schema({
15
+ user_id: {
16
+ type: mongoose.Schema.Types.ObjectId,
17
+ ref: 'User',
18
+ required: true
19
+ },
20
+ agent_id: {
21
+ type: String,
22
+ required: true,
23
+ unique: true,
24
+ trim: true
25
+ },
26
+ name: {
27
+ type: String,
28
+ trim: true
29
+ },
30
+ email: {
31
+ type: String,
32
+ trim: true
33
+ },
34
+ phone: {
35
+ type: String,
36
+ trim: true
37
+ },
38
+ id_number: {
39
+ type: String,
40
+ trim: true
41
+ },
42
+ role: {
43
+ type: String,
44
+ required: [true, 'Role is required'],
45
+ trim: true
46
+ },
47
+ department: {
48
+ type: String,
49
+ required: [true, 'Department is required'],
50
+ trim: true
51
+ },
52
+ team_id: {
53
+ type: String,
54
+ trim: true
55
+ },
56
+ facility_id: {
57
+ type: mongoose.Schema.Types.ObjectId,
58
+ ref: 'Facility'
59
+ },
60
+ status: {
61
+ type: String,
62
+ enum: ['active', 'inactive', 'on_break', 'offline', 'suspended', 'terminated'],
63
+ default: 'active'
64
+ },
65
+ suspended_at: {
66
+ type: Date
67
+ },
68
+ suspended_by: {
69
+ type: mongoose.Schema.Types.ObjectId,
70
+ ref: 'User'
71
+ },
72
+ suspended_reason: {
73
+ type: String,
74
+ trim: true
75
+ },
76
+ terminated_at: {
77
+ type: Date
78
+ },
79
+ terminated_by: {
80
+ type: mongoose.Schema.Types.ObjectId,
81
+ ref: 'User'
82
+ },
83
+ terminated_reason: {
84
+ type: String,
85
+ trim: true
86
+ },
87
+ is_available: {
88
+ type: Boolean,
89
+ default: false
90
+ },
91
+ skills: [{
92
+ type: String,
93
+ trim: true
94
+ }],
95
+ languages: [{
96
+ type: String,
97
+ trim: true
98
+ }],
99
+ max_concurrent_tickets: {
100
+ type: Number,
101
+ default: 5,
102
+ min: 1
103
+ },
104
+ current_ticket_count: {
105
+ type: Number,
106
+ default: 0,
107
+ min: 0
108
+ },
109
+ permissions: {
110
+ type: mongoose.Schema.Types.Mixed,
111
+ default: {}
112
+ },
113
+ profile_image: {
114
+ type: String,
115
+ required: false,
116
+ default: null
117
+ },
118
+ role_history: [{
119
+ previous_role: String,
120
+ new_role: String,
121
+ changed_by: {
122
+ type: mongoose.Schema.Types.ObjectId,
123
+ ref: 'User'
124
+ },
125
+ changed_at: {
126
+ type: Date,
127
+ default: Date.now
128
+ },
129
+ reason: String
130
+ }],
131
+ created_at: {
132
+ type: Date,
133
+ default: Date.now
134
+ },
135
+ updated_at: {
136
+ type: Date,
137
+ default: Date.now
138
+ }
139
+ }, {
140
+ timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }
141
+ });
142
+
143
+ // Static method to generate agent ID
144
+ agentSchema.statics.generateAgentId = function() {
145
+ const randomNum = Math.floor(100000 + Math.random() * 900000); // 6 digit number
146
+ return `PS25${randomNum}`;
147
+ };
148
+
149
+ agentSchema.index({ user_id: 1 });
150
+ agentSchema.index({ agent_id: 1 });
151
+ agentSchema.index({ status: 1, is_available: 1 });
152
+ agentSchema.index({ team_id: 1 });
153
+
154
+ module.exports = mongoose.model('Agent', agentSchema);
@@ -1,18 +1,18 @@
1
- // models/apiLog.js
2
- const mongoose = require('mongoose');
3
- const { Schema } = mongoose;
4
-
5
- const apiLogSchema = new Schema({
6
- url: { type: String, required: true, index: true },
7
- method: { type: String, required: true, index: true },
8
- duration: { type: Number, required: true },
9
- time: { type: Date, default: Date.now, required: true, index: true },
10
- date: { type: String, required: true, index: true },
11
- });
12
-
13
-
14
- apiLogSchema.index({ time: 1 }, { expireAfterSeconds: 60 * 60 * 24 * 365 });
15
-
16
- const ApiLog = mongoose.model('ApiLog', apiLogSchema);
17
-
18
- module.exports = ApiLog;
1
+ // models/apiLog.js
2
+ const mongoose = require('mongoose');
3
+ const { Schema } = mongoose;
4
+
5
+ const apiLogSchema = new Schema({
6
+ url: { type: String, required: true, index: true },
7
+ method: { type: String, required: true, index: true },
8
+ duration: { type: Number, required: true },
9
+ time: { type: Date, default: Date.now, required: true, index: true },
10
+ date: { type: String, required: true, index: true },
11
+ });
12
+
13
+
14
+ apiLogSchema.index({ time: 1 }, { expireAfterSeconds: 60 * 60 * 24 * 365 });
15
+
16
+ const ApiLog = mongoose.model('ApiLog', apiLogSchema);
17
+
18
+ module.exports = ApiLog;
@@ -1,49 +1,49 @@
1
- const mongoose = require('mongoose');
2
-
3
- const approvalWorkflowSchema = new mongoose.Schema(
4
- {
5
- module: {
6
- type: String,
7
- required: true,
8
- trim: true
9
- },
10
- facilityId: {
11
- type: mongoose.Schema.Types.ObjectId,
12
- ref: 'Facility',
13
- required: true,
14
- index: true
15
- },
16
-
17
- steps: {
18
- type: [
19
- {
20
- stepNumber: {
21
- type: Number,
22
- required: true,
23
- min: 1
24
- },
25
- name: {
26
- type: String,
27
- required: true,
28
- trim: true
29
- },
30
- approvers: [
31
- {
32
- type: mongoose.Schema.Types.ObjectId,
33
- ref: 'User',
34
- required: true
35
- }
36
- ]
37
- }
38
- ],
39
- default: []
40
- }
41
- },
42
- {
43
- timestamps: true
44
- }
45
- );
46
-
47
- const ApprovalWorkflow = mongoose.model('ApprovalWorkflow', approvalWorkflowSchema);
48
-
49
- module.exports = ApprovalWorkflow;
1
+ const mongoose = require('mongoose');
2
+
3
+ const approvalWorkflowSchema = new mongoose.Schema(
4
+ {
5
+ module: {
6
+ type: String,
7
+ required: true,
8
+ trim: true
9
+ },
10
+ facilityId: {
11
+ type: mongoose.Schema.Types.ObjectId,
12
+ ref: 'Facility',
13
+ required: true,
14
+ index: true
15
+ },
16
+
17
+ steps: {
18
+ type: [
19
+ {
20
+ stepNumber: {
21
+ type: Number,
22
+ required: true,
23
+ min: 1
24
+ },
25
+ name: {
26
+ type: String,
27
+ required: true,
28
+ trim: true
29
+ },
30
+ approvers: [
31
+ {
32
+ type: mongoose.Schema.Types.ObjectId,
33
+ ref: 'User',
34
+ required: true
35
+ }
36
+ ]
37
+ }
38
+ ],
39
+ default: []
40
+ }
41
+ },
42
+ {
43
+ timestamps: true
44
+ }
45
+ );
46
+
47
+ const ApprovalWorkflow = mongoose.model('ApprovalWorkflow', approvalWorkflowSchema);
48
+
49
+ module.exports = ApprovalWorkflow;
@@ -1,18 +1,18 @@
1
-
2
- const mongoose = require('mongoose');
3
- const { Schema } = mongoose;
4
-
5
- const ArchivedApiLogSchema = new Schema({
6
- url: { type: String, required: true, index: true },
7
- method: { type: String, required: true, enum: ['GET', 'POST', 'PUT', 'DELETE'], index: true },
8
- duration: { type: Number, required: true },
9
- time: { type: Date, default: Date.now, required: true, index: true },
10
- date: { type: String, required: true, index: true },
11
- });
12
-
13
-
14
- ArchivedApiLogSchema.index({ time: 1 }, { expireAfterSeconds: 60 * 60 * 24 * 365 });
15
-
16
- const ArchivedApiLog = mongoose.model('ArchivedApiLog', ArchivedApiLogSchema);
17
-
18
- module.exports = ArchivedApiLog;
1
+
2
+ const mongoose = require('mongoose');
3
+ const { Schema } = mongoose;
4
+
5
+ const ArchivedApiLogSchema = new Schema({
6
+ url: { type: String, required: true, index: true },
7
+ method: { type: String, required: true, enum: ['GET', 'POST', 'PUT', 'DELETE'], index: true },
8
+ duration: { type: Number, required: true },
9
+ time: { type: Date, default: Date.now, required: true, index: true },
10
+ date: { type: String, required: true, index: true },
11
+ });
12
+
13
+
14
+ ArchivedApiLogSchema.index({ time: 1 }, { expireAfterSeconds: 60 * 60 * 24 * 365 });
15
+
16
+ const ArchivedApiLog = mongoose.model('ArchivedApiLog', ArchivedApiLogSchema);
17
+
18
+ module.exports = ArchivedApiLog;