payservedb 6.2.2 → 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,68 +1,68 @@
1
- const mongoose = require('mongoose');
2
-
3
- // Define the schema for inspection items
4
- const inspectionItemSchema = new mongoose.Schema({
5
- name: {
6
- type: String,
7
- required: [true, 'Item name is required'],
8
- trim: true
9
- },
10
- category: {
11
- type: String,
12
- required: [true, 'Category is required'],
13
- trim: true
14
- },
15
- subcategory: {
16
- type: String,
17
- trim: true,
18
- default: null
19
- },
20
- description: {
21
- type: String,
22
- trim: true
23
- },
24
- possibleConditions: {
25
- type: [String],
26
- default: ['Excellent', 'Good', 'Fair', 'Poor', 'Damaged', 'Non-functional'],
27
- validate: {
28
- validator: function(v) {
29
- return v.length > 0;
30
- },
31
- message: 'At least one possible condition is required'
32
- }
33
- },
34
- defaultCondition: {
35
- type: String,
36
- default: 'Good'
37
- },
38
- isRequired: {
39
- type: Boolean,
40
- default: true
41
- },
42
- defaultQuantity: {
43
- type: Number,
44
- default: 1,
45
- min: [1, 'Default quantity must be at least 1']
46
- },
47
- active: {
48
- type: Boolean,
49
- default: true
50
- },
51
- facilityId: {
52
- type: mongoose.Schema.Types.ObjectId,
53
- ref: 'Facility',
54
- required: true
55
- }
56
- }, {
57
- timestamps: true
58
- });
59
-
60
- // Add indexes for common queries
61
- inspectionItemSchema.index({ facilityId: 1 });
62
- inspectionItemSchema.index({ facilityId: 1, category: 1 });
63
- inspectionItemSchema.index({ facilityId: 1, active: 1 });
64
-
65
- // Create InspectionItem model
66
- const InspectionItem = mongoose.model('InspectionItem', inspectionItemSchema);
67
-
1
+ const mongoose = require('mongoose');
2
+
3
+ // Define the schema for inspection items
4
+ const inspectionItemSchema = new mongoose.Schema({
5
+ name: {
6
+ type: String,
7
+ required: [true, 'Item name is required'],
8
+ trim: true
9
+ },
10
+ category: {
11
+ type: String,
12
+ required: [true, 'Category is required'],
13
+ trim: true
14
+ },
15
+ subcategory: {
16
+ type: String,
17
+ trim: true,
18
+ default: null
19
+ },
20
+ description: {
21
+ type: String,
22
+ trim: true
23
+ },
24
+ possibleConditions: {
25
+ type: [String],
26
+ default: ['Excellent', 'Good', 'Fair', 'Poor', 'Damaged', 'Non-functional'],
27
+ validate: {
28
+ validator: function(v) {
29
+ return v.length > 0;
30
+ },
31
+ message: 'At least one possible condition is required'
32
+ }
33
+ },
34
+ defaultCondition: {
35
+ type: String,
36
+ default: 'Good'
37
+ },
38
+ isRequired: {
39
+ type: Boolean,
40
+ default: true
41
+ },
42
+ defaultQuantity: {
43
+ type: Number,
44
+ default: 1,
45
+ min: [1, 'Default quantity must be at least 1']
46
+ },
47
+ active: {
48
+ type: Boolean,
49
+ default: true
50
+ },
51
+ facilityId: {
52
+ type: mongoose.Schema.Types.ObjectId,
53
+ ref: 'Facility',
54
+ required: true
55
+ }
56
+ }, {
57
+ timestamps: true
58
+ });
59
+
60
+ // Add indexes for common queries
61
+ inspectionItemSchema.index({ facilityId: 1 });
62
+ inspectionItemSchema.index({ facilityId: 1, category: 1 });
63
+ inspectionItemSchema.index({ facilityId: 1, active: 1 });
64
+
65
+ // Create InspectionItem model
66
+ const InspectionItem = mongoose.model('InspectionItem', inspectionItemSchema);
67
+
68
68
  module.exports = InspectionItem;
