. */ declare(strict_types=1); namespace FireflyIII\Services\Internal\Destroy; use DB; use FireflyIII\Models\Account; use FireflyIII\Models\Transaction; use Log; /** * Class AccountDestroyService */ class AccountDestroyService { /** * @param Account $account * @param Account|null $moveTo * * @return bool */ public function destroy(Account $account, ?Account $moveTo): bool { if (null !== $moveTo) { DB::table('transactions')->where('account_id', $account->id)->update(['account_id' => $moveTo->id]); } Log::debug('Now trigger account delete response #' . $account->id); /** @var Transaction $transaction */ foreach ($account->transactions()->get() as $transaction) { Log::debug('Now at transaction #' . $transaction->id); $journal = $transaction->transactionJournal()->first(); if (null !== $journal) { Log::debug('Call for deletion of journal #' . $journal->id); $journal->delete(); } } try { $account->delete(); } catch (\Exception $e) { // don't care Log::error($e->getMessage()); } return true; } }