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