@@ -1,222 +1,222 @@
1
- const mongoose = require('mongoose');
2
-
3
- const leaseAgreementSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true
8
- },
9
- currency: {
10
- type: mongoose.Schema.Types.ObjectId,
11
- ref: 'Currency',
12
- required: true
13
- },
14
- unitNumber: {
15
- type: mongoose.Schema.Types.ObjectId,
16
- ref: 'Unit',
17
- required: true
18
- },
19
- tenant: {
20
- type: mongoose.Schema.Types.ObjectId,
21
- ref: 'Customer',
22
- required: true
23
- },
24
- landlord: {
25
- type: mongoose.Schema.Types.ObjectId,
26
- ref: 'Customer',
27
- required: true
28
- },
29
- // GL Account configurations
30
- invoiceDoubleEntryAccount: {
31
- type: mongoose.Schema.Types.ObjectId,
32
- ref: 'GLAccountDoubleEntries'
33
- },
34
- paymentDoubleEntryAccount: {
35
- type: mongoose.Schema.Types.ObjectId,
36
- ref: 'GLAccountDoubleEntries'
37
- },
38
- // GL Account direct configurations (used when creating double entry records)
39
- glAccounts: {
40
- invoice: {
41
- debit: {
42
- type: mongoose.Schema.Types.ObjectId,
43
- ref: 'GLAccount'
44
- },
45
- credit: {
46
- type: mongoose.Schema.Types.ObjectId,
47
- ref: 'GLAccount'
48
- }
49
- },
50
- payment: {
51
- debit: {
52
- type: mongoose.Schema.Types.ObjectId,
53
- ref: 'GLAccount'
54
- },
55
- credit: {
56
- type: mongoose.Schema.Types.ObjectId,
57
- ref: 'GLAccount'
58
- }
59
- }
60
- },
61
- leaseTerms: {
62
- startDate: { type: Date, required: true },
63
- endDate: { type: Date, required: true },
64
- duration: { type: Number, required: true },
65
- autoRenewal: { type: Boolean, default: false }
66
- },
67
- isNewTenant: { type: Boolean, default: false },
68
- financialTerms: {
69
- monthlyRent: { type: Number, required: true },
70
- paymentDueDate: { type: Number, required: true },
71
- paymentMethods: [{
72
- type: {
73
- type: String,
74
- required: true,
75
- enum: ['Bank Transfer', 'Cash', 'Cheque']
76
- },
77
- details: {
78
- bankName: String,
79
- accountName: String,
80
- accountNumber: String,
81
- branch: String,
82
- swiftCode: String,
83
- bankToDraft: String,
84
- chequeAccountNumber: String,
85
- preferredCashLocation: String
86
- },
87
- isPrimary: { type: Boolean, default: false }
88
- }],
89
- securityDeposit: { type: Number, required: true },
90
- balanceBroughtForward: { type: Number, required: true, default: 0 },
91
- penaltyId: {
92
- type: mongoose.Schema.Types.ObjectId,
93
- ref: 'Penalty'
94
- },
95
- mpesaEnabled: {
96
- type: Boolean,
97
- default: false
98
- },
99
- mpesaDetails: {
100
- businessNumber: String,
101
- accountNumber: String,
102
- phoneNumber: String
103
- },
104
- escalations: [{
105
- _id: { type: mongoose.Schema.Types.ObjectId, auto: true },
106
- effectiveDate: { type: Date, required: true },
107
- type: {
108
- type: String,
109
- enum: ['percentage', 'fixed'],
110
- required: true
111
- },
112
- value: { type: Number, required: true },
113
- status: {
114
- type: String,
115
- enum: ['scheduled', 'applied', 'cancelled'],
116
- default: 'scheduled'
117
- }
118
- }]
119
- },
120
- billingCycle: {
121
- frequency: {
122
- type: String,
123
- enum: ['Monthly', 'Quarterly', 'Annually'],
124
- required: true
125
- },
126
- nextInvoiceDate: { type: Date },
127
- autoSend: { type: Boolean, default: false },
128
- lastInvoiceDate: { type: Date }
129
- },
130
- invoices: [
131
- { type: mongoose.Schema.Types.ObjectId, ref: 'Invoice' }
132
- ],
133
- leaseTemplate: {
134
- type: mongoose.Schema.Types.ObjectId,
135
- ref: 'LeaseTemplate',
136
- required: true
137
- },
138
- leaseDocuments: [
139
- {
140
- fileName: { type: String },
141
- fileUrl: { type: String },
142
- uploadedAt: { type: Date, default: Date.now }
143
- }
144
- ],
145
- reminders: [
146
- {
147
- reminderId: {
148
- type: mongoose.Schema.Types.ObjectId,
149
- ref: 'Reminder'
150
- },
151
- status: {
152
- type: String,
153
- enum: ['Pending', 'Sent'],
154
- default: 'Pending'
155
- }
156
- }
157
- ],
158
- status: {
159
- type: String,
160
- enum: ['Active', 'Pending', 'Expired', 'Terminated'],
161
- default: 'Active'
162
- },
163
- requireLandlordApproval: {
164
- type: Boolean,
165
- default: false
166
- },
167
- payments: [
168
- {
169
- invoiceId: {
170
- type: mongoose.Schema.Types.ObjectId,
171
- ref: 'Invoice',
172
- required: true
173
- },
174
- method: {
175
- type: {
176
- type: String,
177
- enum: ['Bank Transfer', 'Cash', 'Cheque', 'MPESA'],
178
- required: true
179
- },
180
- details: {
181
- bankName: String,
182
- accountNumber: String,
183
- transactionId: String,
184
- chequeNumber: String,
185
- mpesaTransactionId: String,
186
- mpesaPhoneNumber: String
187
- }
188
- },
189
- amount: { type: Number, required: true },
190
- receivedBy: {
191
- type: mongoose.Schema.Types.ObjectId,
192
- ref: 'User',
193
- required: true
194
- },
195
- receivedAt: { type: Date, default: Date.now }
196
- }
197
- ],
198
- // New field to track lease edit history
199
- editHistory: [
200
- {
201
- editedBy: {
202
- type: mongoose.Schema.Types.Mixed,
203
- ref: 'User'
204
- },
205
- editedAt: { type: Date, default: Date.now },
206
- reason: { type: String, required: true },
207
- changes: { type: Object } // Optional: Store what fields were changed
208
- }
209
- ],
210
- createdBy: {
211
- type: mongoose.Schema.Types.ObjectId,
212
- ref: 'User'
213
- }
214
- }, {
215
- timestamps: true
216
- });
217
-
218
- leaseAgreementSchema.index({ facilityId: 1 });
219
-
220
- const LeaseAgreement = mongoose.model('LeaseAgreement', leaseAgreementSchema);
221
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const leaseAgreementSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true
8
+ },
9
+ currency: {
10
+ type: mongoose.Schema.Types.ObjectId,
11
+ ref: 'Currency',
12
+ required: true
13
+ },
14
+ unitNumber: {
15
+ type: mongoose.Schema.Types.ObjectId,
16
+ ref: 'Unit',
17
+ required: true
18
+ },
19
+ tenant: {
20
+ type: mongoose.Schema.Types.ObjectId,
21
+ ref: 'Customer',
22
+ required: true
23
+ },
24
+ landlord: {
25
+ type: mongoose.Schema.Types.ObjectId,
26
+ ref: 'Customer',
27
+ required: true
28
+ },
29
+ // GL Account configurations
30
+ invoiceDoubleEntryAccount: {
31
+ type: mongoose.Schema.Types.ObjectId,
32
+ ref: 'GLAccountDoubleEntries'
33
+ },
34
+ paymentDoubleEntryAccount: {
35
+ type: mongoose.Schema.Types.ObjectId,
36
+ ref: 'GLAccountDoubleEntries'
37
+ },
38
+ // GL Account direct configurations (used when creating double entry records)
39
+ glAccounts: {
40
+ invoice: {
41
+ debit: {
42
+ type: mongoose.Schema.Types.ObjectId,
43
+ ref: 'GLAccount'
44
+ },
45
+ credit: {
46
+ type: mongoose.Schema.Types.ObjectId,
47
+ ref: 'GLAccount'
48
+ }
49
+ },
50
+ payment: {
51
+ debit: {
52
+ type: mongoose.Schema.Types.ObjectId,
53
+ ref: 'GLAccount'
54
+ },
55
+ credit: {
56
+ type: mongoose.Schema.Types.ObjectId,
57
+ ref: 'GLAccount'
58
+ }
59
+ }
60
+ },
61
+ leaseTerms: {
62
+ startDate: { type: Date, required: true },
63
+ endDate: { type: Date, required: true },
64
+ duration: { type: Number, required: true },
65
+ autoRenewal: { type: Boolean, default: false }
66
+ },
67
+ isNewTenant: { type: Boolean, default: false },
68
+ financialTerms: {
69
+ monthlyRent: { type: Number, required: true },
70
+ paymentDueDate: { type: Number, required: true },
71
+ paymentMethods: [{
72
+ type: {
73
+ type: String,
74
+ required: true,
75
+ enum: ['Bank Transfer', 'Cash', 'Cheque']
76
+ },
77
+ details: {
78
+ bankName: String,
79
+ accountName: String,
80
+ accountNumber: String,
81
+ branch: String,
82
+ swiftCode: String,
83
+ bankToDraft: String,
84
+ chequeAccountNumber: String,
85
+ preferredCashLocation: String
86
+ },
87
+ isPrimary: { type: Boolean, default: false }
88
+ }],
89
+ securityDeposit: { type: Number, required: true },
90
+ balanceBroughtForward: { type: Number, required: true, default: 0 },
91
+ penaltyId: {
92
+ type: mongoose.Schema.Types.ObjectId,
93
+ ref: 'Penalty'
94
+ },
95
+ mpesaEnabled: {
96
+ type: Boolean,
97
+ default: false
98
+ },
99
+ mpesaDetails: {
100
+ businessNumber: String,
101
+ accountNumber: String,
102
+ phoneNumber: String
103
+ },
104
+ escalations: [{
105
+ _id: { type: mongoose.Schema.Types.ObjectId, auto: true },
106
+ effectiveDate: { type: Date, required: true },
107
+ type: {
108
+ type: String,
109
+ enum: ['percentage', 'fixed'],
110
+ required: true
111
+ },
112
+ value: { type: Number, required: true },
113
+ status: {
114
+ type: String,
115
+ enum: ['scheduled', 'applied', 'cancelled'],
116
+ default: 'scheduled'
117
+ }
118
+ }]
119
+ },
120
+ billingCycle: {
121
+ frequency: {
122
+ type: String,
123
+ enum: ['Monthly', 'Quarterly', 'Annually'],
124
+ required: true
125
+ },
126
+ nextInvoiceDate: { type: Date },
127
+ autoSend: { type: Boolean, default: false },
128
+ lastInvoiceDate: { type: Date }
129
+ },
130
+ invoices: [
131
+ { type: mongoose.Schema.Types.ObjectId, ref: 'Invoice' }
132
+ ],
133
+ leaseTemplate: {
134
+ type: mongoose.Schema.Types.ObjectId,
135
+ ref: 'LeaseTemplate',
136
+ required: true
137
+ },
138
+ leaseDocuments: [
139
+ {
140
+ fileName: { type: String },
141
+ fileUrl: { type: String },
142
+ uploadedAt: { type: Date, default: Date.now }
143
+ }
144
+ ],
145
+ reminders: [
146
+ {
147
+ reminderId: {
148
+ type: mongoose.Schema.Types.ObjectId,
149
+ ref: 'Reminder'
150
+ },
151
+ status: {
152
+ type: String,
153
+ enum: ['Pending', 'Sent'],
154
+ default: 'Pending'
155
+ }
156
+ }
157
+ ],
158
+ status: {
159
+ type: String,
160
+ enum: ['Active', 'Pending', 'Expired', 'Terminated'],
161
+ default: 'Active'
162
+ },
163
+ requireLandlordApproval: {
164
+ type: Boolean,
165
+ default: false
166
+ },
167
+ payments: [
168
+ {
169
+ invoiceId: {
170
+ type: mongoose.Schema.Types.ObjectId,
171
+ ref: 'Invoice',
172
+ required: true
173
+ },
174
+ method: {
175
+ type: {
176
+ type: String,
177
+ enum: ['Bank Transfer', 'Cash', 'Cheque', 'MPESA'],
178
+ required: true
179
+ },
180
+ details: {
181
+ bankName: String,
182
+ accountNumber: String,
183
+ transactionId: String,
184
+ chequeNumber: String,
185
+ mpesaTransactionId: String,
186
+ mpesaPhoneNumber: String
187
+ }
188
+ },
189
+ amount: { type: Number, required: true },
190
+ receivedBy: {
191
+ type: mongoose.Schema.Types.ObjectId,
192
+ ref: 'User',
193
+ required: true
194
+ },
195
+ receivedAt: { type: Date, default: Date.now }
196
+ }
197
+ ],
198
+ // New field to track lease edit history
199
+ editHistory: [
200
+ {
201
+ editedBy: {
202
+ type: mongoose.Schema.Types.Mixed,
203
+ ref: 'User'
204
+ },
205
+ editedAt: { type: Date, default: Date.now },
206
+ reason: { type: String, required: true },
207
+ changes: { type: Object } // Optional: Store what fields were changed
208
+ }
209
+ ],
210
+ createdBy: {
211
+ type: mongoose.Schema.Types.ObjectId,
212
+ ref: 'User'
213
+ }
214
+ }, {
215
+ timestamps: true
216
+ });
217
+
218
+ leaseAgreementSchema.index({ facilityId: 1 });
219
+
220
+ const LeaseAgreement = mongoose.model('LeaseAgreement', leaseAgreementSchema);
221
+
222
222
  module.exports = LeaseAgreement;
