payservedb 6.0.7 → 6.0.8

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 (132) hide show
  1. package/.env +2 -2
  2. package/index.js +214 -215
  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 +204 -204
  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/facility_departements.js +20 -20
  44. package/src/models/facility_payment_details.js +20 -20
  45. package/src/models/facilityasset.js +25 -25
  46. package/src/models/faq.js +18 -18
  47. package/src/models/gl_account_double_entries.js +25 -25
  48. package/src/models/gl_accounts.js +56 -56
  49. package/src/models/gl_entries.js +49 -49
  50. package/src/models/goodsReceivedNotes.js +115 -115
  51. package/src/models/guard.js +47 -47
  52. package/src/models/handover.js +246 -246
  53. package/src/models/invoice.js +336 -336
  54. package/src/models/item_inspection.js +67 -67
  55. package/src/models/leaseagreement.js +221 -221
  56. package/src/models/leasetemplate.js +17 -17
  57. package/src/models/levy.js +206 -206
  58. package/src/models/levy_invoice_settings.js +26 -26
  59. package/src/models/levycontract.js +117 -117
  60. package/src/models/levytype.js +23 -23
  61. package/src/models/maintenance_service_vendor.js +38 -38
  62. package/src/models/maintenance_services.js +17 -17
  63. package/src/models/maintenancerequisition.js +31 -31
  64. package/src/models/message.js +38 -38
  65. package/src/models/module.js +21 -21
  66. package/src/models/notification.js +44 -44
  67. package/src/models/paymentTermsMarks.js +19 -19
  68. package/src/models/penalty.js +76 -76
  69. package/src/models/pendingCredentials.js +32 -32
  70. package/src/models/powerMeterCustomerBand.js +45 -45
  71. package/src/models/powerMeterDailyReading.js +49 -49
  72. package/src/models/powerMeterMonthlyReading.js +49 -49
  73. package/src/models/powerMeterPowerCharges.js +49 -49
  74. package/src/models/powerMeterSingleDayReading.js +49 -49
  75. package/src/models/powerMeterTariffs.js +49 -49
  76. package/src/models/powerMeters.js +49 -49
  77. package/src/models/powerMetersManufacturer.js +14 -14
  78. package/src/models/propertyManagerContract.js +463 -463
  79. package/src/models/propertyManagerRevenue.js +100 -100
  80. package/src/models/purchaseOrderInvoice.js +74 -74
  81. package/src/models/purchase_order.js +202 -202
  82. package/src/models/purchase_request.js +110 -110
  83. package/src/models/refresh_token.js +23 -23
  84. package/src/models/reminder.js +197 -197
  85. package/src/models/report.js +13 -13
  86. package/src/models/resident.js +121 -121
  87. package/src/models/rfq_details.js +131 -131
  88. package/src/models/rfq_response.js +153 -153
  89. package/src/models/service_charge_invoice_upload.js +42 -42
  90. package/src/models/service_charge_payments.js +27 -27
  91. package/src/models/servicerequest.js +55 -55
  92. package/src/models/settings.js +62 -62
  93. package/src/models/smart_meter_daily_consumption.js +44 -44
  94. package/src/models/sms_africastalking.js +20 -20
  95. package/src/models/sms_meliora.js +20 -20
  96. package/src/models/staff.js +36 -36
  97. package/src/models/stocksandspare.js +34 -34
  98. package/src/models/suppliers.js +74 -74
  99. package/src/models/tickets.js +121 -121
  100. package/src/models/unitManagementTemplate.js +44 -44
  101. package/src/models/unitasset.js +25 -25
  102. package/src/models/units.js +112 -112
  103. package/src/models/user.js +186 -186
  104. package/src/models/valueaddedservices.js +79 -79
  105. package/src/models/vas_invoices_upload.js +50 -50
  106. package/src/models/vas_payments.js +24 -24
  107. package/src/models/vasinvoice.js +192 -192
  108. package/src/models/vasvendor.js +57 -57
  109. package/src/models/visitLog.js +86 -86
  110. package/src/models/visitor.js +67 -67
  111. package/src/models/waitlist.js +45 -45
  112. package/src/models/wallet.js +39 -39
  113. package/src/models/wallet_transactions.js +50 -50
  114. package/src/models/water_invoice.js +193 -193
  115. package/src/models/water_meter_Command_Queue.js +33 -33
  116. package/src/models/water_meter_account.js +78 -78
  117. package/src/models/water_meter_billing.js +58 -58
  118. package/src/models/water_meter_communication.js +17 -17
  119. package/src/models/water_meter_communication_logs.js +30 -30
  120. package/src/models/water_meter_concentrator.js +63 -63
  121. package/src/models/water_meter_daily_history.js +32 -32
  122. package/src/models/water_meter_iot_cards.js +34 -34
  123. package/src/models/water_meter_manufacturer.js +35 -35
  124. package/src/models/water_meter_monthly_history.js +36 -36
  125. package/src/models/water_meter_settings.js +114 -114
  126. package/src/models/water_meter_single_day_history.js +34 -34
  127. package/src/models/water_meter_size.js +15 -15
  128. package/src/models/water_meters.js +117 -117
  129. package/src/models/water_meters_delivery.js +76 -76
  130. package/src/models/water_prepaid_credit.js +43 -43
  131. package/src/models/water_prepaid_debit.js +50 -50
  132. 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;