. */ declare(strict_types=1); namespace FireflyIII\Handlers\Observer; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface; /** * Class TransactionJournalObserver */ class TransactionJournalObserver { public function deleting(TransactionJournal $transactionJournal): void { app('log')->debug('Observe "deleting" of a transaction journal.'); $repository = app(AttachmentRepositoryInterface::class); $repository->setUser($transactionJournal->user); // to make sure the listener doesn't get back to use and loop TransactionJournal::withoutEvents(static function () use ($transactionJournal): void { foreach ($transactionJournal->transactions()->get() as $transaction) { $transaction->delete(); } }); foreach ($transactionJournal->attachments()->get() as $attachment) { $repository->destroy($attachment); } $transactionJournal->locations()->delete(); $transactionJournal->sourceJournalLinks()->delete(); $transactionJournal->destJournalLinks()->delete(); $transactionJournal->auditLogEntries()->delete(); } }