renderer.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. console.log(res.locals.otherData);
  14. new Activity({
  15. ipAddr: req.headers['x-forwarded-for'] || req.connection.remoteAddress,
  16. merchant: req.session.user,
  17. route: "landing",
  18. date: new Date()
  19. })
  20. .save()
  21. .catch(()=>{});
  22. let error = {};
  23. let isLoggedIn = req.session.isLoggedIn || false;
  24. if(req.session.error){
  25. error = req.session.error;
  26. req.session.error = undefined;
  27. }else{
  28. error = null;
  29. }
  30. if(req.session.success){
  31. success = req.session.success;
  32. req.session.success = undefined;
  33. }else{
  34. success = null;
  35. }
  36. return res.render("landingPage/landing", {error: error, success: success, isLoggedIn: isLoggedIn});
  37. },
  38. /*
  39. GET - Displays the main inventory page for merchants
  40. Returns = the logged in merchant and his/her data
  41. Renders inventoryPage
  42. */
  43. displayDashboard: function(req, res){
  44. if(!req.session.user){
  45. req.session.error = "MUST BE LOGGED IN TO DO THAT";
  46. return res.redirect("/");
  47. }
  48. new Activity({
  49. ipAddr: req.headers['x-forwarded-for'] || req.connection.remoteAddress,
  50. merchant: req.session.user,
  51. route: "dashboard",
  52. date: new Date()
  53. })
  54. .save()
  55. .catch(()=>{});
  56. let merchant2 = {};
  57. Merchant.findOne(
  58. {_id: req.session.user},
  59. {
  60. name: 1,
  61. pos: 1,
  62. posId: 1,
  63. posAccessToken: 1,
  64. lastUpdatedTime: 1,
  65. inventory: 1,
  66. recipes: 1,
  67. squareLocation: 1,
  68. status: 1
  69. }
  70. )
  71. .populate("inventory.ingredient")
  72. .populate("recipes")
  73. .then(async (merchant)=>{
  74. merchant2 = merchant;
  75. if(merchant.status.includes("unverified")){
  76. throw "unverified";
  77. }
  78. if(merchant.pos === "clover"){
  79. await helper.getCloverData(merchant);
  80. }else if(merchant.pos === "square"){
  81. await helper.getSquareData(merchant);
  82. }else{
  83. return;
  84. }
  85. return merchant.save();
  86. })
  87. .then((merchant)=>{
  88. if(merchant){
  89. merchant2 = merchant;
  90. }
  91. let date = new Date();
  92. let firstDay = new Date(date.getFullYear(), date.getMonth() - 1, 1);
  93. return Transaction.aggregate([
  94. {$match: {
  95. merchant: new ObjectId(req.session.user),
  96. date: {$gte: firstDay},
  97. }},
  98. {$sort: {date: -1}},
  99. {$project: {
  100. date: 1,
  101. recipes: 1
  102. }}
  103. ]);
  104. })
  105. .then((transactions)=>{
  106. merchant2._id = undefined;
  107. merchant2.posAccessToken = undefined;
  108. merchant2.lastUpdatedTime = undefined;
  109. merchant2.accountStatus = undefined;
  110. merchant2.status = undefined;
  111. return res.render("dashboardPage/dashboard", {merchant: merchant2, transactions: transactions});
  112. })
  113. .catch((err)=>{
  114. if(err === "unverified"){
  115. return res.redirect(`/verify/email/${merchant2._id}`);
  116. }
  117. req.session.error = "ERROR: UNABLE TO RETRIEVE USER DATA";
  118. return res.redirect("/");
  119. });
  120. },
  121. //GET - Renders the page to reset your password
  122. displayPassReset: function(req, res){
  123. return res.render("passResetPage/passReset");
  124. }
  125. }