Skip to content
Snippets Groups Projects
Commit 3ace8172 authored by xamgore's avatar xamgore
Browse files

Refactor student/subject page

parent 0acb788f
Branches
Tags
No related merge requests found
......@@ -7,10 +7,13 @@ class Controller_Student_Subject extends Controller_Environment_Student
$discipline = Model_Discipline::load($id);
$rates = Model_Rating::getRates($id, $this->user->StudentID);
$map = self::generateDisciplineMapFrom($rates);
$this->twig->set([
'Discipline' => $discipline,
'Teachers' => self::getTeachersListOf($discipline),
'DisciplineMap' => self::generateDisciplineMapFrom($rates),
'DisciplineMap' => $map['Modules'],
'Submodules' => $map['Submodules'],
'Semester' => Model_Semesters::load($discipline->SemesterID),
])->set_filename(static::STUDENT . 'subject');
}
......@@ -27,17 +30,14 @@ class Controller_Student_Subject extends Controller_Environment_Student
}
private static function generateDisciplineMapFrom(Database_Result $rates) {
$id = 0; # not sure, what it is about :(
$sRate = 0; # completely legacy code, baby
$sMaxRate = 0;
$disMap = []; # not sure, what it is about :(
$examRate = 0; # completely legacy code, baby
$extraRate = 0;
$bonusRate = 0;
$bonusMaxRate = 0;
$examRate = 0;
$examMaxRate = 0;
$disMap = array();
$modulesCount = 0;
$disMap['Extra']['Rate'] = 0;
$submodules = [];
foreach ($rates as $row) {
switch ($row['ModuleType']) {
......@@ -72,46 +72,28 @@ class Controller_Student_Subject extends Controller_Environment_Student
break;
default:
$sRate += (int)$row['Rate'];
$sMaxRate += (int)$row['MaxRate'];
$id = $row['ModuleID'];
$module =& $disMap['Modules'][$id];
if ($row['ModuleID'] != $id) {
$id = $row['ModuleID'];
$modulesCount++;
}
$module['Title'] = $row['ModuleName'];
$module['Submodules'][] = $row['SubmoduleID'];
$module =& $disMap['Modules'][$modulesCount];
if (!isset($module['SubmodulesCount'])) {
$module['Rate'] = 0;
$module['MaxRate'] = 0;
$module['SubmodulesCount'] = 0;
}
$module['Title'] = $row['ModuleName'];
$module['Rate'] += (int)$row['Rate'];
$module['MaxRate'] += (int)$row['MaxRate'];
$module['SubmodulesCount']++;
$module['Submodules'][] = array(
$submodules[$row['SubmoduleID']] = [
'Date' => $row['Date'],
'Title' => $row['SubmoduleName'],
'Description' => $row['SubmoduleDescription'],
'Rate' => (int)$row['Rate'],
'MaxRate' => (int)$row['MaxRate'],
);
'Rate' => $row['Rate'],
'MaxRate' => $row['MaxRate'],
];
}
}
$disMap['ModulesCount'] = $modulesCount;
$disMap['SemesterRate'] = (int)$sRate;
$disMap['SemesterMaxRate'] = (int)$sMaxRate;
$disMap['ExamRate'] = (int)$examRate;
$disMap['ExamMaxRate'] = (int)$examMaxRate;
$disMap['BonusRate'] = (int)$bonusRate;
$disMap['BonusMaxRate'] = (int)$bonusMaxRate;
$disMap['ExtraRate'] = (int)$extraRate;
return $disMap;
return ['Modules' => $disMap, 'Submodules' => $submodules];
}
}
\ No newline at end of file
}
......@@ -63,22 +63,18 @@
{% set SecondConjuction = ' и' %}
{% endif %}
{% endif %}
{% if Discipline.Lectures %}
{{ Discipline.Lectures }}
{{ Rus.NumEnding(Discipline.Lectures, ['час', 'часа', 'часов']) }}
теории{{ FirstConjuction }}
{% endif %}
{% if Discipline.Practice %}
{{ Discipline.Practice }}
{{ Rus.NumEnding(Discipline.Practice, ['час', 'часа', 'часов']) }}
практики{{ SecondConjuction }}
{% endif %}
{% if Discipline.Labs %}
{{ Discipline.Labs }}
{{ Rus.NumEnding(Discipline.Labs, ['час', 'часа', 'часов']) }}
лабораторных занятий
{% endif %}
{% set Hours = [
{ Type: 'Lectures', Text: 'теории' ~ FirstConjuction },
{ Type: 'Practice', Text: 'практики' ~ SecondConjuction },
{ Type: 'Labs', Text: 'лабораторных занятий' }
] %}
{% for Hour in Hours if Discipline[Hour.Type] %}
{{ Discipline[Hour.Type] }}
{{ Rus.NumEnding(Discipline[Hour.Type], ['час', 'часа', 'часов']) }}
{{ Hour.Text }}
{% endfor %}
</div>
</div>
......@@ -86,44 +82,51 @@
<h3 class="blockTitle">Баллы за семестр</h3>
{% set SemesterRate = 0 %}
{% set SemesterMaxRate = 0 %}
<div class="blockMargin">
{% for Module in DisciplineMap.Modules %}
{% set ModuleRate = 0 %}
{% set ModuleMaxRate = 0 %}
<div class="tableTitle Module">
{{ Module.Title|default('Модуль ' ~ loop.index) }}
</div>
{% for Submodule in Module.Submodules %}
{% for SubmoduleID in Module.Submodules %}
{% set Submodule = Submodules[SubmoduleID] %}
<div class="submoduleBlock">
<div class="submoduleTitle">{{ Submodule.Title|default('Мероприятие ' ~ loop.index) }}</div>
<div class="submoduleTitle">
{{ Submodule.Title|default('Мероприятие ' ~ loop.index) }}
</div>
<div class="submoduleRate">
{{ Submodule.Rate }} / {{ Submodule.MaxRate }}
{{ +Submodule.Rate }} / {{ +Submodule.MaxRate }}
{% set ModuleRate = ModuleRate + Submodule.Rate %}
</div>
<div class="submodulePercent">
{% if Submodule.MaxRate <= 0 %}
{% else %}
{{ (Submodule.Rate * 100) // Submodule.MaxRate }} %
{% endif %}
{{ Submodule.MaxRate ? (Submodule.Rate * 100) // Submodule.MaxRate ~ ' %' : '—' }}
{% set ModuleMaxRate = ModuleMaxRate + Submodule.MaxRate %}
</div>
<div class="submoduleDate">
{% if Submodule.Date != 0 %}
{{ Submodule.Date|date('d.m.Y') }}
{% else %}
{% endif %}
{{ Submodule.Date ? Submodule.Date|date('d.m.Y') : '—' }}
</div>
</div>
{% if loop.last %}
<div class="moduleResult">
Итого за модуль: {{ Module.Rate }} / {{ Module.MaxRate }}
Итого за модуль: {{ ModuleRate }} / {{ ModuleMaxRate }}
{% set SemesterRate = SemesterRate + ModuleRate %}
{% set SemesterMaxRate = SemesterMaxRate + ModuleMaxRate %}
</div>
{% endif %}
{% endfor %}
{% endfor %}
</div>
{% if Discipline.Type == 'exam' %}
<h3 class="blockTitle">Допуск к экзамену</h3>
<div class="blockMargin">
{% set Admission = 38 - (DisciplineMap.SemesterRate + DisciplineMap.Extra.Rate) %}
{% set Admission = 38 - (SemesterRate + DisciplineMap.Extra.Rate) %}
{% if Admission > 0 %}
Для допуска к экзамену Вам необходимо получить еще {{ Admission }} {{ Rus.NumEnding(Admission, ['балл', 'балла', 'баллов']) }}.
{% else %}
......@@ -142,7 +145,7 @@
</div>
<div class="Middle totalRate">
Промежуточный итог: {{ DisciplineMap.SemesterRate + DisciplineMap.ExtraRate }} / {{ DisciplineMap.SemesterMaxRate }}
Промежуточный итог: {{ SemesterRate + DisciplineMap.ExtraRate }} / {{ SemesterMaxRate }}
</div>
<h3 class="blockTitle">Экзамен</h3>
......@@ -188,17 +191,14 @@
</div>
<div class="Final totalRate">
{% set Rating = DisciplineMap.SemesterRate + DisciplineMap.Extra.Rate + DisciplineMap.Bonus.Rate + DisciplineMap.Exam.Rate %}
{% if Rating > 100 %}
{% set Rating = 100 %}
{% endif %}
Итоговый рейтинг: {{ Rating }} / 100
{% set Rating = SemesterRate + DisciplineMap.Extra.Rate + DisciplineMap.Bonus.Rate + DisciplineMap.Exam.Rate %}
Итоговый рейтинг: {{ min(Rating, 100) }} / 100
</div>
{% elseif Discipline.Type == 'credit' %}
<h3 class="blockTitle">Зачет</h3>
<div class="blockMargin">
{% set Admission = 60 - (DisciplineMap.SemesterRate + DisciplineMap.Extra.Rate) %}
{% set Admission = 60 - (SemesterRate + DisciplineMap.Extra.Rate) %}
{% if Admission > 0 %}
Для получения зачета необходимо набрать ещё {{ Admission }} {{ Rus.NumEnding(Admission, ['балл', 'балла', 'баллов']) }}.
{% else %}
......@@ -241,11 +241,8 @@
</div>
<div class="Final totalRate">
{% set Rating = DisciplineMap.SemesterRate + DisciplineMap.Extra.Rate + DisciplineMap.Bonus.Rate %}
{% if Rating > 100 %}
{% set Rating = 100 %}
{% endif %}
Итоговый рейтинг: {{ Rating }} / 100
{% set Rating = SemesterRate + DisciplineMap.Extra.Rate + DisciplineMap.Bonus.Rate %}
Итоговый рейтинг: {{ min(Rating, 100) }} / 100
</div>
{% endif %}
{% endblock %}
\ No newline at end of file
{% endblock %}
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