diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 2918e95622313ba449f7cff5d753c7ae8d545b0b..c1ea04a16c12f7a1420625985bff1a3c74905e6f 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 8f7067d1281daa2923e5de5c5da06e8f12c85e09..1b5beb1307af857f022502c9f28b95d9cc940c37 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 c4862cbfd06381acccb4c6545c7024c75273adc3..f92a24c130f865278356cd5c13127e355cd1d02b 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 199034465e3581e0141c456f8286bbd829458200..ec7de39d2efbaaf62f492939fd2fb66bf70d5057 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 0000000000000000000000000000000000000000..febcef6253a23f737282343675184538207d2261 --- /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%'> </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 %} + \ 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 d6040193202f168d6de99e4078c4f8b28a48ff61..09474e623d4dfdd510d42eeea7523757eb9452bb 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); } }); });