Files
BE_IBL/application/controllers/tools/member-backup/Membergateway.php
2026-04-15 15:23:57 +07:00

486 lines
17 KiB
PHP

<?php
class Membergateway extends MY_Controller
{
var $db_onedev;
var $db;
var $load;
var $sspricemou;
var $hostname;
public function index()
{
echo "BRANCH MEMBER";
}
public function __construct()
{
parent::__construct();
// $this->hostname = 'devbandungraya.aplikasi.web.id';
$this->hostname = 'bankpoint.jala.my.id';
// $this->load->library("SsPriceMou");
}
function reply($resp)
{
echo json_encode($resp);
}
function reply_gz($resp, $debug = "")
{
if ($debug != "") {
echo json_encode($resp);
} else {
echo gzcompress(json_encode($resp));
}
}
function get_param()
{
$body = file_get_contents("php://input");
return json_decode($body, true);
}
function get_param_z()
{
$body_z = file_get_contents("php://input");
$body = gzuncompress($body_z);
return json_decode($body, true);
}
public 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/text",
"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 getMember($api = "N")
{
$sql = "SELECT member.*,
(SELECT Status_GatewayLastMemberUploaded FROM one_pointreward.status_gateway WHERE Status_GatewayID = 1) as statusLastUploaded
FROM one_pointreward.member
WHERE MemberIsActive = 'Y'
AND MemberNIK <> ''
AND (MemberLastUpdated > (SELECT Status_GatewayLastMemberUploaded FROM one_pointreward.status_gateway WHERE Status_GatewayID = 1))";
$qry = $this->db->query($sql, []);
if (!$qry) {
$this->sys_error_db("Error get member");
exit;
}
$data = $qry->result_array();
// $this->reply_gz($data);
if ($api == "Y") {
$this->sys_ok($data);
# code...
}
return $data;
}
function getMemberV2($api = "N")
{
$sql = "SELECT member.*,
(SELECT Status_GatewayLastMemberUploaded FROM one_pointreward.status_gateway WHERE Status_GatewayID = 1) as statusLastUploaded
FROM one_pointreward.member
WHERE MemberIsActive = 'Y'
AND MemberNIK <> ''
AND (MemberLastUpdated > (SELECT Status_GatewayLastMemberUploaded FROM one_pointreward.status_gateway WHERE Status_GatewayID = 1))";
$qry = $this->db->query($sql, []);
if (!$qry) {
$this->sys_error_db("Error get member");
exit;
}
$data = $qry->result_array();
// $this->reply_gz($data);
$this->sys_ok($data);
}
function upload()
{
$url_nat = "http://" . $this->hostname . "/one-api/tools/member/Natmembergateway/";
$member = $this->getMember();
$prm = array(
"status" => 'OK',
"data" => $member,
);
$prm_json = gzcompress(json_encode($prm));
// echo "JSON PRM \n";
// print_r($prm_json);
// echo " \n";
// print_r($url_nat . "generate");
// echo " \n";
if (count($member) > 0) {
# code...
$resp = $this->post($url_nat . "generate", $prm_json);
// echo "JSON resp \n";
// print_r($resp);
$retVal = json_decode(gzuncompress($resp), true);
// print_r($retVal);
if ($retVal['status'] == 'OK') {
$this->updateStatusUpload($retVal['data']);
$this->sys_ok("Success");
} else {
$this->sys_error($retVal);
};
} else {
$this->sys_ok("Tidak ada data update");
}
}
function uploadV2()
{
$prm = $this->sys_input;
$url_nat = "http://" . $this->hostname . "/one-api/tools/member/Natmembergateway/";
$debug = $prm['debug'];
$prm = array(
"data" => $prm['data'],
'debug' => $debug
);
// print_r($prm);
// echo json_encode(array(
// 'status' => 'OK',
// "data" => $prm['data'],
// "prm" => $prm,
// 'debug' => $debug,
// 'post' => $_POST,
// "coba" => "coba",
// ));
// exit;
$prm_json = gzcompress(json_encode($prm));
// echo "JSON PRM \n";
// print_r($prm_json);
// echo " \n";
// print_r($url_nat . "generate");
// echo " \n";
# code...
$resp = $this->post($url_nat . "generateV2", $prm_json);
// echo "JSON resp \n";
// print_r($resp);
$retVal = array();
if ($debug == 'Y') {
$retVal = json_decode($resp, true);
} else {
$retVal = json_decode(gzuncompress($resp), true);
}
// print_r($retVal);
if ($retVal['status'] == 'OK') {
$this->updateStatusUpload($retVal['data']);
$this->sys_ok($retVal);
} else {
$this->sys_error($retVal);
};
}
function updateStatusUpload($data)
{
for ($i = 0; $i < count($data); $i++) {
$member = $data[$i];
$sql = "UPDATE one_pointreward.member SET
MemberIsUpload = 'Y',
MemberUploadDate = NOW()
WHERE MemberID = ?";
$qry = $this->db->query($sql, [$member['MemberID']]);
if (!$qry) {
$this->sys_error_db("Error update status tabel member");
exit;
}
}
$sql = "UPDATE one_pointreward.status_gateway
SET Status_GatewayLastMemberUploaded = NOW()
WHERE Status_GatewayID = 1";
$qry = $this->db->query($sql, []);
if (!$qry) {
$this->sys_error_db("Error update status gateway");
exit;
}
}
function updateStatusUploadMember($data)
{
$member = $data;
$sql = "UPDATE one_pointreward.member SET
MemberIsUpload = 'Y',
MemberUploadDate = NOW()
WHERE MemberID = ?";
$qry = $this->db->query($sql, [$member['MemberID']]);
if (!$qry) {
$this->sys_error_db("Error update status tabel member");
exit;
}
$sql = "UPDATE one_pointreward.status_gateway
SET Status_GatewayLastMemberUploaded = NOW()
WHERE Status_GatewayID = 1";
$qry = $this->db->query($sql, []);
if (!$qry) {
$this->sys_error_db("Error update status gateway");
exit;
}
}
function updateStatusUploadGateway($date)
{
$sql = "UPDATE one_pointreward.status_gateway
SET Status_GatewayLastMemberUploaded = ?
WHERE Status_GatewayID = 1";
$qry = $this->db->query($sql, []);
if (!$qry) {
$this->sys_error_db("Error update status gateway");
exit;
}
$this->sys_ok("Berhasil update last status upload gateway");
}
function download()
{
$url_nat = "http://" . $this->hostname . "/one-api/tools/member/Natmembergateway/";
$sql = "SELECT Status_GatewayLastMemberDownloaded FROM one_pointreward.status_gateway WHERE Status_GatewayID = 1";
$qry = $this->db->query($sql, []);
if (!$qry) {
$this->sys_error_db("Error update status gateway");
exit;
}
$lastDownloaded = $qry->row_array()['Status_GatewayLastMemberDownloaded'];
// print_r($lastDownloaded);
// echo " \n";
$prm = array(
"lastDownload" => $lastDownloaded
);
$resp = $this->post($url_nat . "getmember", json_encode($prm));
$retVal = json_decode(gzuncompress($resp), true);
// print_r($retVal);
// echo " \n";
if ($retVal['status'] == 'OK') {
if (count($retVal['data']) > 0) {
$this->generate($retVal['data']);
$this->sys_ok("success");
} else {
$this->sys_ok("Tidak ada data download");
}
} else {
$this->sys_error($retVal);
}
}
function downloadV2()
{
$url_nat = "http://" . $this->hostname . "/one-api/tools/member/Natmembergateway/";
$sql = "SELECT Status_GatewayLastMemberDownloaded FROM one_pointreward.status_gateway WHERE Status_GatewayID = 1";
$qry = $this->db->query($sql, []);
if (!$qry) {
$this->sys_error_db("Error update status gateway");
exit;
}
$lastDownloaded = $qry->row_array()['Status_GatewayLastMemberDownloaded'];
// print_r($lastDownloaded);
// echo " \n";
$prm = array(
"lastDownload" => $lastDownloaded
);
$resp = $this->post($url_nat . "getmember", json_encode($prm));
$retVal = json_decode(gzuncompress($resp), true);
// print_r($retVal);
// echo " \n";
if ($retVal['status'] == 'OK') {
if (count($retVal['data']) > 0) {
// $this->generate($retVal['data']);
$this->sys_ok($retVal['data']);
} else {
$this->sys_ok([]);
}
} else {
$this->sys_error($retVal);
}
}
function generate($data)
{
for ($i = 0; $i < count($data); $i++) {
$dataInsert = $data[$i];
$sql = "INSERT INTO one_pointreward.member_national(
MemberID,
MemberNumber,
MemberM_BrachCode,
MemberM_PatientID,
MemberNIK,
MemberHp,
MemberTransactionType,
MemberType,
MemberStartDate,
MemberEndDate,
MemberDateCountVisit,
MemberDateCountPoint,
MemberIsUpload,
MemberUploadDate,
MemberNote,
MemberApprovedStaffName,
MemberApprovedDate,
MemberIsActive,
MemberUserID,
MemberCreated,
MemberLastUpdated)
VALUES(
'{$dataInsert['MemberID']}',
'{$dataInsert['MemberNumber']}',
'{$dataInsert['MemberM_BrachCode']}',
'{$dataInsert['MemberM_PatientID']}',
'{$dataInsert['MemberNIK']}',
'{$dataInsert['MemberHp']}',
'{$dataInsert['MemberTransactionType']}',
'{$dataInsert['MemberType']}',
'{$dataInsert['MemberStartDate']}',
'{$dataInsert['MemberEndDate']}',
'{$dataInsert['MemberDateCountVisit']}',
'{$dataInsert['MemberDateCountPoint']}',
'{$dataInsert['MemberIsUpload']}',
'{$dataInsert['MemberUploadDate']}',
'{$dataInsert['MemberNote']}',
'{$dataInsert['MemberApprovedStaffName']}',
'{$dataInsert['MemberApprovedDate']}',
'{$dataInsert['MemberIsActive']}',
'{$dataInsert['MemberUserID']}',
'{$dataInsert['MemberCreated']}',
'{$dataInsert['MemberLastUpdated']}')
ON DUPLICATE KEY UPDATE
MemberNIK = '{$dataInsert['MemberNIK']}',
MemberTransactionType = '{$dataInsert['MemberTransactionType']}',
MemberStartDate = '{$dataInsert['MemberStartDate']}',
MemberEndDate= '{$dataInsert['MemberEndDate']}',
MemberDateCountVisit = '{$dataInsert['MemberDateCountVisit']}',
MemberDateCountPoint = '{$dataInsert['MemberDateCountPoint']}',
MemberIsActive = '{$dataInsert['MemberIsActive']}'";
$qry = $this->db->query($sql, []);
if (!$qry) {
$this->sys_error_db("Error insert member nasional");
exit;
}
}
$sql = "UPDATE one_pointreward.status_gateway
SET Status_GatewayLastMemberDownloaded = NOW()
WHERE Status_GatewayID = 1";
$qry = $this->db->query($sql, []);
if (!$qry) {
$this->sys_error_db("Error update status gateway");
exit;
}
return $data;
}
function generateV2()
{
$prm = $this->get_param();
$dataInsert = $prm['data'];
$sql = "INSERT INTO one_pointreward.member_national(
MemberID,
MemberNumber,
MemberM_BrachCode,
MemberM_BrachName,
MemberM_PatientID,
MemberName,
MemberNIK,
MemberHp,
MemberTransactionType,
MemberType,
MemberStartDate,
MemberEndDate,
MemberDateCountVisit,
MemberDateCountPoint,
MemberIsUpload,
MemberUploadDate,
MemberNote,
MemberApprovedStaffName,
MemberApprovedDate,
MemberIsActive,
MemberUserID,
MemberCreated,
MemberLastUpdated)
VALUES(
'{$dataInsert['MemberID']}',
'{$dataInsert['MemberNumber']}',
'{$dataInsert['MemberM_BrachCode']}',
'{$dataInsert['MemberM_BrachName']}',
'{$dataInsert['MemberM_PatientID']}',
'{$dataInsert['MemberName']}',
'{$dataInsert['MemberNIK']}',
'{$dataInsert['MemberHp']}',
'{$dataInsert['MemberTransactionType']}',
'{$dataInsert['MemberType']}',
'{$dataInsert['MemberStartDate']}',
'{$dataInsert['MemberEndDate']}',
'{$dataInsert['MemberDateCountVisit']}',
'{$dataInsert['MemberDateCountPoint']}',
'{$dataInsert['MemberIsUpload']}',
'{$dataInsert['MemberUploadDate']}',
'{$dataInsert['MemberNote']}',
'{$dataInsert['MemberApprovedStaffName']}',
'{$dataInsert['MemberApprovedDate']}',
'{$dataInsert['MemberIsActive']}',
'{$dataInsert['MemberUserID']}',
'{$dataInsert['MemberCreated']}',
'{$dataInsert['MemberLastUpdated']}')
ON DUPLICATE KEY UPDATE
MemberName = '{$dataInsert['MemberName']}',
MemberNIK = '{$dataInsert['MemberNIK']}',
MemberHp = '{$dataInsert['MemberHp']}',
MemberType = '{$dataInsert['MemberType']}',
MemberM_BrachName = '{$dataInsert['MemberM_BrachName']}',
MemberTransactionType = '{$dataInsert['MemberTransactionType']}',
MemberStartDate = '{$dataInsert['MemberStartDate']}',
MemberEndDate= '{$dataInsert['MemberEndDate']}',
MemberDateCountVisit = '{$dataInsert['MemberDateCountVisit']}',
MemberDateCountPoint = '{$dataInsert['MemberDateCountPoint']}',
MemberIsActive = '{$dataInsert['MemberIsActive']}'";
$qry = $this->db->query($sql, []);
if (!$qry) {
$this->sys_error_db("Error insert member nasional");
exit;
}
$this->sys_ok('Success ' . $dataInsert['MemberNumber']);
}
public function updateLastMemberDownloaded($date)
{
$formattedDate = str_replace('%20', ' ', $date);
$sql = "UPDATE one_pointreward.status_gateway
SET Status_GatewayLastMemberDownloaded = ?
WHERE Status_GatewayID = 1";
$qry = $this->db->query($sql, [$formattedDate]);
echo $formattedDate;
echo $this->db->last_query();
if (!$qry) {
$this->sys_error_db("Error update status gateway");
exit;
}
$this->sys_ok("Success update last member downloaded {$formattedDate}");
}
}