. */ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests; use FireflyIII\Rules\IsValidAttachmentModel; use FireflyIII\Support\Request\ChecksLogin; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Foundation\Http\FormRequest; /** * Class AttachmentStoreRequest * * @codeCoverageIgnore */ class AttachmentStoreRequest extends FormRequest { use ConvertsDataTypes, ChecksLogin; /** * Get all data from the request. * * @return array */ public function getAll(): array { return [ 'filename' => $this->string('filename'), 'title' => $this->string('title'), 'notes' => $this->nlString('notes'), 'model' => $this->string('attachable_type'), 'model_id' => $this->integer('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->string('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)], ]; } }