payservedb 8.3.9 → 8.4.1

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 (177) hide show
  1. package/.env +2 -2
  2. package/ZOHO_INTEGRATION_SCHEMA.md +644 -644
  3. package/index.js +309 -307
  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 +151 -151
  20. package/src/models/bookinganalytics.js +63 -63
  21. package/src/models/bookingconfig.js +45 -45
  22. package/src/models/bookingproperty.js +122 -122
  23. package/src/models/bookingreservation.js +192 -192
  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 +264 -264
  29. package/src/models/combinedUnits.js +62 -62
  30. package/src/models/common_area_electricity.js +38 -38
  31. package/src/models/common_area_generator.js +41 -41
  32. package/src/models/common_area_utility_alert.js +37 -37
  33. package/src/models/common_area_water.js +39 -39
  34. package/src/models/communication_status.js +33 -33
  35. package/src/models/communication_user_opt.js +32 -32
  36. package/src/models/company.js +53 -53
  37. package/src/models/coreBaseSettings.js +16 -16
  38. package/src/models/coreInvoiceSettings.js +100 -100
  39. package/src/models/counter_schema.js +21 -21
  40. package/src/models/country_tax.js +42 -42
  41. package/src/models/currency_settings.js +39 -39
  42. package/src/models/customer.js +210 -210
  43. package/src/models/customer_satisfaction_survey.js +278 -278
  44. package/src/models/customer_surveys.js +139 -139
  45. package/src/models/customer_tickets.js +239 -239
  46. package/src/models/dailyChecklist.js +312 -312
  47. package/src/models/default_payment_details.js +17 -17
  48. package/src/models/deliveryTimeMarks.js +18 -18
  49. package/src/models/document_type.js +19 -19
  50. package/src/models/dutyRosterChecklist.js +250 -250
  51. package/src/models/dutyroster.js +136 -136
  52. package/src/models/email.js +37 -37
  53. package/src/models/email_sms_queue.js +61 -61
  54. package/src/models/entry_exit.js +53 -53
  55. package/src/models/expense.js +99 -99
  56. package/src/models/expense_category.js +45 -45
  57. package/src/models/facility.js +62 -62
  58. package/src/models/facilityBillingPrices.js +29 -29
  59. package/src/models/facilityInvoice.js +240 -240
  60. package/src/models/facilityInvoicePayment.js +52 -52
  61. package/src/models/facilityInvoiceRecipient.js +32 -32
  62. package/src/models/facilityWalletTransactionsMetadata.js +236 -236
  63. package/src/models/facility_departements.js +20 -20
  64. package/src/models/facility_payment_details.js +20 -20
  65. package/src/models/facilityasset.js +25 -25
  66. package/src/models/faq.js +14 -14
  67. package/src/models/gl_account_double_entries.js +25 -25
  68. package/src/models/gl_accounts.js +56 -56
  69. package/src/models/gl_entries.js +49 -49
  70. package/src/models/goodsReceivedNotes.js +115 -115
  71. package/src/models/guard.js +47 -47
  72. package/src/models/handover.js +247 -247
  73. package/src/models/inspection_category.js +38 -38
  74. package/src/models/invoice.js +387 -387
  75. package/src/models/invoicing_schedule.js +36 -36
  76. package/src/models/item_inspection.js +96 -96
  77. package/src/models/knowledge_base.js +109 -109
  78. package/src/models/knowledge_base_rating.js +44 -44
  79. package/src/models/leaseagreement.js +236 -236
  80. package/src/models/leasetemplate.js +17 -17
  81. package/src/models/levy.js +223 -223
  82. package/src/models/levy_invoice_settings.js +26 -26
  83. package/src/models/levycontract.js +177 -177
  84. package/src/models/levytype.js +23 -23
  85. package/src/models/maintenance_service_vendor.js +38 -38
  86. package/src/models/maintenance_services.js +17 -17
  87. package/src/models/maintenancerequisition.js +31 -31
  88. package/src/models/master_workplan.js +32 -32
  89. package/src/models/master_workplan_child.js +34 -34
  90. package/src/models/message.js +38 -38
  91. package/src/models/module.js +21 -21
  92. package/src/models/notification.js +44 -44
  93. package/src/models/paymentTermsMarks.js +19 -19
  94. package/src/models/penalty.js +76 -76
  95. package/src/models/pendingCredentials.js +32 -32
  96. package/src/models/powerMeterCommunicationProtocol.js +17 -17
  97. package/src/models/powerMeterCustomerAccount.js +78 -78
  98. package/src/models/powerMeterCustomerBand.js +14 -14
  99. package/src/models/powerMeterDailyReading.js +30 -30
  100. package/src/models/powerMeterGateways.js +40 -40
  101. package/src/models/powerMeterMonthlyReading.js +34 -34
  102. package/src/models/powerMeterPowerCharges.js +85 -85
  103. package/src/models/powerMeterSettings.js +159 -159
  104. package/src/models/powerMeterSingleDayReading.js +32 -32
  105. package/src/models/powerMeters.js +116 -116
  106. package/src/models/powerMetersManufacturer.js +14 -14
  107. package/src/models/power_meter_account.js +81 -81
  108. package/src/models/power_meter_command_logs.js +30 -30
  109. package/src/models/power_meter_command_queue.js +33 -33
  110. package/src/models/power_meter_negative_balance.js +44 -44
  111. package/src/models/power_prepaid_credits.js +47 -47
  112. package/src/models/power_prepaid_debits.js +53 -53
  113. package/src/models/power_prepaid_orders.js +78 -78
  114. package/src/models/power_sms_notification.js +26 -26
  115. package/src/models/privacy_policy.js +20 -0
  116. package/src/models/propertyManagerContract.js +556 -556
  117. package/src/models/propertyManagerRevenue.js +195 -195
  118. package/src/models/purchaseOrderInvoice.js +74 -74
  119. package/src/models/purchase_order.js +213 -213
  120. package/src/models/purchase_request.js +110 -110
  121. package/src/models/refresh_token.js +23 -23
  122. package/src/models/reminder.js +197 -197
  123. package/src/models/report.js +13 -13
  124. package/src/models/resident.js +121 -121
  125. package/src/models/rfq_details.js +131 -131
  126. package/src/models/rfq_response.js +153 -153
  127. package/src/models/service_charge_invoice_upload.js +42 -42
  128. package/src/models/service_charge_payments.js +27 -27
  129. package/src/models/servicerequest.js +55 -55
  130. package/src/models/settings.js +62 -62
  131. package/src/models/short_urls.js +21 -21
  132. package/src/models/smart_meter_daily_consumption.js +44 -44
  133. package/src/models/sms_africastalking.js +20 -20
  134. package/src/models/sms_balance_notification.js +26 -26
  135. package/src/models/sms_meliora.js +20 -20
  136. package/src/models/staff.js +36 -36
  137. package/src/models/stocksandspare.js +161 -161
  138. package/src/models/suppliers.js +74 -74
  139. package/src/models/terms_and_conditions.js +20 -0
  140. package/src/models/tickets.js +186 -173
  141. package/src/models/tickets_category.js +72 -72
  142. package/src/models/unitManagementTemplate.js +44 -44
  143. package/src/models/unitasset.js +25 -25
  144. package/src/models/units.js +118 -118
  145. package/src/models/user.js +186 -186
  146. package/src/models/valueaddedservices.js +79 -79
  147. package/src/models/vas_invoices_upload.js +50 -50
  148. package/src/models/vas_payments.js +24 -24
  149. package/src/models/vasinvoice.js +192 -192
  150. package/src/models/vasvendor.js +57 -57
  151. package/src/models/visitLog.js +95 -95
  152. package/src/models/visitor.js +67 -67
  153. package/src/models/waitlist.js +45 -45
  154. package/src/models/wallet.js +44 -44
  155. package/src/models/wallet_transactions.js +50 -50
  156. package/src/models/water_invoice.js +351 -351
  157. package/src/models/water_meter_Command_Queue.js +33 -33
  158. package/src/models/water_meter_account.js +88 -82
  159. package/src/models/water_meter_billing.js +58 -58
  160. package/src/models/water_meter_communication.js +17 -17
  161. package/src/models/water_meter_communication_logs.js +39 -39
  162. package/src/models/water_meter_concentrator.js +70 -70
  163. package/src/models/water_meter_daily_history.js +32 -32
  164. package/src/models/water_meter_high_risk.js +36 -36
  165. package/src/models/water_meter_iot_cards.js +34 -34
  166. package/src/models/water_meter_manufacturer.js +35 -35
  167. package/src/models/water_meter_monthly_history.js +36 -36
  168. package/src/models/water_meter_negative_amounts.js +44 -44
  169. package/src/models/water_meter_settings.js +287 -283
  170. package/src/models/water_meter_single_day_history.js +34 -34
  171. package/src/models/water_meter_size.js +15 -15
  172. package/src/models/water_meters.js +133 -133
  173. package/src/models/water_meters_delivery.js +76 -76
  174. package/src/models/water_prepaid_credit.js +47 -47
  175. package/src/models/water_prepaid_debit.js +50 -50
  176. package/src/models/workorder.js +49 -49
  177. package/src/models/zohoIntegration.js +262 -262
