/**
  * Страница товара.
  *
  * @param $id
  * @return View
  */
 public function getShow($id)
 {
     // Получаем продукт из БД
     $data['product'] = ProductSfs::whereEnabled(TRUE)->with('category')->find($id);
     if (!empty($data['product'])) {
         // Получаем группы категорий для фирмы "Sfs" вместе с подкатегориями
         $data['group_categories'] = $this->getCategories();
         // Отображаем
         return view('marketing.companies.catalog.sfs.show', $data);
     } else {
         abort(404);
     }
 }
 /**
  * Действие для поиска и отображения результатов.
  *
  * @return Response
  */
 public function getIndex(Request $request)
 {
     // Если не задан поиск
     $q = trim($request->get('q'));
     if (!$q or strlen($q) < 3) {
         return view('marketing.search.index');
     }
     // Начинаем поиск
     // по новостям
     if (in_array('news', $this->sources)) {
         $data['news'] = News::where('title', 'LIKE', "%{$q}%")->orWhere('full_text', 'LIKE', "%{$q}%")->orderBy('created_at', 'DESC')->get();
     }
     // По прудуктам Sika
     if (in_array('products_sika', $this->sources)) {
         $data['products_sika'] = ProductSika::where(function ($query) use($q) {
             $query->where('title', 'LIKE', "%{$q}%")->orWhere('description', 'LIKE', "%{$q}%");
         })->whereEnabled(TRUE)->orderBy('created_at', 'DESC')->with(['category' => function ($q) {
             $q->whereEnabled(TRUE);
         }])->get();
     }
     // По прудуктам Sfs
     if (in_array('products_sfs', $this->sources)) {
         $data['products_sfs'] = ProductSfs::where(function ($query) use($q) {
             $query->where('title', 'LIKE', "%{$q}%")->orWhere('description_small', 'LIKE', "%{$q}%")->orWhere('description_full', 'LIKE', "%{$q}%");
         })->whereEnabled(TRUE)->orderBy('created_at', 'DESC')->with(['category' => function ($q) {
             $q->whereEnabled(TRUE);
         }])->get();
     }
     // По прудуктам Primer
     if (in_array('products_primer', $this->sources)) {
         $data['products_primer'] = ProductPrimer::where(function ($query) use($q) {
             $query->where('title', 'LIKE', "%{$q}%")->orWhere('description_small', 'LIKE', "%{$q}%")->orWhere('description_full', 'LIKE', "%{$q}%");
         })->whereEnabled(TRUE)->orderBy('created_at', 'DESC')->with(['category' => function ($q) {
             $q->whereEnabled(TRUE);
         }])->get();
     }
     // Всего результатов
     $resCount = 0;
     foreach ($data as $value) {
         $resCount += count($value);
     }
     $data['res_count'] = $resCount;
     return view('marketing.search.index', $data);
 }
 /**
  * Register any other events for your application.
  *
  * @param  \Illuminate\Contracts\Events\Dispatcher  $events
  * @return void
  */
 public function boot(DispatcherContract $events)
 {
     parent::boot($events);
     // Событие удаления продукта Sika
     ProductSika::deleting(function ($product) {
         // Удаляем изображение и техкарту
         if ($product->photo) {
             $imgPath = public_path('assets' . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR . 'products' . DIRECTORY_SEPARATOR . 'sika' . DIRECTORY_SEPARATOR . $product->photo);
             if (file_exists($imgPath)) {
                 File::delete($imgPath);
             }
         }
         if ($product->tech_cart_file) {
             $techCartPath = public_path('assets' . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR . 'products' . DIRECTORY_SEPARATOR . 'sika' . DIRECTORY_SEPARATOR . 'tech-carts' . DIRECTORY_SEPARATOR . $product->tech_cart_file);
             if (file_exists($techCartPath)) {
                 File::delete($techCartPath);
             }
         }
         return TRUE;
     });
     // Событие удаления продукта Primer
     ProductSika::deleting(function ($product) {
         // Удаляем изображение и техкарту
         if ($product->photo) {
             $imgPath = public_path('assets' . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR . 'products' . DIRECTORY_SEPARATOR . 'primer' . DIRECTORY_SEPARATOR . $product->photo);
             if (file_exists($imgPath)) {
                 File::delete($imgPath);
             }
         }
         return TRUE;
     });
     // Событие удаления продукта Sfs
     ProductSfs::deleting(function ($product) {
         // Удаляем PDF
         if ($product->file_name) {
             $filePath = public_path('assets' . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR . 'products' . DIRECTORY_SEPARATOR . 'sfs' . DIRECTORY_SEPARATOR . $product->file_name);
             if (file_exists($filePath)) {
                 File::delete($filePath);
             }
         }
         return TRUE;
     });
 }
示例#4
0
 /**
  * Поиск товара в БД по ид или переадресация на 404
  *
  * @param $id
  * @return \Illuminate\Support\Collection|null|static
  */
 private function findProduct($id)
 {
     // Ищем товар
     $product = ProductSfs::find($id);
     if (empty($product)) {
         abort(404);
     }
     return $product;
 }