public function get_course_map_facility_ID($course_ID) { $this->curriculum_db->select("course_facility_map.facility_ID"); $this->curriculum_db->join("course_facility_map", "course_facility_map.course_ID = course_list.course_ID"); $this->curriculum_db->where("course_list.course_ID", $course_ID); $results = $this->curriculum_db->get("course_list")->result_array(); if ($results) { return sql_result_to_column($results, "facility_ID"); } else { return array(); } }
public function open_all_door_by_num($card_num, $start, $end) { //取得所有門禁資訊 $doors = $this->facility_model->get_facility_list(array("type" => "door"))->result_array(); //取得所有門禁的編號 $door_IDs = sql_result_to_column($doors, "ID"); //新增 $this->add_by_card_num($door_IDs, $card_num, $start, $end); }
public function get_time_by_checkbox($input_array_time, $f_IDs) { $facilities_ID = $this->facility_model->get_vertical_group_facilities($f_IDs, array("facility_only" => TRUE)); $facilities = $this->facility_model->get_facility_list(array("ID" => $facilities_ID))->result_array(); if (!$facilities) { throw new Exception("無此儀器!", ERROR_CODE); } $unit_sec = max(sql_result_to_column($facilities, "unit_sec")); $min_time = min($input_array_time); $max_time = max($input_array_time) + $unit_sec; //確認選擇了連續時段 for ($i = $min_time; $i < $max_time; $i += $unit_sec) { if (!in_array($i, $input_array_time)) { throw new Exception("請選擇連續時段。", WARNING_CODE); } } //確認選擇了整點時段 if (!is_int_multiple_unit_time($min_time, $unit_sec) || !is_int_multiple_unit_time($max_time, $unit_sec)) { throw new Exception("非整點時段!", ERROR_CODE); } return array($min_time, $max_time); }
public function edit_config() { try { $this->is_admin_login(); $this->load->model('admin_model'); $this->data['admin_ID_select_options'] = $this->admin_model->get_admin_ID_select_options(); //取得管理員名單 $admin_list = $this->reward_model->get_admin_privilege_list(array("privilege" => "reward_super_admin"))->result_array(); if ($admin_list) { $this->data['admin_ID'] = sql_result_to_column($admin_list, "admin_ID"); } $this->load->view('templates/header'); $this->load->view('templates/sidebar'); $this->load->view('reward/config', $this->data); $this->load->view('templates/footer'); } catch (Exception $e) { $this->show_error_page(); } }
public function get_class_profs_ID($class_ID) { $lessons = $this->curriculum_model->get_lesson_list(array("class_ID" => $class_ID))->result_array(); return $profs_ID = array_unique(sql_result_to_column($lessons, "lesson_prof_ID")); }
public function certify($reg_IDs = "", $updated_by = NULL) { if (!isset($updated_by)) { $updated_by = $this->session->userdata('ID'); } foreach ((array) $reg_IDs as $reg_ID) { $reg = $this->curriculum_model->get_reg_list(array("reg_ID" => $reg_ID))->row_array(); if (!$reg) { throw new Exception("無此報名!", ERROR_CODE); } //檢查權限 if (!$this->curriculum_model->is_super_admin()) { $this->load->model('curriculum/lesson_model'); $lessons = $this->curriculum_model->get_lesson_list(array("course_ID" => $reg['course_ID'], "class_code" => $reg['class_code'], "lesson_type" => "certification"))->result_array(); //只要是有上過認證課的老師就有權限 if (!$lessons || !in_array($this->session->userdata('ID'), sql_result_to_column($lessons, "lesson_prof_ID"))) { throw new Exception("權限不足!", ERROR_CODE); } } if ($reg['reg_state'] == "confirmed") { //已確認,要通過認證 if ($reg['course_ID'] == "1") { //安全講習,較特殊 $this->load->model('user_model'); $this->user_model->update_user_security_verification($reg['user_ID']); } else { //先檢查相關的報名是否有含認證課程 //if(!in_array('certification',explode(",",$reg['class_type']))) throw new Exception("此課程不含認證課程!",ERROR_CODE); $data = array("user_ID" => $reg['user_ID'], "course_ID" => $reg['course_ID'], "class_code" => $reg['class_code'], "group_class_suite" => TRUE); $reg = $this->curriculum_model->get_reg_list($data)->row_array(); $class_type = explode(',', $reg['class_type']); if (!in_array('certification', $class_type)) { throw new Exception("此課程不含認證課程!", ERROR_CODE); } //開啟相關儀器權限(先取得該課程相關的儀器,再開啟權限) $data = array("course_ID" => $reg['course_ID']); $results = $this->curriculum_model->get_course_facility_map($data)->result_array(); $this->load->model('facility/user_privilege_model'); foreach ($results as $result) { $this->user_privilege_model->add($result['facility_ID'], $reg['user_ID'], "normal"); } } //將所有的報名更改狀態為已認證 $data = array("user_ID" => $reg['user_ID'], "course_ID" => $reg['course_ID'], "class_code" => $reg['class_code']); $regs = $this->curriculum_model->get_reg_list($data)->result_array(); foreach ($regs as $reg) { $data = array("reg_state" => "certified", "reg_certified_by" => $updated_by, "reg_ID" => $reg['reg_ID']); $this->curriculum_model->update_reg($data); } //$data = array( "reg_state"=>"certified", // "reg_certified_by"=>$updated_by, // "reg_ID"=>$reg['reg_ID']); //$this->curriculum_model->update_reg($data); } else { throw new Exception("尚未確認已到", ERROR_CODE); } } }
public function send_curriculum_tomorrow_lesson_notification() { $this->load->model('curriculum_model'); $this->load->model('curriculum/class_model'); $this->load->model('curriculum/course_model'); $this->load->model('user_model'); $this->load->model('facility/access_ctrl_model'); //取得課務員email $admins = $this->curriculum_model->get_admin_privilege_list(array("privilege" => "curriculum_super_admin"))->result_array(); $admin_emails = sql_column_to_key_value_array($admins, "admin_email"); //找出明天有開課的課堂 $lessons = $this->curriculum_model->get_lesson_list(array("lesson_start_time" => date("Y-m-d 00:00:00", strtotime("+1day")), "lesson_end_time" => date("Y-m-d 00:00:00", strtotime("+2day")), "class_state" => array("normal", "additional")))->result_array(); foreach ($lessons as $lesson) { $class = $this->curriculum_model->get_class_list(array("class_ID" => $lesson['class_ID']))->row_array(); $regs = $this->curriculum_model->get_reg_list(array("class_ID" => $lesson['class_ID']))->result_array(); //認證課程用特殊處理方式 $original_canceled_reg_nums = 0; $original_canceled_reg_user_IDs = array(); if ($this->class_model->is_certification_class_only($class['class_type'])) { //先取得原本沒開課的報名人數 $original_canceled_regs = $this->curriculum_model->get_reg_list(array("course_ID" => $class['course_ID'], "class_code" => $class['class_code'], "class_state" => "canceled", "group_class_suite" => TRUE)); $original_canceled_reg_nums = $original_canceled_regs->num_rows(); $original_canceled_reg_user_IDs = sql_result_to_column($original_canceled_regs->result_array(), "user_ID"); } foreach ($regs as $reg) { //通知正取生 if (empty($class['class_max_participants']) || $reg['reg_rank'] - $original_canceled_reg_nums <= $class['class_max_participants']) { if (!in_array($reg['user_ID'], $original_canceled_reg_user_IDs)) { //幫他們開門禁權限 $user_profile = $this->user_model->get_user_profile_list(array("user_ID" => $reg['user_ID']))->row_array(); if (!empty($user_profile['card_num'])) { $facility_IDs = $this->course_model->get_course_map_facility_ID($reg['course_ID']); if (!empty($facility_IDs)) { foreach ($facility_IDs as $facility_ID) { $this->access_ctrl_model->add($facility_ID, $user_profile['ID'], strtotime($lesson['lesson_start_time']), strtotime($lesson['lesson_end_time']), TRUE); } } } $this->email->to($user_profile['email'])->cc($admin_emails); $this->email->subject("成大微奈米科技研究中心 -課程系統通知- [明天上課]"); $this->email->message("{$user_profile['name']} 您好,<br>\r\n\t\t\t\t\t\t\t<br>\r\n\t\t\t\t\t\t\t明日是 {$lesson['course_cht_name']} 課程 " . $this->curriculum_model->get_class_type_str($lesson['lesson_type']) . " 的上課日,請準時出席,謝謝。<br>\r\n\t\t\t\t\t\t\t日期:" . date("Y-m-d", strtotime($lesson['lesson_start_time'])) . "<br>\r\n\t\t\t\t\t\t\t時間:" . date("H:i:s", strtotime($lesson['lesson_start_time'])) . "<br>\r\n\t\t\t\t\t\t\t課程名稱:{$lesson['course_cht_name']}<br>\r\n\t\t\t\t\t\t\t地點:{$lesson['location_cht_name']}<br>\r\n\t\t\t\t\t\t\t授課者:{$lesson['lesson_prof_name']}<br>"); $this->email->send(); } } } } echo "DONE"; }
public function get_max_pre_open_sec($f_ID = NULL) { $options = array("ID" => $f_ID); $facilities = $this->get_facility_list($options)->result_array(); if ($facilities) { $pre_open_sec = sql_result_to_column($facilities, "pre_open_sec"); return max($pre_open_sec); } else { return 0; } }
public function query_reg() { try { $this->is_user_login(); $input_data = $this->input->get(NULL, TRUE); $options = array("class_code" => isset($input_data['class_code']) ? $input_data['class_code'] : "", "course_ID" => empty($input_data['course_ID']) ? NULL : $input_data['course_ID'], "group_class_suite" => TRUE); $regs = $this->curriculum_model->get_reg_list($options)->result_array(); $output['aaData'] = array(); $this->load->model('user_model'); foreach ($regs as $reg) { //查詢學員資料 $user_profile = $this->user_model->get_user_profile_list(array("user_ID" => $reg['user_ID']))->row_array(); $row = array(); $row[] = "{$reg['course_cht_name']} ({$reg['course_eng_name']})"; $row[] = $reg['class_code']; $row[] = $this->curriculum_model->get_class_type_str($reg['class_type']); if (empty($reg['class_max_participants']) || $reg['reg_rank'] <= $reg['class_max_participants']) { $row[] = $user_profile['name'] . form_label("正取" . $reg['reg_rank'], "", array("class" => "label label-success")); } else { $row[] = $user_profile['name'] . form_label("備取" . ($reg['reg_rank'] - $reg['class_max_participants']), "", array("class" => "label label-warning")); } $row[] = $user_profile['org_name'] . $user_profile['department']; $row[] = $user_profile['mobile']; $row[] = $user_profile['email']; $row[] = $user_profile['boss_name']; $display = array(); //取得授課人員名單 $lessons = $this->curriculum_model->get_lesson_list(array("course_ID" => $reg['course_ID'], "class_code" => $reg['class_code']))->result_array(); $lesson_prof_IDs = array_unique(sql_result_to_column($lessons, "lesson_prof_ID")); if ($this->curriculum_model->is_super_admin() || in_array($this->session->userdata('ID'), $lesson_prof_IDs)) { if ($reg['reg_state'] == "selected") { $display[] = form_checkbox("reg_ID[]", $reg['reg_ID']); } else { if ($reg['reg_state'] == "confirmed") { if ($this->curriculum_model->is_super_admin()) { $display[] = form_checkbox("reg_ID[]", $reg['reg_ID']); } else { if ($reg['course_ID'] == 1) { //取得可認證授課人員名單 $certification_lessons = $this->curriculum_model->get_lesson_list(array("course_ID" => $reg['course_ID'], "class_code" => $reg['class_code']))->result_array(); $certification_prof_IDs = array_unique(sql_result_to_column($lessons, "lesson_prof_ID")); if (in_array($this->session->userdata('ID'), $certification_prof_IDs)) { $display[] = form_checkbox("reg_ID[]", $reg['reg_ID']); } } else { if (in_array('certification', explode(",", $reg['class_type']))) { //取得可認證授課人員名單 $certification_lessons = $this->curriculum_model->get_lesson_list(array("course_ID" => $reg['course_ID'], "class_code" => $reg['class_code'], "lesson_type" => "certification"))->result_array(); $certification_prof_IDs = array_unique(sql_result_to_column($lessons, "lesson_prof_ID")); if (in_array($this->session->userdata('ID'), $certification_prof_IDs)) { $display[] = form_checkbox("reg_ID[]", $reg['reg_ID']); } } } } } } } else { if ($reg['user_ID'] != $this->session->userdata('ID')) { continue; } } //顯示狀態 if (!empty($reg['reg_confirmed_by'])) { $display[] = form_label("已到", "", array("class" => "label label-success")); } if (!empty($reg['reg_certified_by'])) { $display[] = form_label("已過", "", array("class" => "label label-success")); } //超級管理員隨時都可以取消 if ($this->curriculum_model->is_super_admin() && $reg['reg_state'] == 'selected') { $display[] = form_button("del", "取消", "class='btn btn-danger btn-small' value='{$reg['reg_ID']}'"); } $row[] = implode(' ', $display); $output['aaData'][] = $row; } echo json_encode($output); } catch (Exception $e) { echo json_encode($output); } }