Skip to content
Snippets Groups Projects
Commit 1ec1caa4 authored by xamgore's avatar xamgore
Browse files

Refactor exam & extra fields

parent b63f6309
Branches
Tags
No related merge requests found
......@@ -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];
}
}
......@@ -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">&nbsp;</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">Экзамен по курсу &laquo;{{ Discipline.SubjectName|default('—') }}&raquo;</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 %}
Поздравляем, Вы получили зачет по курсу &laquo;{{ Discipline.SubjectName|default('—') }}&raquo;!
{% 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">
Зачет по курсу &laquo;{{ Discipline.SubjectName|default('—') }}&raquo;
</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">&nbsp;</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 %}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment