瀏覽代碼

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;