60 lines
1.4 KiB
PHP
60 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Controllers\Fo\Ajax;
|
|
|
|
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 Domain\Services\BasketService;
|
|
use Illuminate\Http\JsonResponse;
|
|
|
|
class BasketController extends Controller
|
|
{
|
|
public function __construct(
|
|
private readonly BasketService $basketService
|
|
) {
|
|
}
|
|
|
|
public function get(): BasketResource
|
|
{
|
|
return new BasketResource($this->basketService->getBasket());
|
|
}
|
|
|
|
public function add(AddBasketRequest $request): JsonResponse
|
|
{
|
|
$this->basketService->add(
|
|
$request->getProductId(),
|
|
$request->integer('qty')
|
|
);
|
|
|
|
return response()->json();
|
|
}
|
|
|
|
public function remove(RemoveBasketRequest $request): JsonResponse
|
|
{
|
|
$qty = $request->integer('qty');
|
|
|
|
if ($qty >= 1) {
|
|
$this->basketService->remove(
|
|
$request->getProductId(),
|
|
$qty
|
|
);
|
|
} else {
|
|
$this->basketService->removeLine(
|
|
$request->getProductId()
|
|
);
|
|
}
|
|
|
|
return response()->json();
|
|
}
|
|
|
|
public function empty(): JsonResponse
|
|
{
|
|
$this->basketService->empty();
|
|
|
|
return response()->json();
|
|
}
|
|
}
|