refactor ClientProgramController; replace caching logic with action classes for educational program retrieval and enhance code clarity

This commit is contained in:
F4ilji
2025-07-18 15:57:58 +05:00
parent 839d8edfcd
commit 18d1501b67
13 changed files with 404 additions and 155 deletions
@@ -0,0 +1,26 @@
<?php
namespace App\Containers\Education\Tasks;
use App\Containers\Education\Models\AdmissionPlan;
use App\Ship\Enums\Education\FormEducation;
use Illuminate\Support\Facades\Cache;
class GetEducationalFormsTask
{
public function run()
{
$cacheKeyForms = 'education_forms_list';
return Cache::remember($cacheKeyForms, now()->addDay(), function () {
return AdmissionPlan::distinct()
->pluck('contests')
->flatten(1)
->filter(fn ($item) => isset($item['form_education']))
->pluck('form_education')
->unique()
->map(fn ($item) => FormEducation::tryFrom((int)$item))
->filter()
->mapWithKeys(fn ($form) => [$form->name => $form->getLabel()]);
});
}
}