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

Update error handling for otherData.js

Lee Morgan 6 лет назад
Родитель
Сommit
639cca7cd5
4 измененных файлов с 55 добавлено и 21 удалено
  1. 4 2
      controllers/ingredientData.js
  2. 37 8
      controllers/otherData.js
  3. 0 1
      views/error.ejs
  4. 14 10
      views/inventoryPage/enterTransactions.js

+ 4 - 2
controllers/ingredientData.js

@@ -30,7 +30,8 @@ module.exports = {
     //  ingredients: list containing the newly created ingredients
     createNewIngredients: function(req, res){
         if(!req.session.user){
-            return res.render("error");
+            req.session.error = "Must be logged in to do that";
+            return res.redirect("/");
         }
 
         Ingredient.create(req.body)
@@ -59,7 +60,8 @@ module.exports = {
     //  item: ingredient and quantity
     createIngredient: function(req, res){
         if(!req.session.user){
-            return res.render("error");
+            req.session.error = "Must be logged in to do that";
+            return res.redirect("/");
         }
         
         Ingredient.create(req.body.ingredient)

+ 37 - 8
controllers/otherData.js

@@ -11,7 +11,8 @@ module.exports = {
     //  merchant.inventory: entire merchant inventory after being updated
     createTransaction: function(req, res){
         if(!req.session.user){
-            return res.render("error");
+            res.session.error = "Must be logged in to do that";
+            return res.redirect("/");
         }
         
         let transaction = new NonPosTransaction({
@@ -38,13 +39,27 @@ module.exports = {
                         res.json(merchant.inventory);
                     })
                     .catch((err)=>{
-                        console.log(err);
-                        return res.render("error");
+                        let errorMessage = "There was an error and your transactions could not be saved";
+                        let error = new Error({
+                            code: 547,
+                            displayMessage: errorMessage,
+                            error: err
+                        });
+                        error.save();
+
+                        return res.json(errorMessage);
                     });
             })
             .catch((err)=>{
-                console.log(err);
-                return res.render("error");
+                let errorMessage = "There was an error and your data could not be retrieved";
+                let error = new Error({
+                    code: 626,
+                    displayMessage: errorMessage,
+                    error: err
+                });
+                error.save();
+
+                return res.json(errorMessage);
             });
 
         transaction.save()
@@ -52,8 +67,12 @@ module.exports = {
                 return;
             })
             .catch((err)=>{
-                console.log(err);
-                return res.render("error");
+                let error = new Error({
+                    code: 120,
+                    displayMessage: "none",
+                    error: err
+                });
+                error.save();
             });
     },
 
@@ -70,6 +89,9 @@ module.exports = {
                         if(result){
                             req.session.user = merchant._id;
                             return res.redirect("/inventory");
+                        }else{
+                            req.session.error = "Invalid email or password";
+                            return res.redirect("/");
                         }
                     });
                 }else{
@@ -78,7 +100,14 @@ module.exports = {
                 }
             })
             .catch((err)=>{
-                console.log(err);
+                let req.session.error = "There was an error and your data could not be retrieved";
+                let error = new Error({
+                    code: 626,
+                    displayMessage: req.session.error,
+                    error: err
+                });
+                error.save();
+
                 return res.redirect("/");
             });
     },

+ 0 - 1
views/error.ejs

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

+ 14 - 10
views/inventoryPage/enterTransactions.js

@@ -56,18 +56,22 @@ let enterTransactionsObj = {
         }
 
         axios.post("/transactions/create", recipesSold)
-            .then(()=>{
-                for(let soldRecipe of recipesSold){
-                    let merchRecipe = merchant.recipes.find(r => r._id === soldRecipe.id);
-                    for(let recipeIngredient of merchRecipe.ingredients){
-                        let merchInvIngredient = merchant.inventory.find(i => i.ingredient._id === recipeIngredient.ingredient);
-                        merchInvIngredient.quantity -= recipeIngredient.quantity * soldRecipe.quantity;
+            .then((response)=>{
+                if(typeof(response.data) === "string"){
+                    banner.createError(response.data);
+                }else{
+                    for(let soldRecipe of recipesSold){
+                        let merchRecipe = merchant.recipes.find(r => r._id === soldRecipe.id);
+                        for(let recipeIngredient of merchRecipe.ingredients){
+                            let merchInvIngredient = merchant.inventory.find(i => i.ingredient._id === recipeIngredient.ingredient);
+                            merchInvIngredient.quantity -= recipeIngredient.quantity * soldRecipe.quantity;
+                        }
                     }
-                }
 
-                inventoryObj.isPopulated = false;
-                inventoryObj.display();
-                banner.createNotification("Your sales have been logged");
+                    inventoryObj.isPopulated = false;
+                    inventoryObj.display();
+                    banner.createNotification("Your sales have been logged");
+                }
             })
             .catch((err)=>{
                 banner.createError("Something went wrong and your sales could not be logged");