. */ declare(strict_types=1); namespace FireflyIII\Api\V2\Request\Chart; use FireflyIII\Support\Request\ChecksLogin; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Validator; /** * Class BalanceChartRequest */ class BalanceChartRequest extends FormRequest { use ConvertsDataTypes; use ChecksLogin; /** * Get all data from the request. * * @return array */ public function getAll(): array { return [ 'accounts' => $this->getAccountList(), 'period' => $this->convertString('period'), ]; } /** * The rules that the incoming request must be matched against. * * @return array */ public function rules(): array { return [ 'start' => 'required|date|after:1900-01-01|before:2099-12-31', 'end' => 'required|date|after_or_equal:start|before:2099-12-31|after:1900-01-01', 'accounts.*' => 'required|exists:accounts,id', 'period' => sprintf('required|in:%s', join(',', config('firefly.valid_view_ranges'))), ]; } /** * @param Validator $validator * * @return void */ public function withValidator(Validator $validator): void { $validator->after( function (Validator $validator) { // validate transaction query data. $data = $validator->getData(); if (!array_key_exists('accounts', $data)) { $validator->errors()->add('accounts', trans('validation.filled', ['attribute' => 'accounts'])); return; } if (!is_array($data['accounts'])) { $validator->errors()->add('accounts', trans('validation.filled', ['attribute' => 'accounts'])); } } ); } }