refactor multiple widget controllers; replace caching logic with action classes for data retrieval, enhancing code clarity and maintainability

This commit is contained in:
F4ilji
2025-07-22 18:22:04 +05:00
parent 7a8a6e023d
commit 528a4b24b0
19 changed files with 320 additions and 110 deletions
@@ -0,0 +1,17 @@
<?php
namespace App\Containers\Widget\Actions;
use App\Containers\Widget\Tasks\GetActiveAdditionalEducationalProgramsTask;
class GetAdditionalEducationalProgramsAction
{
public function __construct(
private readonly GetActiveAdditionalEducationalProgramsTask $getActiveAdditionalEducationalProgramsTask
) {}
public function run()
{
return $this->getActiveAdditionalEducationalProgramsTask->run();
}
}
@@ -0,0 +1,17 @@
<?php
namespace App\Containers\Widget\Actions;
use App\Containers\Widget\Tasks\GetPublishedEducationalProgramsTask;
class GetEducationalProgramsAction
{
public function __construct(
private readonly GetPublishedEducationalProgramsTask $getPublishedEducationalProgramsTask
) {}
public function run()
{
return $this->getPublishedEducationalProgramsTask->run();
}
}
@@ -0,0 +1,33 @@
<?php
namespace App\Containers\Widget\Actions;
use App\Containers\Widget\Tasks\FindPageByIdTask;
use App\Containers\Widget\UI\API\Transformers\PageNavigateResource;
class GetPageAction
{
public function __construct(
private readonly FindPageByIdTask $findPageByIdTask
) {}
public function run(int $id)
{
$page = $this->findPageByIdTask->run($id);
if (isset($page->section)) {
$breadcrumbs = [
'mainSection' => $page->section->mainSection->title,
'subSection' => $page->section->title,
'page' => $page->title,
];
} else {
$breadcrumbs = null;
}
return [
'page' => new PageNavigateResource($page),
'breadcrumbs' => $breadcrumbs
];
}
}
@@ -0,0 +1,17 @@
<?php
namespace App\Containers\Widget\Actions;
use App\Containers\Widget\Tasks\GetFilteredPostsTask;
class GetPostsAction
{
public function __construct(
private readonly GetFilteredPostsTask $getFilteredPostsTask
) {}
public function run(?int $category_id, int $count)
{
return $this->getFilteredPostsTask->run($category_id, $count);
}
}
@@ -0,0 +1,17 @@
<?php
namespace App\Containers\Widget\Actions;
use App\Containers\Widget\Tasks\FindPostByIdTask;
class GetSinglePostAction
{
public function __construct(
private readonly FindPostByIdTask $findPostByIdTask
) {}
public function run(int $id)
{
return $this->findPostByIdTask->run($id);
}
}
@@ -0,0 +1,17 @@
<?php
namespace App\Containers\Widget\Actions;
use App\Containers\Widget\Tasks\FindSliderBySlugTask;
class GetSliderBySlugAction
{
public function __construct(
private readonly FindSliderBySlugTask $findSliderBySlugTask
) {}
public function run(string $slug): ?object
{
return $this->findSliderBySlugTask->run($slug);
}
}