renderer.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. const ObjectId = require("mongoose").Types.ObjectId;
  2. const Transaction = require("../models/transaction.js");
  3. const helper = require("./helper.js");
  4. module.exports = {
  5. /*
  6. GET - Shows the public landing page
  7. */
  8. landingPage: function(req, res){
  9. return res.render("otherPages/landing", {banner: res.locals.banner});
  10. },
  11. //GET: Renders the login page
  12. loginPage: function(req, res){
  13. if(req.session.user !== undefined) return res.redirect("/dashboard");
  14. return res.render("otherPages/login", {banner: res.locals.banner});
  15. },
  16. //GET: Renders the registration page
  17. registerPage: function(req, res){
  18. return res.render("otherPages/register", {banner: res.locals.banner});
  19. },
  20. /*
  21. GET - Displays the main inventory page for merchants
  22. Returns = the logged in merchant and his/her data
  23. Renders inventoryPage
  24. */
  25. displayDashboard: function(req, res){
  26. if(res.locals.merchant.status.includes("unverified")) {
  27. req.session.error = "PLEASE VERIFY YOUR EMAIL ADDRESS";
  28. return res.redirect(`/verify/email/${res.locals.merchant._id}`);
  29. }
  30. // if(res.locals.merchant.square !== undefined){
  31. // await helper.getSquareData(res.locals.merchant);
  32. // }
  33. res.locals.merchant
  34. .populate("inventory.ingredient")
  35. .populate("recipes")
  36. .execPopulate()
  37. .then((merchant)=>{
  38. let date = new Date();
  39. let firstDay = new Date(date.getFullYear(), date.getMonth() - 1, 1);
  40. return Transaction.aggregate([
  41. {$match: {
  42. merchant: new ObjectId(res.locals.merchant._id),
  43. date: {$gte: firstDay},
  44. }},
  45. {$sort: {date: -1}},
  46. {$project: {
  47. date: 1,
  48. recipes: 1
  49. }}
  50. ]);
  51. })
  52. .then(async (transactions)=>{
  53. let latest = {};
  54. if(transactions.length === 0){
  55. latest = await Transaction.find({merchant: res.locals.merchant._id}).sort({date: -1}).limit(1)[0].date;
  56. latest = new Date(latest);
  57. }else{
  58. latest = new Date(transactions[0].date);
  59. }
  60. let newRecipes = await helper.getSquareData(res.locals.merchant, latest);
  61. newRecipes.push(transactions);
  62. res.locals.merchant._id = undefined;
  63. res.locals.password = undefined;
  64. res.locals.merchant.status = undefined;
  65. res.locals.square = undefined;
  66. res.locals.session = undefined;
  67. return res.render("dashboardPage/dashboard", {merchant: res.locals.merchant, transactions: newRecipes});
  68. })
  69. .catch((err)=>{
  70. console.log(err);
  71. req.session.error = "ERROR: UNABLE TO RETRIEVE DATA";
  72. return res.redirect("/");
  73. });
  74. },
  75. //GET - Renders the page to reset your password
  76. displayPassReset: function(req, res){
  77. return res.render("passResetPage/passReset");
  78. }
  79. }