Browse Source

Updating of orders now works completely

Lee Morgan 6 years ago
parent
commit
9309720b77

+ 5 - 3
controllers/merchantData.js

@@ -302,7 +302,7 @@ module.exports = {
     //Inputs:
     //  req.body: array of ingredient data
     //      id: id of ingredient to update
-    //      quantity: New value for the ingredient
+    //      quantity: Change in quantity
     updateMerchantIngredient: function(req, res){
         if(!req.session.user){
             req.session.error = "Must be logged in to do that";
@@ -314,6 +314,7 @@ module.exports = {
         Merchant.findOne({_id: req.session.user})
             .then((merchant)=>{
                 for(let i = 0; i < req.body.length; i++){
+                    let updateIngredient;
                     for(let j = 0; j < merchant.inventory.length; j++){
                         if(merchant.inventory[j].ingredient.toString() === req.body[i].id){
                             updateIngredient = merchant.inventory[j];
@@ -325,10 +326,11 @@ module.exports = {
                         date: Date.now(),
                         merchant: req.session.user,
                         ingredient: req.body[i].id,
-                        quantity: req.body[i].quantity - updateIngredient.quantity
+                        quantity: req.body[i].quantity
                     }));
 
-                    updateIngredient.quantity = req.body[i].quantity;
+                    console.log(updateIngredient);
+                    updateIngredient.quantity += req.body[i].quantity;
                 }
 
                 merchant.save()

+ 30 - 11
controllers/orderData.js

@@ -26,16 +26,18 @@ module.exports = {
             });
     },
 
-    //POST - Creates a new order from the site
-    // req.body = {
-    //     orderId: user created order id
-    //     date: creation date
-    //     ingredients: [{
-    //         ingredient: id of the ingredient
-    //         quantity: amount of the ingredient purchased
-    //         price: price per unit for ingredient
-    //     }]
-    // }  
+    /*
+    POST - Creates a new order from the site
+    req.body = {
+        orderId: user created order id
+        date: creation date
+        ingredients: [{
+            ingredient: id of the ingredient
+            quantity: amount of the ingredient purchased
+            price: price per unit for ingredient
+        }]
+    } 
+    */ 
     createOrder: function(req, res){
         if(!req.session.user){
             req.session.error = "Must be logged in to do that";
@@ -46,10 +48,27 @@ module.exports = {
         newOrder.merchant = req.session.user;
         newOrder.save()
             .then((response)=>{
-                return res.json({});
+                res.json({});
             })
             .catch((err)=>{
                 return res.json("Error: unable to save the new order");
             });
+
+        Merchant.findOne({_id: req.session.user})
+            .then((merchant)=>{
+                for(let i = 0; i < req.body.ingredients.length; i++){
+                    for(let j = 0; j < merchant.inventory.length; j++){
+                        if(req.body.ingredients[i].ingredient === merchant.inventory[j].ingredient.toString()){
+                            merchant.inventory[j].quantity += parseFloat(req.body.ingredients[i].quantity);
+                        }
+                    }
+                }
+
+                return merchant.save()
+            })
+            .then((merchant)=>{
+                return;
+            })
+            .catch(()=>{});
     }
 }

+ 3 - 2
views/dashboardPage/components/components.js

@@ -215,8 +215,9 @@ let newOrderComp = {
 
                 if(quantity !== ""  || price !== ""){
                     let newIngredient = {
+                        id: ingredientDiv._id,
                         ingredient: ingredientDiv._id,
-                        quantity: quantity,
+                        quantity: parseFloat(quantity),
                         price: parseInt(price * 100)
                     }
 
@@ -240,10 +241,10 @@ let newOrderComp = {
                     }else{
                         banner.createNotification("New order created");
                         updateOrders(newOrder);
+                        updateInventory(newOrder.ingredients);
                     }
                 })
                 .catch((err)=>{
-                    console.log(err);
                     banner.createError("Something went wrong.  Try refreshing the page");
                 });
         }

+ 4 - 2
views/dashboardPage/controller.js

@@ -29,13 +29,14 @@ If ingredient doesn't exist, add it
 Inputs:
  Array of objects
      id: id of ingredient
-     quantity: updated quantity (optional)
+     quantityChange: change in quantity (optional)
      name: name of ingredient (only for new ingredient)
      category: category of ingredient (only for new ingredient)
      unit: unit of measurement (only for new ingredient)
  remove: if true, remove ingredient from inventory
  */
 let updateInventory = (ingredients, remove = false)=>{
+    console.log(ingredients);
     for(let i = 0; i < ingredients.length; i++){
         let isNew = true;
         for(let j = 0; j < merchant.inventory.length; j++){
@@ -43,7 +44,8 @@ let updateInventory = (ingredients, remove = false)=>{
                 if(remove){
                     merchant.inventory.splice(j, 1);
                 }else{
-                    merchant.inventory[j].quantity = ingredients[i].quantity;
+                    
+                    merchant.inventory[j].quantity += ingredients[i].quantity;
                 }
 
                 isNew = false;

+ 1 - 1
views/dashboardPage/home.js

@@ -212,7 +212,7 @@ window.homeStrandObj = {
                 if(value !== merchIngredient.quantity){
                     changes.push({
                         id: merchIngredient.ingredient._id,
-                        quantity: value
+                        quantity: value - merchIngredient.quantity
                     });
                 }
             }else{

+ 4 - 0
views/dashboardPage/orders.js

@@ -19,6 +19,10 @@ window.ordersStrandObj = {
                         let listDiv = document.querySelector("#orderList");
                         let template = document.querySelector("#order").content.children[0];
 
+                        while(listDiv.children.length > 0){
+                            listDiv.removeChild(listDiv.firstChild);
+                        }
+
                         for(let i = 0; i < response.length; i++){
                             let row = template.cloneNode(true);
                             let totalCost = 0;