. */ declare(strict_types=1); namespace FireflyIII\Handlers\Observer; use FireflyIII\Models\Attachment; use FireflyIII\Models\Budget; use FireflyIII\Models\BudgetLimit; use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface; /** * Class BudgetObserver */ class BudgetObserver { public function deleting(Budget $budget): void { app('log')->debug('Observe "deleting" of a budget.'); $repository = app(AttachmentRepositoryInterface::class); $repository->setUser($budget->user); /** @var Attachment $attachment */ foreach ($budget->attachments()->get() as $attachment) { $repository->destroy($attachment); } $budgetLimits = $budget->budgetlimits()->get(); /** @var BudgetLimit $budgetLimit */ foreach ($budgetLimits as $budgetLimit) { // this loop exists so several events are fired. $budgetLimit->delete(); } $budget->notes()->delete(); $budget->autoBudgets()->delete(); // recalculate available budgets. } }