public function place(Order $orderModel, Category $cat, CheckoutService $checkoutService) { if (!Session::has('cart')) { return false; } # bring all categories $categories = $cat->all(); $cart = Session::get('cart'); if ($cart->getTotal() > 0) { $checkoutBuilder = $checkoutService->createCheckoutBuilder(); # create order $order = $orderModel->create(['user_id' => Auth::user()->id, 'total' => $cart->getTotal()]); # insert items into this order foreach ($cart->all() as $id => $item) { $checkoutBuilder->addItem(new Item($item['num'], $item['name'], $item['price'])); $order->items()->create(['product_id' => $id, 'price' => $item['price'], 'quantity' => $item['num']]); } # clear cart $cart->clear(); # fire event (email) only if everything worked event(new CheckoutEvent(Auth::user(), $order)); $checkout = $checkoutBuilder->getCheckout(); $response = $checkoutService->checkout($checkout); # PagSeguro site redirect return redirect($response->getRedirectionUrl()); //return view('store.checkout', compact('order', 'categories')); } return view('store.checkout', ['order' => null, 'categories' => $categories]); }
public function storeStatus(Requests\OrderRequest $request, Order $ord, $id) { # get request $input = $request->all(); # find order by ID $order = $ord->find($id); # update order status $order->update($input); return redirect()->route('account.orders'); }