From 5a0752c941ee8fd86cd7f4de9a595b292f9771a8 Mon Sep 17 00:00:00 2001
From: pimka <pimka@ro.ru>
Date: Fri, 26 Dec 2014 13:12:36 +0300
Subject: [PATCH] file creator && xls

---
 .../Controller/Handler/FileCreator.php        |  72 +++++++++++-------
 ~dev_rating/docs/template credit.xls          | Bin 38912 -> 23040 bytes
 ~dev_rating/docs/template exam.xls            | Bin 39936 -> 27136 bytes
 3 files changed, 43 insertions(+), 29 deletions(-)

diff --git a/~dev_rating/application/classes/Controller/Handler/FileCreator.php b/~dev_rating/application/classes/Controller/Handler/FileCreator.php
index 82901f136..88a3841bf 100644
--- a/~dev_rating/application/classes/Controller/Handler/FileCreator.php
+++ b/~dev_rating/application/classes/Controller/Handler/FileCreator.php
@@ -173,31 +173,30 @@ class Controller_Handler_FileCreator extends Controller_Handler
     // Ведомость
     public function action_GenerateExcelStatement()
     {
-        // TODO CHECK!!!
-
-        // parameters
-        $disciplineID = $this->post->offsetGet('disciplineID');
+        // TODO CHECK!!!       
+		
+		// parameters
+		$disciplineID = $this->post->offsetGet('disciplineID');
         $groupID = $this->post->offsetGet('studyGroupID');
-
-        //$disciplineID = 266;
-        //$groupID = 11;
-        
-        // preparation
-        $db = $this->model;
+		// preparation
+		$db = $this->model;
         $info = $db->getFinalFormInfo($disciplineID, $groupID);
         $type = $info[0]['ExamType'];
-        // $specName = '';  <------- TODO
-        
-        $templateFile = DOCROOT."docs/template $type.xls";
+		$templateFile = DOCROOT."docs/template $type.xls";
         if (!file_exists($templateFile)) {
             exit("template wasn't found" . PHP_EOL); // TODO
         }
+		$objPHPExcel = PHPExcel_IOFactory::load($templateFile);
+        $objPHPExcel->setActiveSheetIndex(0);
+		$index = 1;
+		        
+        // $specName = '';  <------- TODO
         
         $result = $db->getRatesForStudentsGroup($this->user['TeacherID'], $disciplineID, $groupID);
         $rowsCount = count($result); // Получаем количество записей 
         
         $objPHPExcel = PHPExcel_IOFactory::load($templateFile);
-        $objPHPExcel->setActiveSheetIndex(0);
+		$objPHPExcel->setActiveSheetIndex(0);
         
     
         // fill header
@@ -221,13 +220,13 @@ class Controller_Handler_FileCreator extends Controller_Handler
         $objPHPExcel->getActiveSheet()->setCellValue("$range", date("d.m.y"));
         $range = $objPHPExcel->getNamedRange("Date")->getRange();
         if ($type == 'exam') 
-            $controlDate = "Дата экзамена \n__________";
+            $controlDate = '__________';
         else
-            $controlDate = "Дата зачета \n30.12.2014";
-        $objPHPExcel->getActiveSheet()->setCellValue("$range", $controlDate);
+            $controlDate = '30.12.2014';
+        $objPHPExcel->getActiveSheet()->setCellValue("$range", "Дата зачета \n$controlDate");
     
         // fill students rows
-        $startRow = 12; 
+        $startRow = 13; 
         $finalRow = 52; 
         $indPosition = 'A'; // Номер 
         $namePosition = 'B';  // ФИО 
@@ -236,8 +235,14 @@ class Controller_Handler_FileCreator extends Controller_Handler
         $bonusRatePosition = 'I'; // Бонусные баллы
         $rowNumber = $startRow;
         $index = 1;
+
         foreach($result as $studentInfo){
-            
+			
+			$objPHPExcel->getActiveSheet()->insertNewRowBefore($rowNumber + 1, 1);
+			$objPHPExcel->getActiveSheet()->getStyle("A".$rowNumber.":S".$rowNumber)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
+			
+			$objPHPExcel->getActiveSheet()->mergeCells("B".$rowNumber.":F".$rowNumber);
+			
             $lastName = $studentInfo['Last'];
             $firstName = $studentInfo['First'];
             $secondName = $studentInfo['Second'];
@@ -245,24 +250,33 @@ class Controller_Handler_FileCreator extends Controller_Handler
             $bonus = (int)$studentInfo['bonus'];
             $fullName = "$lastName  $firstName $secondName";
             $totalRate = $rate + $bonus;
-       
+			
+			if($totalRate < 60)
+			{
+				$tempRate = " ";
+				$tempStr = "не зачтено";
+			}	
+			else
+			{
+				$tempStr = "зачтено";
+				$tempRate = $totalRate;
+			}	
+			
             $objPHPExcel->getActiveSheet()->setCellValue("$indPosition$rowNumber", "$index")
                                   ->setCellValue("$namePosition$rowNumber", "$fullName")
-                                  ->setCellValue("$totalRatePosition$rowNumber", "$totalRate")
+                                  ->setCellValue("$totalRatePosition$rowNumber", "$tempRate")
                                   ->setCellValue("$semesterRatePosition$rowNumber","$rate")
-                                  ->setCellValue("$bonusRatePosition$rowNumber","$bonus");
+                                  ->setCellValue("$bonusRatePosition$rowNumber","$bonus")
+								  ->setCellValue("J".$rowNumber,$tempStr);
+								  
             $rowNumber++;
-            $index++;
+            $index++;				
         }    
-
-        // delete rest rows
-        $objPHPExcel->getActiveSheet()->removeRow($rowNumber+1, $finalRow);
-
-        $this->GetHeaders('FinalForm');
+	    $this->GetHeaders("FinalForm".$disciplineID."_".$groupID);
 
         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
         $objWriter->save('php://output');
-    }
+    } 
 
     // Выводим HTTP-заголовки
     public function GetHeaders($filename = 'excel')
