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"){
 | 
			
		||||
    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);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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));
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@
 | 
			
		||||
          </div>
 | 
			
		||||
        </section>
 | 
			
		||||
        <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
 | 
			
		||||
          v-if="wine.vivinoLink"
 | 
			
		||||
          :href="wine.vivinoLink"
 | 
			
		||||
@@ -58,10 +58,28 @@ export default {
 | 
			
		||||
  methods: {
 | 
			
		||||
    fetchWineFromVin(){
 | 
			
		||||
      if(this.searchString){
 | 
			
		||||
        searchForWine(this.searchString)
 | 
			
		||||
        this.wines = []
 | 
			
		||||
        let localSearchString = this.searchString.replace(/ /g,"_");
 | 
			
		||||
        searchForWine(localSearchString)
 | 
			
		||||
          .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>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user