. */ declare(strict_types=1); namespace FireflyIII\TransactionRules\Actions; use FireflyIII\Events\TriggeredAuditLog; use FireflyIII\Models\RuleAction; use FireflyIII\Models\TransactionJournal; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Support\Facades\Log; class MoveNotesToDescription implements ActionInterface { use ConvertsDataTypes; private RuleAction $action; /** * TriggerInterface constructor. * * @codeCoverageIgnore * * @param RuleAction $action */ public function __construct(RuleAction $action) { $this->action = $action; } /** * @inheritDoc */ public function actOnArray(array $journal): bool { /** @var TransactionJournal $object */ $object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']); if (null === $object) { Log::error(sprintf('No journal #%d belongs to user #%d.', $journal['transaction_journal_id'], $journal['user_id'])); return false; } $note = $object->notes()->first(); if (null === $note) { // nothing to move, return null return false; } if ('' === $note->text) { // nothing to move, return null $note->delete(); return false; } $before = $object->description; $beforeNote = $note->text; $object->description = (string) $this->clearString($note->text, false); $object->save(); $note->delete(); event(new TriggeredAuditLog($this->action->rule, $object, 'update_description', $before, $object->description)); event(new TriggeredAuditLog($this->action->rule, $object, 'clear_notes', $beforeNote, null)); return true; } }