diff --git a/app/Http/Controllers/admin/PageController.php b/app/Http/Controllers/admin/PageController.php index 29f4f6a..7b5865b 100644 --- a/app/Http/Controllers/admin/PageController.php +++ b/app/Http/Controllers/admin/PageController.php @@ -47,7 +47,129 @@ class PageController extends Controller 'directions.name', "educational_institutions.name as educational_institution_name" ]); - return view('new-design.bakalavr-special', compact('faculties', 'subjects', 'directionsWithInstitution')); + + $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' + )); }