@@ -1,18 +1,18 @@
1
- const mongoose = require("mongoose");
2
-
3
- const LeaseTemplateSchema = new mongoose.Schema({
4
- name: { type: String, required: true },
5
- description: { type: String, required: true },
6
- templateContent: { type: String, required: true },
7
- leaseAgreementId: {
8
- type: mongoose.Schema.Types.ObjectId,
9
- ref: 'LeaseAgreement',
10
- required: false
11
- },
12
- createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
13
- createdAt: { type: Date, default: Date.now },
14
- });
15
-
16
- module.exports = mongoose.model('LeaseTemplate', LeaseTemplateSchema);
17
-
1
+ const mongoose = require("mongoose");
2
+
3
+ const LeaseTemplateSchema = new mongoose.Schema({
4
+ name: { type: String, required: true },
5
+ description: { type: String, required: true },
6
+ templateContent: { type: String, required: true },
7
+ leaseAgreementId: {
8
+ type: mongoose.Schema.Types.ObjectId,
9
+ ref: 'LeaseAgreement',
10
+ required: false
11
+ },
12
+ createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
13
+ createdAt: { type: Date, default: Date.now },
14
+ });
15
+
16
+ module.exports = mongoose.model('LeaseTemplate', LeaseTemplateSchema);
17
+
18
18