-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUserController.js
More file actions
137 lines (115 loc) · 4.2 KB
/
UserController.js
File metadata and controls
137 lines (115 loc) · 4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
const UserModel = require("./UserModel.js");
const crypto = require('crypto');
const Hebcal = require('hebcal');
const axios = require('axios');
const UserController = {
validation: async (user) => {
if (user.id == null || user.name == null || user.email == null || user.phone == null) {
return false;
}
if (user.email.search("@") == -1 || user.email.search(" ") != -1) {
return false;
}
const api_key = "0cae7bfa98a0b8b78d72e808759ec1f6";
console.log(user.phone + " phone");
const phone_number = user.phone;
console.log(phone_number);
const url = `https://phonevalidation.abstractapi.com/v1/?api_key=61c5fa0500f940f793ecee880cbd5659&phone=${phone_number}`;
try {
const response = await axios.get(url);
const { valid, international_format } = response.data;
console.log(response.data.valid + "valid")
if (valid) {
console.log('Phone number is valid');
return true;
} else {
console.log('Phone number is not valid');
return false;
}
} catch (error) {
console.log('Error validating phone number:', error);
return false;
}
},
getAllUsers: async (req, res) => {
try {
const user = await UserModel.users;
res.status(200).json(user)
} catch (error) {
res.status(400).json({ message: error.message });
}
},
getUserById: async (req, res) => {
try {
const user = UserModel.users.find(user => req.params.id == user.id)
res.json(user)
} catch (error) {
res.status(400).json({ message: error.message })
}
},
addUser: async (req, res) => {
try {
const addUser = req.body;
const uuid = crypto.randomUUID();
console.log(uuid + " uuid");
addUser.id = uuid
const hebDate = new Hebcal.HDate(new Date(req.body.date));
const hebDateString = hebDate.toString('h');
addUser.date = hebDateString
if (await UserController.validation(addUser)) {
const user = await UserModel.users.find(u => addUser.email === u.email)
if (user == null) {
UserModel.users.push(addUser)
console.log(addUser)
res.send(200).json(user)
// .then(newUser => {
// res.send(newUser)
// }).catch(err => {
// console.log(err)
// })
}
else {
res.send("User with that email already exists")
}
}
else {
res.send("All fields must be filled in correctly")
}
}
catch (error) {
res.status(400).json({ message: error.message })
}
},
updateUser: (req, res) => {
if (UserController.validation(req.body)) {
try {
const updateUser = UserModel.users.find((user) => user.id == req.params.id)
if (updateUser == null) {
return res.send('This user not exist')
}
updateUser.name = req.body.name;
updateUser.email = req.body.email;
updateUser.phone = req.body.phone;
res.status(200).json(updateUser)
} catch (error) {
res.status(400).json({ message: error.message })
}
}
else
res.send("All fields must be filled in correctly")
},
deleteUser: (req, res) => {
const id = req.params.id;
const index = UserModel.users.findIndex((user) => user.id == id)
try {
if (index == -1) {
return res.send('This user not exist');
}
UserModel.users.splice(index, 1);
res.status(200).json(UserModel.users[index])
} catch (error) {
res.status(400).json({ message: error.message })
}
},
}
module.exports = UserController;