diff --git a/~dev_rating/application/classes/Controller/Handler/FileCreator.php b/~dev_rating/application/classes/Controller/Handler/FileCreator.php index 95e27fc28d5ee455782a43d295a876aa41ebe019..06aa846633f11c29961916263c5230d076ab007b 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 Binary files a/~dev_rating/docs/template exam.xls and b/~dev_rating/docs/template exam.xls differ