payservedb 2.5.0 → 2.5.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 (45) hide show
  1. package/.env +2 -2
  2. package/index.js +94 -94
  3. package/package.json +16 -16
  4. package/src/models/apilog.js +18 -18
  5. package/src/models/archivedapilog.js +18 -18
  6. package/src/models/archivedauditlog.js +83 -83
  7. package/src/models/asset.js +35 -0
  8. package/src/models/audit.js +16 -16
  9. package/src/models/auditlog.js +83 -83
  10. package/src/models/bankdetails.js +40 -40
  11. package/src/models/combinedUnits.js +62 -62
  12. package/src/models/company.js +53 -53
  13. package/src/models/customer.js +174 -174
  14. package/src/models/dutyroter.js +33 -0
  15. package/src/models/email.js +24 -24
  16. package/src/models/entry_exit.js +53 -53
  17. package/src/models/facility.js +46 -46
  18. package/src/models/facilityasset.js +25 -25
  19. package/src/models/faq.js +18 -18
  20. package/src/models/guard.js +47 -47
  21. package/src/models/invoice.js +94 -94
  22. package/src/models/lease.js +25 -25
  23. package/src/models/leasetemplate.js +12 -12
  24. package/src/models/levy.js +63 -63
  25. package/src/models/levycontract.js +59 -59
  26. package/src/models/levytype.js +23 -23
  27. package/src/models/message.js +38 -38
  28. package/src/models/module.js +21 -21
  29. package/src/models/notification.js +24 -24
  30. package/src/models/penalty.js +49 -49
  31. package/src/models/refresh_token.js +23 -23
  32. package/src/models/reminder.js +61 -61
  33. package/src/models/report.js +13 -13
  34. package/src/models/resident.js +121 -121
  35. package/src/models/settings.js +19 -19
  36. package/src/models/sms_africastalking.js +20 -20
  37. package/src/models/sms_meliora.js +16 -16
  38. package/src/models/stocksandspare.js +46 -0
  39. package/src/models/tickets.js +38 -0
  40. package/src/models/unitasset.js +25 -25
  41. package/src/models/units.js +70 -70
  42. package/src/models/user.js +94 -94
  43. package/src/models/visitLog.js +86 -86
  44. package/src/models/visitor.js +54 -54
  45. package/src/models/waitlist.js +45 -45
package/.env CHANGED
@@ -1,3 +1,3 @@
1
- User=Ps
2
- Password=Letmein987
1
+ User=Ps
2
+ Password=Letmein987
3
3
  source=?authSource=admin
