فهرست منبع

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
                 },
                 ingredients: match
-            }}
+            }},
+            {$sort: {date: -1}}
         ])
             .then((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
     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
     }
-    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){
         if(!req.session.user){
@@ -24,28 +22,35 @@ module.exports = {
             return res.redirect("/");
         }
 
+        let from = new Date(req.body.from);
+        let to = new Date(req.body.to);
+
         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([
             {$match: {
                 merchant: ObjectId(req.session.user),
                 date: {
-                    $gte: startDate,
-                    $lt: endDate
+                    $gte: from,
+                    $lt: to
                 },
-                recipes: {
-                    $elemMatch: {
-                        recipe: {
-                            $in: objectifiedRecipes
-                        }
-                    }
-                }
+                recipes: query
             }},
             {$sort: {date: -1}}
         ])

+ 0 - 2
routes.js

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

+ 12 - 9
views/dashboardPage/bundle.js

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

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

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

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

@@ -1,5 +1,5 @@
 let newTransaction = {
-    display: function(Transaction){
+    display: function(){
         let recipeList = document.getElementById("newTransactionRecipes");
         let template = document.getElementById("createTransaction").content.children[0];
         document.getElementById("transactionFileUpload").addEventListener("click", ()=>{controller.openModal("transactionSpreadsheet")});
@@ -16,10 +16,10 @@ let newTransaction = {
             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 date = document.getElementById("newTransactionDate").valueAsDate;
 

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

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