payservedb 6.2.1 → 6.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +2 -2
- package/index.js +270 -269
- package/package.json +17 -17
- package/src/models/account.js +35 -35
- package/src/models/apilog.js +18 -18
- package/src/models/approvalsWorkflows.js +49 -49
- package/src/models/archivedapilog.js +18 -18
- package/src/models/archivedauditlog.js +83 -83
- package/src/models/asset.js +34 -34
- package/src/models/assetsAssignment.js +64 -64
- package/src/models/auditlog.js +83 -83
- package/src/models/bankdetails.js +40 -40
- package/src/models/billerAddress.js +119 -119
- package/src/models/booking_invoice.js +151 -151
- package/src/models/bookinganalytics.js +63 -63
- package/src/models/bookingconfig.js +45 -45
- package/src/models/bookingproperty.js +112 -112
- package/src/models/bookingreservation.js +192 -192
- package/src/models/bookingrevenuerecord.js +84 -84
- package/src/models/budget.js +95 -95
- package/src/models/budgetCategory.js +19 -19
- package/src/models/campaigns.js +72 -72
- package/src/models/cashpayment.js +264 -264
- package/src/models/combinedUnits.js +62 -62
- package/src/models/common_area_electricity.js +38 -38
- package/src/models/common_area_generator.js +41 -41
- package/src/models/common_area_utility_alert.js +37 -37
- package/src/models/common_area_water.js +39 -39
- package/src/models/communication_status.js +33 -33
- package/src/models/company.js +53 -53
- package/src/models/country_tax.js +42 -42
- package/src/models/currency_settings.js +39 -39
- package/src/models/customer.js +208 -208
- package/src/models/default_payment_details.js +17 -17
- package/src/models/deliveryTimeMarks.js +18 -18
- package/src/models/dutyroster.js +107 -107
- package/src/models/email.js +37 -37
- package/src/models/email_sms_queue.js +61 -61
- package/src/models/entry_exit.js +53 -53
- package/src/models/expense.js +99 -99
- package/src/models/expense_category.js +45 -45
- package/src/models/facility.js +61 -61
- package/src/models/facilityWalletTransactionsMetadata.js +68 -68
- package/src/models/facility_departements.js +20 -20
- package/src/models/facility_payment_details.js +20 -20
- package/src/models/facilityasset.js +25 -25
- package/src/models/faq.js +18 -18
- package/src/models/gl_account_double_entries.js +25 -25
- package/src/models/gl_accounts.js +56 -56
- package/src/models/gl_entries.js +49 -49
- package/src/models/goodsReceivedNotes.js +115 -115
- package/src/models/guard.js +47 -47
- package/src/models/handover.js +246 -246
- package/src/models/invoice.js +336 -336
- package/src/models/item_inspection.js +67 -67
- package/src/models/leaseagreement.js +221 -221
- package/src/models/leasetemplate.js +17 -17
- package/src/models/levy.js +206 -206
- package/src/models/levy_invoice_settings.js +26 -26
- package/src/models/levycontract.js +117 -117
- package/src/models/levytype.js +23 -23
- package/src/models/maintenance_service_vendor.js +38 -38
- package/src/models/maintenance_services.js +17 -17
- package/src/models/maintenancerequisition.js +31 -31
- package/src/models/message.js +38 -38
- package/src/models/module.js +21 -21
- package/src/models/notification.js +44 -44
- package/src/models/paymentTermsMarks.js +19 -19
- package/src/models/penalty.js +76 -76
- package/src/models/pendingCredentials.js +32 -32
- package/src/models/powerMeterCustomerAccount.js +78 -0
- package/src/models/powerMeterCustomerBand.js +14 -14
- package/src/models/powerMeterDailyReading.js +30 -49
- package/src/models/powerMeterMonthlyReading.js +34 -49
- package/src/models/powerMeterPowerCharges.js +53 -53
- package/src/models/powerMeterSettings.js +138 -138
- package/src/models/powerMeterSingleDayReading.js +32 -49
- package/src/models/powerMeters.js +65 -65
- package/src/models/powerMetersManufacturer.js +14 -14
- package/src/models/propertyManagerContract.js +556 -556
- package/src/models/propertyManagerRevenue.js +195 -195
- package/src/models/purchaseOrderInvoice.js +74 -74
- package/src/models/purchase_order.js +202 -202
- package/src/models/purchase_request.js +110 -110
- package/src/models/refresh_token.js +23 -23
- package/src/models/reminder.js +197 -197
- package/src/models/report.js +13 -13
- package/src/models/resident.js +121 -121
- package/src/models/rfq_details.js +131 -131
- package/src/models/rfq_response.js +153 -153
- package/src/models/service_charge_invoice_upload.js +42 -42
- package/src/models/service_charge_payments.js +27 -27
- package/src/models/servicerequest.js +55 -55
- package/src/models/settings.js +62 -62
- package/src/models/smart_meter_daily_consumption.js +44 -44
- package/src/models/sms_africastalking.js +20 -20
- package/src/models/sms_meliora.js +20 -20
- package/src/models/staff.js +36 -36
- package/src/models/stocksandspare.js +34 -34
- package/src/models/suppliers.js +74 -74
- package/src/models/tickets.js +121 -121
- package/src/models/unitManagementTemplate.js +44 -44
- package/src/models/unitasset.js +25 -25
- package/src/models/units.js +112 -112
- package/src/models/user.js +186 -186
- package/src/models/valueaddedservices.js +79 -79
- package/src/models/vas_invoices_upload.js +50 -50
- package/src/models/vas_payments.js +24 -24
- package/src/models/vasinvoice.js +192 -192
- package/src/models/vasvendor.js +57 -57
- package/src/models/visitLog.js +86 -86
- package/src/models/visitor.js +67 -67
- package/src/models/waitlist.js +45 -45
- package/src/models/wallet.js +39 -39
- package/src/models/wallet_transactions.js +50 -50
- package/src/models/water_invoice.js +193 -193
- package/src/models/water_meter_Command_Queue.js +33 -33
- package/src/models/water_meter_account.js +78 -78
- package/src/models/water_meter_billing.js +58 -58
- package/src/models/water_meter_communication.js +17 -17
- package/src/models/water_meter_communication_logs.js +30 -30
- package/src/models/water_meter_concentrator.js +66 -66
- package/src/models/water_meter_daily_history.js +32 -32
- package/src/models/water_meter_iot_cards.js +34 -34
- package/src/models/water_meter_manufacturer.js +35 -35
- package/src/models/water_meter_monthly_history.js +36 -36
- package/src/models/water_meter_settings.js +114 -114
- package/src/models/water_meter_single_day_history.js +34 -34
- package/src/models/water_meter_size.js +15 -15
- package/src/models/water_meters.js +117 -117
- package/src/models/water_meters_delivery.js +76 -76
- package/src/models/water_prepaid_credit.js +43 -43
- package/src/models/water_prepaid_debit.js +50 -50
- package/src/models/workorder.js +49 -49
package/src/models/dutyroster.js
CHANGED
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
|
|
3
|
-
// Time slot schema for reuse
|
|
4
|
-
const timeSlotSchema = new mongoose.Schema({
|
|
5
|
-
startTime: String,
|
|
6
|
-
endTime: String,
|
|
7
|
-
status: {
|
|
8
|
-
type: String,
|
|
9
|
-
enum: ['ON', 'OFF', 'AL', 'CL', 'ML/PL', 'PH', 'UI'],
|
|
10
|
-
default: 'ON'
|
|
11
|
-
}
|
|
12
|
-
}, { _id: false });
|
|
13
|
-
|
|
14
|
-
const dutyRosterSchema = new mongoose.Schema({
|
|
15
|
-
facilityId: {
|
|
16
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
17
|
-
ref: 'Facility',
|
|
18
|
-
required: true,
|
|
19
|
-
},
|
|
20
|
-
staffDetails: {
|
|
21
|
-
name: {
|
|
22
|
-
type: String,
|
|
23
|
-
required: true,
|
|
24
|
-
},
|
|
25
|
-
phone: {
|
|
26
|
-
type: String,
|
|
27
|
-
required: true,
|
|
28
|
-
},
|
|
29
|
-
role: {
|
|
30
|
-
type: String,
|
|
31
|
-
required: true,
|
|
32
|
-
// Examples: 'Site Manager', 'GRE', 'Site support staff', 'Plumber', etc.
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
// Regular weekly schedule - now array of time slots for each day
|
|
37
|
-
weeklySchedule: {
|
|
38
|
-
monday: [timeSlotSchema],
|
|
39
|
-
tuesday: [timeSlotSchema],
|
|
40
|
-
wednesday: [timeSlotSchema],
|
|
41
|
-
thursday: [timeSlotSchema],
|
|
42
|
-
friday: [timeSlotSchema],
|
|
43
|
-
saturday: [timeSlotSchema],
|
|
44
|
-
sunday: [timeSlotSchema]
|
|
45
|
-
},
|
|
46
|
-
|
|
47
|
-
// For exceptions to the regular schedule
|
|
48
|
-
exceptions: [{
|
|
49
|
-
date: {
|
|
50
|
-
type: Date,
|
|
51
|
-
required: true
|
|
52
|
-
},
|
|
53
|
-
startTime: String,
|
|
54
|
-
endTime: String,
|
|
55
|
-
status: {
|
|
56
|
-
type: String,
|
|
57
|
-
enum: ['ON', 'OFF', 'AL', 'CL', 'ML/PL', 'PH', 'UI'],
|
|
58
|
-
required: true
|
|
59
|
-
},
|
|
60
|
-
reason: String
|
|
61
|
-
}],
|
|
62
|
-
|
|
63
|
-
// Metadata
|
|
64
|
-
metadata: {
|
|
65
|
-
period: {
|
|
66
|
-
startDate: Date,
|
|
67
|
-
endDate: Date
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}, {
|
|
71
|
-
timestamps: true
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
// Status code definitions
|
|
75
|
-
dutyRosterSchema.statics.STATUS_CODES = {
|
|
76
|
-
ON: 'On Duty',
|
|
77
|
-
OFF: 'Off Duty',
|
|
78
|
-
AL: 'Annual Leave',
|
|
79
|
-
CL: 'Casual Leave',
|
|
80
|
-
'ML/PL': 'Medical/Paternity Leave',
|
|
81
|
-
PH: 'Public Holiday',
|
|
82
|
-
UI: 'Unplanned Issues'
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
// Pre-save middleware to handle backward compatibility with old format
|
|
86
|
-
dutyRosterSchema.pre('save', function (next) {
|
|
87
|
-
const schedule = this.weeklySchedule;
|
|
88
|
-
|
|
89
|
-
// Convert any day that's not an array to an array with a single element
|
|
90
|
-
for (const day of ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']) {
|
|
91
|
-
if (schedule[day] && !Array.isArray(schedule[day])) {
|
|
92
|
-
schedule[day] = [schedule[day]];
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Ensure each day has at least one time slot
|
|
96
|
-
if (!schedule[day] || schedule[day].length === 0) {
|
|
97
|
-
schedule[day] = [{
|
|
98
|
-
startTime: "",
|
|
99
|
-
endTime: "",
|
|
100
|
-
status: "ON"
|
|
101
|
-
}];
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
next();
|
|
106
|
-
});
|
|
107
|
-
|
|
1
|
+
const mongoose = require('mongoose');
|
|
2
|
+
|
|
3
|
+
// Time slot schema for reuse
|
|
4
|
+
const timeSlotSchema = new mongoose.Schema({
|
|
5
|
+
startTime: String,
|
|
6
|
+
endTime: String,
|
|
7
|
+
status: {
|
|
8
|
+
type: String,
|
|
9
|
+
enum: ['ON', 'OFF', 'AL', 'CL', 'ML/PL', 'PH', 'UI'],
|
|
10
|
+
default: 'ON'
|
|
11
|
+
}
|
|
12
|
+
}, { _id: false });
|
|
13
|
+
|
|
14
|
+
const dutyRosterSchema = new mongoose.Schema({
|
|
15
|
+
facilityId: {
|
|
16
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
17
|
+
ref: 'Facility',
|
|
18
|
+
required: true,
|
|
19
|
+
},
|
|
20
|
+
staffDetails: {
|
|
21
|
+
name: {
|
|
22
|
+
type: String,
|
|
23
|
+
required: true,
|
|
24
|
+
},
|
|
25
|
+
phone: {
|
|
26
|
+
type: String,
|
|
27
|
+
required: true,
|
|
28
|
+
},
|
|
29
|
+
role: {
|
|
30
|
+
type: String,
|
|
31
|
+
required: true,
|
|
32
|
+
// Examples: 'Site Manager', 'GRE', 'Site support staff', 'Plumber', etc.
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
// Regular weekly schedule - now array of time slots for each day
|
|
37
|
+
weeklySchedule: {
|
|
38
|
+
monday: [timeSlotSchema],
|
|
39
|
+
tuesday: [timeSlotSchema],
|
|
40
|
+
wednesday: [timeSlotSchema],
|
|
41
|
+
thursday: [timeSlotSchema],
|
|
42
|
+
friday: [timeSlotSchema],
|
|
43
|
+
saturday: [timeSlotSchema],
|
|
44
|
+
sunday: [timeSlotSchema]
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
// For exceptions to the regular schedule
|
|
48
|
+
exceptions: [{
|
|
49
|
+
date: {
|
|
50
|
+
type: Date,
|
|
51
|
+
required: true
|
|
52
|
+
},
|
|
53
|
+
startTime: String,
|
|
54
|
+
endTime: String,
|
|
55
|
+
status: {
|
|
56
|
+
type: String,
|
|
57
|
+
enum: ['ON', 'OFF', 'AL', 'CL', 'ML/PL', 'PH', 'UI'],
|
|
58
|
+
required: true
|
|
59
|
+
},
|
|
60
|
+
reason: String
|
|
61
|
+
}],
|
|
62
|
+
|
|
63
|
+
// Metadata
|
|
64
|
+
metadata: {
|
|
65
|
+
period: {
|
|
66
|
+
startDate: Date,
|
|
67
|
+
endDate: Date
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
timestamps: true
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// Status code definitions
|
|
75
|
+
dutyRosterSchema.statics.STATUS_CODES = {
|
|
76
|
+
ON: 'On Duty',
|
|
77
|
+
OFF: 'Off Duty',
|
|
78
|
+
AL: 'Annual Leave',
|
|
79
|
+
CL: 'Casual Leave',
|
|
80
|
+
'ML/PL': 'Medical/Paternity Leave',
|
|
81
|
+
PH: 'Public Holiday',
|
|
82
|
+
UI: 'Unplanned Issues'
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// Pre-save middleware to handle backward compatibility with old format
|
|
86
|
+
dutyRosterSchema.pre('save', function (next) {
|
|
87
|
+
const schedule = this.weeklySchedule;
|
|
88
|
+
|
|
89
|
+
// Convert any day that's not an array to an array with a single element
|
|
90
|
+
for (const day of ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']) {
|
|
91
|
+
if (schedule[day] && !Array.isArray(schedule[day])) {
|
|
92
|
+
schedule[day] = [schedule[day]];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Ensure each day has at least one time slot
|
|
96
|
+
if (!schedule[day] || schedule[day].length === 0) {
|
|
97
|
+
schedule[day] = [{
|
|
98
|
+
startTime: "",
|
|
99
|
+
endTime: "",
|
|
100
|
+
status: "ON"
|
|
101
|
+
}];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
next();
|
|
106
|
+
});
|
|
107
|
+
|
|
108
108
|
module.exports = mongoose.model('DutyRoster', dutyRosterSchema);
|
package/src/models/email.js
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
const FacilityEmailDetailsSchema = mongoose.Schema({
|
|
3
|
-
host: {
|
|
4
|
-
type: String,
|
|
5
|
-
required: true
|
|
6
|
-
},
|
|
7
|
-
port: {
|
|
8
|
-
type: Number,
|
|
9
|
-
required: true
|
|
10
|
-
},
|
|
11
|
-
secure: {
|
|
12
|
-
type: Boolean,
|
|
13
|
-
default: false
|
|
14
|
-
},
|
|
15
|
-
sender: {
|
|
16
|
-
type: String,
|
|
17
|
-
required: true
|
|
18
|
-
},
|
|
19
|
-
user: {
|
|
20
|
-
type: String,
|
|
21
|
-
required: true
|
|
22
|
-
},
|
|
23
|
-
pass: {
|
|
24
|
-
type: String,
|
|
25
|
-
required: true
|
|
26
|
-
},
|
|
27
|
-
rejectUnauthorized: {
|
|
28
|
-
type: Boolean,
|
|
29
|
-
default: false
|
|
30
|
-
},
|
|
31
|
-
facilityId: {
|
|
32
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
33
|
-
ref: 'Facility',
|
|
34
|
-
required: true
|
|
35
|
-
}
|
|
36
|
-
})
|
|
37
|
-
const FacilityEmailDetails = mongoose.model('FacilityEmailDetails', FacilityEmailDetailsSchema);
|
|
1
|
+
const mongoose = require('mongoose');
|
|
2
|
+
const FacilityEmailDetailsSchema = mongoose.Schema({
|
|
3
|
+
host: {
|
|
4
|
+
type: String,
|
|
5
|
+
required: true
|
|
6
|
+
},
|
|
7
|
+
port: {
|
|
8
|
+
type: Number,
|
|
9
|
+
required: true
|
|
10
|
+
},
|
|
11
|
+
secure: {
|
|
12
|
+
type: Boolean,
|
|
13
|
+
default: false
|
|
14
|
+
},
|
|
15
|
+
sender: {
|
|
16
|
+
type: String,
|
|
17
|
+
required: true
|
|
18
|
+
},
|
|
19
|
+
user: {
|
|
20
|
+
type: String,
|
|
21
|
+
required: true
|
|
22
|
+
},
|
|
23
|
+
pass: {
|
|
24
|
+
type: String,
|
|
25
|
+
required: true
|
|
26
|
+
},
|
|
27
|
+
rejectUnauthorized: {
|
|
28
|
+
type: Boolean,
|
|
29
|
+
default: false
|
|
30
|
+
},
|
|
31
|
+
facilityId: {
|
|
32
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
33
|
+
ref: 'Facility',
|
|
34
|
+
required: true
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
const FacilityEmailDetails = mongoose.model('FacilityEmailDetails', FacilityEmailDetailsSchema);
|
|
38
38
|
module.exports = FacilityEmailDetails
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
const mongoose = require("mongoose");
|
|
2
|
-
|
|
3
|
-
const EmailSmsQueueSchema = new mongoose.Schema(
|
|
4
|
-
{
|
|
5
|
-
email: {
|
|
6
|
-
to: {
|
|
7
|
-
type: String,
|
|
8
|
-
required: function () {
|
|
9
|
-
return this.type === "email";
|
|
10
|
-
},
|
|
11
|
-
},
|
|
12
|
-
subject: {
|
|
13
|
-
type: String,
|
|
14
|
-
required: function () {
|
|
15
|
-
return this.type === "email";
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
text: {
|
|
19
|
-
type: String,
|
|
20
|
-
required: function () {
|
|
21
|
-
return this.type === "email";
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
sms: {
|
|
26
|
-
to: {
|
|
27
|
-
type: String,
|
|
28
|
-
required: function () {
|
|
29
|
-
return this.type === "sms";
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
message: {
|
|
33
|
-
type: String,
|
|
34
|
-
required: function () {
|
|
35
|
-
return this.type === "sms";
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
type: {
|
|
40
|
-
type: String,
|
|
41
|
-
required: true,
|
|
42
|
-
enum: ["email", "sms"],
|
|
43
|
-
},
|
|
44
|
-
status: {
|
|
45
|
-
type: String,
|
|
46
|
-
required: true,
|
|
47
|
-
enum: ["pending", "sent", "failed"],
|
|
48
|
-
},
|
|
49
|
-
facilityId: {
|
|
50
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
51
|
-
ref: "Facility",
|
|
52
|
-
required: true,
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
timestamps: true,
|
|
57
|
-
},
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
const EmailSmsQueue = mongoose.model("EmailSmsQueue", EmailSmsQueueSchema);
|
|
61
|
-
module.exports = EmailSmsQueue;
|
|
1
|
+
const mongoose = require("mongoose");
|
|
2
|
+
|
|
3
|
+
const EmailSmsQueueSchema = new mongoose.Schema(
|
|
4
|
+
{
|
|
5
|
+
email: {
|
|
6
|
+
to: {
|
|
7
|
+
type: String,
|
|
8
|
+
required: function () {
|
|
9
|
+
return this.type === "email";
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
subject: {
|
|
13
|
+
type: String,
|
|
14
|
+
required: function () {
|
|
15
|
+
return this.type === "email";
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
text: {
|
|
19
|
+
type: String,
|
|
20
|
+
required: function () {
|
|
21
|
+
return this.type === "email";
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
sms: {
|
|
26
|
+
to: {
|
|
27
|
+
type: String,
|
|
28
|
+
required: function () {
|
|
29
|
+
return this.type === "sms";
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
message: {
|
|
33
|
+
type: String,
|
|
34
|
+
required: function () {
|
|
35
|
+
return this.type === "sms";
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
type: {
|
|
40
|
+
type: String,
|
|
41
|
+
required: true,
|
|
42
|
+
enum: ["email", "sms"],
|
|
43
|
+
},
|
|
44
|
+
status: {
|
|
45
|
+
type: String,
|
|
46
|
+
required: true,
|
|
47
|
+
enum: ["pending", "sent", "failed"],
|
|
48
|
+
},
|
|
49
|
+
facilityId: {
|
|
50
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
51
|
+
ref: "Facility",
|
|
52
|
+
required: true,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
timestamps: true,
|
|
57
|
+
},
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
const EmailSmsQueue = mongoose.model("EmailSmsQueue", EmailSmsQueueSchema);
|
|
61
|
+
module.exports = EmailSmsQueue;
|
package/src/models/entry_exit.js
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
|
|
3
|
-
const EntryExitSchema = mongoose.Schema({
|
|
4
|
-
name: {
|
|
5
|
-
type: String,
|
|
6
|
-
required: true
|
|
7
|
-
},
|
|
8
|
-
location: {
|
|
9
|
-
type: String,
|
|
10
|
-
required: true,
|
|
11
|
-
},
|
|
12
|
-
gps: {
|
|
13
|
-
type: {
|
|
14
|
-
type: String,
|
|
15
|
-
enum: ['Point'],
|
|
16
|
-
required: true
|
|
17
|
-
},
|
|
18
|
-
coordinates: {
|
|
19
|
-
type: [Number], // [longitude, latitude] format
|
|
20
|
-
required: true,
|
|
21
|
-
validate: {
|
|
22
|
-
validator: function (value) {
|
|
23
|
-
return value.length === 2;
|
|
24
|
-
},
|
|
25
|
-
message: 'Coordinates must have longitude and latitude'
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
range: {
|
|
30
|
-
type: Number,
|
|
31
|
-
required: true
|
|
32
|
-
},
|
|
33
|
-
disabled: {
|
|
34
|
-
type: Boolean,
|
|
35
|
-
required: true
|
|
36
|
-
},
|
|
37
|
-
purpose: {
|
|
38
|
-
type: String,
|
|
39
|
-
required: true,
|
|
40
|
-
enum: ['entry/exit', 'entry', 'exit', 'emergency exit']
|
|
41
|
-
},
|
|
42
|
-
facilityId: {
|
|
43
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
44
|
-
ref: 'Facility',
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
// Create a 2dsphere index on the gps field to support geospatial queries
|
|
49
|
-
EntryExitSchema.index({ gps: '2dsphere' });
|
|
50
|
-
|
|
51
|
-
const EntryExit = mongoose.model('EntryExit', EntryExitSchema);
|
|
52
|
-
|
|
53
|
-
module.exports = EntryExit;
|
|
1
|
+
const mongoose = require('mongoose');
|
|
2
|
+
|
|
3
|
+
const EntryExitSchema = mongoose.Schema({
|
|
4
|
+
name: {
|
|
5
|
+
type: String,
|
|
6
|
+
required: true
|
|
7
|
+
},
|
|
8
|
+
location: {
|
|
9
|
+
type: String,
|
|
10
|
+
required: true,
|
|
11
|
+
},
|
|
12
|
+
gps: {
|
|
13
|
+
type: {
|
|
14
|
+
type: String,
|
|
15
|
+
enum: ['Point'],
|
|
16
|
+
required: true
|
|
17
|
+
},
|
|
18
|
+
coordinates: {
|
|
19
|
+
type: [Number], // [longitude, latitude] format
|
|
20
|
+
required: true,
|
|
21
|
+
validate: {
|
|
22
|
+
validator: function (value) {
|
|
23
|
+
return value.length === 2;
|
|
24
|
+
},
|
|
25
|
+
message: 'Coordinates must have longitude and latitude'
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
range: {
|
|
30
|
+
type: Number,
|
|
31
|
+
required: true
|
|
32
|
+
},
|
|
33
|
+
disabled: {
|
|
34
|
+
type: Boolean,
|
|
35
|
+
required: true
|
|
36
|
+
},
|
|
37
|
+
purpose: {
|
|
38
|
+
type: String,
|
|
39
|
+
required: true,
|
|
40
|
+
enum: ['entry/exit', 'entry', 'exit', 'emergency exit']
|
|
41
|
+
},
|
|
42
|
+
facilityId: {
|
|
43
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
44
|
+
ref: 'Facility',
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// Create a 2dsphere index on the gps field to support geospatial queries
|
|
49
|
+
EntryExitSchema.index({ gps: '2dsphere' });
|
|
50
|
+
|
|
51
|
+
const EntryExit = mongoose.model('EntryExit', EntryExitSchema);
|
|
52
|
+
|
|
53
|
+
module.exports = EntryExit;
|