diff --git a/api/request.js b/api/request.js new file mode 100644 index 0000000..d2aca2b --- /dev/null +++ b/api/request.js @@ -0,0 +1,60 @@ +const express = require("express"); +const path = require("path"); +const router = express.Router(); +const fetch = require('node-fetch'); +const { send } = require("process"); +const RequestedWine = require(path.join( + __dirname + "/../schemas/RequestedWine" +)); +const Wine = require(path.join( + __dirname + "/../schemas/Wine" +)); + +router.use((req, res, next) => { + next(); +}); + + +router.route("/request").get(async (req, res) => { + const rWines = await RequestedWine.find({}).populate("wine") + return res.send(rWines) +}) + +router.route("/request").post(async (req, res) => { + const {wine} = req.body + console.log(wine) + + let thisWineIsLOKO = await Wine.findOne({id: wine.id}) + + if(thisWineIsLOKO == undefined){ + thisWineIsLOKO = new Wine({ + name: wine.name, + vivinoLink: wine.vivinoLink, + rating: null, + occurences: null, + image: wine.image, + id: wine.id + }); + await thisWineIsLOKO.save() + } + console.log(thisWineIsLOKO) + + let requestedWine = await RequestedWine.findOne({ "wineId": wine.id}) + + if(requestedWine == undefined){ + // console.log(localWine) + requestedWine = new RequestedWine({ + count: 1, + wineId: wine.id, + wine: thisWineIsLOKO + }) + } else { + requestedWine.count += 1; + } + await requestedWine.save() + + res.send(requestedWine); + +}); + +module.exports = router; diff --git a/api/wineinfo.js b/api/wineinfo.js index 37afbf2..053a68c 100644 --- a/api/wineinfo.js +++ b/api/wineinfo.js @@ -14,11 +14,13 @@ const convertToOurWineObject = wine => { if(wine.basic.ageLimit === "18"){ return { name: wine.basic.productShortName, - image: `https://bilder.vinmonopolet.no/cache/300x300-0/${wine.basic.productId}-1.jpg`, + vivinoLink: "https://www.vinmonopolet.no/p/" + wine.basic.productId, rating: wine.basic.alcoholContent, - price: wine.prices[0].salesPrice, - country: wine.origins.origin.country, - vivinoLink: "https://www.vinmonopolet.no/p/" + wine.basic.productId + occurences: 0, + id: wine.basic.productId, + image: `https://bilder.vinmonopolet.no/cache/300x300-0/${wine.basic.productId}-1.jpg`, + price: wine.prices[0].salesPrice.toString(), + country: wine.origins.origin.country } } } @@ -34,8 +36,8 @@ router.route("/wineinfo/search").get(async (req, res) => { } }) .then(resp => resp.json()) + .catch(err => console.error(err)) - const winesConverted = vinmonopoletResponse.map(convertToOurWineObject).filter(Boolean) if (vinmonopoletResponse.errors != null) { return vinmonopoletResponse.errors.map(error => { @@ -48,7 +50,7 @@ router.route("/wineinfo/search").get(async (req, res) => { } }) } - + const winesConverted = vinmonopoletResponse.map(convertToOurWineObject).filter(Boolean) res.send(winesConverted); }); diff --git a/server.js b/server.js index e0fef6f..8cd45e2 100644 --- a/server.js +++ b/server.js @@ -11,6 +11,7 @@ const retrieveApi = require(path.join(__dirname + "/api/retrieve")); const subscriptionApi = require(path.join(__dirname + "/api/subscriptions")); const loginApi = require(path.join(__dirname + "/api/login")); const wineinfoApi = require(path.join(__dirname + "/api/wineinfo")); +const requestApi = require(path.join(__dirname + "/api/request")); const virtualApi = require(path.join(__dirname + "/api/virtualLottery")); const virtualRegistrationApi = require(path.join( __dirname + "/api/virtualRegistration" @@ -94,6 +95,7 @@ app.use("/", loginApi); app.use("/api/", updateApi); app.use("/api/", retrieveApi); app.use("/api/", wineinfoApi); +app.use("/api/", requestApi); app.use("/api/", chatHistory); app.use("/api/lottery", lottery); app.use("/api/virtual/", virtualApi(io)); diff --git a/src/components/RequestWine.vue b/src/components/RequestWine.vue index 75a189a..edc217c 100644 --- a/src/components/RequestWine.vue +++ b/src/components/RequestWine.vue @@ -26,7 +26,7 @@
- + this.wines = res) } }, + request(wine){ + const options = { + body: JSON.stringify({ + wine: wine + }), + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + method: "post" + } + + fetch("http://localhost:30030/api/request", options) + .then(res => res.json()) + .then(console.log) + } }, }