Finer control when updating lottery.
Lottery update now has endpoint/functions for also submitting winners, wines and lottery (what's bought) separatly.
This commit is contained in:
114
api/update.js
114
api/update.js
@@ -10,7 +10,7 @@ const sub = require(path.join(__dirname + "/../api/subscriptions"));
|
||||
const _wineFunctions = require(path.join(__dirname + "/../api/wine"));
|
||||
const _personFunctions = require(path.join(__dirname + "/../api/person"));
|
||||
const Subscription = require(path.join(__dirname + "/../schemas/Subscription"));
|
||||
const Purchase = require(path.join(__dirname + "/../schemas/Purchase"));
|
||||
const Lottery = require(path.join(__dirname + "/../schemas/Purchase"));
|
||||
const PreLotteryWine = require(path.join(
|
||||
__dirname + "/../schemas/PreLotteryWine"
|
||||
));
|
||||
@@ -32,17 +32,28 @@ const submitWines = async (req, res) => {
|
||||
}
|
||||
|
||||
let subs = await Subscription.find();
|
||||
console.log("Sending new wines w/ push notification to all subscribers.")
|
||||
for (let i = 0; i < subs.length; i++) {
|
||||
let subscription = subs[i]; //get subscription from your databse here.
|
||||
|
||||
const message = JSON.stringify({
|
||||
message: "Dagens vin er lagt til, se den på lottis.vin/dagens!",
|
||||
title: "Ny vin!",
|
||||
link: "/#/dagens"
|
||||
});
|
||||
sub.sendNotification(subscription, message);
|
||||
|
||||
try {
|
||||
sub.sendNotification(subscription, message);
|
||||
} catch (error) {
|
||||
console.error("Error when trying to send push notification to subscriber.");
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
|
||||
return res.send(true);
|
||||
return res.send({
|
||||
message: "Submitted and notified push subscribers of new wines!",
|
||||
success: true
|
||||
});
|
||||
};
|
||||
|
||||
const schema = async (req, res) => {
|
||||
@@ -55,44 +66,73 @@ const schema = async (req, res) => {
|
||||
return res.send(nulledSchema);
|
||||
}
|
||||
|
||||
const submitLottery = async (req, res) => {
|
||||
await PreLotteryWine.deleteMany();
|
||||
// TODO IMPLEMENT WITH FRONTEND (unused)
|
||||
const submitWinesToLottery = async (req, res) => {
|
||||
const { lottery } = req.body;
|
||||
const { date, wines } = lottery;
|
||||
const wineObjects = await Promise.all(wines.map(async (wine) => await _wineFunctions.findSaveWine(wine)))
|
||||
|
||||
const purchaseBody = req.body.purchase;
|
||||
const winnersBody = req.body.winners;
|
||||
return Lottery.findOneAndUpdate({ date: date }, {
|
||||
date: date,
|
||||
wines: wineObjects
|
||||
}, {
|
||||
upsert: true
|
||||
}).then(_ => res.send(true))
|
||||
.catch(err => res.status(500).send({ message: 'Unexpected error while updating/saving wine to lottery.',
|
||||
success: false,
|
||||
exception: err.message }));
|
||||
}
|
||||
|
||||
const date = purchaseBody.date;
|
||||
const blue = purchaseBody.blue;
|
||||
const red = purchaseBody.red;
|
||||
const yellow = purchaseBody.yellow;
|
||||
const green = purchaseBody.green;
|
||||
/**
|
||||
* @apiParam (Request body) {Array} winners List of winners
|
||||
*/
|
||||
const submitWinnersToLottery = async (req, res) => {
|
||||
const { lottery } = req.body;
|
||||
const { winners, date } = lottery;
|
||||
|
||||
const bought = purchaseBody.bought;
|
||||
const stolen = purchaseBody.stolen;
|
||||
|
||||
const winesThisDate = [];
|
||||
|
||||
for (let i = 0; i < winnersBody.length; i++) {
|
||||
let currentWinner = winnersBody[i];
|
||||
|
||||
let wonWine = await _wineFunctions.findSaveWine(currentWinner);
|
||||
winesThisDate.push(wonWine);
|
||||
|
||||
await _personFunctions.findSavePerson(currentWinner, wonWine, date);
|
||||
for (let i = 0; i < winners.length; i++) {
|
||||
let currentWinner = winners[i];
|
||||
let wonWine = await _wineFunctions.findSaveWine(currentWinner.wine); // TODO rename to findAndSaveWineToLottery
|
||||
await _personFunctions.findSavePerson(currentWinner, wonWine, date); // TODO rename to findAndSaveWineToPerson
|
||||
}
|
||||
|
||||
let purchase = new Purchase({
|
||||
date: date,
|
||||
blue: blue,
|
||||
yellow: yellow,
|
||||
red: red,
|
||||
green: green,
|
||||
wines: winesThisDate,
|
||||
bought: bought,
|
||||
stolen: stolen
|
||||
});
|
||||
return res.json(true);
|
||||
}
|
||||
|
||||
await purchase.save();
|
||||
/**
|
||||
* @apiParam (Request body) {Date} date Date of lottery
|
||||
* @apiParam (Request body) {Number} blue Number of blue tickets
|
||||
* @apiParam (Request body) {Number} red Number of red tickets
|
||||
* @apiParam (Request body) {Number} green Number of green tickets
|
||||
* @apiParam (Request body) {Number} yellow Number of yellow tickets
|
||||
* @apiParam (Request body) {Number} bought Number of tickets bought
|
||||
* @apiParam (Request body) {Number} stolen Number of tickets stolen
|
||||
*/
|
||||
const submitLottery = async (req, res) => {
|
||||
const { lottery } = req.body
|
||||
|
||||
const { date,
|
||||
blue,
|
||||
red,
|
||||
yellow,
|
||||
green,
|
||||
bought,
|
||||
stolen } = lottery;
|
||||
|
||||
return Lottery.findOneAndUpdate({ date: date }, {
|
||||
date: date,
|
||||
blue: blue,
|
||||
yellow: yellow,
|
||||
red: red,
|
||||
green: green,
|
||||
bought: bought,
|
||||
stolen: stolen
|
||||
}, {
|
||||
upsert: true
|
||||
}).then(_ => res.send(true))
|
||||
.catch(err => res.status(500).send({ message: 'Unexpected error while updating/saving lottery.',
|
||||
success: false,
|
||||
exception: err.message }));
|
||||
|
||||
return res.send(true);
|
||||
};
|
||||
@@ -100,5 +140,7 @@ const submitLottery = async (req, res) => {
|
||||
module.exports = {
|
||||
submitWines,
|
||||
schema,
|
||||
submitLottery
|
||||
submitLottery,
|
||||
submitWinnersToLottery,
|
||||
submitWinesToLottery
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user