payservedb 5.6.6 → 5.6.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 (113) hide show
  1. package/.env +2 -2
  2. package/index.js +194 -193
  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/auditlog.js +83 -83
  11. package/src/models/bankdetails.js +40 -40
  12. package/src/models/billerAddress.js +120 -0
  13. package/src/models/booking_invoice.js +151 -151
  14. package/src/models/bookinganalytics.js +63 -63
  15. package/src/models/bookingconfig.js +45 -45
  16. package/src/models/bookingproperty.js +112 -112
  17. package/src/models/bookingreservation.js +192 -192
  18. package/src/models/bookingrevenuerecord.js +84 -84
  19. package/src/models/budget.js +91 -91
  20. package/src/models/budgetCategory.js +19 -19
  21. package/src/models/campaigns.js +72 -72
  22. package/src/models/cashpayment.js +262 -262
  23. package/src/models/combinedUnits.js +62 -62
  24. package/src/models/common_area_electricity.js +38 -38
  25. package/src/models/common_area_generator.js +41 -41
  26. package/src/models/common_area_utility_alert.js +37 -37
  27. package/src/models/common_area_water.js +39 -39
  28. package/src/models/company.js +53 -53
  29. package/src/models/country_tax.js +42 -42
  30. package/src/models/currency_settings.js +39 -39
  31. package/src/models/customer.js +200 -200
  32. package/src/models/default_payment_details.js +17 -17
  33. package/src/models/dutyroster.js +107 -107
  34. package/src/models/email.js +37 -37
  35. package/src/models/entry_exit.js +53 -53
  36. package/src/models/expense.js +99 -99
  37. package/src/models/expense_category.js +45 -19
  38. package/src/models/facility.js +61 -61
  39. package/src/models/facility_payment_details.js +20 -20
  40. package/src/models/facilityasset.js +25 -25
  41. package/src/models/faq.js +18 -18
  42. package/src/models/gl_account_double_entries.js +25 -25
  43. package/src/models/gl_accounts.js +56 -56
  44. package/src/models/gl_entries.js +49 -49
  45. package/src/models/guard.js +47 -47
  46. package/src/models/handover.js +246 -246
  47. package/src/models/invoice.js +336 -336
  48. package/src/models/item_inspection.js +67 -67
  49. package/src/models/leaseagreement.js +221 -221
  50. package/src/models/leasetemplate.js +17 -17
  51. package/src/models/levy.js +152 -152
  52. package/src/models/levy_invoice_settings.js +26 -26
  53. package/src/models/levycontract.js +117 -117
  54. package/src/models/levytype.js +23 -23
  55. package/src/models/maintenance_service_vendor.js +38 -38
  56. package/src/models/maintenance_services.js +17 -17
  57. package/src/models/maintenancerequisition.js +31 -31
  58. package/src/models/message.js +38 -38
  59. package/src/models/module.js +21 -21
  60. package/src/models/notification.js +44 -36
  61. package/src/models/penalty.js +76 -76
  62. package/src/models/pendingCredentials.js +32 -32
  63. package/src/models/propertyManagerContract.js +358 -358
  64. package/src/models/propertyManagerRevenue.js +100 -100
  65. package/src/models/purchase_order.js +194 -194
  66. package/src/models/purchase_request.js +110 -110
  67. package/src/models/refresh_token.js +23 -23
  68. package/src/models/reminder.js +197 -197
  69. package/src/models/report.js +13 -13
  70. package/src/models/resident.js +121 -121
  71. package/src/models/rfq_details.js +131 -131
  72. package/src/models/rfq_response.js +105 -105
  73. package/src/models/service_charge_invoice_upload.js +42 -42
  74. package/src/models/service_charge_payments.js +27 -27
  75. package/src/models/servicerequest.js +55 -55
  76. package/src/models/settings.js +62 -62
  77. package/src/models/smart_meter_daily_consumption.js +44 -44
  78. package/src/models/sms_africastalking.js +20 -20
  79. package/src/models/sms_meliora.js +20 -20
  80. package/src/models/staff.js +36 -36
  81. package/src/models/stocksandspare.js +34 -34
  82. package/src/models/suppliers.js +74 -74
  83. package/src/models/tickets.js +109 -109
  84. package/src/models/unitManagementTemplate.js +44 -44
  85. package/src/models/unitasset.js +25 -25
  86. package/src/models/units.js +112 -112
  87. package/src/models/user.js +187 -187
  88. package/src/models/valueaddedservices.js +79 -79
  89. package/src/models/vas_invoices_upload.js +50 -50
  90. package/src/models/vas_payments.js +24 -24
  91. package/src/models/vasinvoice.js +192 -192
  92. package/src/models/vasvendor.js +57 -57
  93. package/src/models/visitLog.js +86 -86
  94. package/src/models/visitor.js +67 -67
  95. package/src/models/waitlist.js +45 -45
  96. package/src/models/water_invoice.js +193 -193
  97. package/src/models/water_meter_account.js +78 -78
  98. package/src/models/water_meter_billing.js +58 -58
  99. package/src/models/water_meter_communication.js +17 -17
  100. package/src/models/water_meter_communication_logs.js +30 -30
  101. package/src/models/water_meter_concentrator.js +59 -59
  102. package/src/models/water_meter_daily_history.js +32 -32
  103. package/src/models/water_meter_iot_cards.js +34 -34
  104. package/src/models/water_meter_manufacturer.js +35 -35
  105. package/src/models/water_meter_monthly_history.js +36 -36
  106. package/src/models/water_meter_settings.js +114 -88
  107. package/src/models/water_meter_single_day_history.js +34 -34
  108. package/src/models/water_meter_size.js +15 -15
  109. package/src/models/water_meters.js +117 -117
  110. package/src/models/water_meters_delivery.js +76 -76
  111. package/src/models/water_prepaid_credit.js +43 -43
  112. package/src/models/water_prepaid_debit.js +50 -50
  113. 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