payservedb 5.9.1 → 5.9.3

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 (123) hide show
  1. package/.env +2 -2
  2. package/index.js +205 -205
  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 +91 -91
  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 -31
  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 +200 -200
  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 +53 -53
  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 +61 -61
  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/propertyManagerContract.js +468 -468
  71. package/src/models/propertyManagerRevenue.js +100 -100
  72. package/src/models/purchase_order.js +202 -202
  73. package/src/models/purchase_request.js +110 -110
  74. package/src/models/refresh_token.js +23 -23
  75. package/src/models/reminder.js +197 -197
  76. package/src/models/report.js +13 -13
  77. package/src/models/resident.js +121 -121
  78. package/src/models/rfq_details.js +131 -131
  79. package/src/models/rfq_response.js +110 -110
  80. package/src/models/service_charge_invoice_upload.js +42 -42
  81. package/src/models/service_charge_payments.js +27 -27
  82. package/src/models/servicerequest.js +55 -55
  83. package/src/models/settings.js +62 -62
  84. package/src/models/smart_meter_daily_consumption.js +44 -44
  85. package/src/models/sms_africastalking.js +20 -20
  86. package/src/models/sms_meliora.js +20 -20
  87. package/src/models/staff.js +36 -36
  88. package/src/models/stocksandspare.js +34 -34
  89. package/src/models/suppliers.js +74 -74
  90. package/src/models/tickets.js +121 -121
  91. package/src/models/unitManagementTemplate.js +44 -44
  92. package/src/models/unitasset.js +25 -25
  93. package/src/models/units.js +112 -112
  94. package/src/models/user.js +186 -186
  95. package/src/models/valueaddedservices.js +79 -79
  96. package/src/models/vas_invoices_upload.js +50 -50
  97. package/src/models/vas_payments.js +24 -24
  98. package/src/models/vasinvoice.js +192 -192
  99. package/src/models/vasvendor.js +57 -57
  100. package/src/models/visitLog.js +86 -86
  101. package/src/models/visitor.js +67 -67
  102. package/src/models/waitlist.js +45 -45
  103. package/src/models/wallet.js +39 -39
  104. package/src/models/wallet_transactions.js +50 -50
  105. package/src/models/water_invoice.js +193 -193
  106. package/src/models/water_meter_Command_Queue.js +33 -33
  107. package/src/models/water_meter_account.js +78 -78
  108. package/src/models/water_meter_billing.js +58 -58
  109. package/src/models/water_meter_communication.js +17 -17
  110. package/src/models/water_meter_communication_logs.js +30 -30
  111. package/src/models/water_meter_concentrator.js +63 -63
  112. package/src/models/water_meter_daily_history.js +32 -32
  113. package/src/models/water_meter_iot_cards.js +34 -34
  114. package/src/models/water_meter_manufacturer.js +35 -35
  115. package/src/models/water_meter_monthly_history.js +36 -36
  116. package/src/models/water_meter_settings.js +114 -114
  117. package/src/models/water_meter_single_day_history.js +34 -34
  118. package/src/models/water_meter_size.js +15 -15
  119. package/src/models/water_meters.js +117 -117
  120. package/src/models/water_meters_delivery.js +76 -76
  121. package/src/models/water_prepaid_credit.js +43 -43
  122. package/src/models/water_prepaid_debit.js +50 -50
  123. 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;