Bläddra i källkod

Add ability to upload ingredients from csv file.

Lee Morgan 5 år sedan
förälder
incheckning
df87391da1
5 ändrade filer med 72 tillägg och 3 borttagningar
  1. 45 3
      controllers/admin.js
  2. 8 0
      tmp/tmp-1-1626611059164
  3. 8 0
      tmp/tmp-1-1626611169668
  4. 8 0
      tmp/tmp-1-1626611188789
  5. 3 0
      tmp/tmp-4-1626614628182

+ 45 - 3
controllers/admin.js

@@ -1,4 +1,7 @@
 const Merchant = require("../models/merchant.js");
+const Ingredient = require("../models/ingredient.js");
+const helper = require("./helper.js");
+
 const fs = require("fs");
 
 module.exports = {
@@ -18,12 +21,51 @@ module.exports = {
 
         Merchant.findOne({_id: req.body.id})
             .then((merchant)=>{
-                let data = fs.readFileSync(req.files.ingredients.tempFilePath).toString();
-                data = data.split("/n");
+                //Ingredients
+                let newIngredients = [];
+                if(req.files.ingredients !== undefined){
+                    let ingredientData = fs.readFileSync(req.files.ingredients.tempFilePath).toString();
+                    fs.unlink(req.files.ingredients.tempFilePath, ()=>{});
+                    ingredientData = ingredientData.split("\n");
+
+                    merchant.inventory = [];
+                    for(let i = 0; i < ingredientData.length; i++){
+                        if(ingredientData[i] === "") continue;
+                        let data = ingredientData[i].split(",");
+                        let ingredient = new Ingredient({
+                            name: data[0],
+                            category: data[1],
+                            unitType: helper.getUnitType(data[3]),
+                            ingredients: []
+                        });
+
+                        let merchIngredient = {
+                            ingredient: ingredient._id,
+                            quantity: helper.convertQuantityToBaseUnit(data[2], data[3]),
+                            defaultUnit: data[3]
+                        };
+                        
+                        if(data[3].toLowerCase() === "bottle"){
+                            ingredient.unitType = data[5];
+                            ingredient.unitSize = helper.convertQuantityToBaseUnit(data[4], data[5])
+                            merchIngredient.defaultUnit = "bottle";
+                        }
 
-                console.log(data);
+                        newIngredients.push(ingredient);
+                        merchant.inventory.push(merchIngredient);
+                    }
+                }
+
+                return Promise.all([
+                    merchant.save(),
+                    Ingredient.create(newIngredients)
+                ]);
+            })
+            .then((response)=>{
+                return res.redirect("/dashboard");
             })
             .catch((err)=>{
+                console.log(err);
                 return res.json("ERROR: A whoopsie has been made");
             });
     }

+ 8 - 0
tmp/tmp-1-1626611059164

@@ -0,0 +1,8 @@
+Ingredient one
+things
+g
+
+ingredient two
+things
+kg
+ingredient one

+ 8 - 0
tmp/tmp-1-1626611169668

@@ -0,0 +1,8 @@
+Ingredient one
+things
+g
+
+ingredient two
+things
+kg
+ingredient one

+ 8 - 0
tmp/tmp-1-1626611188789

@@ -0,0 +1,8 @@
+Ingredient one
+things
+g
+
+ingredient two
+things
+kg
+ingredient one

+ 3 - 0
tmp/tmp-4-1626614628182

@@ -0,0 +1,3 @@
+Ingredient one,Things,12,g,,
+Ingredient Two,Things,3,bottle,750,ml
+Ingredient Three,Other thangs,2,gal,,