payservedb 8.9.2 → 8.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 (193) hide show
  1. package/.env +2 -2
  2. package/ZOHO_INTEGRATION_SCHEMA.md +644 -644
  3. package/index.js +326 -327
  4. package/package.json +17 -17
  5. package/src/models/account.js +52 -52
  6. package/src/models/agent_departments.js +59 -59
  7. package/src/models/agent_notifications.js +53 -53
  8. package/src/models/agent_performance.js +127 -127
  9. package/src/models/agent_roles.js +77 -77
  10. package/src/models/agents.js +154 -154
  11. package/src/models/apilog.js +18 -18
  12. package/src/models/approvalsWorkflows.js +49 -49
  13. package/src/models/archivedapilog.js +18 -18
  14. package/src/models/asset.js +92 -92
  15. package/src/models/assetsAssignment.js +64 -64
  16. package/src/models/auditTrail.js +346 -346
  17. package/src/models/bankdetails.js +47 -47
  18. package/src/models/billerAddress.js +124 -124
  19. package/src/models/booking_invoice.js +165 -165
  20. package/src/models/bookinganalytics.js +63 -63
  21. package/src/models/bookingconfig.js +45 -45
  22. package/src/models/bookingproperty.js +179 -179
  23. package/src/models/bookingreservation.js +239 -239
  24. package/src/models/bookingrevenuerecord.js +84 -84
  25. package/src/models/budget.js +95 -95
  26. package/src/models/budgetCategory.js +19 -19
  27. package/src/models/campaigns.js +108 -108
  28. package/src/models/cashpayment.js +290 -290
  29. package/src/models/combinedUnits.js +62 -62
  30. package/src/models/combined_invoice.js +424 -424
  31. package/src/models/common_area_electricity.js +38 -38
  32. package/src/models/common_area_generator.js +41 -41
  33. package/src/models/common_area_utility_alert.js +37 -37
  34. package/src/models/common_area_water.js +39 -39
  35. package/src/models/communication_status.js +33 -33
  36. package/src/models/communication_user_opt.js +32 -32
  37. package/src/models/community_guidelines.js +35 -35
  38. package/src/models/company.js +53 -53
  39. package/src/models/coreBaseSettings.js +16 -16
  40. package/src/models/coreInvoiceSettings.js +100 -100
  41. package/src/models/counter_schema.js +21 -21
  42. package/src/models/country_tax.js +42 -42
  43. package/src/models/currency_settings.js +39 -39
  44. package/src/models/customer.js +214 -214
  45. package/src/models/customer_preference.js +52 -52
  46. package/src/models/customer_satisfaction_survey.js +297 -297
  47. package/src/models/customer_surveys.js +139 -139
  48. package/src/models/customer_tickets.js +237 -237
  49. package/src/models/dailyChecklist.js +312 -312
  50. package/src/models/default_payment_details.js +17 -17
  51. package/src/models/deliveryTimeMarks.js +18 -18
  52. package/src/models/document_type.js +19 -19
  53. package/src/models/dutyRosterChecklist.js +250 -250
  54. package/src/models/dutyroster.js +136 -136
  55. package/src/models/email.js +37 -37
  56. package/src/models/email_sms_queue.js +61 -61
  57. package/src/models/email_thread.js +35 -35
  58. package/src/models/entry_exit.js +53 -53
  59. package/src/models/expense.js +99 -99
  60. package/src/models/expense_category.js +45 -45
  61. package/src/models/facility.js +76 -76
  62. package/src/models/facilityBillingPrices.js +29 -29
  63. package/src/models/facilityInvoice.js +240 -240
  64. package/src/models/facilityInvoicePayment.js +52 -52
  65. package/src/models/facilityInvoiceRecipient.js +32 -32
  66. package/src/models/facilityWalletTransactionsMetadata.js +236 -236
  67. package/src/models/facility_departements.js +20 -20
  68. package/src/models/facility_payment_details.js +20 -20
  69. package/src/models/facility_rating.js +78 -78
  70. package/src/models/facilityasset.js +25 -25
  71. package/src/models/faq.js +14 -14
  72. package/src/models/gl_account_double_entries.js +25 -25
  73. package/src/models/gl_accounts.js +56 -56
  74. package/src/models/gl_entries.js +49 -49
  75. package/src/models/goodsReceivedNotes.js +115 -115
  76. package/src/models/guard.js +47 -47
  77. package/src/models/handover.js +258 -258
  78. package/src/models/inspection_category.js +38 -38
  79. package/src/models/invoice.js +480 -484
  80. package/src/models/invoice_generation_approval.js +86 -86
  81. package/src/models/invoicing_schedule.js +40 -40
  82. package/src/models/item_inspection.js +96 -96
  83. package/src/models/knowledge_base.js +109 -109
  84. package/src/models/knowledge_base_rating.js +44 -44
  85. package/src/models/leaseagreement.js +243 -243
  86. package/src/models/leasetemplate.js +17 -17
  87. package/src/models/levy.js +212 -223
  88. package/src/models/levy_invoice_settings.js +26 -26
  89. package/src/models/levycontract.js +216 -216
  90. package/src/models/levytype.js +23 -23
  91. package/src/models/maintenance_service_vendor.js +38 -38
  92. package/src/models/maintenance_services.js +17 -17
  93. package/src/models/maintenancerequisition.js +31 -31
  94. package/src/models/master_workplan.js +32 -32
  95. package/src/models/master_workplan_child.js +34 -34
  96. package/src/models/message.js +38 -38
  97. package/src/models/module.js +21 -21
  98. package/src/models/movein_application.js +29 -29
  99. package/src/models/movein_landlord.js +18 -18
  100. package/src/models/movein_user.js +15 -15
  101. package/src/models/notification.js +44 -44
  102. package/src/models/paymentTermsMarks.js +19 -19
  103. package/src/models/penalty.js +76 -76
  104. package/src/models/pendingCredentials.js +32 -32
  105. package/src/models/powerMeterCommunicationProtocol.js +17 -17
  106. package/src/models/powerMeterCustomerAccount.js +78 -78
  107. package/src/models/powerMeterCustomerBand.js +14 -14
  108. package/src/models/powerMeterDailyReading.js +30 -30
  109. package/src/models/powerMeterGateways.js +40 -40
  110. package/src/models/powerMeterMonthlyReading.js +34 -34
  111. package/src/models/powerMeterPowerCharges.js +85 -85
  112. package/src/models/powerMeterSettings.js +159 -159
  113. package/src/models/powerMeterSingleDayReading.js +32 -32
  114. package/src/models/powerMeters.js +116 -116
  115. package/src/models/powerMetersManufacturer.js +14 -14
  116. package/src/models/power_meter_account.js +81 -81
  117. package/src/models/power_meter_command_logs.js +30 -30
  118. package/src/models/power_meter_command_queue.js +33 -33
  119. package/src/models/power_meter_negative_balance.js +44 -44
  120. package/src/models/power_prepaid_credits.js +47 -47
  121. package/src/models/power_prepaid_debits.js +53 -53
  122. package/src/models/power_prepaid_orders.js +78 -78
  123. package/src/models/power_sms_notification.js +26 -26
  124. package/src/models/privacy_policy.js +19 -19
  125. package/src/models/propertyManagerContract.js +556 -556
  126. package/src/models/propertyManagerRevenue.js +195 -195
  127. package/src/models/purchaseOrderInvoice.js +74 -74
  128. package/src/models/purchase_order.js +213 -213
  129. package/src/models/purchase_request.js +110 -110
  130. package/src/models/quickbooks_config.js +52 -52
  131. package/src/models/refresh_token.js +23 -23
  132. package/src/models/reminder.js +197 -197
  133. package/src/models/report.js +13 -13
  134. package/src/models/resident.js +121 -121
  135. package/src/models/rfq_details.js +131 -131
  136. package/src/models/rfq_response.js +153 -153
  137. package/src/models/service_charge_invoice_upload.js +42 -42
  138. package/src/models/service_charge_payments.js +27 -27
  139. package/src/models/servicerequest.js +55 -55
  140. package/src/models/settings.js +62 -62
  141. package/src/models/short_urls.js +21 -21
  142. package/src/models/smart_meter_daily_consumption.js +44 -44
  143. package/src/models/sms_africastalking.js +20 -20
  144. package/src/models/sms_balance_notification.js +26 -26
  145. package/src/models/sms_meliora.js +20 -20
  146. package/src/models/staff.js +36 -36
  147. package/src/models/stocksandspare.js +161 -161
  148. package/src/models/suppliers.js +74 -74
  149. package/src/models/terms_and_conditions.js +19 -19
  150. package/src/models/tickets.js +186 -186
  151. package/src/models/tickets_category.js +72 -72
  152. package/src/models/unitManagementTemplate.js +44 -44
  153. package/src/models/unitasset.js +25 -25
  154. package/src/models/units.js +130 -130
  155. package/src/models/user.js +186 -186
  156. package/src/models/valueaddedservices.js +21 -21
  157. package/src/models/vas_invoices_upload.js +50 -50
  158. package/src/models/vas_payments.js +24 -24
  159. package/src/models/vasinvoice.js +192 -192
  160. package/src/models/vasvendor.js +52 -52
  161. package/src/models/visitLog.js +95 -95
  162. package/src/models/visitor.js +67 -67
  163. package/src/models/waitlist.js +45 -45
  164. package/src/models/wallet.js +44 -44
  165. package/src/models/wallet_transactions.js +50 -50
  166. package/src/models/water_invoice.js +351 -351
  167. package/src/models/water_meter_Command_Queue.js +33 -33
  168. package/src/models/water_meter_account.js +86 -86
  169. package/src/models/water_meter_billing.js +58 -58
  170. package/src/models/water_meter_combined_accounts.js +92 -92
  171. package/src/models/water_meter_communication.js +17 -17
  172. package/src/models/water_meter_communication_logs.js +39 -39
  173. package/src/models/water_meter_concentrator.js +70 -70
  174. package/src/models/water_meter_daily_history.js +32 -32
  175. package/src/models/water_meter_high_risk.js +36 -36
  176. package/src/models/water_meter_iot_cards.js +34 -34
  177. package/src/models/water_meter_loan_deduction.js +134 -134
  178. package/src/models/water_meter_manufacturer.js +35 -35
  179. package/src/models/water_meter_monthly_history.js +36 -36
  180. package/src/models/water_meter_negative_amounts.js +44 -44
  181. package/src/models/water_meter_settings.js +290 -290
  182. package/src/models/water_meter_single_day_history.js +34 -34
  183. package/src/models/water_meter_size.js +15 -15
  184. package/src/models/water_meters.js +176 -176
  185. package/src/models/water_meters_delivery.js +76 -76
  186. package/src/models/water_prepaid_credit.js +47 -47
  187. package/src/models/water_prepaid_debit.js +50 -50
  188. package/src/models/whatsapp_conversation.js +23 -23
  189. package/src/models/workorder.js +49 -49
  190. package/src/models/zohoAccount.js +453 -453
  191. package/src/models/zohoIntegration.js +262 -262
  192. package/src/models/zohoItem.js +504 -504
  193. package/src/models/power_invoice.js +0 -471
