. */ declare(strict_types=1); namespace FireflyIII\Handlers\Events; use FireflyIII\Enums\WebhookTrigger; use FireflyIII\Events\DestroyedTransactionGroup; use FireflyIII\Events\RequestedSendWebhookMessages; use FireflyIII\Generator\Webhook\MessageGeneratorInterface; use FireflyIII\Support\Models\AccountBalanceCalculator; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Log; /** * Class DestroyedGroupEventHandler */ class DestroyedGroupEventHandler { public function runAllHandlers(DestroyedTransactionGroup $event): void { $this->triggerWebhooks($event); $this->updateRunningBalance($event); } private function triggerWebhooks(DestroyedTransactionGroup $destroyedGroupEvent): void { app('log')->debug('DestroyedTransactionGroup:triggerWebhooks'); $group = $destroyedGroupEvent->transactionGroup; $user = $group->user; /** @var MessageGeneratorInterface $engine */ $engine = app(MessageGeneratorInterface::class); $engine->setUser($user); $engine->setObjects(new Collection([$group])); $engine->setTrigger(WebhookTrigger::DESTROY_TRANSACTION); $engine->generateMessages(); event(new RequestedSendWebhookMessages()); } private function updateRunningBalance(DestroyedTransactionGroup $event): void { Log::debug(__METHOD__); $group = $event->transactionGroup; foreach ($group->transactionJournals as $journal) { AccountBalanceCalculator::recalculateForJournal($journal); } } }