diff --git a/api/controllers/messageController.js b/api/controllers/messageController.js new file mode 100644 index 0000000..94dffe9 --- /dev/null +++ b/api/controllers/messageController.js @@ -0,0 +1,30 @@ +const path = require("path"); +const messageRepository = require(path.join(__dirname, "../message")); +const winnerRepository = require(path.join(__dirname, "../winner")); + +const notifyWinnerById = (req, res) => { + const { id } = req.params; + const isAdmin = req.isAuthenticated(); + + return winnerRepository + .winnerById(id, isAdmin) + .then(winner => messageRepository.sendPrizeSelectionLink(winner)) + .then(messageResponse => + res.send({ + messageResponse, + success: true + }) + ) + .catch(error => { + const { statusCode, message } = error; + + return res.status(statusCode || 500).send({ + message: message || "Unexpected error occured while sending message to winner by id.", + success: false + }); + }); +}; + +module.exports = { + notifyWinnerById +}; diff --git a/api/controllers/wineController.js b/api/controllers/wineController.js new file mode 100644 index 0000000..d9e8cc6 --- /dev/null +++ b/api/controllers/wineController.js @@ -0,0 +1,50 @@ +const path = require("path"); +const wineRepository = require(path.join(__dirname, "../wine")); + +const allWines = (req, res) => { + // TODO add "includeWinners" + + return wineRepository + .allWines() + .then(wines => + res.send({ + wines: wines, + message: `All wines.`, + success: true + }) + ) + .catch(error => { + const { statusCode, message } = error; + + return res.status(statusCode || 500).send({ + success: false, + message: message || "Unable to fetch all wines." + }); + }); +}; + +const wineById = (req, res) => { + const { id } = req.params; + + return wineRepository + .wineById(id) + .then(wine => { + res.send({ + wine, + success: true + }); + }) + .catch(error => { + const { statusCode, message } = error; + + return res.status(statusCode || 500).send({ + message: message || "Unexpected error occured while fetching wine by id.", + success: false + }); + }); +}; + +module.exports = { + allWines, + wineById +};