payservedb 6.2.3 → 6.2.4

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 (134) hide show
  1. package/.env +2 -2
  2. package/index.js +270 -270
  3. package/package.json +17 -17
  4. package/src/models/account.js +35 -35
  5. package/src/models/apilog.js +18 -18
  6. package/src/models/approvalsWorkflows.js +49 -49
  7. package/src/models/archivedapilog.js +18 -18
  8. package/src/models/archivedauditlog.js +83 -83
  9. package/src/models/asset.js +34 -34
  10. package/src/models/assetsAssignment.js +64 -64
  11. package/src/models/auditlog.js +83 -83
  12. package/src/models/bankdetails.js +40 -40
  13. package/src/models/billerAddress.js +119 -119
  14. package/src/models/booking_invoice.js +151 -151
  15. package/src/models/bookinganalytics.js +63 -63
  16. package/src/models/bookingconfig.js +45 -45
  17. package/src/models/bookingproperty.js +112 -112
  18. package/src/models/bookingreservation.js +192 -192
  19. package/src/models/bookingrevenuerecord.js +84 -84
  20. package/src/models/budget.js +95 -95
  21. package/src/models/budgetCategory.js +19 -19
  22. package/src/models/campaigns.js +72 -72
  23. package/src/models/cashpayment.js +264 -264
  24. package/src/models/combinedUnits.js +62 -62
  25. package/src/models/common_area_electricity.js +38 -38
  26. package/src/models/common_area_generator.js +41 -41
  27. package/src/models/common_area_utility_alert.js +37 -37
  28. package/src/models/common_area_water.js +39 -39
  29. package/src/models/communication_status.js +33 -33
  30. package/src/models/company.js +53 -53
  31. package/src/models/country_tax.js +42 -42
  32. package/src/models/currency_settings.js +39 -39
  33. package/src/models/customer.js +208 -208
  34. package/src/models/default_payment_details.js +17 -17
  35. package/src/models/deliveryTimeMarks.js +18 -18
  36. package/src/models/dutyroster.js +107 -107
  37. package/src/models/email.js +37 -37
  38. package/src/models/email_sms_queue.js +61 -61
  39. package/src/models/entry_exit.js +53 -53
  40. package/src/models/expense.js +99 -99
  41. package/src/models/expense_category.js +45 -45
  42. package/src/models/facility.js +61 -61
  43. package/src/models/facilityWalletTransactionsMetadata.js +68 -68
  44. package/src/models/facility_departements.js +20 -20
  45. package/src/models/facility_payment_details.js +20 -20
  46. package/src/models/facilityasset.js +25 -25
  47. package/src/models/faq.js +18 -18
  48. package/src/models/gl_account_double_entries.js +25 -25
  49. package/src/models/gl_accounts.js +56 -56
  50. package/src/models/gl_entries.js +49 -49
  51. package/src/models/goodsReceivedNotes.js +115 -115
  52. package/src/models/guard.js +47 -47
  53. package/src/models/handover.js +246 -246
  54. package/src/models/invoice.js +336 -336
  55. package/src/models/item_inspection.js +67 -67
  56. package/src/models/leaseagreement.js +221 -221
  57. package/src/models/leasetemplate.js +17 -17
  58. package/src/models/levy.js +206 -206
  59. package/src/models/levy_invoice_settings.js +26 -26
  60. package/src/models/levycontract.js +117 -117
  61. package/src/models/levytype.js +23 -23
  62. package/src/models/maintenance_service_vendor.js +38 -38
  63. package/src/models/maintenance_services.js +17 -17
  64. package/src/models/maintenancerequisition.js +31 -31
  65. package/src/models/message.js +38 -38
  66. package/src/models/module.js +21 -21
  67. package/src/models/notification.js +44 -44
  68. package/src/models/paymentTermsMarks.js +19 -19
  69. package/src/models/penalty.js +76 -76
  70. package/src/models/pendingCredentials.js +32 -32
  71. package/src/models/powerMeterCustomerAccount.js +78 -78
  72. package/src/models/powerMeterCustomerBand.js +14 -14
  73. package/src/models/powerMeterDailyReading.js +30 -30
  74. package/src/models/powerMeterMonthlyReading.js +34 -34
  75. package/src/models/powerMeterPowerCharges.js +53 -53
  76. package/src/models/powerMeterSettings.js +138 -138
  77. package/src/models/powerMeterSingleDayReading.js +32 -32
  78. package/src/models/powerMeters.js +65 -65
  79. package/src/models/powerMetersManufacturer.js +14 -14
  80. package/src/models/propertyManagerContract.js +556 -556
  81. package/src/models/propertyManagerRevenue.js +195 -195
  82. package/src/models/purchaseOrderInvoice.js +74 -74
  83. package/src/models/purchase_order.js +202 -202
  84. package/src/models/purchase_request.js +110 -110
  85. package/src/models/refresh_token.js +23 -23
  86. package/src/models/reminder.js +197 -197
  87. package/src/models/report.js +13 -13
  88. package/src/models/resident.js +121 -121
  89. package/src/models/rfq_details.js +131 -131
  90. package/src/models/rfq_response.js +153 -153
  91. package/src/models/service_charge_invoice_upload.js +42 -42
  92. package/src/models/service_charge_payments.js +27 -27
  93. package/src/models/servicerequest.js +55 -55
  94. package/src/models/settings.js +62 -62
  95. package/src/models/smart_meter_daily_consumption.js +44 -44
  96. package/src/models/sms_africastalking.js +20 -20
  97. package/src/models/sms_meliora.js +20 -20
  98. package/src/models/staff.js +36 -36
  99. package/src/models/stocksandspare.js +34 -34
  100. package/src/models/suppliers.js +74 -74
  101. package/src/models/tickets.js +121 -121
  102. package/src/models/unitManagementTemplate.js +44 -44
  103. package/src/models/unitasset.js +25 -25
  104. package/src/models/units.js +112 -112
  105. package/src/models/user.js +186 -186
  106. package/src/models/valueaddedservices.js +79 -79
  107. package/src/models/vas_invoices_upload.js +50 -50
  108. package/src/models/vas_payments.js +24 -24
  109. package/src/models/vasinvoice.js +192 -192
  110. package/src/models/vasvendor.js +57 -57
  111. package/src/models/visitLog.js +86 -86
  112. package/src/models/visitor.js +67 -67
  113. package/src/models/waitlist.js +45 -45
  114. package/src/models/wallet.js +44 -39
  115. package/src/models/wallet_transactions.js +50 -50
  116. package/src/models/water_invoice.js +193 -193
  117. package/src/models/water_meter_Command_Queue.js +33 -33
  118. package/src/models/water_meter_account.js +78 -78
  119. package/src/models/water_meter_billing.js +58 -58
  120. package/src/models/water_meter_communication.js +17 -17
  121. package/src/models/water_meter_communication_logs.js +30 -30
  122. package/src/models/water_meter_concentrator.js +66 -66
  123. package/src/models/water_meter_daily_history.js +32 -32
  124. package/src/models/water_meter_iot_cards.js +34 -34
  125. package/src/models/water_meter_manufacturer.js +35 -35
  126. package/src/models/water_meter_monthly_history.js +36 -36
  127. package/src/models/water_meter_settings.js +114 -114
  128. package/src/models/water_meter_single_day_history.js +34 -34
  129. package/src/models/water_meter_size.js +15 -15
  130. package/src/models/water_meters.js +117 -117
  131. package/src/models/water_meters_delivery.js +76 -76
  132. package/src/models/water_prepaid_credit.js +43 -43
  133. package/src/models/water_prepaid_debit.js +50 -50
  134. package/src/models/workorder.js +49 -49
