From 9f3958e90d8ed176600369cd5ceac091006364c7 Mon Sep 17 00:00:00 2001 From: xamgore <xamgore@ya.ru> Date: Fri, 30 Oct 2015 02:34:18 +0300 Subject: [PATCH] Reduce duplicate code --- .../classes/Controller/Student/Subject.php | 44 ++++++------------- .../application/views/student/subject.twig | 20 ++++----- 2 files changed, 24 insertions(+), 40 deletions(-) diff --git a/~dev_rating/application/classes/Controller/Student/Subject.php b/~dev_rating/application/classes/Controller/Student/Subject.php index 906ef03af..18173029f 100644 --- a/~dev_rating/application/classes/Controller/Student/Subject.php +++ b/~dev_rating/application/classes/Controller/Student/Subject.php @@ -14,6 +14,7 @@ class Controller_Student_Subject extends Controller_Environment_Student 'Teachers' => self::getTeachersListOf($discipline), 'DisciplineMap' => $map['Modules'], 'Submodules' => $map['Submodules'], + 'ExtraRate' => $map['ExtraRate'], 'Semester' => Model_Semesters::load($discipline->SemesterID), ])->set_filename(static::STUDENT . 'subject'); } @@ -30,62 +31,45 @@ class Controller_Student_Subject extends Controller_Environment_Student } private static function generateDisciplineMapFrom(Database_Result $rates) { - $disMap = []; # not sure, what it is about :( + $map = []; # not sure, what it is about :( $extraRate = 0; # completely legacy code, baby $submodules = []; $modules = []; foreach ($rates as $row) { + $submodules[$row['SubmoduleID']] = [ + 'Title' => $row['SubmoduleName'], + 'MaxRate' => $row['MaxRate'], + 'Rate' => $row['Rate'], + 'Date' => $row['Date'], + ]; + switch ($row['ModuleType']) { case 'exam': - $disMap['Exam'] = $row['SubmoduleID']; - - $submodules[$row['SubmoduleID']] = [ - 'Rate' => $row['Rate'], - 'MaxRate' => $row['MaxRate'], - 'Date' => $row['Date'], - ]; + $map['Exam'] = $row['SubmoduleID']; break; case 'bonus': - $disMap['Bonus'] = $row['SubmoduleID']; - - $submodules[$row['SubmoduleID']] = [ - 'Rate' => $row['Rate'], - 'MaxRate' => $row['MaxRate'], - 'Date' => $row['Date'], - ]; + $map['Bonus'] = $row['SubmoduleID']; break; case 'extra': - $submodules[$row['SubmoduleID']] = [ - 'Rate' => $row['Rate'], - 'MaxRate' => $row['MaxRate'], - 'Date' => $row['Date'], - ]; break; default: $module =& $modules[$row['ModuleID']]; $module['Title'] = $row['ModuleName']; $module['Submodules'][] = $row['SubmoduleID']; - - $submodules[$row['SubmoduleID']] = [ - 'Date' => $row['Date'], - 'Title' => $row['SubmoduleName'], - 'Rate' => $row['Rate'], - 'MaxRate' => $row['MaxRate'], - ]; } } foreach ($submodules as &$s) { - if ($s['ModuleType'] === 'Extra') + if ($s['ModuleType'] === 'extra') $extraRate += $s['Rate']; } - $disMap['Modules'] = $modules; + $map['Modules'] = $modules; - return ['Modules' => $disMap, 'Submodules' => $submodules, 'ExtraRate' => $extraRate]; + return ['Modules' => $map, 'Submodules' => $submodules, 'ExtraRate' => $extraRate]; } } diff --git a/~dev_rating/application/views/student/subject.twig b/~dev_rating/application/views/student/subject.twig index 05d444092..ca507f3fa 100644 --- a/~dev_rating/application/views/student/subject.twig +++ b/~dev_rating/application/views/student/subject.twig @@ -126,17 +126,17 @@ {% if Discipline.Type == 'exam' %} <h3 class="blockTitle">Допуск Рє экзамену</h3> <div class="blockMargin"> - {% set Admission = 38 - (SemesterRate + DisciplineMap.ExtraRate) %} + {% set Admission = 38 - (SemesterRate + ExtraRate) %} {% if Admission > 0 %} Для РґРѕРїСѓСЃРєР° Рє экзамену Вам необходимо получить еще {{ Admission }} {{ Rus.NumEnding(Admission, ['балл', 'балла', 'баллов']) }}. {% else %} Поздравляем, заработанных Вами баллов достаточно для получения РґРѕРїСѓСЃРєР° Рє экзамену! {% endif %} - {% if DisciplineMap.ExtraRate %} + {% if ExtraRate %} <div class="blockMargin"> <div class="submoduleBlock topBorder"> <div class="submoduleTitle">Добор баллов</div> - <div class="submoduleRate">{{ DisciplineMap.ExtraRate }}</div> + <div class="submoduleRate">{{ ExtraRate }}</div> <div class="submodulePercent"> </div> <div class="submoduleDate">—</div> </div> @@ -145,7 +145,7 @@ </div> <div class="Middle totalRate"> - Промежуточный итог: {{ SemesterRate + DisciplineMap.ExtraRate }} / {{ SemesterMaxRate }} + Промежуточный итог: {{ SemesterRate + ExtraRate }} / {{ SemesterMaxRate }} </div> {% set Bonus = Submodules[DisciplineMap.Bonus] %} @@ -187,28 +187,28 @@ </div> <div class="Final totalRate"> - {% set Rating = SemesterRate + DisciplineMap.ExtraRate + Bonus.Rate + Exam.Rate %} + {% set Rating = SemesterRate + ExtraRate + Bonus.Rate + Exam.Rate %} Ртоговый рейтинг: {{ min(Rating, 100) }} / 100 </div> {% elseif Discipline.Type == 'credit' %} <h3 class="blockTitle">Зачет</h3> <div class="blockMargin"> - {% set Admission = 60 - (SemesterRate + DisciplineMap.ExtraRate) %} + {% set Admission = 60 - (SemesterRate + ExtraRate) %} {% if Admission > 0 %} Для получения зачета необходимо набрать ещё {{ Admission }} {{ Rus.NumEnding(Admission, ['балл', 'балла', 'баллов']) }}. {% else %} Поздравляем, Р’С‹ получили зачет РїРѕ РєСѓСЂСЃСѓ «{{ Discipline.SubjectName|default('—') }}»! {% endif %} - {% if DisciplineMap.ExtraRate or not Admission or Bonus is not empty %} + {% if ExtraRate or not Admission or Bonus is not empty %} <div class="tableTitle Extra"> Зачет РїРѕ РєСѓСЂСЃСѓ «{{ Discipline.SubjectName|default('—') }}» </div> - {% if DisciplineMap.ExtraRate or not Admission %} + {% if ExtraRate or not Admission %} <div class="blockMargin"> <div class="submoduleBlock topBorder"> <div class="submoduleTitle">Добор баллов</div> - <div class="submoduleRate">{{ DisciplineMap.ExtraRate }}</div> + <div class="submoduleRate">{{ +ExtraRate }}</div> <div class="submodulePercent"> </div> <div class="submoduleDate">—</div> </div> @@ -232,7 +232,7 @@ </div> <div class="Final totalRate"> - {% set Rating = SemesterRate + DisciplineMap.ExtraRate + Bonus.Rate %} + {% set Rating = SemesterRate + ExtraRate + Bonus.Rate %} Ртоговый рейтинг: {{ min(Rating, 100) }} / 100 </div> {% endif %} -- GitLab