|
|
@@ -145,7 +145,7 @@ module.exports = {
|
|
|
req.session.user = response[1].session.sessionId;
|
|
|
|
|
|
res.redirect("/dashboard");
|
|
|
- return;
|
|
|
+
|
|
|
let body = {
|
|
|
location_ids: [merchant.squareLocation],
|
|
|
limit: 10000,
|
|
|
@@ -160,7 +160,6 @@ module.exports = {
|
|
|
return axios.post(`${process.env.SQUARE_ADDRESS}/v2/orders/search`, body, options);
|
|
|
})
|
|
|
.then(async (response)=>{
|
|
|
- return;
|
|
|
let transactions = [];
|
|
|
|
|
|
for(let i = 0; i < response.data.orders.length; i++){
|
|
|
@@ -243,5 +242,93 @@ module.exports = {
|
|
|
}
|
|
|
return res.redirect("/");
|
|
|
});
|
|
|
+ },
|
|
|
+
|
|
|
+ updateRecipes: function(req, res){
|
|
|
+ let merchant = {};
|
|
|
+ let merchantRecipes = [];
|
|
|
+ let newRecipes = [];
|
|
|
+
|
|
|
+ res.locals.merchant
|
|
|
+ .populate("recipes")
|
|
|
+ .execPopulate()
|
|
|
+ .then((fetchedMerchant)=>{
|
|
|
+ merchant = fetchedMerchant;
|
|
|
+ return axios.post(`${process.env.SQUARE_ADDRESS}/v2/catalog/search`, {
|
|
|
+ object_types: ["ITEM"]
|
|
|
+ }, {
|
|
|
+ headers: {
|
|
|
+ Authorization: `Bearer ${merchant.posAccessToken}`
|
|
|
+ }
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .then((response)=>{
|
|
|
+ merchantRecipes = merchant.recipes.slice();
|
|
|
+
|
|
|
+
|
|
|
+ for(let i = 0; i < response.data.objects.length; i++){
|
|
|
+ let itemData = response.data.objects[i].item_data;
|
|
|
+ for(let j = 0; j < itemData.variations.length; j++){
|
|
|
+ let isFound = false;
|
|
|
+
|
|
|
+ for(let k = 0; k < merchantRecipes.length; k++){
|
|
|
+ if(itemData.variations[j].id === merchantRecipes[k].posId){
|
|
|
+ merchantRecipes.splice(k, 1);
|
|
|
+ k--;
|
|
|
+ isFound = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!isFound){
|
|
|
+ let newRecipe = new Recipe({
|
|
|
+ posId: itemData.variations[j].id,
|
|
|
+ merchant: merchant._id,
|
|
|
+ name: "",
|
|
|
+ price: itemData.variations[j].item_variation_data.price_money.amount,
|
|
|
+ ingredients: []
|
|
|
+ });
|
|
|
+
|
|
|
+ if(itemData.variations.length > 1){
|
|
|
+ newRecipe.name = `${itemData.name} '${itemData.variations[j].item_variation_data.name}'`;
|
|
|
+ }else{
|
|
|
+ newRecipe.name = itemData.name;
|
|
|
+ }
|
|
|
+
|
|
|
+ newRecipes.push(newRecipe);
|
|
|
+ merchant.recipes.push(newRecipe);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ let ids = [];
|
|
|
+ for(let i = 0; i < merchantRecipes.length; i++){
|
|
|
+ ids.push(merchantRecipes[i]._id);
|
|
|
+ for(let j = 0; j < merchant.recipes.length; j++){
|
|
|
+ if(merchantRecipes[i]._id.toString() === merchant.recipes[j]._id.toString()){
|
|
|
+ merchant.recipes.splice(j, 1);
|
|
|
+ j--;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(newRecipes.length > 0) Recipe.create(newRecipes);
|
|
|
+ if(merchantRecipes.length > 0) Recipe.deleteMany({_id: {$in: ids}});
|
|
|
+
|
|
|
+ return merchant.save();
|
|
|
+ })
|
|
|
+ .then((merchant)=>{
|
|
|
+ return res.json({new: newRecipes, removed: merchantRecipes});
|
|
|
+ })
|
|
|
+ .catch((err)=>{
|
|
|
+ if(typeof(err) === "string"){
|
|
|
+ return res.json(err);
|
|
|
+ }
|
|
|
+ if(err.name === "ValidationError"){
|
|
|
+ return res.json(err.errors[Object.keys(err.errors)[0]].properties.message);
|
|
|
+ }
|
|
|
+ return res.json("ERROR: UNABLE TO RETRIEVE RECIPE DATA FROM SQUARE");
|
|
|
+ });
|
|
|
}
|
|
|
}
|