From 2d25a4de7707017173a8b6d5ff81e65df1713b7c Mon Sep 17 00:00:00 2001
From: RomanSteinberg <romanofficial@yandex.ru>
Date: Thu, 8 Jan 2015 17:42:39 +0300
Subject: [PATCH] FIX: exam form generation

---
 .../Controller/Handler/FileCreator.php        | 108 +++++++++++++++---
 ~dev_rating/docs/template exam.xls            | Bin 27136 -> 34304 bytes
 2 files changed, 92 insertions(+), 16 deletions(-)

diff --git a/~dev_rating/application/classes/Controller/Handler/FileCreator.php b/~dev_rating/application/classes/Controller/Handler/FileCreator.php
index 95e27fc28..06aa84663 100644
--- a/~dev_rating/application/classes/Controller/Handler/FileCreator.php
+++ b/~dev_rating/application/classes/Controller/Handler/FileCreator.php
@@ -214,13 +214,13 @@ class Controller_Handler_FileCreator extends Controller_Handler
         $index = 1;
 
         foreach($result as $studentInfo){
-            $this->addStudentToSheet($objPHPExcel, $studentInfo, $rowNumber, $index);
+            $this->addStudentToSheet($objPHPExcel, $studentInfo, $rowNumber, $index, $type);
             $rowNumber++;
             $index++;				
         }    
     }
 
