From 80e6c91045b20d5f725f84fafbff1d7ef6b7474a Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Sat, 20 Feb 2021 13:29:41 +0100 Subject: [PATCH 01/16] API endpoint for getting latest lottery. --- api/controllers/lotteryController.js | 23 ++++++++++++++++++++++- api/lottery.js | 7 ++++++- api/router.js | 1 + 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/api/controllers/lotteryController.js b/api/controllers/lotteryController.js index ab446cc..199548c 100644 --- a/api/controllers/lotteryController.js +++ b/api/controllers/lotteryController.js @@ -139,6 +139,26 @@ const allLotteries = (req, res) => { }); }; +const latestLottery = (req, res) => { + return lotteryRepository + .latestLottery() + .then(lottery => + res.send({ + lottery, + message: "Latest lottery.", + success: true + }) + ) + .catch(error => { + const { statusCode, message } = error; + + return res.status(statusCode || 500).send({ + message: message || "Unexpected error occured while fetching all lotteries.", + success: false + }); + }); +}; + function verifyLotteryPayload(raffles, stolen, wines) { return new Promise((resolve, reject) => { if (raffles == undefined || !raffles instanceof Array) { @@ -188,5 +208,6 @@ module.exports = { drawWinner, archiveLottery, lotteryByDate, - allLotteries + allLotteries, + latestLottery }; diff --git a/api/lottery.js b/api/lottery.js index 6b1bf90..956e09f 100644 --- a/api/lottery.js +++ b/api/lottery.js @@ -130,6 +130,10 @@ const allLotteriesIncludingWinners = async (sort = "asc", yearFilter = undefined }); }; +const latestLottery = async () => { + return Lottery.findOne().sort({ date: -1 }); +}; + const drawWinner = async () => { let allContestants = await Attendee.find({ winner: false }); @@ -259,5 +263,6 @@ module.exports = { archive, lotteryByDate, allLotteries, - allLotteriesIncludingWinners + allLotteriesIncludingWinners, + latestLottery }; diff --git a/api/router.js b/api/router.js index 77e8661..a9cac58 100644 --- a/api/router.js +++ b/api/router.js @@ -71,6 +71,7 @@ router.delete("/lottery/winner/:id", mustBeAuthenticated, winnerController.delet router.get("/lottery/draw", mustBeAuthenticated, lotteryController.drawWinner); router.post("/lottery/archive", mustBeAuthenticated, lotteryController.archiveLottery); +router.get("/lottery/latest", lotteryController.latestLottery); router.get("/lottery/:epoch", lotteryController.lotteryByDate); router.get("/lotteries/", lotteryController.allLotteries); -- 2.34.1 From 8df082dd484aa5dc275754f6705c9cf0fa78f983 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Sat, 20 Feb 2021 13:30:05 +0100 Subject: [PATCH 02/16] If todays lottery is archived show dialog. Use new api/lottery/latest to check if todays lottery has already been archived. If yes we disable button and show dialog explaining how to reset to next weeks lottery. --- .../components/admin/archiveLotteryPage.vue | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/frontend/components/admin/archiveLotteryPage.vue b/frontend/components/admin/archiveLotteryPage.vue index e748687..724072d 100644 --- a/frontend/components/admin/archiveLotteryPage.vue +++ b/frontend/components/admin/archiveLotteryPage.vue @@ -67,7 +67,14 @@
- +

+ Lotteriet er arkivert!
Du kan nå slette dagens viner, deltakere & vinnere for å tilbakestille til neste + ukes lotteri. +

+ +
@@ -81,6 +88,7 @@ export default { data() { return { payed: undefined, + todaysAlreadySubmitted: false, wines: [], winners: [], attendees: [], @@ -97,6 +105,7 @@ export default { this.fetchLotteryWines(); this.fetchLotteryWinners(); this.fetchLotteryAttendees(); + this.checkIfAlreadySubmittedForToday(); }, watch: { lotteryColors: { @@ -162,6 +171,19 @@ export default { } }); }, + checkIfAlreadySubmittedForToday() { + return fetch("/api/lottery/latest") + .then(resp => resp.json()) + .then(response => { + const getDay = d => new Date(d).getDate(); + + if (response.lottery.date && (getDay(response.lottery.date) == getDay(new Date()))) { + this.todaysAlreadySubmitted = true; + } else { + this.todaysAlreadySubmitted = false; + } + }) + }, updateLotteryColorsWithAttendees(attendees) { this.attendees.map(attendee => { this.lotteryColors.map(color => (color.value += attendee[color.key])); @@ -222,6 +244,7 @@ export default { .then(resp => resp.json()) .then(response => { if (response.success) { + this.todaysAlreadySubmitted = true; this.$toast.info({ title: "Lotteriet er sendt inn og arkivert! Du kan nå slette viner, deltakere & vinnere slettes.", timeout: 10000 @@ -278,6 +301,17 @@ select { } } +.info-message { + padding: 0.75rem; + text-align: center; + background-color: var(--light-blue); + color: var(--matte-text-color); + border-radius: 4px; + + font-size: 1.1rem; + line-height: 1.5rem; +} + .winner-element { display: flex; flex-direction: column; -- 2.34.1 From b0000293a678d0b64b205e8e8b5e65212a6b49a9 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Sat, 20 Feb 2021 13:41:16 +0100 Subject: [PATCH 03/16] No longer shows "0 days ago", instead human string. When viewing winners that won today it previously displayed "0 dager siden", now changed to return "i dag" instead. --- frontend/components/PersonalHighscorePage.vue | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/frontend/components/PersonalHighscorePage.vue b/frontend/components/PersonalHighscorePage.vue index 31b2ad8..3195306 100644 --- a/frontend/components/PersonalHighscorePage.vue +++ b/frontend/components/PersonalHighscorePage.vue @@ -28,7 +28,7 @@
- {{ humanReadableDate(win.date) }} - {{ daysAgo(win.date) }} dager siden + {{ humanReadableDate(win.date) }} - {{ daysAgo(win.date) }}
@@ -133,7 +133,14 @@ export default { } }, humanReadableDate: humanReadableDate, - daysAgo: daysAgo + daysAgo(date) { + const days = daysAgo(date); + if (days == 0) { + return "i dag"; + } else { + return `${days} dager siden`; + } + } } }; -- 2.34.1 From 33fa7c14c67d2d6b02b371a2f1e3e5eb835bf935 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Sat, 20 Feb 2021 13:49:01 +0100 Subject: [PATCH 04/16] Removed src folder. --- src/router.js | 102 -------------------------------------------------- 1 file changed, 102 deletions(-) delete mode 100644 src/router.js diff --git a/src/router.js b/src/router.js deleted file mode 100644 index f5f544c..0000000 --- a/src/router.js +++ /dev/null @@ -1,102 +0,0 @@ -import VinlottisPage from "@/components/VinlottisPage"; -import GeneratePage from "@/components/GeneratePage"; -import TodaysPage from "@/components/TodaysPage"; -import AllWinesPage from "@/components/AllWinesPage"; - -import LoginPage from "@/components/LoginPage"; -import CreatePage from "@/components/CreatePage"; - -import AdminPage from "@/components/AdminPage"; - -import WinnerPage from "@/components/WinnerPage"; -import LotteryPage from "@/components/LotteryPage"; -import HistoryPage from "@/components/HistoryPage"; -import HighscorePage from "@/components/HighscorePage"; -import PersonalHighscorePage from "@/components/PersonalHighscorePage"; -import Salgsbetingelser from "@/components/Salgsbetingelser"; - -import RequestWine from "@/components/RequestWine"; -import AllRequestedWines from "@/components/AllRequestedWines"; - -const routes = [ - { - path: "*", - name: "Hjem", - component: VinlottisPage - }, - { - path: "/lottery", - name: "Lotteri", - component: LotteryPage - }, - { - path: "/dagens", - name: "Dagens vin", - component: TodaysPage - }, - { - path: "/viner", - name: "All viner", - component: AllWinesPage - }, - { - path: "/login", - name: "Login", - component: LoginPage - }, - { - path: "/create", - name: "Registrer", - component: CreatePage - }, - { - path: "/admin", - name: "Admin side", - component: AdminPage - }, - { - path: "/lottery/:tab", - component: LotteryPage - }, - { - path: "/winner/:id", - component: WinnerPage - }, - { - path: "/history/:date", - name: "Historie for dato", - component: HistoryPage - }, - { - path: "/history", - name: "Historie", - component: HistoryPage - }, - { - path: "/highscore/:name", - name: "Personlig topplisten", - component: PersonalHighscorePage - }, - { - path: "/highscore", - name: "Topplisten", - component: HighscorePage - }, - { - path: "/request", - name: "Etterspør vin", - component: RequestWine - }, - { - path: "/requested-wines", - name: "Etterspurte vin", - component: AllRequestedWines - }, - { - path: "/salgsbetingelser", - name: "Salgsbetingelser", - component: Salgsbetingelser - } -]; - -export { routes }; -- 2.34.1 From b0424a519c14d913413219aa6d5838fcd3d6c986 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Sat, 20 Feb 2021 13:57:39 +0100 Subject: [PATCH 05/16] Fixed drawing winner count was +1. On /lottery frontend page the count of winners that is sent to frontend over socketIO started one index higher than it should. This was from updating how winners are saved in the backend. Our winners array now no longer needs to be incremented with 1 from the backend. --- api/controllers/lotteryController.js | 2 +- frontend/ui/WinnerDraw.vue | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/api/controllers/lotteryController.js b/api/controllers/lotteryController.js index 199548c..5c62e93 100644 --- a/api/controllers/lotteryController.js +++ b/api/controllers/lotteryController.js @@ -9,7 +9,7 @@ const drawWinner = (req, res) => { io.emit("winner", { color: color, name: winner.name, - winner_count: winners.length + 1 + winner_count: winners.length }); return { winner, color, winners }; diff --git a/frontend/ui/WinnerDraw.vue b/frontend/ui/WinnerDraw.vue index 058bb1d..4501b55 100644 --- a/frontend/ui/WinnerDraw.vue +++ b/frontend/ui/WinnerDraw.vue @@ -146,7 +146,6 @@ export default { var timeLeft = animationEnd - Date.now(); if (timeLeft <= 0) { self.drawing = false; - console.time("drawing finished"); return clearInterval(interval); } if (currentName == "Amund Brandsrud") { -- 2.34.1 From 5af082784cdfcd230aa0473d14810abb160f40f8 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Sat, 20 Feb 2021 14:10:58 +0100 Subject: [PATCH 06/16] Always generate vipps url with amount. Also update vipps component to correctly show vipps and mobile info text in column correctly on mobile. --- frontend/ui/Vipps.vue | 61 ++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 39 deletions(-) diff --git a/frontend/ui/Vipps.vue b/frontend/ui/Vipps.vue index 952b9c4..1d47de9 100644 --- a/frontend/ui/Vipps.vue +++ b/frontend/ui/Vipps.vue @@ -1,15 +1,7 @@