auditionadmin/app/Services/AuditionCacheService.php

43 lines
1019 B
PHP

<?php
namespace App\Services;
use App\Models\Audition;
use App\Models\ScoringGuide;
use Illuminate\Support\Facades\Cache;
class AuditionCacheService
{
protected $cacheKey = 'auditions';
/**
* Create a new class instance.
*/
public function __construct()
{
//
}
public function getAuditions(): \Illuminate\Database\Eloquent\Collection
{ //TODO have changes to judging assignments refresh the cache
return Cache::rememberForever($this->cacheKey, function () {
return Audition::with(['scoringGuide.subscores','judges'])
->withCount('judges')
->withCount('entries')
->orderBy('score_order')
->get()
->keyBy('id');
});
}
public function getAudition($id): Audition
{
return $this->getAuditions()->firstWhere('id',$id);
}
public function refreshCache()
{
Cache::forget($this->cacheKey);
$this->getAuditions();
}
}