public function del($class_ID = "") { if (!$this->curriculum_model->is_super_admin()) { throw new Exception("權限不足", ERROR_CODE); } $classes = $this->curriculum_model->get_class_list(array("class_ID" => $class_ID))->result_array(); if (!$classes) { throw new Exception("無此開課資訊", ERROR_CODE); } $class_IDs = sql_column_to_key_value_array($classes, "class_ID"); //先確認無人報名 $reg = $this->curriculum_model->get_reg_list(array("class_ID" => $class_IDs))->row_array(); if ($reg) { throw new Exception("此課已有人報名,不可刪除", ERROR_CODE); } //先刪除所有報名的人 $this->curriculum_db->where_in("class_ID", $class_IDs); $this->curriculum_db->delete("class_registration"); //把預約的儀器全部取消 $bookings = $this->curriculum_model->get_lesson_booking_map(array("class_ID" => $class_IDs))->result_array(); $b_IDs = sql_result_to_column($bookings, "booking_ID"); $this->load->model('facility/booking_model'); $this->booking_model->del($b_IDs); //再真正刪除課堂 $this->curriculum_model->del_class(array("class_ID" => $class_ID)); }
public function cancel($SN) { $app = $this->get_card_application_list(array("serial_no" => $SN))->row_array(); if (!$app) { throw new Exception("無此申請單", ERROR_CODE); } //在核發或補發狀態下並已指定卡號 if (!empty($app['card_num']) && ($app['type'] == 'apply' || $app['type'] == 'reissue')) { //取得退卡的卡號,若與現在卡號相同,則解除綁定 $user_profile = $this->user_model->get_user_profile_by_ID($app['user_ID']); if ($app['card_num'] == $user_profile['card_num']) { //把卡號從帳號綁定移除 $this->user_model->update_user_card_num($app['user_ID']); } } $this->update_card_application(array("canceled_by" => $this->session->userdata('ID'), "checkpoint" => "Canceled", "serial_no" => $app['serial_no'])); //取得管理員mail $this->load->model('access_model'); $admins = $this->access_model->get_privilege_list(array("privilege" => "access_super_admin"))->result_array(); $admin_emails = sql_column_to_key_value_array($admins, "admin_email"); //發送通知 $this->email->to($app['user_email']); $this->email->cc($admin_emails); $this->email->subject("成大微奈米科技研究中心 -磁卡申請退件通知-"); $this->email->message("\n\t\t\t{$app['user_name']} 您好:<br>\n\t\t\t您的磁卡申請編號 {$app['serial_no']} 已退件,有任何問題歡迎電洽本中心,謝謝。\n\t\t"); $this->email->send(); }
public function del($lesson_ID) { if (empty($lesson_ID)) { return; } //取得課堂資訊 $lessons = $this->curriculum_model->get_lesson_list(array("lesson_ID" => $lesson_ID))->result_array(); if (!$lessons) { throw new Exception("無此課堂", ERROR_CODE); } $lesson_IDs = sql_column_to_key_value_array($lessons, "lesson_ID"); //先刪除預約紀錄 $maps = $this->curriculum_model->get_lesson_booking_map(array("lesson_ID" => $lesson_IDs))->result_array(); $this->load->model('facility/booking_model'); foreach ($maps as $map) { $this->booking_model->del($map['booking_ID']); } //然後刪除lesson紀錄 $this->curriculum_model->del_lesson(array("lesson_ID" => $lesson_IDs)); //然後更新可預約時間 $this->load->model('curriculum/class_model'); foreach ($lessons as $lesson) { $this->class_model->update_reg_end_time($lesson['class_ID']); } }
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_privileges = $this->cash_model->get_admin_privilege_list(array("privilege" => "cash_super_admin"))->result_array(); $this->data['admin_ID'] = sql_column_to_key_value_array($admin_privileges, "admin_ID"); $this->load->view('templates/header'); $this->load->view('templates/sidebar'); $this->load->view('cash/edit_config', $this->data); $this->load->view('templates/footer'); } catch (Exception $e) { $this->show_error_page(); } }
public function get_revision_unsigned_admin($revision_SN) { $report_revision = $this->get_report_revision_list(array("revision_SN" => $revision_SN))->row_array(); if (!$report_revision) { throw new Exception("無此報告修改單", ERROR_CODE); } $report_revision['test_outline'] = explode(',', $report_revision['test_outline']); $unsigned_admin_ID = array(); //取的在該關已簽名的名單 $signed_admins = $this->get_revision_checkpoint_list(array("revision_SN" => $report_revision['serial_no'], "checkpoint_ID" => $report_revision['checkpoint']))->result_array(); $signed_admins = sql_column_to_key_value_array($signed_admins, "admin_ID"); if ($report_revision['checkpoint'] == "technical_manager" || $report_revision['checkpoint'] == "report_signatory") { foreach ($report_revision['test_outline'] as $test_outline) { $signable_admins = $this->get_admin_privilege_list(array("privilege" => "revision_{$report_revision['checkpoint']}_{$test_outline}"))->result_array(); $signable_admins = sql_column_to_key_value_array($signable_admins, "admin_ID"); if (!array_in_array($signed_admins, $signable_admins)) { //都還沒簽 $unsigned_admin_ID = array_merge($unsigned_admin_ID, $signable_admins); } } } else { $signable_admins = $this->get_admin_privilege_list(array("privilege" => "revision_{$report_revision['checkpoint']}"))->result_array(); $signable_admins = sql_column_to_key_value_array($signable_admins, "admin_ID"); if (!array_in_array($signed_admins, $signable_admins)) { //還沒簽 $unsigned_admin_ID = array_merge($unsigned_admin_ID, $signable_admins); } } $unsigned_admin_ID = array_unique($unsigned_admin_ID); return $unsigned_admin_ID; }
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_org_chart_status_array($g_no = NULL) { $statuss = $this->get_enum_org_chart_status_list(array("group_no" => $g_no))->result_array(); return sql_column_to_key_value_array($statuss, "status_name", "status_no"); }
public function edit_card_temp_application($SN) { try { $this->is_admin_login(); if (!$this->access_model->is_super_admin()) { throw new Exception(); } $SN = $this->security->xss_clean($SN); $app = $this->access_model->get_access_card_temp_application_list(array("serial_no" => $SN))->row_array(); if (!$app) { throw new Exception(); } $this->data = $app; $this->data['purposes'] = $this->access_card_temp_application_model->get_purpose_select_option_array(); $this->load->model('admin_model'); $this->data['used_by_array'] = $this->admin_model->get_admin_ID_select_options(); if ($app['application_checkpoint_ID'] == 'applied' && $this->access_model->is_super_admin()) { $this->data['page'] = "issue"; } $this->load->model('facility_model'); $this->data['facility_SN_select_options'] = $this->facility_model->get_facility_select_options("door"); $maps = $this->access_model->get_access_card_temp_app_facility_map_list(array("temp_app_SN" => $app['serial_no']))->result_array(); $this->data['facility_SN'] = sql_column_to_key_value_array($maps, "facility_SN"); $this->load->view('templates/header'); $this->load->view('templates/sidebar'); $this->load->view('access/form_card_temp_application', $this->data); $this->load->view('templates/footer'); } catch (Exception $e) { $this->show_error_page(); } }
public function issue($SN, $card_num = NULL, $issued_by = NULL) { //取得CP編號 $cp = $this->access_model->get_enum_access_card_temp_application_checkpoint_list(array("checkpoint_ID" => "issued"))->row_array(); //自動ASSIGN卡號 if (!isset($card_num)) { $card = $this->access_model->get_access_card_pool_list(array("occupied" => 0))->row_array(); if (!$card) { throw new Exception("已無空卡可用", ERROR_CODE); } $card_num = $card['access_card_num']; } else { //先檢查是否被occupied $card = $this->access_model->get_access_card_pool_list(array("access_card_num" => $card_num))->row_array(); if ($card && $card['occupied']) { throw new Exception("此卡尚未歸還", ERROR_CODE); } } //寫入單子 $this->access_model->update_access_card_temp_application(array("guest_access_card_num" => $card_num, "issued_by" => isset($issued_by) ? $issued_by : $this->session->userdata('ID'), "application_checkpoint" => $cp['checkpoint_no'], "serial_no" => $SN)); //取得單子資料 $app = $this->access_model->get_access_card_temp_application_list(array("serial_no" => $SN))->row_array(); if (!$app) { throw new Exception("無此單資料"); } //標記已用 $this->access_model->update_access_card_pool(array("occupied" => 1, "access_card_num" => $app['guest_access_card_num'])); //開啟權限 if ($app['application_type_ID'] == "guest") { $this->load->model('facility/access_ctrl_model'); //取得要開哪些門禁的列表 $app_facility_maps = $this->access_model->get_access_card_temp_app_facility_map_list(array("temp_app_SN" => $app['serial_no']))->result_array(); $door_IDs = sql_column_to_key_value_array($app_facility_maps, "facility_SN"); $this->access_ctrl_model->add_by_card_num($door_IDs, $app['guest_access_card_num'], strtotime($app['guest_access_start_time']), strtotime($app['guest_access_end_time'])); } else { if ($app['application_type_ID'] == "user") { $this->load->model('facility/access_ctrl_model'); $this->access_ctrl_model->open_all_door_by_num($app['guest_access_card_num'], strtotime($app['guest_access_start_time']), strtotime($app['guest_access_end_time'])); //把開門禁並將那個人那個時間點的開卡紀錄全部換成這張卡 $this->access_ctrl_model->exchange($app['used_by'], $app['guest_access_card_num'], $app['guest_access_start_time'], $app['guest_access_end_time']); } } //回傳開啟的卡號 return $app['guest_access_card_num']; }