. */ declare(strict_types=1); namespace FireflyIII\TransactionRules\Actions; use DB; use FireflyIII\Events\TriggeredAuditLog; use FireflyIII\Models\RuleAction; use FireflyIII\Models\TransactionJournal; use FireflyIII\TransactionRules\Expressions\ActionExpressionEvaluator; /** * Class AppendDescription. */ class AppendDescription implements ActionInterface { private RuleAction $action; private ActionExpressionEvaluator $evaluator; /** * TriggerInterface constructor. * * @param RuleAction $action */ public function __construct(RuleAction $action, ActionExpressionEvaluator $evaluator) { $this->action = $action; $this->evaluator = $evaluator; } /** * @inheritDoc */ public function actOnArray(array $journal): bool { $actionValue = $this->evaluator->evaluate($journal); $description = sprintf('%s%s', $journal['description'], $actionValue); DB::table('transaction_journals')->where('id', $journal['transaction_journal_id'])->limit(1)->update(['description' => $description]); // event for audit log entry /** @var TransactionJournal $object */ $object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']); event(new TriggeredAuditLog($this->action->rule, $object, 'update_description', $journal['description'], $description)); return true; } }