예제 #1
0
 public function actionRpd()
 {
     if (!($id = $_GET['id'])) {
         $id = 2;
     }
     $podrazdel = PodrazdelKursa::find()->where(['id' => $id])->one();
     $kurs_info = RpdGlobals::get_kurs_info_by_podrazdel_id($id);
     $kug = RpdGlobals::get_kug($kurs_info['kurs_id']);
     $max_nedelya = 0;
     $min_nedelya = 0;
     $nedeli = RpdGlobals::get_max_min_weeks($id);
     $min_nedelya = min((int) $podrazdel['nedelya_nachalo'], $nedeli['min']);
     $max_nedelya = max($podrazdel['nedelya_konec'], $nedeli['max']);
     $kug_html = RpdGlobals::get_kug_html($kug, $id, $min_nedelya, $max_nedelya);
     $plan_html = RpdGlobals::get_uchebnii_plan_html($kug, $id);
     $rukovoditel = RpdGlobals::get_rukovoditel_podrazdela($id);
     $rukovoditel_podrazdeleniya = RpdGlobals::get_rukovoditel_podrazdeleniya($id);
     $tip = $kurs_info['kurs_tip'] == 'pp' ? 'профессиональной переподготовки' : 'профессионального обучения';
     $soderzhanie = RpdGlobals::get_rpd_soderzhanie($id);
     $nomer = RpdGlobals::get_nomer_razdela_v_kurse_by_podrazdel($kurs_info['kurs_id'], $id);
     $kims = RpdGlobals::get_rpd_kims($id);
     $lk = $podrazdel['raschitano_chasov_lekcyj'];
     $pr = $podrazdel['raschitano_chasov_praktik'];
     $vsego_chasov = $lk + $pr;
     $pdf = (new Pdf())->api;
     $pdf->title = $podrazdel['nazvanie'];
     $pdf->WriteHTML('<style>
             body {font-family: "Times New Roman", Times, serif;font-size: 10pt;}
             p.myp {text-indent: 2.5em;text-align: justify}
             .indent0 {text-indent: 2.5em;text-align: justify;margin:0}
             .center {text-align:center}
             .tb {border-collapse: collapse}
             .tb td {padding: 5px;border: 1px solid #000}
             .razdel-tr td {font-weight: bold}
             .attestatsiya-tr td {font-weight: bold}
             .bold-tr td {font-weight: bold}
             .bold {font-weight: bold}
             </style>');
     $pdf->WriteHTML('<p style="text-align:center">Министерство образования и науки Республики Бурятия</p>');
     $pdf->WriteHTML('<p style="text-align:center">ГАУ ДПО РБ «Бурятский республиканский институт образовательной политики»</p>');
     $pdf->WriteHTML('<p style="text-align:center">' . ApiGlobals::first_letter_up($kurs_info['podrazdelenie']) . '</p>');
     $pdf->WriteHTML('<div style="text-align:right">УТВЕРЖДАЮ</div>');
     $pdf->WriteHTML('<div style="text-align:right">Проректор по организации</div>');
     $pdf->WriteHTML('<div style="text-align:right">образовательной деятельности</div>');
     $pdf->WriteHTML('<div style="text-align:right">_____________ / ______________</div>');
     $pdf->WriteHTML('<div style="text-align:right">« ____» __________ 20__ г.</div>');
     $pdf->WriteHTML('<div style="position: absolute;top: 40%;left:0;width:100%">
         <p class="center">РАБОЧАЯ ПРОГРАММА</p>
         <p  class="center">учебной дисциплины</p>
         ' . $this->get_empty_row(1) . '
         <p class="center bold">«' . $podrazdel['nazvanie'] . '»</p>
         ' . $this->get_empty_row(1));
     $pdf->WriteHTML('<p style="text-align:center;">' . ($kurs_info['kurs_tip'] == 'po' ? 'основной профессиональной программы' : 'дополнительной профессиональной программы') . '</p>');
     $pdf->WriteHTML('<p class="center">' . $tip . '</p>
         <div style="text-align:center;width: 100%;">
             <p style="width: 60%;margin: 0 auto">«' . mb_strtoupper($kurs_info['kurs_nazvanie'], 'UTF-8') . '»</p>
         </div>
         </div>
     ');
     $pdf->WriteHTML('<htmlpagefooter show-this-page="1" name="first_page_footer">
                      <div style="text-align: center"><p>Улан-Удэ</p><p>' . date('Y') . ' год</p></div>
                     </htmlpagefooter>');
     $pdf->SetHTMLFooterByName('first_page_footer');
     $pdf->AddPage();
     $pdf->WriteHTML('<p>Структурное подразделение: ' . ApiGlobals::first_letter_up($kurs_info['podrazdelenie']) . '</p>');
     $pdf->WriteHTML('<p>Составитель: ' . $rukovoditel['familiya'] . ' ' . ApiGlobals::get_first_letter($rukovoditel['imya']) . '. ' . ApiGlobals::get_first_letter($rukovoditel['otchestvo']) . '., ' . $rukovoditel['dolzhnost'] . '.</p>');
     $pdf->WriteHTML($this->get_empty_row(2));
     $pdf->WriteHTML('<p>Обсуждена на заседании ' . ($kurs_info['podrazdelenie_sokrashennoe_nazvanie'] ? $kurs_info['podrazdelenie_sokrashennoe_nazvanie'] : $kurs_info['podrazdelenie']) . '.</p>');
     $pdf->WriteHTML('<p>Протокол № ___ от «__» _________ 20__ г.</p>');
     $pdf->WriteHTML($this->get_empty_row(2));
     $pdf->WriteHTML('<p>Утверждена на заседании НМС.</p>');
     $pdf->WriteHTML('<p>Протокол № ___ от «__» _________ 20__ г.</p>');
     $pdf->WriteHTML('<htmlpagefooter show-this-page="1" name="numbered_page_footer">
                      <div style="text-align: center">{PAGENO}</div>
                     </htmlpagefooter>');
     $pdf->SetHTMLFooterByName('numbered_page_footer');
     $pdf->AddPage();
     $pdf->WriteHTML('<p style="text-align: center"><b>Пояснительная записка</b></p>');
     $pdf->WriteHTML($this->get_paragraph('<b>Актуальность</b>'));
     $pdf->WriteHTML(ApiGlobals::parse_text($podrazdel['aktualnost']));
     $pdf->WriteHTML($this->get_paragraph('<b>Цель: </b>' . $podrazdel['cel']));
     $pdf->WriteHTML($this->get_paragraph('<b>Задачи:</b>'));
     $pdf->WriteHTML(ApiGlobals::parse_text($podrazdel['zadachi']));
     $pdf->WriteHTML($this->get_paragraph('<b>Планируемые результаты:</b>'));
     $pdf->WriteHTML(ApiGlobals::parse_text($podrazdel['planiruemye_rezultaty']));
     $pdf->WriteHTML($this->get_paragraph('<b>Место дисциплины в структуре программы: </b>' . $podrazdel['mesto_discipliny_v_strukture_programmy']));
     $pdf->WriteHTML($this->get_paragraph('<b>Количество часов: аудиторных ' . $vsego_chasov . ' ч.,</b> из них ' . $lk . ' ч. лекционных, ' . $pr . ' ч. практических.'));
     $pdf->WriteHTML($this->get_paragraph('<b>Организационно-педагогические условия:</b>'));
     $pdf->WriteHTML($this->get_paragraph('<i>Информационные:</i> ' . $podrazdel['informacionnye_usloviya']));
     $pdf->WriteHTML($this->get_paragraph('<i>Учебно-методические:</i> ' . $podrazdel['uchebnometodicheskie_usloviya']));
     $pdf->WriteHTML($this->get_paragraph('<i>Кадровые:</i> ' . $podrazdel['kadrovye_usloviya']));
     $pdf->WriteHTML($this->get_paragraph('<i>Материально-технические:</i> ' . $podrazdel['materialnotehnicheskie_usloviya']));
     $pdf->AddPage();
     $pdf->WriteHTML('<div class="center">Министерство образования и науки Республики Бурятия</div>');
     $pdf->WriteHTML('<div class="center">ГАУ ДПО РБ «Бурятский республиканский институт образовательной политики»</div>');
     $pdf->WriteHTML('<br>');
     $pdf->WriteHTML('<div class="" style="text-align:right">УТВЕРЖДАЮ</div>');
     $pdf->WriteHTML('<div style="text-align:right">Проректор по организации</div>');
     $pdf->WriteHTML('<div style="text-align:right">образовательной деятельности</div>');
     $pdf->WriteHTML('<div style="text-align:right">_____________ / ______________</div>');
     $pdf->WriteHTML('<div class="lh1" style="text-align:right">« ____» __________ 20__ г.</div>');
     $pdf->WriteHTML('<br>');
     $pdf->WriteHTML('<div class="center"><b>УЧЕБНЫЙ ПЛАН</b></div>');
     $pdf->WriteHTML('<div class="center">учебной дисциплины «' . $podrazdel['nazvanie'] . '»</div>');
     if ($kurs_info['kurs_tip'] == 'pp') {
         $pdf->WriteHTML('<div class="center">дополнительной профессиональной программы</div>');
         $pdf->WriteHTML('<div class="center">профессиональной переподготовки</div>');
     }
     if ($kurs_info['kurs_tip'] == 'po') {
         $pdf->WriteHTML('<div class="center">основной профессиональной программы</div>');
         $pdf->WriteHTML('<div class="center">профессионального обучения</div>');
     }
     $pdf->WriteHTML('<div class="center">«' . $kurs_info['kurs_nazvanie'] . '»</div>');
     $pdf->WriteHTML('<br>');
     //if ($kurs_info['kurs_tip'] == 'po') {
     $pdf->WriteHTML('<div class="left">Категория слушателей: ' . $kurs_info['kategorii'] . '</div>');
     $pdf->WriteHTML('<div class="left">Форма обучения: ' . $kurs_info['forma_obucheniya'] . '</div>');
     //}
     $pdf->WriteHTML('<div class="left">Режим занятий: ' . $kurs_info['rezhim_zanyatij'] . '</div>');
     $pdf->WriteHTML('<br>');
     $pdf->WriteHTML($plan_html);
     $pdf->WriteHTML('<p style="text-align:left;">Руководитель курсов: ____________/' . ApiGlobals::get_first_letter($kurs_info['rukovoditel_imya']) . '.' . ApiGlobals::get_first_letter($kurs_info['rukovoditel_otchestvo']) . '. ' . $kurs_info['rukovoditel_familiya'] . '</p>');
     $pdf->WriteHTML('<p style="text-align:left;">Руководитель структурного подразделения: __________/ ' . ApiGlobals::get_first_letter($rukovoditel_podrazdeleniya['imya']) . '.' . ApiGlobals::get_first_letter($rukovoditel_podrazdeleniya['otchestvo']) . '. ' . $rukovoditel_podrazdeleniya['familiya'] . '</p>');
     $pdf->WriteHTML('<p style="text-align:left;">Начальник учебного отдела: ___________/ Л.Е. Халудорова</p>');
     $pdf->AddPage();
     $pdf->WriteHTML('<div class="center">Министерство образования и науки Республики Бурятия</div>');
     $pdf->WriteHTML('<div class="center">ГАУ ДПО РБ «Бурятский республиканский институт образовательной политики»</div>');
     $pdf->WriteHTML('<br>');
     $pdf->WriteHTML('<div class="" style="text-align:right">УТВЕРЖДАЮ</div>');
     $pdf->WriteHTML('<div style="text-align:right">Проректор по организации</div>');
     $pdf->WriteHTML('<div style="text-align:right">образовательной деятельности</div>');
     $pdf->WriteHTML('<div style="text-align:right">_____________ / ______________</div>');
     $pdf->WriteHTML('<div class="lh1" style="text-align:right">« ____» __________ 20__ г.</div>');
     $pdf->WriteHTML('<br>');
     $pdf->WriteHTML('<div class="center"><b>КАЛЕНДАРНЫЙ УЧЕБНЫЙ ГРАФИК</b></div>');
     $pdf->WriteHTML('<div class="center">учебной дисциплины «' . $podrazdel['nazvanie'] . '»</div>');
     if ($kurs_info['kurs_tip'] == 'pp') {
         $pdf->WriteHTML('<div class="center">дополнительной профессиональной программы</div>');
         $pdf->WriteHTML('<div class="center">профессиональной переподготовки</div>');
     }
     if ($kurs_info['kurs_tip'] == 'po') {
         $pdf->WriteHTML('<div class="center">основной профессиональной программы</div>');
         $pdf->WriteHTML('<div class="center">профессионального обучения</div>');
     }
     $pdf->WriteHTML('<div class="center">«' . $kurs_info['kurs_nazvanie'] . '»</div>');
     //        $pdf->WriteHTML('<div class="lh1" style="text-align:center;width: 100%;">
     //                            <p style="font-weight:bold;width: 60%;margin: 0 auto;text-align: center">«'.$kurs['nazvanie'].'»</p>
     //                        </div>');
     $pdf->WriteHTML('<br>');
     $pdf->WriteHTML($kug_html);
     $pdf->WriteHTML('<p style="text-align:left;">Руководитель курсов: ____________/' . ApiGlobals::get_first_letter($kurs_info['rukovoditel_imya']) . '.' . ApiGlobals::get_first_letter($kurs_info['rukovoditel_otchestvo']) . '. ' . $kurs_info['rukovoditel_familiya'] . '</p>');
     $pdf->WriteHTML('<p style="text-align:left;">Руководитель структурного подразделения: __________/ ' . ApiGlobals::get_first_letter($rukovoditel_podrazdeleniya['imya']) . '.' . ApiGlobals::get_first_letter($rukovoditel_podrazdeleniya['otchestvo']) . '. ' . $rukovoditel_podrazdeleniya['familiya'] . '</p>');
     $pdf->WriteHTML('<p style="text-align:left;">Начальник учебного отдела: ___________/ Л.Е. Халудорова</p>');
     $pdf->AddPage();
     $pdf->WriteHTML($this->get_paragraph('Содержание', 'style="font-weight:bold;text-align:center"'));
     $pdf->WriteHTML(RpdGlobals::get_rpd_soderzhanie_html($soderzhanie, $nomer));
     //var_dump($kims);die();
     if ($kims) {
         $pdf->AddPage();
         $pdf->WriteHTML('<div class="center"><b>КОНТРОЛЬНО-ИЗМЕРИТЕЛЬНЫЕ МАТЕРИАЛЫ</b></div>');
         foreach ($kims as $item) {
             if ($item['type'] == 1 or $item['type'] == 3) {
                 $pdf->WriteHTML(RpdGlobals::get_rpd_kim_list_item($item));
             }
         }
     }
     $pdf->AddPage();
     $pdf->WriteHTML($this->get_paragraph('Литература', 'style="font-weight:bold;text-align:center"'));
     $pdf->WriteHTML(ApiGlobals::parse_text($podrazdel['literatura']));
     $pdf->output();
     die;
 }
예제 #2
0
echo $drawField('aktualnost');
echo $drawField('cel');
echo $drawField('zadachi');
echo $drawField('planiruemye_rezultaty');
echo $drawField('mesto_discipliny_v_strukture_programmy');
echo '<h4>Организационно-педагогические условия</h4>';
echo $drawField('informacionnye_usloviya');
echo $drawField('uchebnometodicheskie_usloviya');
echo $drawField('kadrovye_usloviya');
echo $drawField('materialnotehnicheskie_usloviya');
echo $drawField('literatura');
echo Html::input('hidden', 'razdel_nomer', $nomer, ['id' => "razdel_nomer"]);
echo Html::input('hidden', 'podrazdel_nomer', $podrazdel['nomer'], ['id' => "podrazdel_nomer"]);
echo '<h4>Содержание</h4>';
echo '<table id="topics_table" class="topics-table">';
echo RpdGlobals::get_podrazdel_row(current($soderzhanie), $kurs_status);
echo '</table>';
echo '<p>&nbsp;</p>';
echo '<p><label for="status_discipliny"><input onchange="change_podpis(' . $podrazdel['id'] . ')" type="checkbox" id="status_discipliny" ' . ($podrazdel['status'] == 1 ? 'checked' : '') . '>&nbsp;Подписать</label></p>';
echo '<p><a class="btn btn-primary" target="blank" href="/pdf/rpd?id=' . $podrazdel['id'] . '">Печать</a></p>';
echo '<p>' . Html::button('Сохранить', ['id' => 'rpd_smb_btn', 'class' => 'btn btn-primary', 'clicked' => 'false']) . '</p>';
ActiveForm::end();
echo '<div class="alert center" style="display: none" id="alert-div"></div>';
echo '
<div class="podrazdel-form hidden" id="add_theme_form">
    <div class="form-group">
        <label for="theme_name">Наименование темы</label>
        <input class="form-control" type="text" value="" id="theme_name">
        <input type="hidden" id="podrazdel_id" value="">
     </div>
     <div class="form-group">
예제 #3
0
 public function actionRpdAjax()
 {
     $ajax_query = $_POST['ajax_query'];
     $answer = '';
     switch ($ajax_query) {
         case 'add_theme':
             //добавить тему
             $name = $_POST['name'];
             $podrazdel_id = $_POST['podrazdel_id'];
             $vid_rabot = $_POST['vid_rabot'];
             $sotrudnik = $_POST['sotrudnik'];
             $is_vakansiya = null;
             if ($sotrudnik == -1) {
                 $is_vakansiya = true;
                 $sotrudnik = null;
             }
             if (!($soderzhanie = $_POST['soderzhanie'])) {
                 $soderzhanie = null;
             }
             $name = ApiGlobals::to_trimmed_text($name);
             $soderzhanie = ApiGlobals::to_trimmed_text($soderzhanie);
             $chasy = $_POST['chasy'];
             $kurs_type = $_POST['kurs_type'];
             $nomer = $_POST['nomer'];
             $week = $_POST['week'];
             $sql = 'INSERT INTO tema (podrazdel,nazvanie,soderzhanie,tip_raboty,prepodavatel_fiz_lico,nomer,chasy,nedelya,prepodavatel_vakansiya)
                      VALUES (:podrazdel,:nazvanie,:soderzhanie,:tip_raboty,:prepodavatel,:nomer,:chasy,:nedelya,:vakansiya)';
             $errors = '';
             $week_hours = KursGlobals::get_hours_count_per_week($week, $podrazdel_id);
             if (!$name) {
                 $errors .= '<p>Введите название</p>';
             }
             if (!$chasy) {
                 $errors .= '<p>Введите часы</p>';
             }
             if ($week_hours < 54 and $week_hours + $chasy > 54) {
                 $errors .= '<p>Количество часов на одну неделю не должно превышать 54</p>';
             }
             if ($kurs_type == 'pk' and $chasy > 4) {
                 $errors = '<p>Количество часов на одну тему курсов данного типа не должно превышать 4</p>';
             }
             if (KursGlobals::is_podrazdel_var($podrazdel_id)) {
                 $kurs_id = KursGlobals::get_kurs_by_podrazdel($podrazdel_id);
                 $first_podrazdel_count = KursGlobals::get_sum_hours_of_first_var_podrazdel($kurs_id);
                 $cur_podrazdel_hours = KursGlobals::get_sum_hours_of_podrazdel($podrazdel_id);
                 $cur_podrazdel_count = $cur_podrazdel_hours['chasy'] + $chasy;
                 if ($cur_podrazdel_count > $first_podrazdel_count['hours'] and $first_podrazdel_count['podrazdel_id'] != $podrazdel_id) {
                     $errors .= '<p>Количество часов в текущем блоке тем не должно быть больше количества часов первого блока тем вариативной части</p>';
                 }
                 if ($first_podrazdel_count['podrazdel_id'] != $podrazdel_id) {
                     if ($vid_rabot == 1 and $cur_podrazdel_hours['lk'] + $chasy > $first_podrazdel_count['lk']) {
                         $errors .= '<p>Количество часов на лекции в текущем блоке тем не должно быть больше количества часов на лекции первого блока тем вариативной части</p>';
                     }
                     if ($vid_rabot > 1 and $vid_rabot <= 10 and $cur_podrazdel_hours['pr'] + $chasy > $first_podrazdel_count['pr']) {
                         $errors .= '<p>Количество часов на практики в текущем блоке тем не должно быть больше количества часов на практики первого блока тем вариативной части</p>';
                     }
                     if ($vid_rabot == 11 and $cur_podrazdel_hours['srs'] + $chasy > $first_podrazdel_count['srs']) {
                         $errors .= '<p>Количество часов на СРС в текущем блоке тем не должно быть больше количества часов на СРС первого блока тем вариативной части</p>';
                     }
                 }
             }
             if (!ApiGlobals::isEven($chasy)) {
                 $errors .= '<p>Количество часов должно быть кратно 2</p>';
             }
             if (!$errors) {
                 if (Yii::$app->db->createCommand($sql)->bindValue(':podrazdel', $podrazdel_id)->bindValue(':nazvanie', $name)->bindValue(':soderzhanie', $soderzhanie)->bindValue(':tip_raboty', $vid_rabot)->bindValue(':prepodavatel', $sotrudnik)->bindValue(':nomer', $nomer)->bindValue(':chasy', $chasy)->bindValue(':nedelya', $week)->bindValue(':vakansiya', $is_vakansiya, PDO::PARAM_BOOL)->execute()) {
                     $answer['res'] = 'done';
                     $item = KursGlobals::get_theme_by_id(Yii::$app->db->getLastInsertID('tema_id_seq'));
                     $answer['html'] = RpdGlobals::get_theme_row($item);
                 } else {
                     $answer['res'] = 'error';
                     $answer['msg'] = 'Тема не добавлена. Произошла ошибка во время выполнения запроса к базе данных';
                 }
             } else {
                 $answer['res'] = 'error';
                 $answer['msg'] = $errors;
             }
             break;
         case 'save_edit_theme':
             //редактирование темы
             $theme_id = $_POST['theme_id'];
             $nazvanie = $_POST['nazvanie'];
             if (!($soderzhanie = $_POST['soderzhanie'])) {
                 $soderzhanie = null;
             }
             $vid_rabot = $_POST['vid_rabot'];
             $prepodavatel = $_POST['prepodavatel'];
             $is_vakansiya = null;
             if ($prepodavatel == -1) {
                 $is_vakansiya = true;
                 $prepodavatel = null;
             }
             $chasy = $_POST['chasy'];
             $podrazdel_id = KursGlobals::get_podrazdel_by_tema($theme_id);
             $kurs_type = $_POST['kurs_type'];
             $week = $_POST['week'];
             $errors = '';
             $week_hours = KursGlobals::get_hours_count_per_week($week, $podrazdel_id);
             if (!$nazvanie) {
                 $errors .= '<p>Введите название</p>';
             }
             if (!$chasy) {
                 $errors .= '<p>Введите часы</p>';
             }
             if ($week_hours < 54 and $week_hours + $chasy > 54) {
                 $errors .= '<p>Количество часов на одну неделю не должно превышать 54</p>';
             }
             if ($kurs_type == 'pk' and $chasy > 4) {
                 $errors .= 'Количество часов на одну тему курсов данного типа не должно превышать 4';
             }
             if (KursGlobals::is_podrazdel_var($podrazdel_id)) {
                 $kurs_id = KursGlobals::get_kurs_by_podrazdel($podrazdel_id);
                 $first_podrazdel_count = KursGlobals::get_sum_hours_of_first_var_podrazdel($kurs_id);
                 $cur_podrazdel_hours = KursGlobals::get_sum_hours_of_podrazdel($podrazdel_id, $theme_id);
                 $cur_podrazdel_count = $cur_podrazdel_hours['chasy'] + $chasy;
                 if ($cur_podrazdel_count > $first_podrazdel_count['hours'] and $first_podrazdel_count['podrazdel_id'] != $podrazdel_id) {
                     $errors .= 'Количество часов в текущем блоке тем не должно быть больше количества часов первого блока тем вариативной части';
                 }
                 if ($first_podrazdel_count['podrazdel_id'] != $podrazdel_id) {
                     if ($vid_rabot == 1 and $cur_podrazdel_hours['lk'] + $chasy > $first_podrazdel_count['lk']) {
                         $errors .= '<p>Количество часов на лекции в текущем блоке тем не должно быть больше количества часов на лекции первого блока тем вариативной части</p>';
                     }
                     if ($vid_rabot > 1 and $vid_rabot <= 10 and $cur_podrazdel_hours['pr'] + $chasy > $first_podrazdel_count['pr']) {
                         $errors .= '<p>Количество часов на практики в текущем блоке тем не должно быть больше количества часов на практики первого блока тем вариативной части</p>';
                     }
                     if ($vid_rabot == 11 and $cur_podrazdel_hours['srs'] + $chasy > $first_podrazdel_count['srs']) {
                         $errors .= '<p>Количество часов на СРС в текущем блоке тем не должно быть больше количества часов на СРС первого блока тем вариативной части</p>';
                     }
                 }
             }
             if ($errors) {
                 $answer['res'] = 'error';
                 $answer['msg'] = $errors;
             } elseif ($nazvanie) {
                 if (ApiGlobals::isEven($chasy)) {
                     $nazvanie = ApiGlobals::to_trimmed_text($nazvanie);
                     $soderzhanie = ApiGlobals::to_trimmed_text($soderzhanie);
                     $sql = 'UPDATE tema
                            set nazvanie = :nazvanie,
                                soderzhanie = :soderzhanie,
                                tip_raboty = :tip_raboty,
                                prepodavatel_fiz_lico = :prepodavatel,
                                chasy = :chasy,
                                nedelya = :nedelya,
                                prepodavatel_vakansiya = :vakansiya
                            where id = :id
                           ';
                     if (Yii::$app->db->createCommand($sql)->bindValue(':nazvanie', $nazvanie)->bindValue(':soderzhanie', $soderzhanie)->bindValue(':tip_raboty', $vid_rabot)->bindValue(':prepodavatel', $prepodavatel)->bindValue(':chasy', $chasy)->bindValue(':id', $theme_id)->bindValue(':nedelya', $week)->bindValue(':vakansiya', $is_vakansiya, PDO::PARAM_BOOL)->execute()) {
                         $answer['res'] = 'done';
                         $item = KursGlobals::get_theme_by_id($theme_id);
                         $answer['html'] = RpdGlobals::get_theme_row($item, StatusProgrammyKursa::REDAKTIRUETSYA, false);
                     } else {
                         $answer['res'] = 'error';
                         $answer['msg'] = 'Ошибка! Тема не обновлена. Ошибка в запросе к базе данных';
                     }
                 } else {
                     $answer['res'] = 'error';
                     $answer['msg'] = 'Количество часов должно быть кратно 2';
                 }
             } else {
                 $answer['res'] = 'error';
                 $answer['msg'] = 'Введите название';
             }
             break;
         case 'delete_theme':
             //удалить тему
             $theme_id = $_POST['theme_id'];
             $is_have_umk_or_cc = KursGlobals::is_theme_have_umk_or_cc($theme_id);
             if (!$is_have_umk_or_cc) {
                 $sql = 'DELETE FROM tema where id = :id';
                 if (Yii::$app->db->createCommand($sql)->bindValue(':id', $theme_id)->execute()) {
                     $answer['res'] = 'done';
                 } else {
                     $answer['res'] = 'error';
                     $answer['type'] = 'danger';
                     $answer['msg'] = 'Ошибка выполнения запроса, тема не удалена!';
                 }
             } else {
                 $answer['res'] = 'error';
                 $answer['type'] = 'warning';
                 $answer['msg'] = 'Тема не удалена! Сначала удалите все УМК и форму контроля';
             }
             break;
         case 'save_kf':
             //Добавить форму котроля
             $theme_id = $_POST['theme_id'];
             $forma_kf_id = $_POST['forma_kf_id'];
             $sql = 'UPDATE tema set forma_kontrolya = :forma_kontrolya where id=:id';
             if (Yii::$app->db->createCommand($sql)->bindValue(':forma_kontrolya', $forma_kf_id)->bindValue(':id', $theme_id)->execute()) {
                 $answer['res'] = 'done';
                 $kf = KursGlobals::get_kf_by_theme_id($theme_id);
                 $answer['html'] = RpdGlobals::get_kf_row($kf);
             } else {
                 $answer['res'] = 'error';
                 $answer['msg'] = 'Контрольная форма не добавлена!';
             }
             break;
         case 'save_edit_kf':
             //редактировать форму котроля
             $theme_id = $_POST['theme_id'];
             $kf_id = $_POST['kf_id'];
             $sql = 'UPDATE tema set forma_kontrolya = :kf where id = :id';
             if (Yii::$app->db->createCommand($sql)->bindValue(':kf', $kf_id)->bindValue(':id', $theme_id)->execute()) {
                 $answer['res'] = 'done';
                 $kf = KursGlobals::get_kf_by_theme_id($theme_id);
                 $answer['html'] = RpdGlobals::get_kf_row($kf, StatusProgrammyKursa::REDAKTIRUETSYA, false);
             } else {
                 $answer['res'] = 'error';
             }
             break;
         case 'delete_kf':
             //удалить контрольную форму
             $theme_id = $_POST['theme_id'];
             $is_have_kim = KursGlobals::is_kf_have_kim($theme_id);
             if (!$is_have_kim) {
                 $sql = 'UPDATE tema set forma_kontrolya = null where id = :id';
                 if (Yii::$app->db->createCommand($sql)->bindValue(':id', $theme_id)->execute()) {
                     $answer['res'] = 'done';
                 } else {
                     $answer['res'] = 'error';
                     $answer['type'] = 'danger';
                     $answer['msg'] = 'Ошибка выполнения запроса, тема не удалена!';
                 }
             } else {
                 $answer['res'] = 'error';
                 $answer['type'] = 'warning';
                 $answer['msg'] = 'Форма контроля не удалена! Сначала удалите КИМы.';
             }
             break;
         case 'save_kim':
             //сохранить КИМ
             $theme_id = $_POST['theme_id'];
             $tip = $_POST['tip'];
             $is_error = false;
             $kim_id = KursGlobals::insert_kim($_POST);
             if ($kim_id) {
                 $sql = 'INSERT INTO kim_temy (tema,kim) VALUES(:tema,:kim)';
                 $res = Yii::$app->db->createCommand($sql)->bindValue(':tema', $theme_id)->bindValue(':kim', $kim_id)->execute();
                 if (!$res) {
                     $is_error = true;
                 }
             } else {
                 $is_error = true;
             }
             if (!$is_error) {
                 $answer['res'] = 'done';
                 $kim = KursGlobals::get_kim_by_id($kim_id);
                 $kim['tip'] = $tip;
                 $answer['html'] = RpdGlobals::get_kim_row($kim);
             } else {
                 $answer['res'] = 'error';
             }
             break;
         case 'delete_kim':
             //удалить КИМ
             $kim_id = $_POST['kim_id'];
             $tip = $_POST['tip'];
             switch ($tip) {
                 case 1:
                     $sql = 'DELETE FROM kim_podrazdela_kursa WHERE kim = :kim';
                     break;
                 case 2:
                     $sql = 'DELETE FROM kim_temy WHERE kim = :kim';
                     break;
                 case 3:
                     $sql = 'DELETE FROM kim_kursa WHERE kim = :kim';
                     break;
             }
             $res = Yii::$app->db->createCommand($sql)->bindValue(':kim', $kim_id)->execute();
             $is_error = false;
             if ($res) {
                 if (!KursGlobals::delete_kim($kim_id)) {
                     $is_error = true;
                 }
             } else {
                 $is_error = true;
             }
             if (!$is_error) {
                 $answer['res'] = 'done';
             } else {
                 $answer['res'] = 'error';
             }
             break;
         case 'save_edit_kim':
             //Редактировать КИМ
             $kim_id = $_POST['kim_id'];
             $tip = $_POST['tip'];
             if (KursGlobals::update_kim($_POST)) {
                 $answer['res'] = 'done';
                 $kim = KursGlobals::get_kim_by_id($kim_id);
                 $kim['tip'] = $tip;
                 $answer['html'] = RpdGlobals::get_kim_row($kim);
             } else {
                 $answer['res'] = 'error';
             }
             break;
         case 'add_podrazdel_umk':
             $podrazdel_id = $_POST['podrazdel_id'];
             $umk_type = $_POST['umk_type'];
             $file = $_POST['file'];
             $url = $_POST['url'];
             $opisanie = $_POST['opisanie'];
             $tip = 1;
             if ($umk_type == 1 and !$file or $umk_type == 2 and !$url) {
                 $answer['res'] = 'nothing';
             } else {
                 $umk_id = KursGlobals::insert_umk($_POST);
                 if ($umk_id) {
                     $sql = 'INSERT INTO umk_podrazdela_kursa (podrazdel_kursa, umk) VALUES (:pk,:umk)';
                     $res = Yii::$app->db->createCommand($sql)->bindValue(':pk', $podrazdel_id)->bindValue(':umk', $umk_id)->execute();
                     if ($res) {
                         $answer['res'] = 'done';
                         $umk_item = KursGlobals::get_umk_by_id($umk_id);
                         $umk_item['tip'] = 1;
                         $answer['html'] = RpdGlobals::get_umk_row($umk_item);
                     } else {
                         $answer['res'] = 'error';
                         $answer['type'] = 'danger';
                         $answer['msg'] = 'УМК не добален! Ошибка запроса к базе данных!';
                     }
                 } else {
                     $answer['res'] = 'error';
                     $answer['type'] = 'danger';
                     $answer['msg'] = 'УМК не добален! Ошибка запроса к базе данных!';
                 }
             }
             break;
         case 'edit_umk':
             //Редактировать УМК
             $umk_id = $_POST['umk_id'];
             $umk_type = $_POST['umk_type'];
             $file = $_POST['file'];
             $url = $_POST['url'];
             $tip = $_POST['tip'];
             if ($umk_type == 1 and !$file or $umk_type == 2 and !$url) {
                 $answer['res'] = 'nothing';
             } else {
                 $res = KursGlobals::update_umk($_POST);
                 if ($res) {
                     $answer['res'] = 'done';
                     $umk_item = KursGlobals::get_umk_by_id($umk_id);
                     $umk_item['tip'] = $tip;
                     $answer['html'] = RpdGlobals::get_umk_row($umk_item, StatusProgrammyKursa::REDAKTIRUETSYA, false);
                 } else {
                     $answer['res'] = 'error';
                     $answer['type'] = 'danger';
                     $answer['msg'] = 'УМК не изменен! Ошибка запроса к базе данных!';
                 }
             }
             break;
         case 'delete_umk':
             //Удалить УМК
             $umk_id = $_POST['umk_id'];
             $is_error = false;
             $tip = $_POST['tip'];
             if ($tip == 1) {
                 $sql = 'DELETE FROM umk_podrazdela_kursa WHERE umk = :umk ';
             } else {
                 $sql = 'DELETE FROM umk_temy WHERE umk = :umk ';
             }
             $res = Yii::$app->db->createCommand($sql)->bindValue(':umk', $umk_id)->execute();
             if ($res) {
                 if (!KursGlobals::delete_umk($umk_id)) {
                     $is_error = true;
                 }
             } else {
                 $is_error = true;
             }
             if (!$is_error) {
                 $answer['res'] = 'done';
             } else {
                 $answer['res'] = 'error';
                 $answer['type'] = 'danger';
                 $answer['msg'] = 'УМК не удален! Ошибка запроса к базе данных!';
             }
             break;
         case 'save_podrazdel_kim':
             $podrazdel_id = $_POST['podrazdel_id'];
             $tip_kursa = $_POST['tip_kursa'];
             $tip = $_POST['tip'];
             $is_error = false;
             $kim_id = KursGlobals::insert_kim($_POST);
             if ($kim_id) {
                 $sql = 'INSERT INTO kim_podrazdela_kursa (podrazdel_kursa,kim) VALUES(:pk,:kim)';
                 $res = Yii::$app->db->createCommand($sql)->bindValue(':pk', $podrazdel_id)->bindValue(':kim', $kim_id)->execute();
                 if (!$res) {
                     $is_error = true;
                 }
             } else {
                 $is_error = true;
             }
             if (!$is_error) {
                 $answer['res'] = 'done';
                 $kim = KursGlobals::get_kim_by_id($kim_id);
                 $kim['tip_kursa'] = $tip_kursa;
                 $kim['tip'] = $tip;
                 $answer['html'] = RpdGlobals::get_kim_row($kim);
             } else {
                 $answer['res'] = 'error';
             }
             break;
         case 'sign_discipline':
             $id = $_POST['id'];
             $is_checked = $_POST['is_checked'];
             $is_error = false;
             $answer['is_set_podpis'] = 1;
             if ($is_checked) {
                 $errors = '';
                 if ($errors = RpdGlobals::check_podrazdel($id)) {
                     $answer['res'] = 'error';
                     $answer['msg'] = $errors;
                 } else {
                     $res = RpdGlobals::set_discipline_status($id, 1);
                     if ($res) {
                         $answer['res'] = 'done';
                     } else {
                         $answer['res'] = 'error';
                         $answer['msg'] = 'Ошибка выполнения запроса к базе данных. Подпись не сохранена';
                     }
                 }
             } else {
                 //$sql = 'UPDATE kurs SET status_programmy = \'redaktiruetsya\' where id = :id';
                 $res = RpdGlobals::set_discipline_status($id, 0);
                 if ($res) {
                     $answer['res'] = 'done';
                 } else {
                     $answer['res'] = 'error';
                     $answer['msg'] = 'Ошибка выполнения запроса к базе данных. Подпись не сохранена';
                 }
             }
             break;
         case 'save_theme_num_order':
             $order = $_POST['order'];
             if ($order) {
                 $t = Yii::$app->db->beginTransaction();
                 $is_error = false;
                 foreach ($order as $k => $v) {
                     $sql = 'UPDATE tema SET nomer = :nomer WHERE id = :id';
                     $res = Yii::$app->db->createCommand($sql)->bindValue(':nomer', $v['new'])->bindValue(':id', $k)->execute();
                     if (!$res) {
                         $is_error = true;
                         break;
                     }
                 }
                 if (!$is_error) {
                     $t->commit();
                     $answer['res'] = 'done';
                 } else {
                     $t->rollBack();
                     $answer['res'] = 'error';
                     $answer['type'] = 'error';
                     $answer['msg'] = 'Во время сохрарения произошла ошибка. Данные не изменены.ƒ';
                 }
             }
             break;
     }
     return json_encode($answer);
 }
예제 #4
0
 public static function get_kf_podrazdela_row($item, $status = StatusProgrammyKursa::REDAKTIRUETSYA, $is_full = true)
 {
     $html = '<tr id="podrazdel_kf' . $item['id'] . '" class="atr kf-row">
                 <td class="action-td">
                 ' . ($status == StatusProgrammyKursa::REDAKTIRUETSYA ? '<div class="actions-control">
                        <span class="actions">действия</span>
                        <div class="action-list">
                            <span class="subarrowed">действия</span>
                            <div class="action"><span class="slink"  onclick="add_podrazdel_kf_kim(' . $item['id'] . ')">Добавить КИМ</span></div>
                            <div class="action"><span class="slink"  onclick="edit_podrazdel_kf(' . $item['id'] . ')">Редактировать</span></div>
                            <div class="action"><span class="slink" onclick="delete_podrazdel_kf(' . $item['id'] . ')">Удалить</span></div>
                         </div>
                     </div>' : '') . '</td>
                 <td class="data">
                     <div class="fk-podrazdel">
                         Форма контроля ' . ($item['tip_kursa'] == 'pk' ? 'блока тем' : 'дисциплины') . ' - ' . $item['kf_podrazdela_name'] . ' (<span id="chasy_kf_podrazdel' . $item['id'] . '">' . $item['chasy_kf_podrazdela'] . '</span> ч.)
                         ' . (isset($item['kontrol_fiz_lica']) ? '<br>' . implode(',', array_map(function ($v, $k) {
         return $v;
     }, $item['kontrol_fiz_lica'], array_keys($item['kontrol_fiz_lica']))) : '') . (isset($item['kontrol_fiz_lica']) ? '<span id="kontrols_pk_ids' . $item['id'] . '" class="hidden">' . implode(',', array_map(function ($v, $k) {
         return $k;
     }, $item['kontrol_fiz_lica'], array_keys($item['kontrol_fiz_lica']))) . '</span>' : '') . '
                         <input type="hidden" id="podrazdel_kf_id' . $item['id'] . '" value="' . $item['kf_podrazdel_id'] . '">
                     </div>
                 </td>
                 <td></td>
             </tr>';
     if ($is_full) {
         if (isset($item['podrazdel_kims'])) {
             foreach ($item['podrazdel_kims'] as $k => $v) {
                 $html .= RpdGlobals::get_kim_row($v, $status);
             }
         }
         $html .= '<tr class="section_footer" id="section_footer_kf_podrazdela' . $item['id'] . '"><td colspan="3"></td></tr>';
     }
     return $html;
 }