فهرست منبع

Add sorting for fetching orders from the backend.
Fix the fetching from the frontend of transactions.
Update transactionsData.js to be more general in it's returning of transactions.

Lee Morgan 5 سال پیش
والد
کامیت
e3776f0104

+ 2 - 1
controllers/orderData.js

@@ -52,7 +52,8 @@ module.exports = {
                     $lt: to
                     $lt: to
                 },
                 },
                 ingredients: match
                 ingredients: match
-            }}
+            }},
+            {$sort: {date: -1}}
         ])
         ])
             .then((orders)=>{
             .then((orders)=>{
                 return res.json(orders);
                 return res.json(orders);

+ 23 - 18
controllers/transactionData.js

@@ -11,12 +11,10 @@ module.exports = {
     /*
     /*
     POST - retrieves a list of transactions based on the filter
     POST - retrieves a list of transactions based on the filter
     req.body = {
     req.body = {
-        startDate: starting date to filter on,
-        endDate: ending date to filter on,
+        from: starting date to filter on,
+        to: ending date to filter on,
         recipes: list of recipes to filter on
         recipes: list of recipes to filter on
     }
     }
-    NOTE: May be a good idea to search recipes with for looping rather than query
-        Needs some testing and playing with if so
     */
     */
     getTransactions: function(req, res){
     getTransactions: function(req, res){
         if(!req.session.user){
         if(!req.session.user){
@@ -24,28 +22,35 @@ module.exports = {
             return res.redirect("/");
             return res.redirect("/");
         }
         }
 
 
+        let from = new Date(req.body.from);
+        let to = new Date(req.body.to);
+
         let objectifiedRecipes = [];
         let objectifiedRecipes = [];
-        for(let i = 0; i < req.body.recipes.length; i++){
-            objectifiedRecipes.push(new ObjectId(req.body.recipes[i]));
+        let query = {};
+        if(req.body.length === 0){
+            query = {$exists: false};
+        }else{
+            for(let i = 0; i < req.body.recipes.length; i++){
+                objectifiedRecipes.push(new ObjectId(req.body.recipes[i]));
+            }
+
+            query = {
+                $elemMatch: {
+                    recipe: {
+                        $in: objectifiedRecipes
+                    }
+                }
+            }
         }
         }
-        let startDate = new Date(req.body.startDate);
-        let endDate = new Date(req.body.endDate);
-        endDate.setDate(endDate.getDate() + 1);
 
 
         Transaction.aggregate([
         Transaction.aggregate([
             {$match: {
             {$match: {
                 merchant: ObjectId(req.session.user),
                 merchant: ObjectId(req.session.user),
                 date: {
                 date: {
-                    $gte: startDate,
-                    $lt: endDate
+                    $gte: from,
+                    $lt: to
                 },
                 },
-                recipes: {
-                    $elemMatch: {
-                        recipe: {
-                            $in: objectifiedRecipes
-                        }
-                    }
-                }
+                recipes: query
             }},
             }},
             {$sort: {date: -1}}
             {$sort: {date: -1}}
         ])
         ])

+ 0 - 2
routes.js

@@ -43,9 +43,7 @@ module.exports = function(app){
     app.get("/recipes/download/spreadsheet", recipeData.spreadsheetTemplate);
     app.get("/recipes/download/spreadsheet", recipeData.spreadsheetTemplate);
 
 
     //Orders
     //Orders
-    // app.get("/order", orderData.getOrders);
     app.post("/orders/get", orderData.getOrders);
     app.post("/orders/get", orderData.getOrders);
-    // app.post("/order", orderData.orderFilter);
     app.post("/order/create", orderData.createOrder);
     app.post("/order/create", orderData.createOrder);
     app.post("/orders/create/spreadsheet", upload.single("orders"), orderData.createFromSpreadsheet);
     app.post("/orders/create/spreadsheet", upload.single("orders"), orderData.createFromSpreadsheet);
     app.get("/orders/download/spreadsheet", orderData.spreadsheetTemplate);
     app.get("/orders/download/spreadsheet", orderData.spreadsheetTemplate);

+ 12 - 9
views/dashboardPage/bundle.js

@@ -1390,7 +1390,7 @@ controller = {
                 transactionDetails.display(data);
                 transactionDetails.display(data);
                 break;
                 break;
             case "transactionFilter":
             case "transactionFilter":
-                transactionFilter.display();
+                transactionFilter.display(Transaction);
                 break;
                 break;
             case "newTransaction":
             case "newTransaction":
                 newTransaction.display(Transaction);
                 newTransaction.display(Transaction);
@@ -2391,7 +2391,7 @@ let newRecipe = {
 module.exports = newRecipe;
 module.exports = newRecipe;
 },{}],13:[function(require,module,exports){
 },{}],13:[function(require,module,exports){
 let newTransaction = {
 let newTransaction = {
-    display: function(Transaction){
+    display: function(){
         let recipeList = document.getElementById("newTransactionRecipes");
         let recipeList = document.getElementById("newTransactionRecipes");
         let template = document.getElementById("createTransaction").content.children[0];
         let template = document.getElementById("createTransaction").content.children[0];
         document.getElementById("transactionFileUpload").addEventListener("click", ()=>{controller.openModal("transactionSpreadsheet")});
         document.getElementById("transactionFileUpload").addEventListener("click", ()=>{controller.openModal("transactionSpreadsheet")});
@@ -2408,10 +2408,10 @@ let newTransaction = {
             recipeDiv.children[0].innerText = merchant.recipes[i].name;
             recipeDiv.children[0].innerText = merchant.recipes[i].name;
         }
         }
 
 
-        document.getElementById("submitNewTransaction").onclick = ()=>{this.submit(Transaction)};
+        document.getElementById("submitNewTransaction").onclick = ()=>{this.submit()};
     },
     },
 
 
-    submit: function(Transaction){
+    submit: function(){
         let recipeDivs = document.getElementById("newTransactionRecipes");
         let recipeDivs = document.getElementById("newTransactionRecipes");
         let date = document.getElementById("newTransactionDate").valueAsDate;
         let date = document.getElementById("newTransactionDate").valueAsDate;
 
 
@@ -2885,7 +2885,7 @@ let transactionDetails = {
 module.exports = transactionDetails;
 module.exports = transactionDetails;
 },{}],19:[function(require,module,exports){
 },{}],19:[function(require,module,exports){
 let transactionFilter = {
 let transactionFilter = {
-    display: function(){
+    display: function(Transaction){
         //Set default dates
         //Set default dates
         let today = new Date();
         let today = new Date();
         let monthAgo = new Date(today);
         let monthAgo = new Date(today);
@@ -2911,7 +2911,7 @@ let transactionFilter = {
         }
         }
 
 
         //Submit button
         //Submit button
-        document.getElementById("transFilterSubmit").onclick = ()=>{this.submit()};
+        document.getElementById("transFilterSubmit").onclick = ()=>{this.submit(Transaction)};
     },
     },
 
 
     toggleActive: function(element){
     toggleActive: function(element){
@@ -2922,13 +2922,16 @@ let transactionFilter = {
         }
         }
     },
     },
 
 
-    submit: function(){
+    submit: function(Transaction){
         let data = {
         let data = {
-            startDate: document.getElementById("transFilterDateStart").valueAsDate,
-            endDate: document.getElementById("transFilterDateEnd").valueAsDate,
+            from: document.getElementById("transFilterDateStart").valueAsDate,
+            to: document.getElementById("transFilterDateEnd").valueAsDate,
             recipes: []
             recipes: []
         }
         }
 
 
+        data.from.setHours(0, 0, 0, 0);
+        data.to.setHours(0, 0, 0, 0);
+
         if(data.startDate >= data.endDate){
         if(data.startDate >= data.endDate){
             controller.createBanner("START DATE CANNOT BE AFTER END DATE", "error");
             controller.createBanner("START DATE CANNOT BE AFTER END DATE", "error");
             return;
             return;

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

@@ -143,7 +143,7 @@ controller = {
                 transactionDetails.display(data);
                 transactionDetails.display(data);
                 break;
                 break;
             case "transactionFilter":
             case "transactionFilter":
-                transactionFilter.display();
+                transactionFilter.display(Transaction);
                 break;
                 break;
             case "newTransaction":
             case "newTransaction":
                 newTransaction.display(Transaction);
                 newTransaction.display(Transaction);

+ 3 - 3
views/dashboardPage/js/sidebars/newTransaction.js

@@ -1,5 +1,5 @@
 let newTransaction = {
 let newTransaction = {
-    display: function(Transaction){
+    display: function(){
         let recipeList = document.getElementById("newTransactionRecipes");
         let recipeList = document.getElementById("newTransactionRecipes");
         let template = document.getElementById("createTransaction").content.children[0];
         let template = document.getElementById("createTransaction").content.children[0];
         document.getElementById("transactionFileUpload").addEventListener("click", ()=>{controller.openModal("transactionSpreadsheet")});
         document.getElementById("transactionFileUpload").addEventListener("click", ()=>{controller.openModal("transactionSpreadsheet")});
@@ -16,10 +16,10 @@ let newTransaction = {
             recipeDiv.children[0].innerText = merchant.recipes[i].name;
             recipeDiv.children[0].innerText = merchant.recipes[i].name;
         }
         }
 
 
-        document.getElementById("submitNewTransaction").onclick = ()=>{this.submit(Transaction)};
+        document.getElementById("submitNewTransaction").onclick = ()=>{this.submit()};
     },
     },
 
 
-    submit: function(Transaction){
+    submit: function(){
         let recipeDivs = document.getElementById("newTransactionRecipes");
         let recipeDivs = document.getElementById("newTransactionRecipes");
         let date = document.getElementById("newTransactionDate").valueAsDate;
         let date = document.getElementById("newTransactionDate").valueAsDate;
 
 

+ 8 - 5
views/dashboardPage/js/sidebars/transactionFilter.js

@@ -1,5 +1,5 @@
 let transactionFilter = {
 let transactionFilter = {
-    display: function(){
+    display: function(Transaction){
         //Set default dates
         //Set default dates
         let today = new Date();
         let today = new Date();
         let monthAgo = new Date(today);
         let monthAgo = new Date(today);
@@ -25,7 +25,7 @@ let transactionFilter = {
         }
         }
 
 
         //Submit button
         //Submit button
-        document.getElementById("transFilterSubmit").onclick = ()=>{this.submit()};
+        document.getElementById("transFilterSubmit").onclick = ()=>{this.submit(Transaction)};
     },
     },
 
 
     toggleActive: function(element){
     toggleActive: function(element){
@@ -36,13 +36,16 @@ let transactionFilter = {
         }
         }
     },
     },
 
 
-    submit: function(){
+    submit: function(Transaction){
         let data = {
         let data = {
-            startDate: document.getElementById("transFilterDateStart").valueAsDate,
-            endDate: document.getElementById("transFilterDateEnd").valueAsDate,
+            from: document.getElementById("transFilterDateStart").valueAsDate,
+            to: document.getElementById("transFilterDateEnd").valueAsDate,
             recipes: []
             recipes: []
         }
         }
 
 
+        data.from.setHours(0, 0, 0, 0);
+        data.to.setHours(0, 0, 0, 0);
+
         if(data.startDate >= data.endDate){
         if(data.startDate >= data.endDate){
             controller.createBanner("START DATE CANNOT BE AFTER END DATE", "error");
             controller.createBanner("START DATE CANNOT BE AFTER END DATE", "error");
             return;
             return;