url_heartbeat = "https://devregonline.pramita.co.id/one-api/tools/regonline/r_heartbeat_v2"; //Production $this->url_heartbeat = "https://devregonline.pramita.co.id/one-api/tools/regonline/r_heartbeat_v3"; } function step_debug($rows) { print_r($rows); exit(); } function get_sel_px() { $sql = "select Nat_TestSellLocalT_TestID T_TestID from nat_testselllocal where Nat_TestSellLocalIsActive = 'Y' "; //Test in nat_localselltest $qry = $this->db->query($sql); if (!$qry) { echo date("Y-m-d H:i:s") . " Err Nat_TestSellLocal : " . $this->db->error()["message"] . "\n"; return "0"; } $rows = $qry->result_array(); $result = "0"; foreach ($rows as $r) { $result .= "," . $r["T_TestID"]; } return $result; } function get_order($date) { $date = date("Y-m-d 00:00:01"); list($branchID, $branchCode) = $this->getBranch(); $px_ids = $this->get_sel_px(); $sql = "select distinct T_OrderHeaderID branch_OrderT_OrderHeaderID, T_OrderHeaderLabNumber branch_OrderT_OrderHeaderLabNumber, $branchID branch_OrderM_BranchID, '$branchCode' branch_OrderM_BranchCode, T_OrderHeaderDate branch_OrderT_OrderHeaderDate, T_OrderDetailT_TestID branch_OrderT_TestID, T_OrderDetailT_TestName branch_OrderT_TestName, 0 branch_OrderCitoInDay, T_OrderDetailIsCito branch_OrderIsCito, T_OrderDetailIsActive branch_OrderIsActive, T_OrderDetailValidation branch_OrderValidation from t_orderheader join t_orderheaderaddon on T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID and T_OrderHeaderIsActive = 'Y' and T_OrderHeaderAddOnFoVerification = 'Y' and T_OrderHeaderAddOnLabNumberOrigin is null and date(T_OrderHeaderDate) >= date(?) join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderDetailLastUpdated >= ? and T_OrderDetailT_TestID in ( $px_ids ) left join t_onlineorder on T_OrderHeaderID = T_OnlineOrderT_OrderHeaderID where T_OnlineOrderID is null"; $qry = $this->db->query($sql, [$date, $date]); if (!$qry) { echo date("Y-m-d H:i:s") . " Err : " . $this->db->error()["message"] . "\n"; return ["type" => "ORDER_BRANCH", "data" => []]; } $rows = $qry->result_array(); return ["type" => "ORDER_BRANCH", "data" => $rows]; } function now() { return date("Y-m-d H:i:s"); } function get_hs($date = "") { $sql = "select count(*) xtot from hs_test where HS_TestLastUpdated > ? or HS_TestCreated > ?"; $qry = $this->db->query($sql, [$date, $date]); if (!$qry) { echo "{$this->now()} ERR Get Total : {$this->db->error()["message"]}\n"; return ["type" => "ERR_HS", "data" => []]; } $rows = $qry->result_array(); $xtot = 0; if (count($rows) > 0) { $xtot = $rows[0]["xtot"]; } $empty_hs_test = false; if ($xtot == 0) { $empty_hs_test = true; } $sql = "select count(*) xtot from hs_price where HS_PriceLastUpdated > ? or HS_PriceCreated > ?"; $qry = $this->db->query($sql, [$date, $date]); if (!$qry) { echo "{$this->now()} ERR Get Total : {$this->db->error()["message"]}\n"; return ["type" => "ERR_HS", "data" => []]; } $rows = $qry->result_array(); $xtot = 0; if (count($rows) > 0) { $xtot = $rows[0]["xtot"]; } $empty_hs_price = false; if ($xtot == 0) { $empty_hs_price = true; } if ($empty_hs_price && $empty_hs_test) { return [ "type" => "HS", "data" => ["test" => [], "price" => []], ]; } $sql = "select * from m_branch where M_BranchIsActive='Y' and M_BranchIsDefault='Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_PRICE_PACKET", "data" => []]; } $rows = $qry->result_array(); if (count($rows) == 0) { echo "{$this->now()} ERR : No Default Branch\n"; return ["type" => "ERR_HS", "data" => []]; } $branchID = $rows[0]["M_BranchID"]; $rows_test = []; if (!$empty_hs_test) { $sql = "select $branchID HS_TestM_BranchID,hs_test.* from hs_test"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_HS", "data" => []]; } $rows_test = $qry->result_array(); } $rows_price = []; if (!$empty_hs_price) { $sql = "select $branchID HS_PriceM_BranchID,hs_price.* from hs_price"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_HS", "data" => []]; } $rows_price = $qry->result_array(); foreach ($rows_price as $idx => $r) { $rows_price[$idx]["HS_PriceM_BranchID"] = $branchID; } } return [ "type" => "HS", "data" => ["test" => $rows_test, "price" => $rows_price], ]; } function get_multi_mou($date = "") { $sql = "select count(*) xtot from s_regonline_mou where S_RegOnlineMouLastUpdated > ? or S_RegOnlineMouCreated > ?"; $qry = $this->db->query($sql, [$date, $date]); if (!$qry) { echo "{$this->now()} ERR Get Total : {$this->db->error()["message"]}\n"; return ["type" => "ERR_Mou", "data" => []]; } $rows = $qry->result_array(); $xtot = 0; if (count($rows) > 0) { $xtot = $rows[0]["xtot"]; } if ($xtot == 0) { return ["type" => "MOU", "data" => []]; } $sql = "select * from m_branch where M_BranchIsActive='Y' and M_BranchIsDefault='Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_Mou", "data" => []]; } $rows = $qry->result_array(); if (count($rows) == 0) { echo "{$this->now()} ERR : No Default Branch\n"; return ["type" => "ERR_Mou", "data" => []]; } $branchID = $rows[0]["M_BranchID"]; $sql = "select S_RegOnlineMouID, $branchID S_RegOnlineMouM_BranchID, S_RegOnlineMouM_MouID, M_MouName S_RegOnlineMouM_MouName, S_RegOnlineMouTypeID, S_RegOnlineMouStartDate, S_RegOnlineMouEndDate, S_RegOnlineMouMinAge, S_RegOnlineMouMaxAge, S_RegOnlineMouMinAgeInclusive, S_RegOnlineMouMaxAgeInclusive, S_RegOnlineMouIsDefault, S_RegOnlineMouM_SexID, S_RegOnlineMouMember, S_RegOnlineMouIsOwnAccount, S_RegOnlineMouNote, S_RegOnlineMouSecretPassword, S_RegOnlineMouIsActive, S_RegOnlineMouUserID, S_RegOnlineMouCreated, S_RegOnlineMouLastUpdated from s_regonline_mou"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_Mou", "data" => []]; } $rows = $qry->result_array(); foreach ($rows as $idx => $r) { $rows[$idx]["S_RegOnlineMouM_BranchID"] = $branchID; } return ["type" => "MOU", "data" => $rows]; } function get_best_seller($branchID, $date = "") { $sql = "select count(*) xtot from m_bestseller where M_BestSellerLastUpdated > ? or M_BestSellerCreated > ? and M_BestSellerM_BranchID = ?"; $qry = $this->db->query($sql, [$date, $date,$branchID]); if (!$qry) { echo "{$this->now()} ERR Get Total : {$this->db->error()["message"]}\n"; return ["type" => "ERR_BestSeller", "data" => []]; } $rows = $qry->result_array(); $xtot = 0; if (count($rows) > 0) { $xtot = $rows[0]["xtot"]; } if ($xtot == 0) { return ["type" => "BEST_SELLER", "data" => []]; } $sql = "select * from m_branch where M_BranchIsActive='Y' and M_BranchIsDefault='Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_BestSeller", "data" => []]; } $rows = $qry->result_array(); if (count($rows) == 0) { echo "{$this->now()} ERR : No Default Branch\n"; return ["type" => "ERR_BestSeller", "data" => []]; } $branchID = $rows[0]["M_BranchID"]; $sql = "select * from m_bestseller "; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_BestSeller", "data" => []]; } $rows = $qry->result_array(); foreach ($rows as $idx => $r) { $rows[$idx]["M_BestSellerM_BranchID"] = $branchID; } return ["type" => "BEST_SELLER", "data" => $rows]; } function get_price($date = "") { // check the upload konfirmasion $sql = "select count(*) total from s_regonline_upload where S_RegOnlineUploadIsSent = 'N' and S_RegOnlineUploadIsActive = 'Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_PRICE_PACKET", "data" => []]; } $rows = $qry->result_array(); $tot_reqonline_upload = 0; if (count($rows) > 0) { $tot_reqonline_upload = $rows[0]["total"]; } if ($tot_reqonline_upload == 0) { echo "{$this->now()} ERR : No Upload Confirmation \n"; return ["type" => "ERR_PRICE_PACKET", "data" => []]; } $sql = "update s_regonline_upload set S_RegOnlineUploadIsSent = 'Y', S_RegOnlineUploadSentDate = now() where S_RegOnlineUploadIsSent = 'N' "; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_PRICE_PACKET", "data" => []]; } $sql = "select * from m_branch where M_BranchIsActive='Y' and M_BranchIsDefault='Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_PRICE_PACKET", "data" => []]; } $rows = $qry->result_array(); if (count($rows) == 0) { echo "{$this->now()} ERR : No Default Branch\n"; return ["type" => "ERR_PRICE_PACKET", "data" => []]; } $branchID = $rows[0]["M_BranchID"]; //Online Released MOU $mouID = "0"; $sql = "select * from s_regonline_mou where S_RegOnlineMouIsActive = 'Y' order by S_RegOnlineMouID ASC"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_PRICE_PACKET", "data" => []]; } $rows = $qry->result_array(); if (count($rows) == 0) { echo "{$this->now()} ERR : Online Released MOU not found\n"; return ["type" => "ERR_PRICE_PACKET", "data" => []]; } foreach ($rows as $r) { $mouID .= "," . $r["S_RegOnlineMouM_MouID"]; } //SsPrice MOU Regular dan Cito $sql = "select $branchID Ss_PriceMouM_BranchID, ss_price_mou.* from ss_price_mou join nat_testselllocal on Ss_PriceMouM_MouID IN ($mouID) and T_TestID = Nat_TestSellLocalT_TestID and Nat_TestSellLocalIsActive = 'Y' and Nat_TestSellLocalIsReguler = 'Y' and T_PriceIsCito = 'N' and is_packet = 'N' union select $branchID Ss_PriceMouM_BranchID, ss_price_mou.* from ss_price_mou join nat_testselllocal on Ss_PriceMouM_MouID IN ($mouID) and T_TestID = Nat_TestSellLocalT_TestID and Nat_TestSellLocalIsActive = 'Y' and Nat_TestSellLocalIsCito = 'Y' and T_PriceIsCito = 'Y' and is_packet = 'N' "; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "ERR_PRICE_PACKET", "data" => []]; } $rows = $qry->result_array(); if (count($rows) == 0) { echo "{$this->now()} ERR : Ss Price MOU not found\n"; return ["type" => "ERR_PRICE Test", "data" => []]; } foreach ($rows as $idx => $r) { if ($r["px_type"] == "PXR") { $child_test = json_decode($r["child_test"], true); $sum_amount = 0; $sum_disc_rp = 0; $sum_sub_total = 0; $sum_total = 0; foreach ($child_test as $ct) { $sum_amount += $ct["T_PriceAmount"]; $sum_disc_rp += $ct["T_PriceDiscRp"]; $sum_sub_total += $ct["T_PriceSubTotal"]; $sum_total += $ct["T_PriceTotal"]; } $rows[$idx]["T_PriceAmount"] = $sum_amount; $rows[$idx]["T_PriceDiscRp"] = $sum_disc_rp; $rows[$idx]["T_PriceSubTotal"] = $sum_sub_total; $rows[$idx]["T_PriceTotal"] = $sum_total; } } $ss_price_mou = $rows; // ss_price_mou packet // packetID dengan detail ada di nat_testselllocal semua $sql = "select T_PacketID, T_PacketDetailT_TestID, if(Nat_TestSellLocalT_TestID is null, 'N','Y') isSell from t_packet join t_packetdetail on T_PacketM_MouID IN ($mouID) and T_PacketIsCito = 'Y' and t_packetdetailIsActive = 'Y' and T_PacketID = T_PacketDetailT_PacketID and T_PacketIsActive = 'Y' left join nat_testselllocal on T_PacketDetailT_TestID = Nat_TestSellLocalT_TestID and Nat_TestSellLocalIsActive = 'Y' and Nat_TestSellLocalIsCito = 'Y' union select T_PacketID, T_PacketDetailT_TestID, if(Nat_TestSellLocalT_TestID is null, 'N','Y') isSell from t_packet join t_packetdetail on T_PacketM_MouID IN ($mouID) and T_PacketIsCito= 'N' and t_packetdetailIsActive = 'Y' and T_PacketID = T_PacketDetailT_PacketID and T_PacketIsActive = 'Y' left join nat_testselllocal on T_PacketDetailT_TestID = Nat_TestSellLocalT_TestID and Nat_TestSellLocalIsActive = 'Y' and Nat_TestSellLocalIsReguler = 'Y' "; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return ["type" => "Get Packet ", "data" => []]; } $rows = $qry->result_array(); if (count($rows) == 0) { echo "{$this->now()} ERR : Packet Detail not found\n"; } $non_full_packet = []; $packetID = []; foreach ($rows as $r) { $packetID[$r["T_PacketID"]] = true; if ($r["isSell"] == "N") { $non_full_packet[$r["T_PacketID"]] = true; } } $packet_ids = array_keys($packetID); $exclude_packet_ids = array_keys($non_full_packet); $packet_ids = array_filter($packet_ids, function ($p) use ( $exclude_packet_ids ) { if (in_array($p, $exclude_packet_ids)) { return false; } return true; }); $packets = []; $packet_details = []; if (count($packet_ids) > 0) { $s_packet_ids = implode(",", $packet_ids); $sql = "select $branchID Ss_PriceMouM_BranchID, ss_price_mou.* from ss_price_mou where packet_id in ($s_packet_ids) and is_packet = 'Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return [ "type" => "Get ss_price_mou Sold Packet ", "data" => [], ]; } $rows = $qry->result_array(); foreach ($rows as $idx => $r) { if ($r["px_type"] == "PR") { $child_test = json_decode($r["child_test"], true); $sum_amount = 0; $sum_disc_rp = 0; $sum_sub_total = 0; $sum_total = 0; foreach ($child_test as $ct) { $sum_amount += $ct["T_PriceAmount"]; $sum_disc_rp += $ct["T_PriceDiscRp"]; $sum_sub_total += $ct["T_PriceSubTotal"]; $sum_total += $ct["T_PriceTotal"]; } $rows[$idx]["T_PriceAmount"] = $sum_amount; $rows[$idx]["T_PriceDiscRp"] = $sum_disc_rp; $rows[$idx]["T_PriceSubTotal"] = $sum_sub_total; $rows[$idx]["T_PriceTotal"] = $sum_total; } } $ss_price_mou = array_merge($ss_price_mou, $rows); //packet $sql = "select $branchID T_PacketM_BranchID, t_packet.* from t_packet where T_PacketID in ($s_packet_ids)"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return [ "type" => "Get sold packet", "data" => [], ]; } $packets = $qry->result_array(); //packet_details $sql = "select $branchID T_PacketDetailM_BranchID, t_packetdetail.* from t_packetdetail where T_PacketDetailT_PacketID in ($s_packet_ids) and T_PacketDetailIsActive ='Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n"; return [ "type" => "Get sold packet details", "data" => [], ]; } $packet_details = $qry->result_array(); } $data = [ "ss_price_mou" => $ss_price_mou, "packet" => $packets, "detail" => $packet_details, ]; return ["type" => "PRICE_PACKET", "data" => $data]; } function index() { $this->process(); } function log($msg) { echo date("Y-m-d H:i:s") . " $msg\n"; } //debug set addhoc in future // php project/one/one-api/index.php tools regonline heartbeat_v2 function process($addhoc_date = "") { $sql = "select * from regonline.heartbeat"; $qry = $this->db->query($sql); if (!$qry) { echo date("Y-m-d H:i:s") . " Err : " . $this->db->error()["message"] . "\n"; exit(); } $heartbeat = []; $rows = $qry->result_array(); foreach ($rows as $r) { $heartbeat[$r["heartbeatCode"]] = $r["heartbeatExecuted"]; if ($addhoc_date != "") { $heartbeat[$r["heartbeatCode"]] = "$addhoc_date 00:00:01"; } } //Ping list($branchID, $branchCode) = $this->getBranch(); $ping_param = [ "type" => "PING", "data" => ["branchID" => $branchID, "branchCode" => $branchCode], ]; //SWAB Schedule $swab_param = $this->upload_swab($heartbeat["SWAB"]); //QUOTA PCR $quota_param = $this->upload_kuota($heartbeat["QUOTA_PCR"]); //ORDER BRANCH $order_branch_param = $this->get_order($heartbeat["ORDER_BRANCH"]); $price_packet_param = $this->get_price($heartbeat["PRICE_PACKET"]); if (!isset($heartbeat["HS"])) { $heartbeat["HS"] = "2021-01-01 00:00:00"; } $hs_param = $this->get_hs($heartbeat["HS"]); if (!isset($heartbeat["BEST_SELLER"])) { $heartbeat["BEST_SELLER"] = "2021-01-01 00:00:00"; } $best_seller_param = $this->get_best_seller($branchID,$heartbeat["BEST_SELLER"]); // MULTI MOU if (!isset($heartbeat["MOU"])) { $heartbeat["MOU"] = "2021-01-01 00:00:00"; } $multi_mou_param = $this->get_multi_mou($heartbeat["MOU"]); $data = [ $ping_param, $swab_param, $quota_param, $order_branch_param, $price_packet_param, $hs_param, $best_seller_param, $multi_mou_param ]; $md5 = md5(json_encode($data)); $z_param = gzdeflate( json_encode([ "md5" => $md5, "data" => $data, ]), 9 ); //do the heartbeat $size = round(strlen($z_param) / 1024); echo date("Y-m-d H:i:s") . " Start HeartBeat to : {$this->url_heartbeat} Size: {$size} kB\n"; $response = $this->post($this->url_heartbeat, $z_param); $j_response = json_decode($response, true); if (!$j_response) { echo date("Y-m-d H:i:s") . " End HeartBeat : Error Json : $response\n"; exit(); } if ($j_response["status"] == "ERR") { echo date("Y-m-d H:i:s") . " End HeartBeat : Error : {$j_response["message"]}\n"; exit(); } foreach ($j_response["result"] as $type => $rst) { $msg = ""; if (isset($rst["message"])) { $msg = $rst["message"]; } $status = $rst["status"]; $this->update_heartbeat($type, $status, $msg); echo date("Y-m-d H:i:s") . " \t $type : $status : $msg \n"; } } function update_heartbeat($type, $status, $msg) { //jika tidak OK executed tidak di set if ($status == "OK") { $sql = "update regonline.heartbeat set heartbeatExecuted = now(), heartbeatStatus = ? , heartbeatMessage = ? where heartbeatCode = ?"; $qry = $this->db->query($sql, [$status, $msg, $type]); } else { $sql = "update regonline.heartbeat set heartbeatStatus = ? , heartbeatMessage = ? where heartbeatCode = ?"; $qry = $this->db->query($sql, [$status, $msg, $type]); } if (!$qry) { echo date("Y-m-d H:i:s") . " \t Error $type : {$this->db->error()["message"]}\n"; } } function upload_kuota($date) { list($branchID, $branchCode) = $this->getBranch(); if ($date == "") { $date = "2020-01-01 00:00:00"; } $sql = "select m_reg_kuota.*, $branchID M_RegKuotaM_BranchID, '$branchCode' M_RegKuotaM_BranchCode from m_reg_kuota where M_RegKuotaLastUpdated > ?"; $qry = $this->db->query($sql, [$date]); if (!$qry) { echo date("Y-m-d H:i:s") . " Error Kuota : " . $this->db->error()["message"] . "\n"; exit(); } $kuota = $qry->result_array(); $sql = "select m_reg_kuota_log.*, $branchID M_RegKuotaLogM_BranchID, '$branchCode' M_RegKuotaLogM_BranchCode from m_reg_kuota_log where M_RegKuotaLogLastUpdated > ?"; $qry = $this->db->query($sql, [$date]); if (!$qry) { echo date("Y-m-d H:i:s") . " Error Kuota Log : " . $this->db->error()["message"] . "\n"; exit(); } $log = $qry->result_array(); $param = [ "type" => "QUOTA_PCR", "data" => ["kuota" => $kuota, "log" => $log], ]; return $param; } function upload_swab($date) { list($branchID, $branchCode) = $this->getBranch(); if ($date == "") { $date = "2020-01-01 00:00:00"; } $sql = "select m_reg_schedule.*, $branchID M_RegScheduleM_BranchID, '$branchCode' M_RegScheduleM_BranchCode from m_reg_schedule where M_RegScheduleIsActive = 'Y'"; $qry = $this->db->query($sql, [$date]); if (!$qry) { echo date("Y-m-d H:i:s") . " Error Schedule : " . $this->db->error()["message"] . "\n"; exit(); } $schedule = $qry->result_array(); $sql = "select m_reg_scheduledetail.*, $branchID M_RegScheduleDetailM_BranchID, '$branchCode' M_RegScheduleDetailM_BranchCode from m_reg_scheduledetail where M_RegScheduleDetailIsActive = 'Y'"; $qry = $this->db->query($sql, [$date]); if (!$qry) { echo date("Y-m-d H:i:s") . " Error Schedule : " . $this->db->error()["message"] . "\n"; exit(); } $detail = $qry->result_array(); $param = [ "type" => "SWAB", "data" => ["schedule" => $schedule, "detail" => $detail], ]; return $param; } function get_mou() { $sql = "select S_SystemIPAddressRegional from conf_systems"; $qry = $this->db->query($sql); if (!$qry) { return "devone.aplikasi.web.id"; } $rows = $qry->result_array(); if (count($rows) > 0) { return $rows[0]["S_SystemIPAddressRegional"]; } } function do_insert($table, $r) { $qry = $this->db->insert($table, $r); if (!$qry) { echo $this->db->error()["message"] . " \n"; } } function do_update($table, $id, $r) { $this->db->set($r); $this->db->where($id, $r[$id]); $qry = $this->db->update($table); if (!$qry) { echo $this->db->error()["message"] . " \n"; } } function exists($table, $id, $val) { $sql = "select count(*) total from {$table} where {$id} = ? "; $qry = $this->db->query($sql, [$val]); if (!$qry) { echo date("Y-m-d H:i:s") . " Err : " . $this->db->error()["message"] . "\n"; exit(); } $rows = $qry->result_array(); return $rows[0]["total"] > 0; } function update_mou($mou) { foreach ($mou as $m) { $mouID = $m["selMouID"]; if ($this->exists("regonline.sel_mou", "selMouID", $mouID)) { $this->do_update("regonline.sel_mou", "selMouID", $m); } else { $this->do_insert("regonline.sel_mou", $m); } } } function update_px($px) { foreach ($px as $r) { $pxID = $r["selPxID"]; if ($this->exists("regonline.sel_px", "selPxID", $pxID)) { $this->do_update("regonline.sel_px", "selPxID", $r); } else { $this->do_insert("regonline.sel_px", $r); } } } function getBranch() { $sql = "select * from m_branch where M_BranchIsActive = 'Y' and M_BranchIsDefault = 'Y'"; $qry = $this->db->query($sql); if (!$qry) { echo date("Y-m-d H:i:s") . " Err Get Branch: " . $this->db->error()["message"] . "\n"; exit(); } $rows = $qry->result_array(); if (count($rows) == 0) { echo date("Y-m-d H:i:s") . " Err Get Branch: " . $this->db->error()["message"] . "\n"; exit(); } return [$rows[0]["M_BranchID"], $rows[0]["M_BranchCode"]]; } function getRegionalIP() { $sql = "select S_SystemIPAddressRegional from conf_systems"; $qry = $this->db->query($sql); if (!$qry) { return "devone.aplikasi.web.id"; } $rows = $qry->result_array(); if (count($rows) > 0) { return $rows[0]["S_SystemIPAddressRegional"]; } return "devone.aplikasi.web.id"; } function get($url, $timeout = 60, $c_timeout = 5) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $c_timeout); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); $err_msg = curl_error($ch); if ($err_msg != "") { return json_encode(["status" => "ERR", "message" => $err_msg]); } return gzinflate($result); } function post($url, $data, $timeout = 180, $c_timeout = 5) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $c_timeout); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/json", "Content-Length: " . strlen($data), ]); $result = curl_exec($ch); $err_msg = curl_error($ch); if ($err_msg != "") { return json_encode([ "status" => "ERR", "message" => $err_msg, "url" => $url, "data" => json_decode($data, true), ]); } return gzinflate($result); } }