Parcourir la source

Add ability to download a spreadsheet template for a transaction.

Lee Morgan il y a 5 ans
Parent
commit
240c33fe38

+ 34 - 0
controllers/transactionData.js

@@ -296,6 +296,40 @@ module.exports = {
             });
     },
 
+    spreadsheetTemplate: 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})
+            .populate("recipes")
+            .then((merchant)=>{
+                let workbook = xlsx.utils.book_new();
+                workbook.SheetNames.push("Transaction");
+                let workbookData = [];
+
+                workbookData.push(["Date", "Recipes", "Quantity", "", "Recipes Reference"]);
+
+                for(let i = 0; i < merchant.recipes.length; i++){
+                    workbookData.push(["", "", "", "", merchant.recipes[i].name]);
+                }
+
+                workbookData[1][0] = "2020-02-29";
+                workbookData[1][1] = "Example Recipe 1";
+                workbookData[1][2] = 12;
+                workbookData[2][1] = "Example Recipe 2";
+                workbookData[2][2] = 7;
+
+                workbook.Sheets.Transaction = xlsx.utils.aoa_to_sheet(workbookData);
+                xlsx.writeFile(workbook, "SublineTransaction.xlsx");
+                return res.download("SublineTransaction.xlsx", (err)=>{
+                    fs.unlink("SublineTransaction.xlsx", ()=>{});
+                });
+            })
+            .catch((err)=>{});
+    },
+
     /*
     GET - Creates 5000 transactions for logged in merchant for testing
     */

+ 3 - 2
routes.js

@@ -51,10 +51,11 @@ module.exports = function(app){
 
     //Transactions
     app.post("/transaction", transactionData.getTransactions);
-    app.get("/transactions/:from/:to", transactionData.getTransactionsByDate);
     app.post("/transaction/create", transactionData.createTransaction);
-    app.delete("/transaction/:id", transactionData.remove);
     app.post("/transactions/create/spreadsheet", upload.single("transactions"), transactionData.createFromSpreadsheet);
+    app.get("/transactions/download/spreadsheet", transactionData.spreadsheetTemplate);
+    app.delete("/transaction/:id", transactionData.remove);
+    app.get("/transactions/:from/:to", transactionData.getTransactionsByDate);
     app.get("/populatesometransactions", transactionData.populate);
 
     //Other

+ 1 - 0
views/dashboardPage/bundle.js

@@ -1517,6 +1517,7 @@ controller = {
                 content = document.getElementById("modalSpreadsheetUpload");
                 content.style.display = "flex";
                 document.getElementById("modalSpreadsheetTitle").innerText = "transactions";
+                document.getElementById("spreadsheetDownload").href = "/transactions/download/spreadsheet";
                 content.onsubmit = newTransaction.submitSpreadsheet;
         }
     },

+ 1 - 0
views/dashboardPage/js/dashboard.js

@@ -215,6 +215,7 @@ controller = {
                 content = document.getElementById("modalSpreadsheetUpload");
                 content.style.display = "flex";
                 document.getElementById("modalSpreadsheetTitle").innerText = "transactions";
+                document.getElementById("spreadsheetDownload").href = "/transactions/download/spreadsheet";
                 content.onsubmit = newTransaction.submitSpreadsheet;
         }
     },