App\Http\Controllers\ProductsController::show PHP Method

show() public method

Display the specified resource.
public show ( integer $id ) : Response
$id integer
return Response
    public function show($id)
    {
        $user = \Auth::user();
        $allWishes = '';
        $panel = ['center' => ['width' => '12']];
        if ($user) {
            $allWishes = Order::ofType('wishlist')->where('user_id', $user->id)->where('description', '<>', '')->orderBy('id', 'desc')->take(5)->get();
        }
        $product = Product::select(['id', 'category_id', 'user_id', 'name', 'description', 'price', 'stock', 'features', 'condition', 'rate_val', 'rate_count', 'low_stock', 'status', 'type', 'tags', 'products_group', 'brand'])->with(['group' => function ($query) {
            $query->select(['id', 'products_group', 'features']);
        }])->with('categories')->find($id);
        if ($product) {
            //if there is a user in session, the admin menu will be shown
            if ($user && $user->id == $product->user_id) {
                $panel = ['left' => ['width' => '2'], 'center' => ['width' => '10']];
            }
            //retrieving products features
            $features = ProductDetail::all()->toArray();
            //increasing product counters, in order to have a suggestion orden
            $this->setCounters($product, ['view_counts' => trans('globals.product_value_counters.view')], 'viewed');
            //saving the product tags into users preferences
            if (trim($product->tags) != '') {
                UserController::setPreferences('product_viewed', explode(',', $product->tags));
            }
            //receiving products user reviews & comments
            $reviews = OrderDetail::where('product_id', $product->id)->whereNotNull('rate_comment')->select('rate', 'rate_comment', 'updated_at')->orderBy('updated_at', 'desc')->take(5)->get();
            //If it is a free product, we got to retrieve its package information
            if ($product->type == 'freeproduct') {
                $order = OrderDetail::where('product_id', $product->id)->first();
                $freeproduct = FreeProductOrder::where('order_id', $order->order_id)->first();
            }
            $freeproductId = isset($freeproduct) ? $freeproduct->freeproduct_id : 0;
            //products suggestions control
            //saving product id into suggest-listed, in order to exclude products from suggestions type "view"
            Session::push('suggest-listed', $product->id);
            $suggestions = $this->getSuggestions(['preferences_key' => $product->id, 'limit' => 4]);
            Session::forget('suggest-listed');
            //retrieving products groups of the product shown
            if (count($product->group)) {
                $featuresHelper = new featuresHelper();
                $product->group = $featuresHelper->group($product->group);
            }
            return view('products.detailProd', compact('product', 'panel', 'allWishes', 'reviews', 'freeproductId', 'features', 'suggestions'));
        } else {
            return redirect(route('products'));
        }
    }