Răsfoiți Sursa

Add ability to admin create orders.

Lee Morgan 5 ani în urmă
părinte
comite
aac1a7a3bc
2 a modificat fișierele cu 44 adăugiri și 3 ștergeri
  1. 40 3
      controllers/admin.js
  2. 4 0
      views/newTest.html

+ 40 - 3
controllers/admin.js

@@ -1,6 +1,7 @@
 const Merchant = require("../models/merchant.js");
 const Ingredient = require("../models/ingredient.js");
 const Recipe = require("../models/recipe.js");
+const Order = require("../models/order.js");
 const helper = require("./helper.js");
 
 const fs = require("fs");
@@ -65,6 +66,7 @@ module.exports = {
                     }
                     return ingredients;
                 }
+                let ingredientIndices = indexIngredients();
 
                 //Recipes
                 let newRecipes = [];
@@ -73,7 +75,8 @@ module.exports = {
                     fs.unlink(req.files.recipes.tempFilePath, ()=>{});
                     recipeData = recipeData.split("\n");
 
-                    let ingredientIndices = indexIngredients();
+                    
+                    merchant.recipes = [];
                     for(let i = 0; i < recipeData.length; i++){
                         if(recipeData[i] === "") continue;
                         let data = recipeData[i].split(",");
@@ -99,17 +102,51 @@ module.exports = {
                     }
                 }
 
+                //Orders
+                let newOrders = [];
+                if(req.files.orders !== undefined){
+                    let orderData = fs.readFileSync(req.files.orders.tempFilePath).toString();
+                    fs.unlink(req.files.orders.tempFilePath, ()=>{});
+                    orderData = orderData.split("\n");
+
+                    for(let i = 0; i < orderData.length; i++){
+                        if(orderData[i] === "") continue;
+                        let data = orderData[i].split(",");
+
+                        let order = new Order({
+                            merchant: merchant._id,
+                            name: data[0],
+                            date: new Date(data[1]),
+                            taxes: parseFloat(data[2]),
+                            fees: parseFloat(data[3]),
+                            ingredients: []
+                        });
+
+                        for(let j = 4; j < data.length; j+=3){
+                            if(data[j] === "") break;
+                            order.ingredients.push({
+                                ingredient: ingredientIndices[data[j].toLowerCase()],
+                                quantity: parseFloat(data[j+1]),
+                                pricePerUnit: parseInt(parseFloat(data[j+2]) * 100)
+                            });
+                        }
+
+                        newOrders.push(order);
+                    }
+                }
+
                 return Promise.all([
                     merchant.save(),
                     Ingredient.create(newIngredients),
-                    Recipe.create(newRecipes)
+                    Recipe.create(newRecipes),
+                    Order.create(newOrders)
                 ]);
             })
             .then((response)=>{
                 return res.redirect("/dashboard");
             })
             .catch((err)=>{
-                // console.log(err);
+                console.log(err);
                 return res.json("ERROR: A whoopsie has been made");
             });
     }

+ 4 - 0
views/newTest.html

@@ -32,6 +32,10 @@
                 <input name="recipes" type="file">
             </label>
 
+            <label>Orders
+                <input name="orders" type="file">
+            </label>
+
             <input type="submit" value="Submit">
         </form>
     </body>