. */ declare(strict_types=1); namespace FireflyIII\Services\Internal\Update; use FireflyIII\Models\Bill; use FireflyIII\Services\Internal\Support\BillServiceTrait; use Log; /** * @codeCoverageIgnore * Class BillUpdateService */ class BillUpdateService { use BillServiceTrait; /** * Constructor. */ public function __construct() { if ('testing' === config('app.env')) { Log::warning(sprintf('%s should not be instantiated in the TEST environment!', \get_class($this))); } } /** * @param Bill $bill * @param array $data * * @return Bill */ public function update(Bill $bill, array $data): Bill { $oldName = $bill->name; $bill->name = $data['name']; $bill->amount_min = $data['amount_min']; $bill->amount_max = $data['amount_max']; $bill->date = $data['date']; $bill->transaction_currency_id = $data['currency_id']; $bill->repeat_freq = $data['repeat_freq']; $bill->skip = $data['skip']; $bill->automatch = true; $bill->active = $data['active'] ?? true; $bill->save(); // update note: if (isset($data['notes'])) { $this->updateNote($bill, (string)$data['notes']); } // update rule actions. $this->updateBillActions($bill, $oldName, $data['name']); return $bill; } }