payservedb 6.4.8 → 6.4.9

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 (139) hide show
  1. package/.env +2 -2
  2. package/index.js +275 -275
  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 +67 -35
  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 +122 -122
  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 +78 -78
  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/{dutyRoasterChecklist.js → dutyRosterChecklist.js} +250 -250
  37. package/src/models/dutyroster.js +136 -136
  38. package/src/models/email.js +37 -37
  39. package/src/models/email_sms_queue.js +61 -61
  40. package/src/models/entry_exit.js +53 -53
  41. package/src/models/expense.js +99 -99
  42. package/src/models/expense_category.js +45 -45
  43. package/src/models/facility.js +61 -61
  44. package/src/models/facilityWalletTransactionsMetadata.js +236 -236
  45. package/src/models/facility_departements.js +20 -20
  46. package/src/models/facility_payment_details.js +20 -20
  47. package/src/models/facilityasset.js +25 -25
  48. package/src/models/faq.js +18 -18
  49. package/src/models/gl_account_double_entries.js +25 -25
  50. package/src/models/gl_accounts.js +56 -56
  51. package/src/models/gl_entries.js +49 -49
  52. package/src/models/goodsReceivedNotes.js +115 -115
  53. package/src/models/guard.js +47 -47
  54. package/src/models/handover.js +246 -246
  55. package/src/models/invoice.js +336 -336
  56. package/src/models/item_inspection.js +67 -67
  57. package/src/models/leaseagreement.js +252 -252
  58. package/src/models/leasetemplate.js +17 -17
  59. package/src/models/levy.js +206 -206
  60. package/src/models/levy_invoice_settings.js +26 -26
  61. package/src/models/levycontract.js +117 -117
  62. package/src/models/levytype.js +23 -23
  63. package/src/models/maintenance_service_vendor.js +38 -38
  64. package/src/models/maintenance_services.js +17 -17
  65. package/src/models/maintenancerequisition.js +31 -31
  66. package/src/models/master_workplan.js +32 -32
  67. package/src/models/master_workplan_child.js +34 -34
  68. package/src/models/message.js +38 -38
  69. package/src/models/module.js +21 -21
  70. package/src/models/notification.js +44 -44
  71. package/src/models/paymentTermsMarks.js +19 -19
  72. package/src/models/penalty.js +76 -76
  73. package/src/models/pendingCredentials.js +32 -32
  74. package/src/models/powerMeterCustomerAccount.js +78 -78
  75. package/src/models/powerMeterCustomerBand.js +14 -14
  76. package/src/models/powerMeterDailyReading.js +30 -30
  77. package/src/models/powerMeterMonthlyReading.js +34 -34
  78. package/src/models/powerMeterPowerCharges.js +53 -53
  79. package/src/models/powerMeterSettings.js +138 -138
  80. package/src/models/powerMeterSingleDayReading.js +32 -32
  81. package/src/models/powerMeters.js +65 -65
  82. package/src/models/powerMetersManufacturer.js +14 -14
  83. package/src/models/propertyManagerContract.js +556 -556
  84. package/src/models/propertyManagerRevenue.js +195 -195
  85. package/src/models/purchaseOrderInvoice.js +74 -74
  86. package/src/models/purchase_order.js +213 -213
  87. package/src/models/purchase_request.js +110 -110
  88. package/src/models/refresh_token.js +23 -23
  89. package/src/models/reminder.js +197 -197
  90. package/src/models/report.js +13 -13
  91. package/src/models/resident.js +121 -121
  92. package/src/models/rfq_details.js +131 -131
  93. package/src/models/rfq_response.js +153 -153
  94. package/src/models/service_charge_invoice_upload.js +42 -42
  95. package/src/models/service_charge_payments.js +27 -27
  96. package/src/models/servicerequest.js +55 -55
  97. package/src/models/settings.js +62 -62
  98. package/src/models/smart_meter_daily_consumption.js +44 -44
  99. package/src/models/sms_africastalking.js +20 -20
  100. package/src/models/sms_balance_notification.js +26 -26
  101. package/src/models/sms_meliora.js +20 -20
  102. package/src/models/staff.js +36 -36
  103. package/src/models/stocksandspare.js +34 -34
  104. package/src/models/suppliers.js +74 -74
  105. package/src/models/tickets.js +121 -121
  106. package/src/models/unitManagementTemplate.js +44 -44
  107. package/src/models/unitasset.js +25 -25
  108. package/src/models/units.js +117 -117
  109. package/src/models/user.js +186 -186
  110. package/src/models/valueaddedservices.js +79 -79
  111. package/src/models/vas_invoices_upload.js +50 -50
  112. package/src/models/vas_payments.js +24 -24
  113. package/src/models/vasinvoice.js +192 -192
  114. package/src/models/vasvendor.js +57 -57
  115. package/src/models/visitLog.js +86 -86
  116. package/src/models/visitor.js +67 -67
  117. package/src/models/waitlist.js +45 -45
  118. package/src/models/wallet.js +44 -44
  119. package/src/models/wallet_transactions.js +50 -50
  120. package/src/models/water_invoice.js +281 -281
  121. package/src/models/water_meter_Command_Queue.js +33 -33
  122. package/src/models/water_meter_account.js +78 -78
  123. package/src/models/water_meter_billing.js +58 -58
  124. package/src/models/water_meter_communication.js +17 -17
  125. package/src/models/water_meter_communication_logs.js +30 -30
  126. package/src/models/water_meter_concentrator.js +66 -66
  127. package/src/models/water_meter_daily_history.js +32 -32
  128. package/src/models/water_meter_iot_cards.js +34 -34
  129. package/src/models/water_meter_manufacturer.js +35 -35
  130. package/src/models/water_meter_monthly_history.js +36 -36
  131. package/src/models/water_meter_negative_amounts.js +38 -38
  132. package/src/models/water_meter_settings.js +156 -156
  133. package/src/models/water_meter_single_day_history.js +34 -34
  134. package/src/models/water_meter_size.js +15 -15
  135. package/src/models/water_meters.js +123 -123
  136. package/src/models/water_meters_delivery.js +76 -76
  137. package/src/models/water_prepaid_credit.js +47 -47
  138. package/src/models/water_prepaid_debit.js +50 -50
  139. package/src/models/workorder.js +49 -49