diff --git a/~dev_rating/docs/template credit.xls b/~dev_rating/docs/template credit.xls
index c94873a0a043c1f27038116883bc280c31c100c6..3efe9c7f2eecc7d658d857fb90e482818417b15a 100644
GIT binary patch
delta 3394
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

literal 38912
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
QlPmu$$!3lAhs^)~0ix)jsQ>@~

diff --git a/~dev_rating/docs/template exam.xls b/~dev_rating/docs/template exam.xls
index b272e99f3b750f5b97c13fe99a67e7af4eb5f5eb..682553295565fb2e1931608da9f2bebac94b6c46 100644
GIT binary patch
delta 4023
zcmbVPZ){Ul6hH5^TVLC4?P$BMWrY?&Iza6Hg!n;VxD7UBbd+wZLxGNUv%0NiD<l$Q
zi{oGTvvxa#L}Q4F(NDyP)#wMa5MyFuh@df=5M%J8A54q}KbYt|=e1qRc)cd}=DmCG
z@0|NP=bd}rxv!Z|<;-_d?rAA-bNiQ))P_~^C-wg<EiLiY3IOW(=7Bb8K|f)9JMzPU
z8*A=LEqFpdD}O$m|4aXejC&N@f?~#-2B%>?<Rk!z#tsY^j3nA2nXtpuh}RWkadfLV
zYQX!7S;ZP^Bxr}vWHKk;HetYMuiGL?@KibETh=UtJ4_9D(O4wG8|sKw<85Otsoyge
z7B!mes#_{KEvb>gSq_x6OyyuBzGWhh^Y585b&?-<x}0>+y7_*@?Zh3fCLE!@*=50u
z>l$u#_u!zbF@MtSm9W9xh}TvRVtbQaZ?N=@=Jz!ze$$ywfcN_W76<Wg*Y&Y&dVoHN
z!!ekK1kBJi1}X4D1p471^<9J<gA*_bF_=;%L!=p}QH=V+Ptrs6j}X!6mMC&ygg4FY
z$|y)+fru<qACd9Z{eH}JZ(6vjUkECAt6T4<4FcL+TJrF(t9SpvI<QLnbT#nRw|`Ef
zPv0aNaqX}JtwDRfBY00D7R(JOy;kBl*caZ*1XkMb|NR^o?eV93r&6)$iCFYxd}<tm
zyLUtHWOO_hekB=$z5U&L`eLIHoQ}t)QqfdAF$Mj>P&l-!Hw>MLiHT?`rY;G^W)c%8
zRCzGTT?_O_ld<W8@l!F_*BuUbhgd%`-Io}RL2LU+GFf_hd_(Uw)zGXj(lsPW`R`AC
zAgAwhl%PYhfFfIgr48^fR;z*4X<!x&jAHf(Uwt{2E*f4{4i+(+24>g592!`I2Ikbj
z(v2FRO9OLjV5>E-CJoG^fvqWE>4(C<c7@{KU?K!yT)i)<Gl^y)dI<_L9lav##v-hv
zyPjs1+6>ee*Q}yfi``_tG=Pn!d%<25I^a2A-<Y0#8wY;!Mc6{Kg6T>I7@r}o6fsJ2
zHEA;!^KiX8uCgscfMycSiY;9lRO}rpg-)elBBs!lQ&e18GE!imDny!`q|Bf%GHfU*
z3444uv$1oSGMP#MJy{hwFs!;&MMQ__ISaw8BFQ0Y)kT?sv^ePsYZN$ymeauvN#J~7
zCpbn)YR4XJID5J?{UX^Z?1Vy^FOe-?R|g8k@MX14kVTHLLR^QrLKSBQc%CGsnL@Ja
z<(ZLWhUJ+FMuA^GP6h?cRCC9u3aFfEsHKIRfdvzFaFi5SwT4tJ5T!O!%qoRQj*@F7
zsjVn=khYr&Hc&yIr1H)!0Y~5k^)jl=MzYaOj0HPJvN5WzFtblaGByTB@XqUJ9Ydt@
z+fI%E=TsqT5sc3^*R!Ol!>mTyL@Ofr&g`?!Fbt?|kj|J=8zR~9GcH_nrdlNTaMkOA
z$_#5otMS%<u=7rd*j*m3l41?sHL(U4P@x8XeO4R=&g{wzzH{OzB+rT2x%O6Or(N=J
zB^GONbrNfEc@%2kYv;v&^7~qu;hXc~D0nZ3*c}+U5L$5x`^etPQ<%&9O6)NWY`q4y
zK?8fd94no|8_U7sDeTw4nl-RZ8rWtHY>Nh#enJD>s)0SJfdw?M77eUb18XZ_o0d=E
zMQ8;tft9zL(~>u+vc~C);)J++QIrra4{u>*cDBzOD%Rlb6>IQb3pMbkOJYAc3o0|T
zToy+mb6L#Jc~Y63qrgcc*5DKpYj8pdHE`~V*iTNi$_zhW5l0~~Ct`Qt$lNoV2gt%D
z#Yz_qmVY7ojIe-?4`lknphJ^#c?s{#ZNq`A6>GCS7|ZtKgRB=n&IZtv>%qyK-&w7G
z2*~ttP(?>5e_lv*x8g@RpTkTf65*_)qeHZgni+r3wOJH8o$KhNSLisdg<5Q%-{oWm
z`d3Eh{wi9>e;oLO&w;7=UP~J}!%W<h48NFfwt2{3#%$DB-wt;4E_m?4yjSM~AKuS8
Y^4k~2r4O(EBI{E-4&2E9dd*h#FJFAGK>z>%

delta 5993
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%0AB{<ZVV
Y{3~eg+lzm)SbzJ=S8lBTHQ8SMU(LlO?EnA(

-- 
GitLab