public function update_outage($outage_SN, $remark, $start_time, $end_time = NULL) { //過濾參數 $start_time = date("Y-m-d H:i:s", strtotime($start_time)); $end_time = trim($end_time); $end_time = empty($end_time) ? NULL : date("Y-m-d H:i:s", strtotime($end_time)); //檢查outage存不存在 $outage = $this->facility_model->get_outage_list(array("outage_SN" => $outage_SN))->row_array(); if (!$outage) { throw new Exception("無此停機記錄", ERROR_CODE); } //檢查時間順序 if (!empty($end_time)) { if ($start_time >= $end_time) { throw new Exception("起始時間需小於結束時間", WARNING_CODE); } } //檢查有沒有重複時間 $outages = $this->facility_model->get_outage_list(array("outage_start_time" => $start_time, "outage_end_time" => $end_time, "facility_SN" => $outage['facility_SN']))->result_array(); foreach ($outages as $o) { if ($o['outage_SN'] != $outage['outage_SN']) { throw new Exception("停機時段已存在,不可重複", ERROR_CODE); } } $facility = $this->facility_model->get_facility_list(array("ID" => $outage['facility_SN']))->row_array(); //檢查時間有無整點 if (!is_int_multiple_unit_time(array(strtotime($start_time), strtotime($end_time)), $facility['unit_sec'])) { throw new Exception("請輸入單位倍數的時間", WARNING_CODE); } //更新 $this->facility_model->update_outage(array("outage_SN" => $outage['outage_SN'], "outage_remark" => $remark, "outage_start_time" => $start_time, "outage_end_time" => $end_time)); //更新使用者權限 if ($outage['outage_start_time'] != $start_time || $outage['outage_end_time'] != $end_time) { $this->load->model('facility/user_privilege_model'); $this->user_privilege_model->update(NULL, $outage['facility_SN']); } }
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); }