From 84e2bbe3a26d68fe7298562f3b0aa40adc81a289 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=A0=D1=83=D0=B4?=
 =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D1=86?= <andrey.rudenets@gmail.com>
Date: Mon, 25 Aug 2014 23:13:50 +0400
Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=B3=D1=80=D1=83=D0=B7=D0=BA?=
 =?UTF-8?q?=D0=B0=20=D0=BA=D0=BE=D0=B4=D0=BE=D0=B2=20=D0=B0=D0=BA=D1=82?=
 =?UTF-8?q?=D0=B8=D0=B2=D0=B0=D1=86=D0=B8=D0=B8:=20=D1=82=D0=B5=D0=BF?=
 =?UTF-8?q?=D0=B5=D1=80=D1=8C=20=D0=BF=D1=83=D1=81=D1=82=D1=8B=D0=B5=20?=
 =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=D1=8B=D0=B3=D1=80=D1=83?=
 =?UTF-8?q?=D0=B7=D0=B8=D1=82=D1=8C=20=D0=BD=D0=B5=20=D0=BF=D0=BE=D0=BB?=
 =?UTF-8?q?=D1=83=D1=87=D0=B8=D1=82=D1=81=D1=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 db/StoredProcedures.sql                       |  2 +-
 .../Controller/Handler/AdmAccounts.php        | 69 ++++++++++++++++---
 .../classes/Model/Admin/Accounts.php          | 14 +++-
 .../views/admin/accounts/codes.twig           | 26 +++----
 ...onTemplate.twig => activationStudent.twig} |  0
 .../views/pdf/activationTeacher.twig          | 22 ++++++
 ~dev_rating/media/js/admin/accounts/codes.js  | 31 ++++-----
 7 files changed, 116 insertions(+), 48 deletions(-)
 rename ~dev_rating/application/views/pdf/{activationTemplate.twig => activationStudent.twig} (100%)
 create mode 100644 ~dev_rating/application/views/pdf/activationTeacher.twig

diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql
index 2918e9562..c1ea04a16 100644
--- a/db/StoredProcedures.sql
+++ b/db/StoredProcedures.sql
@@ -451,7 +451,7 @@ BEGIN
 			user_roles.RoleName	AS 'AccRole',	 
 			user_roles.Mark 	AS 'AccRoleMark',	 
 			accounts.isEnabled,
-			( accounts.ActivationCode IS NULL) AS 'isActivated',
+			accounts.ActivationCode AS 'AccCode',
 			accounts.UserAgent	
 	FROM `accounts`
 	INNER JOIN `user_roles` ON accounts.UserRoleID = user_roles.ID
diff --git a/~dev_rating/application/classes/Controller/Handler/AdmAccounts.php b/~dev_rating/application/classes/Controller/Handler/AdmAccounts.php
index 8f7067d12..1b5beb130 100644
--- a/~dev_rating/application/classes/Controller/Handler/AdmAccounts.php
+++ b/~dev_rating/application/classes/Controller/Handler/AdmAccounts.php
@@ -8,6 +8,45 @@ class Controller_Handler_AdmAccounts extends Controller_Handler {
             parent::before();
         }
         
+        public function action_getActivationForTeachers()
+        {
+            $facultyID = $this->post->offsetGet('facultyID');
+            $departmentsHandled = array(); $i = 0;
+            $departments = $this->model->getDepartmentsByFaculty($facultyID);
+            foreach ($departments as $department)
+            {
+                $i++; $j = 0;
+                $accounts = $this->model->getTeachersByDepartment($department['DepID']);
+                $departmentsHandled[$i]['Name'] = $department['DepName'];
+                foreach ($accounts as $row)
+                {
+                    $accInfo = $this->model->getAccountInfoByID($row['TeacherAccID']);
+                    if($code = $accInfo->get('AccCode'))
+                    {
+                        $j++;
+                        $departmentsHandled[$i]['People'][$j]['LastName'] = $row['TeacherLast'];
+                        $departmentsHandled[$i]['People'][$j]['FirstName'] = $row['TeacherFirst'];
+                        $departmentsHandled[$i]['People'][$j]['SecondName'] = $row['TeacherSecond'];
+                        $departmentsHandled[$i]['People'][$j]['ActivationCode'] = $code;
+                    }
+                }
+                if($j == 0)
+                {
+                    $departmentsHandled[$i] = array();
+                    $i--;
+                }
+            }
+            if($i > 0)
+            {
+                $this->_sendPDF('activationTeachers'.$facultyID, 
+                        'pdf/activationTeacher',
+                        array('Departments' => $departmentsHandled, 'System' => array('Title' => ASSEMBLY_SYSTEM_NAME, 'Version' => ASSEMBLY_VERSION)));
+            }
+            else {
+                throw HTTP_Exception::factory(404, 'No data found');
+            }
+        }
+        
         public function action_getActivationForStudents()
         {
             $facultyID = $this->post->offsetGet('facultyID');
@@ -33,25 +72,35 @@ class Controller_Handler_AdmAccounts extends Controller_Handler {
                         $groupsHandled[$i]['People'][$j]['ActivationCode'] = $code;
                     }
                 }
