ldc-boutique-cnc-sable/app/Http/Controllers/Fo/Ajax/BasketController.php

67 lines
1.6 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\Ajax;
use App\Actions\Basket\AddToBasket;
use App\Actions\Basket\EmptyBasket;
use App\Actions\Basket\RemoveFromBasket;
use App\Contracts\ActionInputEmpty;
use App\Contracts\Executor;
use App\Contracts\QueryInputEmpty;
2026-06-14 21:32:07 +02:00
use App\Http\Controllers\Controller;
use App\Http\Requests\Basket\AddBasketRequest;
use App\Http\Requests\Basket\RemoveBasketRequest;
use App\Http\Resources\Fo\Ajax\BasketResource;
use App\Queries\Basket\GetBasketQuery;
2026-06-14 21:32:07 +02:00
use Illuminate\Http\JsonResponse;
class BasketController extends Controller
{
public function __construct(
private readonly Executor $executor,
2026-06-14 21:32:07 +02:00
) {
}
public function get(GetBasketQuery $query): BasketResource
2026-06-14 21:32:07 +02:00
{
$basket = $this->executor->execute(
$query,
new QueryInputEmpty()
);
return new BasketResource($basket);
2026-06-14 21:32:07 +02:00
}
public function add(AddBasketRequest $request, AddToBasket $action): JsonResponse
2026-06-14 21:32:07 +02:00
{
$this->executor->execute(
$action,
$request->toAddToBasketInput()
2026-06-14 21:32:07 +02:00
);
return response()->json();
}
public function remove(RemoveBasketRequest $request, RemoveFromBasket $action): JsonResponse
2026-06-14 21:32:07 +02:00
{
$this->executor->execute(
$action,
$request->toRemoveFromBasketInput()
);
2026-06-14 21:32:07 +02:00
return response()->json();
}
public function empty(EmptyBasket $action): JsonResponse
2026-06-14 21:32:07 +02:00
{
$this->executor->execute(
$action,
new ActionInputEmpty()
);
2026-06-14 21:32:07 +02:00
return response()->json();
}
}