@@ -1,33 +1,33 @@
1
- const mongoose = require('mongoose');
2
-
3
- const meterCommandQueueSchema = new mongoose.Schema({
4
- meterNumber: {
5
- type: String,
6
- required: true
7
- },
8
- concentratorSerialNumber: {
9
- type: String,
10
- required: true
11
- },
12
- commandType: {
13
- type: String,
14
- enum: ['open', 'close', 'read'],
15
- required: true
16
- },
17
- status: {
18
- type: String,
19
- enum: ['pending', 'sent', 'acknowledged', 'failed'],
20
- default: 'pending'
21
- },
22
- retryCount: {
23
- type: Number,
24
- default: 0
25
- },
26
- sentAt: {
27
- type: Date
28
- }
29
- }, { timestamps: true });
30
-
31
- const MeterCommandQueue = mongoose.model('MeterCommandQueue', meterCommandQueueSchema);
32
-
33
- module.exports = MeterCommandQueue;
1
+ const mongoose = require('mongoose');
2
+
3
+ const meterCommandQueueSchema = new mongoose.Schema({
4
+ meterNumber: {
5
+ type: String,
6
+ required: true
7
+ },
8
+ concentratorSerialNumber: {
9
+ type: String,
10
+ required: true
11
+ },
12
+ commandType: {
13
+ type: String,
14
+ enum: ['open', 'close', 'read'],
15
+ required: true
16
+ },
17
+ status: {
18
+ type: String,
19
+ enum: ['pending', 'sent', 'acknowledged', 'failed'],
20
+ default: 'pending'
21
+ },
22
+ retryCount: {
23
+ type: Number,
24
+ default: 0
25
+ },
26
+ sentAt: {
27
+ type: Date
28
+ }
29
+ }, { timestamps: true });
30
+
31
+ const MeterCommandQueue = mongoose.model('MeterCommandQueue', meterCommandQueueSchema);
32
+
33
+ module.exports = MeterCommandQueue;
@@ -1,82 +1,88 @@
1
- const mongoose = require('mongoose');
2
-
3
- const waterMeterAccountSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- },
9
- account_no: {
10
- type: String,
11
- required: true,
12
- trim: true
13
- },
14
- customerId: {
15
- type: mongoose.Schema.Types.ObjectId,
16
- ref: 'Customer',
17
- },
18
- customerName: {
19
- type: String,
20
- required: true,
21
- trim: true
22
- },
23
- phoneNumber: {
24
- type: String,
25
- required: true,
26
- trim: true
27
- },
28
- email: {
29
- type: String,
30
- required: true,
31
- trim: true
32
- },
33
- meterNumber: {
34
- type: String,
35
- required: true,
36
- unique: true,
37
- trim: true
38
- },
39
- unitId: {
40
- type: mongoose.Schema.Types.ObjectId,
41
- ref: 'Unit',
42
- },
43
- payment_type: {
44
- type: String,
45
- required: true,
46
- enum: ['Postpaid', 'Prepaid']
47
- },
48
- previousReading: {
49
- type: Number,
50
- required: true,
51
- default: 0
52
- },
53
- currentReading: {
54
- type: Number,
55
- required: true
56
- },
57
- status: {
58
- type: String,
59
- required: true,
60
- enum: ['Active', 'Inactive'],
61
- default: 'Active'
62
- },
63
- created_on: {
64
- type: Date,
65
- required: true,
66
- default: Date.now
67
- },
68
- meter_id: {
69
- type: mongoose.Schema.Types.ObjectId,
70
- ref: 'WaterMeter',
71
- },
72
- accountBalance: {
73
- type: Number,
74
- default: 0
75
- }
76
- }, {
77
- timestamps: true
78
- });
79
-
80
- const WaterMeterAccount = mongoose.model('WaterMeterAccount', waterMeterAccountSchema);
81
-
82
- module.exports = WaterMeterAccount;
1
+ const mongoose = require('mongoose');
2
+
3
+ const waterMeterAccountSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ },
9
+ account_no: {
10
+ type: String,
11
+ required: true,
12
+ trim: true
13
+ },
14
+ customerId: {
15
+ type: mongoose.Schema.Types.ObjectId,
16
+ ref: 'Customer',
17
+ },
18
+ customerName: {
19
+ type: String,
20
+ required: true,
21
+ trim: true
22
+ },
23
+ phoneNumber: {
24
+ type: String,
25
+ required: true,
26
+ trim: true
27
+ },
28
+ email: {
29
+ type: String,
30
+ required: true,
31
+ trim: true
32
+ },
33
+ meterNumber: {
34
+ type: String,
35
+ required: true,
36
+ unique: true,
37
+ trim: true
38
+ },
39
+ unitId: {
40
+ type: mongoose.Schema.Types.ObjectId,
41
+ ref: 'Unit',
42
+ },
43
+ unitName: {
44
+ type: String,
45
+ required: true,
46
+ trim: true,
47
+ index: true
48
+ },
49
+ payment_type: {
50
+ type: String,
51
+ required: true,
52
+ enum: ['Postpaid', 'Prepaid']
53
+ },
54
+ previousReading: {
55
+ type: Number,
56
+ required: true,
57
+ default: 0
58
+ },
59
+ currentReading: {
60
+ type: Number,
61
+ required: true
62
+ },
63
+ status: {
64
+ type: String,
65
+ required: true,
66
+ enum: ['Active', 'Inactive'],
67
+ default: 'Active'
68
+ },
69
+ created_on: {
70
+ type: Date,
71
+ required: true,
72
+ default: Date.now
73
+ },
74
+ meter_id: {
75
+ type: mongoose.Schema.Types.ObjectId,
76
+ ref: 'WaterMeter',
77
+ },
78
+ accountBalance: {
79
+ type: Number,
80
+ default: 0
81
+ }
82
+ }, {
83
+ timestamps: true
84
+ });
85
+
86
+ const WaterMeterAccount = mongoose.model('WaterMeterAccount', waterMeterAccountSchema);
87
+
88
+ module.exports = WaterMeterAccount;
@@ -1,58 +1,58 @@
1
- const mongoose = require('mongoose');
2
-
3
- const analogBillingSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- },
9
- meterNumber: {
10
- type: String,
11
- required: true,
12
- },
13
- accountNumber: {
14
- type: String,
15
- required: true,
16
- },
17
- currentReading: {
18
- type: Number,
19
- required: true,
20
- },
21
- previousReading: {
22
- type: Number,
23
- required: true,
24
- },
25
- yearMonth: {
26
- type: String, // Expected format: 'YYYY-MM'
27
- required: true,
28
- },
29
- totalUsage: {
30
- type: Number,
31
- required: true,
32
- },
33
- unitName: {
34
- type: String,
35
- required: true,
36
- },
37
- customerId: {
38
- type: mongoose.Schema.Types.ObjectId,
39
- ref: 'Customer',
40
- },
41
- billingType: {
42
- type: String,
43
- enum: ['postpaid'],
44
- },
45
- status: {
46
- type: String,
47
- enum: ['pending', 'reviewed', 'billed', 'failed'],
48
- default: 'pending',
49
- },
50
- }, {
51
- timestamps: true,
52
- });
53
-
54
- analogBillingSchema.index({ meterNumber: 1, yearMonth: 1 }, { unique: true });
55
-
56
- const AnalogBilling = mongoose.model('AnalogBilling', analogBillingSchema);
57
-
58
- module.exports = AnalogBilling;
1
+ const mongoose = require('mongoose');
2
+
3
+ const analogBillingSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ },
9
+ meterNumber: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ accountNumber: {
14
+ type: String,
15
+ required: true,
16
+ },
17
+ currentReading: {
18
+ type: Number,
19
+ required: true,
20
+ },
21
+ previousReading: {
22
+ type: Number,
23
+ required: true,
24
+ },
25
+ yearMonth: {
26
+ type: String, // Expected format: 'YYYY-MM'
27
+ required: true,
28
+ },
29
+ totalUsage: {
30
+ type: Number,
31
+ required: true,
32
+ },
33
+ unitName: {
34
+ type: String,
35
+ required: true,
36
+ },
37
+ customerId: {
38
+ type: mongoose.Schema.Types.ObjectId,
39
+ ref: 'Customer',
40
+ },
41
+ billingType: {
42
+ type: String,
43
+ enum: ['postpaid'],
44
+ },
45
+ status: {
46
+ type: String,
47
+ enum: ['pending', 'reviewed', 'billed', 'failed'],
48
+ default: 'pending',
49
+ },
50
+ }, {
51
+ timestamps: true,
52
+ });
53
+
54
+ analogBillingSchema.index({ meterNumber: 1, yearMonth: 1 }, { unique: true });
55
+
56
+ const AnalogBilling = mongoose.model('AnalogBilling', analogBillingSchema);
57
+
58
+ module.exports = AnalogBilling;
@@ -1,18 +1,18 @@
1
- const mongoose = require('mongoose');
2
-
3
- const protocolSchema = new mongoose.Schema({
4
- name: {
5
- type: String,
6
- required: true,
7
- unique: true,
8
- trim: true,
9
- uppercase: true,
10
- // Example: TCP, GPRS, API, etc.
11
- }
12
- }, {
13
- timestamps: true
14
- });
15
-
16
- const MeterProtocol = mongoose.model('MeterProtocol', protocolSchema);
17
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const protocolSchema = new mongoose.Schema({
4
+ name: {
5
+ type: String,
6
+ required: true,
7
+ unique: true,
8
+ trim: true,
9
+ uppercase: true,
10
+ // Example: TCP, GPRS, API, etc.
11
+ }
12
+ }, {
13
+ timestamps: true
14
+ });
15
+
16
+ const MeterProtocol = mongoose.model('MeterProtocol', protocolSchema);
17
+
18
18
  module.exports = MeterProtocol;
