. */ declare(strict_types=1); namespace FireflyIII\Services\Internal\Update; use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionJournal; use Log; /** * Class GroupUpdateService */ class GroupUpdateService { /** * Update a transaction group. * * @param TransactionGroup $transactionGroup * @param array $data * * @return TransactionGroup */ public function update(TransactionGroup $transactionGroup, array $data): TransactionGroup { Log::debug('Now in group update service'); $transactions = $data['transactions'] ?? []; // update group name. if (array_key_exists('group_title', $data)) { Log::debug(sprintf('Update transaction group #%d title.', $transactionGroup->id)); $transactionGroup->title = $data['group_title']; $transactionGroup->save(); } if (1 === count($transactions) && 1 === $transactionGroup->transactionJournals()->count()) { /** @var TransactionJournal $first */ $first = $transactionGroup->transactionJournals()->first(); Log::debug(sprintf('Will now update journal #%d (only journal in group #%d)', $first->id, $transactionGroup->id)); $this->updateTransactionJournal($transactionGroup, $first, reset($transactions)); $transactionGroup->refresh(); return $transactionGroup; } die('cannot update split'); app('preferences')->mark(); } /** * Update single journal. * * @param TransactionGroup $transactionGroup * @param TransactionJournal $journal * @param array $data */ private function updateTransactionJournal(TransactionGroup $transactionGroup, TransactionJournal $journal, array $data): void { /** @var JournalUpdateService $updateService */ $updateService = app(JournalUpdateService::class); $updateService->setTransactionGroup($transactionGroup); $updateService->setTransactionJournal($journal); $updateService->setData($data); $updateService->update(); } }