From 4bbfbe87fe0a665c38590c2233dd66053e9132a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D1=81=D0=BB=D0=B0=D0=B2=20?= =?UTF-8?q?=D0=AF=D0=BA=D0=BE=D0=B2=D0=BB=D0=B5=D0=B2?= <vlad309523@gmail.com> Date: Sat, 14 Oct 2017 10:13:28 +0300 Subject: [PATCH] Refactor discipline api --- .../classes/Controller/Api/V0/StudyPlan.php | 100 +++++++++--------- .../classes/Controller/Api/V0/Teacher.php | 3 +- 2 files changed, 52 insertions(+), 51 deletions(-) diff --git a/~dev_rating/application/classes/Controller/Api/V0/StudyPlan.php b/~dev_rating/application/classes/Controller/Api/V0/StudyPlan.php index 59e3133d0..1c07f18cb 100644 --- a/~dev_rating/application/classes/Controller/Api/V0/StudyPlan.php +++ b/~dev_rating/application/classes/Controller/Api/V0/StudyPlan.php @@ -1,109 +1,109 @@ <?php class Controller_Api_V0_StudyPlan extends Controller_Handler_Api { - private function normalizeDisciplinesData($discipline, $facultyID) { - if (!isset($discipline->subjectID) && isset($discipline->externalID)) { - $discipline->subjectID = Model_Subject::withExternalID($discipline->externalID, $discipline->name, '', $facultyID); + private function normalizeDisciplinesData($disciplineData, $facultyID) { + if (!isset($disciplineData->subjectID) && isset($disciplineData->externalID)) { + $disciplineData->subjectID = Model_Subject::withExternalID($disciplineData->externalID, $disciplineData->name, '', $facultyID); } - foreach ($discipline->teachers as $teacher) { - if (empty($teacher->hashSnils)) { + foreach ($disciplineData->teachers as $teacherData) { + if (empty($teacherData->hashSnils)) { Log::instance()->add(Log::WARNING, '{0} {1}: {2}', array( '{0}' => 'SYNC_DISCIPLINES', '{1}' => 'Discipline with empty teacher\'s hash INILA', - '{2}' => json_encode($discipline), + '{2}' => json_encode($disciplineData), )); } else { - $ID = Model_Teacher::withINILA($teacher->hashSnils); + $ID = Model_Teacher::withINILA($teacherData->hashSnils); if ($ID != -1) { - $discipline->teacherIDs[] = $ID; + $disciplineData->teacherIDs[] = $ID; } } } - if (empty($discipline->teacherIDs)) { - if (!empty($discipline->teachers)) { + if (empty($disciplineData->teacherIDs)) { + if (!empty($disciplineData->teachers)) { Log::instance()->add(Log::WARNING, '{0} {1}: {2}', array( '{0}' => 'SYNC_DISCIPLINES', '{1}' => 'Discipline without teachers', - '{2}' => json_encode($discipline), + '{2}' => json_encode($disciplineData), )); } } - switch ($discipline->type) { + switch ($disciplineData->type) { case 'Ркзамен': - $discipline->type = Model_Discipline::EXAM; + $disciplineData->type = Model_Discipline::EXAM; break; case 'Зачет': - $discipline->type = Model_Discipline::CREDIT; + $disciplineData->type = Model_Discipline::CREDIT; break; default: throw new InvalidArgumentException('Discipline has bad type'); } - return $discipline; + return $disciplineData; } - private function processStudyPlan($studyPlan, $year, $facultyID) { - if (!isset($studyPlan->id) && isset($studyPlan->externalID)) { - $ID = Model_Plan::withExternalID($studyPlan->externalID); + private function processStudyPlan($studyPlanData, $year, $facultyID) { + if (!isset($studyPlanData->id) && isset($studyPlanData->externalID)) { + $ID = Model_Plan::withExternalID($studyPlanData->externalID); if ($ID == -1) { - $studyPlan->planModel = Model_Plan::make() - ->externalID($studyPlan->externalID) + $studyPlanData->planModel = Model_Plan::make() + ->externalID($studyPlanData->externalID) ->year($year) ->faculty($facultyID) ->create(); } else { - $studyPlan->planModel = Model_Plan::load($ID); + $studyPlanData->planModel = Model_Plan::load($ID); } } - foreach ($studyPlan->disciplines as &$discipline) { + foreach ($studyPlanData->disciplines as &$disciplineData) { try { - $discipline = $this->normalizeDisciplinesData($discipline, $facultyID); + $disciplineData = $this->normalizeDisciplinesData($disciplineData, $facultyID); } catch (Exception $e) { Log::instance()->add(Log::WARNING, '{0} {1}: {2}', array( '{0}' => 'SYNC_DISCIPLINES', '{1}' => $e->getMessage(), - '{2}' => json_encode($discipline), + '{2}' => json_encode($disciplineData), )); - $discipline = null; + $disciplineData = null; } } - return $studyPlan; + return $studyPlanData; } - private function processDiscipline($discipline, $semesterID, $facultyID) { - if (isset($discipline->subjectID)) { - $disciplineModel = Model_Discipline::find($facultyID, $semesterID, $discipline->subjectID, $discipline->type); + private function processDiscipline($disciplineData, $semesterID, $facultyID) { + if (isset($disciplineData->subjectID)) { + $discipline = Model_Discipline::find($facultyID, $semesterID, $disciplineData->subjectID, $disciplineData->type); } $lTeacherIDs = []; - if (!empty($disciplineModel)) { - $disciplineModel->update(); + if (!empty($discipline)) { + $discipline->update(); // Сравнить СЃРїРёСЃРѕРє пришедших преподавателей Рё тех, которые уже прикреплены - if (!empty($discipline->teacherIDs)) { - $lTeacherIDs = array_diff($discipline->teacherIDs, $disciplineModel->getTeachers()->as_array()); + if (!empty($disciplineData->teacherIDs)) { + $lTeacherIDs = array_diff($disciplineData->teacherIDs, $discipline->getTeachers()->as_array()); } } else { - if (empty($discipline->teacherIDs)) { + if (empty($disciplineData->teacherIDs)) { throw new InvalidArgumentException('Cannot create discipline without teachers'); } - $disciplineModel = Model_Discipline::make() - ->author($discipline->teacherIDs[0]) - ->subject($discipline->subjectID) + $discipline = Model_Discipline::make() + ->author($disciplineData->teacherIDs[0]) + ->subject($disciplineData->subjectID) ->semester($semesterID) - ->type($discipline->type) + ->type($disciplineData->type) ->faculty($facultyID) ->create(); - $lTeacher = $disciplineModel->getTeachers()->as_array(); + $lTeacher = $discipline->getTeachers()->as_array(); foreach ($lTeacher as $teacher) { $lTeacherIDs[] = $teacher['ID']; } @@ -111,30 +111,30 @@ class Controller_Api_V0_StudyPlan extends Controller_Handler_Api { foreach ($lTeacherIDs as $teacherID) { $teacher = Model_Teacher::with($teacherID); - $disciplineModel->bind($teacher); + $discipline->bind($teacher); } - return (int)$disciplineModel->ID; + return (int)$discipline->ID; } private function processDisciplines($studyPlan, $semesterID, $facultyID) { - $res = []; + $disciplineIDs = []; - foreach ($studyPlan->disciplines as $discipline) { - if ($discipline == null) continue; + foreach ($studyPlan->disciplines as $disciplineData) { + if (is_null($disciplineData)) continue; try { - $res[] = $this->processDiscipline($discipline, $semesterID, $facultyID); + $disciplineIDs[] = $this->processDiscipline($disciplineData, $semesterID, $facultyID); } catch (Exception $e) { Log::instance()->add(Log::WARNING, '{0} {1}: {2}', array( '{0}' => 'SYNC_DISCIPLINES', '{1}' => $e->getMessage(), - '{2}' => json_encode($discipline), + '{2}' => json_encode($disciplineData), )); } } - return $res; + return $disciplineIDs; } // /** @@ -158,9 +158,9 @@ class Controller_Api_V0_StudyPlan extends Controller_Handler_Api { $semesterID = (int)Model_Semesters::find($year, (int)$data->semester)->ID; $facultyID = Model_Faculties::getIdByExternalID($data->faculty); - foreach ($data->plans as $item) { - $planData = $this->processStudyPlan($item, $year, $facultyID); - $res[] = $this->processDisciplines($planData, $semesterID, $facultyID); + foreach ($data->plans as $studyPlanData) { + $studyPlanData = $this->processStudyPlan($studyPlanData, $year, $facultyID); + $res[] = $this->processDisciplines($studyPlanData, $semesterID, $facultyID); } } else { throw new InvalidArgumentException('No batch data received!'); diff --git a/~dev_rating/application/classes/Controller/Api/V0/Teacher.php b/~dev_rating/application/classes/Controller/Api/V0/Teacher.php index f717d5d77..8e8a37199 100644 --- a/~dev_rating/application/classes/Controller/Api/V0/Teacher.php +++ b/~dev_rating/application/classes/Controller/Api/V0/Teacher.php @@ -235,8 +235,9 @@ class Controller_Api_V0_Teacher extends Controller_Handler_Api { $facultyID = Model_Faculties::getIdByExternalID($data->faculty); foreach ($data->teachers as $teacherData) { + $teacherData->facultyID = $facultyID; + try { - $teacherData->facultyID = $facultyID; $teacherData = $this->normalizeTeacherData($teacherData); if (isset($teacherData->id)) { -- GitLab