-    protected function prepareSheetHeader(&$objPHPExcel, $examType, $data) {
+    protected function prepareSheetHeader(&$objPHPExcel, $disciplineType, $data) {
         $sheet = $objPHPExcel->getActiveSheet();
         
         $range = $objPHPExcel->getNamedRange("Discipline")->getRange();
@@ -236,31 +236,43 @@ class Controller_Handler_FileCreator extends Controller_Handler
 		
         $range = $objPHPExcel->getNamedRange("Grade")->getRange();
 		$degree = $data['Degree'];
-		$gradeName = $data['GradeNum'];
+        $gradeNum =  $data['GradeNum'];
+		$gradeName = $gradeNum;
 		if ($degree == 'master')
 			$gradeName = $gradeName."Рј";
         $sheet->setCellValue($range, $gradeName);
 		
         $range = $objPHPExcel->getNamedRange("Semester")->getRange();
-        $sheet->setCellValue($range, $data['SemesterNum']);
+        $semester = $data['SemesterNum'] + ($gradeNum -1)*2;
+        $sheet->setCellValue($range, $semester);
+
         $range = $objPHPExcel->getNamedRange("Year")->getRange();
         $sheet->setCellValue($range, $data['Year']);
         $range = $objPHPExcel->getNamedRange("CreationDate")->getRange();
-        $sheet->setCellValue($range, date("d.m.y"));
+        $sheet->setCellValue($range, date("dd.mm.yy"));
+        
         $range = $objPHPExcel->getNamedRange("Date")->getRange();
-        if ($examType == 'exam') {
-            $controlDate = '__________';
-        } else {
-            $controlDate = '30.12.2014';
+        if ($disciplineType == 'credit') {
+            $controlDate = "Дата зачета\n30.12.2014";
+        } elseif ($disciplineType == 'exam') {
+            $controlDate = "Дата экзамена\n__________";
         }
-        $sheet->setCellValue("$range", "Дата зачета \n$controlDate");
+        $sheet->setCellValue("$range", $controlDate);
     }
-    
-    protected function addStudentToSheet(&$objPHPExcel, $data, $row, $index) 
+
+    protected function addStudentToSheet($disciplineType, &$objPHPExcel, $data, $row, $index)
     {
-            $sheet = $objPHPExcel->getActiveSheet();
-        
-            $indPosition = 'A'; // Номер 
+        $sheet = $objPHPExcel->getActiveSheet();
+        if ($disciplineType == 'credit') {
+            addStudentInfoForCreditToSheet($sheet, $data, $row, $index);
+        } elseif ($disciplineType == 'exam') {
+            addStudentInfoForExamToSheet($sheet, $data, $row, $index);
+        }
+    }
+
+    protected function addStudentInfoForCreditToSheet(&$sheet, $data, $row, $index)
+    {
+            $indPosition = 'A'; // Номер
             $namePosition = 'B';  // ФИО 
             $totalRatePosition = 'G';  // Итоговый рейтинг 
             $semesterRatePosition  = 'H';   // Сумма баллов
@@ -299,7 +311,71 @@ class Controller_Handler_FileCreator extends Controller_Handler
                     ->setCellValue($semesterRatePosition.$row, $rate)
                     ->setCellValue($bonusRatePosition.$row, $bonus)
                     ->setCellValue("J".$row, $tempStr);
-        
+    }
+
+    protected function addStudentInfoForExamToSheet(&$sheet, $data, $row, $index)
+    {
+        $indPosition = 'A'; // Номер
+        $namePosition = 'B';  // ФИО
+        $totalRatePosition = 'G';  // Итоговый рейтинг
+        $semesterRatePosition  = 'H';   // Сумма баллов
+        $bonusRatePosition = 'I'; // Бонусные баллы
+        $examRatePosition = 'J'; // Баллы за экзамен
+        $rateOfFivePosition = 'K'; // Оценка за экзамен по пятибальной системе
+
+        $sheet  ->getStyle("A".$row.":S".$row)
+            ->getBorders()->getAllBorders()
+            ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
+        $sheet  ->getStyle("G".$row.":J".$row)
+            ->getAlignment()
+            ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
+        $sheet  ->getStyle("K".$row.":L".$row)
+            ->getAlignment()
+            ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $sheet  ->getStyle("M".$row.":N".$row)
+            ->getAlignment()
+            ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
+        $sheet  ->getStyle("O".$row.":U".$row)
+            ->getAlignment()
+            ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        $sheet  ->getStyle("R".$row.":R".$row)
+            ->getAlignment()
+            ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
+        $sheet->mergeCells("B".$row.":F".$row);
+
+        $lastName = $data['Last'];
+        $firstName = $data['First'];
+        $secondName = $data['Second'];
+        $rate = (int)$data['intermediate'];
+        $bonus = (int)$data['bonus'];
+        $examRate = 0; // TODO: get it from DB
+        $fullName = $lastName." ".$firstName." ".$secondName;
+        $totalRateValue = $rate + $examRate + $bonus;
+
+        if ($totalRateValue > 100)
+            $totalRateValue = 100;
+
+        $totalRate = '';
+        $rateOfFive = '';
+        if ($rate < 38) {
+            $totalRate = ' ';
+            $rateOfFive = 'РЅРµ СѓРґРѕРІР»';
+        } elseif (($rate >= 38) and ($examRate >= 22)) {
+            $totalRate = $totalRateValue;
+            $rateOfFive = 'СѓРґРѕРІР»';
+            if (($totalRateValue >= 75) and ($totalRateValue < 85))
+                $rateOfFive = 'С…РѕСЂ';
+            elseif ($totalRateValue >= 85)
+                $rateOfFive = 'отл';
+        }
+
+        $sheet  ->setCellValue($indPosition.$row, $index)
+            ->setCellValue($namePosition.$row, $fullName)
+            ->setCellValue($totalRatePosition.$row, $totalRate)
+            ->setCellValue($semesterRatePosition.$row, $rate)
+            ->setCellValue($bonusRatePosition.$row, $bonus)
+            ->setCellValue($examRatePosition.$row, $examRate)
+            ->setCellValue($rateOfFivePosition.$row, $rateOfFive);
     }
 	
     protected function getSheetName(&$disciplineInfo) {
diff --git a/~dev_rating/docs/template exam.xls b/~dev_rating/docs/template exam.xls
index 682553295565fb2e1931608da9f2bebac94b6c46..64d1f4aecb71304a86b2e6d26f12ca52f0dd731c 100644
GIT binary patch
literal 34304
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
DA!seb

literal 27136
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

-- 
GitLab