auditionadmin/app/Observers/AuditionObserver.php

55 lines
2.3 KiB
PHP

<?php
namespace App\Observers;
use App\Models\Audition;
use App\Models\Event;
class AuditionObserver
{
public function created(Audition $audition): void
{
$message = 'Added audition #'.$audition->id.' '.$audition->name.' to event '.$audition->event->name;
$message .= '<br>Deadline: '.$audition->entry_deadline;
$message .= '<br>Entry Fee: '.$audition->display_fee();
$message .= '<br>Grade Range: '.$audition->minimum_grade.' - '.$audition->maximum_grade;
if ($audition->for_seating) {
$message .= '<br>Entered for '.auditionSetting('auditionAbbreviation');
}
if ($audition->for_advancement) {
$message .= '<br>Entered for '.auditionSetting('advanceTo');
}
$affected = ['auditions' => [$audition->id], 'events' => [$audition->event_id]];
auditionLog($message, $affected);
}
public function updated(Audition $audition): void
{
$message = 'Updated audition #'.$audition->getOriginal('name').' '.$audition->name;
if ($audition->event_id !== $audition->getOriginal('event_id')) {
$message .= '<br>Event: '.Event::find($audition->getOriginal('event_id'))->name.' -> '.Event::find($audition->event_id)->name;
$affected['events'] = [$audition->event_id, $audition->getOriginal('event_id')];
} else {
$affected['auditions'] = [$audition->id];
}
if ($audition->entry_deadline !== $audition->getOriginal('entry_deadline')) {
$message .= '<br>Deadline: '.$audition->entry_deadline;
}
if ($audition->entryFee !== $audition->getOriginal('entryFee')) {
$message .= '<br>Entry Fee: '.$audition->display_fee();
}
if ($audition->minimum_grade !== $audition->getOriginal('minimum_grade') || $audition->maximum_grade !== $audition->getOriginal('maximum_grade')) {
$message .= '<br>Grade Range: '.$audition->minimum_grade.' - '.$audition->maximum_grade;
}
$affected['auditions'] = [$audition->id];
auditionLog($message, $affected);
}
public function deleted(Audition $audition): void
{
$message = 'Deleted audition #'.$audition->id.' '.$audition->name;
$affected = ['auditions' => [$audition->id]];
auditionLog($message, $affected);
}
}