diff --git a/app/Handlers/Events/StoredGroupEventHandler.php b/app/Handlers/Events/StoredGroupEventHandler.php index 53faaffe21..17a00010e3 100644 --- a/app/Handlers/Events/StoredGroupEventHandler.php +++ b/app/Handlers/Events/StoredGroupEventHandler.php @@ -38,10 +38,18 @@ use Illuminate\Support\Collection; */ class StoredGroupEventHandler { + public function runAllHandlers(StoredTransactionGroup $event): void + { + $this->processRules($event); + $this->recalculateCredit($event); + $this->triggerWebhooks($event); + } + + /** * This method grabs all the users rules and processes them. */ - public function processRules(StoredTransactionGroup $storedGroupEvent): void + private function processRules(StoredTransactionGroup $storedGroupEvent): void { if (false === $storedGroupEvent->applyRules) { app('log')->info(sprintf('Will not run rules on group #%d', $storedGroupEvent->transactionGroup->id)); @@ -50,14 +58,14 @@ class StoredGroupEventHandler } app('log')->debug('Now in StoredGroupEventHandler::processRules()'); - $journals = $storedGroupEvent->transactionGroup->transactionJournals; - $array = []; + $journals = $storedGroupEvent->transactionGroup->transactionJournals; + $array = []; /** @var TransactionJournal $journal */ foreach ($journals as $journal) { $array[] = $journal->id; } - $journalIds = implode(',', $array); + $journalIds = implode(',', $array); app('log')->debug(sprintf('Add local operator for journal(s): %s', $journalIds)); // collect rules: @@ -66,19 +74,19 @@ class StoredGroupEventHandler // add the groups to the rule engine. // it should run the rules in the group and cancel the group if necessary. - $groups = $ruleGroupRepository->getRuleGroupsWithRules('store-journal'); + $groups = $ruleGroupRepository->getRuleGroupsWithRules('store-journal'); // create and fire rule engine. - $newRuleEngine = app(RuleEngineInterface::class); + $newRuleEngine = app(RuleEngineInterface::class); $newRuleEngine->setUser($storedGroupEvent->transactionGroup->user); $newRuleEngine->addOperator(['type' => 'journal_id', 'value' => $journalIds]); $newRuleEngine->setRuleGroups($groups); $newRuleEngine->fire(); } - public function recalculateCredit(StoredTransactionGroup $event): void + private function recalculateCredit(StoredTransactionGroup $event): void { - $group = $event->transactionGroup; + $group = $event->transactionGroup; /** @var CreditRecalculateService $object */ $object = app(CreditRecalculateService::class); @@ -89,17 +97,17 @@ class StoredGroupEventHandler /** * This method processes all webhooks that respond to the "stored transaction group" trigger (100) */ - public function triggerWebhooks(StoredTransactionGroup $storedGroupEvent): void + private function triggerWebhooks(StoredTransactionGroup $storedGroupEvent): void { app('log')->debug(__METHOD__); - $group = $storedGroupEvent->transactionGroup; + $group = $storedGroupEvent->transactionGroup; if (false === $storedGroupEvent->fireWebhooks) { app('log')->info(sprintf('Will not fire webhooks for transaction group #%d', $group->id)); return; } - $user = $group->user; + $user = $group->user; /** @var MessageGeneratorInterface $engine */ $engine = app(MessageGeneratorInterface::class); diff --git a/app/Handlers/Events/UpdatedGroupEventHandler.php b/app/Handlers/Events/UpdatedGroupEventHandler.php index ef1ed4e430..29fa733c48 100644 --- a/app/Handlers/Events/UpdatedGroupEventHandler.php +++ b/app/Handlers/Events/UpdatedGroupEventHandler.php @@ -41,10 +41,19 @@ use Illuminate\Support\Collection; */ class UpdatedGroupEventHandler { + public function runAllHandlers(UpdatedTransactionGroup $event): void { + $this->unifyAccounts($event); + $this->processRules($event); + $this->recalculateCredit($event); + $this->triggerWebhooks($event); + + } + + /** * This method will check all the rules when a journal is updated. */ - public function processRules(UpdatedTransactionGroup $updatedGroupEvent): void + private function processRules(UpdatedTransactionGroup $updatedGroupEvent): void { if (false === $updatedGroupEvent->applyRules) { app('log')->info(sprintf('Will not run rules on group #%d', $updatedGroupEvent->transactionGroup->id)); @@ -76,7 +85,7 @@ class UpdatedGroupEventHandler $newRuleEngine->fire(); } - public function recalculateCredit(UpdatedTransactionGroup $event): void + private function recalculateCredit(UpdatedTransactionGroup $event): void { $group = $event->transactionGroup; @@ -86,7 +95,7 @@ class UpdatedGroupEventHandler $object->recalculate(); } - public function triggerWebhooks(UpdatedTransactionGroup $updatedGroupEvent): void + private function triggerWebhooks(UpdatedTransactionGroup $updatedGroupEvent): void { app('log')->debug(__METHOD__); $group = $updatedGroupEvent->transactionGroup; @@ -110,7 +119,7 @@ class UpdatedGroupEventHandler /** * This method will make sure all source / destination accounts are the same. */ - public function unifyAccounts(UpdatedTransactionGroup $updatedGroupEvent): void + private function unifyAccounts(UpdatedTransactionGroup $updatedGroupEvent): void { $group = $updatedGroupEvent->transactionGroup; if (1 === $group->transactionJournals->count()) { diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index f1e9a91ead..1e9d655b0d 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -169,16 +169,11 @@ class EventServiceProvider extends ServiceProvider // is a Transaction Journal related event. StoredTransactionGroup::class => [ - 'FireflyIII\Handlers\Events\StoredGroupEventHandler@processRules', - 'FireflyIII\Handlers\Events\StoredGroupEventHandler@recalculateCredit', - 'FireflyIII\Handlers\Events\StoredGroupEventHandler@triggerWebhooks', + 'FireflyIII\Handlers\Events\StoredGroupEventHandler@runAllHandlers', ], // is a Transaction Journal related event. UpdatedTransactionGroup::class => [ - 'FireflyIII\Handlers\Events\UpdatedGroupEventHandler@unifyAccounts', - 'FireflyIII\Handlers\Events\UpdatedGroupEventHandler@processRules', - 'FireflyIII\Handlers\Events\UpdatedGroupEventHandler@recalculateCredit', - 'FireflyIII\Handlers\Events\UpdatedGroupEventHandler@triggerWebhooks', + 'FireflyIII\Handlers\Events\UpdatedGroupEventHandler@runAllHandlers', ], DestroyedTransactionGroup::class => [ 'FireflyIII\Handlers\Events\DestroyedGroupEventHandler@triggerWebhooks',