. */ namespace FireflyIII\TransactionRules\Actions; use FireflyIII\Events\TriggeredAuditLog; use FireflyIII\Models\Note; use FireflyIII\Models\RuleAction; use FireflyIII\Models\TransactionJournal; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Support\Facades\Log; /** * Class AppendNotesToDescription */ class AppendNotesToDescription implements ActionInterface { use ConvertsDataTypes; private RuleAction $action; /** * TriggerInterface constructor. * * @param RuleAction $action */ public function __construct(RuleAction $action) { $this->action = $action; } /** * @inheritDoc */ public function actOnArray(array $journal): bool { Log::debug('Now in AppendNotesToDescription'); /** @var TransactionJournal $journal */ $journal = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']); if (null === $journal) { Log::error(sprintf('No journal #%d belongs to user #%d.', $journal['transaction_journal_id'], $journal['user_id'])); return false; } $note = $journal->notes()->first(); if (null === $note) { Log::debug('Journal has no notes.'); $note = new Note; $note->noteable()->associate($journal); $note->text = ''; } // only append if there is something to append if ('' !== $note->text) { $before = $journal->description; $journal->description = trim(sprintf("%s %s", $journal->description, (string) $this->clearString($note->text, false))); $journal->save(); Log::debug(sprintf('Journal description is updated to "%s".', $journal->description)); event(new TriggeredAuditLog($this->action->rule, $journal, 'update_description', $before, $journal->description)); return true; } return false; } }