@@ -1,265 +1,265 @@
1
- const mongoose = require('mongoose');
2
-
3
- const cashPaymentSchema = new mongoose.Schema(
4
- {
5
- paymentReference: {
6
- type: String,
7
- required: true,
8
- unique: true,
9
- trim: true
10
- },
11
- receiptNumber: {
12
- type: String,
13
- required: true,
14
- unique: true,
15
- trim: true
16
- },
17
- invoice: {
18
- invoiceId: {
19
- type: mongoose.Schema.Types.ObjectId,
20
- ref: "Invoice",
21
- required: true
22
- },
23
- invoiceNumber: {
24
- type: String,
25
- required: true,
26
- trim: true
27
- },
28
- accountNumber: {
29
- type: String,
30
- trim: true
31
- }
32
- },
33
- client: {
34
- clientId: {
35
- type: mongoose.Schema.Types.ObjectId,
36
- ref: "Customer",
37
- required: true
38
- },
39
- firstName: {
40
- type: String,
41
- required: true,
42
- trim: true
43
- },
44
- lastName: {
45
- type: String,
46
- required: true,
47
- trim: true
48
- }
49
- },
50
- facility: {
51
- id: {
52
- type: mongoose.Schema.Types.ObjectId,
53
- ref: "Facility",
54
- required: true
55
- },
56
- name: {
57
- type: String,
58
- required: true,
59
- trim: true
60
- }
61
- },
62
- currency: {
63
- id: {
64
- type: mongoose.Schema.Types.ObjectId,
65
- ref: "Currency",
66
- required: true
67
- },
68
- name: {
69
- type: String,
70
- required: true,
71
- trim: true
72
- },
73
- code: {
74
- type: String,
75
- required: true,
76
- uppercase: true,
77
- minlength: 3,
78
- maxlength: 3
79
- }
80
- },
81
- paymentAmount: {
82
- type: Number,
83
- required: true,
84
- min: 0
85
- },
86
- paymentDate: {
87
- type: Date,
88
- required: true,
89
- default: Date.now
90
- },
91
- paymentMethod: {
92
- type: String,
93
- enum: ['cash', 'bank-transfer', 'cheque'],
94
- default: 'cash'
95
- },
96
- exchangeRate: {
97
- rate: {
98
- type: Number,
99
- default: 1
100
- },
101
- sourceCurrency: {
102
- type: String,
103
- uppercase: true,
104
- minlength: 3,
105
- maxlength: 3
106
- },
107
- targetCurrency: {
108
- type: String,
109
- uppercase: true,
110
- minlength: 3,
111
- maxlength: 3
112
- },
113
- conversionDate: Date
114
- },
115
- approvalStatus: {
116
- type: String,
117
- enum: ['Pending', 'Approved', 'Rejected'],
118
- default: 'Pending'
119
- },
120
- approvedBy: {
121
- userId: mongoose.Schema.Types.ObjectId,
122
- name: String,
123
- approvalDate: Date,
124
- comments: String
125
- },
126
- rejectedBy: {
127
- userId: mongoose.Schema.Types.ObjectId,
128
- name: String,
129
- rejectionDate: Date,
130
- reason: String
131
- },
132
- isVoided: {
133
- type: Boolean,
134
- default: false
135
- },
136
- voidedBy: {
137
- userId: mongoose.Schema.Types.ObjectId,
138
- name: String,
139
- voidDate: Date,
140
- reason: String
141
- },
142
- reconciliationStatus: {
143
- type: String,
144
- enum: ['Pending', 'Matched', 'Partial', 'Overpaid', 'Error'],
145
- default: 'Pending'
146
- },
147
- reconciliationDetails: {
148
- appliedAmount: Number,
149
- overpayAmount: {
150
- type: Number,
151
- default: 0
152
- },
153
- reconciliationDate: Date,
154
- reconciledBy: mongoose.Schema.Types.ObjectId,
155
- paymentMethod: String, // To store the payment method used during reconciliation
156
- notes: String
157
- },
158
- paymentNotes: String,
159
- attachments: [
160
- {
161
- fileId: mongoose.Schema.Types.ObjectId,
162
- fileName: String,
163
- fileType: String,
164
- filePath: String,
165
- uploadDate: Date,
166
- uploadedBy: mongoose.Schema.Types.ObjectId,
167
- size: Number,
168
- originalName: String
169
- }
170
- ],
171
- metadata: {
172
- createdBy: {
173
- type: mongoose.Schema.Types.ObjectId,
174
- required: true
175
- },
176
- source: {
177
- type: String,
178
- enum: ['manual', 'api', 'import', 'mobile'],
179
- default: 'manual'
180
- },
181
- deviceInfo: {
182
- deviceId: String,
183
- deviceType: String,
184
- ipAddress: String
185
- }
186
- }
187
- },
188
- {
189
- timestamps: true
190
- }
191
- );
192
-
193
- // Add indexes for frequently queried fields
194
- cashPaymentSchema.index({ 'paymentReference': 1 });
195
- cashPaymentSchema.index({ 'receiptNumber': 1 });
196
- cashPaymentSchema.index({ 'approvalStatus': 1 });
197
- cashPaymentSchema.index({ 'isVoided': 1 });
198
- cashPaymentSchema.index({ 'client.clientId': 1 });
199
- cashPaymentSchema.index({ 'invoice.invoiceId': 1 });
200
- cashPaymentSchema.index({ 'facility.id': 1 });
201
- cashPaymentSchema.index({ 'reconciliationStatus': 1 });
202
- cashPaymentSchema.index({ 'paymentDate': -1 });
203
- cashPaymentSchema.index({ 'currency.code': 1 });
204
- cashPaymentSchema.index({ 'paymentMethod': 1 });
205
- cashPaymentSchema.index({ 'paymentDate': -1, 'approvalStatus': 1 });
206
- cashPaymentSchema.index({ 'client.clientId': 1, 'approvalStatus': 1 });
207
-
208
- // // Add virtual properties
209
- // cashPaymentSchema.virtual('clientFullName').get(function () {
210
- // return ${ this.client.firstName } ${ this.client.lastName };
211
- // });
212
- // Add instance methods
213
- cashPaymentSchema.methods.convertCurrency = function (targetCurrencyCode, exchangeRate) {
214
- if (this.currency.code === targetCurrencyCode) {
215
- return this.paymentAmount;
216
- }
217
- return this.paymentAmount * exchangeRate;
218
- };
219
-
220
- // Static methods
221
- cashPaymentSchema.statics.findByClientId = function (clientId) {
222
- return this.find({ 'client.clientId': clientId }).sort({ paymentDate: -1 });
223
- };
224
-
225
- cashPaymentSchema.statics.findByInvoiceId = function (invoiceId) {
226
- return this.find({ 'invoice.invoiceId': invoiceId }).sort({ paymentDate: -1 });
227
- };
228
-
229
- cashPaymentSchema.statics.findPendingPayments = function (facilityId) {
230
- return this.find({
231
- 'facility.id': facilityId,
232
- 'approvalStatus': 'Pending',
233
- 'isVoided': false
234
- }).sort({ paymentDate: -1 });
235
- };
236
-
237
- cashPaymentSchema.statics.findOverpaidPayments = function (facilityId) {
238
- return this.find({
239
- 'facility.id': facilityId,
240
- 'approvalStatus': 'Approved',
241
- 'reconciliationStatus': 'Overpaid',
242
- 'isVoided': false
243
- }).sort({ paymentDate: -1 });
244
- };
245
-
246
- // Pre-save middleware
247
- cashPaymentSchema.pre('save', function (next) {
248
- // If the payment is approved, ensure the reconciliation status is set
249
- if (this.isModified('approvalStatus') && this.approvalStatus === 'Approved' && this.reconciliationStatus === 'Pending') {
250
- this.reconciliationStatus = 'Matched'; // Default status when approved
251
- }
252
-
253
- // If the payment is voided, clear certain fields
254
- if (this.isModified('isVoided') && this.isVoided) {
255
- this.approvalStatus = 'Pending';
256
- this.reconciliationStatus = 'Pending';
257
- }
258
-
259
- next();
260
- });
261
-
262
- // Create model (only if not already defined by getModel utility)
263
- const CashPayment = mongoose.models.CashPayment || mongoose.model('CashPayment', cashPaymentSchema);
264
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const cashPaymentSchema = new mongoose.Schema(
4
+ {
5
+ paymentReference: {
6
+ type: String,
7
+ required: true,
8
+ unique: true,
9
+ trim: true
10
+ },
11
+ receiptNumber: {
12
+ type: String,
13
+ required: true,
14
+ unique: true,
15
+ trim: true
16
+ },
17
+ invoice: {
18
+ invoiceId: {
19
+ type: mongoose.Schema.Types.ObjectId,
20
+ ref: "Invoice",
21
+ required: true
22
+ },
23
+ invoiceNumber: {
24
+ type: String,
25
+ required: true,
26
+ trim: true
27
+ },
28
+ accountNumber: {
29
+ type: String,
30
+ trim: true
31
+ }
32
+ },
33
+ client: {
34
+ clientId: {
35
+ type: mongoose.Schema.Types.ObjectId,
36
+ ref: "Customer",
37
+ required: true
38
+ },
39
+ firstName: {
40
+ type: String,
41
+ required: true,
42
+ trim: true
43
+ },
44
+ lastName: {
45
+ type: String,
46
+ required: true,
47
+ trim: true
48
+ }
49
+ },
50
+ facility: {
51
+ id: {
52
+ type: mongoose.Schema.Types.ObjectId,
53
+ ref: "Facility",
54
+ required: true
55
+ },
56
+ name: {
57
+ type: String,
58
+ required: true,
59
+ trim: true
60
+ }
61
+ },
62
+ currency: {
63
+ id: {
64
+ type: mongoose.Schema.Types.ObjectId,
65
+ ref: "Currency",
66
+ required: true
67
+ },
68
+ name: {
69
+ type: String,
70
+ required: true,
71
+ trim: true
72
+ },
73
+ code: {
74
+ type: String,
75
+ required: true,
76
+ uppercase: true,
77
+ minlength: 3,
78
+ maxlength: 3
79
+ }
80
+ },
81
+ paymentAmount: {
82
+ type: Number,
83
+ required: true,
84
+ min: 0
85
+ },
86
+ paymentDate: {
87
+ type: Date,
88
+ required: true,
89
+ default: Date.now
90
+ },
91
+ paymentMethod: {
92
+ type: String,
93
+ enum: ['cash', 'bank-transfer', 'cheque'],
94
+ default: 'cash'
95
+ },
96
+ exchangeRate: {
97
+ rate: {
98
+ type: Number,
99
+ default: 1
100
+ },
101
+ sourceCurrency: {
102
+ type: String,
103
+ uppercase: true,
104
+ minlength: 3,
105
+ maxlength: 3
106
+ },
107
+ targetCurrency: {
108
+ type: String,
109
+ uppercase: true,
110
+ minlength: 3,
111
+ maxlength: 3
112
+ },
113
+ conversionDate: Date
114
+ },
115
+ approvalStatus: {
116
+ type: String,
117
+ enum: ['Pending', 'Approved', 'Rejected'],
118
+ default: 'Pending'
119
+ },
120
+ approvedBy: {
121
+ userId: mongoose.Schema.Types.ObjectId,
122
+ name: String,
123
+ approvalDate: Date,
124
+ comments: String
125
+ },
126
+ rejectedBy: {
127
+ userId: mongoose.Schema.Types.ObjectId,
128
+ name: String,
129
+ rejectionDate: Date,
130
+ reason: String
131
+ },
132
+ isVoided: {
133
+ type: Boolean,
134
+ default: false
135
+ },
136
+ voidedBy: {
137
+ userId: mongoose.Schema.Types.ObjectId,
138
+ name: String,
139
+ voidDate: Date,
140
+ reason: String
141
+ },
142
+ reconciliationStatus: {
143
+ type: String,
144
+ enum: ['Pending', 'Matched', 'Partial', 'Overpaid', 'Error'],
145
+ default: 'Pending'
146
+ },
147
+ reconciliationDetails: {
148
+ appliedAmount: Number,
149
+ overpayAmount: {
150
+ type: Number,
151
+ default: 0
152
+ },
153
+ reconciliationDate: Date,
154
+ reconciledBy: mongoose.Schema.Types.ObjectId,
155
+ paymentMethod: String, // To store the payment method used during reconciliation
156
+ notes: String
157
+ },
158
+ paymentNotes: String,
159
+ attachments: [
160
+ {
161
+ fileId: mongoose.Schema.Types.ObjectId,
162
+ fileName: String,
163
+ fileType: String,
164
+ filePath: String,
165
+ uploadDate: Date,
166
+ uploadedBy: mongoose.Schema.Types.ObjectId,
167
+ size: Number,
168
+ originalName: String
169
+ }
170
+ ],
171
+ metadata: {
172
+ createdBy: {
173
+ type: mongoose.Schema.Types.ObjectId,
174
+ required: true
175
+ },
176
+ source: {
177
+ type: String,
178
+ enum: ['manual', 'api', 'import', 'mobile'],
179
+ default: 'manual'
180
+ },
181
+ deviceInfo: {
182
+ deviceId: String,
183
+ deviceType: String,
184
+ ipAddress: String
185
+ }
186
+ }
187
+ },
188
+ {
189
+ timestamps: true
190
+ }
191
+ );
192
+
193
+ // Add indexes for frequently queried fields
194
+ cashPaymentSchema.index({ 'paymentReference': 1 });
195
+ cashPaymentSchema.index({ 'receiptNumber': 1 });
196
+ cashPaymentSchema.index({ 'approvalStatus': 1 });
197
+ cashPaymentSchema.index({ 'isVoided': 1 });
198
+ cashPaymentSchema.index({ 'client.clientId': 1 });
199
+ cashPaymentSchema.index({ 'invoice.invoiceId': 1 });
200
+ cashPaymentSchema.index({ 'facility.id': 1 });
201
+ cashPaymentSchema.index({ 'reconciliationStatus': 1 });
202
+ cashPaymentSchema.index({ 'paymentDate': -1 });
203
+ cashPaymentSchema.index({ 'currency.code': 1 });
204
+ cashPaymentSchema.index({ 'paymentMethod': 1 });
205
+ cashPaymentSchema.index({ 'paymentDate': -1, 'approvalStatus': 1 });
206
+ cashPaymentSchema.index({ 'client.clientId': 1, 'approvalStatus': 1 });
207
+
208
+ // // Add virtual properties
209
+ // cashPaymentSchema.virtual('clientFullName').get(function () {
210
+ // return ${ this.client.firstName } ${ this.client.lastName };
211
+ // });
212
+ // Add instance methods
213
+ cashPaymentSchema.methods.convertCurrency = function (targetCurrencyCode, exchangeRate) {
214
+ if (this.currency.code === targetCurrencyCode) {
215
+ return this.paymentAmount;
216
+ }
217
+ return this.paymentAmount * exchangeRate;
218
+ };
219
+
220
+ // Static methods
221
+ cashPaymentSchema.statics.findByClientId = function (clientId) {
222
+ return this.find({ 'client.clientId': clientId }).sort({ paymentDate: -1 });
223
+ };
224
+
225
+ cashPaymentSchema.statics.findByInvoiceId = function (invoiceId) {
226
+ return this.find({ 'invoice.invoiceId': invoiceId }).sort({ paymentDate: -1 });
227
+ };
228
+
229
+ cashPaymentSchema.statics.findPendingPayments = function (facilityId) {
230
+ return this.find({
231
+ 'facility.id': facilityId,
232
+ 'approvalStatus': 'Pending',
233
+ 'isVoided': false
234
+ }).sort({ paymentDate: -1 });
235
+ };
236
+
237
+ cashPaymentSchema.statics.findOverpaidPayments = function (facilityId) {
238
+ return this.find({
239
+ 'facility.id': facilityId,
240
+ 'approvalStatus': 'Approved',
241
+ 'reconciliationStatus': 'Overpaid',
242
+ 'isVoided': false
243
+ }).sort({ paymentDate: -1 });
244
+ };
245
+
246
+ // Pre-save middleware
247
+ cashPaymentSchema.pre('save', function (next) {
248
+ // If the payment is approved, ensure the reconciliation status is set
249
+ if (this.isModified('approvalStatus') && this.approvalStatus === 'Approved' && this.reconciliationStatus === 'Pending') {
250
+ this.reconciliationStatus = 'Matched'; // Default status when approved
251
+ }
252
+
253
+ // If the payment is voided, clear certain fields
254
+ if (this.isModified('isVoided') && this.isVoided) {
255
+ this.approvalStatus = 'Pending';
256
+ this.reconciliationStatus = 'Pending';
257
+ }
258
+
259
+ next();
260
+ });
261
+
262
+ // Create model (only if not already defined by getModel utility)
263
+ const CashPayment = mongoose.models.CashPayment || mongoose.model('CashPayment', cashPaymentSchema);
264
+
265
265
  module.exports = CashPayment;