@@ -1,40 +1,40 @@
1
- const mongoose = require('mongoose');
2
-
3
- const meterLogSchema = new mongoose.Schema({
4
- meterId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'WaterMeter',
7
- required: true,
8
- index: true
9
- },
10
- command: {
11
- type: String,
12
- required: true,
13
- trim: true
14
- },
15
- platform: {
16
- type: String,
17
- required: true,
18
- trim: true
19
- },
20
- reason: {
21
- type: String,
22
- required: true,
23
- trim: true
24
- },
25
- actionBy: {
26
- type: String,
27
- required: true,
28
- trim: true
29
- },
30
- timestamp: {
31
- type: Date,
32
- default: Date.now
33
- }
34
- }, {
35
- timestamps: true
36
- });
37
-
38
- const MeterLog = mongoose.model('MeterLog', meterLogSchema);
39
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const meterLogSchema = new mongoose.Schema({
4
+ meterId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'WaterMeter',
7
+ required: true,
8
+ index: true
9
+ },
10
+ command: {
11
+ type: String,
12
+ required: true,
13
+ trim: true
14
+ },
15
+ platform: {
16
+ type: String,
17
+ required: true,
18
+ trim: true
19
+ },
20
+ reason: {
21
+ type: String,
22
+ required: true,
23
+ trim: true
24
+ },
25
+ actionBy: {
26
+ type: String,
27
+ required: true,
28
+ trim: true
29
+ },
30
+ timestamp: {
31
+ type: Date,
32
+ default: Date.now
33
+ }
34
+ }, {
35
+ timestamps: true
36
+ });
37
+
38
+ const MeterLog = mongoose.model('MeterLog', meterLogSchema);
39
+
40
40
  module.exports = MeterLog;
