/** * Страница товара. * * @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; }); }
/** * Поиск товара в БД по ид или переадресация на 404 * * @param $id * @return \Illuminate\Support\Collection|null|static */ private function findProduct($id) { // Ищем товар $product = ProductSfs::find($id); if (empty($product)) { abort(404); } return $product; }