package/index.js CHANGED
@@ -1,327 +1,326 @@
1
- const mongoose = require("mongoose");
2
- const whatsapp_conversation = require("./src/models/whatsapp_conversation");
3
- require("dotenv").config();
4
-
5
- // Maintain a record of open connections for each database
6
- const connections = {};
7
-
8
- // Utility function to connect to MongoDB
9
- async function connectToMongoDB(
10
- dbName,
11
- secured,
12
- username,
13
- password,
14
- url,
15
- port,
16
- ) {
17
- try {
18
- if (secured === false) {
19
- const url_ = url + ":" + port;
20
- const connectionString = `mongodb://${url_}/${dbName}`;
21
- await mongoose.connect(connectionString, {
22
- useNewUrlParser: true,
23
- });
24
- console.log("Connected to MongoDB");
25
- } else {
26
- const url_ = `${username}:${password}@${url}:${port}`;
27
- const source = "?authSource=admin";
28
- const connectionString = `mongodb://${url_}/${dbName}${source}`;
29
- await mongoose.connect(connectionString, {
30
- useNewUrlParser: true,
31
- });
32
- console.log("Connected to MongoDB");
33
- }
34
- } catch (err) {
35
- console.error("Error connecting to MongoDB:", err);
36
- throw err;
37
- }
38
- }
39
-
40
- // Function to switch databases dynamically
41
- async function switchDB(dbName) {
42
- // Check if there's already a connection to the desired database
43
- if (connections[dbName]) {
44
- return connections[dbName]; // Return existing connection
45
- }
46
-
47
- try {
48
- // Use environment variables for connection parameters - same as in connectToMongoDB
49
- const username = process.env.MONGODB_USER;
50
- const password = process.env.MONGODB_PASSWORD;
51
- const url = process.env.MONGODB_HOST;
52
- const port = process.env.MONGODB_PORT;
53
- const source = "?authSource=admin";
54
-
55
- const connectionString = `mongodb://${username}:${password}@${url}:${port}/${dbName}${source}`;
56
- const dbConnection = await mongoose.createConnection(connectionString, {
57
- useNewUrlParser: true,
58
- });
59
-
60
- connections[dbName] = dbConnection; // Store the connection for reuse
61
- console.log(`Switched to database: ${dbName}`);
62
- return dbConnection;
63
- } catch (err) {
64
- console.error(`Error switching to database: ${dbName}`, err);
65
- throw err;
66
- }
67
- }
68
-
69
- // Importing all model files (Note: models may need to be re-registered for different connections)
70
- // This maintains backward compatibility for existing services
71
- const models = {
72
- User: require("./src/models/user"),
73
- Company: require("./src/models/company"),
74
- Customer: require("./src/models/customer"),
75
- FacilityEmailDetails: require("./src/models/email"),
76
- Module: require("./src/models/module"),
77
- Facility: require("./src/models/facility"),
78
- RefreshToken: require("./src/models/refresh_token"),
79
- ApiLog: require("./src/models/apilog"),
80
- ArchivedApiLog: require("./src/models/archivedapilog"),
81
- FacilityAsset: require("./src/models/facilityasset"),
82
- Unit: require("./src/models/units"),
83
- FAQ: require("./src/models/faq"),
84
- UnitAsset: require("./src/models/unitasset"),
85
- CombinedUnit: require("./src/models/combinedUnits"),
86
- Message: require("./src/models/message"),
87
- SMSAfricastalking: require("./src/models/sms_africastalking"),
88
- SMSMeliora: require("./src/models/sms_meliora"),
89
- EntryExit: require("./src/models/entry_exit"),
90
- Guard: require("./src/models/guard"),
91
- Visitor: require("./src/models/visitor"),
92
- VisitLog: require("./src/models/visitLog"),
93
- Settings: require("./src/models/settings"),
94
- Levy: require("./src/models/levy"),
95
- LevyType: require("./src/models/levytype"),
96
- LevyContract: require("./src/models/levycontract"),
97
- Invoice: require("./src/models/invoice"),
98
- CombinedInvoice: require("./src/models/combined_invoice"),
99
- InvoiceGeneration: require("./src/models/invoice_generation_approval"),
100
- ShortUrl: require("./src/models/short_urls"),
101
- InvoicingSchedule: require("./src/models/invoicing_schedule"),
102
- Reminder: require("./src/models/reminder"),
103
- Penalty: require("./src/models/penalty"),
104
- Notifiaction: require("./src/models/notification"),
105
- Resident: require("./src/models/resident"),
106
- Asset: require("./src/models/asset"),
107
- DutyRoster: require("./src/models/dutyroster"),
108
- LeaseTemplate: require("./src/models/leasetemplate"),
109
- Report: require("./src/models/report"),
110
- Ticket: require("./src/models/tickets"),
111
- Rating: require("./src/models/facility_rating"),
112
- Stocksandspare: require("./src/models/stocksandspare"),
113
- ServiceVendor: require("./src/models/maintenance_service_vendor"),
114
- MaintenanceServices: require("./src/models/maintenance_services"),
115
- StockRequisition: require("./src/models/maintenancerequisition"),
116
- LeaseAgreement: require("./src/models/leaseagreement"),
117
- WorkOrder: require("./src/models/workorder"),
118
- ValueAddedService: require("./src/models/valueaddedservices"),
119
- VasInvoice: require("./src/models/vasinvoice"),
120
- VasVendor: require("./src/models/vasvendor"),
121
- Staff: require("./src/models/staff"),
122
- ServiceRequest: require("./src/models/servicerequest"),
123
- CountryTaxRate: require("./src/models/country_tax"),
124
- WaterMeter: require("./src/models/water_meters"),
125
- DailyConsumption: require("./src/models/smart_meter_daily_consumption"),
126
- WaterMeterSettings: require("./src/models/water_meter_settings"),
127
- WaterCombinedMeterAccount: require("./src/models/water_meter_combined_accounts"),
128
- AnalogBilling: require("./src/models/water_meter_billing"),
129
- MeterSize: require("./src/models/water_meter_size"),
130
- WaterInvoice: require("./src/models/water_invoice"),
131
- MeterProtocol: require("./src/models/water_meter_communication"),
132
- MeterManufacturer: require("./src/models/water_meter_manufacturer"),
133
- SmsNotification: require("./src/models/sms_balance_notification"),
134
- MeterIotCard: require("./src/models/water_meter_iot_cards"),
135
- MetersDelivery: require("./src/models/water_meters_delivery"),
136
- Notification: require("./src/models/notification"),
137
- Concentrator: require("./src/models/water_meter_concentrator"),
138
- Handover: require("./src/models/handover"),
139
- Budget: require("./src/models/budget"),
140
- BudgetCategory: require("./src/models/budgetCategory"),
141
- Expense: require("./src/models/expense"),
142
- ExpenseCategory: require("./src/models/expense_category"),
143
- InvoiceSettings: require("./src/models/levy_invoice_settings"),
144
- Account: require("./src/models/account"),
145
- FacilityPaymentDetails: require("./src/models/facility_payment_details"),
146
- DefaultPaymentDetails: require("./src/models/default_payment_details"),
147
- Currency: require("./src/models/currency_settings"),
148
- WaterMeterAccount: require("./src/models/water_meter_account"),
149
- WaterMeterLoanDeduction: require("./src/models/water_meter_loan_deduction"),
150
- SingleDayWaterMeterHistory: require("./src/models/water_meter_single_day_history"),
151
- DailyWaterMeterHistory: require("./src/models/water_meter_daily_history"),
152
- MonthlyWaterMeterHistory: require("./src/models/water_meter_monthly_history"),
153
- WaterPrepaidCredit: require("./src/models/water_prepaid_credit"),
154
- WaterPrepaidDebit: require("./src/models/water_prepaid_debit"),
155
- MeterLog: require("./src/models/water_meter_communication_logs"),
156
- CashPayment: require("./src/models/cashpayment"),
157
- VasPayment: require("./src/models/vas_payments"),
158
- VasInvoicesQuickBooks: require("./src/models/vas_invoices_upload"),
159
- ServiceChargePayment: require("./src/models/service_charge_payments"),
160
- ServiceChargeInvoiceUpload: require("./src/models/service_charge_invoice_upload"),
161
- Campaign: require("./src/models/campaigns"),
162
- InspectionItem: require("./src/models/item_inspection"),
163
- Supplier: require("./src/models/suppliers"),
164
- PurchaseRequest: require("./src/models/purchase_request"),
165
- PurchaseOrder: require("./src/models/purchase_order"),
166
- PaymentTermMark: require("./src/models/paymentTermsMarks"),
167
- DeliveryTimeMark: require("./src/models/deliveryTimeMarks"),
168
- RFQDetails: require("./src/models/rfq_details"),
169
- RFQResponse: require("./src/models/rfq_response"),
170
- ApprovalWorkflow: require("./src/models/approvalsWorkflows"),
171
- CommonAreaElectricityReading: require("./src/models/common_area_electricity"),
172
- CommonAreaWaterReading: require("./src/models/common_area_water"),
173
- CommonAreaGeneratorReading: require("./src/models/common_area_generator"),
174
- CommonAreaUtilityAlert: require("./src/models/common_area_utility_alert"),
175
- BookingProperty: require("./src/models/bookingproperty"),
176
- BookingReservation: require("./src/models/bookingreservation"),
177
- BookingConfig: require("./src/models/bookingconfig"),
178
- BookingAnalytics: require("./src/models/bookinganalytics"),
179
- BookingInvoice: require("./src/models/booking_invoice"),
180
- BankDetails: require("./src/models/bankdetails"),
181
- RevenueRecord: require("./src/models/bookingrevenuerecord"),
182
- GLAccount: require("./src/models/gl_accounts"),
183
- GLEntry: require("./src/models/gl_entries"),
184
- GLAccountDoubleEntries: require("./src/models/gl_account_double_entries"),
185
- PendingCredential: require("./src/models/pendingCredentials"),
186
- UnitManagementTemplate: require("./src/models/unitManagementTemplate"),
187
- PropertyManagerRevenue: require("./src/models/propertyManagerRevenue"),
188
- PropertyManagerContract: require("./src/models/propertyManagerContract"),
189
- BillerAddress: require("./src/models/billerAddress"),
190
- AssetAssignment: require("./src/models/assetsAssignment"),
191
- Wallet: require("./src/models/wallet"),
192
- WalletTransaction: require("./src/models/wallet_transactions"),
193
- GoodsReceivedNote: require("./src/models/goodsReceivedNotes"),
194
- CommunicationStatus: require("./src/models/communication_status"),
195
- MeterCommandQueue: require("./src/models/water_meter_Command_Queue"),
196
- FacilityDepartment: require("./src/models/facility_departements"),
197
- EmailSmsQueue: require("./src/models/email_sms_queue"),
198
- PurchaseOrderInvoice: require("./src/models/purchaseOrderInvoice"),
199
- PowerInvoice: require("./src/models/power_invoice"),
200
- PowerMeterCustomerBand: require("./src/models/powerMeterCustomerBand"),
201
- PowerMeterCommunicationProtocol: require("./src/models/powerMeterCommunicationProtocol"),
202
- PowerMeterDailyReading: require("./src/models/powerMeterDailyReading"),
203
- PowerMeterPowerCharge: require("./src/models/powerMeterPowerCharges"),
204
- PowerMeterGateway: require("./src/models/powerMeterGateways"),
205
- PowerMeters: require("./src/models/powerMeters"),
206
- PowerMeterSingleDayReading: require("./src/models/powerMeterSingleDayReading"),
207
- PowerMeterAccount: require("./src/models/power_meter_account"),
208
- PowerMeterLog: require("./src/models/power_meter_command_logs"),
209
- PowerMeterManufacturer: require("./src/models/powerMetersManufacturer"),
210
- PowerMeterMonthlyReading: require("./src/models/powerMeterMonthlyReading"),
211
- PowerMeterSettings: require("./src/models/powerMeterSettings"),
212
- PowerPrepaidDebit: require("./src/models/power_prepaid_debits"),
213
- PowerPrepaidCredit: require("./src/models/power_prepaid_credits"),
214
- PowerNegativeBalance: require("./src/models/power_meter_negative_balance"),
215
- PowerCommandQueue: require("./src/models/power_meter_command_queue"),
216
- PowerNotification: require("./src/models/power_sms_notification"),
217
- PowerPrepaidOrder: require("./src/models/power_prepaid_orders"),
218
- FacilityWalletTransactionsMetadata: require("./src/models/facilityWalletTransactionsMetadata"),
219
- NegativeBalance: require("./src/models/water_meter_negative_amounts"),
220
- MasterWorkplan: require("./src/models/master_workplan"),
221
- MasterWorkplanChild: require("./src/models/master_workplan_child"),
222
- DutyRosterChecklist: require("./src/models/dutyRosterChecklist"),
223
- AuditTrail: require("./src/models/auditTrail"),
224
- DailyChecklist: require("./src/models/dailyChecklist"),
225
- CoreInvoiceSettings: require("./src/models/coreInvoiceSettings"),
226
- FacilityInvoice: require("./src/models/facilityInvoice"),
227
- CoreBaseSettings: require("./src/models/coreBaseSettings"),
228
- Recipient: require("./src/models/facilityInvoiceRecipient"),
229
- FacilityBillingPrice: require("./src/models/facilityBillingPrices"),
230
- FacilityInvoicePayment: require("./src/models/facilityInvoicePayment"),
231
- CommunicationUserOpt: require("./src/models/communication_user_opt"),
232
- Agent: require("./src/models/agents"),
233
- AgentPerformance: require("./src/models/agent_performance"),
234
- CustomerTicket: require("./src/models/customer_tickets"),
235
- CustomerSurvey: require("./src/models/customer_surveys"),
236
- KnowledgeBase: require("./src/models/knowledge_base"),
237
- KnowledgeBaseRating: require("./src/models/knowledge_base_rating"),
238
- AgentNotification: require("./src/models/agent_notifications"),
239
- TicketCategory: require("./src/models/tickets_category"),
240
- InspectionCategory: require("./src/models/inspection_category"),
241
- AgentRole: require("./src/models/agent_roles"),
242
- CustomerSatisfactionSurvey: require("./src/models/customer_satisfaction_survey"),
243
- AgentDepartment: require("./src/models/agent_departments"),
244
- DocumentType: require("./src/models/document_type"),
245
- Counter: require("./src/models/counter_schema"),
246
- ZohoIntegration: require("./src/models/zohoIntegration"),
247
- ZohoItem: require("./src/models/zohoItem"),
248
- ZohoAccount: require("./src/models/zohoAccount"),
249
- QuickBooksConfig: require("./src/models/quickbooks_config"),
250
- PrivacyPolicy: require("./src/models/privacy_policy"),
251
- TermsAndConditions: require("./src/models/terms_and_conditions"),
252
- CommunityGuidelines: require("./src/models/community_guidelines"),
253
- WhatsappConversation : require("./src/models/whatsapp_conversation"),
254
- CustomerPreference: require("./src/models/customer_preference"),
255
- MoveinApplication: require("./src/models/movein_application"),
256
- EmailThread: require("./src/models/email_thread"),
257
- MoveinLandlord: require("./src/models/movein_landlord"),
258
- MoveinUser: require("./src/models/movein_user"),
259
- };
260
-
261
- // Function to get models dynamically from a specific database connection
262
- async function getModelFromDB(dbConnection, modelName, schema) {
263
- if (!dbConnection.models[modelName]) {
264
- return dbConnection.model(modelName, schema); // Register the model in the db connection
265
- }
266
- return dbConnection.models[modelName]; // Return existing model if already registered
267
- }
268
-
269
- // Function to initialize service with specific models - NEW FEATURE
270
- function initializeService(modelNames = []) {
271
- let currentConnection = null;
272
-
273
- // Enhanced connect function that only registers specified models
274
- async function connectWithModels(
275
- dbName,
276
- secured,
277
- username,
278
- password,
279
- url,
280
- port,
281
- ) {
282
- await connectToMongoDB(dbName, secured, username, password, url, port);
283
- currentConnection = mongoose.connection;
284
-
285
- // Only register the models specified in modelNames
286
- modelNames.forEach((modelName) => {
287
- if (models[modelName]) {
288
- let schema;
289
-
290
- // Extract schema from the imported model
291
- if (models[modelName].schema) {
292
- schema = models[modelName].schema;
293
- } else {
294
- console.warn(`Unable to extract schema from model ${modelName}`);
295
- return;
296
- }
297
-
298
- if (!currentConnection.models[modelName]) {
299
- const modelInstance = currentConnection.model(modelName, schema);
300
- // Make model globally accessible through payservedb
301
- module.exports[modelName] = modelInstance;
302
- } else {
303
- module.exports[modelName] = currentConnection.models[modelName];
304
- }
305
- } else {
306
- console.warn(`Model ${modelName} not found in models registry`);
307
- }
308
- });
309
-
310
- return module.exports;
311
- }
312
-
313
- return {
314
- connectToMongoDB: connectWithModels,
315
- switchDB,
316
- getModelFromDB,
317
- getCurrentConnection: () => currentConnection,
318
- };
319
- }
320
-
321
- module.exports = {
322
- connectToMongoDB,
323
- switchDB,
324
- getModelFromDB,
325
- initializeService,
326
- ...models,
327
- };
1
+ const mongoose = require("mongoose");
2
+ const whatsapp_conversation = require("./src/models/whatsapp_conversation");
3
+ require("dotenv").config();
4
+
5
+ // Maintain a record of open connections for each database
6
+ const connections = {};
7
+
8
+ // Utility function to connect to MongoDB
9
+ async function connectToMongoDB(
10
+ dbName,
11
+ secured,
12
+ username,
13
+ password,
14
+ url,
15
+ port,
16
+ ) {
17
+ try {
18
+ if (secured === false) {
19
+ const url_ = url + ":" + port;
20
+ const connectionString = `mongodb://${url_}/${dbName}`;
21
+ await mongoose.connect(connectionString, {
22
+ useNewUrlParser: true,
23
+ });
24
+ console.log("Connected to MongoDB");
25
+ } else {
26
+ const url_ = `${username}:${password}@${url}:${port}`;
27
+ const source = "?authSource=admin";
28
+ const connectionString = `mongodb://${url_}/${dbName}${source}`;
29
+ await mongoose.connect(connectionString, {
30
+ useNewUrlParser: true,
31
+ });
32
+ console.log("Connected to MongoDB");
33
+ }
34
+ } catch (err) {
35
+ console.error("Error connecting to MongoDB:", err);
36
+ throw err;
37
+ }
38
+ }
39
+
40
+ // Function to switch databases dynamically
41
+ async function switchDB(dbName) {
42
+ // Check if there's already a connection to the desired database
43
+ if (connections[dbName]) {
44
+ return connections[dbName]; // Return existing connection
45
+ }
46
+
47
+ try {
48
+ // Use environment variables for connection parameters - same as in connectToMongoDB
49
+ const username = process.env.MONGODB_USER;
50
+ const password = process.env.MONGODB_PASSWORD;
51
+ const url = process.env.MONGODB_HOST;
52
+ const port = process.env.MONGODB_PORT;
53
+ const source = "?authSource=admin";
54
+
55
+ const connectionString = `mongodb://${username}:${password}@${url}:${port}/${dbName}${source}`;
56
+ const dbConnection = await mongoose.createConnection(connectionString, {
57
+ useNewUrlParser: true,
58
+ });
59
+
60
+ connections[dbName] = dbConnection; // Store the connection for reuse
61
+ console.log(`Switched to database: ${dbName}`);
62
+ return dbConnection;
63
+ } catch (err) {
64
+ console.error(`Error switching to database: ${dbName}`, err);
65
+ throw err;
66
+ }
67
+ }
68
+
69
+ // Importing all model files (Note: models may need to be re-registered for different connections)
70
+ // This maintains backward compatibility for existing services
71
+ const models = {
72
+ User: require("./src/models/user"),
73
+ Company: require("./src/models/company"),
74
+ Customer: require("./src/models/customer"),
75
+ FacilityEmailDetails: require("./src/models/email"),
76
+ Module: require("./src/models/module"),
77
+ Facility: require("./src/models/facility"),
78
+ RefreshToken: require("./src/models/refresh_token"),
79
+ ApiLog: require("./src/models/apilog"),
80
+ ArchivedApiLog: require("./src/models/archivedapilog"),
81
+ FacilityAsset: require("./src/models/facilityasset"),
82
+ Unit: require("./src/models/units"),
83
+ FAQ: require("./src/models/faq"),
84
+ UnitAsset: require("./src/models/unitasset"),
85
+ CombinedUnit: require("./src/models/combinedUnits"),
86
+ Message: require("./src/models/message"),
87
+ SMSAfricastalking: require("./src/models/sms_africastalking"),
88
+ SMSMeliora: require("./src/models/sms_meliora"),
89
+ EntryExit: require("./src/models/entry_exit"),
90
+ Guard: require("./src/models/guard"),
91
+ Visitor: require("./src/models/visitor"),
92
+ VisitLog: require("./src/models/visitLog"),
93
+ Settings: require("./src/models/settings"),
94
+ Levy: require("./src/models/levy"),
95
+ LevyType: require("./src/models/levytype"),
96
+ LevyContract: require("./src/models/levycontract"),
97
+ Invoice: require("./src/models/invoice"),
98
+ CombinedInvoice: require("./src/models/combined_invoice"),
99
+ InvoiceGeneration: require("./src/models/invoice_generation_approval"),
100
+ ShortUrl: require("./src/models/short_urls"),
101
+ InvoicingSchedule: require("./src/models/invoicing_schedule"),
102
+ Reminder: require("./src/models/reminder"),
103
+ Penalty: require("./src/models/penalty"),
104
+ Notifiaction: require("./src/models/notification"),
105
+ Resident: require("./src/models/resident"),
106
+ Asset: require("./src/models/asset"),
107
+ DutyRoster: require("./src/models/dutyroster"),
108
+ LeaseTemplate: require("./src/models/leasetemplate"),
109
+ Report: require("./src/models/report"),
110
+ Ticket: require("./src/models/tickets"),
111
+ Rating: require("./src/models/facility_rating"),
112
+ Stocksandspare: require("./src/models/stocksandspare"),
113
+ ServiceVendor: require("./src/models/maintenance_service_vendor"),
114
+ MaintenanceServices: require("./src/models/maintenance_services"),
115
+ StockRequisition: require("./src/models/maintenancerequisition"),
116
+ LeaseAgreement: require("./src/models/leaseagreement"),
117
+ WorkOrder: require("./src/models/workorder"),
118
+ ValueAddedService: require("./src/models/valueaddedservices"),
119
+ VasInvoice: require("./src/models/vasinvoice"),
120
+ VasVendor: require("./src/models/vasvendor"),
121
+ Staff: require("./src/models/staff"),
122
+ ServiceRequest: require("./src/models/servicerequest"),
123
+ CountryTaxRate: require("./src/models/country_tax"),
124
+ WaterMeter: require("./src/models/water_meters"),
125
+ DailyConsumption: require("./src/models/smart_meter_daily_consumption"),
126
+ WaterMeterSettings: require("./src/models/water_meter_settings"),
127
+ WaterCombinedMeterAccount: require("./src/models/water_meter_combined_accounts"),
128
+ AnalogBilling: require("./src/models/water_meter_billing"),
129
+ MeterSize: require("./src/models/water_meter_size"),
130
+ WaterInvoice: require("./src/models/water_invoice"),
131
+ MeterProtocol: require("./src/models/water_meter_communication"),
132
+ MeterManufacturer: require("./src/models/water_meter_manufacturer"),
133
+ SmsNotification: require("./src/models/sms_balance_notification"),
134
+ MeterIotCard: require("./src/models/water_meter_iot_cards"),
135
+ MetersDelivery: require("./src/models/water_meters_delivery"),
136
+ Notification: require("./src/models/notification"),
137
+ Concentrator: require("./src/models/water_meter_concentrator"),
138
+ Handover: require("./src/models/handover"),
139
+ Budget: require("./src/models/budget"),
140
+ BudgetCategory: require("./src/models/budgetCategory"),
141
+ Expense: require("./src/models/expense"),
142
+ ExpenseCategory: require("./src/models/expense_category"),
143
+ InvoiceSettings: require("./src/models/levy_invoice_settings"),
144
+ Account: require("./src/models/account"),
145
+ FacilityPaymentDetails: require("./src/models/facility_payment_details"),
146
+ DefaultPaymentDetails: require("./src/models/default_payment_details"),
147
+ Currency: require("./src/models/currency_settings"),
148
+ WaterMeterAccount: require("./src/models/water_meter_account"),
149
+ WaterMeterLoanDeduction: require("./src/models/water_meter_loan_deduction"),
150
+ SingleDayWaterMeterHistory: require("./src/models/water_meter_single_day_history"),
151
+ DailyWaterMeterHistory: require("./src/models/water_meter_daily_history"),
152
+ MonthlyWaterMeterHistory: require("./src/models/water_meter_monthly_history"),
153
+ WaterPrepaidCredit: require("./src/models/water_prepaid_credit"),
154
+ WaterPrepaidDebit: require("./src/models/water_prepaid_debit"),
155
+ MeterLog: require("./src/models/water_meter_communication_logs"),
156
+ CashPayment: require("./src/models/cashpayment"),
157
+ VasPayment: require("./src/models/vas_payments"),
158
+ VasInvoicesQuickBooks: require("./src/models/vas_invoices_upload"),
159
+ ServiceChargePayment: require("./src/models/service_charge_payments"),
160
+ ServiceChargeInvoiceUpload: require("./src/models/service_charge_invoice_upload"),
161
+ Campaign: require("./src/models/campaigns"),
162
+ InspectionItem: require("./src/models/item_inspection"),
163
+ Supplier: require("./src/models/suppliers"),
164
+ PurchaseRequest: require("./src/models/purchase_request"),
165
+ PurchaseOrder: require("./src/models/purchase_order"),
166
+ PaymentTermMark: require("./src/models/paymentTermsMarks"),
167
+ DeliveryTimeMark: require("./src/models/deliveryTimeMarks"),
168
+ RFQDetails: require("./src/models/rfq_details"),
169
+ RFQResponse: require("./src/models/rfq_response"),
170
+ ApprovalWorkflow: require("./src/models/approvalsWorkflows"),
171
+ CommonAreaElectricityReading: require("./src/models/common_area_electricity"),
172
+ CommonAreaWaterReading: require("./src/models/common_area_water"),
173
+ CommonAreaGeneratorReading: require("./src/models/common_area_generator"),
174
+ CommonAreaUtilityAlert: require("./src/models/common_area_utility_alert"),
175
+ BookingProperty: require("./src/models/bookingproperty"),
176
+ BookingReservation: require("./src/models/bookingreservation"),
177
+ BookingConfig: require("./src/models/bookingconfig"),
178
+ BookingAnalytics: require("./src/models/bookinganalytics"),
179
+ BookingInvoice: require("./src/models/booking_invoice"),
180
+ BankDetails: require("./src/models/bankdetails"),
181
+ RevenueRecord: require("./src/models/bookingrevenuerecord"),
182
+ GLAccount: require("./src/models/gl_accounts"),
183
+ GLEntry: require("./src/models/gl_entries"),
184
+ GLAccountDoubleEntries: require("./src/models/gl_account_double_entries"),
185
+ PendingCredential: require("./src/models/pendingCredentials"),
186
+ UnitManagementTemplate: require("./src/models/unitManagementTemplate"),
187
+ PropertyManagerRevenue: require("./src/models/propertyManagerRevenue"),
188
+ PropertyManagerContract: require("./src/models/propertyManagerContract"),
189
+ BillerAddress: require("./src/models/billerAddress"),
190
+ AssetAssignment: require("./src/models/assetsAssignment"),
191
+ Wallet: require("./src/models/wallet"),
192
+ WalletTransaction: require("./src/models/wallet_transactions"),
193
+ GoodsReceivedNote: require("./src/models/goodsReceivedNotes"),
194
+ CommunicationStatus: require("./src/models/communication_status"),
195
+ MeterCommandQueue: require("./src/models/water_meter_Command_Queue"),
196
+ FacilityDepartment: require("./src/models/facility_departements"),
197
+ EmailSmsQueue: require("./src/models/email_sms_queue"),
198
+ PurchaseOrderInvoice: require("./src/models/purchaseOrderInvoice"),
199
+ PowerMeterCustomerBand: require("./src/models/powerMeterCustomerBand"),
200
+ PowerMeterCommunicationProtocol: require("./src/models/powerMeterCommunicationProtocol"),
201
+ PowerMeterDailyReading: require("./src/models/powerMeterDailyReading"),
202
+ PowerMeterPowerCharge: require("./src/models/powerMeterPowerCharges"),
203
+ PowerMeterGateway: require("./src/models/powerMeterGateways"),
204
+ PowerMeters: require("./src/models/powerMeters"),
205
+ PowerMeterSingleDayReading: require("./src/models/powerMeterSingleDayReading"),
206
+ PowerMeterAccount: require("./src/models/power_meter_account"),
207
+ PowerMeterLog: require("./src/models/power_meter_command_logs"),
208
+ PowerMeterManufacturer: require("./src/models/powerMetersManufacturer"),
209
+ PowerMeterMonthlyReading: require("./src/models/powerMeterMonthlyReading"),
210
+ PowerMeterSettings: require("./src/models/powerMeterSettings"),
211
+ PowerPrepaidDebit: require("./src/models/power_prepaid_debits"),
212
+ PowerPrepaidCredit: require("./src/models/power_prepaid_credits"),
213
+ PowerNegativeBalance: require("./src/models/power_meter_negative_balance"),
214
+ PowerCommandQueue: require("./src/models/power_meter_command_queue"),
215
+ PowerNotification: require("./src/models/power_sms_notification"),
216
+ PowerPrepaidOrder: require("./src/models/power_prepaid_orders"),
217
+ FacilityWalletTransactionsMetadata: require("./src/models/facilityWalletTransactionsMetadata"),
218
+ NegativeBalance: require("./src/models/water_meter_negative_amounts"),
219
+ MasterWorkplan: require("./src/models/master_workplan"),
220
+ MasterWorkplanChild: require("./src/models/master_workplan_child"),
221
+ DutyRosterChecklist: require("./src/models/dutyRosterChecklist"),
222
+ AuditTrail: require("./src/models/auditTrail"),
223
+ DailyChecklist: require("./src/models/dailyChecklist"),
224
+ CoreInvoiceSettings: require("./src/models/coreInvoiceSettings"),
225
+ FacilityInvoice: require("./src/models/facilityInvoice"),
226
+ CoreBaseSettings: require("./src/models/coreBaseSettings"),
227
+ Recipient: require("./src/models/facilityInvoiceRecipient"),
228
+ FacilityBillingPrice: require("./src/models/facilityBillingPrices"),
229
+ FacilityInvoicePayment: require("./src/models/facilityInvoicePayment"),
230
+ CommunicationUserOpt: require("./src/models/communication_user_opt"),
231
+ Agent: require("./src/models/agents"),
232
+ AgentPerformance: require("./src/models/agent_performance"),
233
+ CustomerTicket: require("./src/models/customer_tickets"),
234
+ CustomerSurvey: require("./src/models/customer_surveys"),
235
+ KnowledgeBase: require("./src/models/knowledge_base"),
236
+ KnowledgeBaseRating: require("./src/models/knowledge_base_rating"),
237
+ AgentNotification: require("./src/models/agent_notifications"),
238
+ TicketCategory: require("./src/models/tickets_category"),
239
+ InspectionCategory: require("./src/models/inspection_category"),
240
+ AgentRole: require("./src/models/agent_roles"),
241
+ CustomerSatisfactionSurvey: require("./src/models/customer_satisfaction_survey"),
242
+ AgentDepartment: require("./src/models/agent_departments"),
243
+ DocumentType: require("./src/models/document_type"),
244
+ Counter: require("./src/models/counter_schema"),
245
+ ZohoIntegration: require("./src/models/zohoIntegration"),
246
+ ZohoItem: require("./src/models/zohoItem"),
247
+ ZohoAccount: require("./src/models/zohoAccount"),
248
+ QuickBooksConfig: require("./src/models/quickbooks_config"),
249
+ PrivacyPolicy: require("./src/models/privacy_policy"),
250
+ TermsAndConditions: require("./src/models/terms_and_conditions"),
251
+ CommunityGuidelines: require("./src/models/community_guidelines"),
252
+ WhatsappConversation : require("./src/models/whatsapp_conversation"),
253
+ CustomerPreference: require("./src/models/customer_preference"),
254
+ MoveinApplication: require("./src/models/movein_application"),
255
+ EmailThread: require("./src/models/email_thread"),
256
+ MoveinLandlord: require("./src/models/movein_landlord"),
257
+ MoveinUser: require("./src/models/movein_user"),
258
+ };
259
+
260
+ // Function to get models dynamically from a specific database connection
261
+ async function getModelFromDB(dbConnection, modelName, schema) {
262
+ if (!dbConnection.models[modelName]) {
263
+ return dbConnection.model(modelName, schema); // Register the model in the db connection
264
+ }
265
+ return dbConnection.models[modelName]; // Return existing model if already registered
266
+ }
267
+
268
+ // Function to initialize service with specific models - NEW FEATURE
269
+ function initializeService(modelNames = []) {
270
+ let currentConnection = null;
271
+
272
+ // Enhanced connect function that only registers specified models
273
+ async function connectWithModels(
274
+ dbName,
275
+ secured,
276
+ username,
277
+ password,
278
+ url,
279
+ port,
280
+ ) {
281
+ await connectToMongoDB(dbName, secured, username, password, url, port);
282
+ currentConnection = mongoose.connection;
283
+
284
+ // Only register the models specified in modelNames
285
+ modelNames.forEach((modelName) => {
286
+ if (models[modelName]) {
287
+ let schema;
288
+
289
+ // Extract schema from the imported model
290
+ if (models[modelName].schema) {
291
+ schema = models[modelName].schema;
292
+ } else {
293
+ console.warn(`Unable to extract schema from model ${modelName}`);
294
+ return;
295
+ }
296
+
297
+ if (!currentConnection.models[modelName]) {
298
+ const modelInstance = currentConnection.model(modelName, schema);
299
+ // Make model globally accessible through payservedb
300
+ module.exports[modelName] = modelInstance;
301
+ } else {
302
+ module.exports[modelName] = currentConnection.models[modelName];
303
+ }
304
+ } else {
305
+ console.warn(`Model ${modelName} not found in models registry`);
306
+ }
307
+ });
308
+
309
+ return module.exports;
310
+ }
311
+
312
+ return {
313
+ connectToMongoDB: connectWithModels,
314
+ switchDB,
315
+ getModelFromDB,
316
+ getCurrentConnection: () => currentConnection,
317
+ };
318
+ }
319
+
320
+ module.exports = {
321
+ connectToMongoDB,
322
+ switchDB,
323
+ getModelFromDB,
324
+ initializeService,
325
+ ...models,
326
+ };