1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- namespace App\Http\Controllers\Front;
- use App\Shop\Products\Product;
- use App\Shop\Products\Repositories\Interfaces\ProductRepositoryInterface;
- use App\Http\Controllers\Controller;
- use App\Shop\Products\Transformations\ProductTransformable;
- class ProductController extends Controller
- {
- use ProductTransformable;
- /**
- * @var ProductRepositoryInterface
- */
- private $productRepo;
- /**
- * ProductController constructor.
- * @param ProductRepositoryInterface $productRepository
- */
- public function __construct(ProductRepositoryInterface $productRepository)
- {
- $this->productRepo = $productRepository;
- }
- /**
- * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
- */
- public function search()
- {
- if (request()->has('q') && request()->input('q') != '') {
- $list = $this->productRepo->searchProduct(request()->input('q'));
- } else {
- $list = $this->productRepo->listProducts();
- }
- $products = $list->where('status', 1)->map(function (Product $item) {
- return $this->transformProduct($item);
- });
- return view('front.products.product-search', [
- 'products' => $this->productRepo->paginateArrayResults($products->all(), 10)
- ]);
- }
- /**
- * Get the product
- *
- * @param string $slug
- * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
- */
- public function show(string $slug)
- {
- $product = $this->productRepo->findProductBySlug(['slug' => $slug]);
- $images = $product->images()->get();
- $category = $product->categories()->first();
- $productAttributes = $product->attributes;
- return view('front.products.product', compact(
- 'product',
- 'images',
- 'productAttributes',
- 'category'
- ));
- }
- }
|