@@ -1,193 +1,193 @@
1
- const mongoose = require('mongoose');
2
-
3
- // Define the schema for VasInvoices
4
- const vasInvoiceSchema = new mongoose.Schema({
5
- invoiceNumber: {
6
- type: String,
7
- required: true,
8
- unique: true,
9
- },
10
- accountNumber: {
11
- type: String,
12
- required: true,
13
- unique: true
14
- },
15
- facilityId: {
16
- type: mongoose.Schema.Types.ObjectId,
17
- required: true
18
- },
19
- serviceId: {
20
- type: mongoose.Schema.Types.ObjectId,
21
- required: true
22
- },
23
- customerId: {
24
- type: mongoose.Schema.Types.ObjectId,
25
- required: true
26
- },
27
- dueDate: {
28
- type: Date,
29
- required: true,
30
- },
31
- invoiceNote: {
32
- type: String,
33
- default: "Payment is due within 30 days",
34
- },
35
- status: {
36
- type: String,
37
- required: true,
38
- enum: ['Pending', 'Paid', 'Partially Paid', 'Cancelled', 'Overdue', 'Unpaid', 'Void'],
39
- default: 'Pending'
40
- },
41
- unit: {
42
- type: String,
43
- required: true
44
- },
45
- serviceName: {
46
- type: String,
47
- default: 'Service Fee'
48
- },
49
- amountPaid: {
50
- type: Number,
51
- default: 0
52
- },
53
- subTotal: {
54
- type: Number,
55
- required: true,
56
- },
57
- tax: {
58
- type: Number,
59
- default: 0
60
- },
61
- amount: {
62
- type: Number,
63
- required: true
64
- },
65
- currency: {
66
- id: {
67
- type: mongoose.Schema.Types.ObjectId
68
- },
69
- name: {
70
- type: String,
71
- default: 'Kenyan Shilling'
72
- },
73
- code: {
74
- type: String,
75
- default: 'KES'
76
- },
77
- symbol: {
78
- type: String,
79
- default: 'KSh'
80
- }
81
- },
82
- items: [{
83
- description: {
84
- type: String,
85
- required: true
86
- },
87
- quantity: {
88
- type: Number,
89
- default: 1
90
- },
91
- unitPrice: {
92
- type: Number,
93
- required: true
94
- }
95
- }],
96
- reconciliationHistory: [{
97
- date: {
98
- type: Date,
99
- default: Date.now
100
- },
101
- amount: {
102
- type: Number,
103
- required: true
104
- },
105
- type: {
106
- type: String,
107
- default: 'Manual'
108
- },
109
- paymentReference: String,
110
- paymentCompletion: {
111
- type: String,
112
- default: 'Completed'
113
- },
114
- sourceInvoice: String,
115
- destinationInvoice: String,
116
- notes: String,
117
- remainingBalance: Number
118
- }],
119
- customerInfo: {
120
- fullName: {
121
- type: String,
122
- default: 'Customer'
123
- }
124
- },
125
- paymentDetails: {
126
- paymentStatus: {
127
- type: String,
128
- enum: ['Pending', 'Completed', 'Failed', 'Partial'],
129
- default: 'Pending'
130
- },
131
- paymentMethod: String,
132
- paymentDate: Date,
133
- transactionId: String,
134
- mobilePayment: {
135
- type: Boolean,
136
- default: false
137
- }
138
- },
139
- overpay: {
140
- type: Number,
141
- default: 0
142
- },
143
- // GL Integration Fields
144
- invoiceGLEntryId: {
145
- type: mongoose.Schema.Types.ObjectId,
146
- ref: 'GLEntry'
147
- },
148
- taxGLEntryId: {
149
- type: mongoose.Schema.Types.ObjectId,
150
- ref: 'GLEntry'
151
- },
152
- glDoubleEntryId: {
153
- type: mongoose.Schema.Types.ObjectId,
154
- ref: 'GLAccountDoubleEntries'
155
- },
156
- // Tax GL details
157
- taxDetails: [{
158
- taxId: {
159
- type: mongoose.Schema.Types.ObjectId,
160
- ref: 'CountryTaxRate'
161
- },
162
- taxName: {
163
- type: String
164
- },
165
- taxRate: {
166
- type: Number
167
- },
168
- taxAmount: {
169
- type: Number
170
- },
171
- glEntryId: {
172
- type: mongoose.Schema.Types.ObjectId,
173
- ref: 'GLEntry'
174
- }
175
- }]
176
- }, {
177
- timestamps: true
178
- });
179
-
180
- // Add pre-save middleware to check if invoice is overdue
181
- vasInvoiceSchema.pre('save', function (next) {
182
- if (this.isModified('dueDate') || this.isNew) {
183
- const today = new Date();
184
- if (this.dueDate < today && this.status === 'Pending') {
185
- this.status = 'Overdue';
186
- }
187
- }
188
- next();
189
- });
190
-
191
- const VasInvoice = mongoose.model('VasInvoice', vasInvoiceSchema);
192
-
1
+ const mongoose = require('mongoose');
2
+
3
+ // Define the schema for VasInvoices
4
+ const vasInvoiceSchema = new mongoose.Schema({
5
+ invoiceNumber: {
6
+ type: String,
7
+ required: true,
8
+ unique: true,
9
+ },
10
+ accountNumber: {
11
+ type: String,
12
+ required: true,
13
+ unique: true
14
+ },
15
+ facilityId: {
16
+ type: mongoose.Schema.Types.ObjectId,
17
+ required: true
18
+ },
19
+ serviceId: {
20
+ type: mongoose.Schema.Types.ObjectId,
21
+ required: true
22
+ },
23
+ customerId: {
24
+ type: mongoose.Schema.Types.ObjectId,
25
+ required: true
26
+ },
27
+ dueDate: {
28
+ type: Date,
29
+ required: true,
30
+ },
31
+ invoiceNote: {
32
+ type: String,
33
+ default: "Payment is due within 30 days",
34
+ },
35
+ status: {
36
+ type: String,
37
+ required: true,
38
+ enum: ['Pending', 'Paid', 'Partially Paid', 'Cancelled', 'Overdue', 'Unpaid', 'Void'],
39
+ default: 'Pending'
40
+ },
41
+ unit: {
42
+ type: String,
43
+ required: true
44
+ },
45
+ serviceName: {
46
+ type: String,
47
+ default: 'Service Fee'
48
+ },
49
+ amountPaid: {
50
+ type: Number,
51
+ default: 0
52
+ },
53
+ subTotal: {
54
+ type: Number,
55
+ required: true,
56
+ },
57
+ tax: {
58
+ type: Number,
59
+ default: 0
60
+ },
61
+ amount: {
62
+ type: Number,
63
+ required: true
64
+ },
65
+ currency: {
66
+ id: {
67
+ type: mongoose.Schema.Types.ObjectId
68
+ },
69
+ name: {
70
+ type: String,
71
+ default: 'Kenyan Shilling'
72
+ },
73
+ code: {
74
+ type: String,
75
+ default: 'KES'
76
+ },
77
+ symbol: {
78
+ type: String,
79
+ default: 'KSh'
80
+ }
81
+ },
82
+ items: [{
83
+ description: {
84
+ type: String,
85
+ required: true
86
+ },
87
+ quantity: {
88
+ type: Number,
89
+ default: 1
90
+ },
91
+ unitPrice: {
92
+ type: Number,
93
+ required: true
94
+ }
95
+ }],
96
+ reconciliationHistory: [{
97
+ date: {
98
+ type: Date,
99
+ default: Date.now
100
+ },
101
+ amount: {
102
+ type: Number,
103
+ required: true
104
+ },
105
+ type: {
106
+ type: String,
107
+ default: 'Manual'
108
+ },
109
+ paymentReference: String,
110
+ paymentCompletion: {
111
+ type: String,
112
+ default: 'Completed'
113
+ },
114
+ sourceInvoice: String,
115
+ destinationInvoice: String,
116
+ notes: String,
117
+ remainingBalance: Number
118
+ }],
119
+ customerInfo: {
120
+ fullName: {
121
+ type: String,
122
+ default: 'Customer'
123
+ }
124
+ },
125
+ paymentDetails: {
126
+ paymentStatus: {
127
+ type: String,
128
+ enum: ['Pending', 'Completed', 'Failed', 'Partial'],
129
+ default: 'Pending'
130
+ },
131
+ paymentMethod: String,
132
+ paymentDate: Date,
133
+ transactionId: String,
134
+ mobilePayment: {
135
+ type: Boolean,
136
+ default: false
137
+ }
138
+ },
139
+ overpay: {
140
+ type: Number,
141
+ default: 0
142
+ },
143
+ // GL Integration Fields
144
+ invoiceGLEntryId: {
145
+ type: mongoose.Schema.Types.ObjectId,
146
+ ref: 'GLEntry'
147
+ },
148
+ taxGLEntryId: {
149
+ type: mongoose.Schema.Types.ObjectId,
150
+ ref: 'GLEntry'
151
+ },
152
+ glDoubleEntryId: {
153
+ type: mongoose.Schema.Types.ObjectId,
154
+ ref: 'GLAccountDoubleEntries'
155
+ },
156
+ // Tax GL details
157
+ taxDetails: [{
158
+ taxId: {
159
+ type: mongoose.Schema.Types.ObjectId,
160
+ ref: 'CountryTaxRate'
161
+ },
162
+ taxName: {
163
+ type: String
164
+ },
165
+ taxRate: {
166
+ type: Number
167
+ },
168
+ taxAmount: {
169
+ type: Number
170
+ },
171
+ glEntryId: {
172
+ type: mongoose.Schema.Types.ObjectId,
173
+ ref: 'GLEntry'
174
+ }
175
+ }]
176
+ }, {
177
+ timestamps: true
178
+ });
179
+
180
+ // Add pre-save middleware to check if invoice is overdue
181
+ vasInvoiceSchema.pre('save', function (next) {
182
+ if (this.isModified('dueDate') || this.isNew) {
183
+ const today = new Date();
184
+ if (this.dueDate < today && this.status === 'Pending') {
185
+ this.status = 'Overdue';
186
+ }
187
+ }
188
+ next();
189
+ });
190
+
191
+ const VasInvoice = mongoose.model('VasInvoice', vasInvoiceSchema);
192
+
193
193
  module.exports = VasInvoice;
