Ver código fonte

Add backend to serve order filter requests

Lee Morgan 6 anos atrás
pai
commit
b5a1c2e0e8
3 arquivos alterados com 49 adições e 2 exclusões
  1. 46 0
      controllers/orderData.js
  2. 2 1
      routes.js
  3. 1 1
      views/dashboardPage/sidebars/sidebars.js

+ 46 - 0
controllers/orderData.js

@@ -42,6 +42,52 @@ 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,
+        ingredients: list of recipes.to filter on
+    }
+    */
+    orderFilter: function(req, res){
+        if(!req.session.user){
+            req.session.error = "MUST BE LOGGED IN TO DO THAT";
+            return res.redirect("/");
+        }
+
+        let objectifiedIngredients = [];
+        for(let i = 0; i < req.body.ingredients; i++){
+            objectifiedIngredients.push(new ObjectId(req.body.ingredients[i]));
+        }
+        let startDate = new Date(req.body.startDate);
+        let endDate = new Date(req.body.endDate);
+        endDate = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate() + 1);
+        Order.aggregate([
+            {$match: {
+                merchant: new ObjectId(req.session.user),
+                date: {
+                    $gte: startDate,
+                    $lt: endDate
+                },
+                ingredients: {
+                    $elemMatch: {
+                        ingredient: {
+                            $in: objectifiedIngredients
+                        }
+                    }
+                }
+            }},
+            {$sort: {date: 1}}
+        ])
+            .then((orders)=>{
+                return res.json(orders);
+            })
+            .catch((err)=>{
+                return res.json("ERROR: UNABLE TO RETRIEVE YOUR TRANSACTIONS");
+            });
+    },
+
     /*
     /*
     POST - Creates a new order from the site
     POST - Creates a new order from the site
     req.body = {
     req.body = {

+ 2 - 1
routes.js

@@ -34,7 +34,8 @@ module.exports = function(app){
 
 
     //Orders
     //Orders
     app.get("/order", orderData.getOrders);
     app.get("/order", orderData.getOrders);
-    app.post("/order", orderData.createOrder);
+    app.post("/order", orderData.orderFilter);
+    app.post("/order/create", orderData.createOrder);
     app.delete("/order/:id", orderData.removeOrder);
     app.delete("/order/:id", orderData.removeOrder);
 
 
     //Transactions
     //Transactions

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

@@ -277,7 +277,7 @@ let newOrderComp = {
         let loader = document.getElementById("loaderContainer");
         let loader = document.getElementById("loaderContainer");
         loader.style.display = "flex";
         loader.style.display = "flex";
         
         
-        fetch("/order", {
+        fetch("/order/create", {
             method: "POST",
             method: "POST",
             headers: {
             headers: {
                 "Content-Type": "application/json;charset=utf-8"
                 "Content-Type": "application/json;charset=utf-8"