-                $groupsHandled[$i]['PeopleCount'] = $j;
+                if($j == 0)
+                {
+                    $groupsHandled[$i] = array();
+                    $i--;
+                }
+            }
+            if($i > 0)
+            {
+            $this->_sendPDF('activationStudents'.$facultyID.'-'.$gradeNum, 
+                    'pdf/activationStudent',
+                    array('Groups' => $groupsHandled, 'System' => array('Title' => ASSEMBLY_SYSTEM_NAME, 'Version' => ASSEMBLY_VERSION)));
             }
-            $mpdf = View_MPDF::factory('pdf/activationTemplate', array('Groups' => $groupsHandled, 
-                'System' => array('Title' => ASSEMBLY_SYSTEM_NAME, 'Version' => ASSEMBLY_VERSION)));
+            else {
+                throw HTTP_Exception::factory(404, 'No data found');
+            }
+        }
+        
+        protected function _sendPDF($filename, $template, $data)
+        {
+            $mpdf = View_MPDF::factory($template, $data);
             $cssPath = 'media/css/acTpl.css';
             $css = file_get_contents($cssPath);
             $mpdf->get_mpdf()->WriteHTML($css, 1);
-            //$mpdf->write_to_disk('media/pdf/activationStudent'.$facultyID.'-'.$gradeNum.'.pdf');
             $this->response->headers('Set-Cookie',  'fileDownload=true; path=/');
             $this->response->headers('Content-Type',  'application/octet-stream');
             $this->response->headers('Accept-Ranges', 'bytes');
             $this->response->headers('Content-Length', strlen($mpdf));
-            $this->response->headers('Content-Disposition',  'attachment; filename=activationStudent'.$facultyID.'-'.$gradeNum.'.pdf');
+            $this->response->headers('Content-Disposition',  'attachment; filename='.$filename.'.pdf');
             $this->response->headers('Content-Transfer-Encoding',  'Binary');
             $this->response->body($mpdf);
         }
-        
-        public function action_getActivationForTeachers()
-        {
-            
-        }
 }
