. */ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests\Models\Rule; use Carbon\Carbon; use FireflyIII\Support\Request\ChecksLogin; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Foundation\Http\FormRequest; /** * Class TestRequest */ class TestRequest extends FormRequest { use ChecksLogin; use ConvertsDataTypes; public function getTestParameters(): array { return [ 'page' => $this->getPage(), 'start' => $this->getDate('start'), 'end' => $this->getDate('end'), 'accounts' => $this->getAccounts(), ]; } private function getPage(): int { return 0 === (int) $this->query('page') ? 1 : (int) $this->query('page'); } private function getDate(string $field): ?Carbon { $value = $this->query($field); if (is_array($value)) { return null; } $value = (string) $value; return null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10)); } private function getAccounts(): array { return $this->get('accounts') ?? []; } public function rules(): array { return [ 'start' => 'date|after:1970-01-02|before:2038-01-17', 'end' => 'date|after_or_equal:start|after:1970-01-02|before:2038-01-17', 'accounts' => '', 'accounts.*' => 'required|exists:accounts,id|belongsToUser:accounts', ]; } }