. */ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests\Models\Attachment; use FireflyIII\Rules\IsValidAttachmentModel; use FireflyIII\Support\Request\ChecksLogin; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Foundation\Http\FormRequest; /** * Class StoreRequest * * @codeCoverageIgnore */ class StoreRequest extends FormRequest { use ConvertsDataTypes, ChecksLogin; /** * Get all data from the request. * * @return array */ public function getAll(): array { return [ 'filename' => $this->convertString('filename'), 'title' => $this->convertString('title'), 'notes' => $this->stringWithNewlines('notes'), 'attachable_type' => $this->convertString('attachable_type'), 'attachable_id' => $this->convertInteger('attachable_id'), ]; } /** * The rules that the incoming request must be matched against. * * @return array */ public function rules(): array { $models = config('firefly.valid_attachment_models'); $models = array_map( static function (string $className) { return str_replace('FireflyIII\\Models\\', '', $className); }, $models ); $models = implode(',', $models); $model = $this->convertString('attachable_type'); return [ 'filename' => 'required|between:1,255', 'title' => 'between:1,255', 'notes' => 'between:1,65000', 'attachable_type' => sprintf('required|in:%s', $models), 'attachable_id' => ['required', 'numeric', new IsValidAttachmentModel($model)], ]; } }