Forráskód Böngészése

Commit to change branches

Lee Morgan 6 éve
szülő
commit
2a2061ae7f
3 módosított fájl, 48 hozzáadás és 26 törlés
  1. 3 3
      controllers/merchantData.js
  2. 8 1
      controllers/renderer.js
  3. 37 22
      views/inventoryPage/inventory.js

+ 3 - 3
controllers/merchantData.js

@@ -418,14 +418,14 @@ module.exports = {
 
         Merchant.findOne({_id: req.session.user})
             .then((merchant)=>{
-                let updateIngredient = merchant.inventory.find(i => i._id.toString() === req.body.ingredientId);
+                let updateIngredient = merchant.inventory.find(i => i.ingredient.toString() === req.body.ingredientId);
                 updateIngredient.quantity += req.body.quantityChange;
                 merchant.save()
                     .then((merchant)=>{
                         res.json(req.body.quantityChange);
                     })
                     .catch((err)=>{
-                        let errorMessage = "There was an error and your data could not be saved";
+                        let errorMessage = "Error: your data could not be saved";
                         let error = new Error({
                             code: 547,
                             displayMessage: errorMessage,
@@ -437,7 +437,7 @@ module.exports = {
                     })
             })
             .catch((err)=>{
-                let errorMessage = "There was an error and we could not retrieve your data";
+                let errorMessage = "Error: your data could not be retrieved";
                 let error = new Error({
                     code: 626,
                     displayMessage: errorMessage,

+ 8 - 1
controllers/renderer.js

@@ -36,7 +36,14 @@ module.exports = {
 
         Merchant.findOne({_id: req.session.user})
             .populate("inventory.ingredient")
-            .populate("recipes")
+            .populate({
+                path: "recipes",
+                model: "Recipe",
+                populate: {
+                    path: "ingredients.ingredient",
+                    model: "Ingredient"
+                }
+            })
             .then((merchant)=>{
                 if(merchant.pos === "clover"){
                     axios.get(`https://apisandbox.dev.clover.com/v3/merchants/${merchant.posId}/orders?filter=clientCreatedTime>=${merchant.lastUpdatedTime}&expand=lineItems&access_token=${token}`)

+ 37 - 22
views/inventoryPage/inventory.js

@@ -1,3 +1,6 @@
+item.id
+items
+
 let inventoryObj = {
     items: [],
     currentSort: "",
@@ -78,7 +81,7 @@ let inventoryObj = {
         for(let item of merchant.inventory){
             if(item.ingredient.name.toLowerCase().includes(searchString)){
                 this.items.push({
-                    id: item._id,
+                    id: item.ingredient._id,
                     name: item.ingredient.name,
                     category: item.ingredient.category,
                     quantity: item.quantity,
@@ -118,7 +121,7 @@ let inventoryObj = {
         quantityField.removeChild(quantityField.firstChild);
 
         if(validator.ingredient.quantity(quantity)){
-            let updateIngredient = merchant.inventory.find(i => i._id === id);
+            let updateIngredient = merchant.inventory.find(i => i.ingredient._id === id);
             updateIngredient.quantity = quantity;
             axios.post("/merchant/ingredients/update", {ingredientId: id, quantityChange: quantity - originalQuantity})
                 .then((response)=>{
@@ -130,8 +133,7 @@ let inventoryObj = {
                     }
                 })
                 .catch((err)=>{
-                    banner.createError("There was an error and the ingredient was not updated");
-                    console.log(err);
+                    banner.createError("Error: The ingredient could not be updated");
                 });
         }else{
             quantityField.innerText = originalQuantity;
@@ -143,26 +145,39 @@ let inventoryObj = {
 
     //Delete an ingredient from both the page and the database
     removeIngredient: function(id, row){
-        axios.post("/merchant/ingredients/remove", {ingredientId: id})
-            .then((result)=>{
-                if(typeof(result.data) === "string"){
-                    banner.createError(result.data);
-                }else{
-                    for(let i = 0; i < merchant.inventory.length; i++){
-                        if(id === merchant.inventory[i]._id){
-                            merchant.inventory.splice(i, 1);
-                            break;
+        let canRemove = true;
+        for(let recipe of merchant.recipes){
+            for(let ingredient of recipe.ingredients){
+                if(ingredient.ingredient._id === id){
+                    canRemove = false;
+                    break;
+                }
+            }
+        }
+        if(canRemove){
+            axios.post("/merchant/ingredients/remove", {ingredientId: id})
+                .then((result)=>{
+                    if(typeof(result.data) === "string"){
+                        banner.createError(result.data);
+                    }else{
+                        for(let i = 0; i < merchant.inventory.length; i++){
+                            if(id === merchant.inventory[i]._id){
+                                merchant.inventory.splice(i, 1);
+                                break;
+                            }
                         }
-                    }
 
-                    row.parentNode.removeChild(row);
+                        row.parentNode.removeChild(row);
 
-                    banner.createNotification("The ingredient has been removed from your inventory");
-                }
-            })
-            .catch((err)=>{
-                banner.createError("There was an error and the ingredient has not been removed from your inventory");
-                console.log(err);
-            });
+                        banner.createNotification("The ingredient has been removed from your inventory");
+                    }
+                })
+                .catch((err)=>{
+                    banner.createError("There was an error and the ingredient has not been removed from your inventory");
+                    console.log(err);
+                });
+        }else{
+            banner.createError("You must remove this ingredient from all recipes before you can remove it from your inventory");
+        }
     },
 }