ldc-boutique-cnc-sable/app/Http/Controllers/Fo/Customers/OrderController.php

59 lines
1.7 KiB
PHP
Raw Permalink Normal View History

2026-06-14 21:32:07 +02:00
<?php
declare(strict_types=1);
namespace App\Http\Controllers\Fo\Customers;
use App\Contracts\Executor;
2026-06-14 21:32:07 +02:00
use App\Http\Controllers\Controller;
use App\Lib\Helpers\RequestHelper;
2026-06-14 21:32:07 +02:00
use App\Models\Order;
use App\Queries\Orders\GetFoCustomerOrderDetailQuery;
use App\Queries\Orders\GetFoCustomerOrderDetailQueryInput;
use App\Queries\Orders\GetFoCustomerPaginatedOrdersQuery;
use App\Queries\Orders\GetFoCustomerPaginatedOrdersQueryInput;
2026-06-14 21:32:07 +02:00
use Illuminate\Contracts\View\View;
use Illuminate\Http\Request;
use Infrastructure\Adapters\Services\AppCustomerAuthService;
class OrderController extends Controller
{
public function __construct(
private readonly AppCustomerAuthService $authService,
private readonly Executor $executor,
2026-06-14 21:32:07 +02:00
) {
}
public function index(Request $request, GetFoCustomerPaginatedOrdersQuery $query): View
2026-06-14 21:32:07 +02:00
{
$this->authorize('viewAnyOwn', Order::class);
$customer = $this->authService->getCustomerAsMandatory();
$orders = $this->executor->execute(
$query,
new GetFoCustomerPaginatedOrdersQueryInput(
customer: $customer,
pagination: RequestHelper::pagination($request),
),
2026-06-14 21:32:07 +02:00
);
return view('fo.customer.orders.index', compact('orders'));
2026-06-14 21:32:07 +02:00
}
public function show(Order $order, GetFoCustomerOrderDetailQuery $query): View
2026-06-14 21:32:07 +02:00
{
$this->authorize('viewOwn', $order);
$output = $this->executor->execute(
$query,
new GetFoCustomerOrderDetailQueryInput($order),
);
2026-06-14 21:32:07 +02:00
return view('fo.customer.orders.show', [
'order' => $output->order,
'mapUrl' => $output->mapUrl,
]);
2026-06-14 21:32:07 +02:00
}
}