payservedb 8.9.9 → 9.0.0

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