. */ declare(strict_types=1); namespace FireflyIII\Rules; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use Illuminate\Contracts\Validation\Rule; /** * Class IsValidAttachmentModel */ class IsValidAttachmentModel implements Rule { /** @var string */ private $model; /** * IsValidAttachmentModel constructor. * * @param string $model */ public function __construct(string $model) { $this->model = $model; } /** * Get the validation error message. * * @return string */ public function message(): string { return trans('validation.model_id_invalid'); } /** * Determine if the validation rule passes. * * @param string $attribute * @param mixed $value * * @return bool * @throws FireflyException */ public function passes($attribute, $value): bool { if (!auth()->check()) { return false; } $user = auth()->user(); switch ($this->model) { default: throw new FireflyException(sprintf('Model "%s" cannot be validated.', $this->model)); case TransactionJournal::class: /** @var JournalRepositoryInterface $repository */ $repository = app(JournalRepositoryInterface::class); $repository->setUser($user); $result = $repository->findNull((int)$value); return null !== $result; break; } } }