Example #1
0
 public function subscriptioncallback(Request $request)
 {
     if ($request->has('hub_mode')) {
         if ($request->get('hub_mode') == 'subscribe') {
             print $request->get('hub_challenge');
             exit(1);
         }
     } else {
         $objects = $request->json()->all();
         foreach ($objects as $object) {
             $instagram = new InstagramAPI();
             $instagramAccount = InstagramAccount::where('instagram_id', $object['object_id'])->first();
             if ($instagramAccount->isSupplier()) {
                 $instagram->setAccessToken($instagramAccount->access_token);
                 $media = $instagram->getUserMedia($instagramAccount->instagram_id, 1);
                 if ($media->meta->code == 200) {
                     foreach ($media->data as $singleMedia) {
                         $isKoalaProduct = false;
                         foreach ($singleMedia->tags as $tag) {
                             if ($tag == 'koalabazaar') {
                                 $isKoalaProduct = true;
                             }
                         }
                         if ($isKoalaProduct && $singleMedia->type == 'image' && ProductsInstagram::where('id', '=', $singleMedia->id)->first() == null) {
                             $caption = null;
                             if (isset($singleMedia->caption)) {
                                 $caption = $singleMedia->caption->text;
                             }
                             $product = new Product();
                             $product->supplier_id = $instagramAccount->instagramable->id;
                             $product->title = $caption;
                             $product->description = $caption;
                             $file = new FileEntry();
                             $status = $file->storeFromUrl($singleMedia->images->standard_resolution->url, $instagramAccount->instagramable->id, 'product');
                             if ($status) {
                                 $product->image = $file->filename;
                             } else {
                                 $product->image = null;
                             }
                             if ($caption == null) {
                                 $product->price = null;
                                 $product->currency_unit_id = null;
                             } else {
                                 $text = mb_strtolower($caption, 'UTF-8');
                                 $units = CurrencyUnit::all();
                                 $estimatedPrice = null;
                                 $currencyUnit = null;
                                 foreach ($units as $unit) {
                                     $firstOccurence = stripos($text, $unit->unit_short_name);
                                     if ($firstOccurence) {
                                         for ($i = $firstOccurence - 1; $i >= 0; $i--) {
                                             $charAt = substr($text, $i, 1);
                                             if (is_numeric($charAt) || $charAt == '.') {
                                                 $estimatedPrice = $charAt . $estimatedPrice;
                                             } else {
                                                 $i = 0;
                                             }
                                         }
                                         $currencyUnit = $unit->id;
                                         break;
                                     }
                                 }
                                 if ($estimatedPrice) {
                                     $product->price = $estimatedPrice;
                                     $product->currency_unit_id = $currencyUnit;
                                 } else {
                                     $product->price = null;
                                     $product->currency_unit_id = null;
                                 }
                             }
                             if ($product->price == null || $product->currency_unit_id == null) {
                                 $product->is_active = false;
                             } else {
                                 $product->is_active = true;
                             }
                             $product->save();
                             foreach ($singleMedia->tags as $tag) {
                                 $relatedCategories = Category::where('keywords', 'LIKE', '%' . mb_strtolower($tag, 'UTF-8') . '%')->get();
                                 foreach ($relatedCategories as $relatedCategory) {
                                     if ($product->categories()->where('id', $relatedCategory->id)->first()) {
                                     } else {
                                         $product->categories()->attach($relatedCategory);
                                     }
                                 }
                             }
                             $productInstagram = new ProductsInstagram();
                             $productInstagram->product_id = $product->id;
                             $productInstagram->url = $singleMedia->link;
                             $productInstagram->id = $singleMedia->id;
                             $productInstagram->image_url = $singleMedia->images->standard_resolution->url;
                             $productInstagram->caption = $caption;
                             $productInstagram->created_on_instagram = date('Y-m-d h:i:sa', $singleMedia->created_time);
                             $productInstagram->save();
                         }
                     }
                 }
             }
         }
     }
 }