/** * @param Request $request * @return mixed */ public function finish(Request $request) { /** * @var $cart Cart */ $cart = Session::get('cart'); $order_id = null; /** * @var $last_order Orders */ $last_order = Orders::whereNotNull('id')->orderBy('updated_at', 'desc')->first(); if ($last_order == Null) { $order_id = 1; } else { $order_id = $last_order->order_id + 1; } $sum = 0; foreach ($cart->getCart() as $product_id => $quantity) { $product = Products::where('id', $product_id)->first(); if ($product->quantity < $quantity) { return redirect('/cart/index')->withErrors('We are sorry, the product ' . $product->name . ' has only ' . $product->quantity . ' examples'); } else { $product->quantity -= $quantity; if ($product->quantity == 0) { $product->active = 0; } $product->save(); } $sum += $product->price * $quantity; $order = new Orders(); $order->order_id = $order_id; $order->product_id = $product_id; $order->quantity = $quantity; $order->author_id = $request->user()->id; $order->sum = $sum; $order->save(); Session::forget('cart'); Session::put('cart', new Cart()); } return redirect('/')->withMessage('Order processed successfully'); }