Add winners manually by posting /lottery/winners.
This commit is contained in:
@@ -1,8 +1,62 @@
|
||||
const path = require("path");
|
||||
const lotteryRepository = require(path.join(__dirname, "../lottery"));
|
||||
|
||||
const addWinners = (req, res) => {
|
||||
const { winners } = req.body;
|
||||
|
||||
if (!(winners instanceof Array)) {
|
||||
return res.status(400).send({
|
||||
message: "Winners must be array.",
|
||||
success: false
|
||||
});
|
||||
}
|
||||
|
||||
const requiredAttributes = ["name", "color"];
|
||||
const validColors = ["red", "blue", "green", "yellow"];
|
||||
const validateAllWinners = winners =>
|
||||
winners.map(winner => {
|
||||
return Promise.all(
|
||||
requiredAttributes.map(attr => {
|
||||
if (typeof winner[attr] === "undefined") {
|
||||
return Promise.reject({
|
||||
message: `Incorrect or missing attribute: ${attr}.`,
|
||||
statusCode: 400
|
||||
});
|
||||
}
|
||||
|
||||
if (!validColors.includes(winner.color)) {
|
||||
return Promise.reject({
|
||||
message: `Missing or incorrect color value, must have one of values: ${validColors.join(", ")}.`,
|
||||
statusCode: 400
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.resolve();
|
||||
})
|
||||
).then(_ => Promise.resolve(winner));
|
||||
});
|
||||
|
||||
return Promise.all(validateAllWinners(winners))
|
||||
.then(winners => lotteryRepository.addWinners(winners))
|
||||
.then(winners =>
|
||||
res.send({
|
||||
winners: winners,
|
||||
message: `Successfully added winners to lottery.`,
|
||||
success: true
|
||||
})
|
||||
)
|
||||
.catch(error => {
|
||||
const { statusCode, message } = error;
|
||||
|
||||
return res.status(statusCode || 500).send({
|
||||
message: message || "Unexpected error occured adding winners.",
|
||||
success: false
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const allWinners = (req, res) => {
|
||||
const isAdmin = req.isAuthenticated() || true;
|
||||
const isAdmin = req.isAuthenticated();
|
||||
|
||||
return lotteryRepository
|
||||
.allWinners(isAdmin)
|
||||
@@ -94,6 +148,7 @@ const deleteWinners = (req, res) => {
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
addWinners,
|
||||
allWinners,
|
||||
winnerById,
|
||||
deleteWinnerById,
|
||||
|
||||
Reference in New Issue
Block a user