db->query("select database() as current_db")->result(); // print_r($cek); echo "ADMIN MCU API"; } public function __construct() { parent::__construct(); } function search() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user['M_UserID']; $search = ""; if (isset($prm["search"])) { $search = trim($prm["search"]); if ($search != "") { $search = "%" . $prm["search"] . "%"; } else { $search = "%%"; } } $number_offset = 0; $number_limit = 10; if ($prm["current_page"] > 0) { $number_offset = ($prm["current_page"] - 1) * $number_limit; } $sql = "SELECT Mgm_McuID, Mgm_McuM_CompanyID, Mgm_McuNumber, Mgm_McuNumberNational, Mgm_McuStartDate, Mgm_McuEndDate, Mgm_McuTotalParticipant, Mgm_MouID, GROUP_CONCAT(M_MouID SEPARATOR ', ') AS M_MouID, GROUP_CONCAT(Mgm_MouM_MouID SEPARATOR ', ') AS Mgm_MouM_MouID, M_CompanyName, M_CompanyID, GROUP_CONCAT(M_MouName SEPARATOR ', ') AS M_MouName, 'N' as readyconfirm FROM (SELECT Mgm_McuID, Mgm_McuM_CompanyID, Mgm_McuNumber, Mgm_McuNumberNational, Mgm_McuStartDate, Mgm_McuEndDate, Mgm_McuTotalParticipant, Mgm_MouID, Mgm_MouM_MouID, M_MouName, M_CompanyName, M_CompanyID, M_MouID FROM one_etl.mgm_mcu JOIN one_etl.mgm_mou ON Mgm_McuID = Mgm_MouMgm_McuID AND Mgm_MouIsActive = 'Y' JOIN m_company ON Mgm_McuM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' JOIN m_mou ON Mgm_MouM_MouID = M_MouID AND M_MouIsActive = 'Y' WHERE Mgm_McuIsActive = 'Y' AND (Mgm_McuNumber LIKE '{$search}' OR M_CompanyName LIKE '{$search}' OR M_MouName LIKE '{$search}') GROUP BY Mgm_MouID, Mgm_McuID) AS subquery GROUP BY Mgm_McuID, M_CompanyName ORDER BY Mgm_McuID DESC"; $sql_total = "SELECT COUNT(*) as total FROM ($sql) as x"; $qry_total = $this->db->query($sql_total); $last_qry = $this->db->last_query(); $tot_count = 0; $tot_page = 0; if ($qry_total) { $tot_count = $qry_total->result_array()[0]["total"]; $tot_page = ceil($tot_count / $number_limit); } else { $this->db->trans_rollback(); $message['last_qry'] = $last_qry; $this->sys_error_db("mgm_mcu count error", $this->db); exit; } $sql_select = $sql . " LIMIT $number_limit OFFSET $number_offset"; $qry_select = $this->db->query($sql_select); $last_qry = $this->db->last_query(); if (!$qry_select) { $message = $this->db->error(); $message['last_qry'] = $last_qry; $this->sys_error($message); exit; } $rows = $qry_select->result_array(); foreach ($rows as $k => $v) { $sql = $this->db_onedev->query("SELECT count(*) as x FROM one_etl.mcu_order WHERE Mcu_OrderMgm_McuID = '{$v['Mgm_McuID']}' AND Mcu_OrderStatus = 'N'")->row(); $svalue = $sql->x; if($svalue > 0){ $rows[$k]['readyconfirm'] = 'Y'; }else{ $rows[$k]['readyconfirm'] = 'N'; } } $result = [ "records" => $rows, "total_page" => $tot_page, "total" => $tot_count, "last_qry" => $last_qry ]; $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function list_mcu_order() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user['M_UserID']; $mgmmcuid = 0; if (isset($prm['mgmmcuid'])) { $mgmmcuid = trim($prm["mgmmcuid"]); } $search = ""; if (isset($prm["search"])) { $search = trim($prm["search"]); if ($search != "") { $search = "%" . $prm["search"] . "%"; } else { $search = "%%"; } } $number_offset = 0; $number_limit = 10; if ($prm["current_page"] > 0) { $number_offset = ($prm["current_page"] - 1) * $number_limit; } $sql_total = "SELECT count(*) as total FROM one_etl.mcu_order JOIN one_etl.mgm_mcu ON Mcu_OrderMgm_McuID = Mgm_McuID JOIN t_orderheader ON Mcu_OrderT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive = 'Y' JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN m_sex ON M_PatientM_SexID = M_SexID WHERE Mgm_McuID = ? AND (T_OrderHeaderLabNumber LIKE ? OR concat(M_TitleName,'. ',M_PatientName) LIKE ?)"; $qry_total = $this->db->query($sql_total, [$mgmmcuid, $search, $search]); $last_qry = $this->db->last_query(); $tot_count = 0; $tot_page = 0; if ($qry_total) { $tot_count = $qry_total->result_array()[0]["total"]; $tot_page = ceil($tot_count / $number_limit); } else { $this->db->trans_rollback(); $message['last_qry'] = $last_qry; $this->sys_error_db("mgm_order count error", $this->db); exit; } $sql = "SELECT Mcu_OrderID, Mcu_OrderMgm_McuID, Mcu_OrderT_OrderHeaderID, Mcu_OrderStatus, Mcu_OrderIsError, Mcu_OrderRetry, T_OrderHeaderID, T_OrderHeaderDate, T_OrderHeaderLabNumber, concat(M_TitleName,'. ',M_PatientName) as M_PatientName, M_PatientNoReg FROM one_etl.mcu_order JOIN one_etl.mgm_mcu ON Mcu_OrderMgm_McuID = Mgm_McuID JOIN t_orderheader ON Mcu_OrderT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive = 'Y' JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN m_sex ON M_PatientM_SexID = M_SexID WHERE Mgm_McuID = ? AND (T_OrderHeaderLabNumber LIKE ? OR concat(M_TitleName,'. ',M_PatientName) LIKE ?) limit ? offset ?"; $qry = $this->db->query($sql, [$mgmmcuid, $search, $search, $number_limit, $number_offset]); $last_qry = $this->db->last_query(); if (!$qry) { $message = $this->db->error(); $message['last_qry'] = $last_qry; $this->sys_error($message); exit; } $rows = $qry->result_array(); $result = [ "records" => $rows, "total_page" => $tot_page, "total" => $tot_count, "last_qry" => $last_qry ]; $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function search_company() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $search = ""; $number_limit = 10; $tot_count = 0; if (isset($prm['search'])) { $search = trim($prm["search"]); if ($search != "") { $search = '%' . $prm['search'] . '%'; } else { $search = '%%'; } } $sql_filter = "SELECT count(*) as total FROM m_company WHERE M_CompanyIsActive = 'Y' AND (M_CompanyName LIKE ?) LIMIT ?"; $qry_filter = $this->db->query($sql_filter, [$search, $number_limit]); if ($qry_filter) { $tot_count = $qry_filter->result_array()[0]["total"]; } else { $this->sys_error_db("company count"); exit; } $sql_search = "SELECT M_CompanyID, M_CompanyName, M_CompanyNumber FROM m_company WHERE M_CompanyIsActive = 'Y' AND (M_CompanyName LIKE ?) LIMIT ?"; $qry_search = $this->db->query($sql_search, [$search, $number_limit]); if ($qry_search) { $rows = $qry_search->result_array(); } else { $this->db->trans_rollback(); $this->sys_error_db("company select error", $this->db); exit; } $result = array( "total" => $tot_count, "total_display" => sizeof($rows), "records" => $rows ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function search_mou_multiple() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $companyId = $prm['companyId']; $number_limit = 10; $tot_count = 0; $sql_filter = "SELECT count(*) as total FROM m_mou JOIN m_company ON M_MouM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' AND M_MouM_CompanyID = ? WHERE M_MouIsActive = 'Y' AND M_MouIsReleased = 'Y'"; $qry_filter = $this->db->query($sql_filter, [$companyId]); if ($qry_filter) { $tot_count = $qry_filter->result_array()[0]["total"]; } else { $this->sys_error_db("mou count"); exit; } $sql_search = "SELECT M_CompanyID, M_MouID, M_MouName, M_MouNumber FROM m_mou JOIN m_company ON M_MouM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' AND M_MouM_CompanyID = ? WHERE M_MouIsActive = 'Y' AND M_MouIsReleased = 'Y'"; $qry_search = $this->db->query($sql_search, [$companyId]); if ($qry_search) { $rows = $qry_search->result_array(); } else { $this->db->trans_rollback(); $this->sys_error_db("mou select error", $this->db); exit; } $result = array( "total" => $tot_count, "total_display" => sizeof($rows), "records" => $rows ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function addMcu() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $userid = $this->sys_user['M_UserID']; $selectedMou = $prm['selectedMou']; $sql_mcu = "INSERT INTO one_etl.mgm_mcu( Mgm_McuM_CompanyID, Mgm_McuNumber, Mgm_McuNumberNational, Mgm_McuStartDate, Mgm_McuEndDate, Mgm_McuIsActive, Mgm_McuCreated, Mgm_McuLastUpdated, Mgm_McuUserID, Mgm_McuTotalParticipant ) VALUES( '{$prm['companyId']}', `fn_numbering`('ETL.MCU'), '{$prm['nationalNumber']}', '{$prm['startdate']}', '{$prm['enddate']}', 'Y', NOW(), NOW(), '{$userid}', '{$prm['participant']}')"; $qry_mcu = $this->db->query($sql_mcu); $last_qry = $this->db->last_query(); if (!$qry_mcu) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error, $this->db); exit; } $last_id = $this->db->insert_id(); foreach ($selectedMou as $key => $value) { $sql_mou = "INSERT INTO one_etl.mgm_mou( Mgm_MouM_MouID, Mgm_MouMgm_McuID, Mgm_MouIsActive, Mgm_MouCreated, Mgm_MouLastUpdated, Mgm_MouUserID) VALUES(?, ?, 'Y',NOW(),NOW(),?)"; $qry_mou = $this->db->query($sql_mou, array( $value, $last_id, $userid )); $last_qry = $this->db->last_query(); if (!$qry_mou) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error, $this->db); exit; } } $this->db->trans_commit(); $result = array( "total" => 1, "affected_rows" => $this->db->affected_rows() ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function insert_mcu_order() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $mgmmcuid = $prm['mgmmcuid']; // $orderheaderid = $prm['orderheaderid']; $sql_select = "SELECT Mgm_McuID, T_OrderHeaderID FROM one_etl.mgm_mcu JOIN one_etl.mgm_mou ON Mgm_McuID = ? AND Mgm_McuID = Mgm_MouMgm_McuID AND Mgm_McuIsActive = 'Y' AND Mgm_MouIsActive = 'Y' JOIN t_orderheader ON T_OrderHeaderM_MouID = Mgm_MouM_MouID AND T_OrderHeaderDate >= Mgm_McuStartDate AND T_OrderHeaderDate <= Mgm_McuEndDate AND T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderID NOT IN ( SELECT Mcu_OrderT_OrderHeaderID FROM one_etl.mcu_order WHERE Mcu_OrderMgm_McuID = ?)"; $qry_select = $this->db->query($sql_select, array($mgmmcuid, $mgmmcuid)); if ($qry_select) { $rows = $qry_select->result_array(); } else { $this->db->trans_rollback(); $this->sys_error_db("orderheader select error", $this->db); exit; } if (count($rows) > 0) { foreach ($rows as $key => $value) { // print_r($value); $orderheaderid = $value['T_OrderHeaderID']; // print_r($orderheaderid); $sql = "INSERT INTO one_etl.mcu_order( Mcu_OrderMgm_McuID, Mcu_OrderT_OrderHeaderID, Mcu_OrderCreated, Mcu_OrderLastUpdated) VALUES(?,?,NOW(),NOW())"; $qry = $this->db->query($sql, array( $mgmmcuid, $orderheaderid )); $last_qry = $this->db->last_query(); if (!$qry) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error, $this->db); exit; } } } $this->db->trans_commit(); $result = array( "total" => count($rows), "affected_rows" => $this->db->affected_rows() ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function confirm_mcu_order() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $mgmmcuid = $prm['mgmmcuid']; $sql = "UPDATE one_etl.mcu_order SET Mcu_OrderStatus = 'C', Mcu_OrderLastUpdated = NOW() WHERE Mcu_OrderMgm_McuID = ?"; $res = $this->db->query($sql, array($mgmmcuid)); if (!$res) { $this->db->trans_rollback(); $this->sys_error_db('error', 'Error confirm: ' . $this->db); exit; } $this->db->trans_commit(); $result = array( "total" => 1, "records" => array("xid" => 0) ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function editMcu() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $userid = $this->sys_user['M_UserID']; $selectedMou = $prm['selectedMou']; $mgmmcuid = $prm['mgmmcuid']; $sql_order = "SELECT Mcu_OrderID, Mcu_OrderMgm_McuID, Mcu_OrderT_OrderHeaderID FROM one_etl.mcu_order WHERE Mcu_OrderMgm_McuID = ?"; $qry_order = $this->db->query($sql_order, [$mgmmcuid]); if ($qry_order) { $rows = $qry_order->result_array(); } else { $this->db->trans_rollback(); $this->sys_error_db("mcu_order select error", $this->db); exit; } if (count($rows) > 0) { $result = json_encode(["status" => "OK", "message" => "Tidak bisa di edit karena sudah melakukan generate order!"]); echo $result; exit; } $sql_update = "UPDATE one_etl.mgm_mcu SET Mgm_McuM_CompanyID = ?, Mgm_McuNumberNational = ?, Mgm_McuStartDate = ?, Mgm_McuEndDate = ?, Mgm_McuLastUpdated = NOW(), Mgm_McuUserID = ?, Mgm_McuTotalParticipant = ? WHERE Mgm_McuID = ?"; $qry_update = $this->db->query($sql_update, [ $prm['companyId'], $prm['nationalNumber'], $prm['startdate'], $prm['enddate'], $userid, $prm['participant'], $mgmmcuid ]); if (!$qry_update) { $this->db->trans_rollback(); $this->sys_error_db("update mgm_mcu error", $this->db); exit; } // Ambil data Mgm_MouM_MouID $q = "SELECT Mgm_MouM_MouID FROM one_etl.mgm_mou WHERE Mgm_MouMgm_McuID = ?"; $qry_mou = $this->db->query($q, array($mgmmcuid)); if (!$qry_mou) { $this->db->trans_rollback(); $this->sys_error_db('error', 'Error select mgm_mou: ' . $this->db); exit; } $rows = $qry_mou->result_array(); $all = array(); foreach ($rows as $row) { $all[] = $row['Mgm_MouM_MouID']; } // print_r($all); // print_r($selectedMou); // exit; // Cek dan tambahkan data yang baru foreach ($selectedMou as $v) { // print_r($v); // print_r($all); // echo "\n status : "; // print_r(in_array($v, $all)); if (!in_array($v, $all)) { // Jika data belum ada, tambahkan ke database $q = "SELECT Mgm_MouMgm_McuID FROM one_etl.mgm_mou WHERE Mgm_MouMgm_McuID = ? AND Mgm_MouM_MouID = ?"; $res = $this->db->query($q, array($mgmmcuid, $v)); if (!$res) { $this->db->trans_rollback(); $this->sys_error_db('error', 'Error Select count: ' . $this->db); exit; } $rows = $res->result_array(); // echo $this->db->last_query(); // print_r($rows); // exit; if (count($rows) > 0) { $q = "UPDATE one_etl.mgm_mou SET Mgm_MouIsActive = 'Y', Mgm_MouLastUpdated = NOW(), Mgm_MouUserID = $userid WHERE Mgm_MouMgm_McuID = ? AND Mgm_MouM_MouID = ?"; $res = $this->db->query($q, array($mgmmcuid, $v)); if (!$res) { $this->db->trans_rollback(); $this->sys_error_db('error', 'Error update: ' . $this->db); exit; } } else { $q = "INSERT INTO one_etl.mgm_mou( Mgm_MouM_MouID, Mgm_MouMgm_McuID, Mgm_MouCreated, Mgm_MouUserID ) VALUES(?,?,NOW(),?)"; $res = $this->db->query($q, array($v, $mgmmcuid, $userid)); if (!$res) { $this->db->trans_rollback(); $this->sys_error_db('error', 'Error insert: ' . $this->db); exit; } } } else { $q = "UPDATE one_etl.mgm_mou SET Mgm_MouIsActive = 'Y', Mgm_MouLastUpdated = NOW(), Mgm_MouUserID = $userid WHERE Mgm_MouMgm_McuID = ? and Mgm_MouM_MouID = ? and Mgm_MouIsActive = 'N'"; $res = $this->db->query($q, array($mgmmcuid, $v)); // echo $this->db->last_query(); if (!$res) { $this->db->trans_rollback(); $this->sys_error_db('error', 'Error update active: ' . $this->db); exit; } } } // update yang gak ada di selectedmou $select = implode(",", $selectedMou); // print_r($select); if ($select != "") { $q = "UPDATE one_etl.mgm_mou SET Mgm_MouIsActive = 'N', Mgm_MouLastUpdated = NOW(), Mgm_MouUserID = $userid WHERE Mgm_MouMgm_McuID = ? and Mgm_MouM_MouID NOT IN ($select)"; $res = $this->db->query($q, array($mgmmcuid)); if (!$res) { $this->db->trans_rollback(); $this->sys_error_db('error', 'Error update delete: ' . $this->db); exit; } } // $this->db->last_query(); $this->db->trans_commit(); $result = array( "total" => 1, "records" => array("xid" => 0) ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function deleteMcu() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $userid = $this->sys_user['M_UserID']; $mgmmcuid = $prm['mgmmcuid']; $sql_order = "SELECT Mcu_OrderID, Mcu_OrderMgm_McuID, Mcu_OrderT_OrderHeaderID FROM one_etl.mcu_order WHERE Mcu_OrderMgm_McuID = ?"; $qry_order = $this->db->query($sql_order, [$mgmmcuid]); if ($qry_order) { $rows = $qry_order->result_array(); } else { $this->db->trans_rollback(); $this->sys_error_db("mcu_order select error", $this->db); exit; } if (count($rows) > 0) { $result = json_encode(["status" => "OK", "message" => "Tidak bisa di hapus karena sudah melakukan generate order!"]); echo $result; exit; } $sql = "UPDATE one_etl.mgm_mcu SET Mgm_McuIsActive = 'N', Mgm_McuLastUpdated = NOW(), Mgm_McuUserID = ? WHERE Mgm_McuID = ?"; $res = $this->db->query($sql, array($userid, $mgmmcuid)); if (!$res) { $this->db->trans_rollback(); $this->sys_error_db('error', 'Error delete: ' . $this->db); exit; } $this->db->trans_commit(); $result = array( "total" => 1, "records" => array("xid" => 0) ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } }