. */ declare(strict_types=1); namespace FireflyIII\Rules; use Closure; use FireflyIII\Models\TransactionJournal; use Illuminate\Contracts\Validation\ValidationRule; /** * Class ValidJournals * */ class ValidJournals implements ValidationRule { /** * @param string $attribute * @param mixed $value * @param Closure $fail * * @return void */ public function validate(string $attribute, mixed $value, Closure $fail): void { app('log')->debug('In ValidJournals::passes'); if (!is_array($value)) { return; } $userId = auth()->user()->id; foreach ($value as $journalId) { $count = TransactionJournal::where('id', $journalId)->where('user_id', $userId)->count(); if (0 === $count) { app('log')->debug(sprintf('Count for transaction #%d and user #%d is zero! Return FALSE', $journalId, $userId)); $fail('validation.invalid_selection')->translate(); return; } } app('log')->debug('Return true!'); } }