account.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. const Merchant = require("../classes/Merchant");
  2. let account = {
  3. display: function(){
  4. document.getElementById("accountStrandTitle").innerText = merchant.name;
  5. document.getElementById("accountEmail").value = merchant.email;
  6. document.getElementById("accountUpdate").onclick = ()=>{this.updateData()};
  7. //Display alternate locations
  8. document.getElementById("settingsAddMerchant").onclick = ()=>{controller.openModal("newMerchant")};
  9. let container = document.getElementById("settingsMerchants");
  10. let template = document.getElementById("locationDiv").content.children[0];
  11. for(let i = 0; i < merchant.owner.merchants.length; i++){
  12. let div = template.cloneNode(true);
  13. div.children[0].innerText = merchant.owner.merchants[i].name;
  14. div.children[1].children[0].onclick = ()=>{this.switchMerchant(merchant.owner.merchants[i]._id)};
  15. div.children[1].children[1].onclick = ()=>{this.deleteMerchant(merchant.owner.merchants[i]._id)};
  16. container.appendChild(div);
  17. }
  18. //Handle the password changey stuffs
  19. let passButton = document.getElementById("accountShowPassword");
  20. let passBox = document.getElementById("changePasswordBox");
  21. passButton.onclick = ()=>{
  22. passButton.style.display = "none";
  23. passBox.style.display = "flex";
  24. };
  25. document.getElementById("cancelPasswordChange").onclick = ()=>{
  26. passButton.style.display = "block";
  27. passBox.style.display = "none";
  28. document.getElementById("accountCurrentPassword").value = "";
  29. document.getElementById("accountNewPassword").value = "";
  30. document.getElementById("accountConfirmPassword").value = "";
  31. };
  32. document.getElementById("changePasswordButton").onclick = ()=>{this.updatePassword()};
  33. },
  34. updateData: function(){
  35. let data = {
  36. email: document.getElementById("accountEmail").value
  37. }
  38. let loader = document.getElementById("loaderContainer");
  39. loader.style.display = "flex";
  40. fetch("/merchant/update", {
  41. method: "put",
  42. headers: {
  43. "Content-Type": "application/json;charset=utf-8"
  44. },
  45. body: JSON.stringify(data)
  46. })
  47. .then(response => response.json())
  48. .then((response)=>{
  49. if(typeof(response) === "string"){
  50. controller.createBanner(response, "error");
  51. }else{
  52. controller.createBanner("DATA UPDATED", "success");
  53. if(response.email !== merchant.email){
  54. controller.createBanner("YOU MUST VALIDATE YOUR NEW EMAIL ADDRESS BEFORE YOU CAN LOG IN AGAIN", "alert");
  55. }
  56. merchant.email = response.email;
  57. document.getElementById("accountEmail").value = merchant.email;
  58. }
  59. })
  60. .catch((err)=>{
  61. controller.createBanner("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE", "error");
  62. })
  63. .finally(()=>{
  64. loader.style.display = "none";
  65. });
  66. },
  67. updatePassword: function(){
  68. let data = {
  69. current: document.getElementById("accountCurrentPassword").value,
  70. new: document.getElementById("accountNewPassword").value,
  71. confirm: document.getElementById("accountConfirmPassword").value
  72. }
  73. if(data.new !== data.confirm){
  74. return controller.createBanner("PASSWORDS DO NOT MATCH");
  75. }
  76. let loader = document.getElementById("loaderContainer");
  77. loader.style.display = "flex";
  78. fetch("/merchant/password", {
  79. method: "put",
  80. headers: {
  81. "Content-Type": "application/json;charset=utf-8"
  82. },
  83. body: JSON.stringify(data)
  84. })
  85. .then(response => response.json())
  86. .then((response)=>{
  87. if(typeof(response) === "string"){
  88. controller.createBanner(response, "error");
  89. }else{
  90. window.location.href = response.redirect;
  91. }
  92. })
  93. .catch((err)=>{
  94. controller.createBanner("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE", "error");
  95. })
  96. .finally(()=>{
  97. loader.style.display = "none";
  98. });
  99. },
  100. switchMerchant: function(id){
  101. let loader = document.getElementById("loaderContainer");
  102. loader.style.display = "none";
  103. fetch(`/merchant/${id}`)
  104. .then(response => response.json())
  105. .then((response)=>{
  106. if(typeof(response) === "string"){
  107. controller.createBanner(response, "error");
  108. }else{
  109. window.merchant = new Merchant(
  110. response[1].name,
  111. response[0].email,
  112. response[1].pos,
  113. response[1].inventory,
  114. response[1].recipes,
  115. response[2],
  116. response[0]
  117. );
  118. state.updateMerchant();
  119. controller.openStrand("home");
  120. }
  121. })
  122. .catch((err)=>{
  123. console.log(err);
  124. controller.createBanner("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE", "error");
  125. })
  126. .finally(()=>{
  127. loader.style.display = "none";
  128. });
  129. },
  130. deleteMerchant: function(id){
  131. console.log("deleting");
  132. }
  133. }
  134. module.exports = account;