@@ -1,71 +1,71 @@
1
- const mongoose = require('mongoose');
2
- const concentratorSchema = new mongoose.Schema({
3
- serialNumber: {
4
- type: String,
5
- required: true,
6
- trim: true,
7
- unique: true
8
- },
9
- manufacturer: {
10
- type: mongoose.Schema.Types.ObjectId,
11
- ref: 'MeterManufacturer',
12
- },
13
- range: {
14
- type: Number,
15
- min: 0
16
- },
17
- isInstalled: {
18
- type: Boolean,
19
- default: false
20
- },
21
- isFaulty: {
22
- type: Boolean,
23
- default: false
24
- },
25
- inStock: {
26
- type: Boolean,
27
- default: true
28
- },
29
- status: {
30
- type: String,
31
- required: true,
32
- enum: ['online', 'offline', 'maintenance'],
33
- default: 'offline'
34
- },
35
- ipAddress: {
36
- type: String,
37
- trim: true
38
- },
39
- meter_fails: {
40
- type: Number,
41
- min: 0
42
- },
43
- facilityId: [{
44
- type: mongoose.Schema.Types.ObjectId,
45
- ref: 'Facility',
46
- }],
47
- location: {
48
- city: {
49
- type: String,
50
- trim: true
51
- },
52
- latitude: {
53
- type: Number,
54
- min: -90,
55
- max: 90
56
- },
57
- longitude: {
58
- type: Number,
59
- min: -180,
60
- max: 180
61
- }
62
- },
63
- lastUpdated: {
64
- type: String
65
- }
66
- }, {
67
- timestamps: true
68
- });
69
-
70
- const Concentrator = mongoose.model('Concentrator', concentratorSchema);
1
+ const mongoose = require('mongoose');
2
+ const concentratorSchema = new mongoose.Schema({
3
+ serialNumber: {
4
+ type: String,
5
+ required: true,
6
+ trim: true,
7
+ unique: true
8
+ },
9
+ manufacturer: {
10
+ type: mongoose.Schema.Types.ObjectId,
11
+ ref: 'MeterManufacturer',
12
+ },
13
+ range: {
14
+ type: Number,
15
+ min: 0
16
+ },
17
+ isInstalled: {
18
+ type: Boolean,
19
+ default: false
20
+ },
21
+ isFaulty: {
22
+ type: Boolean,
23
+ default: false
24
+ },
25
+ inStock: {
26
+ type: Boolean,
27
+ default: true
28
+ },
29
+ status: {
30
+ type: String,
31
+ required: true,
32
+ enum: ['online', 'offline', 'maintenance'],
33
+ default: 'offline'
34
+ },
35
+ ipAddress: {
36
+ type: String,
37
+ trim: true
38
+ },
39
+ meter_fails: {
40
+ type: Number,
41
+ min: 0
42
+ },
43
+ facilityId: [{
44
+ type: mongoose.Schema.Types.ObjectId,
45
+ ref: 'Facility',
46
+ }],
47
+ location: {
48
+ city: {
49
+ type: String,
50
+ trim: true
51
+ },
52
+ latitude: {
53
+ type: Number,
54
+ min: -90,
55
+ max: 90
56
+ },
57
+ longitude: {
58
+ type: Number,
59
+ min: -180,
60
+ max: 180
61
+ }
62
+ },
63
+ lastUpdated: {
64
+ type: String
65
+ }
66
+ }, {
67
+ timestamps: true
68
+ });
69
+
70
+ const Concentrator = mongoose.model('Concentrator', concentratorSchema);
71
71
  module.exports = Concentrator;