@@ -1,58 +1,58 @@
1
- const mongoose = require('mongoose');
2
-
3
- // Define the schema for VasVendor
4
- const vasVendorSchema = new mongoose.Schema({
5
- facilityId: {
6
- type: mongoose.Schema.Types.ObjectId,
7
- ref: 'Facility',
8
- required: true,
9
- },
10
- name: {
11
- type: String,
12
- required: true,
13
- trim: true
14
- },
15
- location: {
16
- type: String,
17
- required: true,
18
- trim: true
19
- },
20
- jobDescription: {
21
- type: String,
22
- required: true,
23
- trim: true
24
- },
25
- offers: [{
26
- serviceId: {
27
- type: mongoose.Schema.Types.ObjectId,
28
- ref: 'Service', // Reference to the Service model
29
- required: true
30
- },
31
- amount: {
32
- type: Number,
33
- required: true,
34
- min: [0, 'Amount must be a positive number']
35
- }
36
- }],
37
- contactDetails: {
38
- name: {
39
- type: String,
40
- required: true
41
- },
42
- phone: {
43
- type: String,
44
- required: true
45
- },
46
- email: {
47
- type: String,
48
- required: true,
49
- match: [/.+\@.+\..+/, 'Please provide a valid email address']
50
- }
51
- }
52
- }, {
53
- timestamps: true // This will automatically add createdAt and updatedAt fields
54
- });
55
-
56
- const VasVendor = mongoose.model('VasVendor', vasVendorSchema);
57
-
1
+ const mongoose = require('mongoose');
2
+
3
+ // Define the schema for VasVendor
4
+ const vasVendorSchema = new mongoose.Schema({
5
+ facilityId: {
6
+ type: mongoose.Schema.Types.ObjectId,
7
+ ref: 'Facility',
8
+ required: true,
9
+ },
10
+ name: {
11
+ type: String,
12
+ required: true,
13
+ trim: true
14
+ },
15
+ location: {
16
+ type: String,
17
+ required: true,
18
+ trim: true
19
+ },
20
+ jobDescription: {
21
+ type: String,
22
+ required: true,
23
+ trim: true
24
+ },
25
+ offers: [{
26
+ serviceId: {
27
+ type: mongoose.Schema.Types.ObjectId,
28
+ ref: 'Service', // Reference to the Service model
29
+ required: true
30
+ },
31
+ amount: {
32
+ type: Number,
33
+ required: true,
34
+ min: [0, 'Amount must be a positive number']
35
+ }
36
+ }],
37
+ contactDetails: {
38
+ name: {
39
+ type: String,
40
+ required: true
41
+ },
42
+ phone: {
43
+ type: String,
44
+ required: true
45
+ },
46
+ email: {
47
+ type: String,
48
+ required: true,
49
+ match: [/.+\@.+\..+/, 'Please provide a valid email address']
50
+ }
51
+ }
52
+ }, {
53
+ timestamps: true // This will automatically add createdAt and updatedAt fields
54
+ });
55
+
56
+ const VasVendor = mongoose.model('VasVendor', vasVendorSchema);
57
+
58
58
  module.exports = VasVendor;
@@ -1,86 +1,86 @@
1
- const mongoose = require('mongoose');
2
-
3
- // Define the schema for visit logs
4
- const visitLogSchema = new mongoose.Schema({
5
- visitorName: {
6
- type: String,
7
- required: true
8
- },
9
- visitorId: {
10
- type: mongoose.Schema.Types.ObjectId,
11
- ref: 'Visitor',
12
- required: true
13
- },
14
- residentName: {
15
- type: String,
16
- required: false
17
- },
18
- residentId: {
19
- type: mongoose.Schema.Types.ObjectId,
20
- },
21
- qrCode:{
22
- type:Boolean,
23
- required:false
24
- },
25
- houseNumber: {
26
- type: String,
27
- required: false
28
- },
29
- startTime: {
30
- type: String, // Changed to Date for better handling of time
31
- required: true
32
- },
33
- endTime: {
34
- type: Date, // Changed to Date for better handling of time
35
- required: false
36
- },
37
- days:{
38
- type:Number,
39
- required:false
40
- },
41
- division:{
42
- type:String,
43
- required:false
44
- },
45
- entryPoint:{
46
- type:String,
47
- required:false
48
- },
49
- exitPoint:{
50
- type:String,
51
- required:false
52
- },
53
- status: {
54
- type: String,
55
- required: true,
56
- enum: ['Visit Confirmation', 'Scheduled', 'Checked In','Checked Out', 'Cancelled'] // Define valid statuses
57
- // Define valid statuses
58
- },
59
- vehicle: {
60
- registration: String,
61
- make: String,
62
- color: String,
63
- occupants: String,
64
- },
65
- visitationCode: {
66
- type: Number,
67
- required: false
68
- },
69
- requestedBy:{
70
- type:mongoose.Schema.Types.ObjectId,
71
- ref:"User",
72
- required:false
73
- },
74
- facilityId: {
75
- type: mongoose.Schema.Types.ObjectId,
76
- ref: 'Facility',
77
- required: true // Ensures a facilityId is always provided
78
- }
79
- }, {
80
- timestamps: true // Automatically add createdAt and updatedAt fields
81
- });
82
-
83
- // Compile the model from the schema
84
- const VisitLog = mongoose.model('VisitLog', visitLogSchema);
85
-
86
- module.exports = VisitLog;
1
+ const mongoose = require('mongoose');
2
+
3
+ // Define the schema for visit logs
4
+ const visitLogSchema = new mongoose.Schema({
5
+ visitorName: {
6
+ type: String,
7
+ required: true
8
+ },
9
+ visitorId: {
10
+ type: mongoose.Schema.Types.ObjectId,
11
+ ref: 'Visitor',
12
+ required: true
13
+ },
14
+ residentName: {
15
+ type: String,
16
+ required: false
17
+ },
18
+ residentId: {
19
+ type: mongoose.Schema.Types.ObjectId,
20
+ },
21
+ qrCode:{
22
+ type:Boolean,
23
+ required:false
24
+ },
25
+ houseNumber: {
26
+ type: String,
27
+ required: false
28
+ },
29
+ startTime: {
30
+ type: String, // Changed to Date for better handling of time
31
+ required: true
32
+ },
33
+ endTime: {
34
+ type: Date, // Changed to Date for better handling of time
35
+ required: false
36
+ },
37
+ days:{
38
+ type:Number,
39
+ required:false
40
+ },
41
+ division:{
42
+ type:String,
43
+ required:false
44
+ },
45
+ entryPoint:{
46
+ type:String,
47
+ required:false
48
+ },
49
+ exitPoint:{
50
+ type:String,
51
+ required:false
52
+ },
53
+ status: {
54
+ type: String,
55
+ required: true,
56
+ enum: ['Visit Confirmation', 'Scheduled', 'Checked In','Checked Out', 'Cancelled'] // Define valid statuses
57
+ // Define valid statuses
58
+ },
59
+ vehicle: {
60
+ registration: String,
61
+ make: String,
62
+ color: String,
63
+ occupants: String,
64
+ },
65
+ visitationCode: {
66
+ type: Number,
67
+ required: false
68
+ },
69
+ requestedBy:{
70
+ type:mongoose.Schema.Types.ObjectId,
71
+ ref:"User",
72
+ required:false
73
+ },
74
+ facilityId: {
75
+ type: mongoose.Schema.Types.ObjectId,
76
+ ref: 'Facility',
77
+ required: true // Ensures a facilityId is always provided
78
+ }
79
+ }, {
80
+ timestamps: true // Automatically add createdAt and updatedAt fields
81
+ });
82
+
83
+ // Compile the model from the schema
84
+ const VisitLog = mongoose.model('VisitLog', visitLogSchema);
85
+
86
+ module.exports = VisitLog;