Initial import

This commit is contained in:
sas.fajri
2026-04-27 10:26:26 +07:00
commit bf9b9097ee
2388 changed files with 3002242 additions and 0 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,74 @@
<?php
class New_order_whatsapp extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
function index()
{
echo "API NEW ORDER WHATSAPP";
}
public function add_order($transactionID)
{
$sqlname = $this->db->query("SELECT t_transactionHSOrderName as pname
FROM one_hs.t_transactionHS
WHERE t_transactionHST_TransactionID = $transactionID")->row();
$pname = $sqlname->pname;
$sqlhp = $this->db->query("SELECT t_transactionHSOrderNoHP as hp
FROM one_hs.t_transactionHS
WHERE t_transactionHST_TransactionID = $transactionID")->row();
$hp = $sqlhp->hp;
$sqldate = $this->db->query("SELECT DATE_FORMAT(T_OrderDate,'%d-%m-%Y') as pdate
FROM one_hs.t_transactionHS
JOIN one_hs.t_order ON T_OrderT_TransactionID = t_transactionHST_TransactionID
WHERE t_transactionHST_TransactionID = $transactionID
GROUP BY t_transactionHSID")->row();
$pdate = $sqldate->pdate;
$sqljam = $this->db->query("SELECT T_OrderTime as pjam
FROM one_hs.t_transactionHS
JOIN one_hs.t_order ON T_OrderT_TransactionID = t_transactionHST_TransactionID
WHERE t_transactionHST_TransactionID = $transactionID
GROUP BY t_transactionHSID")->row();
$pjam = $sqljam->pjam;
$sqlmessage = $this->db->query("SELECT REPLACE(REPLACE(REPLACE(HS_MessageText,'{PASIEN}','{$pname}'),'{TANGGAL}','{$pdate}'),'{JAM}','{$pjam}') as pmessage
FROM one_hs.hs_message
WHERE HS_MessageType = 'NEW'")->row();
$pmessage = $sqlmessage->pmessage;
$sqlwa = $this->db->query("SELECT HS_WhatsAppID as pwa
FROM one_hs.hs_whatsapp
WHERE HS_WhatsAppType = 'NEW' AND HS_WhatsAppT_TransactionID = $transactionID")->row();
$pwa = $sqlwa->pwa;
IF(empty($pwa)){
$sql = "INSERT INTO one_hs.hs_whatsapp (HS_WhatsAppT_TransactionID,
HS_WhatsAppName,
HS_WhatsAppNoHP,
HS_WhatsAppMessage,
HS_WhatsAppType,
HS_WhatsAppUserID)
VALUES(
$transactionID,
'{$pname}',
'{$hp}',
'{$pmessage}',
'NEW',
0)";
$qry = $this->db->query($sql);
if (!$qry) {
echo json_encode(['status' => 'ERR', 'message' => print_r($this->db->error(), true)]);
exit;
}
echo json_encode(['status' => 'OK', 'message' => $pmessage]);
}
}
}

View File

@@ -0,0 +1,225 @@
<?php
class Send_whatsapp extends MY_Controller
{
var $db;
function __construct()
{
parent::__construct();
}
function index()
{
echo "API SEND WHATSAPP";
}
function send()
{
$sql = "SELECT HS_WhatsAppID,
HS_WhatsAppName,
HS_WhatsAppNoHP,
HS_WhatsAppMessage
FROM one_hs.hs_whatsapp
WHERE HS_WhatsAppIsActive = 'Y'
AND (HS_WhatsAppIsSent = 'N' OR HS_WhatsAppIsSent = 'R')
ORDER BY HS_WhatsAppID LIMIT 1";
$qry = $this->db->query($sql);
if ($qry) {
$rows = $qry->result_array();
} else {
$this->sys_error_db("select whatsapp error", $this->db);
exit;
}
$url = "https://region02.krmpesan.com/api/v2/message/send-text";
foreach ($rows as $key => $value) {
$waId = $value["HS_WhatsAppID"];
$hp = $value["HS_WhatsAppNoHP"];
$message = $value["HS_WhatsAppMessage"];
$data = json_encode(["phone" => $hp, "message" => $message]);
$resp = $this->post($url, $data);
$j_response = json_decode($resp, true);
if ($j_response["code"] == 200) {
$queue_id = $j_response["data"]["queue_id"];
$sql_update = "UPDATE one_hs.hs_whatsapp SET
HS_WhatsAppIsSent = 'Y',
HS_WhatsAppSentDate = NOW(),
queue_id = ?
WHERE HS_WhatsAppID = ?";
$qry_update = $this->db->query($sql_update, array(
$queue_id,
$waId
));
if (!$qry_update) {
$this->sys_error_db("update whatsapp error", $this->db);
exit;
}
$result = [
"status" => "OK"
];
} else {
$sql_update = "UPDATE one_hs.hs_whatsapp SET
HS_WhatsAppIsSent = if(HS_WhatsAppRetry >= 3, 'E', 'N'),
HS_WhatsAppRetry = HS_WhatsAppRetry + 1
WHERE HS_WhatsAppID = ?";
$qry_update = $this->db->query($sql_update, array(
$waId
));
if (!$qry_update) {
$this->sys_error_db("update whatsapp error", $this->db);
exit;
}
$result = [
"status" => "ERR",
"message" => $resp
];
}
}
$this->sys_ok($result);
}
function send_text($hp, $message)
{
$url = "https://region01.krmpesan.com/api/v2/message/send-text";
$data = json_encode(["phone" => $hp, "message" => $message]);
$resp = $this->post($url, $data);
print_r(json_decode($resp, true));
print_r($resp);
}
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, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
'Accept: application/json',
'Authorization: Bearer eefH4rCmFpq9ATWusJE8pNy0FRCJKOzzzwrfWSHTrnoK5QWkcDiI5AtPtBI5HocGTWVXRVkkTa6SwUV2',
"Content-Length: " . strlen($data),
]);
$result = 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);
return $result;
}
function search()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$date = date("Y-m-d");
if (isset($prm['date'])) {
$date = $prm["date"];
}
$sortBy = $prm["sortBy"];
$sortStatus = $prm["sortStatus"];
if ($sortBy) {
$q_sort = "ORDER BY " . $sortBy . " " . $sortStatus;
}
$number_offset = 0;
$number_limit = 10;
if ($prm["current_page"] > 0) {
$number_offset = ($prm["current_page"] - 1) * $number_limit;
}
$sql_filter = "SELECT count(*) as total
FROM one_hs.hs_whatsapp
WHERE HS_WhatsAppIsActive = 'Y'
AND (DATE(HS_WhatsAppCreated) = ?)";
$qry_filter = $this->db->query($sql_filter, array($date));
$tot_count = 0;
$tot_page = 0;
if ($qry_filter) {
$tot_count = $qry_filter->result_array()[0]["total"];
$tot_page = ceil($tot_count / $number_limit);
} else {
$this->sys_error_db("whatsapp sount", $this->db);
exit;
}
$sql = "SELECT HS_WhatsAppID,
HS_WhatsAppName,
HS_WhatsAppNoHP,
HS_WhatsAppMessage,
HS_WhatsAppType,
HS_WhatsAppIsSent,
queue_id
FROM one_hs.hs_whatsapp
WHERE HS_WhatsAppIsActive = 'Y'
AND (DATE(HS_WhatsAppCreated) = ?)
$q_sort LIMIT ? OFFSET ? ";
$qry = $this->db->query($sql, array($date, $number_limit, $number_offset));
// $last_qry = $this->db->last_query();
// print_r($last_qry);
if ($qry) {
$rows = $qry->result_array();
} else {
$this->sys_error_db("whatsapp select", $this->db);
exit;
}
$result = array(
"total" => $tot_page,
"total_filter" => $tot_count,
"records" => $rows
);
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function resend()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$whatsappid = "";
if (isset($prm['whatsappid'])) {
$whatsappid = trim($prm["whatsappid"]);
}
$sql_upt = "UPDATE one_hs.hs_whatsapp SET
HS_WhatsAppIsSent = 'R',
HS_WhatsAppRetry = 0,
queue_id = NULL
WHERE HS_WhatsAppID = ?";
$qry_upt = $this->db->query($sql_upt, array($whatsappid));
if (!$qry_upt) {
$this->sys_error_db("whatsapp update resend error", $this->db);
exit;
}
$result = array(
"status" => "OK"
);
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
}

View File

@@ -0,0 +1,400 @@
<?php
class Send_whatsappv2 extends MY_Controller
{
var $db;
var $REFRESH_TOKEN = 'eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.tkPaJP6aq5gFQ-PzoxqMxB1gke7HGFf86mDEF7UkKQvcjLW8f0FaxG-yU2Unm37BeRtKyeqF-31qfuFOqIhOOf_qqPxp6akEIgtX5i_QEd_ixCWn3ZEA8Aa5_KsRdVQP6b3wYxdp82khY2w1y8qi-Y1omDv2tsq2eLuyj_lgz9__bsbvLyRxvlUj-0-TW2ScWan3T6vFL-J6_aqZyKmiv3nOhf1nfueFVDRlw6H6O3J3x_VCxVzoF66ey9P0PBlqiHCC3boWE6df1akJKPy0RzomW-T9U_NhP7TtbC6i5dikrrUMf7wgFX1h4ksdgQFvZT__VDw5XPNxhzpi7xmfcw.kN6y_8O03otAK3Ad.2VKKY-zRg1vAgIPXWenNvloKOprYBjfFvl41r3NnnER8R8LFF1AfXAgfEJlGoYRaHEakC2t9jHwmW3hG-_x1pTTtho7mjYWDl3x-Cqn5sGjHBeiFYHDP-PD8nv8kdU3cZ8HJqEhUloOPxQLa-5ajaoPYetM483QVLkoYZXpTDh9uSk2cR5MpdEpQsGK2JSH8w7c7ZgHCotBu0cjOFMYBfnZ9ebKHtL0pvqs9WdDlEZbukdHv-9XWLVtFSmKyaEWfMks9sBS20hOcRvpwyB4MrRsRyjMfO8QZFOgpeU1dH-vtDumMASUDlZb6Lb6IKmpvYmu9FdfCeiHXML3D_MVrq_HIC5mO6qb3s5O1yfKQ0jWEzSFdlJIzYyqzwVkgEwC6X_FxtxxqY7wlRxUhIxkS5Qy29CNNueGGWIYqd5E4CmXJylIIzAa6Ak2fBXXScG3tW9DyaopOAQpY8QOTaEXfJeSfbX-f5hvGqP6Av5KD3Gncy1sgO2Fy91gj_1ObGp3iTimsMpMgvvh7PVEENMzRXT3rkkFyOfleI0gcKKXwaJGbTJKYoD9mMeVoBEXsGi4xlKkLEqJFXRAo2EWwApACEzk5EnriPN4HHarj92QChMP80eLOt7X_wzN3D9uB_6aVgZ593JGE2LnRSWSfO8VtyAGQXn3yF7kcX00Ax4iDhxw9OzzFICBqL8lZf5tWngVqdH4SJWbLht-FjEt3VVV3CVNPUCbD8xsOvucjlD0aVeThaNsyMYOBZ2Dsz1nE3nBXEa9v-cTdGGNhuvpja1lXC9uDtv9npfdtGiiPOVON-em1AGMSLfG_JcVPIfIniyJEuyFTK-fUu0axX28oeiGSNZksJzvaXWAPtP3rgGBI_FiSa_2ZL3D0fBKY3YexmxwoRgmzWdH4N79x8DRlYvrC-QYnWHfs_kBBkpvRr6b5OnIyJVNhK3Ah6PuMuxSOP5r0Z9Ja-rTxS2sf2oe1W92rdM4eqEPLqtS-FwAubHulkgu6oQSmhLcIBKio4dPgas24raSRK8D8hm-yByLT_oKWL2QI0RcxAlBwDlzj3WjEOOhtkLHOm_D_pQXYId9JVbhsHNspUEbnYWc9dxVp9diVxgNaAMvOQhUw3cSs64rVUv2Xj46zAzM3JOEzAV_qmte91SFsP0lWpsUW_wstY0nLIzVkiZcSiu95n1bOvyjadAbH-8Kw1etPs2LrnRP5k1btRxRnZ9C5tQqwgDoirXnbw8ouAb5OxOxfwLS1tKaFEYqgxkkoeV625cPeuFN6yGbxSlYPG6CxAyx-HSOPCThyinYDrQh2kJhmTZijCtfs0mAPXtI31QTNWQ43-PXWE-fX_kau-uGODhxLE5wChv9RoSYoLbx5-iY1nm0JdoHuWLtcLvgLZOdNPrTnFoa9YvinVIPOgk7w9LI7po5IepthvRoGpf9AqywChRPYgWoSPHLdAq_j_q7Aip4rURXpoVXFHaMW4N7t.carI0aLu4lVYKxzFGJfD4g';
var $DEVICE_kEY = 'ap-southeast-1_6d1abc9e-1d27-4bb0-ba1e-d34d9d3d537e';
function __construct()
{
parent::__construct();
}
function index()
{
echo "API SEND WHATSAPP";
}
function refreshtoken()
{
$this->db->trans_begin();
$prm = $this->sys_input;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.krmpesan.app/tokens?refresh_token=$this->REFRESH_TOKEN&device_key=$this->DEVICE_kEY",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
if ($response === false) {
return false;
}
$resp = json_decode($response, true);
$idtoken = $resp['IdToken'];
// hapus data sebelumnya
$sqldelete = "DELETE FROM one_hs.hs_token";
$qrydelete = $this->db->query($sqldelete);
if (!$qrydelete) {
$this->db->trans_rollback();
$this->sys_error_db("delete hs_token error", $this->db);
exit;
}
// insert data ke dalam database
$sql = "INSERT INTO one_hs.hs_token(
HS_TokenDate,
HS_TokenToken,
HS_TokenCreated,
HS_TokenLastUpdated) VALUES(NOW(),?,NOW(),NOW())";
$qry = $this->db->query($sql, array($idtoken));
if (!$qry) {
$this->db->trans_rollback();
$this->sys_error_db("insert hs_token error", $this->db);
exit;
}
$this->db->trans_commit();
echo $idtoken;
}
function get_refreshtoken()
{
$sql = "SELECT HS_TokenID,
HS_TokenDate,
HS_TokenToken
FROM one_hs.hs_token";
$qry = $this->db->query($sql);
if ($qry) {
$rows = $qry->result_array();
} else {
$this->sys_error_db("hs_token select", $this->db);
exit;
}
foreach ($rows as $k => $v) {
$tokenhs = $v["HS_TokenToken"];
}
echo $tokenhs;
}
function get_token()
{
$urltoken = 'http://devone.aplikasi.web.id/one-api/hs/send_whatsappv2/get_refreshtoken';
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $urltoken);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
function post($url, $data, $token)
{
$prm = $this->sys_input;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer ' . $token,
]
));
$response = curl_exec($curl);
if (curl_error($curl) != "") {
echo json_encode([
"status" => "ERR",
"message" => "Http Error : " . curl_error($curl),
]);
curl_close($curl);
exit();
}
curl_close($curl);
return $response;
}
function send_new($template_name = "geths")
{
$sql = "SELECT HS_WhatsAppID,
HS_WhatsAppName,
HS_WhatsAppNoHP,
HS_WhatsAppIsSent,
HS_WhatsAppType,
DATE_FORMAT(T_OrderDate, '%d-%m-%Y') as orderDate,
T_OrderTime
FROM one_hs.hs_whatsapp
JOIN one_hs.t_order ON T_OrderT_TransactionID = HS_WhatsAppT_TransactionID
AND T_OrderIsActive = 'Y'
WHERE HS_WhatsAppIsActive = 'Y' AND HS_WhatsAppType = 'NEW'
AND (HS_WhatsAppIsSent = 'N' OR HS_WhatsAppIsSent = 'R')
ORDER BY HS_WhatsAppID";
$token = $this->get_token();
$qry = $this->db->query($sql);
if ($qry) {
$rows = $qry->result_array();
} else {
$this->sys_error_db("select whatsapp error", $this->db);
exit;
}
$url = "https://api.krmpesan.app/messages";
// print_r($rows);
foreach ($rows as $key => $value) {
// print_r($value);
$waId = $value["HS_WhatsAppID"];
$phone = $value["HS_WhatsAppNoHP"];
$name = $value["HS_WhatsAppName"];
$orderdate = $value["orderDate"];
$ordertime = $value["T_OrderTime"];
$data = json_encode([
"phone" => $phone,
"template_name" => $template_name,
"template_language" => "id",
"template" => [
"body" => [
$name,
$orderdate . ' ' . 'jam' . ' ' . $ordertime
]
]
]);
$messages = $orderdate . ' ' . $ordertime;
// echo $data;
$resp = $this->post($url, $data, $token);
$j_response = json_decode($resp, true);
if ($j_response["code"] == 200) {
$queueid = $j_response["data"]["id"];
$sql_update = "UPDATE one_hs.hs_whatsapp SET
HS_WhatsAppMessage = ?,
HS_WhatsAppIsSent = 'Y',
HS_WhatsAppSentDate = NOW(),
queue_id = ?
WHERE HS_WhatsAppID = ?";
$qry_update = $this->db->query($sql_update, array(
$messages,
$queueid,
$waId
));
if (!$qry_update) {
$this->sys_error_db("update whatsapp error", $this->db);
exit;
}
$result = [
"status" => "OK"
];
} else {
$sql_update = "UPDATE one_hs.hs_whatsapp SET
HS_WhatsAppIsSent = if(HS_WhatsAppRetry >= 3, 'E', 'N'),
HS_WhatsAppRetry = HS_WhatsAppRetry + 1
WHERE HS_WhatsAppID = ?";
$qry_update = $this->db->query($sql_update, array(
$waId
));
if (!$qry_update) {
$this->sys_error_db("update whatsapp error", $this->db);
exit;
}
$result = [
"status" => "ERR",
"message" => $resp
];
}
}
return $result;
}
function send_process($template_name = "homeservice2")
{
$sql = "SELECT HS_WhatsAppID,
HS_WhatsAppName,
HS_WhatsAppNoHP,
HS_WhatsAppIsSent,
HS_WhatsAppType,
T_OrderDate,
T_OrderTime,
M_StaffName
FROM one_hs.hs_whatsapp
JOIN one_hs.t_order ON HS_WhatsAppT_TransactionID = T_OrderT_TransactionID
AND T_OrderIsActive = 'Y'
JOIN one_hs.hs_deliveryorderdetail ON HS_WhatsAppT_TransactionID = HS_DeliveryOrderDetailT_TransactionID
AND HS_DeliveryOrderDetailIsActive = 'Y'
JOIN one_hs.hs_deliveryorder ON HS_DeliveryOrderDetailHS_DeliveryOrderID = HS_DeliveryOrderID
AND HS_DeliveryOrderIsActive = 'Y'
JOIN one.m_user ON HS_DeliveryOrderM_UserID = M_UserID
AND M_UserIsActive = 'Y'
JOIN one.m_staff ON M_UserM_StaffID = M_StaffID
AND M_StaffIsActive = 'Y'
WHERE HS_WhatsAppIsActive = 'Y' AND HS_WhatsAppType = 'PROCESS'
AND (HS_WhatsAppIsSent = 'N' OR HS_WhatsAppIsSent = 'R')
ORDER BY HS_WhatsAppID";
$qry = $this->db->query($sql);
if ($qry) {
$rows = $qry->result_array();
} else {
$this->sys_error_db("select whatsapp error", $this->db);
exit;
}
$token = $this->get_token();
// print_r($rows);
$url = "https://api.krmpesan.app/messages";
foreach ($rows as $key => $value) {
// print_r($value);
$waId = $value["HS_WhatsAppID"];
$phone = $value["HS_WhatsAppNoHP"];
$name = $value["HS_WhatsAppName"];
$staff = $value["M_StaffName"];
$data = json_encode([
"phone" => $phone,
"template_name" => $template_name,
"template_language" => "id",
"template" => [
"body" => [
$name,
$staff
]
]
]);
// echo $data;
$resp = $this->post($url, $data, $token);
$j_response = json_decode($resp, true);
// print_r($j_response);
if ($j_response["code"] == 200) {
$queueid = $j_response["data"]["id"];
$sql_update = "UPDATE one_hs.hs_whatsapp SET
HS_WhatsAppMessage = ?,
HS_WhatsAppIsSent = 'Y',
HS_WhatsAppSentDate = NOW(),
queue_id = ?
WHERE HS_WhatsAppID = ?";
$qry_update = $this->db->query($sql_update, array(
$staff,
$queueid,
$waId
));
if (!$qry_update) {
$this->sys_error_db("update whatsapp error", $this->db);
exit;
}
$result = [
"status" => "OK"
];
} else {
$sql_update = "UPDATE one_hs.hs_whatsapp SET
HS_WhatsAppIsSent = if(HS_WhatsAppRetry >= 3, 'E', 'N'),
HS_WhatsAppRetry = HS_WhatsAppRetry + 1
WHERE HS_WhatsAppID = ?";
$qry_update = $this->db->query($sql_update, array(
$waId
));
if (!$qry_update) {
$this->sys_error_db("update whatsapp error", $this->db);
exit;
}
$result = [
"status" => "ERR",
"message" => $resp
];
}
}
return $result;
}
function send()
{
// send new
$resultnew = $this->send_new();
if ($resultnew === false) {
echo json_encode(array(
'status' => 'ERR',
'message' => 'Send Message Error'
));
exit;
}
// send process
$resultprocess = $this->send_process();
if ($resultprocess === false) {
echo json_encode(array(
'status' => 'ERR',
'message' => 'Send Message Error'
));
exit;
}
echo json_encode(array(
'status' => 'OK',
'wa_message_new' => $resultnew,
'wa_message_process' => $resultprocess
));
}
function sendv2()
{
$prm = $this->sys_input;
$template_new = $prm['template_new'];
$template_process = $prm['template_process'];
// send new
$resultnew = $this->send_new($template_new);
if ($resultnew === false) {
echo json_encode(array(
'status' => 'ERR',
'message' => 'Send Message Error'
));
exit;
}
// send process
$resultprocess = $this->send_process($template_process);
if ($resultprocess === false) {
echo json_encode(array(
'status' => 'ERR',
'message' => 'Send Message Error'
));
exit;
}
echo json_encode(array(
'status' => 'OK',
'wa_message_new' => $resultnew,
'wa_message_process' => $resultprocess
));
}
}

View File

@@ -0,0 +1,198 @@
<?php
class Test_sample extends MY_Controller
{
function __construct()
{
parent::__construct();
}
function now()
{
return Date("Y-m-d H:i:s");
}
function log($msg)
{
echo "{$this->now()} $msg\n";
}
/*
create table test_sample (
test_SampleID int not null auto_increment primary key,
test_SampleT_TestID int,
test_SampleT_SampleTypeID int,
test_SampleIsActive varchar(1) default 'Y',
key (test_SampleT_TestID),
key (test_SampleT_SampleTypeID)
)
*/
function generate_master()
{
$sql = "select count(*) from one_hs.test_sample";
$qry = $this->db->query($sql);
if (!$qry) {
if ($this->db->error()["code"] == "1146") {
$sql = "
create table one_hs.test_sample (
test_SampleID int not null auto_increment primary key,
test_SampleT_TestID int,
test_SampleT_SampleTypeID int,
test_SampleIsActive varchar(1) default 'Y',
key (test_SampleT_TestID),
key (test_SampleT_SampleTypeID)
)";
$qry = $this->db->query($sql);
if (!$qry) {
$this->log(
"Error Create table one_hs.test_sample : " .
$this->db->error()["message"]
);
exit();
}
} else {
$this->log("Error : " . $this->db->error()["message"]);
exit();
}
}
// mark isActive as 'N' if not here
$sql = "update one_hs.test_sample
set test_SampleIsActive = 'N'
where test_SampleT_TestID not in (
select T_TestID
from t_test
where T_TestIsActive = 'Y' and T_TestIsPrice = 'Y'
)";
$qry = $this->db->query($sql);
if (!$qry) {
$this->log(
"Error Set NonActive one_hs.test_sample : " .
$this->db->error()["message"]
);
exit();
}
$sql = "select distinct T_TestSasCode,
if (T_SpecimenLocalIsActive is null or T_SpecimenLocalIsActive = 'N', T_TestT_SampleTypeID, T_SpecimenLocalT_SampleTypeID)
newT_SampleTypeID
from t_test
join t_sampletype on T_TestT_SampleTypeID = T_SampleTypeID
and T_TestIsResult = 'Y'
and T_TestIsActive = 'Y' and T_SampleTypeIsActive = 'Y'
left join t_specimenlocal on T_TestNat_TestID = T_SpecimenLocalNat_TestID";
$qry = $this->db->query($sql);
if (!$qry) {
$this->log(
"Error Set NonActive one_hs.test_sample : " .
$this->db->error()["message"]
);
exit();
}
$arr_sample = $qry->result_array();
$sql =
"select T_TestID,T_TestSasCode from t_test where T_TestIsActive='Y' and T_TestIsPrice='Y'";
$qry = $this->db->query($sql);
if (!$qry) {
$this->log(
"Error Set NonActive one_hs.test_sample : " .
$this->db->error()["message"]
);
exit();
}
$rows = $qry->result_array();
$result = [];
foreach ($rows as $r) {
$arr_target = array_filter($arr_sample, function ($s) use ($r) {
$parentCode = $r["T_TestSasCode"];
$childCode = $s["T_TestSasCode"];
return $parentCode == substr($childCode, 0, strlen($childCode));
});
foreach ($arr_target as $t) {
$arr = [
"test_SampleT_TestID" => $r["T_TestID"],
"test_SampleT_SampleTypeID" => $t["newT_SampleTypeID"],
];
$resp = $this->insert_or_update("one_hs.test_sample", $arr, [
"test_SampleT_TestID",
"test_SampleT_SampleTypeID",
]);
if ($resp["status"] == "ERR") {
$this->log("ERR : " . $resp["message"]);
exit();
}
}
}
}
function insert_or_update($table, $dt, $keys)
{
$s_where = "";
$param = [];
foreach ($keys as $k) {
if ($s_where != "") {
$s_where .= " and ";
}
$s_where .= " $k = ?";
$param[] = $dt[$k];
}
$sql = "select count(*) as total
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) {
if ($rows[0]["total"] > 0) {
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 {
//insert
$qry = $this->db->insert($table, $dt);
if (!$qry) {
return [
"status" => "ERR",
"message" =>
"ERR Insert : " .
$this->db->error()["message"] .
"|" .
$this->db->last_query(),
];
}
}
} else {
//insert
$qry = $this->db->insert($table, $dt);
if (!$qry) {
return [
"status" => "ERR",
"message" =>
"ERR Insert : " .
$this->db->error()["message"] .
"|" .
$this->db->last_query(),
];
}
}
return ["status" => "OK", "message" => $status];
}
}

