<?php namespace App\Http\Controllers; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use App\Http\Requests\CheckoutAddEdit; use App\Models\{Checkout,Invoice}; class CheckoutController extends Controller { /** * Update a checkout details * * @param CheckoutAddEdit $request * @param Checkout $o * @return RedirectResponse */ public function addedit(CheckoutAddEdit $request,Checkout $o): RedirectResponse { foreach ($request->validated() as $key => $item) $o->{$key} = $item; $o->active = (bool)$request->validated('active',FALSE); try { $o->save(); } catch (\Exception $e) { return redirect() ->back() ->withErrors($e->getMessage())->withInput(); } return $o->wasRecentlyCreated ? redirect() ->to('a/checkout/'.$o->id) ->with('success','Checkout added') : redirect() ->back() ->with('success','Checkout saved'); } /** * Add an invoice to the cart * * @param Request $request * @param Invoice $o * @return \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Foundation\Application * @note The route validates that the user can see the invoice */ public function cart_invoice(Request $request,Invoice $o) { $request->session()->put('invoice.cart.'.$o->id,$o->id); return view('theme.backend.adminlte.checkout.cart'); } /** * Remove an item from the cart * * @param Request $request * @return string */ public function cart_remove(Request $request): string { if ($id=$request->post('id')) { $cart = $request->session()->pull('invoice.cart'); unset($cart[$id]); $request->session()->put('invoice.cart',$cart); } return ''; } public function fee(Request $request): float { if ((! $request->post('checkout_id') || (! $request->post('total')))) return 0; $co = Checkout::findOrFail($request->post('checkout_id')); return $co->fee($request->post('total')); } public function pay() { // @todo Currently sending all payments to paypal return redirect() ->action([PaypalController::class,'authorise']); } }