<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Student_Subject extends Controller_UserEnvi {

    public function action_show()
    {
        $id = $this->request->param('id');
        $student = $this->UserInfo['StudentID'];
        $discipline = Model_Discipline::getMap($id, $student);
        $info = Model_Discipline::getInfo($id);
        
        // Информация о предмете
        $subject['Title'] = $info['SubjectName'];
        if($info['ExamType'] == 'exam')
        {
            $subject['Control'] = 'Экзамен';
        }
        elseif($info['ExamType'] == 'credit')
        {
            $subject['Control'] = 'Зачет';
        }
        $subject['ExamType'] = $info['ExamType'];
        $subject['LectureCount'] = $info['LectureCount'];
        $subject['PracticeCount'] = $info['PracticeCount'];
		$subject['LabCount'] = $info['LabCount'];
        $subject['DepName'] = $info['DepName'];
        $subject['Teachers'] = $this->getTeachersForDiscipline($id);
        $semester = Model_Semesters::getInfo($info['SemesterID']);
        $semester['Num'] = $semester['Num'] == 1 ? 'Осенний' : 'Весенний';
        $subject['Num'] = $semester['Num'];
        $subject['Year'] = $semester['Year'];
        // Учебная карта дисциплины
        $disciplineHandled = array();
        $sRate = 0; $sMaxRate = 0;
        $bonusMaxRate = 0;
        $examRate = 0; $examMaxRate = 0;
        $i = 0; $id = 0;
		$disciplineHandled['Extra']['Rate'] = 0;

        foreach($discipline as $row)
        {
            if($row['ModuleType'] == 'exam')
            {
                $disciplineHandled['Exam']['Rate'] = (int) $row['Rate'];
                $disciplineHandled['Exam']['MaxRate'] = (int) $row['MaxRate'];
                $disciplineHandled['Exam']['Date'] = $row['Date'];
                $examRate += $row['Rate'];
                $examMaxRate += (int) $row['MaxRate'];
            }
            else if($row['ModuleType'] == 'bonus')
            {
                $disciplineHandled['Bonus']['Description'] = $row['Description'];
                $disciplineHandled['Bonus']['Rate'] = (int) $row['Rate'];
                $disciplineHandled['Bonus']['MaxRate'] = (int) $row['MaxRate'];
                $disciplineHandled['Bonus']['Date'] = $row['Date'];
                $bonusRate += $row['Rate'];
                $bonusMaxRate += (int) $row['MaxRate'];
            }
			else if($row['ModuleType'] == 'extra') {
				$disciplineHandled['Extra']['Description'] = $row['Description'];
                $disciplineHandled['Extra']['Rate'] += (int) $row['Rate'];
                $extraRate += (int) $row['Rate'];
			}
			
            else
            {
                if($row['ModuleID'] != $id)
                {
                    $i++;
                    $id = $row['ModuleID'];
                }

                if(!isset($disciplineHandled['Modules'][$i]['SubmodulesCount']))
                {
                    $disciplineHandled['Modules'][$i]['SubmodulesCount'] = 0;
                    $disciplineHandled['Modules'][$i]['Rate'] = 0;
                    $disciplineHandled['Modules'][$i]['MaxRate'] = 0;
                }

                $j = $disciplineHandled['Modules'][$i]['SubmodulesCount'] += 1;
                $disciplineHandled['Modules'][$i]['Rate'] += (int) $row['Rate'];
                $disciplineHandled['Modules'][$i]['MaxRate'] += (int) $row['MaxRate'];
                $disciplineHandled['Modules'][$i]['Title'] = $row['ModuleName'];

                $disciplineHandled['Modules'][$i]['Submodules'][$j]['Title'] = $row['SubmoduleName'];
                $disciplineHandled['Modules'][$i]['Submodules'][$j]['Description'] = $row['SubmoduleDescription'];
                $disciplineHandled['Modules'][$i]['Submodules'][$j]['Rate'] = (int) $row['Rate'];
                $disciplineHandled['Modules'][$i]['Submodules'][$j]['Date'] = $row['Date'];
                $disciplineHandled['Modules'][$i]['Submodules'][$j]['MaxRate'] = (int) $row['MaxRate'];
                $sRate += (int) $row['Rate'];
                $sMaxRate += (int) $row['MaxRate'];
            }

        }
        $disciplineHandled['ModulesCount'] = $i;

        $disciplineHandled['SemesterRate'] = (int) $sRate;
        $disciplineHandled['SemesterMaxRate'] = (int) $sMaxRate;
        $disciplineHandled['ExamRate'] = (int) $examRate;
        $disciplineHandled['ExamMaxRate'] = (int) $examMaxRate;
        $disciplineHandled['BonusRate'] = (int) $bonusRate;
        $disciplineHandled['BonusMaxRate'] = (int) $bonusMaxRate;
        $disciplineHandled['ExtraRate'] = (int) $extraRate;

        // ПРЕДСТАВЛЕНИЕ 
        $twig = Twig::factory('student/subject');
        $twig->User = $this->UserInfo;
        $twig->Discipline = $subject;
        $twig->DisciplineMap = $disciplineHandled;

        $this->response->body($twig);
    }
    
    protected function getTeachersForDiscipline($id) {
        $teachers = Model_Teachers::ofDiscipline($id);
        $teachersHandled = array(); $i = 0;
        foreach ($teachers as $teacher)
        {
            $i++;
            $teachersHandled[$i] = $teacher['LastName'].' '.$teacher['FirstName'].' ';
            if(!empty($teacher['SecondName']))
            {
                $teachersHandled[$i] .= $teacher['SecondName'];
            }
        }
        return $teachersHandled;
    }        
}