Browse Source

Bug fix: inventory check was not updating ingredients.

Lee Morgan 5 years ago
parent
commit
cdf7d26260
4 changed files with 42 additions and 87 deletions
  1. 16 38
      controllers/merchantData.js
  2. 0 1
      routes.js
  3. 13 24
      views/dashboardPage/bundle.js
  4. 13 24
      views/dashboardPage/js/strands/home.js

+ 16 - 38
controllers/merchantData.js

@@ -1,11 +1,12 @@
-const axios = require("axios");
-const bcrypt = require("bcryptjs");
-
 const Merchant = require("../models/merchant");
 const Recipe = require("../models/recipe");
 const InventoryAdjustment = require("../models/inventoryAdjustment");
-const Validator = require("./validator.js");
-const Helper = require("./helper.js");
+
+const validator = require("./validator.js");
+const helper = require("./helper.js");
+
+const axios = require("axios");
+const bcrypt = require("bcryptjs");
 
 module.exports = {
     /*
@@ -19,7 +20,7 @@ module.exports = {
     Redirects to /dashboard
     */
     createMerchantNone: async function(req, res){
-        let validation =  await Validator.merchant(req.body);
+        let validation =  await validator.merchant(req.body);
         if(validation !== true){
             req.session.error = validation;
             return res.redirect("/");
@@ -39,7 +40,7 @@ module.exports = {
                 status: ["unverified"],
                 inventory: [],
                 recipes: [],
-                verifyId: Helper.generateId(15)
+                verifyId: helper.generateId(15)
             });
 
             merchant.save()
@@ -190,31 +191,6 @@ module.exports = {
             });
     },
 
