From 3d8fa816c6b7360f845090aaabcabb796659dc01 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Fri, 22 Nov 2024 11:47:05 -0600 Subject: [PATCH] Clear cache values when a flag is set on an entry --- app/Models/EntryFlag.php | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/app/Models/EntryFlag.php b/app/Models/EntryFlag.php index 5b3cf64..4e2db12 100644 --- a/app/Models/EntryFlag.php +++ b/app/Models/EntryFlag.php @@ -5,6 +5,7 @@ namespace App\Models; use App\Enums\EntryFlags; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Support\Facades\Cache; class EntryFlag extends Model { @@ -14,8 +15,36 @@ class EntryFlag extends Model 'flag_name' => EntryFlags::class, ]; + protected static function boot() + { + parent::boot(); + static::created(function ($flag) { + $flag->deleteRelatedCalculatedScores(); + }); + + static::updated(function ($flag) { + $flag->deleteRelatedCalculatedScores(); + }); + + static::deleted(function ($flag) { + $flag->deleteRelatedCalculatedScores(); + }); + } + public function entry(): BelongsTo { return $this->belongsTo(Entry::class); } + + public function deleteRelatedCalculatedScores(): void + { + $entry = $this->entry; + if ($entry) { + $entry->calculatedScores()->delete(); + Cache::forget('entryScore-'.$entry->id.'-seating'); + Cache::forget('entryScore-'.$entry->id.'-advancement'); + Cache::forget('audition'.$entry->audition_id.'seating'); + Cache::forget('audition'.$entry->audition_id.'advancement'); + } + } }