\ No newline at end of file
diff --git a/~dev_rating/application/classes/Model/Admin/Accounts.php b/~dev_rating/application/classes/Model/Admin/Accounts.php
index c4862cbfd..f92a24c13 100644
--- a/~dev_rating/application/classes/Model/Admin/Accounts.php
+++ b/~dev_rating/application/classes/Model/Admin/Accounts.php
@@ -18,7 +18,19 @@ class Model_Admin_Accounts extends Model
     {
         $sql = "CALL `GetStudentsByStudyGroups`('$groupID'); ";
         return DB::query(Database::SELECT, $sql)->execute();
-    }    
+    }
+    
+    public function getDepartmentsByFaculty($facultyID)
+    {
+        $sql = "CALL `GetDepartmentsByFaculty`('$facultyID'); ";
+        return DB::query(Database::SELECT, $sql)->execute();
+    }   
+    
+    public function getTeachersByDepartment($departmentID)
+    {
+        $sql = "CALL `GetTeachersByDepartment`('$departmentID'); ";
+        return DB::query(Database::SELECT, $sql)->execute();
+    }   
     
     public function getAccountInfoByID($ID)
     {
diff --git a/~dev_rating/application/views/admin/accounts/codes.twig b/~dev_rating/application/views/admin/accounts/codes.twig
index 199034465..ec7de39d2 100644
--- a/~dev_rating/application/views/admin/accounts/codes.twig
+++ b/~dev_rating/application/views/admin/accounts/codes.twig
@@ -13,7 +13,7 @@
     <div class="stepBox" id="FirstStep">
 
         <div class="step_title" >
-            <span class='step_title_count'>Шаг 1 из 4:</span> <span class='step_title_description'>Выберите круг пользователей</span>
+            <span class='step_title_count'>Шаг 1:</span> <span class='step_title_description'>Выберите круг пользователей</span>
         </div>
         <div class="step_body">
             <div class='radGroup'>
@@ -30,7 +30,7 @@
     </div>
     <div class="stepBox" id="SecondStep">
         <div class="step_title">
-            <span class='step_title_count'>Шаг 2 из 4:</span> <span class='step_title_description'>Выберите подразделение университета</span>
+            <span class='step_title_count'>Шаг 2:</span> <span class='step_title_description'>Выберите подразделение университета</span>
         </div>
         <div class="step_body">
             <select id="facultySelect">
@@ -43,7 +43,7 @@
     </div>
     <div class="stepBox" id="ThirdStep_Student">
         <div class="step_title">
-            <span class='step_title_count'>Шаг 3 из 4:</span> <span class='step_title_description'>Выберите номер курса</span>
+            <span class='step_title_count'>Шаг 3:</span> <span class='step_title_description'>Выберите номер курса</span>
         </div>
         <div class="step_body">
             <select id="gradeSelect">
@@ -62,31 +62,21 @@
         </div>
     </div>
     <div class="stepBox" id="ThirdStep_Teacher">
-        <div class="step_title">
-            <span class='step_title_count'>Шаг 3 из 4:</span> <span class='step_title_description'>Выберите кафедру</span>
-        </div>
-        <div class="step_body">
-            <select id="departmentSelect">
-                <option value="0">--- Кафедра ---</option>
-            </select>
-        </div>
-    </div>
-    <div class="stepBox" id="FourthStep_Student">
         <div class="step_title" >
-            <span class='step_title_count'>Шаг 4 из 4:</span> <span class='step_title_description'>Сохраните сгенерированный файл</span>
+            <span class='step_title_count'>Шаг 3:</span> <span class='step_title_description'>Сохраните сгенерированный файл</span>
         </div>
         <div class="step_body">
-            <button id="downloadStudentPDF">
+            <button id="downloadTeacherPDF">
                 Загрузить PDF-файл
             </button>
         </div>
     </div>
-    <div class="stepBox" id="FourthStep_Teacher">
+    <div class="stepBox" id="FourthStep_Student">
         <div class="step_title" >
-            <span class='step_title_count'>Шаг 4 из 4:</span> <span class='step_title_description'>Сохраните сгенерированный файл</span>
+            <span class='step_title_count'>Шаг 4:</span> <span class='step_title_description'>Сохраните сгенерированный файл</span>
         </div>
         <div class="step_body">
-            <button id="downloadTeacherPDF">
+            <button id="downloadStudentPDF">
                 Загрузить PDF-файл
             </button>
         </div>
diff --git a/~dev_rating/application/views/pdf/activationTemplate.twig b/~dev_rating/application/views/pdf/activationStudent.twig
similarity index 100%
rename from ~dev_rating/application/views/pdf/activationTemplate.twig
rename to ~dev_rating/application/views/pdf/activationStudent.twig
diff --git a/~dev_rating/application/views/pdf/activationTeacher.twig b/~dev_rating/application/views/pdf/activationTeacher.twig
new file mode 100644
index 000000000..febcef625
--- /dev/null
+++ b/~dev_rating/application/views/pdf/activationTeacher.twig
@@ -0,0 +1,22 @@
+{% for department in Departments %}
+    <h1>{{ System.Title }} - коды активации</h1>
+    <h3>{{ department.Name }}</h3>
+    {% for account in department.People %}
+        <table width='80%' cellspacing='0'>
+        <tr>
+            <td class="cutline" width='10%'>&nbsp;</td>
+            <td class='personal_info' width='70%'>
+                {{ loop.index }}. {{ account.LastName }} {{ account.FirstName }} {{ account.SecondName }}
+            </td>
+            <td class='activation_code' width='30%'>
+                {{ account.ActivationCode }}
+            </td>
+        </tr>
+        </table>
+    {% endfor %}
+    
+    {% if not loop.last %}
+        <pagebreak />
+    {% endif %}
+{% endfor %}
+&nbsp;
\ No newline at end of file
diff --git a/~dev_rating/media/js/admin/accounts/codes.js b/~dev_rating/media/js/admin/accounts/codes.js
index d60401932..09474e623 100644
--- a/~dev_rating/media/js/admin/accounts/codes.js
+++ b/~dev_rating/media/js/admin/accounts/codes.js
@@ -46,25 +46,21 @@ $(function()
             $('#FourthStep_'+radioValue).css('display', 'block'); 
         }
     });
-    
-    // Выбор курса
-    $('#departmentSelect').change(function(){
-
-        if (($('#departmentSelect option:selected').val()!= '0')) {
-            $('#FourthStep_'+radioValue).css('display', 'block'); 
-        }
-    });
-    
-    
+        
     $('body').on('click', '#downloadTeacherPDF', function(){
         $('#downloadTeacherPDF').attr('disabled', 'disabled');
-        $.post('/~dev_rating/handler/admAccounts/getActivationForTeachers', 
-        {
-            'facultyID': $('#facultySelect option:selected').val(),
-            'departmentID': $('#departmentSelect option:selected').val()
-        }, 
-        function(data){
-            $('#downloadTeacherPDF').removeAttr('disabled');
+        $.fileDownload('/~dev_rating/handler/admAccounts/getActivationForTeachers', {
+            httpMethod: "POST",
+            data: 
+            {
+                'facultyID': $('#facultySelect option:selected').val()
+            },
+            successCallback: function (url) {
+                 $('#downloadTeacherPDF').removeAttr('disabled');
+            },
+            failCallback: function (html, url) {
+                 $('#downloadTeacherPDF').removeAttr('disabled');
+            }
         });
     }); 
     
@@ -82,7 +78,6 @@ $(function()
             },
             failCallback: function (html, url) {
                  $('#downloadStudentPDF').removeAttr('disabled');
-                 alert(html);
             }
         });
     });     
-- 
GitLab