-    //PUT - Update the default unit for a single ingredient
-    ingredientDefaultUnit: function(req, res){
-        if(!req.session.user){
-            req.session.error = "MUST BE LOGGED IN TO DO THAT";
-            return res.redirect("/");
-        }
-
-        Merchant.findOne({_id: req.session.user})
-            .then((merchant)=>{
-                for(let i = 0; i < merchant.inventory.length; i++){
-                    if(merchant.inventory[i].ingredient.toString() === req.params.id){
-                        merchant.inventory[i].defaultUnit =req.params.unit;
-                    }
-                }
-
-                return merchant.save()
-            })
-            .then((merchant)=>{
-                return res.json({});
-            })
-            .catch((err)=>{
-                return res.json("ERROR: UNABLE TO UPDATE DEFAULT UNIT");
-            });
-    },
-
     /*
     POST - Update the quantity for a merchant inventory item
     req.body = [{
@@ -229,20 +205,21 @@ module.exports = {
         }
 
         for(let i = 0; i < req.body.length; i++){
-            let validation = Validator.quantity(req.body[i].quantity);
+            let validation = validator.quantity(req.body[i].quantity);
             if(validation !== true){
                 return res.json(validation);
             }
         }
 
         let adjustments = [];
-
+        let changedIngredients = []
         Merchant.findOne({_id: req.session.user})
+            .populate("inventory.ingredient")
             .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){
+                        if(merchant.inventory[j].ingredient._id.toString() === req.body[i].id){
                             updateIngredient = merchant.inventory[j];
                             break;
                         }
@@ -255,13 +232,14 @@ module.exports = {
                         quantity: req.body[i].quantity - updateIngredient.quantity,
                     }));
 
-                    updateIngredient.quantity = req.body[i].quantity;
+                    updateIngredient.quantity = helper.convertQuantityToBaseUnit(req.body[i].quantity, updateIngredient.defaultUnit);
+                    changedIngredients.push(updateIngredient);
                 }
 
                 return merchant.save();
             })
             .then((newMerchant)=>{
-                res.json({});
+                res.json(changedIngredients);
 
                 InventoryAdjustment.create(adjustments).catch(()=>{});
                 return;
@@ -280,7 +258,7 @@ module.exports = {
     }
     */
     updatePassword: function(req, res){
-        let validation = Validator.password(req.body.pass, req.body.confirmPass);
+        let validation = validator.password(req.body.pass, req.body.confirmPass);
         if(validation !== true){
             return res.json(validation);
         }

+ 0 - 1
routes.js

@@ -22,7 +22,6 @@ module.exports = function(app){
     app.post("/merchant/create/none", merchantData.createMerchantNone);
     app.get("/merchant/create/clover", merchantData.createMerchantClover);
     app.get("/merchant/create/square", merchantData.createMerchantSquare);
-    app.put("/merchant/ingredients/update/:id/:unit", merchantData.ingredientDefaultUnit);
     app.put("/merchant/ingredients/update", merchantData.updateMerchantIngredient); //also updates some data in ingredients
     app.post("/merchant/password", merchantData.updatePassword);
 

+ 13 - 24
views/dashboardPage/bundle.js

@@ -3396,30 +3396,15 @@ let home = {
     submitInventoryCheck: function(){
         let lis = document.querySelectorAll("#inventoryCheckCard li");
 
-        let changes = [];
-        let fetchData = [];
+        let data = [];
 
         for(let i = 0; i < lis.length; i++){
             if(lis[i].children[1].children[1].value >= 0){
-                let merchIngredient = lis[i].ingredient;
-
                 if(lis[i].children[1].children[1].changed === true){
-                    let value = 0;
-                    if(merchIngredient.ingredient.specialUnit === "bottle"){
-                        value = parseFloat(lis[i].children[1].children[1].value) * merchIngredient.ingredient.unitSize;
-                    }else{
-                        value = controller.convertToMain(merchIngredient.ingredient.unit, parseFloat(lis[i].children[1].children[1].value));
-                    }
-                    
-
-                    changes.push({
-                        ingredient: merchIngredient.ingredient,
-                        quantity: value
-                    });
-
-                    fetchData.push({
+                    let merchIngredient = lis[i].ingredient;
+                    data.push({
                         id: merchIngredient.ingredient.id,
-                        quantity: value
+                        quantity: lis[i].children[1].children[1].value
                     });
 
                     lis[i].children[1].children[1].changed = false;
@@ -3430,7 +3415,7 @@ let home = {
             }
         }
         
-        if(fetchData.length > 0){
+        if(data.length > 0){
             let loader = document.getElementById("loaderContainer");
             loader.style.display = "flex";
 
@@ -3439,20 +3424,24 @@ let home = {
                 headers: {
                     "Content-Type": "application/json;charset=utf-8"
                 },
-                body: JSON.stringify(fetchData)
+                body: JSON.stringify(data)
             })
                 .then(response => response.json())
                 .then((response)=>{
                     if(typeof(response) === "string"){
                         banner.createError(response);
                     }else{
-                        for(let i = 0; i < changes.length; i++){
-                            merchant.updateIngredient(changes[i].ingredient, changes[i].quantity);
+                        for(let i = 0; i < response.length; i++){
+                            // merchant.updateIngredient(changes[i].ingredient, changes[i].quantity);
+                            merchant.removeIngredient(merchant.getIngredient(response[i].ingredient._id));
+                            merchant.addIngredient(response[i].ingredient, response[i].quantity, response[i].defaultUnit);
                         }
                         banner.createNotification("INGREDIENTS UPDATED");
                     }
                 })
-                .catch((err)=>{})
+                .catch((err)=>{
+                    banner.createError("SOMETHING WENT WRONG.  PLEASE REFRESH THE PAGE");
+                })
                 .finally(()=>{
                     loader.style.display = "none";
                 });

+ 13 - 24
views/dashboardPage/js/strands/home.js

@@ -211,30 +211,15 @@ let home = {
     submitInventoryCheck: function(){
         let lis = document.querySelectorAll("#inventoryCheckCard li");
 
-        let changes = [];
-        let fetchData = [];
+        let data = [];
 
         for(let i = 0; i < lis.length; i++){
             if(lis[i].children[1].children[1].value >= 0){
-                let merchIngredient = lis[i].ingredient;
-
                 if(lis[i].children[1].children[1].changed === true){
-                    let value = 0;
-                    if(merchIngredient.ingredient.specialUnit === "bottle"){
-                        value = parseFloat(lis[i].children[1].children[1].value) * merchIngredient.ingredient.unitSize;
-                    }else{
-                        value = controller.convertToMain(merchIngredient.ingredient.unit, parseFloat(lis[i].children[1].children[1].value));
-                    }
-                    
-
-                    changes.push({
-                        ingredient: merchIngredient.ingredient,
-                        quantity: value
-                    });
-
-                    fetchData.push({
+                    let merchIngredient = lis[i].ingredient;
+                    data.push({
                         id: merchIngredient.ingredient.id,
-                        quantity: value
+                        quantity: lis[i].children[1].children[1].value
                     });
 
                     lis[i].children[1].children[1].changed = false;
@@ -245,7 +230,7 @@ let home = {
             }
         }
         
-        if(fetchData.length > 0){
+        if(data.length > 0){
             let loader = document.getElementById("loaderContainer");
             loader.style.display = "flex";
 
@@ -254,20 +239,24 @@ let home = {
                 headers: {
                     "Content-Type": "application/json;charset=utf-8"
                 },
-                body: JSON.stringify(fetchData)
+                body: JSON.stringify(data)
             })
                 .then(response => response.json())
                 .then((response)=>{
                     if(typeof(response) === "string"){
                         banner.createError(response);
                     }else{
-                        for(let i = 0; i < changes.length; i++){
-                            merchant.updateIngredient(changes[i].ingredient, changes[i].quantity);
+                        for(let i = 0; i < response.length; i++){
+                            // merchant.updateIngredient(changes[i].ingredient, changes[i].quantity);
+                            merchant.removeIngredient(merchant.getIngredient(response[i].ingredient._id));
+                            merchant.addIngredient(response[i].ingredient, response[i].quantity, response[i].defaultUnit);
                         }
                         banner.createNotification("INGREDIENTS UPDATED");
                     }
                 })
-                .catch((err)=>{})
+                .catch((err)=>{
+                    banner.createError("SOMETHING WENT WRONG.  PLEASE REFRESH THE PAGE");
+                })
                 .finally(()=>{
                     loader.style.display = "none";
                 });