فهرست منبع

Create ability to check and display other merchants from a vendor.
Still has bugs.

Lee Morgan 5 سال پیش
والد
کامیت
d5437f7948
2فایلهای تغییر یافته به همراه45 افزوده شده و 12 حذف شده
  1. 12 10
      controllers/merchantData.js
  2. 33 2
      views/dashboardPage/js/strands/account.js

+ 12 - 10
controllers/merchantData.js

@@ -1,6 +1,7 @@
 const Owner = require("../models/owner.js");
-const Merchant = require("../models/merchant");
+const Merchant = require("../models/merchant.js");
 const InventoryAdjustment = require("../models/inventoryAdjustment");
+const Transaction = require("../models/transaction.js");
 
 const helper = require("./helper.js");
 const verifyEmail = require("../emails/verifyEmail.js");
@@ -17,29 +18,30 @@ module.exports = {
     getMerchant: function(req, res){
         let owner = Owner.findOne({"session.sessionId": req.session.owner}).populate("merchants", "name");
         let merchant = Merchant.findOne({_id: req.params.id});
+        let transactions = Transaction.find({merchant: req.params.id});
 
-        Promise.all([owner, merchant])
+        Promise.all([owner, merchant, transactions])
             .then((response)=>{
                 if(response[0] === null || response[1] === null) throw "unfound";
-                if(merchant.owner.toString() !== owner._id.toString()) throw "permissions";
+                if(response[1].owner.toString() !== response[0]._id.toString()) throw "permissions";
 
                 let responseOwner = {
-                    _id: owner._id,
-                    email: owner.email,
-                    merchants: owner.merchants
+                    _id: response[0]._id,
+                    email: response[0].email,
+                    merchants: response[0].merchants
                 };
 
                 for(let i = 0; i < responseOwner.merchants.length; i++){
-                    if(merchant._id.toString() === responseOwner.merchants[i]._id.toString()){
+                    if(response[1]._id.toString() === responseOwner.merchants[i]._id.toString()){
                         responseOwner.merchants.splice(i, 1);
                         break;
                     }
                 }
 
-                merchant.owner = undefined;
-                merchant.createdAt = undefined;
+                response[1].owner = undefined;
+                response[1].createdAt = undefined;
 
-                return res.json([responseOwner, merchant]);
+                return res.json([responseOwner, response[1], response[2]]);
             })
             .catch((err)=>{
                 console.log(err);

+ 33 - 2
views/dashboardPage/js/strands/account.js

@@ -1,3 +1,5 @@
+const Merchant = require("../classes/Merchant");
+
 let account = {
     display: function(){
         document.getElementById("accountStrandTitle").innerText = merchant.name;
@@ -13,7 +15,7 @@ let account = {
         for(let i = 0; i < merchant.owner.merchants.length; i++){
             let div = template.cloneNode(true);
             div.children[0].innerText = merchant.owner.merchants[i].name;
-            div.children[1].children[0].onclick = ()=>{this.switchMerchant(merchant.owner.merchants[i].name)};
+            div.children[1].children[0].onclick = ()=>{this.switchMerchant(merchant.owner.merchants[i]._id)};
             div.children[1].children[1].onclick = ()=>{this.deleteMerchant(merchant.owner.merchants[i]._id)};
             container.appendChild(div);
         }
@@ -112,7 +114,36 @@ let account = {
     },
 
     switchMerchant: function(id){
-        
+        let loader = document.getElementById("loaderContainer");
+        loader.style.display = "none";
+
+        fetch(`/merchant/${id}`)
+            .then(response => response.json())
+            .then((response)=>{
+                if(typeof(response) === "string"){
+                    controller.createBanner(response, "error");
+                }else{
+                    window.merchant = new Merchant(
+                        response[1].name,
+                        response[0].email,
+                        response[1].pos,
+                        response[1].inventory,
+                        response[1].recipes,
+                        response[2],
+                        response[0]
+                    );
+
+                    state.updateMerchant();
+                    controller.openStrand("home");
+                }
+            })
+            .catch((err)=>{
+                console.log(err);
+                controller.createBanner("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE", "error");
+            })
+            .finally(()=>{
+                loader.style.display = "none";
+            });
     },
 
     deleteMerchant: function(id){