Skip to content
Snippets Groups Projects
Rating.php 5.36 KiB
Newer Older
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Teacher_Rating extends Controller_UserEnvi {
    
    // Получить из кука SGID выбранную ранее группу
    private function GetSGID($id)
    {
        # $id = disciplineID
        $SG_ar = json_decode(Cookie::get('SGID', null), true);
        if ($SG_ar !== null) 
            if (array_key_exists($id, $SG_ar))
                return $SG_ar[$id];
        }
        return 0;
    public function action_edit()
    {
        $twig = Twig::factory('teacher/rating');
        $twig->User = $this->UserInfo;
        $db = new Model_Teacher_Rating;
Антон Шалимов's avatar
Антон Шалимов committed
		
        // Шапка таблицы: структура УКД (модули и мероприятия)
		$structure = $db->GetMapForDiscipline($this->UserInfo['TeacherID'], $id);
        if($structure->count() == 0)
            throw HTTP_Exception::factory (404, "Для дисциплины с ID $id не создана УКД или такой дисциплины не существует!");
		$structureHandled = array();
        foreach($structure as $row)
                    $twig->SubjectName = $row['SubjectName'];
            if(!isset($structureHandled[$i]['SubmodulesCount']))
                $structureHandled[$i]['SubmodulesCount'] = 0;
                $structureHandled[$i]['MaxRate'] = 0;
            $j = $structureHandled[$i]['SubmodulesCount'] += 1;
            $structureHandled[$i]['MaxRate'] += (int) $row['MaxRate'];
            $structureHandled[$i]['ModuleTitle'] = $row['ModuleName'];
            $structureHandled[$i]['ModuleType'] = $row['ModuleType'];
            if ($row['ModuleType'] == "exam")
                $twig->examSubmoduleID = $row['SubmoduleID'];
                    
            $structureHandled[$i][$j]['SubmoduleID'] = $row['SubmoduleID'];
            $structureHandled[$i][$j]['Title'] = $row['SubModuleName'];
            //$structureHandled[$i][$j]['Description'] = $row['SubmoduleDescription']; // Описание
            $structureHandled[$i][$j]['MaxRate'] = (int) $row['MaxRate'];
        $structureHandled['ModulesCount'] = $i;
        $structureHandled['MaxRate'] = (int) $maxRate; 
        $twig->headerRate = $structureHandled;
        // end Шапка таблицы


        // Студенты и их баллы
Anton's avatar
Anton committed
        $students = $db->GetStudentsForRating($this->UserInfo['TeacherID'], $id);
PavelBegunkov's avatar
PavelBegunkov committed

        $rateHandled = array();
        $groupsHandled = array();
        $i_g = 0; $i_s = 0; $curGroup = 0;
PavelBegunkov's avatar
PavelBegunkov committed

            // Группа
            if ($curGroup !== $row['GroupID']) {
                $curGroup = $row['GroupID'];
                $i_g++;
                $rateHandled[$i_g]['GroupID'] = $row['GroupID'];
                $rateHandled[$i_g]['GroupNum'] = $row['GroupNum']; // № группы
                $rateHandled[$i_g]['GradeNum'] = $row['GradeNum']; // № курса
                $rateHandled[$i_g]['isAttached'] = $row['isAttached']; // #1

                if ($row['Degree'] == 'bachelor')
                    $rateHandled[$i_g]['GradeTitle'] = $row['GradeNum'].' курс';

                if ($row['Degree'] == 'specialist')
                    $rateHandled[$i_g]['GradeTitle'] = $row['GradeNum'].' курс';

                if ($row['Degree'] == 'master')
                    $rateHandled[$i_g]['GradeTitle'] = 'Магистратура, '.$row['GradeNum'].' год';

                $groupsHandled[$curGroup] = $rateHandled[$i_g]['GradeTitle']." ".$row['GroupNum']." группа"; 
            }
            // Студенты
            $i_s++;
            $rateHandled[$i_g]['Students'][$i_s]['ID'] = $row['ID'];
            $rateHandled[$i_g]['Students'][$i_s]['Last'] = $row['Last'];
            $rateHandled[$i_g]['Students'][$i_s]['First'] = $row['First'];
            $rateHandled[$i_g]['Students'][$i_s]['Second'] = $row['Second'];
            $rateHandled[$i_g]['Students'][$i_s]['isAttached'] = $row['isAttached']; // #1

            // Баллы студента
            $rate = $db->getMapForStudent($row['ID'], $id);
            $i_r = 0;
            $rateHandled[$i_g]['Students'][$i_s]['RateResult'] = 0;
            foreach($rate as $r) {
                $i_r++;
                $rateHandled[$i_g]['Students'][$i_s]['Rates'][$i_r]['SubmoduleID'] = $r['SubmoduleID'];
                $rateHandled[$i_g]['Students'][$i_s]['Rates'][$i_r]['Rate'] = $r['Rate'];
                $rateHandled[$i_g]['Students'][$i_s]['RateResult'] += $r['Rate'];
            }
        //echo Debug::vars($rateHandled);
        $twig->rateTable = $rateHandled;
        $twig->groups = $groupsHandled;
        $twig->studyGroupID = $this->GetSGID($id);

Антон Шалимов's avatar
Антон Шалимов committed
    public function action_exam()
Антон Шалимов's avatar
Антон Шалимов committed
    {
        $twig = Twig::factory('teacher/exam');
        $twig->User = $this->UserInfo;
        $id = $this->request->param('id');
        $db = new Model_Teacher_Rating;

        // Код для экзамена

        $this->response->body($twig);
    }