db_oneklinik = $this->load->database("onedev", true); } public function index() { echo "POLI API"; } public function search() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $search = isset($prm['search']) ? trim($prm['search']) : (isset($prm['name']) ? trim($prm['name']) : ''); $like = '%' . $search . '%'; $row_per_page = isset($prm['row_per_page']) && intval($prm['row_per_page']) > 0 ? intval($prm['row_per_page']) : 10; $page = 1; if (isset($prm['page']) && intval($prm['page']) > 0) { $page = intval($prm['page']); } elseif (isset($prm['current_page']) && intval($prm['current_page']) > 0) { $page = intval($prm['current_page']); } $offset = ($page - 1) * $row_per_page; $allowed_order_by = array( 'id' => 'cu.M_ClinicUnitID', 'code' => 'cu.M_ClinicUnitCode', 'name' => 'cu.M_ClinicUnitName', 'description' => 'cu.M_ClinicUnitDescription', 'screening_template_name' => 'st.M_ScreeningTemplateName' ); $order_by = 'cu.M_ClinicUnitID'; if (isset($prm['order_by']) && isset($allowed_order_by[$prm['order_by']])) { $order_by = $allowed_order_by[$prm['order_by']]; } $order = isset($prm['order']) && strtolower($prm['order']) === 'desc' ? 'DESC' : 'ASC'; $sql_count = "SELECT COUNT(*) AS total FROM one_klinik.m_clinic_unit cu LEFT JOIN one_klinik.m_screening_template st ON st.M_ScreeningTemplateID = cu.M_ClinicUnitM_ScreeningTemplateID AND st.M_ScreeningTemplateIsActive = 'Y' WHERE cu.M_ClinicUnitIsActive = 'Y' AND ( cu.M_ClinicUnitCode LIKE ? OR cu.M_ClinicUnitName LIKE ? OR IFNULL(cu.M_ClinicUnitDescription, '') LIKE ? OR IFNULL(cu.M_ClinicUnitSatusehatLocationID, '') LIKE ? OR IFNULL(st.M_ScreeningTemplateName, '') LIKE ? )"; $query_count = $this->db_oneklinik->query($sql_count, array($like, $like, $like, $like, $like)); if (!$query_count) { $this->sys_error_db("m_clinic_unit count", $this->db_oneklinik); exit; } $total_filter = intval($query_count->row()->total); $total_page = ceil($total_filter / $row_per_page); $sql = "SELECT cu.M_ClinicUnitID AS id, cu.M_ClinicUnitCode AS code, cu.M_ClinicUnitName AS name, cu.M_ClinicUnitDescription AS description, cu.M_ClinicUnitSatusehatLocationID AS satusehat_location_id, cu.M_ClinicUnitM_ScreeningTemplateID AS screening_template_id, st.M_ScreeningTemplateCode AS screening_template_code, st.M_ScreeningTemplateName AS screening_template_name, cu.M_ClinicUnitIsActive AS is_active, cu.M_ClinicUnitCreated AS created, cu.M_ClinicUnitLastUpdated AS last_updated FROM one_klinik.m_clinic_unit cu LEFT JOIN one_klinik.m_screening_template st ON st.M_ScreeningTemplateID = cu.M_ClinicUnitM_ScreeningTemplateID AND st.M_ScreeningTemplateIsActive = 'Y' WHERE cu.M_ClinicUnitIsActive = 'Y' AND ( cu.M_ClinicUnitCode LIKE ? OR cu.M_ClinicUnitName LIKE ? OR IFNULL(cu.M_ClinicUnitDescription, '') LIKE ? OR IFNULL(cu.M_ClinicUnitSatusehatLocationID, '') LIKE ? OR IFNULL(st.M_ScreeningTemplateName, '') LIKE ? ) ORDER BY {$order_by} {$order} LIMIT ? OFFSET ?"; $query = $this->db_oneklinik->query($sql, array($like, $like, $like, $like, $like, $row_per_page, $offset)); if (!$query) { $this->sys_error_db("m_clinic_unit select", $this->db_oneklinik); exit; } $rows = $query->result_array(); $this->sys_ok(array( "total" => $total_page, "total_filter" => $total_filter, "records" => $rows )); } catch (Exception $exc) { $this->sys_error($exc->getMessage()); } } public function gettemplates() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $sql = "SELECT M_ScreeningTemplateID AS id, M_ScreeningTemplateCode AS code, M_ScreeningTemplateName AS name, M_ScreeningTemplateDescription AS description FROM one_klinik.m_screening_template WHERE M_ScreeningTemplateIsActive = 'Y' ORDER BY M_ScreeningTemplateName ASC"; $query = $this->db_oneklinik->query($sql); if (!$query) { $this->sys_error_db("m_screening_template select", $this->db_oneklinik); exit; } $rows = $query->result_array(); $this->sys_ok(array("total" => count($rows), "records" => $rows)); } catch (Exception $exc) { $this->sys_error($exc->getMessage()); } } public function add() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $code = isset($prm['code']) ? trim($prm['code']) : ''; $name = isset($prm['name']) ? trim($prm['name']) : ''; $description = isset($prm['description']) ? trim($prm['description']) : null; $satusehat_location_id = isset($prm['satusehat_location_id']) ? trim($prm['satusehat_location_id']) : null; $screening_template_id = isset($prm['screening_template_id']) && $prm['screening_template_id'] !== '' ? intval($prm['screening_template_id']) : null; $userid = $this->sys_user["M_UserID"]; if ($code === '' || $name === '') { $this->sys_error("code and name are mandatory"); exit; } $duplicate = $this->db_oneklinik->query( "SELECT COUNT(*) AS total FROM one_klinik.m_clinic_unit WHERE M_ClinicUnitCode = ? OR (M_ClinicUnitIsActive = 'Y' AND M_ClinicUnitName = ?)", array($code, $name) ); if (!$duplicate) { $this->sys_error_db("m_clinic_unit duplicate check", $this->db_oneklinik); exit; } if (intval($duplicate->row()->total) > 0) { $this->sys_ok(array( "total" => -1, "errors" => array(array("field" => "code", "msg" => "Kode atau nama sudah ada")), "records" => 0 )); exit; } $sql = "INSERT INTO one_klinik.m_clinic_unit ( M_ClinicUnitCode, M_ClinicUnitName, M_ClinicUnitDescription, M_ClinicUnitSatusehatLocationID, M_ClinicUnitM_ScreeningTemplateID, M_ClinicUnitUserID, M_ClinicUnitCreated, M_ClinicUnitLastUpdated ) VALUES (?, ?, ?, ?, ?, ?, NOW(), NOW())"; $query = $this->db_oneklinik->query($sql, array( $code, $name, $description, $satusehat_location_id, $screening_template_id, $userid )); if (!$query) { $this->sys_error_db("m_clinic_unit insert", $this->db_oneklinik); exit; } $this->sys_ok(array( "total" => 1, "records" => array("xid" => $this->db_oneklinik->insert_id()) )); } catch (Exception $exc) { $this->sys_error($exc->getMessage()); } } public function update() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $id = isset($prm['id']) ? intval($prm['id']) : 0; $code = isset($prm['code']) ? trim($prm['code']) : ''; $name = isset($prm['name']) ? trim($prm['name']) : ''; $description = isset($prm['description']) ? trim($prm['description']) : null; $satusehat_location_id = isset($prm['satusehat_location_id']) ? trim($prm['satusehat_location_id']) : null; $screening_template_id = isset($prm['screening_template_id']) && $prm['screening_template_id'] !== '' ? intval($prm['screening_template_id']) : null; $userid = $this->sys_user["M_UserID"]; if (!$id || $code === '' || $name === '') { $this->sys_error("id, code and name are mandatory"); exit; } $duplicate = $this->db_oneklinik->query( "SELECT COUNT(*) AS total FROM one_klinik.m_clinic_unit WHERE M_ClinicUnitID <> ? AND (M_ClinicUnitCode = ? OR (M_ClinicUnitIsActive = 'Y' AND M_ClinicUnitName = ?))", array($id, $code, $name) ); if (!$duplicate) { $this->sys_error_db("m_clinic_unit duplicate check", $this->db_oneklinik); exit; } if (intval($duplicate->row()->total) > 0) { $this->sys_ok(array( "total" => -1, "errors" => array(array("field" => "code", "msg" => "Kode atau nama sudah ada")), "records" => 0 )); exit; } $sql = "UPDATE one_klinik.m_clinic_unit SET M_ClinicUnitCode = ?, M_ClinicUnitName = ?, M_ClinicUnitDescription = ?, M_ClinicUnitSatusehatLocationID = ?, M_ClinicUnitM_ScreeningTemplateID = ?, M_ClinicUnitUserID = ?, M_ClinicUnitLastUpdated = NOW() WHERE M_ClinicUnitID = ? AND M_ClinicUnitIsActive = 'Y'"; $query = $this->db_oneklinik->query($sql, array( $code, $name, $description, $satusehat_location_id, $screening_template_id, $userid, $id )); if (!$query) { $this->sys_error_db("m_clinic_unit update", $this->db_oneklinik); exit; } $this->sys_ok(array("total" => 1, "records" => array("xid" => $id))); } catch (Exception $exc) { $this->sys_error($exc->getMessage()); } } public function delete() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $id = isset($prm['id']) ? intval($prm['id']) : 0; if (!$id) { $this->sys_error("id is mandatory"); exit; } $userid = $this->sys_user["M_UserID"]; $sql = "UPDATE one_klinik.m_clinic_unit SET M_ClinicUnitIsActive = 'N', M_ClinicUnitUserID = ?, M_ClinicUnitLastUpdated = NOW() WHERE M_ClinicUnitID = ?"; $query = $this->db_oneklinik->query($sql, array($userid, $id)); if (!$query) { $this->sys_error_db("m_clinic_unit delete", $this->db_oneklinik); exit; } $this->sys_ok(array("total" => 1, "records" => array("xid" => $id))); } catch (Exception $exc) { $this->sys_error($exc->getMessage()); } } }