payservedb 9.6.0 → 9.6.2

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 (232) hide show
  1. package/.env +2 -2
  2. package/ZOHO_INTEGRATION_SCHEMA.md +644 -644
  3. package/index.js +418 -418
  4. package/package.json +17 -17
  5. package/src/models/InvoiceWithholdingTax.js +67 -67
  6. package/src/models/account.js +59 -59
  7. package/src/models/agent_departments.js +59 -59
  8. package/src/models/agent_notifications.js +53 -53
  9. package/src/models/agent_performance.js +127 -127
  10. package/src/models/agent_roles.js +77 -77
  11. package/src/models/agents.js +154 -154
  12. package/src/models/apilog.js +18 -18
  13. package/src/models/approvalsWorkflows.js +49 -49
  14. package/src/models/archivedapilog.js +18 -18
  15. package/src/models/asset.js +92 -92
  16. package/src/models/assetsAssignment.js +64 -64
  17. package/src/models/auditTrail.js +346 -346
  18. package/src/models/auto_reply_rule.js +68 -68
  19. package/src/models/bankdetails.js +47 -47
  20. package/src/models/billerAddress.js +124 -124
  21. package/src/models/booking_invoice.js +187 -187
  22. package/src/models/bookinganalytics.js +63 -63
  23. package/src/models/bookingconfig.js +74 -74
  24. package/src/models/bookingproperty.js +211 -211
  25. package/src/models/bookingreservation.js +298 -298
  26. package/src/models/bookingrevenuerecord.js +84 -84
  27. package/src/models/budget.js +95 -95
  28. package/src/models/budgetCategory.js +19 -19
  29. package/src/models/campaigns.js +108 -108
  30. package/src/models/cancellation_policy.js +56 -56
  31. package/src/models/cashpayment.js +289 -289
  32. package/src/models/combinedUnits.js +62 -62
  33. package/src/models/combined_invoice.js +424 -424
  34. package/src/models/common_area_electricity.js +38 -38
  35. package/src/models/common_area_generator.js +41 -41
  36. package/src/models/common_area_utility_alert.js +37 -37
  37. package/src/models/common_area_water.js +39 -39
  38. package/src/models/communication_status.js +33 -33
  39. package/src/models/communication_user_opt.js +32 -32
  40. package/src/models/community_guidelines.js +35 -35
  41. package/src/models/company.js +53 -53
  42. package/src/models/coreBaseSettings.js +16 -16
  43. package/src/models/coreInvoiceSettings.js +100 -100
  44. package/src/models/counter_schema.js +21 -21
  45. package/src/models/country_tax.js +42 -42
  46. package/src/models/currency_settings.js +39 -39
  47. package/src/models/customer.js +251 -251
  48. package/src/models/customer_preference.js +52 -52
  49. package/src/models/customer_satisfaction_survey.js +297 -297
  50. package/src/models/customer_surveys.js +139 -139
  51. package/src/models/customer_tickets.js +237 -237
  52. package/src/models/dailyChecklist.js +312 -312
  53. package/src/models/default_payment_details.js +17 -17
  54. package/src/models/deliveryTimeMarks.js +18 -18
  55. package/src/models/document_type.js +19 -19
  56. package/src/models/dutyRosterChecklist.js +250 -250
  57. package/src/models/dutyroster.js +136 -136
  58. package/src/models/email.js +37 -37
  59. package/src/models/email_cc_config.js +48 -48
  60. package/src/models/email_sms_queue.js +61 -61
  61. package/src/models/email_thread.js +35 -35
  62. package/src/models/entry_exit.js +53 -53
  63. package/src/models/expense.js +99 -99
  64. package/src/models/expense_category.js +45 -45
  65. package/src/models/facility.js +100 -100
  66. package/src/models/facilityBillingPrices.js +29 -29
  67. package/src/models/facilityInvoice.js +240 -240
  68. package/src/models/facilityInvoicePayment.js +52 -52
  69. package/src/models/facilityInvoiceRecipient.js +32 -32
  70. package/src/models/facilityWalletTransactionsMetadata.js +236 -236
  71. package/src/models/facility_departements.js +20 -20
  72. package/src/models/facility_etims_config.js +116 -116
  73. package/src/models/facility_payment_details.js +20 -20
  74. package/src/models/facility_rating.js +78 -78
  75. package/src/models/facilityasset.js +25 -25
  76. package/src/models/faq.js +15 -15
  77. package/src/models/gl_account_double_entries.js +25 -25
  78. package/src/models/gl_accounts.js +56 -56
  79. package/src/models/gl_entries.js +49 -49
  80. package/src/models/goodsReceivedNotes.js +115 -115
  81. package/src/models/guard.js +47 -47
  82. package/src/models/handover.js +258 -258
  83. package/src/models/inspection_category.js +38 -38
  84. package/src/models/invoice.js +598 -569
  85. package/src/models/invoiceCreditAdjustment.js +45 -45
  86. package/src/models/invoice_edit_log.js +81 -81
  87. package/src/models/invoice_generation_approval.js +86 -86
  88. package/src/models/invoicing_schedule.js +40 -40
  89. package/src/models/item_inspection.js +96 -96
  90. package/src/models/knowledge_base.js +109 -109
  91. package/src/models/knowledge_base_rating.js +44 -44
  92. package/src/models/leaseagreement.js +266 -266
  93. package/src/models/leasetemplate.js +17 -17
  94. package/src/models/levy.js +231 -231
  95. package/src/models/levy_deposits.js +114 -114
  96. package/src/models/levy_invoice_settings.js +26 -26
  97. package/src/models/levy_payment_receipt.js +156 -156
  98. package/src/models/levycontract.js +213 -213
  99. package/src/models/levytype.js +23 -23
  100. package/src/models/maintenance_service_vendor.js +38 -38
  101. package/src/models/maintenance_services.js +17 -17
  102. package/src/models/maintenancerequisition.js +31 -31
  103. package/src/models/master_workplan.js +32 -32
  104. package/src/models/master_workplan_child.js +34 -34
  105. package/src/models/message.js +38 -38
  106. package/src/models/module.js +21 -21
  107. package/src/models/movein_amenity.js +13 -13
  108. package/src/models/movein_application.js +28 -28
  109. package/src/models/movein_audit_log.js +21 -21
  110. package/src/models/movein_booking.js +33 -33
  111. package/src/models/movein_commission.js +46 -46
  112. package/src/models/movein_conversation.js +25 -25
  113. package/src/models/movein_deal.js +79 -79
  114. package/src/models/movein_disbursement.js +36 -36
  115. package/src/models/movein_email_thread.js +19 -19
  116. package/src/models/movein_enquiry.js +16 -16
  117. package/src/models/movein_featured_package.js +16 -16
  118. package/src/models/movein_handoff_token.js +16 -16
  119. package/src/models/movein_invoice.js +24 -24
  120. package/src/models/movein_landlord.js +18 -18
  121. package/src/models/movein_landlord_user.js +20 -20
  122. package/src/models/movein_lease.js +37 -37
  123. package/src/models/movein_message.js +27 -27
  124. package/src/models/movein_notification.js +27 -27
  125. package/src/models/movein_otp.js +14 -14
  126. package/src/models/movein_payment.js +46 -46
  127. package/src/models/movein_reminder.js +77 -77
  128. package/src/models/movein_reservation.js +31 -31
  129. package/src/models/movein_settings.js +25 -25
  130. package/src/models/movein_tenancy.js +55 -55
  131. package/src/models/movein_unit.js +59 -59
  132. package/src/models/movein_user.js +15 -15
  133. package/src/models/movein_viewing_slot.js +21 -21
  134. package/src/models/movein_want_unit.js +20 -20
  135. package/src/models/notification.js +44 -44
  136. package/src/models/paymentTermsMarks.js +19 -19
  137. package/src/models/penalty.js +76 -76
  138. package/src/models/pendingCredentials.js +32 -32
  139. package/src/models/powerMeterCommunicationProtocol.js +17 -17
  140. package/src/models/powerMeterCustomerAccount.js +78 -78
  141. package/src/models/powerMeterCustomerBand.js +14 -14
  142. package/src/models/powerMeterDailyReading.js +30 -30
  143. package/src/models/powerMeterGateways.js +40 -40
  144. package/src/models/powerMeterMonthlyReading.js +34 -34
  145. package/src/models/powerMeterPowerCharges.js +85 -85
  146. package/src/models/powerMeterSettings.js +211 -211
  147. package/src/models/powerMeterSingleDayReading.js +32 -32
  148. package/src/models/powerMeters.js +149 -149
  149. package/src/models/powerMetersManufacturer.js +14 -14
  150. package/src/models/power_invoice.js +371 -371
  151. package/src/models/power_meter_account.js +81 -81
  152. package/src/models/power_meter_command_logs.js +30 -30
  153. package/src/models/power_meter_command_queue.js +33 -33
  154. package/src/models/power_meter_negative_balance.js +44 -44
  155. package/src/models/power_prepaid_credits.js +47 -47
  156. package/src/models/power_prepaid_debits.js +53 -53
  157. package/src/models/power_prepaid_orders.js +78 -78
  158. package/src/models/power_sms_notification.js +26 -26
  159. package/src/models/privacy_policy.js +19 -19
  160. package/src/models/propertyManagementSettings.js +55 -55
  161. package/src/models/propertyManagerContract.js +611 -611
  162. package/src/models/propertyManagerRevenue.js +195 -195
  163. package/src/models/propertyManagerRevenueEntry.js +118 -118
  164. package/src/models/purchaseOrderInvoice.js +74 -74
  165. package/src/models/purchase_order.js +213 -213
  166. package/src/models/purchase_request.js +110 -110
  167. package/src/models/quickbooks_config.js +52 -52
  168. package/src/models/recipient_group.js +61 -61
  169. package/src/models/recipient_group_member.js +62 -62
  170. package/src/models/refresh_token.js +23 -23
  171. package/src/models/reminder.js +197 -197
  172. package/src/models/report.js +13 -13
  173. package/src/models/resident.js +121 -121
  174. package/src/models/rfq_details.js +131 -131
  175. package/src/models/rfq_response.js +153 -153
  176. package/src/models/service_charge_invoice_upload.js +42 -42
  177. package/src/models/service_charge_payments.js +27 -27
  178. package/src/models/servicerequest.js +55 -55
  179. package/src/models/settings.js +62 -62
  180. package/src/models/short_urls.js +21 -21
  181. package/src/models/smart_meter_daily_consumption.js +44 -44
  182. package/src/models/sms_africastalking.js +20 -20
  183. package/src/models/sms_balance_notification.js +26 -26
  184. package/src/models/sms_meliora.js +20 -20
  185. package/src/models/staff.js +36 -36
  186. package/src/models/stocksandspare.js +161 -161
  187. package/src/models/suppliers.js +79 -79
  188. package/src/models/terms_and_conditions.js +19 -19
  189. package/src/models/tickets.js +186 -186
  190. package/src/models/tickets_category.js +72 -72
  191. package/src/models/unitManagementTemplate.js +44 -44
  192. package/src/models/unitasset.js +25 -25
  193. package/src/models/units.js +148 -148
  194. package/src/models/user.js +186 -186
  195. package/src/models/valueaddedservices.js +50 -50
  196. package/src/models/vas_invoices_upload.js +50 -50
  197. package/src/models/vas_payments.js +24 -24
  198. package/src/models/vasinvoice.js +196 -196
  199. package/src/models/vasvendor.js +52 -52
  200. package/src/models/visitLog.js +108 -108
  201. package/src/models/visitor.js +67 -67
  202. package/src/models/waitlist.js +45 -45
  203. package/src/models/wallet.js +44 -44
  204. package/src/models/wallet_transaction.js +67 -67
  205. package/src/models/wallet_transactions.js +72 -72
  206. package/src/models/water_invoice.js +362 -362
  207. package/src/models/water_meter_Command_Queue.js +33 -33
  208. package/src/models/water_meter_account.js +86 -86
  209. package/src/models/water_meter_billing.js +58 -58
  210. package/src/models/water_meter_combined_accounts.js +92 -92
  211. package/src/models/water_meter_communication.js +17 -17
  212. package/src/models/water_meter_communication_logs.js +39 -39
  213. package/src/models/water_meter_concentrator.js +77 -77
  214. package/src/models/water_meter_daily_history.js +32 -32
  215. package/src/models/water_meter_high_risk.js +36 -36
  216. package/src/models/water_meter_iot_cards.js +34 -34
  217. package/src/models/water_meter_loan_deduction.js +134 -134
  218. package/src/models/water_meter_manufacturer.js +35 -35
  219. package/src/models/water_meter_monthly_history.js +36 -36
  220. package/src/models/water_meter_negative_amounts.js +44 -44
  221. package/src/models/water_meter_settings.js +303 -303
  222. package/src/models/water_meter_single_day_history.js +34 -34
  223. package/src/models/water_meter_size.js +15 -15
  224. package/src/models/water_meters.js +176 -176
  225. package/src/models/water_meters_delivery.js +76 -76
  226. package/src/models/water_prepaid_credit.js +47 -47
  227. package/src/models/water_prepaid_debit.js +50 -50
  228. package/src/models/whatsapp_conversation.js +23 -23
  229. package/src/models/workorder.js +49 -49
  230. package/src/models/zohoAccount.js +453 -453
  231. package/src/models/zohoIntegration.js +262 -262
  232. package/src/models/zohoItem.js +504 -504
