debug = false; $this->base_url = "https://mobile.pramita.co.id/"; } function now() { return Date("Y-m-d H:i:s"); } function log($msg) { echo "{$this->now()} $msg\n"; } public function index() { //antrian_upload $this->db->trans_begin(); $sql = "select * from antrian_upload where AntrianUploadIsActive='Y' and AntrianUploadIsSent ='N' limit 0,1"; $qry = $this->db->query($sql); if (!$qry) { $this->log("Error antrian_upload : " . $this->db->error()["message"]); $this->db->trans_rollback(); exit(); } if (count($qry->result_array()) == 0) { $this->log("No Pending antrian_upload."); $this->db->trans_rollback(); exit(); } //branch $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 . {$this->db->last_query}"; exit(); } $rows = $qry->result_array(); if (count($rows) == 0) { $this->log("ERR : No Default Branch"); exit(); } $branchID = $rows[0]["M_BranchID"]; $branchCode = $rows[0]["M_BranchCode"]; //subservice //subservice_kuota //subservice_kuota_detail $sql = "select ? subServiceM_BranchID, subservice.* from subservice"; $qry = $this->db->query($sql, [$branchID]); if (!$qry) { echo "{$this->now()} ERR subservice: {$this->db->error()["message"]}\n . {$this->db->last_query()}"; exit(); } $subservice = $qry->result_array(); $sql = "select ? subServiceQuotaM_BranchID, subservice_kuota.* from subservice_kuota"; $qry = $this->db->query($sql, [$branchID]); if (!$qry) { echo "{$this->now()} ERR subservice_kuota: {$this->db->error()["message"]}\n . {$this->db->last_query()}"; exit(); } $subservice_kuota = $qry->result_array(); $sql = "select ? SubServiceKuotaDetailM_BranchID, subservice_kuota_detail.* from subservice_kuota_detail"; $qry = $this->db->query($sql, [$branchID]); if (!$qry) { echo "{$this->now()} ERR subservice_kuota_detail : {$this->db->error()["message"]}\n . {$this->db->last_query()}"; exit(); } $subservice_kuota_detail = $qry->result_array(); $data = [ "subservice" => $subservice, "subservice_kuota" => $subservice_kuota, "subservice_kuota_detail" => $subservice_kuota_detail, ]; $jdata = json_encode($data); $md5 = md5($jdata); $param = ["md5" => $md5, "data" => $data]; $jparam = json_encode($param); $zparam = gzcompress($jparam); $size = round(strlen($zparam) / 1024, 2); $size_org = round(strlen($jparam) / 1024, 2); $this->log( "Upload SubService Kuota Masterdata (compressed): " . $size_org . " => " . $size . " kB" ); $url = "{$this->base_url}one-api/antrian_online/r_aol"; $resp = $this->post($url, $zparam); if ($resp["status"] == "ERR") { $this->log("Error Upload Subservice Masterdata " . $resp["message"]); $this->db->trans_rollback(); exit(); } $sql = "update antrian_upload set AntrianUploadIsSent='Y', AntrianUploadSentDate = now() where AntrianUploadIsSent='N' and AntrianUploadIsActive='Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR update antrian_upload : {$this->db->error()["message"]}\n . {$this->db->last_query()}"; exit(); } $this->db->trans_commit(); $this->log("Upload Subservice MasterData [OK] " . json_encode($resp["result"])); } function post($url, $data) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/octet-stream", "Content-Length: " . strlen($data), ]); $result = curl_exec($ch); if (curl_errno($ch) > 0) { return [ "status" => "ERR", "message" => curl_error($ch), ]; } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($httpCode != 200) { return [ "status" => "ERR", "message" => "Http Response : $httpCode", ]; } $j_result = json_decode($result, true); if (!$j_result) { return [ "status" => "ERR", "message" => "JSON invalid: $result", ]; } return $j_result; } } /* CREATE TABLE `hs_schedule` ( `HS_ScheduleID` int(11) NOT NULL AUTO_INCREMENT, `HS_ScheduleM_BranchID` int(11) NOT NULL, `HS_ScheduleM_BranchCode` varchar(2), `HS_ScheduleM_RegDayID` int(11) NOT NULL, `HS_ScheduleLimit` int(11) NOT NULL DEFAULT 10, `HS_ScheduleIsActive` char(1) NOT NULL DEFAULT 'Y', `HS_ScheduleUserID` int(11) NOT NULL DEFAULT 3, `HS_ScheduleCreated` datetime NOT NULL DEFAULT current_timestamp(), `HS_ScheduleLastUpdated` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`HS_ScheduleID`,HS_ScheduleM_BranchID), key(HS_ScheduleM_RegDayID), key(HS_ScheduleM_BranchCode) ); CREATE TABLE `hs_scheduledetail` ( `HS_ScheduleDetailID` int(11) NOT NULL AUTO_INCREMENT, `HS_ScheduleDetailM_BranchID` int(11) NOT NULL , `HS_ScheduleDetailM_BranchCode` varchar(2) NOT NULL , `HS_ScheduleDetailHS_ScheduleID` int(11) NOT NULL, `HS_ScheduleDetailM_RegTimeID` int(11) NOT NULL, `HS_ScheduleDetailIsActive` char(1) NOT NULL DEFAULT 'Y', `HS_ScheduleDetailUserID` int(11) NOT NULL DEFAULT 3, `HS_ScheduleDetailCreated` datetime NOT NULL DEFAULT current_timestamp(), `HS_ScheduleDetailLastUpdated` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`HS_ScheduleDetailID`,HS_ScheduleDetailM_BranchID), KEY `HS_ScheduleDetailHS_ScheduleID` (`HS_ScheduleDetailHS_ScheduleID`), KEY `HS_ScheduleDetailHS_Time` (`HS_ScheduleDetailM_RegTimeID`) ); drop table hs_sum_tx; create table hs_sum_tx ( HS_SumTxM_BranchID int, HS_SumTxM_BranchCode varchar(2), HS_SumTxT_TransactionID int, HS_SumTxT_TrancactionCreated datetime, HS_SumTxT_OrderDateTime datetime, HS_SumTxT_OrderID int, HS_SumTxT_OrderNumber varchar(50), HS_SumTxT_TransactionIsActive varchar(1), HS_SumTxT_OrderIsActive varchar(1), primary key (HS_SumTxM_BranchID,HS_SumTxT_TransactionID,HS_SumTxT_OrderID), key (HS_SumTxM_BranchID), key (HS_SumTxT_TransactionID), key (HS_SumTxT_TrancactionCreated), key (HS_SumTxT_OrderDateTime), key (HS_SumTxT_OrderIsActive), key (HS_SumTxT_TransactionIsActive) ); */