renderer.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. const ObjectId = require("mongoose").Types.ObjectId;
  2. const Merchant = require("../models/merchant.js");
  3. const Transaction = require("../models/transaction.js");
  4. const Activity = require("../models/activity.js");
  5. const helper = require("./helper.js");
  6. module.exports = {
  7. /*
  8. GET - Shows the public landing page
  9. Return = a single error message (only if there is an error)
  10. Renders landingPage
  11. */
  12. landingPage: function(req, res){
  13. new Activity({
  14. ipAddr: req.headers['x-forwarded-for'] || req.connection.remoteAddress,
  15. merchant: req.session.user,
  16. route: "landing",
  17. date: new Date()
  18. })
  19. .save()
  20. .catch(()=>{});
  21. let error = {};
  22. let isLoggedIn = req.session.isLoggedIn || false;
  23. if(req.session.error){
  24. error = req.session.error;
  25. req.session.error = undefined;
  26. }else{
  27. error = null;
  28. }
  29. return res.render("landingPage/landing", {error: error, isLoggedIn: isLoggedIn});
  30. },
  31. /*
  32. GET - Displays the main inventory page for merchants
  33. Returns = the logged in merchant and his/her data
  34. Renders inventoryPage
  35. */
  36. displayDashboard: function(req, res){
  37. if(!req.session.user){
  38. req.session.error = "MUST BE LOGGED IN TO DO THAT";
  39. return res.redirect("/");
  40. }
  41. new Activity({
  42. ipAddr: req.headers['x-forwarded-for'] || req.connection.remoteAddress,
  43. merchant: req.session.user,
  44. route: "dashboard",
  45. date: new Date()
  46. })
  47. .save()
  48. .catch(()=>{});
  49. let merchant2 = {};
  50. Merchant.findOne(
  51. {_id: req.session.user},
  52. {
  53. name: 1,
  54. pos: 1,
  55. posId: 1,
  56. posAccessToken: 1,
  57. lastUpdatedTime: 1,
  58. inventory: 1,
  59. recipes: 1,
  60. squareLocation: 1
  61. }
  62. )
  63. .populate("inventory.ingredient")
  64. .populate("recipes")
  65. .then(async (merchant)=>{
  66. merchant2 = merchant;
  67. if(merchant.pos === "clover"){
  68. await helper.getCloverData(merchant);
  69. }else if(merchant.pos === "square"){
  70. await helper.getSquareData(merchant);
  71. }else{
  72. return;
  73. }
  74. return merchant.save();
  75. })
  76. .then((merchant)=>{
  77. if(merchant){
  78. merchant2 = merchant;
  79. }
  80. let date = new Date();
  81. let firstDay = new Date(date.getFullYear(), date.getMonth() - 1, 1);
  82. return Transaction.aggregate([
  83. {$match: {
  84. merchant: new ObjectId(req.session.user),
  85. date: {$gte: firstDay},
  86. }},
  87. {$sort: {date: -1}},
  88. {$project: {
  89. date: 1,
  90. recipes: 1
  91. }}
  92. ]);
  93. })
  94. .then((transactions)=>{
  95. merchant2._id = undefined;
  96. merchant2.posAccessToken = undefined;
  97. merchant2.lastUpdatedTime = undefined;
  98. merchant2.accountStatus = undefined;
  99. return res.render("dashboardPage/dashboard", {merchant: merchant2, transactions: transactions});
  100. })
  101. .catch((err)=>{
  102. req.session.error = "ERROR: UNABLE TO RETRIEVE USER DATA";
  103. return res.redirect("/");
  104. });
  105. },
  106. //GET - Renders the information page
  107. displayLegal: function(req, res){
  108. return res.render("informationPage/information");
  109. },
  110. //GET - Renders the page to reset your password
  111. displayPassReset: function(req, res){
  112. return res.render("passResetPage/passReset");
  113. }
  114. }