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.
53 lines
1.2 KiB
PHP
53 lines
1.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Requests\Basket;
|
|
|
|
use App\Actions\Basket\RemoveProductFromBasketInput;
|
|
use App\Actions\Basket\RemoveQuantityFromBasketInput;
|
|
use Domain\Models\ValueObjects\Entities\ProductId;
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
use Ramsey\Uuid\Uuid;
|
|
|
|
class RemoveBasketRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function toRemoveFromBasketInput(): RemoveQuantityFromBasketInput | RemoveProductFromBasketInput
|
|
{
|
|
$qty = $this->integer('qty');
|
|
|
|
if ($qty >= 1) {
|
|
return new RemoveQuantityFromBasketInput(
|
|
$this->getProductId(),
|
|
$qty
|
|
);
|
|
}
|
|
|
|
return new RemoveProductFromBasketInput(
|
|
$this->getProductId()
|
|
);
|
|
}
|
|
|
|
public function getProductId(): ProductId
|
|
{
|
|
return new ProductId(
|
|
Uuid::fromString(
|
|
$this->string('rowId')->value()
|
|
)
|
|
);
|
|
}
|
|
|
|
/** @return array<string,mixed> */
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'rowId' => ['required', 'string', 'uuid'],
|
|
'qty' => ['sometimes', 'integer', 'gt:0'],
|
|
];
|
|
}
|
|
}
|