payservedb 1.1.5 → 1.1.6
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/package.json +1 -1
- package/src/models/customer.js +59 -38
package/package.json
CHANGED
package/src/models/customer.js
CHANGED
|
@@ -1,55 +1,76 @@
|
|
|
1
1
|
const mongoose = require('mongoose');
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
const customerSchema = new mongoose.Schema({
|
|
5
|
-
customerNumber: {
|
|
6
|
-
type: Number,
|
|
7
|
-
required: [true, 'Customer number is required'],
|
|
8
|
-
unique: true // Ensure customer number is unique
|
|
9
|
-
},
|
|
3
|
+
const VisitorSchema = new mongoose.Schema({
|
|
10
4
|
firstName: {
|
|
11
5
|
type: String,
|
|
12
|
-
required:
|
|
13
|
-
trim: true
|
|
6
|
+
required: true,
|
|
14
7
|
},
|
|
15
8
|
lastName: {
|
|
16
9
|
type: String,
|
|
17
|
-
required:
|
|
18
|
-
trim: true
|
|
10
|
+
required: true,
|
|
19
11
|
},
|
|
20
|
-
|
|
12
|
+
phoneNumber: {
|
|
21
13
|
type: String,
|
|
22
|
-
required:
|
|
23
|
-
unique: true, // Ensure email uniqueness for data integrity
|
|
24
|
-
lowercase: true, // Normalize email to lowercase
|
|
25
|
-
trim: true,
|
|
26
|
-
match: [/\S+@\S+\.\S+/, 'Email format is invalid'] // Validate email format
|
|
14
|
+
required: true,
|
|
27
15
|
},
|
|
28
|
-
|
|
16
|
+
idNumber: {
|
|
29
17
|
type: String,
|
|
30
|
-
required:
|
|
31
|
-
trim: true
|
|
18
|
+
required: true,
|
|
32
19
|
},
|
|
33
|
-
|
|
20
|
+
vehicleRegistration: {
|
|
34
21
|
type: String,
|
|
35
|
-
required:
|
|
36
|
-
enum: ['Tenant', 'Home Owner'],
|
|
22
|
+
required: true,
|
|
37
23
|
},
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
24
|
+
familyMembers: [
|
|
25
|
+
{
|
|
26
|
+
name: {
|
|
27
|
+
type: String,
|
|
28
|
+
required: true,
|
|
29
|
+
},
|
|
30
|
+
phoneNumber: {
|
|
31
|
+
type: String,
|
|
32
|
+
required: true,
|
|
33
|
+
},
|
|
34
|
+
relation: {
|
|
35
|
+
type: String,
|
|
36
|
+
required: true,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
staff: [
|
|
41
|
+
{
|
|
42
|
+
name: {
|
|
43
|
+
type: String,
|
|
44
|
+
required: true,
|
|
45
|
+
},
|
|
46
|
+
phoneNumber: {
|
|
47
|
+
type: String,
|
|
48
|
+
required: true,
|
|
49
|
+
},
|
|
50
|
+
jobRole: {
|
|
51
|
+
type: String,
|
|
52
|
+
required: true,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
vehicles: [
|
|
57
|
+
{
|
|
58
|
+
name: {
|
|
59
|
+
type: String,
|
|
60
|
+
required: true,
|
|
61
|
+
},
|
|
62
|
+
model: {
|
|
63
|
+
type: String,
|
|
64
|
+
required: true,
|
|
65
|
+
},
|
|
66
|
+
plateNumber: {
|
|
67
|
+
type: String,
|
|
68
|
+
required: true,
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
],
|
|
46
72
|
});
|
|
47
73
|
|
|
48
|
-
|
|
49
|
-
customerSchema.index({ email: 1 });
|
|
50
|
-
customerSchema.index({ customerNumber: 1 });
|
|
51
|
-
|
|
52
|
-
// Compile the model from the schema
|
|
53
|
-
const Customer = mongoose.model('Customer', customerSchema);
|
|
74
|
+
const Visitor = mongoose.model('Visitor', VisitorSchema);
|
|
54
75
|
|
|
55
|
-
module.exports =
|
|
76
|
+
module.exports = Visitor;
|