@@ -1,62 +1,62 @@
1
- const mongoose = require('mongoose');
2
-
3
- // Define the schema for companies
4
- const combinedUnitSchema = new mongoose.Schema({
5
- combinedUnitName: {
6
- type: String,
7
- required: true
8
- },
9
- combinedDivision:{
10
- type:String,
11
- required:true
12
- },
13
- combinedUnitType:{
14
- type:String,
15
- required:true
16
- },
17
- combinedFloorUnit:{
18
- type:String,
19
- required:true
20
- },
21
- combinedLettableFloorArea:{
22
- type:String,
23
- required:false
24
- },
25
- combinedLRNumber:{
26
- type:String,
27
- required:true
28
- },
29
- combinedGrossArea:{
30
- type:Number,
31
- required:false
32
- },
33
- combinedNetLettableArea:{
34
- type:Number,
35
- required:false
36
- },
37
- combinedReason:{
38
- type:String,
39
- required:false
40
- },
41
- status:{
42
- type:String,
43
- required:true
44
- },
45
- selectedCombinedUnits:[],
46
- facilityId:{
47
- type: mongoose.Schema.Types.ObjectId,
48
- ref: 'Facility',
49
- }
50
-
51
-
52
- }, {
53
- timestamps: true // Automatically add createdAt and updatedAt fields
54
- });
55
-
56
- // Indexes for improved performance
57
- combinedUnitSchema.index({ name: 1 });
58
-
59
- // Compile the model from the schema
60
- const CombinedUnit = mongoose.model('CombinedUnit', combinedUnitSchema);
61
-
62
- module.exports = CombinedUnit;
1
+ const mongoose = require('mongoose');
2
+
3
+ // Define the schema for companies
4
+ const combinedUnitSchema = new mongoose.Schema({
5
+ combinedUnitName: {
6
+ type: String,
7
+ required: true
8
+ },
9
+ combinedDivision:{
10
+ type:String,
11
+ required:true
12
+ },
13
+ combinedUnitType:{
14
+ type:String,
15
+ required:true
16
+ },
17
+ combinedFloorUnit:{
18
+ type:String,
19
+ required:true
20
+ },
21
+ combinedLettableFloorArea:{
22
+ type:String,
23
+ required:false
24
+ },
25
+ combinedLRNumber:{
26
+ type:String,
27
+ required:true
28
+ },
29
+ combinedGrossArea:{
30
+ type:Number,
31
+ required:false
32
+ },
33
+ combinedNetLettableArea:{
34
+ type:Number,
35
+ required:false
36
+ },
37
+ combinedReason:{
38
+ type:String,
39
+ required:false
40
+ },
41
+ status:{
42
+ type:String,
43
+ required:true
44
+ },
45
+ selectedCombinedUnits:[],
46
+ facilityId:{
47
+ type: mongoose.Schema.Types.ObjectId,
48
+ ref: 'Facility',
49
+ }
50
+
51
+
52
+ }, {
53
+ timestamps: true // Automatically add createdAt and updatedAt fields
54
+ });
55
+
56
+ // Indexes for improved performance
57
+ combinedUnitSchema.index({ name: 1 });
58
+
59
+ // Compile the model from the schema
60
+ const CombinedUnit = mongoose.model('CombinedUnit', combinedUnitSchema);
61
+
62
+ module.exports = CombinedUnit;