. */ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests; use Carbon\Carbon; use FireflyIII\Support\Request\ChecksLogin; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Foundation\Http\FormRequest; /** * Class RuleTestRequest */ class RuleTestRequest extends FormRequest { use ConvertsDataTypes, ChecksLogin; /** * @return array */ public function getTestParameters(): array { return [ 'page' => $this->getPage(), 'start' => $this->getDate('start'), 'end' => $this->getDate('end'), 'accounts' => $this->getAccounts(), ]; } /** * @return int */ private function getPage(): int { return 0 === (int) $this->query('page') ? 1 : (int) $this->query('page'); } /** * @param string $field * * @return Carbon|null */ private function getDate(string $field): ?Carbon { return null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', $this->query($field)); } /** * @return string */ private function getAccounts(): string { return (string) $this->query('accounts'); } /** * @return array */ public function rules(): array { return [ 'start' => 'date', 'end' => 'date|after:start', 'accounts' => '', 'accounts.*' => 'required|exists:accounts,id|belongsToUser:accounts', ]; } }