This commit introduces new actions for adding, removing, and emptying items in the basket, along with their corresponding input classes. It also updates the BasketController to utilize these new actions, enhancing the basket management functionality.
66 lines
1.6 KiB
PHP
66 lines
1.6 KiB
PHP
<?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;
|
|
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;
|
|
use Illuminate\Http\JsonResponse;
|
|
|
|
class BasketController extends Controller
|
|
{
|
|
public function __construct(
|
|
private readonly Executor $executor,
|
|
) {
|
|
}
|
|
|
|
public function get(GetBasketQuery $query): BasketResource
|
|
{
|
|
$basket = $this->executor->execute(
|
|
$query,
|
|
new QueryInputEmpty()
|
|
);
|
|
|
|
return new BasketResource($basket);
|
|
}
|
|
|
|
public function add(AddBasketRequest $request, AddToBasket $action): JsonResponse
|
|
{
|
|
$this->executor->execute(
|
|
$action,
|
|
$request->toAddToBasketInput()
|
|
);
|
|
|
|
return response()->json();
|
|
}
|
|
|
|
public function remove(RemoveBasketRequest $request, RemoveFromBasket $action): JsonResponse
|
|
{
|
|
$this->executor->execute(
|
|
$action,
|
|
$request->toRemoveFromBasketInput()
|
|
);
|
|
|
|
return response()->json();
|
|
}
|
|
|
|
public function empty(EmptyBasket $action): JsonResponse
|
|
{
|
|
$this->executor->execute(
|
|
$action,
|
|
new ActionInputEmpty()
|
|
);
|
|
|
|
return response()->json();
|
|
}
|
|
}
|