changes
This commit is contained in:
+13
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations\Categories;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\AdditionalEducationCategory;
|
||||
|
||||
class CreateCategoryAction
|
||||
{
|
||||
public function run(array $data): AdditionalEducationCategory
|
||||
{
|
||||
return AdditionalEducationCategory::create($data);
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations\Categories;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\AdditionalEducationCategory;
|
||||
|
||||
class DeleteCategoryAction
|
||||
{
|
||||
public function run(AdditionalEducationCategory $category): bool
|
||||
{
|
||||
return $category->delete();
|
||||
}
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations\Categories;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\AdditionalEducationCategory;
|
||||
use App\Containers\AdditionalEducation\Models\DirectionAdditionalEducation;
|
||||
|
||||
class ListCategoriesAction
|
||||
{
|
||||
public function run(array $filters = []): array
|
||||
{
|
||||
$query = AdditionalEducationCategory::with(['direction']);
|
||||
|
||||
// Фильтр по направлению
|
||||
if (!empty($filters['direction_id'])) {
|
||||
$query->where('dir_addit_educat_id', $filters['direction_id']);
|
||||
}
|
||||
|
||||
// Фильтр по активности
|
||||
if (isset($filters['is_active']) && $filters['is_active'] !== '') {
|
||||
$query->where('is_active', filter_var($filters['is_active'], FILTER_VALIDATE_BOOLEAN));
|
||||
}
|
||||
|
||||
// Поиск по названию
|
||||
if (!empty($filters['search'])) {
|
||||
$search = $filters['search'];
|
||||
$query->where('title', 'like', '%' . $search . '%');
|
||||
}
|
||||
|
||||
$categories = $query->orderBy('title')->paginate(20)->withQueryString();
|
||||
|
||||
return [
|
||||
'categories' => $categories,
|
||||
'filters' => $filters,
|
||||
'directions' => DirectionAdditionalEducation::where('is_active', true)
|
||||
->orderBy('title')
|
||||
->get(['id', 'title']),
|
||||
];
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations\Categories;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\AdditionalEducationCategory;
|
||||
|
||||
class UpdateCategoryAction
|
||||
{
|
||||
public function run(AdditionalEducationCategory $category, array $data): AdditionalEducationCategory
|
||||
{
|
||||
$category->update($data);
|
||||
return $category;
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\AdditionalEducation;
|
||||
use App\Containers\Dashboard\Tasks\AdditionalEducations\GenerateSearchDataTask;
|
||||
|
||||
class CreateAdditionalEducationAction
|
||||
{
|
||||
public function __construct(
|
||||
private readonly GenerateSearchDataTask $generateSearchDataTask,
|
||||
) {}
|
||||
|
||||
public function run(array $data): AdditionalEducation
|
||||
{
|
||||
$data['search_data'] = $this->generateSearchDataTask->run($data['content'] ?? []);
|
||||
|
||||
return AdditionalEducation::create($data);
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\AdditionalEducation;
|
||||
|
||||
class DeleteAdditionalEducationAction
|
||||
{
|
||||
public function run(AdditionalEducation $education): bool
|
||||
{
|
||||
return $education->delete();
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations\Directions;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\DirectionAdditionalEducation;
|
||||
|
||||
class CreateDirectionAction
|
||||
{
|
||||
public function run(array $data): DirectionAdditionalEducation
|
||||
{
|
||||
return DirectionAdditionalEducation::create($data);
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations\Directions;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\DirectionAdditionalEducation;
|
||||
|
||||
class DeleteDirectionAction
|
||||
{
|
||||
public function run(DirectionAdditionalEducation $direction): bool
|
||||
{
|
||||
return $direction->delete();
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations\Directions;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\DirectionAdditionalEducation;
|
||||
|
||||
class ListDirectionsAction
|
||||
{
|
||||
public function run(array $filters = []): array
|
||||
{
|
||||
$query = DirectionAdditionalEducation::query();
|
||||
|
||||
// Фильтр по активности
|
||||
if (isset($filters['is_active']) && $filters['is_active'] !== '') {
|
||||
$query->where('is_active', filter_var($filters['is_active'], FILTER_VALIDATE_BOOLEAN));
|
||||
}
|
||||
|
||||
// Поиск по названию
|
||||
if (!empty($filters['search'])) {
|
||||
$search = $filters['search'];
|
||||
$query->where('title', 'like', '%' . $search . '%');
|
||||
}
|
||||
|
||||
$directions = $query->orderBy('title')->paginate(20)->withQueryString();
|
||||
|
||||
return [
|
||||
'directions' => $directions,
|
||||
'filters' => $filters,
|
||||
];
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations\Directions;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\DirectionAdditionalEducation;
|
||||
|
||||
class UpdateDirectionAction
|
||||
{
|
||||
public function run(DirectionAdditionalEducation $direction, array $data): DirectionAdditionalEducation
|
||||
{
|
||||
$direction->update($data);
|
||||
return $direction;
|
||||
}
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\AdditionalEducation;
|
||||
use App\Containers\AdditionalEducation\Models\AdditionalEducationCategory;
|
||||
use App\Ship\Enums\Education\FormEducation;
|
||||
|
||||
class ListAdditionalEducationsAction
|
||||
{
|
||||
public function run(array $filters = []): array
|
||||
{
|
||||
$query = AdditionalEducation::with(['category']);
|
||||
|
||||
// Фильтр по категории
|
||||
if (!empty($filters['category_id'])) {
|
||||
$query->where('category_id', $filters['category_id']);
|
||||
}
|
||||
|
||||
// Фильтр по форме обучения
|
||||
if (!empty($filters['form_education'])) {
|
||||
$query->where('form_education', $filters['form_education']);
|
||||
}
|
||||
|
||||
// Фильтр по активности
|
||||
if (isset($filters['is_active']) && $filters['is_active'] !== '') {
|
||||
$query->where('is_active', filter_var($filters['is_active'], FILTER_VALIDATE_BOOLEAN));
|
||||
}
|
||||
|
||||
// Поиск по названию или целевой аудитории
|
||||
if (!empty($filters['search'])) {
|
||||
$search = $filters['search'];
|
||||
$query->where(function ($q) use ($search) {
|
||||
$q->where('title', 'like', '%' . $search . '%')
|
||||
->orWhere('target_group', 'like', '%' . $search . '%');
|
||||
});
|
||||
}
|
||||
|
||||
$educations = $query->orderBy('title')->paginate(20)->withQueryString();
|
||||
|
||||
return [
|
||||
'educations' => $educations,
|
||||
'filters' => $filters,
|
||||
'categories' => AdditionalEducationCategory::where('is_active', true)
|
||||
->orderBy('title')
|
||||
->get(['id', 'title']),
|
||||
'educationForms' => array_map(fn($form) => [
|
||||
'value' => $form->value,
|
||||
'label' => $form->getLabel(),
|
||||
'color' => $form->getColor(),
|
||||
'name' => $form->name,
|
||||
], FormEducation::cases()),
|
||||
];
|
||||
}
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Containers\Dashboard\Actions\AdditionalEducations;
|
||||
|
||||
use App\Containers\AdditionalEducation\Models\AdditionalEducation;
|
||||
use App\Containers\Dashboard\Tasks\AdditionalEducations\GenerateSearchDataTask;
|
||||
|
||||
class UpdateAdditionalEducationAction
|
||||
{
|
||||
public function __construct(
|
||||
private readonly GenerateSearchDataTask $generateSearchDataTask,
|
||||
) {}
|
||||
|
||||
public function run(AdditionalEducation $education, array $data): AdditionalEducation
|
||||
{
|
||||
if (isset($data['content'])) {
|
||||
$data['search_data'] = $this->generateSearchDataTask->run($data['content']);
|
||||
}
|
||||
|
||||
$education->update($data);
|
||||
|
||||
return $education;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user