. */ declare(strict_types=1); namespace FireflyIII\Services\Internal\Support; use Exception; use FireflyIII\Models\Bill; use FireflyIII\Models\Note; use FireflyIII\Models\RuleAction; use Illuminate\Support\Collection; use Log; /** * Trait BillServiceTrait * @codeCoverageIgnore */ trait BillServiceTrait { /** * @param Bill $bill * @param string $oldName * @param string $newName */ public function updateBillActions(Bill $bill, string $oldName, string $newName): void { if ($oldName === $newName) { return; } $ruleIds = $bill->user->rules()->get(['id'])->pluck('id')->toArray(); /** @var Collection $set */ $set = RuleAction::whereIn('rule_id', $ruleIds) ->where('action_type', 'link_to_bill') ->where('action_value', $oldName)->get(); /** @var RuleAction $ruleAction */ foreach ($set as $ruleAction) { $ruleAction->action_value = $newName; $ruleAction->save(); } } /** * @param Bill $bill * @param string $note * * @return bool */ public function updateNote(Bill $bill, string $note): bool { if ('' === $note) { $dbNote = $bill->notes()->first(); if (null !== $dbNote) { try { $dbNote->delete(); } catch (Exception $e) { Log::debug(sprintf('Error deleting note: %s', $e->getMessage())); } } return true; } $dbNote = $bill->notes()->first(); if (null === $dbNote) { $dbNote = new Note(); $dbNote->noteable()->associate($bill); } $dbNote->text = trim($note); $dbNote->save(); return true; } }