App\Http\Controllers\OrdersController::showDetailsProductCart PHP Method

showDetailsProductCart() public method

@param $id int|string id product
public showDetailsProductCart ( $id, Illuminate\Http\Request $request ) : App\Http\Controllers\json
$request Illuminate\Http\Request Request object to validate the type of request @return json
return App\Http\Controllers\json
    public function showDetailsProductCart($id, Request $request)
    {
        if (!$request->wantsJson()) {
            return json_encode(['message' => trans('globals.error_not_available')]);
        }
        $cart = Order::ofType('cart')->select('id')->where('user_id', \Auth::user()->id)->first();
        if (!$cart) {
            return json_encode(['message' => trans('globals.error_not_available')]);
        }
        $product = Product::find($id);
        if (!$product) {
            return json_encode(['message' => trans('globals.error_not_available')]);
        }
        $order = OrderDetail::where('order_id', $cart->id)->where('product_id', $product->id)->first();
        if (!$order) {
            return json_encode(['message' => trans('globals.error_not_available')]);
        }
        $seller = User::select('nickname')->find($product->user_id);
        $product->seller = $seller->nickname;
        $return = ['product' => $product, 'order' => $order];
        if ($product->type != 'item') {
            $virtual = VirtualProduct::where('product_id', $product->id)->first();
            $arrayV = ['type' => $product->type, 'title' => trans('product.globals.digital_item') . ' ' . trans('product.' . $product->type)];
            switch ($product->type) {
                case 'key':
                    $virtualOrder = VirtualProductOrder::where('virtual_product_id', $virtual->id)->where('order_id', $order->order_id)->where('status', 1)->get();
                    $email = [];
                    foreach ($virtualOrder as $row) {
                        if (isset($email[$row->email])) {
                            $email[$row->email]['num']++;
                        } else {
                            $email[$row->email]['num'] = 1;
                            $email[$row->email]['email'] = $row->email;
                        }
                    }
                    $arrayV['data'] = $email;
                    break;
            }
            $return['virtual'] = $arrayV;
        }
        return json_encode($return);
    }