diff --git a/app/Api/V1/Requests/SameDateRangeRequest.php b/app/Api/V1/Requests/SameDateRangeRequest.php new file mode 100644 index 0000000000..6b1b005ca3 --- /dev/null +++ b/app/Api/V1/Requests/SameDateRangeRequest.php @@ -0,0 +1,51 @@ +. + */ + +declare(strict_types=1); + +namespace FireflyIII\Api\V1\Requests; + +use Illuminate\Contracts\Validation\Validator; + +class SameDateRangeRequest extends ApiRequest +{ + public function rules(): array + { + return [ + 'start' => sprintf('date|after:1970-01-02|before:2038-01-17|before_or_equal:end|required_with:end|%s', $this->required), + 'end' => sprintf('date|after:1970-01-02|before:2038-01-17|after_or_equal:start|required_with:start|%s', $this->required), + ]; + } + + public function withValidator(Validator $validator): void + { + $validator->after(function (Validator $validator): void { + if (count($validator->failed()) > 0) { + return; + } + $start = $this->getCarbonDate('start')?->startOfDay(); + $end = $this->getCarbonDate('end')?->endOfDay(); + + $this->attributes->set('start', $start); + $this->attributes->set('end', $end); + }); + } +} diff --git a/app/Api/V1/Requests/Summary/BasicRequest.php b/app/Api/V1/Requests/Summary/BasicRequest.php index 6e85cbd0f5..074ed4bd9a 100644 --- a/app/Api/V1/Requests/Summary/BasicRequest.php +++ b/app/Api/V1/Requests/Summary/BasicRequest.php @@ -25,13 +25,13 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests\Summary; use FireflyIII\Api\V1\Requests\AggregateFormRequest; -use FireflyIII\Api\V1\Requests\DateRangeRequest; +use FireflyIII\Api\V1\Requests\SameDateRangeRequest; use FireflyIII\Api\V1\Requests\Models\TransactionCurrency\CurrencyCodeRequest; class BasicRequest extends AggregateFormRequest { protected function getRequests(): array { - return [[DateRangeRequest::class, 'required'], CurrencyCodeRequest::class]; + return [[SameDateRangeRequest::class, 'required'], CurrencyCodeRequest::class]; } }