Newer
Older
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_Office_Bill extends Controller_Environment_Office
{
public function before() {
parent::before();
Cookie::set('fD', 'true');
}
public static function makeTable($groupID, &$disciplines) {
$students = Model_Students::ofGroup($groupID);
$table = [];
foreach ($students as $stud) {
$table[$stud['ID']] = [
'Name' => $stud['LastName'] . ' ' . $stud['FirstName'] . ' ' . $stud['SecondName'],
'grades' => []
];
}
foreach ($disciplines as &$dis) {
$rates = Model_Rating::getRatesForStudentsGroupByStage2($dis['ID'], $groupID, 3);
if (!isset($table[$record['StudentID']])) continue; // skip fake
$exam = max($record['PreviousExam'], $record['Exam'], $record['PrePreviousExam']);
$rate = $record['Semester'] + $record['Bonus'] + $record['Extra'] + $exam;
if ($rate > 100) {
$rate = '100+';
}
$rateSet = isset($record['Semester']) || isset($record['Bonus'])
//Выдать "звездочку", если кто-то умудрился приписать студента к двум+ дисциплинам из одного compound
if (isset($table[$record['StudentID']]['grades'][-$dis['CompoundDiscID']])) {
$table[$record['StudentID']]['grades'][-$dis['CompoundDiscID']]['rating'] =
(string) $table[$record['StudentID']]['grades'][-$dis['CompoundDiscID']]['rating'] . '*';
continue;
}
}
$table[$record['StudentID']]['grades'][($dis['CompoundDiscID'] ? -$dis['CompoundDiscID'] : $dis['ID'])] = [
'rating' => $rateSet ? $rate : '–'
] + Model_Student::RecognizeDebtAndRepassing($dis, $record);
//check: student may not be attach to discipline but exist in group
if (!isset($table[$stud['ID']]['grades'][($dis['CompoundDiscID'] ? -$dis['CompoundDiscID'] : $dis['ID'])])) {
$table[$stud['ID']]['grades'][$dis['CompoundDiscID'] ? -$dis['CompoundDiscID'] : $dis['ID']] = [
'rating' => '–',
'debt' => false,
'repass' => false
public static function formHead(&$disciplines) {
foreach ($disciplines as $dis) {
if ($dis['CompoundDiscID']) {
if (!isset($res[-$dis['CompoundDiscID']]))
$res[-$dis['CompoundDiscID']] = $dis;
$res[$dis['ID']] = $dis;
}
}
return $res;
}
public function action_group() {
$id = $this->request->param('id');
$disciplines = Model_Group::with($id)->getDisciplines();
$this->twig->set_filename(static::OFFICE . 'bill')
'Disciplines' => self::formHead($disciplines),
'Table' => self::makeTable($id, $disciplines)
]);