loko
This commit is contained in:
		
							
								
								
									
										60
									
								
								api/request.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								api/request.js
									
									
									
									
									
										Normal file
									
								
							| @@ -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; | ||||||
| @@ -14,11 +14,13 @@ const convertToOurWineObject = wine => { | |||||||
|   if(wine.basic.ageLimit === "18"){ |   if(wine.basic.ageLimit === "18"){ | ||||||
|     return { |     return { | ||||||
|       name: wine.basic.productShortName, |       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, |       rating: wine.basic.alcoholContent, | ||||||
|       price: wine.prices[0].salesPrice, |       occurences: 0, | ||||||
|       country: wine.origins.origin.country, |       id: wine.basic.productId, | ||||||
|       vivinoLink: "https://www.vinmonopolet.no/p/" + 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()) |     .then(resp => resp.json()) | ||||||
|  |     .catch(err => console.error(err)) | ||||||
|  |  | ||||||
|   const winesConverted = vinmonopoletResponse.map(convertToOurWineObject).filter(Boolean) |  | ||||||
|  |  | ||||||
|   if (vinmonopoletResponse.errors != null) { |   if (vinmonopoletResponse.errors != null) { | ||||||
|     return vinmonopoletResponse.errors.map(error => { |     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); |   res.send(winesConverted); | ||||||
| }); | }); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -11,6 +11,7 @@ const retrieveApi = require(path.join(__dirname + "/api/retrieve")); | |||||||
| const subscriptionApi = require(path.join(__dirname + "/api/subscriptions")); | const subscriptionApi = require(path.join(__dirname + "/api/subscriptions")); | ||||||
| const loginApi = require(path.join(__dirname + "/api/login")); | const loginApi = require(path.join(__dirname + "/api/login")); | ||||||
| const wineinfoApi = require(path.join(__dirname + "/api/wineinfo")); | 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 virtualApi = require(path.join(__dirname + "/api/virtualLottery")); | ||||||
| const virtualRegistrationApi = require(path.join( | const virtualRegistrationApi = require(path.join( | ||||||
|   __dirname + "/api/virtualRegistration" |   __dirname + "/api/virtualRegistration" | ||||||
| @@ -94,6 +95,7 @@ app.use("/", loginApi); | |||||||
| app.use("/api/", updateApi); | app.use("/api/", updateApi); | ||||||
| app.use("/api/", retrieveApi); | app.use("/api/", retrieveApi); | ||||||
| app.use("/api/", wineinfoApi); | app.use("/api/", wineinfoApi); | ||||||
|  | app.use("/api/", requestApi); | ||||||
| app.use("/api/", chatHistory); | app.use("/api/", chatHistory); | ||||||
| app.use("/api/lottery", lottery); | app.use("/api/lottery", lottery); | ||||||
| app.use("/api/virtual/", virtualApi(io)); | app.use("/api/virtual/", virtualApi(io)); | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ | |||||||
|           </div> |           </div> | ||||||
|         </section> |         </section> | ||||||
|         <section class="buttons"> |         <section class="buttons"> | ||||||
|           <button class="vin-button">Send inn denne som ønske</button> |           <button class="vin-button" @click="request(wine)">Send inn denne som ønske</button> | ||||||
|           <a |           <a | ||||||
|           v-if="wine.vivinoLink" |           v-if="wine.vivinoLink" | ||||||
|           :href="wine.vivinoLink" |           :href="wine.vivinoLink" | ||||||
| @@ -58,10 +58,28 @@ export default { | |||||||
|   methods: { |   methods: { | ||||||
|     fetchWineFromVin(){ |     fetchWineFromVin(){ | ||||||
|       if(this.searchString){ |       if(this.searchString){ | ||||||
|         searchForWine(this.searchString) |         this.wines = [] | ||||||
|  |         let localSearchString = this.searchString.replace(/ /g,"_"); | ||||||
|  |         searchForWine(localSearchString) | ||||||
|           .then(res => this.wines = res) |           .then(res => 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) | ||||||
|  |     } | ||||||
|   }, |   }, | ||||||
| } | } | ||||||
| </script> | </script> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user