136 lines
3.4 KiB
JavaScript
136 lines
3.4 KiB
JavaScript
const path = require("path");
|
|
const attendeeRepository = require(path.join(__dirname, "../attendee"));
|
|
|
|
const allAttendees = (req, res) => {
|
|
const isAdmin = req.isAuthenticated() || true;
|
|
|
|
return attendeeRepository
|
|
.allAttendees(isAdmin)
|
|
.then(attendees =>
|
|
res.send({
|
|
attendees: attendees,
|
|
success: true
|
|
})
|
|
)
|
|
.catch(error => {
|
|
const { statusCode, message } = error;
|
|
|
|
return res.status(statusCode || 500).send({
|
|
success: false,
|
|
message: message || "Unable to fetch lottery attendees."
|
|
});
|
|
});
|
|
};
|
|
|
|
const addAttendee = (req, res) => {
|
|
const { attendee } = req.body;
|
|
|
|
const requiredColors = [attendee["red"], attendee["blue"], attendee["green"], attendee["yellow"]];
|
|
const correctColorsTypes = requiredColors.filter(color => typeof color === "number");
|
|
if (requiredColors.length !== correctColorsTypes.length) {
|
|
return res.status(400).send({
|
|
message: "Incorrect or missing color, required type Number for keys: 'blue', 'red', 'green' & 'yellow'.",
|
|
success: false
|
|
});
|
|
}
|
|
|
|
if (typeof attendee["name"] !== "string" && typeof attendee["phoneNumber"] !== "number") {
|
|
return res.status(400).send({
|
|
message: "Incorrect or missing attendee keys 'name' or 'phoneNumber'.",
|
|
success: false
|
|
});
|
|
}
|
|
|
|
return attendeeRepository
|
|
.addAttendee(attendee)
|
|
.then(savedAttendee => {
|
|
var io = req.app.get("socketio");
|
|
io.emit("new_attendee", {});
|
|
return savedAttendee;
|
|
})
|
|
.then(savedAttendee =>
|
|
res.send({
|
|
attendee: savedAttendee,
|
|
message: `Successfully added attendee ${attendee.name} to lottery.`,
|
|
success: true
|
|
})
|
|
);
|
|
};
|
|
|
|
const updateAttendeeById = (req, res) => {
|
|
const { id } = req.params;
|
|
const { attendee } = req.body;
|
|
|
|
return attendeeRepository
|
|
.updateAttendeeById(id, attendee)
|
|
.then(updatedAttendee => {
|
|
var io = req.app.get("socketio");
|
|
io.emit("refresh_data", {});
|
|
return updatedAttendee;
|
|
})
|
|
.then(attendee =>
|
|
res.send({
|
|
attendee,
|
|
message: `Updated attendee: ${attendee.name}`,
|
|
success: true
|
|
})
|
|
)
|
|
.catch(error => {
|
|
const { statusCode, message } = error;
|
|
|
|
return res.status(statusCode || 500).send({
|
|
message: message || "Unexpected error occured while deleteing attendee by id.",
|
|
success: false
|
|
});
|
|
});
|
|
};
|
|
|
|
const deleteAttendeeById = (req, res) => {
|
|
const { id } = req.params;
|
|
|
|
return attendeeRepository
|
|
.deleteAttendeeById(id)
|
|
.then(removedAttendee => {
|
|
var io = req.app.get("socketio");
|
|
io.emit("refresh_data", {});
|
|
return removedAttendee;
|
|
})
|
|
.then(attendee =>
|
|
res.send({
|
|
message: `Removed attendee: ${attendee.name}`,
|
|
success: true
|
|
})
|
|
)
|
|
.catch(error => {
|
|
const { statusCode, message } = error;
|
|
|
|
return res.status(statusCode || 500).send({
|
|
message: message || "Unexpected error occured while deleteing attendee by id.",
|
|
success: false
|
|
});
|
|
});
|
|
};
|
|
|
|
const deleteAttendees = (req, res) => {
|
|
return attendeeRepository
|
|
.deleteAttendees()
|
|
.then(removedAttendee => {
|
|
var io = req.app.get("socketio");
|
|
io.emit("refresh_data", {});
|
|
})
|
|
.then(_ =>
|
|
res.send({
|
|
message: "Removed all attendees",
|
|
success: true
|
|
})
|
|
);
|
|
};
|
|
|
|
module.exports = {
|
|
allAttendees,
|
|
addAttendee,
|
|
updateAttendeeById,
|
|
deleteAttendeeById,
|
|
deleteAttendees
|
|
};
|