@@ -1,33 +1,33 @@
1
- const mongoose = require('mongoose');
2
-
3
- const dailyWaterMeterHistorySchema = new mongoose.Schema({
4
- meterId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'WaterMeter',
7
- required: true,
8
- index: true
9
- },
10
- date: {
11
- type: Date,
12
- required: true,
13
- index: true
14
- },
15
- reading: {
16
- type: Number,
17
- required: true,
18
- min: 0
19
- },
20
- status: {
21
- type: String,
22
- enum: ['opened', 'closed', 'maintenance', 'faulty'],
23
- default: 'opened',
24
- }
25
- }, {
26
- timestamps: true
27
- });
28
-
29
- dailyWaterMeterHistorySchema.index({ meterId: 1, date: 1 });
30
-
31
- const DailyWaterMeterHistory = mongoose.model('DailyWaterMeterHistory', dailyWaterMeterHistorySchema);
32
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const dailyWaterMeterHistorySchema = new mongoose.Schema({
4
+ meterId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'WaterMeter',
7
+ required: true,
8
+ index: true
9
+ },
10
+ date: {
11
+ type: Date,
12
+ required: true,
13
+ index: true
14
+ },
15
+ reading: {
16
+ type: Number,
17
+ required: true,
18
+ min: 0
19
+ },
20
+ status: {
21
+ type: String,
22
+ enum: ['opened', 'closed', 'maintenance', 'faulty'],
23
+ default: 'opened',
24
+ }
25
+ }, {
26
+ timestamps: true
27
+ });
28
+
29
+ dailyWaterMeterHistorySchema.index({ meterId: 1, date: 1 });
30
+
31
+ const DailyWaterMeterHistory = mongoose.model('DailyWaterMeterHistory', dailyWaterMeterHistorySchema);
32
+
33
33
  module.exports = DailyWaterMeterHistory;