forked from aslan/applicant-site
181 lines
8.5 KiB
PHP
181 lines
8.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\admin;
|
|
|
|
use App\Enums\ExaminationTypeEnum;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Admission;
|
|
use App\Models\Direction;
|
|
use App\Models\EntranceExamination;
|
|
use App\Models\Faculty;
|
|
use App\Models\Subject;
|
|
use Illuminate\Contracts\View\Factory;
|
|
use Illuminate\Contracts\View\View;
|
|
use Illuminate\Foundation\Application;
|
|
|
|
class PageController extends Controller
|
|
{
|
|
// public function index(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
|
// {
|
|
// $admissions = Admission::all()->sortBy('position');
|
|
// return view('menu.reception-screen', compact('admissions'));
|
|
// }
|
|
|
|
public function directions()
|
|
{
|
|
$faculties = Faculty::all();
|
|
$subjects = EntranceExamination::all()
|
|
->select('subject_id', 'subject_type_id', 'examination_type_id')
|
|
->where('examination_type_id', '=', ExaminationTypeEnum::Ege->value)
|
|
->reduce(function (?array $carry, $subject) {
|
|
$id = $subject['subject_id'];
|
|
$value = Subject::find($id)->name;
|
|
$carry[$id] = $value;
|
|
return $carry;
|
|
});
|
|
$directionsWithInstitution = Direction::with(['department'])
|
|
->join('departments', 'directions.department_id', '=', 'departments.id')
|
|
->join('faculties', 'departments.faculty_id', '=', 'faculties.id')
|
|
->join(
|
|
'educational_institutions',
|
|
'faculties.educational_institution_id',
|
|
'=',
|
|
'educational_institutions.id'
|
|
)
|
|
->get([
|
|
'directions.id',
|
|
'directions.name',
|
|
"educational_institutions.name as educational_institution_name"
|
|
]);
|
|
|
|
$directionsGroups = Direction::with(['department'])
|
|
->leftJoin('direction_direction_profile', 'directions.id', '=', 'direction_direction_profile.direction_id')
|
|
->leftJoin(
|
|
'direction_profiles',
|
|
'direction_direction_profile.direction_profile_id',
|
|
'=',
|
|
'direction_profiles.id'
|
|
)
|
|
->leftJoin('departments', 'directions.department_id', '=', 'departments.id')
|
|
->leftJoin('faculties', 'departments.faculty_id', '=', 'faculties.id')
|
|
->leftJoin('education_levels', 'directions.education_level_id', '=', 'education_levels.id')
|
|
->leftJoin('education_forms', 'directions.education_form_id', '=', 'education_forms.id')
|
|
->leftJoin('entrance_examinations', 'entrance_examinations.direction_id', '=', 'directions.id')
|
|
->leftJoin(
|
|
'educational_institutions',
|
|
'faculties.educational_institution_id',
|
|
'=',
|
|
'educational_institutions.id'
|
|
)
|
|
->leftJoin('examination_types', 'entrance_examinations.examination_type_id', '=', 'examination_types.id')
|
|
->leftJoin('subject_types', 'entrance_examinations.subject_type_id', '=', 'subject_types.id')
|
|
->leftJoin('subjects', 'entrance_examinations.subject_id', '=', 'subjects.id')
|
|
->select(
|
|
'directions.id as direction_id',
|
|
'directions.code as direction_code',
|
|
'directions.name as direction_name',
|
|
'directions.description as direction_description',
|
|
'directions.budget_places as direction_budget_places',
|
|
'directions.paid_places as direction_paid_places',
|
|
'directions.cost_paid_place as direction_cost_paid_place',
|
|
'directions.period as direction_period',
|
|
'education_levels.name as education_level_name',
|
|
'education_forms.name as education_form_name',
|
|
'faculties.id as faculty_id',
|
|
'faculties.name as faculty_name',
|
|
'educational_institutions.id as educational_institution_id',
|
|
'educational_institutions.name as educational_institution_name',
|
|
'direction_profiles.id as direction_profile_id',
|
|
'entrance_examinations.scores as entrance_examination_score',
|
|
'examination_types.name as examination_type_name',
|
|
'subject_types.name as subject_type_name',
|
|
'subjects.name as subject_name',
|
|
'direction_profiles.name as direction_profile_name',
|
|
)
|
|
->get()->toArray();
|
|
|
|
$branches = [];
|
|
$directionsGroupWithOutBranch = array_reduce($directionsGroups, function ($acc, $direction) use (&$branches) {
|
|
|
|
if ($direction['educational_institution_id'] == 3) {
|
|
$branches[] = $direction;
|
|
return $acc;
|
|
}
|
|
$acc[] = $direction;
|
|
return $acc;
|
|
}, []);
|
|
|
|
$groupedDirections = collect($directionsGroupWithOutBranch)
|
|
->reduce(function ($carry, $item, $key) use ($branches) {
|
|
[
|
|
'direction_id' => $directionId,
|
|
'direction_name' => $directionName,
|
|
'direction_code' => $directionCode,
|
|
'educational_institution_id' => $educational_institution_id,
|
|
'educational_institution_name' => $educationalInstitutionName,
|
|
'faculty_name' => $facultyName,
|
|
'education_level_name' => $educationLevelName,
|
|
'education_form_name' => $educationFormName,
|
|
'entrance_examination_score' => $entranceExaminationScore,
|
|
'examination_type_name' => $examinationTypeName,
|
|
'subject_type_name' => $subjectTypeName,
|
|
'subject_name' => $subjectName,
|
|
'direction_profile_name' => $directionProfileName,
|
|
'direction_budget_places' => $directionBudgetPlaces,
|
|
'direction_paid_places' => $directionPaidPlaces,
|
|
'direction_cost_paid_place' => $directionCostPaidPlace,
|
|
'direction_period' => $directionPeriod,
|
|
'direction_description' => $directionDescription,
|
|
] = $item;
|
|
|
|
$carry[$facultyName][$directionName]['id'] = $directionId;
|
|
$carry[$facultyName][$directionName]['code'] = $directionCode;
|
|
$carry[$facultyName][$directionName]['education_level'] = $educationLevelName;
|
|
$carry[$facultyName][$directionName]['education_form'][] = $educationFormName;
|
|
$carry[$facultyName][$directionName]['education_form'] = array_unique(
|
|
$carry[$facultyName][$directionName]['education_form']
|
|
);
|
|
$carry[$facultyName][$directionName]['entrance_examinations']
|
|
[$examinationTypeName][$subjectTypeName][$subjectName] = $entranceExaminationScore;
|
|
$carry[$facultyName][$directionName]['budget_places']
|
|
[$educationalInstitutionName][$directionProfileName][$educationFormName] = $directionBudgetPlaces;
|
|
|
|
$carry[$facultyName][$directionName]['paid_places'][$educationFormName] = $directionPaidPlaces;
|
|
$carry[$facultyName][$directionName]['cost_paid_place'][$educationFormName] = $directionCostPaidPlace;
|
|
$carry[$facultyName][$directionName]['period'][$educationFormName] = $directionPeriod;
|
|
$carry[$facultyName][$directionName]['description'] = $directionDescription;
|
|
|
|
foreach ($branches as $branch) {
|
|
[
|
|
'direction_name' => $directionNameBranch,
|
|
'educational_institution_name' => $educationalInstitutionNameBranch,
|
|
'direction_profile_name' => $directionProfileNameBranch,
|
|
'education_form_name' => $educationFormNameBranch,
|
|
'direction_budget_places' => $directionBudgetPlacesBranch
|
|
] = $branch;
|
|
if ($directionNameBranch === $directionName) {
|
|
$carry[$facultyName][$directionName]['budget_places']
|
|
[$educationalInstitutionNameBranch][$directionProfileNameBranch]
|
|
[$educationFormNameBranch] = $directionBudgetPlacesBranch;
|
|
}
|
|
}
|
|
|
|
|
|
return $carry;
|
|
}, []);
|
|
|
|
return view('new-design.bakalavr-special', compact(
|
|
'faculties',
|
|
'subjects',
|
|
'directionsWithInstitution',
|
|
'groupedDirections'
|
|
));
|
|
}
|
|
|
|
|
|
public function calculator($request)
|
|
{
|
|
return response()->json($request);
|
|
}
|
|
}
|