forked from akshat-sachan/EventM
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuser.js
162 lines (149 loc) · 4.24 KB
/
user.js
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
const axios = require("axios");
const User = require("../models/userModel");
const Interest = require("../models/interestModel");
const bcrypt = require("bcryptjs");
const util = require("../utils/util");
let addUser = async (req, res) => {
try {
const data = req.body;
const hashedPassword = await bcrypt.hash(data.password, 10);
data.password = hashedPassword;
const user = await User.create(data);
res.status(201).json({ User: user, message: "User created successfully" });
} catch (error) {
res.status(400).json(error);
}
};
let login = async (req, res) => {
try {
const user = await User.findOne({ email: req.body.email });
if (user) {
const isMatch = await bcrypt.compare(req.body.password, user.password);
if (isMatch) {
const token = util.generateToken(user._id);
res.status(200).json({
User: user,
message: "User logged in successfully",
Token: token,
});
} else {
res.status(401).json({ message: "Invalid credentials" });
}
} else {
res.status(401).json({ message: "Invalid credentials" });
}
} catch (error) {
res.status(400).json(error);
}
};
let deleteUser = async (req, res) => {
try {
const user = await User.findOneAndDelete({ _id: req.user._id });
res.status(200).json({ User: user, message: "User deleted successfully" });
} catch (error) {
res.status(400).json(error);
}
};
let addInterest = async (req, res) => {
try {
const interest = await Interest.findOne({ _id: req.params.id });
const result = await User.findOneAndUpdate(
{ _id: req.user._id },
{
$addToSet: {
interests: interest.interestName,
},
}
);
res
.status(200)
.json({ Interest: result, msg: "Interest updated successfully" });
} catch (error) {
res.status(400).json(error);
}
};
let getUserDetails = async (req, res) => {
try {
// console.log(req.user);
const user = await User.findOne({ _id: req.user._id });
res
.status(200)
.json({ User: user, message: "User details retrieved successfully" });
} catch (error) {
res.status(400).json(error);
}
};
let getAllEvents = async (req, res) => {
try {
const url = `https://www.eventbriteapi.com/v3/organizations/${process.env.ORGANIZATION_ID}/events/?token=${process.env.API_TOKEN}`;
// console.log(process.env.ORGANIZATION_ID + " " + process.env.API_TOKEN);
let response = await axios.get(url);
res.status(200).json(response.data.events);
} catch (e) {
res.status(400).json({ msg: e.message });
}
};
let registerForEvents = async (req, res) => {
try {
let eventId = req.params.id;
let { eventName } = req.body;
let newEvent = {eventId, eventName};
await User.findOneAndUpdate(
{ _id: req.user._id },
{
$push: {
events: newEvent
}
}
);
res.status(200).json({ msg: "Event registered successfully" });
} catch (e) {
res.status(400).json({ msg: e.message });
}
};
let fetchRegisteredEvents = async (req, res) => {
try {
let response = await axios.get(
`https://www.eventbriteapi.com/v3/organizations/${process.env.ORGANIZATION_ID}/events/?token=${process.env.API_TOKEN}`
);
let registerEvents = req.user.events.filter((event) => {
return response.data.events.some((e) => e.id === event.eventId);
});
/*
response.data.events wali id's [this contains all the events]
688343623307
688487002157
688343553097
689572659387
689572539027
689566400667
*/
// console.log(registerEvents);
// events wali list empty hai
res.status(200).json(registerEvents);
} catch (error) {
console.log(error);
res.status(500).json({ message: "Internal server error" });
}
};
let getAllUsers = async (req, res) => {
try {
let users = await User.find();
// console.log(users);
res.status(200).json({message: "All users fetched successfully", users});
} catch (e) {
console.log(e.message);
res.status(500).json({msg: "Can't fetch All users"});
}
};
module.exports = {
addUser,
login,
deleteUser,
addInterest,
getUserDetails,
getAllEvents,
getAllUsers,
registerForEvents,
fetchRegisteredEvents,
};