| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | <?phpnamespace 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'        ));    }}
 |