Router thingies!

This commit is contained in:
Kasper Rynning-Tønnesen
2020-01-17 15:59:21 +01:00
parent 11aba3556f
commit 002cf71137
10 changed files with 352 additions and 10 deletions

52
api/login.js Normal file
View File

@@ -0,0 +1,52 @@
const passport = require("passport");
const path = require("path");
const User = require(path.join(__dirname + "/../schemas/User"));
const router = require("express").Router();
router.get("/", function(req, res) {
res.render("index", { user: req.user });
});
router.get("/register", function(req, res) {
res.render("register", {});
});
router.post("/register", function(req, res, next) {
console.log("registering user");
User.register(
new User({ username: req.body.username }),
req.body.password,
function(err) {
if (err) {
console.log("error while user register!", err);
return next(err);
}
console.log("user registered!");
res.redirect("/");
}
);
});
router.get("/login", function(req, res) {
res.render("login", { user: req.user, message: req.flash("error") });
});
router.post(
"/login",
passport.authenticate("local", {
failureRedirect: "/login",
failureFlash: true
}),
function(req, res) {
res.redirect("/");
}
);
router.get("/logout", function(req, res) {
req.logout();
res.redirect("/");
});
module.exports = router;

99
api/retrieve.js Normal file
View File

@@ -0,0 +1,99 @@
const express = require("express");
const path = require("path");
const router = express.Router();
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/vinlottis", {
useNewUrlParser: true
});
const Purchase = require(path.join(__dirname + "/../schemas/Purchase"));
const Wine = require(path.join(__dirname + "/../schemas/Wine"));
const Highscore = require(path.join(__dirname + "/../schemas/Highscore"));
router.use((req, res, next) => {
next();
});
router.route("/purchase/statistics").get(async (req, res) => {
let purchases = await Purchase.find()
.populate("wines")
.sort({ date: 1 });
res.json(purchases);
});
router.route("/purchase/statistics/color").get(async (req, res) => {
const countColor = await Purchase.find();
let red = 0;
let blue = 0;
let yellow = 0;
let green = 0;
for (let i = 0; i < countColor.length; i++) {
let element = countColor[i];
red += element.red;
blue += element.blue;
yellow += element.yellow;
green += element.green;
}
const highscore = await Highscore.find();
let redWin = 0;
let blueWin = 0;
let yellowWin = 0;
let greenWin = 0;
for (let i = 0; i < highscore.length; i++) {
let element = highscore[i];
for (let y = 0; y < element.wins.length; y++) {
let currentWin = element.wins[y];
switch (currentWin.color) {
case "blue":
blueWin += 1;
break;
case "red":
redWin += 1;
break;
case "yellow":
yellowWin += 1;
break;
case "green":
greenWin += 1;
break;
}
}
}
const total = red + yellow + blue + green;
res.json({
red: {
total: red,
win: redWin
},
blue: {
total: blue,
win: blueWin
},
green: {
total: green,
win: greenWin
},
yellow: {
total: yellow,
win: yellowWin
},
total: total
});
});
router.route("/highscore/statistics").get(async (req, res) => {
const highscore = await Highscore.find().populate("wins.wine");
res.json(highscore);
});
router.route("/wines/statistics").get(async (req, res) => {
const wines = await Wine.find();
res.json(wines);
});
module.exports = router;

94
api/update.js Normal file
View File

@@ -0,0 +1,94 @@
const express = require("express");
const path = require("path");
const router = express.Router();
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/vinlottis", {
useNewUrlParser: true
});
const Purchase = require(path.join(__dirname + "/../schemas/Purchase"));
const Wine = require(path.join(__dirname + "/../schemas/Wine"));
const Highscore = require(path.join(__dirname + "/../schemas/Highscore"));
router.use((req, res, next) => {
next();
});
router.route("/log").post(async (req, res) => {
if (!req.isAuthenticated()) {
return;
}
const purchaseBody = req.body.purchase;
const winnersBody = req.body.winners;
const date = purchaseBody.date;
const blue = purchaseBody.blue;
const red = purchaseBody.red;
const yellow = purchaseBody.yellow;
const green = purchaseBody.green;
const winesThisDate = [];
for (let i = 0; i < winnersBody.length; i++) {
let currentWinner = winnersBody[i];
let wonWine = await Wine.findOne({ name: currentWinner.wine.name });
if (wonWine == undefined) {
const newWonWine = new Wine({
name: currentWinner.wine.name,
vivinoLink: currentWinner.wine.vivinoLink,
rating: currentWinner.wine.rating,
occurences: 1
});
await newWonWine.save();
wonWine = newWonWine;
} else {
wonWine.occurences += 1;
await wonWine.save();
}
winesThisDate.push(wonWine);
const person = await Highscore.findOne({
name: currentWinner.name
});
if (person == undefined) {
let newPerson = new Highscore({
name: currentWinner.name,
wins: [
{
color: currentWinner.color,
date: date,
wine: wonWine
}
]
});
await newPerson.save();
} else {
person.wins.push({
color: currentWinner.color,
date: date,
wine: wonWine
});
person.markModified("wins");
await person.save();
}
}
let purchase = new Purchase({
date: date,
blue: blue,
yellow: yellow,
red: red,
green: green,
wines: winesThisDate
});
await purchase.save();
res.send(true);
});
module.exports = router;