<?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) ]); } }