orderData.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const Order = require("../models/order.js");
  2. const Merchant = require("../models/merchant.js");
  3. module.exports = {
  4. getOrders: function(){
  5. if(!req.session.user){
  6. req.session.error = "Must be logged in to do that";
  7. return res.redirect("/");
  8. }
  9. Order.aggregate([
  10. {$match: {merchant: req.session.user}},
  11. {$sort: {date: -1}},
  12. {$limit: 25},
  13. {$project: {
  14. orderId: 1,
  15. date: 1,
  16. ingredients: 1
  17. }}
  18. ]).toArray()
  19. .then((orders)=>{
  20. return res.json({orders});
  21. })
  22. .catch((err)=>{
  23. return res.json("Error: unable to retrieve your orders");
  24. });
  25. },
  26. /*
  27. POST - Creates a new order from the site
  28. req.body = {
  29. orderId: user created order id
  30. date: creation date
  31. ingredients: [{
  32. ingredient: id of the ingredient
  33. quantity: amount of the ingredient purchased
  34. price: price per unit for ingredient
  35. }]
  36. }
  37. */
  38. createOrder: function(req, res){
  39. if(!req.session.user){
  40. req.session.error = "Must be logged in to do that";
  41. return res.redirect("/");
  42. }
  43. let newOrder = new Order(req.body);
  44. newOrder.merchant = req.session.user;
  45. newOrder.save()
  46. .then((response)=>{
  47. res.json({});
  48. })
  49. .catch((err)=>{
  50. return res.json("Error: unable to save the new order");
  51. });
  52. Merchant.findOne({_id: req.session.user})
  53. .then((merchant)=>{
  54. for(let i = 0; i < req.body.ingredients.length; i++){
  55. for(let j = 0; j < merchant.inventory.length; j++){
  56. if(req.body.ingredients[i].ingredient === merchant.inventory[j].ingredient.toString()){
  57. merchant.inventory[j].quantity += parseFloat(req.body.ingredients[i].quantity);
  58. }
  59. }
  60. }
  61. return merchant.save()
  62. })
  63. .then((merchant)=>{
  64. return;
  65. })
  66. .catch(()=>{});
  67. }
  68. }