瀏覽代碼

Update backend for clover register/login to have cleaner promises.

Lee Morgan 5 年之前
父節點
當前提交
9944305e12
共有 2 個文件被更改,包括 48 次插入63 次删除
  1. 25 39
      controllers/merchantData.js
  2. 23 24
      controllers/otherData.js

+ 25 - 39
controllers/merchantData.js

@@ -63,9 +63,10 @@ module.exports = {
     Redirects to /dashboard
     */
     createMerchantClover: async function(req, res){
+        let merchant = {}
         axios.get(`${process.env.CLOVER_ADDRESS}/v3/merchants/${req.session.merchantId}?access_token=${req.session.accessToken}`)
             .then((response)=>{
-                let merchant = new Merchant({
+                merchant = new Merchant({
                     name: response.data.name,
                     pos: "clover",
                     posId: req.session.merchantId,
@@ -76,50 +77,35 @@ module.exports = {
                     recipes: []
                 });
 
-                axios.get(`${process.env.CLOVER_ADDRESS}/v3/merchants/${req.session.merchantId}/items?access_token=${req.session.accessToken}`)
-                    .then((response)=>{
-                        let recipes = [];
-                        for(let i = 0; i < response.data.elements.length; i++){
-                            let recipe = new Recipe({
-                                posId: response.data.elements[i].id,
-                                merchant: merchant,
-                                name: response.data.elements[i].name,
-                                price: response.data.elements[i].price,
-                                ingredients: []
-                            });
-
-                            recipes.push(recipe);
-                            merchant.recipes.push(recipe);                                
-                        }
-
-                        Recipe.create(recipes)
-                            .catch((err)=>{
-                                req.session.error = "ERROR: UNABLE TO CREATE YOUR RECIPES FROM CLOVER."
-                            })
-
-                        merchant.save()
-                            .then((newMerchant)=>{
-                                req.session.accessToken = undefined;
-                                req.session.user = newMerchant._id;
+                return axios.get(`${process.env.CLOVER_ADDRESS}/v3/merchants/${req.session.merchantId}/items?access_token=${req.session.accessToken}`);
+            })
+            .then((response)=>{
+                let recipes = [];
+                for(let i = 0; i < response.data.elements.length; i++){
+                    let recipe = new Recipe({
+                        posId: response.data.elements[i].id,
+                        merchant: merchant,
+                        name: response.data.elements[i].name,
+                        price: response.data.elements[i].price,
+                        ingredients: []
+                    });
+
+                    recipes.push(recipe);
+                    merchant.recipes.push(recipe);                                
+                }
 
-                                return res.redirect("/dashboard");
-                            })
-                            .catch((err)=>{
-                                req.session.error = "ERROR: UNABLE TO SAVE DATA FROM CLOVER";
+                Recipe.create(recipes).catch((err)=>{});
 
-                                return res.redirect("/");
-                            });
-                    })
-                    .catch((err)=>{
-                        req.session.error = "ERROR: UNABLE TO RETRIEVE DATA FROM CLOVER";
-                        return res.redirect("/");
-                    })
+                return merchant.save();
+            })
+            .then((newMerchant)=>{
+                req.session.accessToken = undefined;
+                req.session.user = newMerchant._id;
 
-                
+                return res.redirect("/dashboard");
             })
             .catch((err)=>{
                 req.session.error = "ERROR: UNABLE TO RETRIEVE DATA FROM CLOVER";
-
                 return res.redirect("/");
             });
     },

+ 23 - 24
controllers/otherData.js

@@ -71,32 +71,31 @@ module.exports = {
             }
         }
 
+        let response = {}
         axios.get(`${process.env.CLOVER_ADDRESS}/oauth/token?client_id=${process.env.SUBLINE_CLOVER_APPID}&client_secret=${process.env.SUBLINE_CLOVER_APPSECRET}&code=${authorizationCode}`)
-            .then((response)=>{
-                Merchant.findOne({posId: merchantId})
-                    .then((merchant)=>{
-                        if(merchant){
-                            merchant.posAccessToken = response.data.access_token;
-
-                            merchant.save()
-                                .then((updatedMerchant)=>{
-                                    req.session.user = updatedMerchant._id;
-                                    return res.redirect("/dashboard");
-                                })
-                                .catch((err)=>{
-                                    req.session.error("Error: unable to save critical data.  Try again.");
-                                    return res.redirect("/")
-                                });
-                        }else{
-                            req.session.merchantId = merchantId;
-                            req.session.accessToken = response.data.access_token;
-                            return res.redirect("/merchant/create/clover");
-                        }
-                    })
-                    .catch((err)=>{
-                        req.session.error = "ERROR: WE MADE AN OOPSIES";
-                    });
+            .then((data)=>{
+                response = data;
                 
+                return Merchant.findOne({posId: merchantId});
+            })
+            .then((merchant)=>{
+                if(merchant){
+                    merchant.posAccessToken = response.data.access_token;
+
+                    merchant.save()
+                        .then((updatedMerchant)=>{
+                            req.session.user = updatedMerchant._id;
+                            return res.redirect("/dashboard");
+                        })
+                        .catch((err)=>{
+                            req.session.error("ERROR: UNABLE TO CREATE MERCHANT");
+                            return res.redirect("/")
+                        });
+                }else{
+                    req.session.merchantId = merchantId;
+                    req.session.accessToken = response.data.access_token;
+                    return res.redirect("/merchant/create/clover");
+                }
             })
             .catch((err)=>{
                 req.session.error = "ERROR: UNABLE TO RETRIEVE DATA FROM CLOVER";