. */ 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 UpdateRequest * * @codeCoverageIgnore */ class UpdateRequest extends FormRequest { use ConvertsDataTypes, ChecksLogin; /** * Get all data from the request. * * @return array */ public function getAll(): array { $fields = [ 'filename' => ['filename', 'convertString'], 'title' => ['title', 'convertString'], 'notes' => ['notes', 'stringWithNewlines'], 'attachable_type' => ['attachable_type', 'convertString'], 'attachable_id' => ['attachable_id', 'convertInteger'], ]; return $this->getAllData($fields); } /** * 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' => 'between:1,255', 'title' => 'between:1,255', 'notes' => 'between:1,65000', 'attachable_type' => sprintf('in:%s', $models), 'attachable_id' => ['numeric', new IsValidAttachmentModel($model)], ]; } }