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']);
     }
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 6
0
 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");
 }
Exemplo n.º 8
0
 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'];
 }