diff --git a/~dev_rating/application/classes/Controller/Student/Subject.php b/~dev_rating/application/classes/Controller/Student/Subject.php index 3ed45fc98094955e9689a06a3e0a9c07dab0743b..906ef03afd2cc678286de02dda4d5aed7e8b223d 100644 --- a/~dev_rating/application/classes/Controller/Student/Subject.php +++ b/~dev_rating/application/classes/Controller/Student/Subject.php @@ -31,30 +31,26 @@ class Controller_Student_Subject extends Controller_Environment_Student private static function generateDisciplineMapFrom(Database_Result $rates) { $disMap = []; # not sure, what it is about :( - $examRate = 0; # completely legacy code, baby - $extraRate = 0; - $examMaxRate = 0; - $disMap['Extra']['Rate'] = 0; + $extraRate = 0; # completely legacy code, baby $submodules = []; + $modules = []; foreach ($rates as $row) { switch ($row['ModuleType']) { case 'exam': - $examRate += $row['Rate']; - $examMaxRate += (int)$row['MaxRate']; + $disMap['Exam'] = $row['SubmoduleID']; - $disMap['Exam'] = array( - 'Rate' => (int)$row['Rate'], - 'MaxRate' => (int)$row['MaxRate'], + $submodules[$row['SubmoduleID']] = [ + 'Rate' => $row['Rate'], + 'MaxRate' => $row['MaxRate'], 'Date' => $row['Date'], - ); + ]; break; case 'bonus': $disMap['Bonus'] = $row['SubmoduleID']; $submodules[$row['SubmoduleID']] = [ - 'Description' => $row['Description'], 'Rate' => $row['Rate'], 'MaxRate' => $row['MaxRate'], 'Date' => $row['Date'], @@ -62,33 +58,34 @@ class Controller_Student_Subject extends Controller_Environment_Student break; case 'extra': - $extraRate += (int)$row['Rate']; - - $disMap['Extra']['Description'] = $row['Description']; - $disMap['Extra']['Rate'] += (int)$row['Rate']; + $submodules[$row['SubmoduleID']] = [ + 'Rate' => $row['Rate'], + 'MaxRate' => $row['MaxRate'], + 'Date' => $row['Date'], + ]; break; default: - $id = $row['ModuleID']; - $module =& $disMap['Modules'][$id]; - + $module =& $modules[$row['ModuleID']]; $module['Title'] = $row['ModuleName']; $module['Submodules'][] = $row['SubmoduleID']; $submodules[$row['SubmoduleID']] = [ 'Date' => $row['Date'], 'Title' => $row['SubmoduleName'], - 'Description' => $row['SubmoduleDescription'], 'Rate' => $row['Rate'], 'MaxRate' => $row['MaxRate'], ]; } } - $disMap['ExamRate'] = (int)$examRate; - $disMap['ExamMaxRate'] = (int)$examMaxRate; - $disMap['ExtraRate'] = (int)$extraRate; + foreach ($submodules as &$s) { + if ($s['ModuleType'] === 'Extra') + $extraRate += $s['Rate']; + } + + $disMap['Modules'] = $modules; - return ['Modules' => $disMap, 'Submodules' => $submodules]; + return ['Modules' => $disMap, 'Submodules' => $submodules, 'ExtraRate' => $extraRate]; } } diff --git a/~dev_rating/application/views/student/subject.twig b/~dev_rating/application/views/student/subject.twig index 67c20b9c962e245705f0c3ea19b839c684b38b55..05d4440928cf570d92e2f8e6b3eace72d3971ad1 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.Extra.Rate) %} + {% set Admission = 38 - (SemesterRate + DisciplineMap.ExtraRate) %} {% if Admission > 0 %} Для РґРѕРїСѓСЃРєР° Рє экзамену Вам необходимо получить еще {{ Admission }} {{ Rus.NumEnding(Admission, ['балл', 'балла', 'баллов']) }}. {% else %} Поздравляем, заработанных Вами баллов достаточно для получения РґРѕРїСѓСЃРєР° Рє экзамену! {% endif %} - {% if ExtraRate %} + {% if DisciplineMap.ExtraRate %} <div class="blockMargin"> <div class="submoduleBlock topBorder"> <div class="submoduleTitle">Добор баллов</div> - <div class="submoduleRate">{{ DisciplineMap.Extra.Rate }}</div> + <div class="submoduleRate">{{ DisciplineMap.ExtraRate }}</div> <div class="submodulePercent"> </div> <div class="submoduleDate">—</div> </div> @@ -149,6 +149,7 @@ </div> {% set Bonus = Submodules[DisciplineMap.Bonus] %} + {% set Exam = Submodules[DisciplineMap.Exam] %} <h3 class="blockTitle">Ркзамен</h3> <div class="blockMargin"> @@ -162,59 +163,52 @@ {{ +Bonus.Rate }} / {{ +Bonus.MaxRate }} </div> <div class="submodulePercent"> - {% if Bonus.MaxRate == 0 %} 0 {% else %} {{ (Bonus.Rate * 100) // Bonus.MaxRate }} % - {% endif %} + {{ +Bonus.MaxRate ? (Bonus.Rate * 100) // Bonus.MaxRate : 0 }} % </div> <div class="submoduleDate"> - {% if Bonus.Date != 0 %} - {{ Bonus.Date|date('d.m.Y') }} - {% else %} - — - {% endif %} + {{ Bonus.Date ? Bonus.Date|date('d.m.Y') : '—' }} </div> </div> {% endif %} - {% if DisciplineMap.Exam is not empty %} + {% if Exam is not empty %} <div class="submoduleBlock"> <div class="submoduleTitle">Ркзамен РїРѕ РєСѓСЂСЃСѓ «{{ Discipline.SubjectName|default('—') }}»</div> - <div class="submoduleRate">{{ DisciplineMap.Exam.Rate }} / {{ DisciplineMap.Exam.MaxRate }}</div> + <div class="submoduleRate"> + {{ +Exam.Rate }} / {{ +Exam.MaxRate }} + </div> <div class="submodulePercent"> - {% if DisciplineMap.Exam.MaxRate == 0 %} 0 {% else %} {{ (DisciplineMap.Exam.Rate * 100) // DisciplineMap.Exam.MaxRate }} % {% endif %} + {{ +Exam.MaxRate ? (Exam.Rate * 100) // Exam.MaxRate : 0 }} % </div> <div class="submoduleDate"> - {% if DisciplineMap.Exam.Date != 0 %} - {{ DisciplineMap.Exam.Date|date('d.m.Y') }} - {% else %} - — - {% endif %} + {{ Exam.Date ? Exam.Date|date('d.m.Y') : '—' }} </div> </div> {% endif %} </div> <div class="Final totalRate"> - {% set Rating = SemesterRate + DisciplineMap.Extra.Rate + Bonus.Rate + DisciplineMap.Exam.Rate %} + {% set Rating = SemesterRate + DisciplineMap.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.Extra.Rate) %} + {% set Admission = 60 - (SemesterRate + DisciplineMap.ExtraRate) %} {% if Admission > 0 %} Для получения зачета необходимо набрать ещё {{ Admission }} {{ Rus.NumEnding(Admission, ['балл', 'балла', 'баллов']) }}. {% else %} Поздравляем, Р’С‹ получили зачет РїРѕ РєСѓСЂСЃСѓ «{{ Discipline.SubjectName|default('—') }}»! {% endif %} - {% if ExtraRate or not Admission or Bonus is not empty %} + {% if DisciplineMap.ExtraRate or not Admission or Bonus is not empty %} <div class="tableTitle Extra"> Зачет РїРѕ РєСѓСЂСЃСѓ «{{ Discipline.SubjectName|default('—') }}» </div> - {% if ExtraRate or not Admission %} + {% if DisciplineMap.ExtraRate or not Admission %} <div class="blockMargin"> <div class="submoduleBlock topBorder"> <div class="submoduleTitle">Добор баллов</div> - <div class="submoduleRate">{{ DisciplineMap.Extra.Rate }}</div> + <div class="submoduleRate">{{ DisciplineMap.ExtraRate }}</div> <div class="submodulePercent"> </div> <div class="submoduleDate">—</div> </div> @@ -227,15 +221,10 @@ {{ +Bonus.Rate }} / {{ +Bonus.MaxRate }} </div> <div class="submodulePercent"> - {% if Bonus.MaxRate == 0 %} 0 {% else %} {{ (Bonus.Rate * 100) // Bonus.MaxRate }} % - {% endif %} + {{ +Bonus.MaxRate ? (Bonus.Rate * 100) // Bonus.MaxRate : 0 }} % </div> <div class="submoduleDate"> - {% if Bonus.Date != 0 %} - {{ Bonus.Date|date('d.m.Y') }} - {% else %} - — - {% endif %} + {{ Bonus.Date ? Bonus.Date|date('d.m.Y') : '—' }} </div> </div> {% endif %} @@ -243,7 +232,7 @@ </div> <div class="Final totalRate"> - {% set Rating = SemesterRate + DisciplineMap.Extra.Rate + Bonus.Rate %} + {% set Rating = SemesterRate + DisciplineMap.ExtraRate + Bonus.Rate %} Ртоговый рейтинг: {{ min(Rating, 100) }} / 100 </div> {% endif %}