View File

@@ -0,0 +1,693 @@
<?php
ini_set("display_errors", "1");
ini_set("display_startup_errors", "1");
error_reporting(E_ALL);
class Upload_hs extends MY_Controller
{
var $base_url;
function __construct()
{
parent::__construct();
$this->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 get_branch_default()
{
$sql =
"select * from m_branch where M_BranchIsDefault = 'Y' and M_BranchIsActive = 'Y'";
$qry = $this->db->query($sql);
if (!$qry) {
echo "{$this->now()} ERR : {$this->db->error()["message"]}\n";
exit();
}
$rows = $qry->result_array();
if (count($rows) == 0) {
echo "{$this->now()} ERR Get Default Branch: {$this->db->error()["message"]}\n";
exit();
}
$branchID = $rows[0]["M_BranchID"];
$branchCode = $rows[0]["M_BranchCode"];
return [$branchID, $branchCode];
}
function order_quota($date = "")
{
if ($date == "") {
$date = date("Y-m-d");
}
$last_updated = $this->get_last_upload("order_quota");
$this->db->trans_begin();
$this->log("Start Upload Order Quota, last updated [${last_updated}]");
list($branchID, $branchCode) = $this->get_branch_default();
$sql_online = "SELECT
? as M_BranchID,
? as M_BranchCode,
t_order.*
FROM one_hs.t_order
WHERE T_OrderIsActive = 'N'
AND T_OrderLastUpdated >= ?
AND T_OrderDate >= ?
AND T_OrderT_TransactionOldID IS NOT NULL";
$qry_online = $this->db->query($sql_online, array($branchID, $branchCode, $last_updated, $date));
if ($qry_online) {
$rows_online = $qry_online->result_array();
} else {
$this->sys_error_db("local online error", $this->db);
exit;
}
$sql_offline = "SELECT
? as M_BranchID,
? as M_BranchCode,
t_order.*
FROM one_hs.t_order
WHERE T_OrderDate >= ?
AND T_OrderLastUpdated >= ?
AND T_OrderT_TransactionOldID IS NULL";
$qry_offline = $this->db->query($sql_offline, array($branchID, $branchCode, $date, $last_updated));
if ($qry_offline) {
$rows_offline = $qry_offline->result_array();
} else {
$this->sys_error_db("local offline error", $this->db);
exit;
}
$param = json_encode(["online" => $rows_online, "offline" => $rows_offline]);
$zparam = gzcompress($param);
$url = $this->base_url . "one-api/hs/r_hs/update_order_quota";
$resp = $this->post($url, $zparam);
if ($resp["status"] != "OK") {
$this->log("Error Upload Order Quota " . $resp["message"]);
$this->db->trans_rollback();
exit();
}
$this->log("Upload Order Quota [OK]");
$this->update_last_upload("order_quota");
$this->db->trans_commit();
}
function receive($trxID = "")
{
$last_updated = $this->get_last_upload("confirm_receive");
$this->db->trans_begin();
$this->log(
"Start Upload Confirm Received, last updated [${last_updated}]"
);
//$last_updated = "2022-01-01 00:01:01";
if ($trxID != "") {
$sql = "select *
from one_hs.t_transaction
where T_TransactionIsConfirmReceived = 'Y'
and T_TransactionIsActive = 'Y'
and T_TransactionOldID is not null
and T_TransactionOldID = ? ";
$qry = $this->db->query($sql, [$trxID]);
} else {
$sql = "select *
from one_hs.t_transaction
where T_TransactionIsConfirmReceived = 'Y'
and T_TransactionIsActive = 'Y'
and T_TransactionOldID is not null
and T_TransactionOldID > 0
and T_TransactionLastUpdated > ?";
$qry = $this->db->query($sql, [$last_updated]);
}
if (!$qry) {
$this->log(
" Error Get Transaction : " . $this->db->error()["message"]
);
$this->db->trans_rollback();
exit();
}
$rows = $qry->result_array();
$t_ids = "";
$t_no = "";
foreach ($rows as $r) {
if ($t_ids != "") {
$t_ids .= ",";
$t_no .= ",";
}
$t_ids .= $r["T_TransactionID"];
$t_no .= $r["T_TransactionNumbering"];
}
if (count($rows) == 0) {
$this->log("\tNo Pending Confirm Received");
$this->update_last_upload("confirm_receive");
exit();
}
$transactions = $rows;
$this->log("\tUploading $t_no ");
$sql = "select *
from one_hs.f_payment
where F_PaymentIsActive='Y' and F_PaymentT_TransactionID in ($t_ids)";
$qry = $this->db->query($sql);
if (!$qry) {
$this->log(" Error Get Payment: " . $this->db->error()["message"]);
$this->db->trans_rollback();
exit();
}
$payments = $qry->result_array();
$sql = "select *
from one_hs.t_order
where T_OrderIsActive='Y' and T_OrderT_TransactionID in ($t_ids)";
$qry = $this->db->query($sql);
if (!$qry) {
$this->log(" Error Get Order : " . $this->db->error()["message"]);
$this->db->trans_rollback();
exit();
}
$orders = $qry->result_array();
if (count($orders) == 0) {
$this->log("\tNo Pending Order");
exit();
}
$sql = "select t_orderdetail.*
from one_hs.t_orderdetail
join one_hs.t_order on T_OrderDetailT_OrderID = T_OrderID
and T_OrderIsActive='Y'
and T_OrderT_TransactionID in ($t_ids)";
$qry = $this->db->query($sql);
if (!$qry) {
$this->log(" Error Get Order : " . $this->db->error()["message"]);
$this->db->trans_rollback();
exit();
}
$details = $qry->result_array();
if (count($details) == 0) {
$this->log("\tNo Pending Order Detail");
exit();
}
$sql = "select t_ordersample.*
from one_hs.t_ordersample
join one_hs.t_order on T_OrderSampleT_OrderID = T_OrderID
and T_OrderIsActive='Y'
and T_OrderT_TransactionID in ($t_ids)";
$qry = $this->db->query($sql);
if (!$qry) {
$this->log(" Error Get sample : " . $this->db->error()["message"]);
$this->db->trans_rollback();
exit();
}
$samples = $qry->result_array();
$sql = "select t_orderdeliveries.*
from one_hs.t_orderdeliveries
join one_hs.t_order on T_OrderDeliveriesT_OrderID = T_OrderID
and T_OrderIsActive='Y'
and T_OrderT_TransactionID in ($t_ids)";
$qry = $this->db->query($sql);
if (!$qry) {
$this->log(
" Error Get Delivery : " . $this->db->error()["message"]
);
$this->db->trans_rollback();
exit();
}
$deliveries = $qry->result_array();
//m_patient
$sql = "select m_patient.*
from one_hs.m_patient
join one_hs.t_order on T_OrderM_PatientID = M_PatientID
and T_OrderIsActive='Y'
and T_OrderT_TransactionID in ($t_ids)";
$qry = $this->db->query($sql);
if (!$qry) {
$this->log(
" Error Get Delivery : " . $this->db->error()["message"]
);
$this->db->trans_rollback();
exit();
}
$patients = $qry->result_array();
//populate orders
foreach ($orders as $idx => $o) {
$x_detail = array_filter($details, function ($d) use ($o) {
return $o["T_OrderID"] == $d["T_OrderDetailT_OrderID"];
});
$orders[$idx]["detail"] = array_values($x_detail);
$x_sample = array_filter($samples, function ($d) use ($o) {
return $o["T_OrderID"] == $d["T_OrderSampleT_OrderID"];
});
$orders[$idx]["sample"] = array_values($x_sample);
$x_delivery = array_filter($deliveries, function ($d) use ($o) {
return $o["T_OrderID"] == $d["T_OrderDeliveriesT_OrderID"];
});
$orders[$idx]["delivery"] = array_values($x_delivery);
$x_patient = array_filter($patients, function ($p) use ($o) {
return $o["T_OrderM_PatientID"] == $p["M_PatientID"];
});
$orders[$idx]["patient"] = array_values($x_patient);
}
foreach ($transactions as $idx => $t) {
$x_order = array_filter($orders, function ($o) use ($t) {
return $t["T_TransactionID"] == $o["T_OrderT_TransactionID"];
});
$transactions[$idx]["order"] = array_values($x_order);
$x_payment = array_filter($payments, function ($o) use ($t) {
return $t["T_TransactionID"] == $o["F_PaymentT_TransactionID"];
});
$transactions[$idx]["payment"] = array_values($x_payment);
}
$param = ["tx" => $transactions];
$zparam = gzcompress(json_encode($param));
$url = $this->base_url . "one-api/hs/r_hs/update_receive";
$resp = $this->post($url, $zparam);
if ($resp["status"] != "OK") {
$this->log("Error Upload Receive " . $resp["message"]);
$this->db->trans_rollback();
exit();
}
$this->log("Upload Receive [OK]");
$this->update_last_upload("confirm_receive");
$this->db->trans_commit();
}
function update_last_upload($code)
{
$fname = "/xtmp/hs-upload-status.json";
$now = Date("Y-m-d H:i:s");
if (file_exists($fname)) {
$status = json_decode(file_get_contents($fname), true);
$status[$code] = $now;
$j_status = json_encode($status);
$w_status = file_put_contents($fname, $j_status);
if ($w_status === false) {
echo "Write Error";
}
} else {
$status[$code] = $now;
$j_status = json_encode($status);
file_put_contents($fname, $j_status);
}
}
function get_last_upload($code)
{
$now = Date("Y-m-d H:i:s");
if (file_exists("/xtmp/hs-upload-status.json")) {
$status = json_decode(
file_get_contents("/xtmp/hs-upload-status.json"),
true
);
if (isset($status[$code])) {
$result = $status[$code];
$status[$code] = $now;
file_put_contents("/xtmp/hs-upload-status.json", json_encode($status));
return $result;
}
return "2023-03-01 00:00:01";
} else {
file_put_contents("/xtmp/hs-upload-status.json", json_encode([$code => date("Y-m-d h:i:s")]));
return "2023-03-01 00:00:01";
}
}
function old_get_last_upload($code)
{
$now = Date("Y-m-d H:i:s");
if (file_exists("/xtmp/hs-upload-status.json")) {
$status = json_decode(
file_get_contents("/xtmp/hs-upload-status.json"),
true
);
if (isset($status[$code])) {
$result = $status[$code];
$status[$code] = $now;
file_put_contents(
"/xtmp/hs-upload-status.json",
json_encode($status)
);
return $result;
}
$status[$code] = $now;
file_put_contents(
"/xtmp/hs-upload-status.json",
json_encode($status)
);
return $now;
} else {
$status[$code] = $now;
file_put_contents(
"/xtmp/hs-upload-status.json",
json_encode($status)
);
return "2022-01-01 00:00:01";
}
}
function surat_jalan()
{
$last_update = $this->get_last_upload("surat_jalan");
$sql = "select HS_DeliveryOrderDetailLastUpdated HS_InfoSjLastUpdated,
T_TransactionOldID HS_InfoSjT_TransactionID,
ifnull(Nat_StaffName,M_StaffName) HS_InfoSjStaffName,
M_UserUsername HS_InfoSjUsername
from
one_hs.hs_deliveryorderdetail
join one_hs.hs_deliveryorder on HS_DeliveryOrderDetailHS_DeliveryOrderID = HS_DeliveryOrderID
and HS_DeliveryOrderDetailIsActive = 'Y'
and HS_DeliveryOrderIsActive = 'Y'
and HS_DeliveryOrderLastUpdated > ?
join one_hs.t_transaction on HS_DeliveryOrderDetailT_TransactionID = T_TransactionID
and T_TransactionOldID is not null and T_TransactionOldID > 0
join m_user on HS_DeliveryOrderM_UserID = M_UserID
left join m_staff on M_UserM_StaffID = M_StaffID
left join nat_staff on M_UserM_StaffID = Nat_StaffID";
$qry = $this->db->query($sql, [$last_update]);
if (!$qry) {
$this->log(
"Error Upload SJ info: " . $this->db->error()["message"]
);
$this->db->trans_rollback();
exit();
}
$rows = $qry->result_array();
if (count($rows) == 0) {
$this->log("No Pending Info Surat Jalan, Last Upload $last_update");
$this->db->trans_rollback();
exit();
}
$param = ["sj" => $rows];
$zparam = gzcompress(json_encode($param));
$url = $this->base_url . "one-api/hs/r_hs/update_sj";
$resp = $this->post($url, $zparam);
if ($resp["status"] != "OK") {
$this->log("Error Upload SJ info " . $resp["message"]);
$this->db->trans_rollback();
exit();
}
$this->update_last_upload("surat_jalan");
$this->log("Upload SJ [OK]");
}
public function index()
{
//hs_upload
$this->db->trans_begin();
$sql =
"select * from hs_upload where Hs_UploadIsActive='Y' and Hs_UploadIsSent ='N' limit 0,1";
$qry = $this->db->query($sql);
if (!$qry) {
$this->log("Error hs_upload : " . $this->db->error()["message"]);
$this->db->trans_rollback();
exit();
}
if (count($qry->result_array()) == 0) {
$this->log("No Pending hs_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"];
//one_hs.hs_config
//one_hs.hs_price
//one_hs.hs_test
//one_hs.hs_schedule
//one_hs.hs_scheduledetail
$sql =
"select ? HS_ConfigM_BranchID, ? HS_ConfigM_BranchCode, hs_config.* from one_hs.hs_config";
$qry = $this->db->query($sql, [$branchID, $branchCode]);
if (!$qry) {
echo "{$this->now()} ERR hs_config: {$this->db->error()["message"]}\n . {$this->db->last_query()}";
exit();
}
$hs_config = $qry->result_array();
$sql = "select ? HS_PriceM_BranchID, hs_price.*
from one_hs.hs_price";
$qry = $this->db->query($sql, [$branchID]);
if (!$qry) {
echo "{$this->now()} ERR hs_price: {$this->db->error()["message"]}\n . {$this->db->last_query()}";
exit();
}
$hs_price = $qry->result_array();
$sql = "select ? HS_TestM_BranchID, hs_test.*
from one_hs.hs_test";
$qry = $this->db->query($sql, [$branchID]);
if (!$qry) {
echo "{$this->now()} ERR hs_test : {$this->db->error()["message"]}\n . {$this->db->last_query()}";
exit();
}
$hs_test = $qry->result_array();
$sql = "select ? HS_TestM_BranchID, hs_test.*
from one_hs.hs_test";
$qry = $this->db->query($sql, [$branchID]);
if (!$qry) {
echo "{$this->now()} ERR hs_test : {$this->db->error()["message"]}\n . {$this->db->last_query()}";
exit();
}
$hs_test = $qry->result_array();
$sql = "select ? HS_ScheduleM_BranchID, ? HS_ScheduleM_BranchCode, hs_schedule.*
from one_hs.hs_schedule";
$qry = $this->db->query($sql, [$branchID, $branchCode]);
if (!$qry) {
echo "{$this->now()} ERR hs_schedule: {$this->db->error()["message"]}\n . {$this->db->last_query()}";
exit();
}
$hs_schedule = $qry->result_array();
$sql = "select ? HS_ScheduleDetailM_BranchID, ? HS_ScheduleDetailM_BranchCode, hs_scheduledetail.*
from one_hs.hs_scheduledetail";
$qry = $this->db->query($sql, [$branchID, $branchCode]);
if (!$qry) {
echo "{$this->now()} ERR hs_scheduledetail: {$this->db->error()["message"]}\n . {$this->db->last_query()}";
exit();
}
$hs_scheduledetail = $qry->result_array();
$data = [
"hs_config" => $hs_config,
"hs_test" => $hs_test,
"hs_price" => $hs_price,
"hs_schedule" => $hs_schedule,
"hs_scheduledetail" => $hs_scheduledetail,
];
$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 HS Masterdata (compressed): " .
$size_org .
" => " .
$size .
" kB"
);
$url = "{$this->base_url}one-api/hs/r_hs";
$resp = $this->post($url, $zparam);
if ($resp["status"] == "ERR") {
$this->log("Error Upload HS Masterdata " . $resp["message"]);
$this->db->trans_rollback();
exit();
}
$sql =
"update hs_upload set HS_UploadIsSent='Y', HS_UploadSentDate = now() where Hs_UploadIsSent='N' and Hs_UploadIsActive='Y'";
$qry = $this->db->query($sql);
if (!$qry) {
echo "{$this->now()} ERR update hs_upload : {$this->db->error()["message"]}\n . {$this->db->last_query()}";
exit();
}
$this->db->trans_commit();
$this->log("Upload HS MasterData [OK] " . json_encode($resp["result"]));
$this->order_quota();
}
function sum_tx($date = "")
{
if ($date == "") {
$date = date("Y-m-d");
$time = date("H:00:00");
} else {
$date = date("Y-m-d", strtotime($date));
$time = "00:00:00";
}
$this->db->trans_begin();
$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"];
//one_hs.sum_tx
$sql = "select ? HS_SumTxM_BranchID, ? HS_SumTxM_BranchCode,
T_TransactionID HS_SumTxT_TransactionID, T_TransactionCreated HS_SumTxT_TrancactionCreated,
T_OrderID HS_SumTxT_OrderID,
T_TransactionIsActive HS_SumTxT_TransactionIsActive,
concat(T_OrderDate,' ',T_OrderTime) HS_SumTxT_OrderDateTime,
T_OrderNumber HS_SumTxT_OrderNumber, T_OrderIsActive HS_SumTxT_OrderIsActive
from one_hs.t_transaction
join one_hs.t_order on T_TransactionID = T_OrderT_TransactionID
and T_OrderDate > ? and T_OrderTime > ?
and ( T_TransactionOldID is null or T_TransactionOldID = 0 )
";
$qry = $this->db->query($sql, [$branchID, $branchCode, $date, $time]);
if (!$qry) {
echo "{$this->now()} ERR hs_config: {$this->db->error()["message"]}\n . {$this->db->last_query()}";
exit();
}
$hs_sum_tx = $qry->result_array();
$data = [
"hs_sum_tx" => $hs_sum_tx,
];
$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 HS Sum Transaction (compressed): " .
$size_org .
" => " .
$size .
" kB"
);
$url = "{$this->base_url}one-api/hs/r_hs";
$resp = $this->post($url, $zparam);
if ($resp["status"] == "ERR") {
$this->log("Error Upload HS Sum Transaction " . $resp["message"]);
$this->db->trans_rollback();
exit();
}
$this->log(
"Upload HS Sum Transaction [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)
);
*/