/** * * @return view */ private function addToCartVirtualsProduct($product, $email, $orderId, $quantity = 0) { if ($product->type != 'item') { $virtual = VirtualProduct::where('product_id', $product->id)->first(); switch ($product->type) { case 'key': for ($i = 0; $i < $quantity; $i++) { $VirtualProductOrder = new VirtualProductOrder(); $VirtualProductOrder->order_id = $orderId; $VirtualProductOrder->status = 1; $VirtualProductOrder->email = $email; $VirtualProductOrder->virtual_product_id = $virtual->id; $VirtualProductOrder->save(); } break; } } }
/** * edit the number of key registered for email. * * @param string|int id product * @param Request object to validate the type of request|action to ejecute * * @return json */ public function editKey($id, Request $request) { if (!$request->wantsJson()) { return ['message' => trans('globals.error_not_available')]; } if (!$request->has('email')) { return ['message' => trans('globals.error_not_available')]; } $cart = Order::ofType('cart')->select('id', 'status')->where('user_id', \Auth::id())->first(); if (!$cart) { return ['message' => trans('globals.error_not_available')]; } $product = Product::select('id', 'stock')->find($id); if (!$product) { return ['message' => trans('globals.error_not_available')]; } $order = OrderDetail::where('order_id', $cart->id)->where('product_id', $product->id)->first(); if (!$order) { return ['message' => trans('globals.error_not_available')]; } $virtual = VirtualProduct::select('id')->where('product_id', $product->id)->first(); if ($request->has('delete')) { $virtualOrder = VirtualProductOrder::where('virtual_product_id', $virtual->id)->where('email', $request->input('email'))->delete(); $num2 = VirtualProductOrder::where('virtual_product_id', $virtual->id)->where('status', 1)->get()->toArray(); if (!count($num2)) { $order->delete(); } else { $order->quantity = count($num2); $order->save(); } return ['all' => true]; } elseif ($request->has('decrement')) { $virtualOrder = VirtualProductOrder::where('virtual_product_id', $virtual->id)->where('email', $request->input('email'))->where('status', 1)->first(); $virtualOrder->delete(); $num2 = VirtualProductOrder::where('virtual_product_id', $virtual->id)->where('status', 1)->get()->toArray(); if (!count($num2)) { $order->delete(); } else { $order->quantity = count($num2); $order->save(); } $num = VirtualProductOrder::where('virtual_product_id', $virtual->id)->where('email', $request->input('email'))->where('status', 1)->get()->toArray(); if (count($num)) { return ['delete' => true, 'num' => count($num)]; } return ['all' => true]; } elseif ($request->has('increment')) { $num2 = VirtualProductOrder::where('virtual_product_id', $virtual->id)->where('status', 1)->get()->toArray(); if (count($num2) + 1 > $product->stock) { return ['message' => trans('product.virtualProductOrdersController_controller.no_stock')]; } $virtualOrder = new VirtualProductOrder(); $virtualOrder->order_id = $order->order_id; $virtualOrder->status = 1; $virtualOrder->email = $request->input('email'); $virtualOrder->virtual_product_id = $virtual->id; $virtualOrder->save(); $order->quantity = count($num2) + 1; $order->save(); $num = VirtualProductOrder::where('virtual_product_id', $virtual->id)->where('email', $request->input('email'))->where('status', 1)->get()->toArray(); return ['insert' => true, 'num' => count($num)]; } return ['message' => trans('globals.error_not_available')]; }