This commit is contained in:
F4ilji
2026-04-07 17:54:26 +05:00
parent 04adba6682
commit 936b1fb5b0
468 changed files with 43498 additions and 4176 deletions
@@ -0,0 +1,13 @@
<?php
namespace App\Containers\Dashboard\Actions\EducationalPrograms;
use App\Containers\Education\Models\EducationalProgram;
class CreateEducationalProgramAction
{
public function run(array $data): EducationalProgram
{
return EducationalProgram::create($data);
}
}
@@ -0,0 +1,13 @@
<?php
namespace App\Containers\Dashboard\Actions\EducationalPrograms;
use App\Containers\Education\Models\EducationalProgram;
class DeleteEducationalProgramAction
{
public function run(EducationalProgram $program): bool
{
return $program->delete();
}
}
@@ -0,0 +1,55 @@
<?php
namespace App\Containers\Dashboard\Actions\EducationalPrograms;
use App\Containers\Education\Models\EducationalProgram;
use App\Containers\Education\Models\DirectionStudy;
use App\Ship\Enums\Education\EducationalProgramStatus;
use App\Ship\Enums\Education\LevelEducational;
class ListEducationalProgramsAction
{
public function run(array $filters = []): array
{
$query = EducationalProgram::with(['directionStudy']);
// Фильтр по уровню образования
if (!empty($filters['lvl_edu'])) {
$query->where('lvl_edu', $filters['lvl_edu']);
}
// Фильтр по статусу
if (!empty($filters['status'])) {
$query->where('status', $filters['status']);
}
// Фильтр по направлению подготовки
if (!empty($filters['direction_study_id'])) {
$query->where('direction_study_id', $filters['direction_study_id']);
}
// Поиск по названию
if (!empty($filters['search'])) {
$search = $filters['search'];
$query->where('name', 'like', '%' . $search . '%');
}
$programs = $query->orderBy('name')->paginate(20)->withQueryString();
return [
'programs' => $programs,
'filters' => $filters,
'statuses' => array_map(fn($status) => [
'value' => $status->value,
'label' => $status->getLabel(),
'color' => $status->getColor(),
], EducationalProgramStatus::cases()),
'educationLevels' => array_map(fn($level) => [
'value' => $level->value,
'label' => $level->getLabel(),
'color' => $level->getColor(),
], LevelEducational::cases()),
'directionStudies' => DirectionStudy::orderBy('code')->get(['id', 'code', 'name']),
];
}
}
@@ -0,0 +1,14 @@
<?php
namespace App\Containers\Dashboard\Actions\EducationalPrograms;
use App\Containers\Education\Models\EducationalProgram;
class UpdateEducationalProgramAction
{
public function run(EducationalProgram $program, array $data): EducationalProgram
{
$program->update($data);
return $program;
}
}