An error occurred while loading the file. Please try again.
-
dmitry.s authored28dfca06
Forked from
it-lab / grade
Source project has a limited visibility.
Bill.php 2.61 KiB
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_DeanOffice_Bill extends Controller_Environment_DeanOffice
{
public function before() {
parent::before();
Cookie::set('fD', 'true');
}
public static function makeTable($groupID, &$disciplines) {
$students = Model_Students::ofGroup($groupID);
$table = [];
$iter = 0;
foreach ($disciplines as &$dis) {
$disInfo = Model_Discipline::getDisciplineRateInfo($dis['ID']);
//echo Debug::vars($disInfo);
$rates = Model_Rating::getRatesForStudentsGroup((int)$dis['ID'], $groupID);
foreach ($rates as $record) {
if (!isset($table[$record['ID']])) {
$table[$record['ID']] = [
'Name' => $record['LastName'] . ' ' . $record['FirstName'] . ' ' . $record['SecondName'],
'grades' => []
];
}
$rate = ($record['intermediate'] + $record['bonus'] + $record['exam']);
$rateSet = isset($record['intermediate'])||isset($record['bonus'])||isset($record['exam']);
$table[$record['ID']]['grades'][] = [
'subject' => $dis['SubjectName'],
'rating' => $rateSet ? $rate : '-',
'debt' => $rateSet && (float)($record['intermediate'] + $record['bonus'] + $record['exam']) < 0.6 * $disInfo['Current']
];
}
//check: student may not be attach to discipline
foreach ($students as $stud) {
if (!isset($table[$stud['ID']])) {
$table[$stud['ID']] = [
'Name' => $stud['LastName'] . ' ' . $stud['FirstName'] . ' ' . $stud['SecondName'],
'grades' => []
];
}
if (!isset($table[$stud['ID']]['grades'][$iter])) {
$table[$stud['ID']]['grades'][] = [
'subject' => $dis['SubjectName'],
'rating' => '-',
'debt' => false
];
}
}
$iter++;
}
array_multisort($table);
return $table;
}
public function action_index() {
$id = $this->request->param('id');
$disciplines = Model_Group::with($id)->getDisciplines();
$this->twig->set_filename(static::DEAN . 'bill')
->set([
'Disciplines' => $disciplines,
'Table' => self::makeTable($id, $disciplines)
]);
}
}