251 lines
10 KiB
PHP
251 lines
10 KiB
PHP
<?php
|
|
class DownloadPesanKhusus extends MY_Controller
|
|
{
|
|
var $db;
|
|
function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_regional = $this->load->database("regional", true);
|
|
}
|
|
function index()
|
|
{
|
|
echo "Api: Download Pesan Khusus";
|
|
}
|
|
|
|
function download()
|
|
{
|
|
try {
|
|
$prm = $this->get_param();
|
|
$limit = 20;
|
|
if (isset($prm['limit'])) {
|
|
$limit = trim($prm['limit']);
|
|
}
|
|
$branchId = $prm['branchId'];
|
|
$branchCode = $prm['branchCode'];
|
|
|
|
// $sql = "SELECT distinct
|
|
// DoctorMessageOrderPatientID as OrderPatientID,
|
|
// downloadDoctorMessageLogM_BranchID,
|
|
// downloadDoctorMessageLogM_BranchCode,
|
|
// downloadDoctorMessageLogIsDownloaded,
|
|
// downloadDoctorMessageLogRetry
|
|
// from one_doctor.doctor_message
|
|
// join one_doctor.order_patient
|
|
// ON DoctorMessageOrderPatientID = OrderPatientID
|
|
// AND DoctorMessageIsActive = 'Y'
|
|
// AND DoctorMessageStatusDownload = 'N'
|
|
// JOIN one_doctor.order_patient_details
|
|
// ON OrderPatientID = OrderPatientDetailsOrderPatientID
|
|
// AND OrderPatientDetailsIsActive = 'Y'
|
|
// JOIN m_mou on OrderPatientM_MouID = M_MouID
|
|
// AND M_MouIsActive = 'Y'
|
|
// LEFT JOIN one_doctor.download_doctor_message_log
|
|
// ON OrderPatientID = downloadDoctorMessageLogOrderPatientID
|
|
// WHERE OrderPatientIsActive = 'Y'
|
|
// AND (
|
|
// ISNULL(downloadDoctorMessageLogM_BranchID)
|
|
// OR (downloadDoctorMessageLogM_BranchID = ? AND downloadDoctorMessageLogIsDownloaded = 'N')
|
|
// OR (downloadDoctorMessageLogM_BranchID <> ? )
|
|
// )
|
|
// AND (ISNULL(downloadDoctorMessageLogRetry) OR downloadDoctorMessageLogRetry < 10)
|
|
// GROUP BY DoctorMessageOrderPatientID, downloadDoctorMessageLogM_BranchID
|
|
// ORDER BY DoctorMessageOrderPatientID
|
|
// LIMIT ?";
|
|
|
|
$sql = "SELECT distinct
|
|
DoctorMessageOrderPatientID as OrderPatientID,
|
|
downloadDoctorMessageLogM_BranchID,
|
|
downloadDoctorMessageLogM_BranchCode,
|
|
downloadDoctorMessageLogIsDownloaded,
|
|
downloadDoctorMessageLogRetry
|
|
from one_doctor.doctor_message
|
|
join one_doctor.order_patient
|
|
ON DoctorMessageOrderPatientID = OrderPatientID
|
|
AND DoctorMessageIsActive = 'Y'
|
|
AND DoctorMessageStatusDownload = 'N'
|
|
JOIN one_doctor.order_patient_details
|
|
ON OrderPatientID = OrderPatientDetailsOrderPatientID
|
|
AND OrderPatientDetailsIsActive = 'Y'
|
|
JOIN m_mou
|
|
ON (OrderPatientM_MouID = M_MouID AND M_MouIsActive = 'Y' OR OrderPatientM_MouID = 0)
|
|
LEFT JOIN one_doctor.download_doctor_message_log
|
|
ON OrderPatientID = downloadDoctorMessageLogOrderPatientID
|
|
WHERE OrderPatientIsActive = 'Y'
|
|
AND (
|
|
ISNULL(downloadDoctorMessageLogM_BranchID)
|
|
OR (downloadDoctorMessageLogM_BranchID = ? AND downloadDoctorMessageLogIsDownloaded = 'N')
|
|
OR (downloadDoctorMessageLogM_BranchID <> ? )
|
|
)
|
|
AND (ISNULL(downloadDoctorMessageLogRetry) OR downloadDoctorMessageLogRetry < 10)
|
|
GROUP BY DoctorMessageOrderPatientID, downloadDoctorMessageLogM_BranchID
|
|
ORDER BY DoctorMessageOrderPatientID
|
|
LIMIT ?";
|
|
|
|
$qry = $this->db_regional->query($sql, [
|
|
intval($branchId),
|
|
intval($branchId),
|
|
intval($limit)
|
|
]);
|
|
if (!$qry) {
|
|
$response = ["status" => "ERR", "message" => "select doctor message | " .
|
|
$this->db_regional->error()["message"], "debug" => $this->db_regional->last_query()];
|
|
$this->reply_gz($response);
|
|
exit;
|
|
}
|
|
// echo $this->db_regional->last_query();
|
|
// exit;
|
|
$rows = $qry->result_array();
|
|
$arrOrderPatientId = array();
|
|
foreach ($rows as $key => $val) {
|
|
$orderPatientId = $val['OrderPatientID'];
|
|
if (in_array($orderPatientId, $arrOrderPatientId)) {
|
|
continue;
|
|
}
|
|
$arrOrderPatientId[] = $orderPatientId;
|
|
$this->insertDownloadLog($branchId, $branchCode, $orderPatientId);
|
|
}
|
|
|
|
|
|
if (count($arrOrderPatientId) > 0) {
|
|
$orderPatientIdAll = implode(',', $arrOrderPatientId);
|
|
|
|
// tnp order nasional
|
|
|
|
$sqlData = "SELECT doctor_message.* , IFNULL(M_MouM_CompanyID,0) as M_MouM_CompanyID
|
|
from one_doctor.doctor_message
|
|
join one_doctor.order_patient
|
|
ON DoctorMessageOrderPatientID = OrderPatientID
|
|
AND DoctorMessageIsActive = 'Y'
|
|
LEFT JOIN m_mou
|
|
ON (OrderPatientM_MouID = M_MouID AND M_MouIsActive = 'Y')
|
|
WHERE OrderPatientID IN ($orderPatientIdAll)
|
|
AND OrderPatientIsActive = 'Y'";
|
|
|
|
// $sqlData = "SELECT doctor_message.* , M_MouM_CompanyID
|
|
// from one_doctor.doctor_message
|
|
// join one_doctor.order_patient
|
|
// ON DoctorMessageOrderPatientID = OrderPatientID
|
|
// AND DoctorMessageIsActive = 'Y'
|
|
// JOIN m_mou ON OrderPatientM_MouID = M_MouID
|
|
// AND M_MouIsActive = 'Y'
|
|
// WHERE OrderPatientID IN ($orderPatientIdAll)
|
|
// AND OrderPatientIsActive = 'Y'";
|
|
|
|
$qryData = $this->db_regional->query($sqlData);
|
|
|
|
if (!$qryData) {
|
|
$response = ["status" => "ERR", "message" => "select doctor message | " .
|
|
$this->db_regional->error()["message"], "debug" => $this->db_regional->last_query()];
|
|
$this->reply_gz($response);
|
|
exit;
|
|
}
|
|
$rowsData = $qryData->result_array();
|
|
// print_r($rowsData);
|
|
// exit;
|
|
|
|
$result = array(
|
|
'status' => 'OK',
|
|
"data" => $rowsData,
|
|
);
|
|
$this->reply_gz($result);
|
|
// $this->reply($result);
|
|
} else {
|
|
$this->reply_gz("Tidak ada data terbaru");
|
|
}
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$result = array(
|
|
'status' => 'err',
|
|
"message" => $message,
|
|
);
|
|
$this->reply_gz($result);
|
|
}
|
|
}
|
|
|
|
function insertDownloadLog($branchId, $branchCode, $patientId)
|
|
{
|
|
$sql = "INSERT INTO one_doctor.download_doctor_message_log
|
|
(downloadDoctorMessageLogM_BranchID,
|
|
downloadDoctorMessageLogM_BranchCode,
|
|
downloadDoctorMessageLogOrderPatientID,
|
|
downloadDoctorMessageLogRetry)
|
|
VALUES
|
|
(?,?,?,0) ON DUPLICATE
|
|
KEY UPDATE downloadDoctorMessageLogRetry = downloadDoctorMessageLogRetry + 1";
|
|
|
|
$qry = $this->db_regional->query($sql, [intval($branchId), $branchCode, intval($patientId)]);
|
|
if (!$qry) {
|
|
$this->sys_error_db(["status" => "ERR", "message" => "select doctor message | " .
|
|
$this->db_regional->error()["message"], "debug" => $this->db_regional->last_query()]);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function updateLog()
|
|
{
|
|
try {
|
|
$prm = $this->get_param_z();
|
|
$branchId = $prm['branchId'];
|
|
// $branchCde = $prm['branchCode'];
|
|
$arrOrderPatientId = $prm['arrOrderPatientId'];
|
|
|
|
foreach ($arrOrderPatientId as $key => $value) {
|
|
$sqlUpdate = "UPDATE one_doctor.download_doctor_message_log SET
|
|
downloadDoctorMessageLogIsDownloaded = 'Y'
|
|
WHERE downloadDoctorMessageLogOrderPatientID = ?
|
|
AND downloadDoctorMessageLogM_BranchID = ?";
|
|
$qry = $this->db_regional->query($sqlUpdate, [intval($value), intval($branchId)]);
|
|
if (!$qry) {
|
|
$this->sys_error_db(["status" => "ERR", "message" => "Insert download doctor message Log | " .
|
|
$this->db_regional->error()["message"], "debug" => $this->db_regional->last_query()]);
|
|
exit;
|
|
}
|
|
|
|
// UPDATE doctor_message status_download jadi Y
|
|
$sql_update_doctor_message = "UPDATE
|
|
one_doctor.doctor_message SET
|
|
DoctorMessageStatusDownload = 'Y'
|
|
WHERE DoctorMessageOrderPatientID = ?";
|
|
|
|
$qry_doctor_message = $this->db_regional->query($sql_update_doctor_message, [intval($value)]);
|
|
if (!$qry_doctor_message) {
|
|
$this->sys_error_db(["status" => "ERR", "message" => "update doctor message status download N | " .
|
|
$this->db_regional->error()["message"], "debug" => $this->db_regional->last_query()]);
|
|
exit;
|
|
}
|
|
}
|
|
$result = array(
|
|
"message" => 'Berhasil',
|
|
"sql" => $this->db_regional->last_query()
|
|
);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function reply($resp)
|
|
{
|
|
echo json_encode($resp);
|
|
}
|
|
|
|
function reply_gz($resp)
|
|
{
|
|
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);
|
|
}
|
|
}
|