114 lines
4.0 KiB
PHP
114 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace App\Observers;
|
|
|
|
use App\Models\School;
|
|
use App\Models\User;
|
|
|
|
class UserObserver
|
|
{
|
|
public function created(User $user): void
|
|
{
|
|
$message = 'Added User '.$user->full_name();
|
|
if ($user->school_id) {
|
|
$message .= '<br>School: '.$user->school->name;
|
|
}
|
|
$message .= '<br>Email: '.$user->email;
|
|
$message .= '<br>Phone: '.$user->cell_phone;
|
|
$message .= '<br>Judging Pref: '.$user->judging_preference;
|
|
$message .= '<br>Admin Privileges: '.$user->is_admin ? 'Yes' : 'No';
|
|
$message .= '<br>Tabulator Privileges: '.$user->is_tab ? 'Yes' : 'No';
|
|
$affected = ['users' => [$user->id]];
|
|
auditionLog($message, $affected);
|
|
}
|
|
|
|
public function updated(User $user): void
|
|
{
|
|
if ($user->isDirty('password')) {
|
|
$message = 'Changed password for User '.$user->full_name().' <'.$user->getOriginal('email').'>';
|
|
$affected = ['users' => [$user->id]];
|
|
auditionLog($message, $affected);
|
|
if (array_keys($user->getDirty()) === ['password']) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
if ($user->isDirty('email_verified_at')) {
|
|
$message = 'User '.$user->full_name().' <'.$user->getOriginal('email').' >'.' verified their email address';
|
|
$affected = ['users' => [$user->id]];
|
|
auditionLog($message, $affected);
|
|
if (array_keys($user->getDirty()) === ['email_verified_at']) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
if ($user->isDirty('school_id')) {
|
|
|
|
$oldSchool = $user->getOriginal('school_id') ? School::find($user->getOriginal('school_id'))->name : null;
|
|
$newSchool = $user->school_id ? School::find($user->school_id)->name : null;
|
|
|
|
//Log if we removed a school
|
|
if ($oldSchool && ! $newSchool) {
|
|
$message = 'Removed '.$user->full_name().' from '.$oldSchool;
|
|
$affected = ['users' => [$user->id], 'schools' => [$user->getOrigianl('school_id')]];
|
|
auditionLog($message, $affected);
|
|
}
|
|
|
|
// Log if we added a school
|
|
if ($newSchool && ! $oldSchool) {
|
|
$message = 'Added '.$user->full_name().' to '.$newSchool;
|
|
$affected = ['users' => [$user->id], 'schools' => [$user->school_id]];
|
|
auditionLog($message, $affected);
|
|
}
|
|
|
|
// Log if we changed schools
|
|
if ($oldSchool && $newSchool) {
|
|
$message = 'Changed school for '.$user->full_name().' from '.$oldSchool.' to '.$newSchool;
|
|
$affected = ['users' => [$user->id], 'schools' => [$user->getOriginal('school_id'), $user->school_id]];
|
|
auditionLog($message, $affected);
|
|
}
|
|
|
|
if (array_keys($user->getDirty()) === ['school_id']) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
$message = 'Updated User '.$user->full_name().'< '.$user->getOriginal('email').' >';
|
|
|
|
if ($user->isDirty('school_id') && $user->school_id) {
|
|
$user->refresh();
|
|
$message .= '<br>School: '.$user->school->name;
|
|
}
|
|
|
|
if ($user->isDirty('email')) {
|
|
$message .= '<br>Email: '.$user->email;
|
|
}
|
|
|
|
if ($user->isDirty('cell_phone')) {
|
|
$message .= '<br>Phone: '.$user->cell_phone;
|
|
}
|
|
|
|
if ($user->isDirty('judging_preference')) {
|
|
$message .= '<br>Judging Pref: '.$user->judging_preference;
|
|
}
|
|
|
|
if ($user->isDirty('is_admin')) {
|
|
$message .= '<br>Admin Privileges: '.($user->is_admin ? 'Yes' : 'No');
|
|
}
|
|
|
|
if ($user->isDirty('is_tab')) {
|
|
$message .= '<br>Tabulator Privileges: '.($user->is_tab ? 'Yes' : 'No');
|
|
}
|
|
|
|
$affected = ['users' => [$user->id]];
|
|
auditionLog($message, $affected);
|
|
}
|
|
|
|
public function deleted(User $user): void
|
|
{
|
|
$message = 'Removed User '.$user->full_name().' <'.$user->email.' >';
|
|
$affected = ['users' => [$user->id]];
|
|
auditionLog($message, $affected);
|
|
}
|
|
}
|