From b37bd2cd7b3a5a3599aa261a0fa6a2bc6882efbb Mon Sep 17 00:00:00 2001 From: Nabeel S Date: Fri, 23 Oct 2020 07:28:22 -0400 Subject: [PATCH] Change award events handler to subscription #888 (#894) --- app/Listeners/AwardHandler.php | 71 ++++++++++++++++++++++++++ app/Listeners/AwardListener.php | 32 ------------ app/Providers/EventServiceProvider.php | 5 +- 3 files changed, 74 insertions(+), 34 deletions(-) create mode 100644 app/Listeners/AwardHandler.php delete mode 100644 app/Listeners/AwardListener.php diff --git a/app/Listeners/AwardHandler.php b/app/Listeners/AwardHandler.php new file mode 100644 index 00000000..52463acf --- /dev/null +++ b/app/Listeners/AwardHandler.php @@ -0,0 +1,71 @@ + 'onPirepAccept', + UserStatsChanged::class => 'onUserStatsChanged', + UserStateChanged::class => 'onUserStateChanged', + ]; + + /** + * Called when a PIREP is accepted + * + * @param \App\Events\PirepAccepted $event + */ + public function onPirepAccept(PirepAccepted $event) + { + $this->checkForAwards($event->pirep->user); + } + + /** + * When the user's state has changed + * + * @param \App\Events\UserStateChanged $event + */ + public function onUserStateChanged(UserStateChanged $event): void + { + $this->checkForAwards($event->user); + } + + /** + * Called when any of the user's states have changed + * + * @param UserStatsChanged $event + */ + public function onUserStatsChanged(UserStatsChanged $event): void + { + $this->checkForAwards($event->user); + } + + /** + * Check for any awards to be run and test them against the user + * + * @param \App\Models\User $user + */ + public function checkForAwards($user) + { + $awards = Award::all(); + foreach ($awards as $award) { + $klass = $award->getReference($award, $user); + if ($klass) { + $klass->handle(); + } + } + } +} diff --git a/app/Listeners/AwardListener.php b/app/Listeners/AwardListener.php deleted file mode 100644 index b460cd32..00000000 --- a/app/Listeners/AwardListener.php +++ /dev/null @@ -1,32 +0,0 @@ -getReference($award, $event->user); - if ($klass) { - $klass->handle(); - } - } - } -} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 86c86441..2fdd304a 100755 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -5,7 +5,7 @@ namespace App\Providers; use App\Events\Expenses; use App\Events\PirepFiled; use App\Events\UserStatsChanged; -use App\Listeners\AwardListener; +use App\Listeners\AwardHandler; use App\Listeners\BidEventHandler; use App\Listeners\ExpenseListener; use App\Listeners\FinanceEventHandler; @@ -33,7 +33,7 @@ class EventServiceProvider extends ServiceProvider ], UserStatsChanged::class => [ - AwardListener::class, + ], UpdateAvailable::class => [], @@ -44,5 +44,6 @@ class EventServiceProvider extends ServiceProvider BidEventHandler::class, FinanceEventHandler::class, EventHandler::class, + AwardHandler::class, ]; }