Pārlūkot izejas kodu

Split up spreadsheet submission to each individual section.
Fixed ingredient spreadsheet into a working state.
Recipes spreadsheet uploading is currently broken.

Lee Morgan 5 gadi atpakaļ
vecāks
revīzija
9cad19b6cd

+ 24 - 6
controllers/ingredientData.js

@@ -5,7 +5,8 @@ const InventoryAdjustment = require("../models/inventoryAdjustment.js");
 const helper = require("./helper.js");
 const validator = require("./validator.js");
 
-const xlsxUtils = require("xlsx").utils;
+const xlsx = require("xlsx");
+const fs = require("fs");
 
 module.exports = {
     //GET - gets a list of all database ingredients
@@ -198,8 +199,25 @@ module.exports = {
             });
     },
 
-    createFromSpreadsheet: function(sheet, user){
-        const array = xlsxUtils.sheet_to_json(sheet, {
+    createFromSpreadsheet: function(req, res){
+        if(!req.session.user){
+            req.session.error = "MUST BE LOGGED IN TO DO THAT";
+            return res.redirect("/");
+        }
+
+        //read file, get the correct sheet, create array from sheet
+        let workbook = xlsx.readFile(req.file.path);
+        fs.unlink(req.file.path, ()=>{});
+
+        let sheets = Object.keys(workbook.Sheets);
+        let sheet = {};
+        for(let i = 0; i < sheets.length; i++){
+            let str = sheets[i].toLowerCase();
+            if(str === "ingredient" || str === "ingredients"){
+                sheet = workbook.Sheets[sheets[i]];
+            }
+        }
+        const array = xlsx.utils.sheet_to_json(sheet, {
             header: 1
         });
 
@@ -268,11 +286,11 @@ module.exports = {
 
         //Update the database
         let createdIngredients = [];
-        return Ingredient.create(ingredients)
+        Ingredient.create(ingredients)
             .then((ingredients)=>{
                 createdIngredients = ingredients;
 
-                return Merchant.findOne({_id: user});
+                return Merchant.findOne({_id: req.session.user});
             })
             .then((merchant)=>{
                 for(let i = 0; i < merchantData.length; i++){
@@ -282,7 +300,7 @@ module.exports = {
                 return merchant.save();
             })
             .then((merchant)=>{
-                return merchantData;
+                return res.json(merchantData);
             })
             .catch((err)=>{
                 return "ERROR: UNABLE TO CREATE YOUR INGREDIENTS";

+ 0 - 27
controllers/otherData.js

@@ -152,32 +152,5 @@ module.exports = {
 
     logo: function(req, res){
         return res.sendFile(path.resolve("./views/shared/images/logo.png"));
-    },
-
-    readSpreadsheet: async function(req, res){
-        if(!req.session.user){
-            req.session.error = "MUST BE LOGGED IN TO DO THAT";
-            return res.redirect("/");
-        }
-
-        let workbook = xlsx.readFile(req.file.path);
-        fs.unlink(req.file.path, ()=>{});
-        let sheets = Object.keys(workbook.Sheets);
-
-        let data = {};
-        for(let i = 0; i < sheets.length; i++){
-            switch(sheets[i].toLocaleLowerCase()){
-                case "ingredients":
-                    console.log("ingredients");
-                    data.ingredients = await ingredientData.createFromSpreadsheet(workbook.Sheets[sheets[i]], req.session.user);
-                    break;
-                case "recipes":
-                    console.log("recipes");
-                    data.recipes = await recipeData.createFromSpreadsheet(workbook.Sheets[sheets[i]], req.session.user);
-                    break;
-            }
-        }
-
-        return res.json(data);
     }
 }

+ 0 - 1
controllers/recipeData.js

@@ -346,7 +346,6 @@ module.exports = {
                 return newRecipes;
             })
             .catch((err)=>{
-                console.log(err);
                 return "ERROR: UNABLE TO CREATE RECIPES";
             });
     }

+ 1 - 1
routes.js

@@ -31,6 +31,7 @@ module.exports = function(app){
     app.post("/ingredients/create", ingredientData.createIngredient);  //also adds to merchant
     app.put("/ingredients/update", ingredientData.updateIngredient);
     app.delete("/ingredients/remove/:id", ingredientData.removeIngredient);
+    app.post("/ingredients/create/spreadsheet", upload.single("spreadsheet"), ingredientData.createFromSpreadsheet);
 
     //Recipes
     app.post("/recipe/create", recipeData.createRecipe);
@@ -60,7 +61,6 @@ module.exports = function(app){
     app.get("/cloverauth*", otherData.cloverAuth);
     app.get("/squareauth", otherData.squareAuth);
     app.get("/logo", otherData.logo);
-    app.post("/spreadsheet", upload.single("spreadsheet"), otherData.readSpreadsheet);
 
     //Information Pages
     app.get("/privacy", informationPages.privacy);

BIN
uploads/039edcff979a4434b8b21d6859b8b4f4


+ 7 - 2
views/dashboardPage/bundle.js

@@ -2018,7 +2018,7 @@ let newIngredient = {
         let loader = document.getElementById("loaderContainer");
         loader.style.display = "flex";
 
-        fetch("/spreadsheet", {
+        fetch("/ingredients/create/spreadsheet", {
             method: "post",
             body: data,
         })
@@ -2027,11 +2027,16 @@ let newIngredient = {
                 if(typeof(response) === "string"){
                     banner.createError(response);
                 }else{
-                    console.log(response);
+                    for(let i = 0; i < response.length; i++){
+                        merchant.addIngredient(response[i].ingredient, response[i].quantity, response[i].defaultUnit);
+
+                        controller.openStrand("ingredients");
+                    }
                 }
                 
             })
             .catch((err)=>{
+                console.log(err);
                 banner.createError("SOMETHING WENT WRONG.  TRY REFRESHING THE PAGE");
             })
             .finally(()=>{

+ 7 - 2
views/dashboardPage/js/sidebars/newIngredient.js

@@ -86,7 +86,7 @@ let newIngredient = {
         let loader = document.getElementById("loaderContainer");
         loader.style.display = "flex";
 
-        fetch("/spreadsheet", {
+        fetch("/ingredients/create/spreadsheet", {
             method: "post",
             body: data,
         })
@@ -95,11 +95,16 @@ let newIngredient = {
                 if(typeof(response) === "string"){
                     banner.createError(response);
                 }else{
-                    console.log(response);
+                    for(let i = 0; i < response.length; i++){
+                        merchant.addIngredient(response[i].ingredient, response[i].quantity, response[i].defaultUnit);
+
+                        controller.openStrand("ingredients");
+                    }
                 }
                 
             })
             .catch((err)=>{
+                console.log(err);
                 banner.createError("SOMETHING WENT WRONG.  TRY REFRESHING THE PAGE");
             })
             .finally(()=>{