. */ namespace App\Listeners; use App\Events\ApplicationApprovedEvent; use App\Notifications\ApplicationApproved; use Illuminate\Support\Facades\Log; class PromoteUser { /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param ApplicationApprovedEvent $event * @return void */ public function handle(ApplicationApprovedEvent $event) { Log::info('User promoted automatically (application approved)', [ 'user' => $event->application->user->name, 'vacancy' => $event->application->response->vacancy->vacancyName, 'role' => 'staff' ]); $event->application->setStatus('APPROVED'); $event->application->response->vacancy->decrease(); $event->application->user->assignRole('staff'); $event->application->user->notify(new ApplicationApproved($event->application)); } }