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\AdmissionCampaigns;
use App\Containers\Education\Models\AdmissionCampaign;
class CreateAdmissionCampaignAction
{
public function run(array $data): AdmissionCampaign
{
return AdmissionCampaign::create($data);
}
}
@@ -0,0 +1,13 @@
<?php
namespace App\Containers\Dashboard\Actions\AdmissionCampaigns;
use App\Containers\Education\Models\AdmissionCampaign;
class DeleteAdmissionCampaignAction
{
public function run(AdmissionCampaign $campaign): bool
{
return $campaign->delete();
}
}
@@ -0,0 +1,58 @@
<?php
namespace App\Containers\Dashboard\Actions\AdmissionCampaigns;
use App\Containers\Education\Models\AdmissionCampaign;
use App\Ship\Enums\Education\AdmissionCampaignStatus;
class ListAdmissionCampaignsAction
{
public function run(array $filters = []): array
{
$query = AdmissionCampaign::query();
// Фильтр по статусу
if (!empty($filters['status'])) {
$query->where('status', $filters['status']);
}
// Фильтр по учебному году
if (!empty($filters['academic_year'])) {
$query->where('academic_year', $filters['academic_year']);
}
// Поиск по названию
if (!empty($filters['search'])) {
$search = $filters['search'];
$query->where('name', 'like', '%' . $search . '%');
}
$campaigns = $query->orderBy('academic_year', 'desc')->paginate(20)->withQueryString();
return [
'campaigns' => $campaigns,
'filters' => $filters,
'statuses' => array_map(fn($status) => [
'value' => $status->value,
'label' => $status->getLabel(),
'color' => $status->getColor(),
], AdmissionCampaignStatus::cases()),
'academicYears' => $this->generateAcademicYears(),
];
}
private function generateAcademicYears(): array
{
$currentYear = (int) date('Y') - 5;
$yearsAhead = 10;
$academicYears = [];
for ($i = 0; $i < $yearsAhead; $i++) {
$startYear = $currentYear + $i;
$endYear = $startYear + 1;
$academicYears[] = "{$startYear}/{$endYear}";
}
return $academicYears;
}
}
@@ -0,0 +1,14 @@
<?php
namespace App\Containers\Dashboard\Actions\AdmissionCampaigns;
use App\Containers\Education\Models\AdmissionCampaign;
class UpdateAdmissionCampaignAction
{
public function run(AdmissionCampaign $campaign, array $data): AdmissionCampaign
{
$campaign->update($data);
return $campaign;
}
}