db_regional = $this->load->database("regional", true); if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $userID = $this->sys_user['M_UserID']; $sql_cek_token = "SELECT M_UserActiveToken from one_mitra.m_user WHERE M_UserID = ? AND M_UserActiveToken IS NOT NULL"; $qry_token = $this->db->query($sql_cek_token, [$userID]); if (!$qry_token) { $this->sys_error('Invalid token'); exit; } $rows_token = $qry_token->result_array(); if (count($rows_token) == 0) { $this->sys_error('Invalid token'); exit; } } function load() { try { $prm = $this->sys_input; if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $mou_id = 0; if (isset($prm['mou_id'])) { $mou_id = trim($prm["mou_id"]); $mou_id = $prm['mou_id']; } else { $this->sys_error("mou_id is mandatory"); exit; } $sql = "SELECT group_concat(distinct concat(t_test.T_TestID,'^',t_test.T_TestName,'^',T_PriceTotal,'^', t_test.T_TestSasCode) separator '|') TestList, Nat_SubGroupName, child_test from ss_price_mou join t_test on T_PriceIsCito= 'N' and is_packet = 'N' AND Ss_PriceMouM_MouID = ? and ss_price_mou.T_TestID = t_test.T_TestID join nat_subgroup on t_test.T_TestNat_SubGroupID = Nat_SubGroupID group by Nat_SubGroupName order by Nat_SubGroupNat_GroupID"; $qry = $this->db_regional->query($sql, [ $mou_id, ]); if (!$qry) { echo json_encode([ "status" => "ERR", "message" => $this->db_regional->error()["message"] . "|" . $this->db_regional->last_query(), ]); exit(); } $rows = $qry->result_array(); $result = []; $filters = ["Home Service", "Cetak", "Layanan"]; foreach ($rows as $key => $r) { $tab = $r["Nat_SubGroupName"]; $result[] = ["tab" => $tab, "tab_id" => $key + 1, "is_paket" => "N", "items" => []]; $idx = count($result) - 1; $a_px = explode("|", $r["TestList"]); foreach ($a_px as $px) { list($testID, $testName, $testPrice, $sasCode) = explode("^", $px); if ($testPrice == 0 && $r["child_test"] != "[]") { $child_test = json_decode($r["child_test"], true); foreach ($child_test as $t) { $testPrice += $t["T_PriceTotal"]; } } $is_skip = false; foreach ($filters as $ft) { if (stripos($testName, $ft) !== false) { $is_skip = true; break; } } if ($is_skip) { continue; } $items = [ "testID" => $testID, "testName" => $testName, "testPrice" => $testPrice, "is_paket" => "N", "sasCode" => $sasCode ]; $result[$idx]["items"][] = $items; } } $sql = "SELECT T_PacketID, T_PacketName, T_PacketPrice, T_PacketType, GROUP_CONCAT(T_TestName SEPARATOR ', ') AS detail, GROUP_CONCAT(T_TestID SEPARATOR ', ') AS tests FROM t_packet JOIN t_packetdetail ON T_PacketID = T_PacketDetailT_PacketID AND T_PacketDetailIsActive = 'Y' JOIN t_test ON T_PacketDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' AND T_TestIsPrice = 'Y' WHERE T_PacketIsActive = 'Y' AND T_PacketM_MouID = ? GROUP BY T_PacketID"; $qry = $this->db_regional->query($sql, [ $mou_id, ]); if (!$qry) { echo json_encode([ "status" => "ERR", "message" => $this->db_regional->error()["message"] . "|" . $this->db_regional->last_query(), ]); exit(); } $paket = $qry->result_array(); $paket_data = []; for ($i = 0; $i < count($paket); $i++) { $items = [ "testID" => $paket[$i]['T_PacketID'], "testName" => $paket[$i]['T_PacketName'], "testPrice" => $paket[$i]['T_PacketPrice'], "arrTest" => $paket[$i]['tests'], "type" => $paket[$i]['T_PacketType'], "is_paket" => "Y", "sasCode" => $paket[$i]['detail'] ]; $paket_data[] = $items; } // $result[] = ["tab" => "Paket", "tab_id" => count($result) + 1, "is_paket" => "Y", "items" => $paket_data]; array_unshift($result, ["tab" => "Paket", "tab_id" => count($result) + 1, "is_paket" => "Y", "items" => $paket_data]); for ($i = 0; $i < count($result); $i++) { $result[$i]["tab_id"] = $i + 1; } echo json_encode(["status" => "OK", "data" => $result]); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function getMou() { $prm = $this->sys_input; if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $userID = $prm['userID']; $sql = "SELECT M_UserMouID as userMouID, M_UserMouM_MouID as userMouMouID, M_UserMouAliasName as userMouName, M_UserMouIsDefault as userMouIsDefault FROM one_mitra.m_user_mou WHERE M_UserMouM_UserID = ? AND M_UserMouIsActive = 'Y'"; $qry = $this->db_regional->query($sql, [$userID]); if (!$qry) { $this->sys_error('Error get mou'); exit; } $rows = $qry->result_array(); $this->sys_ok($rows); } }