diff --git a/app/Api/V1/Controllers/CategoryController.php b/app/Api/V1/Controllers/CategoryController.php index e461ff3beb..5225fca28b 100644 --- a/app/Api/V1/Controllers/CategoryController.php +++ b/app/Api/V1/Controllers/CategoryController.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers; -use FireflyIII\Api\V1\Requests\CategoryRequest; +use FireflyIII\Api\V1\Requests\CategoryStoreRequest; +use FireflyIII\Api\V1\Requests\CategoryUpdateRequest; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Models\Category; @@ -175,12 +176,12 @@ class CategoryController extends Controller /** * Store new category. * - * @param CategoryRequest $request + * @param CategoryStoreRequest $request * * @return JsonResponse * @throws FireflyException */ - public function store(CategoryRequest $request): JsonResponse + public function store(CategoryStoreRequest $request): JsonResponse { $category = $this->repository->store($request->getAll()); $manager = $this->getManager(); @@ -253,12 +254,12 @@ class CategoryController extends Controller /** * Update the category. * - * @param CategoryRequest $request + * @param CategoryUpdateRequest $request * @param Category $category * * @return JsonResponse */ - public function update(CategoryRequest $request, Category $category): JsonResponse + public function update(CategoryUpdateRequest $request, Category $category): JsonResponse { $data = $request->getAll(); $category = $this->repository->update($category, $data); diff --git a/app/Api/V1/Requests/CategoryRequest.php b/app/Api/V1/Requests/CategoryStoreRequest.php similarity index 60% rename from app/Api/V1/Requests/CategoryRequest.php rename to app/Api/V1/Requests/CategoryStoreRequest.php index 6360ddc152..3edc6c80c0 100644 --- a/app/Api/V1/Requests/CategoryRequest.php +++ b/app/Api/V1/Requests/CategoryStoreRequest.php @@ -1,6 +1,6 @@ check(); - } + use ConvertsDataTypes, ChecksLogin; /** * Get all data from the request. @@ -67,20 +56,8 @@ class CategoryRequest extends FormRequest */ public function rules(): array { - $rules = [ - 'name' => 'required|between:1,100|uniqueObjectForUser:categories,name', + return [ + 'name' => 'required|between:1,100|uniqueObjectForUser:categories,name' ]; - switch ($this->method()) { - default: - break; - case 'PUT': - case 'PATCH': - /** @var Category $category */ - $category = $this->route()->parameter('category'); - $rules['name'] = sprintf('required|between:1,100|uniqueObjectForUser:categories,name,%d', $category->id); - break; - } - - return $rules; } } diff --git a/app/Rules/ZeroOrMore.php b/app/Api/V1/Requests/CategoryUpdateRequest.php similarity index 53% rename from app/Rules/ZeroOrMore.php rename to app/Api/V1/Requests/CategoryUpdateRequest.php index d1bd6639c5..45b7b3ca13 100644 --- a/app/Rules/ZeroOrMore.php +++ b/app/Api/V1/Requests/CategoryUpdateRequest.php @@ -1,7 +1,6 @@ $this->string('name'), + ]; } /** - * Determine if the validation rule passes. + * The rules that the incoming request must be matched against. * - * @param string $attribute - * @param mixed $value - * - * @return bool + * @return array */ - public function passes($attribute, $value): bool + public function rules(): array { - $value = (string)$value; - if ('' === $value) { - return true; - } - $res = bccomp('0', $value); + $category = $this->route()->parameter('category'); - return $res <= 0; + return [ + 'name' => sprintf('required|between:1,100|uniqueObjectForUser:categories,name,%d', $category->id), + ]; } } diff --git a/app/Api/V1/Requests/PiggyBankRequest.php b/app/Api/V1/Requests/PiggyBankRequest.php index 75d636e2de..7b56f166a9 100644 --- a/app/Api/V1/Requests/PiggyBankRequest.php +++ b/app/Api/V1/Requests/PiggyBankRequest.php @@ -26,7 +26,6 @@ namespace FireflyIII\Api\V1\Requests; use FireflyIII\Models\PiggyBank; use FireflyIII\Rules\IsAssetAccountId; use FireflyIII\Rules\LessThanPiggyTarget; -use FireflyIII\Rules\ZeroOrMore; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Foundation\Http\FormRequest; @@ -79,7 +78,7 @@ class PiggyBankRequest extends FormRequest { $rules = [ 'name' => 'required|between:1,255|uniquePiggyBankForUser', - 'current_amount' => ['numeric', new ZeroOrMore, 'lte:target_amount'], + 'current_amount' => ['numeric', 'gte:0', 'lte:target_amount'], 'start_date' => 'date|nullable', 'target_date' => 'date|nullable|after:start_date', 'notes' => 'max:65000', @@ -95,7 +94,7 @@ class PiggyBankRequest extends FormRequest $rules['name'] = 'between:1,255|uniquePiggyBankForUser:' . $piggyBank->id; $rules['account_id'] = ['belongsToUser:accounts', new IsAssetAccountId]; $rules['target_amount'] = 'numeric|gt:0'; - $rules['current_amount'] = ['numeric', new ZeroOrMore, new LessThanPiggyTarget]; + $rules['current_amount'] = ['numeric', 'gte:0', new LessThanPiggyTarget]; break; } diff --git a/app/Api/V1/Requests/PiggyBankStoreRequest.php b/app/Api/V1/Requests/PiggyBankStoreRequest.php index 9cdf005d94..1abcb840d9 100644 --- a/app/Api/V1/Requests/PiggyBankStoreRequest.php +++ b/app/Api/V1/Requests/PiggyBankStoreRequest.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests; -use FireflyIII\Rules\ZeroOrMore; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Foundation\Http\FormRequest; @@ -76,10 +75,10 @@ class PiggyBankStoreRequest extends FormRequest { return [ 'name' => 'required|between:1,255|uniquePiggyBankForUser', - 'current_amount' => ['numeric', new ZeroOrMore, 'lte:target_amount'], + 'current_amount' => ['numeric', 'gte:0', 'lte:target_amount'], 'account_id' => 'required|numeric|belongsToUser:accounts,id', 'object_group_id' => 'numeric|belongsToUser:object_groups,id', - 'target_amount' => ['numeric', new ZeroOrMore, 'lte:target_amount', 'required'], + 'target_amount' => ['numeric', 'gte:0', 'lte:target_amount', 'required'], 'start_date' => 'date|nullable', 'target_date' => 'date|nullable|after:start_date', 'notes' => 'max:65000',