This commit is contained in:
f4ilji
2025-01-30 00:31:40 +05:00
parent bad611eb84
commit 3385dc5807
60 changed files with 1811 additions and 825 deletions
@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Enums\FormEducation;
use App\Http\Resources\ClientEducationalGroupResource;
use App\Http\Resources\ScheduleResource;
use App\Models\EducationalGroup;
@@ -14,22 +15,71 @@ class ClientScheduleController extends Controller
{
public function index(Request $request)
{
$educationalGroups = collect();
$educationalGroups = ClientEducationalGroupResource::collection(EducationalGroup::query()
->has('schedules')
->when(request()->input('search'), function ($query, $search) {
$query->whereRaw('LOWER(title) like ?', ["%".strtolower($search)."%"]);
})
->when(request()->input('favorite'), function ($query, $favorite) {
$query->whereHas('schedules', function ($query) use ($favorite) {
$query->whereIn('id', $favorite);
});
})
->when(request()->input('form'), function ($query, $form) {
$query->where('education_form_id', FormEducation::fromName($form)->value);
if (request()->filled('search')) {
$educationalGroups = ClientEducationalGroupResource::collection(EducationalGroup::query()
->has('schedules')
->when(request()->input('search'), function ($query, $search) {
$query->whereRaw('LOWER(title) like ?', ["%".strtolower($search)."%"]);
})
->with('schedules')
->with('faculty')
->orderBy('title')
->get());
})
->with('schedules')
->with('faculty')
->orderBy('title')
->get());
$schedulesByFaculty = $educationalGroups->groupBy(function ($group) {
return $group->faculty->title; // Предполагаем, что у факультета есть поле 'name'
});
$schedulesByFaculty = $schedulesByFaculty->toArray();
if ($request->has('favorite') && empty($request->input('favorite'))) {
$schedulesByFaculty = [];
}
$searchRequest = request()->input('search');
return Inertia::render('Client/Schedules/Index', compact('educationalGroups', 'searchRequest'));
$forms_education = [];
foreach (FormEducation::cases() as $case) {
$forms_education[$case->name] = $case->getLabel();
}
$filters = [
'direction_filter' => [
'type' => 'direction',
'value' => request()->input('direction'),
'param' => 'direction'
],
'form_education_filter' => [
'type' => 'form',
'value' => request()->input('form'),
'param' => 'form'
],
'search_filter' => [
'type' => 'search',
'value' => $request->input('search'),
'param' => 'search'
],
'favorite_filter' => [
'type' => 'favorite',
'value' => $request->input('favorite'),
'param' => 'favorite'
]
];
// Возвращаем данные в представление
return Inertia::render('Client/Schedules/Index', compact('educationalGroups', 'filters', 'forms_education', 'schedulesByFaculty'));
}
public function show($id)