package/index.js CHANGED
@@ -1,95 +1,95 @@
1
- const mongoose = require('mongoose');
2
- require('dotenv').config()
3
-
4
-
5
- // Maintain a record of open connections for each database
6
- const connections = {};
7
- const url = '127.0.0.1:27017';
8
- const source = '?authSource=admin'
9
-
10
- // Utility function to connect to MongoDB
11
- async function connectToMongoDB(dbName) {
12
- try {
13
-
14
- const connectionString = `mongodb://${url}/${dbName}${source}`;
15
- await mongoose.connect(connectionString, {
16
- useNewUrlParser: true,
17
- });
18
- console.log('Connected to MongoDB');
19
- } catch (err) {
20
- console.error('Error connecting to MongoDB:', err);
21
- throw err;
22
- }
23
- }
24
-
25
- // Function to switch databases dynamically
26
- async function switchDB(dbName) {
27
- // Check if there's already a connection to the desired database
28
- if (connections[dbName]) {
29
- return connections[dbName]; // Return existing connection
30
- }
31
- try {
32
- const connectionString = `mongodb://${url}/${dbName}${source}`;
33
- const dbConnection = await mongoose.createConnection(connectionString, {
34
- useNewUrlParser: true,
35
- });
36
- connections[dbName] = dbConnection; // Store the connection for reuse
37
- console.log(`Switched to database: ${dbName}`);
38
- return dbConnection;
39
- } catch (err) {
40
- console.error(`Error switching to database: ${dbName}`, err);
41
- throw err;
42
- }
43
- }
44
-
45
-
46
- // Importing all model files (Note: models may need to be re-registered for different connections)
47
- const models = {
48
- User: require('./src/models/user'),
49
- AuditLog: require('./src/models/auditlog'),
50
- Company: require('./src/models/company'),
51
- Customer: require('./src/models/customer'),
52
- Email: require('./src/models/email'),
53
- Module: require('./src/models/module'),
54
- Facility: require('./src/models/facility'),
55
- RefreshToken: require('./src/models/refresh_token'),
56
- ApiLog: require('./src/models/apilog'),
57
- ArchivedApiLog: require('./src/models/archivedapilog'),
58
- ArchivedAuditLog: require('./src/models/archivedauditlog'),
59
- FacilityAsset: require('./src/models/facilityasset'),
60
- Unit: require('./src/models/units'),
61
- FAQ: require('./src/models/faq'),
62
- UnitAsset: require('./src/models/unitasset'),
63
- CombinedUnit: require('./src/models/combinedUnits'),
64
- Message: require('./src/models/message'),
65
- SMSAfricastalking: require('./src/models/sms_africastalking'),
66
- SMSMeliora: require('./src/models/sms_meliora'),
67
- EntryExit: require('./src/models/entry_exit'),
68
- Guard: require('./src/models/guard'),
69
- Visitor: require('./src/models/visitor'),
70
- VisitLog: require('./src/models/visitLog'),
71
- Settings: require('./src/models/settings'),
72
- Levy:require('./src/models/levy'),
73
- LevyType:require('./src/models/levytype'),
74
- LevyContract:require('./src/models/levycontract'),
75
- Invoice:require('./src/models/invoice'),
76
- Reminder:require('./src/models/reminder'),
77
- Penalty:require('./src/models/penalty'),
78
- Notifiaction:require('./src/models/notification'),
79
- Resident:require('./src/models/resident')
80
- };
81
-
82
- // Function to get models dynamically from a specific database connection
83
- async function getModelFromDB(dbConnection, modelName, schema) {
84
- if (!dbConnection.models[modelName]) {
85
- return dbConnection.model(modelName, schema); // Register the model in the db connection
86
- }
87
- return dbConnection.models[modelName]; // Return existing model if already registered
88
- }
89
-
90
- module.exports = {
91
- connectToMongoDB,
92
- switchDB,
93
- getModelFromDB,
94
- ...models // Spread operator to export all models
1
+ const mongoose = require('mongoose');
2
+ require('dotenv').config()
3
+
4
+
5
+ // Maintain a record of open connections for each database
6
+ const connections = {};
7
+ const url = '127.0.0.1:27017';
8
+ const source = '?authSource=admin'
9
+
10
+ // Utility function to connect to MongoDB
11
+ async function connectToMongoDB(dbName) {
12
+ try {
13
+
14
+ const connectionString = `mongodb://${url}/${dbName}${source}`;
15
+ await mongoose.connect(connectionString, {
16
+ useNewUrlParser: true,
17
+ });
18
+ console.log('Connected to MongoDB');
19
+ } catch (err) {
20
+ console.error('Error connecting to MongoDB:', err);
21
+ throw err;
22
+ }
23
+ }
24
+
25
+ // Function to switch databases dynamically
26
+ async function switchDB(dbName) {
27
+ // Check if there's already a connection to the desired database
28
+ if (connections[dbName]) {
29
+ return connections[dbName]; // Return existing connection
30
+ }
31
+ try {
32
+ const connectionString = `mongodb://${url}/${dbName}${source}`;
33
+ const dbConnection = await mongoose.createConnection(connectionString, {
34
+ useNewUrlParser: true,
35
+ });
36
+ connections[dbName] = dbConnection; // Store the connection for reuse
37
+ console.log(`Switched to database: ${dbName}`);
38
+ return dbConnection;
39
+ } catch (err) {
40
+ console.error(`Error switching to database: ${dbName}`, err);
41
+ throw err;
42
+ }
43
+ }
44
+
45
+
46
+ // Importing all model files (Note: models may need to be re-registered for different connections)
47
+ const models = {
48
+ User: require('./src/models/user'),
49
+ AuditLog: require('./src/models/auditlog'),
50
+ Company: require('./src/models/company'),
51
+ Customer: require('./src/models/customer'),
52
+ Email: require('./src/models/email'),
53
+ Module: require('./src/models/module'),
54
+ Facility: require('./src/models/facility'),
55
+ RefreshToken: require('./src/models/refresh_token'),
56
+ ApiLog: require('./src/models/apilog'),
57
+ ArchivedApiLog: require('./src/models/archivedapilog'),
58
+ ArchivedAuditLog: require('./src/models/archivedauditlog'),
59
+ FacilityAsset: require('./src/models/facilityasset'),
60
+ Unit: require('./src/models/units'),
61
+ FAQ: require('./src/models/faq'),
62
+ UnitAsset: require('./src/models/unitasset'),
63
+ CombinedUnit: require('./src/models/combinedUnits'),
64
+ Message: require('./src/models/message'),
65
+ SMSAfricastalking: require('./src/models/sms_africastalking'),
66
+ SMSMeliora: require('./src/models/sms_meliora'),
67
+ EntryExit: require('./src/models/entry_exit'),
68
+ Guard: require('./src/models/guard'),
69
+ Visitor: require('./src/models/visitor'),
70
+ VisitLog: require('./src/models/visitLog'),
71
+ Settings: require('./src/models/settings'),
72
+ Levy:require('./src/models/levy'),
73
+ LevyType:require('./src/models/levytype'),
74
+ LevyContract:require('./src/models/levycontract'),
75
+ Invoice:require('./src/models/invoice'),
76
+ Reminder:require('./src/models/reminder'),
77
+ Penalty:require('./src/models/penalty'),
78
+ Notifiaction:require('./src/models/notification'),
79
+ Resident:require('./src/models/resident')
80
+ };
81
+
82
+ // Function to get models dynamically from a specific database connection
83
+ async function getModelFromDB(dbConnection, modelName, schema) {
84
+ if (!dbConnection.models[modelName]) {
85
+ return dbConnection.model(modelName, schema); // Register the model in the db connection
86
+ }
87
+ return dbConnection.models[modelName]; // Return existing model if already registered
88
+ }
89
+
90
+ module.exports = {
91
+ connectToMongoDB,
92
+ switchDB,
93
+ getModelFromDB,
94
+ ...models // Spread operator to export all models
95
95
  }
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
- {
2
- "name": "payservedb",
3
- "version": "2.5.0",
4
- "main": "index.js",
5
- "scripts": {
6
- "test": "echo \"Error: no test specified\" && exit 1"
7
- },
8
- "keywords": [],
9
- "author": "",
10
- "license": "ISC",
11
- "description": "",
12
- "dependencies": {
13
- "dotenv": "^16.4.5",
14
- "mongoose": "^8.3.5"
15
- }
16
- }
1
+ {
2
+ "name": "payservedb",
3
+ "version": "2.5.1",
4
+ "main": "index.js",
5
+ "scripts": {
6
+ "test": "echo \"Error: no test specified\" && exit 1"
7
+ },
8
+ "keywords": [],
9
+ "author": "",
10
+ "license": "ISC",
11
+ "description": "",
12
+ "dependencies": {
13
+ "dotenv": "^16.4.5",
14
+ "mongoose": "^8.3.5"
15
+ }
16
+ }
@@ -1,18 +1,18 @@
1
- // models/apiLog.js
2
- const mongoose = require('mongoose');
3
- const { Schema } = mongoose;
4
-
5
- const apiLogSchema = new Schema({
6
- url: { type: String, required: true, index: true },
7
- method: { type: String, required: true, index: true },
8
- duration: { type: Number, required: true },
9
- time: { type: Date, default: Date.now, required: true, index: true },
10
- date: { type: String, required: true, index: true },
11
- });
12
-
13
-
14
- apiLogSchema.index({ time: 1 }, { expireAfterSeconds: 60 * 60 * 24 * 365 });
15
-
16
- const ApiLog = mongoose.model('ApiLog', apiLogSchema);
17
-
18
- module.exports = ApiLog;
1
+ // models/apiLog.js
2
+ const mongoose = require('mongoose');
3
+ const { Schema } = mongoose;
4
+
5
+ const apiLogSchema = new Schema({
6
+ url: { type: String, required: true, index: true },
7
+ method: { type: String, required: true, index: true },
8
+ duration: { type: Number, required: true },
9
+ time: { type: Date, default: Date.now, required: true, index: true },
10
+ date: { type: String, required: true, index: true },
11
+ });
12
+
13
+
14
+ apiLogSchema.index({ time: 1 }, { expireAfterSeconds: 60 * 60 * 24 * 365 });
15
+
16
+ const ApiLog = mongoose.model('ApiLog', apiLogSchema);
17
+
18
+ module.exports = ApiLog;
@@ -1,18 +1,18 @@
1
-
2
- const mongoose = require('mongoose');
3
- const { Schema } = mongoose;
4
-
5
- const ArchivedApiLogSchema = new Schema({
6
- url: { type: String, required: true, index: true },
7
- method: { type: String, required: true, enum: ['GET', 'POST', 'PUT', 'DELETE'], index: true },
8
- duration: { type: Number, required: true },
9
- time: { type: Date, default: Date.now, required: true, index: true },
10
- date: { type: String, required: true, index: true },
11
- });
12
-
13
-
14
- ArchivedApiLogSchema.index({ time: 1 }, { expireAfterSeconds: 60 * 60 * 24 * 365 });
15
-
16
- const ArchivedApiLog = mongoose.model('ArchivedApiLog', ArchivedApiLogSchema);
17
-
18
- module.exports = ArchivedApiLog;
1
+
2
+ const mongoose = require('mongoose');
3
+ const { Schema } = mongoose;
4
+
5
+ const ArchivedApiLogSchema = new Schema({
6
+ url: { type: String, required: true, index: true },
7
+ method: { type: String, required: true, enum: ['GET', 'POST', 'PUT', 'DELETE'], index: true },
8
+ duration: { type: Number, required: true },
9
+ time: { type: Date, default: Date.now, required: true, index: true },
10
+ date: { type: String, required: true, index: true },
11
+ });
12
+
13
+
14
+ ArchivedApiLogSchema.index({ time: 1 }, { expireAfterSeconds: 60 * 60 * 24 * 365 });
15
+
16
+ const ArchivedApiLog = mongoose.model('ArchivedApiLog', ArchivedApiLogSchema);
17
+
18
+ module.exports = ArchivedApiLog;
@@ -1,83 +1,83 @@
1
- const mongoose = require('mongoose');
2
-
3
- const ArchivedAuditLogSchema = new mongoose.Schema({
4
- action: {
5
- type: String,
6
- required: true,
7
- trim: true
8
- },
9
- page: {
10
- type: String,
11
- required: true,
12
- trim: true
13
- },
14
- userId: {
15
- type: mongoose.Schema.Types.ObjectId,
16
- ref: 'Company',
17
- required: true
18
- },
19
- userInfo: {
20
- type: mongoose.Schema.Types.Mixed,
21
- required: true
22
- },
23
- projectId: {
24
- type: mongoose.Schema.Types.ObjectId,
25
- ref: 'Project',
26
- required: true
27
- },
28
- projectInfo: {
29
- type: mongoose.Schema.Types.Mixed,
30
- required: true
31
- },
32
- computerName: {
33
- type: String,
34
- required: true,
35
- trim: true
36
- },
37
- browser: {
38
- type: String,
39
- required: true,
40
- trim: true
41
- },
42
- ipAddress: {
43
- type: String,
44
- required: true,
45
- trim: true
46
- },
47
- time: {
48
- type: String,
49
- required: true,
50
- trim: true
51
- },
52
- date: {
53
- type: String,
54
- required: true,
55
- trim: true
56
- },
57
- createdOn: {
58
- type: Date,
59
- default: Date.now,
60
- required: true
61
- },
62
- oldData: {
63
- type: mongoose.Schema.Types.Mixed,
64
- default: {}
65
- },
66
- newData: {
67
- type: mongoose.Schema.Types.Mixed,
68
- default: {}
69
- },
70
- deletedData: {
71
- type: mongoose.Schema.Types.Mixed,
72
- default: {}
73
- }
74
- }, {
75
- timestamps: true
76
- });
77
-
78
- ArchivedAuditLogSchema.index({ userId: 1, projectId: 1, createdOn: -1 });
79
- ArchivedAuditLogSchema.index({ action: 1 });
80
- ArchivedAuditLogSchema.index({ page: 1 });
81
- const ArchivedAuditLog = mongoose.model('ArchivedAuditLog', ArchivedAuditLogSchema);
82
-
83
- module.exports = ArchivedAuditLog;
1
+ const mongoose = require('mongoose');
2
+
3
+ const ArchivedAuditLogSchema = new mongoose.Schema({
4
+ action: {
5
+ type: String,
6
+ required: true,
7
+ trim: true
8
+ },
9
+ page: {
10
+ type: String,
11
+ required: true,
12
+ trim: true
13
+ },
14
+ userId: {
15
+ type: mongoose.Schema.Types.ObjectId,
16
+ ref: 'Company',
17
+ required: true
18
+ },
19
+ userInfo: {
20
+ type: mongoose.Schema.Types.Mixed,
21
+ required: true
22
+ },
23
+ projectId: {
24
+ type: mongoose.Schema.Types.ObjectId,
25
+ ref: 'Project',
26
+ required: true
27
+ },
28
+ projectInfo: {
29
+ type: mongoose.Schema.Types.Mixed,
30
+ required: true
31
+ },
32
+ computerName: {
33
+ type: String,
34
+ required: true,
35
+ trim: true
36
+ },
37
+ browser: {
38
+ type: String,
39
+ required: true,
40
+ trim: true
41
+ },
42
+ ipAddress: {
43
+ type: String,
44
+ required: true,
45
+ trim: true
46
+ },
47
+ time: {
48
+ type: String,
49
+ required: true,
50
+ trim: true
51
+ },
52
+ date: {
53
+ type: String,
54
+ required: true,
55
+ trim: true
56
+ },
57
+ createdOn: {
58
+ type: Date,
59
+ default: Date.now,
60
+ required: true
61
+ },
62
+ oldData: {
63
+ type: mongoose.Schema.Types.Mixed,
64
+ default: {}
65
+ },
66
+ newData: {
67
+ type: mongoose.Schema.Types.Mixed,
68
+ default: {}
69
+ },
70
+ deletedData: {
71
+ type: mongoose.Schema.Types.Mixed,
72
+ default: {}
73
+ }
74
+ }, {
75
+ timestamps: true
76
+ });
77
+
78
+ ArchivedAuditLogSchema.index({ userId: 1, projectId: 1, createdOn: -1 });
79
+ ArchivedAuditLogSchema.index({ action: 1 });
80
+ ArchivedAuditLogSchema.index({ page: 1 });
81
+ const ArchivedAuditLog = mongoose.model('ArchivedAuditLog', ArchivedAuditLogSchema);
82
+
83
+ module.exports = ArchivedAuditLog;
@@ -0,0 +1,35 @@
1
+ const mongoose = require('mongoose');
2
+
3
+ const assetSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ },
9
+ name: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ serialNumber: {
14
+ type: String,
15
+ unique: true,
16
+ required: true,
17
+ },
18
+ dateBought: {
19
+ type: String, // Year or full date, e.g., '2023' or '2023-01-01'
20
+ required: true,
21
+ },
22
+ // assignedTo: {
23
+ // type: String, // Name of the person or department the asset is assigned to
24
+ // default: 'Unassigned', // Default if not yet assigned
25
+ // }, Commented out, moved to the vendor schema
26
+ insuranceStatus: {
27
+ type: String,
28
+ enum: ['Insured', 'Not Insured', 'Expired'],
29
+ required: true,
30
+ },
31
+ }, {
32
+ timestamps: true,
33
+ });
34
+
35
+ module.exports = mongoose.model('Asset', assetSchema);
@@ -1,17 +1,17 @@
1
- const mongoose = require("mongoose");
2
-
3
- const AuditSchema = new mongoose.Schema({
4
- entityType: {
5
- type: String,
6
- enum: ['lease', 'invoice'],
7
- required: true
8
- },
9
- entityId: { type: mongoose.Schema.Types.ObjectId, required: true },
10
- action: { type: String, required: true },
11
- changedBy: { type: String, required: true },
12
- changes: { type: mongoose.Schema.Types.Mixed, required: true },
13
- timestamp: { type: Date, default: Date.now },
14
- });
15
-
16
- module.exports = mongoose.model('Audit', AuditSchema);
1
+ const mongoose = require("mongoose");
2
+
3
+ const AuditSchema = new mongoose.Schema({
4
+ entityType: {
5
+ type: String,
6
+ enum: ['lease', 'invoice'],
7
+ required: true
8
+ },
9
+ entityId: { type: mongoose.Schema.Types.ObjectId, required: true },
10
+ action: { type: String, required: true },
11
+ changedBy: { type: String, required: true },
12
+ changes: { type: mongoose.Schema.Types.Mixed, required: true },
13
+ timestamp: { type: Date, default: Date.now },
14
+ });
15
+
16
+ module.exports = mongoose.model('Audit', AuditSchema);
17
17