Clear caches when adding or removing a flag. Block adding or removing flags from published auditions
Closes #91
This commit is contained in:
parent
d0aa29fb1a
commit
fc650b3be1
|
|
@ -2,17 +2,30 @@
|
|||
|
||||
namespace App\Observers;
|
||||
|
||||
use App\Exceptions\AuditionAdminException;
|
||||
use App\Models\Doubler;
|
||||
use App\Models\EntryFlag;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
class EntryFlagObserver
|
||||
{
|
||||
/**
|
||||
* Handle the EntryFlag "created" event.
|
||||
*/
|
||||
public function creating(EntryFlag $entryFlag): void
|
||||
{
|
||||
if (in_array($entryFlag->flag_name, ['declined', 'no_show', 'failed_prelim'])) {
|
||||
if ($entryFlag->entry->audition->hasFlag('seats_published') || $entryFlag->entry->audition->hasFlag('advancement_published')) {
|
||||
throw new AuditionAdminException('Cannot change flag for published auditions.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function created(EntryFlag $entryFlag): void
|
||||
{
|
||||
Doubler::syncDoublers();
|
||||
Cache::forget('rank_advancement_'.$entryFlag->entry->audition_id);
|
||||
Cache::forget('rank_seating_'.$entryFlag->entry->audition_id);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -22,14 +35,29 @@ class EntryFlagObserver
|
|||
public function updated(EntryFlag $entryFlag): void
|
||||
{
|
||||
Doubler::syncDoublers();
|
||||
Cache::forget('rank_advancement_'.$entryFlag->entry->audition_id);
|
||||
Cache::forget('rank_seating_'.$entryFlag->entry->audition_id);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the EntryFlag "deleted" event.
|
||||
*/
|
||||
public function deleting(EntryFlag $entryFlag): void
|
||||
{
|
||||
if (in_array($entryFlag->flag_name, ['declined', 'no_show', 'failed_prelim'])) {
|
||||
if ($entryFlag->entry->audition->hasFlag('seats_published') || $entryFlag->entry->audition->hasFlag('advancement_published')) {
|
||||
throw new AuditionAdminException('Cannot change flag for published auditions.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function deleted(EntryFlag $entryFlag): void
|
||||
{
|
||||
Doubler::syncDoublers();
|
||||
Cache::forget('rank_advancement_'.$entryFlag->entry->audition_id);
|
||||
Cache::forget('rank_seating_'.$entryFlag->entry->audition_id);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue