From a864ed58dbf500ffe803595d93d0aa58b814ebe3 Mon Sep 17 00:00:00 2001
From: "Steinberg R.B. (and Co)" <dev_rating@users.mmcs.sfedu.ru>
Date: Thu, 18 Dec 2014 23:28:28 +0300
Subject: [PATCH] FIX: credit form generation

---
 .../Controller/Teacher/GenExamForm.php        |  70 -------------
 .../Controller/Teacher/GenFinalForm.php       |  92 ++++++++++++++++++
 .../classes/Model/Teacher/Rating.php          |  11 +++
 ~dev_rating/docs/template credit.xls          | Bin 33280 -> 33792 bytes
 ~dev_rating/docs/template exam.xls            | Bin 34304 -> 34304 bytes
 5 files changed, 103 insertions(+), 70 deletions(-)
 delete mode 100644 ~dev_rating/application/classes/Controller/Teacher/GenExamForm.php
 create mode 100644 ~dev_rating/application/classes/Controller/Teacher/GenFinalForm.php

diff --git a/~dev_rating/application/classes/Controller/Teacher/GenExamForm.php b/~dev_rating/application/classes/Controller/Teacher/GenExamForm.php
deleted file mode 100644
index 77131e0ac..000000000
--- a/~dev_rating/application/classes/Controller/Teacher/GenExamForm.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php defined('SYSPATH') or die('No direct script access.');
-
-class Controller_Teacher_GenExamForm extends Controller_UserEnvi {
-    
-    public function action_do()
-	{
-    
-		$db = new Model_Teacher_GenExamForm;
-    
-		// Нужно изменить getStudentsForDiscipline!!!!
-		$result = $db->getStudentsForDiscipline(1,1); // TODO: fix
-		$rowsCount = count($result); // Получаем количество записей 
-		$templateFile = "./docs/template credit.xls"; // TODO: choose exam or credit
-		if (!file_exists($templateFile)) {
-			exit("template wasn't found" . PHP_EOL);
-		}
-    
-		$objPHPExcel = PHPExcel_IOFactory::load($templateFile);
-		$objPHPExcel->setActiveSheetIndex(0);
-	
-		// fill header
-		$range = $objPHPExcel->getNamedRange("Discipline")->getRange();
-		$objPHPExcel->getActiveSheet()->setCellValue("$range", "");
-		$range = $objPHPExcel->getNamedRange("Subdivision")->getRange();
-		$range = $objPHPExcel->getNamedRange("Major")->getRange();	
-		$range = $objPHPExcel->getNamedRange("Teacher")->getRange();
-		$range = $objPHPExcel->getNamedRange("Course")->getRange();
-		$range = $objPHPExcel->getNamedRange("Semester")->getRange();
-		$range = $objPHPExcel->getNamedRange("Year")->getRange();
-		$range = $objPHPExcel->getNamedRange("CreationDate")->getRange();
-		$objPHPExcel->getActiveSheet()->setCellValue("$range", date("m.d.y"));
-		$range = $objPHPExcel->getNamedRange("Date")->getRange();
-		$objPHPExcel->getActiveSheet()->setCellValue("$range", "Дата зачета \n30.12.2014");
-	
-		// fill students rows
-		$startRow = 12; 
-		$finalRow = 52; 
-		$indPosition = 'A'; // Номер 
-		$namePosition = 'B';  // ФИО 
-		$totalRatePosition = 'C';  // Итоговый рейтинг 
-		$semesterRatePosition  = 'G';   // Сумма баллов
-		$bonusRatePosition = 'H'; // Бонусные баллы
-		$rowNumber = $startRow;
-		$index = 1;
-		for($i = 1; $i <= $rowsCount; ++$i){
-   
-			$lastName = $result[$i]['Last'];
-			$firstName = $result[$i]['First'];
-			$secondName = $result[$i]['Second'];
-			$rate = $result[$i]['intermediate'];
-			$bonus = $result[$i]['bonus'];
-			$fullName = "$lastName  $firstName $secondName";
-			$totalRate = $rate + $bonus;
-       
-			$objPHPExcel->getActiveSheet()->setCellValue("$indPosition$rowNumber", "$i")
-                                  ->setCellValue("$namePosition$rowNumber", "$fullName")
-								  ->setCellValue("$totalRatePosition$rowNumber", "$totalRate")
-                                  ->setCellValue("$semesterRatePosition$rowNumber","$rate")
-                                  ->setCellValue("$bonusRatePosition$rowNumber","$bonus");
-			$rowNumber++;
-		}    
-
-		// delete rest rows
-		$objPHPExcel->getActiveSheet()->removeRow($rowNumber+1, $finalRow);
-   
-		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
-		$objWriter->save(str_replace('.php', '.xls', __FILE__)); // TODO: change path
-   }
-}
-?>
\ No newline at end of file
diff --git a/~dev_rating/application/classes/Controller/Teacher/GenFinalForm.php b/~dev_rating/application/classes/Controller/Teacher/GenFinalForm.php
new file mode 100644
index 000000000..f5f70df25
--- /dev/null
+++ b/~dev_rating/application/classes/Controller/Teacher/GenFinalForm.php
@@ -0,0 +1,92 @@
+<?php defined('SYSPATH') or die('No direct script access.');
+
+class Controller_Teacher_GenFinalForm extends Controller_UserEnvi {
+    
+    public function action_do()
+	{
+		// parameters
+		//$disciplineID = $this->request->param('disciplineID');
+		//$groupID = $this->request->param('groupID');
+		$disciplineID = 266;
+		$groupID = 11;
+		
+		// preparation
+		$db = new Model_Teacher_Rating;
+		$info = $db->getFinalFormInfo($disciplineID, $groupID);
+		$type = $info[0]['ExamType'];
+		$specName = 
+		
+		$templateFile = "./docs/template $type.xls";
+		if (!file_exists($templateFile)) {
+			exit("template wasn't found" . PHP_EOL);
+		}
+		
+		$result = $db->getRatesForStudentsGroup($this->UserInfo['TeacherID'], $disciplineID, $groupID);
+		$rowsCount = count($result); // Получаем количество записей 
+		
+		$objPHPExcel = PHPExcel_IOFactory::load($templateFile);
+		$objPHPExcel->setActiveSheetIndex(0);
+		
+	
+		// fill header
+		$range = $objPHPExcel->getNamedRange("Discipline")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['SubjectName']);
+		$range = $objPHPExcel->getNamedRange("Subdivision")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['FacultyName']);
+		$range = $objPHPExcel->getNamedRange("Major")->getRange();	
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", "Специальность: ".$info[0]['SpecName']." ".$info[0]['SpecCode']);
+		$range = $objPHPExcel->getNamedRange("Teacher")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['LastName']." ".$info[0]['FirstName']." ".$info[0]['SecondName']);
+		$range = $objPHPExcel->getNamedRange("Grade")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['GradeNum']);
+		$range = $objPHPExcel->getNamedRange("Semester")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['SemesterNum']);
+		$range = $objPHPExcel->getNamedRange("Year")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['Year']);
+		$range = $objPHPExcel->getNamedRange("CreationDate")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", date("m.d.y"));
+		$range = $objPHPExcel->getNamedRange("Date")->getRange();
+		if ($type == 'exam') 
+			$controlDate = '__________';
+		else
+			$controlDate = '30.12.2014';
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", "Дата зачета \n$controlDate");
+	
+		// fill students rows
+		$startRow = 12; 
+		$finalRow = 52; 
+		$indPosition = 'A'; // Номер 
+		$namePosition = 'B';  // ФИО 
+		$totalRatePosition = 'G';  // Итоговый рейтинг 
+		$semesterRatePosition  = 'H';   // Сумма баллов
+		$bonusRatePosition = 'I'; // Бонусные баллы
+		$rowNumber = $startRow;
+		$index = 1;
+		foreach($result as $studentInfo){
+			
+			$lastName = $studentInfo['Last'];
+			$firstName = $studentInfo['First'];
+			$secondName = $studentInfo['Second'];
+			$rate = (int)$studentInfo['intermediate'];
+			$bonus = (int)$studentInfo['bonus'];
+			$fullName = "$lastName  $firstName $secondName";
+			$totalRate = $rate + $bonus;
+       
+			$objPHPExcel->getActiveSheet()->setCellValue("$indPosition$rowNumber", "$index")
+                                  ->setCellValue("$namePosition$rowNumber", "$fullName")
+								  ->setCellValue("$totalRatePosition$rowNumber", "$totalRate")
+                                  ->setCellValue("$semesterRatePosition$rowNumber","$rate")
+                                  ->setCellValue("$bonusRatePosition$rowNumber","$bonus");
+			$rowNumber++;
+			$index++;
+		}    
+
+		// delete rest rows
+		$objPHPExcel->getActiveSheet()->removeRow($rowNumber+1, $finalRow);
+   
+		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+		$objWriter->save('./FinalForm.xls'); 
+		// TODO: send to user
+   }
+}
+?>
\ No newline at end of file
diff --git a/~dev_rating/application/classes/Model/Teacher/Rating.php b/~dev_rating/application/classes/Model/Teacher/Rating.php
index 75a39fcbc..a57687d68 100644
--- a/~dev_rating/application/classes/Model/Teacher/Rating.php
+++ b/~dev_rating/application/classes/Model/Teacher/Rating.php
@@ -49,5 +49,16 @@ class Model_Teacher_Rating extends Model
         $sql = "SELECT `GetRateForDisc`('$studentID', '$disciplineID') AS `Num`;";
         return DB::query(Database::SELECT, $sql)->execute();
     }
+
+    public function getRatesForStudentsGroup($teacherID, $disciplineID, $groupID)
+    {
+        $sql = "CALL `getRatesForStudentsGroup`($teacherID, $disciplineID, $groupID)";
+        return DB::query(Database::SELECT, $sql)->execute();
+    }
+    public function getFinalFormInfo($disciplineID, $groupID)
+    {
+        $sql = "CALL `getFinalFormInfo`($disciplineID, $groupID)";
+        return DB::query(Database::SELECT, $sql)->execute();
+    }
     
 }
diff --git a/~dev_rating/docs/template credit.xls b/~dev_rating/docs/template credit.xls
index c6b984c2be6337e971f52db5b7efc0f49e24bdb6..da8a284b60ca7651076604854a04875df7488f74 100644
GIT binary patch
delta 2798
zcmb7`TWpj?6vzMb?WOyDyWQTqyIsZB;;meIHC)=#RnxSItzA|qg$f0stn}U$D3z8%
z6k;TVx+gIvg6NAe!9?*(ni#Py4~7RxXngVZpfBo!!Rm_-UZ`ij-ECK8$FL{!?VS0Y
z|CuxMO=kDxOWMhowdn@Yc%|{W5Fv7CKNd9rxV^NrBwJIeZwlLfk+-4#k+wfe7Q}RC
z_h|$d#1=YYe^Hw|Z2oRvFB}>WX`^aqltNCs`MUF#5C(+|KfUSFlfC(5ub94bxvjBc
zk3b!+vKHD6gR1mG?^+?SF@30PIWlcHWE9gYdNK*UXZ2W3H}q@{|5{Io{6-<BMKU={
zJQ{rI1F0w@eb7%A46fLG$M`%u?sw8_{#_!AMDSiwM(2G#`ne>ZN&`;445-S@LurV1
z1l#FCi9xG^e)`SdMw^2V(gy)2-44vtOrVO+aGNcuhzD2EmOv~05bzu2KrYwCA9^cT
z?2I9Du7J#|L9<l!(nv!OEjEnnEwOzEdN%_OGtwAw1a@u&Jgm652?+D59;gSt<gGL5
zlgCea>zI7B7dSfrl*i1rC+f<@YC3hWDT4eQ$Q_<!wS#TOzT!LKLfo<9>(GI$72kk?
z8DqtF!_Dzj6J4K|KAeLb#A!5IS(ZLpfC8-66JlsyE&-@BuSH+gdiPk%pS9K_u*WhR
z{^HpHJ31kQXK_D29qirNwqrZ;EscD|J=~<`VF<P!bfJr`^%c-UpIx@85b~0-`55JL
zVR>?2x;S1cD|nZL)cvm|X0=&bnL%o8YVFi=(uCM<iRJ5*V!K-WFRg=BTT#SMxnU00
zhEZr`lAeYEw!~&SICB_&W>d3Pr~^CLoJnC8!(vM)PlgNa?6-4VBCVVIK8qGI^{|(2
ziDfvMKaGGDRl#`$d;hf#ba=pzlu`FU{nRsDV`2p^mhI(A<z9HX3=R7%dzPn_rMNip
zL1ZsSXW=;}DXoi{EF%%AqmN%SAT)Wj4fH3+-56m%73INTr#$IAp-i8RAq?}>i4-}U
zekC*)gM8*wk$F~RKI{CJemC~xfMvai;t-<LKlqS{5)IahLv($xv1li2e`%5nGk9UU
zEbFGg(6FxsDSK+U$0KxUD3FoeRInuls~papvq!<sE7+WZEh^Z3BbjUIP_QWldtbr6
zRj{1V%(XNr*sy|KQm~r}wxnQ{v5a+^J+Ze1&ByGbny$nOM2+>VrC*;f&v=a19L|`I
zx)toKf_<!DKPg!7Nak9eRIuX;c3Hu`Q84$>%(c`jSige3p<tgW*dIp&Q>hE01^>7r
z(9A!4vsjC2zFe9SNnW|z(yoy^$Jg9l{07wCh2RS=D9rcrgrMozJro|>w8n4!%nQCO
zxtIGrG%dt6SMz=EKn<Jxu4UtI+BRNo^TJE6@pk(3SSy`7Rz<tHt>boUEJPQ_!gPB4
zIGt=>{P2Z$HCv<&ba~=Y9j#vL@2HK+?7sNqgvh4J$*uI&<T|_j0~J3pZ_b@~%=S0%
C;s{It

delta 2988
zcmb7GZ){Ul6hHU%_4W0w?bcG(*A?qf1G>!7MNFoytZ^*S1ScIZ9h35Jqi%Ft7!0;K
z_9_x$_&{JM8a|k*d>|&8nc0LGLYDc(KM4|J3>r-ci4lz-$i6CpdG3Avx41sqp0w}Y
z`}_UQJ@?#u`fmDNDScWx-^yC&qu(&rhIZ*s?}O##W&Yg)0HQq~x3L+y&zrcH{_v-|
zAJ|7n4xjy<o>3f=-;w5yX8x6%m|_Fiw*LS&E6L1z$`WIjFsA7^t2(o-#cZn<Z>v>e
ztk%U~GhCBs9_jiej5z(CM#i9}cxZi|Su`BeYVoWy>jXa&EmGrkr<>@%I!%$T`Qbdv
zIwy%sf<W;=j-?e3>iB_15oa!IKf0L%ztRJ^q$@bB?-tM5;5IxJ+KNgjf;a0T_;pCf
z+PXzN7tpaY<iq-)hFzgXJQLLMPOt%6f?M?|)eloD#gYGvK-b1=7c=s@Og#(Zm#uq4
z>o}%3@(gGn85=#?|2%*lebMR6=h0Ss(ANUsB1-pj0NZI{w+Q})vX?@+{cTS(A*1^M
z`ceRqBN=Sp{5ZRU-yUjv@rtV&c#=<&+D-;ip|5}fAQ$=$aKMbc&{si)AsL@ahJ7>c
z!f+K-!EZA5B%8d&!_`m?fESaSq$j-iT{6s?Gk+y7Nd0@DhUQ-o(KFa1%m(*Cqfr@#
zz$4Jd=+{oY)hz`n@Cgmy(*%9F$0vc2C13ys@b+K`{~2@{A_~Fes~#YnGaD!ejPo99
z<}7rciOD^1t*v~mLCcbbm~R#r%jJtnOB)2Qz*_p{39^$m4u0W@_au0e%uJr0JjX%L
zV|ExOGnA~*L13)_`M#^rN&QZ8X}YbVc0izhLS57=HZuowHXsQ>!D^tB!l?Iu+YT!X
zPo-Wk1}Q{y0V=8Xii9lCKC85VeZuzBtUMBx{O$&Kp6!6w3CU?y!gv%W(+U0Hr5=+M
z(rIugJ6;8EP(R0V!LDv_Qg=bPcSAS4MpK(Es>ywUS_8Z2B<Gl3!Ss<%7y83+01gW4
zgI?%?UYr@)$a?YW&@-$D?+!)Rc9C|ejW0~2h3ycw6Jx_8MhE2V)qKkw;r<&%DRe+r
zPE*8LozD|g0pAccRe^w4ZY2|liZ1QHX#E{jwtU5W<4Oy1+2T)=@2il%rkHQQPI8p9
z)l<rgs*-?sNtVku_=<V)l`G(UUXGRUdF7Yj8w3=anNnWKB?K$jxh<%xkRQtP4PFZm
z-va*Lt0bUD%H=1rhbUaGAj^NWJbvcP=*J8X9`gqZNnUZt@Z7OrNo>IayK8}k$4dL`
zw7{k<usI9tmIdZHUOJX77TB-_Hfw?1u)rQzU`;1V$C)@0+)!fw=v4aPXV?Iz=~W(M
zI6qpCJH|JyVe~go?;l~3?GN~yZowUsaa1N_cyl6xm+5<aBI5AS|1YD<+tU*-<DK!B
zaBe(;?@zw<#ndN~jbD>LoqpDtzELCY(KcK!2WE^Z=E0LjT;sPu^ZJM18%=0WU(GD0
HW48YQ>Z%#2

diff --git a/~dev_rating/docs/template exam.xls b/~dev_rating/docs/template exam.xls
index 60ba31ce35f95af6d4087b0d694d292b7669f947..f0555930443b4a89ecd57bff78ecae6a2c92691d 100644
GIT binary patch
delta 1439
zcmbVMO-y4|6h8O$y~lg6rTmrBmO2iJF%tvQ@{=%=Awh{T8WJlk5JVgtMi^=N3&wzN
zrod*1vOo?C7ew7aOq>|QTey&PjB#NMF)T<-bi-yg6WzHm1k~@|KAL6{C!_D?{(R@0
z?>ndGzP{ykZFyb$YFw}U?X=K$nm80GXDxZgbNU_a&-c6&{aImXME!l7HYd2p)V+_*
z--S5g9w)}1Shj!q);~r0*a|9JG$g2l_Q56X;Dl3lB-|_nb(Nc%N|9ye9w*8l*uDtg
zRVT3dz^+92FLsd>b0V}Md~r}h8a0#~&ZC@iV~n>QRP60K--Y?JgvnpVYI(K+dt;an
z5)SVs9&E-;{we+pZ!})uXyPUQG~UXiiRXDTeu4jrhhwf4A=g6U(lbj>Z+!iuchu-z
z6zjZp^*RT;7ws44$Hs45Au_z_?j0lE(nS;kg)bA$qwf1~eUIi0aC7fUxC5T!YeawK
zi1Y>To8GObM2DA|{7B0WsXPU8unQWZe$wbnp#a^WT38Eo39AnD=<zZ|6jOF>h@Mc)
zW@r{w|Am_`6Rq><5gMjC(1m7#Tn{7*k~jStuq-GAB!C`w)GLL6Qjj`QA)plU|4l+y
z5>>v0{y&N^z|G)Ckt)gH(QHlcG{u1B&oxlibkT#358|DZ#X7JXK!arZz6wOeOB{;^
zc`y4)%?u?~d<t=bW@v_MbA$QUp;^pk!TJVtrDm8cG;vgoH=!<DY=L*3s!P!obQ7L)
zt_7c2LN<IACFIZ)ZogQoMM26^4zHuq%u^+Z^7SgF2-DjLkf9+YtfC2wNviR^weW^Z
z-a6k~kLU#1u#eC+8dKvf8mD*Ev=!Gzju)U<%wr?Rlwt&B|7;}7(YQB1{bWUprBzcJ
zaZ&mkD;`lr($<FK!?t#B_1&F-QGheehqIlcO|9)%)ArBQOh2GOE~gfoxOKtgR~K7*
z<sHcXQc~T<eHso-Azd04L+wG-(uN_i+$C<ukXY`({GprX5jVvlH^ckyXE=+Q#5`Ea
zu#4HZl;X%z7auM5@D}F2o8G(qxfbZ}BmQE!)28jY<QYD;0dCS8HdkCx#kW=l_}7&d
QU4A%NTP=9^R-X&}1IE`RRR910

delta 1340
zcmbVMT}V@L6hHUwZoBtxPUoikDpQCG6WhSR!eBB-5W%E^S-J9Krj;M5*n@3uGpGnN
z>u5zq9}*eVLvdduA|!g0ED8jlO3)yB@SzBzp!2`?I`&dj`}4p1pYuDv-#Pc(b8mWt
zPml1A<3gTg!gc+v_ceEC_*LB^_6leDrIX5cp^`Hh0CqRGV8GO_Oqf<UZW4pC8*hn{
zewxuw#rR&dsJ>z=2UYNl2LOI{68)0XR>5&lo$D&gM&`JKaxtElbP;@{o`{XJQXYjb
zNE*p4J7J8|#ff6&!IkS+jgoVnZoDZ|#mas8g$>7iCD`q8V~Nj?quz3S;B(>+uMHQx
zVT|}{@tS7^r@bY3#$$6QL?<Lf%9j0|fV<OQZYb}3N-1{%&(*a0)-cRu&PG6}XP~dY
zZ99MwmurTU(>pF2J(bk}Rtg#42GB?4FBANddbAHWhcdPRAs?CmzIFj@>{p(K#@BNJ
zCDL(;PsLT;=OEKR2XWW~Jp5EG19U?nd7r~3x(a0ddF=wH%4E%p!&;SDL7JNCZ@8%(
zQHM@<LK`@U&haK97m>vZVh_BBY*vt;ERL+dT}7$_%^ES74pT6w3aNjS5LAhLT|)Se
zB8<eXr<($`BqPQ;?V%{R$!51}q_UzKLLG0Q(PPER<TsMl045zXQ<Nvm5upK}bVlqk
zV6(z*jx{a@F|>C@Q%6Ws%O;YygLGMp4Mb|iQFR?7b=G2$cn6^%8*PUDgsgH!!c199
zB8<(X#*?9$p1xMA2o`98RvJeYOF<qH*?4K8HaJ89EYwN~^WiY9Ca~*hA)&S`>d?_5
ziuQs;{&qMHo$Bg>MmV5uN##nEBTR}~9*J@^s|*Y4pG3)8p;77WUT0Qj2d)_8dDsA-
zs1-pD3kFNEYH*8#%@%tJ*aB_|$_;Henykf0GKj8ZHGWL^@oJ(TchdfLsvf6kM`@dB
z&ky=>iuPPGpnMKHNHi=c!q7e5z&>ve(_5wVo7;7Z^bIs%nc%vdNpJ<2%<Pp}549H>
P=Q5RO9-dZahJ%J*aab9b

-- 
GitLab