@@ -1,251 +1,251 @@
1
- const mongoose = require("mongoose");
2
-
3
- const CustomerSchema = new mongoose.Schema({
4
- customerNumber: {
5
- type: Number,
6
- required: true,
7
- },
8
- firstName: {
9
- type: String,
10
- required: true,
11
- },
12
- lastName: {
13
- type: String,
14
- required: true,
15
- },
16
- phoneNumber: {
17
- type: String,
18
- required: true,
19
- },
20
- idNumber: {
21
- type: String,
22
- required: true,
23
- },
24
- combineInvoices: {
25
- type: Boolean,
26
- default: false
27
- },
28
- email: {
29
- type: String,
30
- required: true,
31
- },
32
- kraPin: {
33
- type: String,
34
- default: null,
35
- description: "KRA PIN for tax identification (eTims integration)",
36
- },
37
- digitax: {
38
- customerId: {
39
- type: String,
40
- default: null
41
- },
42
- synced: {
43
- type: Boolean,
44
- default: false
45
- },
46
- syncedAt: Date,
47
- errorMessage: String,
48
- attempts: {
49
- type: Number,
50
- default: 0
51
- },
52
- lastAttemptAt: Date
53
- },
54
- nextOfKin: [
55
- {
56
- name: {
57
- type: String,
58
- },
59
- relationship: {
60
- type: String,
61
- },
62
- phoneNumber: {
63
- type: String,
64
- },
65
- email: {
66
- type: String,
67
- },
68
- canReceiveInvoice: {
69
- type: Boolean,
70
- default: false,
71
- },
72
- },
73
- ],
74
- customerType: {
75
- type: String,
76
- required: true,
77
- },
78
- residentType: {
79
- type: String,
80
- required: true,
81
- },
82
- facilityId: {
83
- type: mongoose.Schema.Types.ObjectId,
84
- ref: "Facility",
85
- },
86
- status: {
87
- type: String,
88
- required: false,
89
- enum: ["Active", "Inactive"],
90
- },
91
- quickBooksId: {
92
- type: String,
93
- },
94
- nonResidentUsage: {
95
- type: String,
96
- },
97
-
98
- familyMembers: [
99
- {
100
- no: {
101
- type: Number,
102
- required: false,
103
- },
104
- name: {
105
- type: String,
106
- required: false,
107
- },
108
- phoneNumber: {
109
- type: String,
110
- required: false,
111
- },
112
- email: {
113
- type: String,
114
- required: false,
115
- },
116
- relation: {
117
- type: String,
118
- required: false,
119
- },
120
- qrCode: {
121
- type: Boolean,
122
- required: false,
123
- },
124
- addVisitor: {
125
- type: Boolean,
126
- required: false,
127
- },
128
- receiveMessage: {
129
- type: Boolean,
130
- required: false,
131
- },
132
- qrUniqueCode: {
133
- type: String,
134
- unique: false,
135
- },
136
- disabled: {
137
- type: Boolean,
138
- required: false,
139
- },
140
- },
141
- ],
142
- staff: [
143
- {
144
- no: {
145
- type: Number,
146
- required: false,
147
- },
148
- name: {
149
- type: String,
150
- required: false,
151
- },
152
- phoneNumber: {
153
- type: String,
154
- required: false,
155
- },
156
- jobRole: {
157
- type: String,
158
- required: false,
159
- },
160
- qrCode: {
161
- type: Boolean,
162
- required: false,
163
- },
164
- qrUniqueCode: { type: String, unique: false },
165
-
166
- disabled: {
167
- type: Boolean,
168
- required: false,
169
- },
170
- },
171
- ],
172
- vehicles: [
173
- {
174
- no: {
175
- type: Number,
176
- required: false,
177
- },
178
- registration: {
179
- type: String,
180
- required: false,
181
- },
182
- name: {
183
- type: String,
184
- required: false,
185
- },
186
- model: {
187
- type: String,
188
- required: false,
189
- },
190
- color: {
191
- type: String,
192
- required: false,
193
- },
194
- plateNumber: {
195
- type: String,
196
- required: false,
197
- },
198
-
199
- qrCode: {
200
- type: Boolean,
201
- required: false,
202
- },
203
- qrUniqueCode: { type: String, unique: false },
204
- disabled: {
205
- type: Boolean,
206
- required: false,
207
- },
208
- },
209
- ],
210
- customerDocuments: [
211
- {
212
- documentName: {
213
- type: String,
214
- required: true,
215
- },
216
- documentType: {
217
- type: mongoose.Schema.Types.ObjectId,
218
- ref: "DocumentType",
219
- required: true,
220
- },
221
- document: {
222
- type: String,
223
- required: true,
224
- },
225
- },
226
- ],
227
- secondaryContacts: [
228
- {
229
- name: {
230
- type: String,
231
- required: true,
232
- },
233
- phone: {
234
- type: String,
235
- required: false,
236
- },
237
- email: {
238
- type: String,
239
- required: false,
240
- },
241
- receiveNotifications: {
242
- type: Boolean,
243
- default: true,
244
- },
245
- },
246
- ],
247
- });
248
-
249
- const Customer = mongoose.model("Customer", CustomerSchema);
250
-
251
- module.exports = Customer;
1
+ const mongoose = require("mongoose");
2
+
3
+ const CustomerSchema = new mongoose.Schema({
4
+ customerNumber: {
5
+ type: Number,
6
+ required: true,
7
+ },
8
+ firstName: {
9
+ type: String,
10
+ required: true,
11
+ },
12
+ lastName: {
13
+ type: String,
14
+ required: true,
15
+ },
16
+ phoneNumber: {
17
+ type: String,
18
+ required: true,
19
+ },
20
+ idNumber: {
21
+ type: String,
22
+ required: true,
23
+ },
24
+ combineInvoices: {
25
+ type: Boolean,
26
+ default: false
27
+ },
28
+ email: {
29
+ type: String,
30
+ required: true,
31
+ },
32
+ kraPin: {
33
+ type: String,
34
+ default: null,
35
+ description: "KRA PIN for tax identification (eTims integration)",
36
+ },
37
+ digitax: {
38
+ customerId: {
39
+ type: String,
40
+ default: null
41
+ },
42
+ synced: {
43
+ type: Boolean,
44
+ default: false
45
+ },
46
+ syncedAt: Date,
47
+ errorMessage: String,
48
+ attempts: {
49
+ type: Number,
50
+ default: 0
51
+ },
52
+ lastAttemptAt: Date
53
+ },
54
+ nextOfKin: [
55
+ {
56
+ name: {
57
+ type: String,
58
+ },
59
+ relationship: {
60
+ type: String,
61
+ },
62
+ phoneNumber: {
63
+ type: String,
64
+ },
65
+ email: {
66
+ type: String,
67
+ },
68
+ canReceiveInvoice: {
69
+ type: Boolean,
70
+ default: false,
71
+ },
72
+ },
73
+ ],
74
+ customerType: {
75
+ type: String,
76
+ required: true,
77
+ },
78
+ residentType: {
79
+ type: String,
80
+ required: true,
81
+ },
82
+ facilityId: {
83
+ type: mongoose.Schema.Types.ObjectId,
84
+ ref: "Facility",
85
+ },
86
+ status: {
87
+ type: String,
88
+ required: false,
89
+ enum: ["Active", "Inactive"],
90
+ },
91
+ quickBooksId: {
92
+ type: String,
93
+ },
94
+ nonResidentUsage: {
95
+ type: String,
96
+ },
97
+
98
+ familyMembers: [
99
+ {
100
+ no: {
101
+ type: Number,
102
+ required: false,
103
+ },
104
+ name: {
105
+ type: String,
106
+ required: false,
107
+ },
108
+ phoneNumber: {
109
+ type: String,
110
+ required: false,
111
+ },
112
+ email: {
113
+ type: String,
114
+ required: false,
115
+ },
116
+ relation: {
117
+ type: String,
118
+ required: false,
119
+ },
120
+ qrCode: {
121
+ type: Boolean,
122
+ required: false,
123
+ },
124
+ addVisitor: {
125
+ type: Boolean,
126
+ required: false,
127
+ },
128
+ receiveMessage: {
129
+ type: Boolean,
130
+ required: false,
131
+ },
132
+ qrUniqueCode: {
133
+ type: String,
134
+ unique: false,
135
+ },
136
+ disabled: {
137
+ type: Boolean,
138
+ required: false,
139
+ },
140
+ },
141
+ ],
142
+ staff: [
143
+ {
144
+ no: {
145
+ type: Number,
146
+ required: false,
147
+ },
148
+ name: {
149
+ type: String,
150
+ required: false,
151
+ },
152
+ phoneNumber: {
153
+ type: String,
154
+ required: false,
155
+ },
156
+ jobRole: {
157
+ type: String,
158
+ required: false,
159
+ },
160
+ qrCode: {
161
+ type: Boolean,
162
+ required: false,
163
+ },
164
+ qrUniqueCode: { type: String, unique: false },
165
+
166
+ disabled: {
167
+ type: Boolean,
168
+ required: false,
169
+ },
170
+ },
171
+ ],
172
+ vehicles: [
173
+ {
174
+ no: {
175
+ type: Number,
176
+ required: false,
177
+ },
178
+ registration: {
179
+ type: String,
180
+ required: false,
181
+ },
182
+ name: {
183
+ type: String,
184
+ required: false,
185
+ },
186
+ model: {
187
+ type: String,
188
+ required: false,
189
+ },
190
+ color: {
191
+ type: String,
192
+ required: false,
193
+ },
194
+ plateNumber: {
195
+ type: String,
196
+ required: false,
197
+ },
198
+
199
+ qrCode: {
200
+ type: Boolean,
201
+ required: false,
202
+ },
203
+ qrUniqueCode: { type: String, unique: false },
204
+ disabled: {
205
+ type: Boolean,
206
+ required: false,
207
+ },
208
+ },
209
+ ],
210
+ customerDocuments: [
211
+ {
212
+ documentName: {
213
+ type: String,
214
+ required: true,
215
+ },
216
+ documentType: {
217
+ type: mongoose.Schema.Types.ObjectId,
218
+ ref: "DocumentType",
219
+ required: true,
220
+ },
221
+ document: {
222
+ type: String,
223
+ required: true,
224
+ },
225
+ },
226
+ ],
227
+ secondaryContacts: [
228
+ {
229
+ name: {
230
+ type: String,
231
+ required: true,
232
+ },
233
+ phone: {
234
+ type: String,
235
+ required: false,
236
+ },
237
+ email: {
238
+ type: String,
239
+ required: false,
240
+ },
241
+ receiveNotifications: {
242
+ type: Boolean,
243
+ default: true,
244
+ },
245
+ },
246
+ ],
247
+ });
248
+
249
+ const Customer = mongoose.model("Customer", CustomerSchema);
250
+
251
+ module.exports = Customer;
@@ -1,52 +1,52 @@
1
- const mongoose = require('mongoose');
2
-
3
- const customerPreferenceSchema = new mongoose.Schema(
4
- {
5
- userId: {
6
- type: mongoose.Schema.Types.ObjectId,
7
- ref: 'User',
8
- default: null,
9
- index: true,
10
- },
11
- guestId: {
12
- type: String,
13
- default: null,
14
- index: true,
15
- },
16
- purpose: {
17
- type: String,
18
- enum: ['rent', 'buy', 'any'],
19
- default: 'any',
20
- },
21
- location: {
22
- type: String,
23
- default: null,
24
- trim: true,
25
- },
26
- roomTypes: {
27
- type: [String],
28
- default: [],
29
- },
30
- lifestyle: {
31
- type: [String],
32
- default: [],
33
- },
34
- budgetMin: {
35
- type: Number,
36
- default: null,
37
- },
38
- budgetMax: {
39
- type: Number,
40
- default: null,
41
- },
42
- currency: {
43
- type: String,
44
- default: 'KES',
45
- },
46
- },
47
- { timestamps: true }
48
- );
49
-
50
- const CustomerPreference = mongoose.model('CustomerPreference', customerPreferenceSchema);
51
-
52
- module.exports = CustomerPreference;
1
+ const mongoose = require('mongoose');
2
+
3
+ const customerPreferenceSchema = new mongoose.Schema(
4
+ {
5
+ userId: {
6
+ type: mongoose.Schema.Types.ObjectId,
7
+ ref: 'User',
8
+ default: null,
9
+ index: true,
10
+ },
11
+ guestId: {
12
+ type: String,
13
+ default: null,
14
+ index: true,
15
+ },
16
+ purpose: {
17
+ type: String,
18
+ enum: ['rent', 'buy', 'any'],
19
+ default: 'any',
20
+ },
21
+ location: {
22
+ type: String,
23
+ default: null,
24
+ trim: true,
25
+ },
26
+ roomTypes: {
27
+ type: [String],
28
+ default: [],
29
+ },
30
+ lifestyle: {
31
+ type: [String],
32
+ default: [],
33
+ },
34
+ budgetMin: {
35
+ type: Number,
36
+ default: null,
37
+ },
38
+ budgetMax: {
39
+ type: Number,
40
+ default: null,
41
+ },
42
+ currency: {
43
+ type: String,
44
+ default: 'KES',
45
+ },
46
+ },
47
+ { timestamps: true }
48
+ );
49
+
50
+ const CustomerPreference = mongoose.model('CustomerPreference', customerPreferenceSchema);
51
+
52
+ module.exports = CustomerPreference;