'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::where('active', 1)->get(); foreach ($awards as $award) { $klass = $award->getReference($award, $user); if ($klass) { $klass->handle(); } } } }