From e2a41fdb9c8447d54d24ad4456849a32e158c699 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Fri, 22 Nov 2024 10:16:22 -0600 Subject: [PATCH] Ensure caches are cleared after a bonus score is entered --- app/Models/BonusScore.php | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/app/Models/BonusScore.php b/app/Models/BonusScore.php index 0423629..ece28cb 100644 --- a/app/Models/BonusScore.php +++ b/app/Models/BonusScore.php @@ -4,11 +4,28 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Support\Facades\Cache; class BonusScore extends Model { protected $guarded = []; + protected static function boot() + { + parent::boot(); + static::created(function ($bonusScore) { + $bonusScore->deleteRelatedCalculatedScores(); + }); + + static::updated(function ($bonusScore) { + $bonusScore->deleteRelatedCalculatedScores(); + }); + + static::deleted(function ($bonusScore) { + $bonusScore->deleteRelatedCalculatedScores(); + }); + } + public function entry(): BelongsTo { return $this->belongsTo(Entry::class); @@ -23,4 +40,16 @@ class BonusScore extends Model { return $this->belongsTo(Entry::class, 'originally_scored_entry'); } + + 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'); + } + } }