Просмотр исходного кода

Inventory updates based on purchases

Lee Morgan 6 лет назад
Родитель
Сommit
dbfbe0f214
4 измененных файлов с 42 добавлено и 9 удалено
  1. 39 5
      controllers/home.js
  2. 2 2
      models/merchant.js
  3. 0 1
      views/inventory.ejs
  4. 1 1
      views/inventory/inventory.js

+ 39 - 5
controllers/home.js

@@ -4,16 +4,51 @@ const Merchant = require("../models/merchant");
 const Ingredient = require("../models/ingredient");
 const Recipe = require("../models/recipe");
 
-const merchantId = "HCVKASXH94531";
-const token = "f1c88a69-e3e4-059a-da06-8858d0636e82";
+// const merchantId = "HCVKASXH94531";
+// const token = "f1c88a69-e3e4-059a-da06-8858d0636e82";
+
+const merchantId = "YHVPCQMVB1P81";
+const token = "b48068eb-411a-918e-ea64-52007147e42c";
 
 module.exports = {
     displayInventory: (req, res)=>{
         Merchant.findOne({cloverId: merchantId})
             .populate("inventory.ingredient")
+            .populate("recipes")
             .then((merchant)=>{
                 if(merchant){
-                    return res.render("inventory/inventory", {merchant: merchant});
+                    axios.get(`https://apisandbox.dev.clover.com/v3/merchants/${merchant.cloverId}/orders?filter=clientCreatedTime>=${merchant.lastUpdatedTime}&expand=lineItems&access_token=${token}`)
+                        .then((result)=>{
+                            for(let order of result.data.elements){
+                                for(let item of order.lineItems.elements){
+                                    let recipe = merchant.recipes.find(r => r.cloverId === item.item.id);
+                                    if(recipe){
+                                        for(let ingredient of recipe.ingredients){
+                                            let inventoryIngredient = {};
+                                            for(let invItem of merchant.inventory){
+                                                if(invItem.ingredient._id.toString() === ingredient.id.toString()){
+                                                    inventoryIngredient = invItem;
+                                                }
+                                            }
+                                            inventoryIngredient.quantity -= ingredient.quantity;
+                                        }
+                                    }
+                                }
+                            }
+                            merchant.lastUpdatedTime = Date.now();
+
+                            merchant.save()
+                                .then((updatedMerchant)=>{
+                                    return res.render("inventory/inventory", {merchant: updatedMerchant});
+                                })
+                                .catch((err)=>{
+                                    console.log(err);
+                                    return res.render("error");
+                                });
+                        })
+                        .catch((err)=>{
+                            console.log(err);
+                        });
                 }else{
                     return res.redirect("/merchant/new");
                 }
@@ -59,11 +94,10 @@ module.exports = {
             .then((recipes)=>{
                 axios.get(`https://apisandbox.dev.clover.com/v3/merchants/${merchantId}?access_token=${token}`)
                     .then((merchant)=>{
-                        console.log(merchant.data);
                         let newMerchant = new Merchant({
                             name: merchant.data.name,
                             cloverId: merchant.data.id,
-                            lastUpdateTime: Date.now,
+                            lastUpdatedTime: Date.now(),
                             inventory: [],
                             recipes: []
                         });

+ 2 - 2
models/merchant.js

@@ -10,8 +10,8 @@ const MerchantSchema = new mongoose.Schema({
         required: true
     },
     lastUpdatedTime: {
-        type: Date,
-        default: Date.now
+        type: String,
+        default: Date.now()
     },
     inventory: [{
         ingredient: {

+ 0 - 1
views/inventory.ejs

@@ -1 +0,0 @@
-<h1>Inventory</h1>

+ 1 - 1
views/inventory/inventory.js

@@ -35,7 +35,7 @@ let sortIngredients = (property)=>{
 
 let filter = ()=>{
     items = [];
-    let searchString = document.querySelector("#filter").value;
+    let searchString = document.querySelector("#filter").value.toLowerCase();
     for(let item of merchant.inventory){
         if(item.ingredient.name.toLowerCase().includes(searchString)){
             items.push({