refactor ClientAdditionalEducationController; replace caching logic with action classes for data retrieval and improve code clarity

This commit is contained in:
F4ilji
2025-07-18 14:31:19 +05:00
parent b8235404b8
commit 839d8edfcd
9 changed files with 284 additions and 142 deletions
@@ -0,0 +1,39 @@
<?php
namespace App\Containers\AdditionalEducation\Actions;
use App\Containers\AdditionalEducation\Data\Resources\AdditionalEducationResource;
use App\Containers\AdditionalEducation\Tasks\FindAdditionalEducationBySlugTask;
use App\Ship\Actions\Action;
use App\Ship\Contracts\SeoServiceInterface;
use Illuminate\Http\Request;
class GetAdditionalEducationBySlugAction
{
public function __construct(
readonly SeoServiceInterface $seoPageProvider,
readonly FindAdditionalEducationBySlugTask $findAdditionalEducationBySlugTask,
) {}
public function run(string $slug, Request $request): array
{
$additionalEducationModel = $this->findAdditionalEducationBySlugTask->run($slug);
$seo = $this->seoPageProvider->getSeoForModel($additionalEducationModel);
$settingsPage = $request->attributes->get('settings_page') ?? [];
if (array_key_exists('custom_form', $settingsPage)) {
$form = $settingsPage['custom_form'];
} else {
$form = null;
}
$additionalEducation = new AdditionalEducationResource($additionalEducationModel);
return compact(
'additionalEducation',
'seo',
'form',
);
}
}