PAYMENT_TYPE_ID = 20; $this->USER_ID = 1500; } function get_branch_ip($branchID) { $sql = "select * from m_branch where M_BranchID = ? and M_BranchIsActive ='Y'"; $resp = $this->get_one_row($sql, [$branchID]); if ($resp[0]) { return $resp[1]["M_BranchIPAddress"]; } else { $this->log("\tError Get Ip Address : " . $resp[1]); } return ""; } function r_extend($debug=0) { $sql = "select m.M_MouID, m.M_MouNumber, m.M_MouName from f_bill_issue_pusat_extend join f_bill_issue_pusat_extend_mou on F_BillIssuePusatExtendMouF_BillIssuePusatExtendID = F_BillIssuePusatExtendID and F_BillIssuePusatExtendIsActive = 'Y' and F_BillIssuePusatExtendLastUpdate + interval 3 day > now() and F_BillIssuePusatExtendMouIsActive = 'Y' join f_bill_issue_pusat_detail ON F_BillIssuePusatDetailF_BillIssuePusatID = F_BillIssuePusatExtendF_BillIssuePusatID join f_bill_titip_detail b ON b.F_BillDetailF_BillID = F_BillIssuePusatDetailF_BillID AND b.M_BranchID = F_BillIssuePusatDetailM_BranchID join m_mou m ON m.M_MouID = b.M_MouID GROUP BY m.M_MouID "; $resp = $this->get_rows($sql); if ($debug == 1) { echo $this->db->last_query(); print_r($resp); } if(!$resp[0]) { $this->reply_gz(["status" => "ERR", "message" => $resp[1]], $debug == 1) ; exit(); } $this->reply_gz(["status"=>"OK","data"=>$resp[1]], $debug == 1); } public function index() { $this->log("Starting Extend Titipan."); list($regionalID, $branchCode, $branchID) = $this->get_branch(); if (!$regionalID) { $this->log("Error No Default Branch"); exit(); } $urls = $this->url_branches($regionalID); foreach ($urls as $u) { $url = $u["url"]; $name = $u["name"]; $this->log("Check Extend from $name : $url"); $resp = $this->get($url); if ($resp["status"] == "ERR") { $this->log("\t Error : " . $resp["message"]); continue; } foreach ($resp["data"] as $d) { $this->log( "\t Titip Extend : " . $d["M_MouNumber"] . " " . $d["M_MouName"] . " | M_MouID : " . $d["M_MouID"] ); $sql = "select M_MouIsActive from m_mou where M_MouID = ?"; $resp = $this->get_one_row($sql,[$d["M_MouID"]]); if (!$resp[0]) { $this->log("\t Error : " . $resp[1]); continue; } if ($resp[1]["M_IsActive"] == "N") { $this->log("\t Mou sudah di hapus."); } if ($resp[1]["M_IsActive"] == "H") { $this->log("\t Mou sudah di extend."); continue; } $sql ="update m_mou set M_MouIsActive = 'Y' where M_MouID = ?"; $qry = $this->db->query($sql,[$d["M_MouID"]]); if (!$qry) { $this->log("\t Error update m_mou : " . $this->db->error()["message"]. "|" . $this->db->last_query()); continue; } else { $this->log("\t Sukses extend Mou " . $d["M_MouNumber"] . " " . $d["M_MouName"]); } } $this->log( "\tDone."); } } function log($msg) { $sdate = date("Y-m-d H:i:s"); echo "$sdate $msg\n"; } function insert_or_update($table, $dt, $keys, $keyID) { $s_where = ""; $param = []; foreach ($keys as $k) { if ($s_where != "") { $s_where .= " and "; } $s_where .= " $k = ?"; $param[] = $dt[$k]; } $sql = "select $keyID from $table where $s_where "; $qry = $this->db->query($sql, $param); if (!$qry) { return [ "status" => "ERR", "message" => $this->db->error()["message"] . "|" . $this->db->last_query(), ]; } $rows = $qry->result_array(); $status = "Insert"; if (count($rows) > 0) { $lastInsertID = $rows[0][$keyID]; foreach ($keys as $k) { $this->db->where($k, $dt[$k]); } $qry = $this->db->update($table, $dt); if (!$qry) { return [ "status" => "ERR", "message" => "ERR Update : " . $this->db->error()["message"] . "|" . $this->db->last_query(), ]; } $status = "Update"; } else { $qry = $this->db->insert($table, $dt); if (!$qry) { return [ "status" => "ERR", "message" => "ERR Insert : " . $this->db->error()["message"] . "|" . $this->db->last_query(), ]; } $lastInsertID = $this->db->insert_id(); } return [ "status" => "OK", "message" => $status, "insertID" => $lastInsertID, ]; } function reply_gz($param, $debug = false) { if ($debug) { echo json_encode($param); } else { echo gzcompress(json_encode($param), 9); } } function get_param() { $zdata = file_get_contents("php://input"); $data = gzuncompress($zdata); $param = json_decode($data, true); if (json_last_error() != JSON_ERROR_NONE) { echo json_encode([ "status" => "ERR", "message" => "Json Error : " . json_last_error_msg(), "raw" => $data, ]); exit(); } return $param; } function get_branch() { $sql = "select M_BranchS_RegionalID,M_BranchCode,M_BranchID from m_branch where M_BranchIsActive = 'Y' and M_BranchIsDefault = 'Y'"; $qry = $this->db->query($sql); if (!$qry) { return [false, $this->db->error()["message"]]; } $rows = $qry->result_array(); if (count($rows) == 0) { return ["ERR", "No Default Branch"]; } return [ $rows[0]["M_BranchS_RegionalID"], $rows[0]["M_BranchCode"], $rows[0]["M_BranchID"], ]; } function url_branches($regionalID) { $sql = "select M_BranchCode,M_BranchIpAddress,M_BranchName from m_branch where M_BranchS_RegionalID = ? and M_BranchIsActive = 'Y'"; $qry = $this->db->query($sql, [$regionalID]); if (!$qry) { return [false, $this->db->error()["message"]]; } $rows = $qry->result_array(); $url = []; foreach ($rows as $r) { $url[] = [ "url" => "http://" . $r["M_BranchIpAddress"] . "/one-api/keu/titip_extend/r_extend" , "name" => $r["M_BranchName"], ]; } return $url; } public function post($url, $data) { $ch = curl_init($url); $zdata = gzcompress($data, 9); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $zdata); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/octet", "Content-Length: " . strlen($zdata), ]); $zresult = curl_exec($ch); if (curl_error($ch) != "") { echo json_encode([ "status" => "ERR", "message" => "Http Error : " . curl_error($ch), ]); curl_close($ch); exit(); } curl_close($ch); $result = gzuncompress($zresult); $jresult = json_decode($result, true); if (json_last_error() != 0) { return [ "status" => "ERR", "message" => "Invalid JSON : " . $result, ]; } return $jresult; } 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); $zresult = curl_exec($ch); $err_msg = curl_error($ch); if ($err_msg != "") { return ["status" => "ERR", "message" => $err_msg]; } $result = gzuncompress($zresult); $jresult = json_decode($result, true); if (json_last_error() != 0) { return [ "status" => "ERR", "message" => "Invalid JSON : " . $result, ]; } return $jresult; } function get_rows($sql, $prm = false) { if ($prm) { $qry = $this->db->query($sql, $prm); } else { $qry = $this->db->query($sql); } if (!$qry) { $msg = "Error Query : {$this->db->error()["message"]} | {$this->db->last_query()}\n"; return [false, $msg]; } $rows = $qry->result_array(); return [true, $rows]; } function get_one_row($sql, $prm) { list($status, $msg) = $this->get_rows($sql, $prm); if ($status !== true) { return [$status, $msg]; } if (count($msg) == 0) { return [false, "Record not found. | " . $msg]; } return [true, $msg[0]]; } }