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, 'Y' as generateorder, '' as snapshotNote 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->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'; } $sql_snapshot = "SELECT Mcu_Snapshot_NoteID as snapshotNotId, Mcu_Snapshot_NoteMgm_McuID as mgmmcuId, Mcu_Snapshot_NoteMcu_Note_HeaderID as headerId, Mcu_Snapshot_NoteMcu_Note_HeaderCode as headerCode, Mcu_Snapshot_NoteMcu_Note_HeaderName as headerName, Mcu_Snapshot_NoteMcu_Note_HeaderNote as headerNote FROM one_etl.mcu_snapshot_note WHERE Mcu_Snapshot_NoteMgm_McuID = '{$v['Mgm_McuID']}'"; $qry_snapshot = $this->db->query($sql_snapshot); if ($qry_snapshot) { $rows_snapshot = $qry_snapshot->result_array(); } else { $this->sys_error_db("select snapshot note error", $this->db); exit; } if (count($rows_snapshot) > 0) { $rows[$k]['snapshotNote'] = $rows_snapshot; } else { $rows[$k]['snapshotNote'] = []; } $sql_go = "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 = '{$v['Mgm_McuID']}'"; $qry_go = $this->db->query($sql_go); if ($qry_go) { $row_go = $qry_go->row()->total; } else { $this->sys_error_db("select mcu order error", $this->db); exit; } if ($row_go > 0) { $rows[$k]['generateorder'] = 'N'; } else { $rows[$k]['generateorder'] = 'Y'; } } $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_OrderStatusLab, Mcu_OrderStatusLabDateTime, Mcu_OrderStatusNonLab, Mcu_OrderStatusNonLabDateTime, Mcu_OrderStatusFisik, Mcu_OrderStatusFisikDateTime, Mcu_OrderStatusRiwayat, Mcu_OrderStatusRiwayatDateTime, Mcu_OrderStatusFitness, Mcu_OrderStatusFitnessDateTime, Mcu_OrderMcu_FitnessID, Mcu_OrderMcu_FitnessName, 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']; $xact = $prm['xact']; $number_limit = 10; $tot_count = 0; $sql_mcu = "SELECT Mgm_McuID, Mgm_McuM_CompanyID, Mgm_McuNumber FROM one_etl.mgm_mcu WHERE Mgm_McuM_CompanyID = ? AND Mgm_McuIsActive = 'Y'"; $qry_mcu = $this->db->query($sql_mcu, [$companyId]); if ($qry_mcu) { $row_mcu = $qry_mcu->row_array(); } else { $this->sys_error_db("select mgm mcu error", $this->db); exit; } $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 IN ('Y','H') 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 IN ('Y','H') 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 search_mou_multiple_08012025() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $companyId = $prm['companyId']; $xact = $prm['xact']; $number_limit = 10; $tot_count = 0; $sql_mcu = "SELECT Mgm_McuID, Mgm_McuM_CompanyID, Mgm_McuNumber FROM one_etl.mgm_mcu WHERE Mgm_McuM_CompanyID = ? AND Mgm_McuIsActive = 'Y'"; $qry_mcu = $this->db->query($sql_mcu, [$companyId]); if ($qry_mcu) { $row_mcu = $qry_mcu->row_array(); } else { $this->sys_error_db("select mgm mcu error", $this->db); exit; } if ($xact === "add") { $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' AND M_MouID NOT IN ( SELECT Mgm_MouM_MouID FROM one_etl.mgm_mou WHERE Mgm_MouMgm_McuID = ? AND Mgm_MouIsActive = 'Y' )"; $qry_filter = $this->db->query($sql_filter, [$companyId, $row_mcu['Mgm_McuID']]); 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' AND M_MouID NOT IN ( SELECT Mgm_MouM_MouID FROM one_etl.mgm_mou WHERE Mgm_MouMgm_McuID = ? AND Mgm_MouIsActive = 'Y' )"; $qry_search = $this->db->query($sql_search, [$companyId, $row_mcu['Mgm_McuID']]); if ($qry_search) { $rows = $qry_search->result_array(); } else { $this->db->trans_rollback(); $this->sys_error_db("mou select error", $this->db); exit; } } else { $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']; $userid = $this->sys_user['M_UserID']; $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' JOIN t_orderheader ON T_OrderHeaderM_MouID = Mgm_MouM_MouID AND DATE(T_OrderHeaderDate) BETWEEN Mgm_McuStartDate AND 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; } $sql_note = "SELECT T_OrderHeaderID, Mcu_Note_HeaderID, Mcu_Note_HeaderCode, Mcu_Note_HeaderName, Mcu_Note_HeaderNote FROM t_orderheader JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID and T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestIsPrice = 'Y' JOIN t_test ON T_OrderDetailT_TestID = T_TestID and T_TestIsActive = 'Y' JOIN one_etl.mcu_note_detail ON Mcu_Note_DetailNat_TestID = T_TestNat_TestID AND Mcu_Note_DetailIsActive = 'Y' JOIN one_etl.mcu_note_header ON Mcu_Note_DetailMcu_Note_HeaderID = Mcu_Note_HeaderID AND Mcu_Note_DetailIsActive = 'Y' AND Mcu_Note_HeaderID NOT IN ( SELECT Mcu_Snapshot_NoteMcu_Note_HeaderID FROM one_etl.mcu_snapshot_note WHERE Mcu_Snapshot_NoteMgm_McuID = ? ) WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderID = ? GROUP BY Mcu_Note_HeaderID"; $qry_note = $this->db->query($sql_note, array( $mgmmcuid, $orderheaderid )); if ($qry_note) { $rows_note = $qry_note->result_array(); } else { $this->db->trans_rollback(); $this->sys_error_db("note header select error", $this->db); exit; } if (count($rows_note) > 0) { foreach ($rows_note as $k => $v) { // print_r($value); $headerId = $v['Mcu_Note_HeaderID']; $headerCode = $v['Mcu_Note_HeaderCode']; $headerName = $v['Mcu_Note_HeaderName']; $headerNote = $v['Mcu_Note_HeaderNote']; $sql_insert = "INSERT INTO one_etl.mcu_snapshot_note( Mcu_Snapshot_NoteMgm_McuID, Mcu_Snapshot_NoteMcu_Note_HeaderID, Mcu_Snapshot_NoteMcu_Note_HeaderCode, Mcu_Snapshot_NoteMcu_Note_HeaderName, Mcu_Snapshot_NoteMcu_Note_HeaderNote, Mcu_Snapshot_NoteIsActive, Mcu_Snapshot_NoteCreated, Mcu_Snapshot_NoteUserID ) VALUES(?,?,?,?,?,'Y',NOW(),?)"; $qry_insert = $this->db->query($sql_insert, array( $mgmmcuid, $headerId, $headerCode, $headerName, $headerNote, $userid )); $last_qry = $this->db->last_query(); if (!$qry_insert) { $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); } } function retry_mcu_order() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $sql = "UPDATE one_etl.mcu_order SET Mcu_OrderStatus = 'R', Mcu_OrderRetry = 0, Mcu_OrderLastUpdated = NOW(), Mcu_OrderStatusLab = 'N', Mcu_OrderStatusNonLab = 'N', Mcu_OrderStatusFisik = 'N', Mcu_OrderStatusRiwayat = 'N', Mcu_OrderStatusFitness = 'N' WHERE Mcu_OrderID = {$prm['mcuorderID']}"; $qry = $this->db->query($sql); if (!$qry) { $this->db->trans_rollback(); $this->sys_error_db('error', 'Error retry: ' . $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 edit_snpashot_note() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $userid = $this->sys_user['M_UserID']; $arrnote = $prm['arrnote']; foreach ($arrnote as $key => $value) { $sql = "UPDATE one_etl.mcu_snapshot_note SET Mcu_Snapshot_NoteMcu_Note_HeaderNote = ?, Mcu_Snapshot_NoteLastUpdated = NOW(), Mcu_Snapshot_NoteUserID = ? WHERE Mcu_Snapshot_NoteID = ?"; $qry = $this->db->query($sql, array( $value['headerNote'], $userid, $value['snapshotNotId'] )); } if (!$qry) { $this->db->trans_rollback(); $this->sys_error_db('error', 'Error update mcu snapshot: ' . $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); } } }