first upload all files

This commit is contained in:
NW
2023-06-11 13:14:03 +01:00
parent f14dbc52b5
commit c08b36d1b6
1705 changed files with 106852 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
<?php
namespace Modules\Checkout\Http\Controllers;
use Exception;
use Modules\Order\Entities\Order;
use Modules\Payment\Facades\Gateway;
use Modules\Checkout\Events\OrderPlaced;
use Modules\Checkout\Services\OrderService;
class CheckoutCompleteController
{
/**
* Store a newly created resource in storage.
*
* @param int $orderId
* @param \Modules\Checkout\Services\OrderService $orderService
* @return \Illuminate\Http\Response
*/
public function store($orderId, OrderService $orderService)
{
$order = Order::findOrFail($orderId);
$gateway = Gateway::get(request('paymentMethod'));
try {
$response = $gateway->complete($order);
} catch (Exception $e) {
$orderService->delete($order);
return response()->json([
'message' => $e->getMessage(),
], 403);
}
$order->storeTransaction($response);
event(new OrderPlaced($order));
if (! request()->ajax()) {
return redirect()->route('checkout.complete.show');
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show()
{
$order = session('placed_order');
if (is_null($order)) {
return redirect()->route('home');
}
return view('public.checkout.complete.show', compact('order'));
}
}

View File

@@ -0,0 +1,97 @@
<?php
namespace Modules\Checkout\Http\Controllers;
use Exception;
use Modules\Support\Country;
use Modules\Cart\Facades\Cart;
use Modules\Page\Entities\Page;
use Illuminate\Routing\Controller;
use Modules\Payment\Facades\Gateway;
use Modules\User\Services\CustomerService;
use Modules\Checkout\Services\OrderService;
use Modules\Address\Entities\DefaultAddress;
use Modules\Cart\Http\Middleware\CheckCartStock;
use Modules\Order\Http\Requests\StoreOrderRequest;
use Modules\Cart\Http\Middleware\CheckCouponUsageLimit;
use Modules\Cart\Http\Middleware\RedirectIfCartIsEmpty;
class CheckoutController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware([
RedirectIfCartIsEmpty::class,
CheckCartStock::class,
CheckCouponUsageLimit::class,
]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
Gateway::all();
return view('public.checkout.create', [
'cart' => Cart::instance(),
'countries' => Country::supported(),
'gateways' => Gateway::all(),
'defaultAddress' => auth()->user()->defaultAddress ?? new DefaultAddress,
'addresses' => $this->getAddresses(),
'termsPageURL' => Page::urlForPage(setting('storefront_terms_page')),
]);
}
/**
* Get addresses for the logged in user.
*
* @return \Illuminate\Support\Collection
*/
private function getAddresses()
{
if (auth()->guest()) {
return collect();
}
return auth()->user()->addresses->keyBy('id');
}
/**
* Store a newly created resource in storage.
*
* @param \Modules\Order\Http\Requests\StoreOrderRequest $request
* @param \Modules\User\Services\CustomerService $customerService
* @param \Modules\Checkout\Services\OrderService $orderService
* @return \Illuminate\Http\Response
*/
public function store(StoreOrderRequest $request, CustomerService $customerService, OrderService $orderService)
{
if (auth()->guest() && $request->create_an_account) {
$customerService->register($request)->login();
}
$order = $orderService->create($request);
$gateway = Gateway::get($request->payment_method);
try {
$response = $gateway->purchase($order, $request);
} catch (Exception $e) {
$orderService->delete($order);
return response()->json([
'message' => $e->getMessage(),
], 403);
}
return response()->json($response);
}
}

View File

@@ -0,0 +1,39 @@
<?php
namespace Modules\Checkout\Http\Controllers;
use Illuminate\Http\Request;
use Modules\Cart\Facades\Cart;
use Modules\Order\Entities\Order;
class PaymentCanceledController
{
/**
* Store a newly created resource in storage.
*
* @param int $orderId
* @param string $paymentMethod
* @param \Modules\Checkout\Services\OrderService $orderService
* @return \Illuminate\Http\Response
*/
public function store(Request $request, $orderId)
{
Order::where('id', $orderId)->forceDelete();
Cart::restoreStock();
if ($request->ajax()) {
return response()->json(
[
'success' => true,
'message' => trans('payment::messages.payment_cancelled'),
],
200,
);
}
return redirect()
->route('checkout.create')
->with('error', trans('payment::messages.payment_cancelled'));
}
}