Files
BE_CPONE/application/controllers/mockup/spk-home-service/Spkservice.php
2026-04-27 10:31:17 +07:00

896 lines
37 KiB
PHP

<?php
class Spkservice extends MY_Controller
{
var $db;
var $hostname;
public function __construct()
{
parent::__construct();
$this->hostname = 'devcpone.aplikasi.web.id';
// $this->db = $this->load->database("cpone", true);
}
public function index()
{
// $cek = $this->db->query("select database() as current_db")->result();
// print_r($cek);
echo "SPK HOME SERVICE API";
}
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($debug = 'N')
{
$body_z = file_get_contents("php://input");
$body = '';
if ($debug == 'Y') {
$body = $body_z;
} else {
$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 getstaff()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$rows = [];
if ($prm['spkHomeServiceId']) {
$sql = "SELECT M_StaffID as id,
M_StaffName as name
FROM m_staff
WHERE M_StaffIsActive = 'Y'
AND M_StaffID NOT IN (
SELECT
M_StaffID
FROM spk_home_service_staff
JOIN m_staff ON SpkHomeServiceStaffM_StaffID = M_StaffID
AND M_StaffIsActive = 'Y'
WHERE SpkHomeServiceStaffSpkHomeServiceID = {$prm['spkHomeServiceId']} AND SpkHomeServiceStaffIsActive = 'Y'
)
ORDER BY M_StaffName ASC";
$qry = $this->db->query($sql);
if ($qry) {
$rows = $qry->result_array();
} else {
$this->sys_error_db('select staff header error', $this->db);
exit;
}
} else {
$query = " SELECT M_StaffID as id,
M_StaffName as name
FROM m_staff
WHERE M_StaffIsActive = 'Y'
ORDER BY M_StaffName ASC
";
//echo $query;
$qry_hsl = $this->db->query($query);
if ($qry_hsl) {
$rows = $qry_hsl->result_array();
} else {
$this->sys_error_db('select staff error', $this->db);
exit;
}
}
$result = array(
"total" => count($rows),
"records" => $rows,
"xdate" => date("Y-m-d H:i:s")
);
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function getorder()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$number_offset = 0;
$number_limit = 10;
if ($prm["current_page"] > 0) {
$number_offset = ($prm["current_page"] - 1) * $number_limit;
}
$sql_tot = "SELECT count(*) as total FROM (
SELECT
SpkHomeServiceOrderID,
M_PatientID,
M_PatientName,
M_BranchID,
M_BranchCode,
M_BranchCodeLab,
PreregisterOnlineID,
PreregisterOnlineQRCode,
PreregisterOnlineOrderNumber,
PreregisterOnlineBranchCode
FROM preregister_online
JOIN m_patient ON M_PatientID = PreregisterOnlineM_PatientID
AND M_PatientIsActive = 'Y'
JOIN m_branch ON PreregisterOnlineBranchCode = M_BranchCodeLab
AND M_BranchIsActive = 'Y'
LEFT JOIN spk_home_service_order ON SpkHomeServiceOrderPreregisterOnlineID = PreregisterOnlineID
AND SpkHomeServiceOrderIsActive = 'Y'
LEFT JOIN spk_home_service ON SpkHomeServiceOrderSpkHomeServiceID = SpkHomeServiceID
AND SpkHomeServiceIsActive = 'Y'
WHERE PreregisterOnlineIsActive = 'Y'
AND (
-- Ambil yang SPK-nya N (baru) dan sudah ada order
(SpkHomeServiceStatus = 'N' AND SpkHomeServiceOrderID IS NOT NULL)
OR
-- Atau SPK-nya sudah R (release) tapi belum diorder
(SpkHomeServiceOrderID IS NULL)
)
GROUP BY PreregisterOnlineID) x
";
$qry_tot = $this->db->query($sql_tot);
$tot_count = 0;
$tot_page = 0;
if ($qry_tot) {
$tot_count = $qry_tot->result_array()[0]["total"];
$tot_page = ceil($tot_count / $number_limit);
} else {
$this->sys_error_db("order count", $this->db);
exit;
}
$sql = "SELECT
SpkHomeServiceOrderID,
M_PatientID,
M_PatientName,
M_BranchID,
M_BranchCode,
M_BranchCodeLab,
PreregisterOnlineID,
PreregisterOnlineQRCode,
PreregisterOnlineOrderNumber,
PreregisterOnlineBranchCode,
-- PreregisterOnlineJSON,
'' as test_name
FROM preregister_online
JOIN m_patient ON M_PatientID = PreregisterOnlineM_PatientID
AND M_PatientIsActive = 'Y'
JOIN m_branch ON PreregisterOnlineBranchCode = M_BranchCodeLab
AND M_BranchIsActive = 'Y'
LEFT JOIN spk_home_service_order ON SpkHomeServiceOrderPreregisterOnlineID = PreregisterOnlineID
AND SpkHomeServiceOrderIsActive = 'Y'
LEFT JOIN spk_home_service ON SpkHomeServiceOrderSpkHomeServiceID = SpkHomeServiceID
AND SpkHomeServiceIsActive = 'Y'
WHERE PreregisterOnlineIsActive = 'Y'
AND (
-- Ambil yang SPK-nya N (baru) dan sudah ada order
(SpkHomeServiceStatus = 'N' AND SpkHomeServiceOrderID IS NOT NULL)
OR
-- Atau SPK-nya sudah R (release) tapi belum diorder
(SpkHomeServiceOrderID IS NULL)
)
GROUP BY PreregisterOnlineID
LIMIT ? OFFSET ?";
$qry = $this->db->query($sql, [$number_limit, $number_offset]);
// echo $this->db->last_query();
// exit;
if ($qry) {
$rows = $qry->result_array();
foreach ($rows as $key => $value) {
$sql_ol = "SELECT PreregisterOnlineJSON FROM preregister_online WHERE PreregisterOnlineIsActive = 'Y' AND PreregisterOnlineID = ?";
$qry_ol = $this->db_onedev->query($sql_ol, [$value['PreregisterOnlineID']]);
if (!$qry_ol) {
$this->sys_error_db("Error json preregister", $this->db_onedev);
exit;
}
$dataJson = $qry_ol->result_array();
$tempTestName = [];
foreach ($dataJson as $k => $json) {
$parsed = json_decode($json["PreregisterOnlineJSON"], true);
if (json_last_error() === JSON_ERROR_NONE && is_array($parsed)) {
foreach ($parsed as $item) {
$nametest = $item['test_name'] ?? '';
$fullName = trim("$nametest");
$tempTestName[] = $fullName;
}
}
}
$rows[$key]["test_name"] = implode(', ', $tempTestName);
}
} else {
$this->sys_error_db("select order", $this->db);
exit;
}
$result = array(
"total_page" => $tot_page,
"records" => $rows
);
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function saveOrder()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$this->db->trans_begin();
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$arrOrders = $prm["arrOrders"];
$arrStaff = $prm["arrStaff"];
$date = $prm["date"];
$spkHomeServiceId = $prm["spkHomeServiceId"];
$numbering = $this->db->query("SELECT fn_numbering('SPK') as numbering")->row()->numbering;
if ($prm["act"] == "new") {
$sql_sh = "INSERT INTO spk_home_service(
SpkHomeServiceNumber,
SpkHomeServiceDate,
SpkHomeServiceIsActive,
SpkHomeServiceCreated,
SpkHomeServiceCreatedUserID) VALUES(?,?,'Y',NOW(),?)";
$qry_sh = $this->db->query($sql_sh, [
$numbering,
$date,
$userid
]);
if (!$qry_sh) {
$this->db->trans_rollback();
$this->sys_error_db("Error insert spk home service", $this->db);
exit;
}
$lastid_spk = $this->db->insert_id();
if (count($prm["arrOrders"]) > 0) {
foreach ($arrOrders as $key => $vsh) {
$sql_sho = "INSERT INTO spk_home_service_order(
SpkHomeServiceOrderSpkHomeServiceID,
SpkHomeServiceOrderBranchCode,
SpkHomeServiceOrderPreregisterOnlineID,
SpkHomeServiceOrderIsActive,
SpkHomeServiceOrderCreated,
SpkHomeServiceOrderCreatedUserID) VALUES(?,?,?,'Y',NOW(),?)";
$qry_sho = $this->db->query($sql_sho, [
$lastid_spk,
$vsh["PreregisterOnlineBranchCode"],
$vsh["PreregisterOnlineID"],
$userid
]);
if (!$qry_sho) {
$this->db->trans_rollback();
$this->sys_error_db("Error insert spk home service order", $this->db);
exit;
}
}
}
if (count($prm["arrStaff"]) > 0) {
foreach ($arrStaff as $key => $value) {
$sql_staff = "INSERT INTO spk_home_service_staff(
SpkHomeServiceStaffM_StaffID,
SpkHomeServiceStaffSpkHomeServiceID,
SpkHomeServiceStaffIsActive,
SpkHomeServiceStaffCreated,
SpkHomeServiceStaffCreatedUserID) VALUES(?,?,'Y',NOW(),?)";
$qry_staff = $this->db->query($sql_staff, [
$value["staffid"],
$lastid_spk,
$userid
]);
if (!$qry_staff) {
$this->db->trans_rollback();
$this->sys_error_db("Error insert spk home service staff", $this->db);
exit;
}
}
}
} else {
// Step 1: Ambil semua order aktif dari DB untuk SPK ini
$sql_db_orders = "SELECT SpkHomeServiceOrderID
FROM spk_home_service_order
WHERE SpkHomeServiceOrderSpkHomeServiceID = ?
AND SpkHomeServiceOrderIsActive = 'Y'";
$qry_db_orders = $this->db->query($sql_db_orders, [$spkHomeServiceId]);
$db_orders = $qry_db_orders->result_array();
// Siapkan array order aktif dari DB
$db_order_ids = array_column($db_orders, 'SpkHomeServiceOrderID');
// print_r($db_order_ids);
// exit;
// Step 2: Ambil semua ID dari data frontend
$order_ids = [];
foreach ($arrOrders as $order) {
if (!empty($order['SpkHomeServiceOrderID'])) {
$order_ids[] = $order['SpkHomeServiceOrderID'];
}
}
// Step 3: Cek data yang dihapus (ada di DB tapi tidak ada di frontend)
$deleted_ids = array_diff($db_order_ids, $order_ids);
// Step 4: Update ke IsActive = 'N'
foreach ($deleted_ids as $deleted_id) {
$sql_update = "UPDATE spk_home_service_order SET
SpkHomeServiceOrderIsActive = 'N',
SpkHomeServiceOrderLastUpdated = NOW(),
SpkHomeServiceOrderLastUpdatedUserID = ?
WHERE SpkHomeServiceOrderID = ?";
$qry_update = $this->db->query($sql_update, [$userid, $deleted_id]);
if (!$qry_update) {
$this->db->trans_rollback();
$this->sys_error_db("Error update spk order", $this->db);
exit;
}
}
// spk home service staff
// Ambil data staff lama dari database (yang aktif)
$sql_old = "SELECT SpkHomeServiceStaffID, SpkHomeServiceStaffM_StaffID
FROM spk_home_service_staff
WHERE SpkHomeServiceStaffSpkHomeServiceID = ? AND SpkHomeServiceStaffIsActive = 'Y'";
$qry_old = $this->db->query($sql_old, [$spkHomeServiceId]);
$oldStaffs = $qry_old->result_array();
// Buat array id lama dan baru
$oldStaffMap = [];
foreach ($oldStaffs as $old) {
$oldStaffMap[$old['SpkHomeServiceStaffM_StaffID']] = $old['SpkHomeServiceStaffID'];
}
// print_r($oldStaffMap);
// exit;
$newStaffIDs = []; // Simpan semua staff ID baru dari frontend
foreach ($arrStaff as $staff) {
$staffID = isset($staff['staffid']) ? $staff['staffid'] : $staff['SpkHomeServiceStaffM_StaffID'];
$newStaffIDs[] = $staffID;
if (!isset($oldStaffMap[$staffID])) {
// Insert jika staff baru
// print_r("insert baru");
$sql_insert = "INSERT INTO spk_home_service_staff(
SpkHomeServiceStaffM_StaffID,
SpkHomeServiceStaffSpkHomeServiceID,
SpkHomeServiceStaffIsActive,
SpkHomeServiceStaffCreated,
SpkHomeServiceStaffCreatedUserID
) VALUES (?, ?, 'Y', NOW(), ?)";
$qry_insert = $this->db->query($sql_insert, [$staffID, $spkHomeServiceId, $userid]);
if (!$qry_insert) {
$this->db->trans_rollback();
$this->sys_error_db("Error insert spk home service staff", $this->db);
exit;
}
}
}
// Update yang dihapus (jika M_StaffID lama tidak ada di list baru)
foreach ($oldStaffMap as $m_staff_id => $spk_staff_id) {
if (!in_array($m_staff_id, $newStaffIDs)) {
// print_r("hapus");
$sql_update = "UPDATE spk_home_service_staff SET
SpkHomeServiceStaffIsActive = 'N',
SpkHomeServiceStaffLastUpdated = NOW(),
SpkHomeServiceStaffLastUpdatedUserID = ?
WHERE SpkHomeServiceStaffID = ?";
$qry_update = $this->db->query($sql_update, [$userid, $spk_staff_id]);
if (!$qry_update) {
$this->db->trans_rollback();
$this->sys_error_db("Error update (nonaktifkan) spk staff", $this->db);
exit;
}
}
}
}
$this->db->trans_commit();
$result = array(
"total" => 1,
"records" => array('status' => 'OK'),
"number" => $numbering,
"id" => $lastid_spk
);
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function search()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$search = "";
if (isset($prm['search'])) {
$search = trim($prm["search"]);
if ($search != "") {
$search = '%' . $prm['search'] . '%';
} else {
$search = '%%';
}
}
$number_offset = 0;
$number_limit = 20;
if ($prm["current_page"] > 0) {
$number_offset = ($prm["current_page"] - 1) * $number_limit;
}
$sql_tot = "SELECT count(*) as total
FROM spk_home_service
WHERE SpkHomeServiceIsActive = 'Y'
AND (SpkHomeServiceNumber LIKE ?)
";
$qry_tot = $this->db->query($sql_tot, [
$search
]);
$tot_count = 0;
$tot_page = 0;
if ($qry_tot) {
$tot_count = $qry_tot->result_array()[0]["total"];
$tot_page = ceil($tot_count / $number_limit);
} else {
$this->sys_error_db("error spk home service count", $this->db);
exit;
}
$sql = "SELECT SpkHomeServiceID,
SpkHomeServiceNumber,
DATE_FORMAT(SpkHomeServiceDate, '%d-%m-%Y') as SpkHomeServiceDate,
SpkHomeServiceStatus,
SpkHomeServiceIsActive
FROM spk_home_service
WHERE SpkHomeServiceIsActive = 'Y'
AND (SpkHomeServiceNumber LIKE ?)
ORDER BY SpkHomeServiceID DESC
LIMIT ? OFFSET ?";
$qry = $this->db->query($sql, [
$search,
$number_limit,
$number_offset
]);
if ($qry) {
$rows = $qry->result_array();
} else {
$this->sys_error_db("Error lookup spk home service", $this->db);
exit;
}
$result = array(
"total" => $tot_page,
"records" => $rows,
"sql" => $this->db->last_query()
);
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function getorderbyid()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$spkHomeServiceId = $prm["spkHomeServiceId"];
$number_offset = 0;
$number_limit = 10;
if ($prm["current_page"] > 0) {
$number_offset = ($prm["current_page"] - 1) * $number_limit;
}
$sql_tot = "SELECT count(*) as total FROM (
SELECT SpkHomeServiceOrderID,
SpkHomeServiceOrderSpkHomeServiceID,
SpkHomeServiceOrderBranchCode,
M_PatientID,
M_PatientName,
M_BranchID,
M_BranchCode,
M_BranchCodeLab,
PreregisterOnlineID,
PreregisterOnlineQRCode,
PreregisterOnlineOrderNumber,
'' as test_name
FROM spk_home_service_order
JOIN preregister_online ON SpkHomeServiceOrderPreregisterOnlineID = PreregisterOnlineID
AND PreregisterOnlineIsActive = 'Y'
JOIN m_patient ON M_PatientID = PreregisterOnlineM_PatientID
AND M_PatientIsActive = 'Y'
JOIN m_branch ON PreregisterOnlineBranchCode = M_BranchCodeLab
AND M_BranchIsActive = 'Y'
WHERE SpkHomeServiceOrderIsActive = 'Y'
AND SpkHomeServiceOrderSpkHomeServiceID = ?) x
";
$qry_tot = $this->db->query($sql_tot, [$spkHomeServiceId]);
$tot_count = 0;
$tot_page = 0;
if ($qry_tot) {
$tot_count = $qry_tot->result_array()[0]["total"];
$tot_page = ceil($tot_count / $number_limit);
} else {
$this->sys_error_db("order count", $this->db);
exit;
}
$sql = "SELECT SpkHomeServiceOrderID,
SpkHomeServiceOrderSpkHomeServiceID,
SpkHomeServiceOrderBranchCode,
M_PatientID,
M_PatientName,
M_BranchID,
M_BranchCode,
M_BranchCodeLab,
PreregisterOnlineID,
PreregisterOnlineQRCode,
PreregisterOnlineOrderNumber,
'' as test_name
FROM spk_home_service_order
JOIN preregister_online ON SpkHomeServiceOrderPreregisterOnlineID = PreregisterOnlineID
AND PreregisterOnlineIsActive = 'Y'
JOIN m_patient ON M_PatientID = PreregisterOnlineM_PatientID
AND M_PatientIsActive = 'Y'
JOIN m_branch ON PreregisterOnlineBranchCode = M_BranchCodeLab
AND M_BranchIsActive = 'Y'
WHERE SpkHomeServiceOrderIsActive = 'Y'
AND SpkHomeServiceOrderSpkHomeServiceID = ?
LIMIT ? OFFSET ?";
$qry = $this->db->query($sql, [$spkHomeServiceId, $number_limit, $number_offset]);
// echo $this->db->last_query();
// exit;
if ($qry) {
$rows = $qry->result_array();
foreach ($rows as $key => $value) {
$sql_ol = "SELECT PreregisterOnlineJSON FROM preregister_online WHERE PreregisterOnlineIsActive = 'Y' AND PreregisterOnlineID = ?";
$qry_ol = $this->db_onedev->query($sql_ol, [$value['PreregisterOnlineID']]);
if (!$qry_ol) {
$this->sys_error_db("Error json preregister", $this->db_onedev);
exit;
}
$dataJson = $qry_ol->result_array();
$tempTestName = [];
foreach ($dataJson as $k => $json) {
$parsed = json_decode($json["PreregisterOnlineJSON"], true);
if (json_last_error() === JSON_ERROR_NONE && is_array($parsed)) {
foreach ($parsed as $item) {
$nametest = $item['test_name'] ?? '';
$fullName = trim("$nametest");
$tempTestName[] = $fullName;
}
}
}
$rows[$key]["test_name"] = implode(', ', $tempTestName);
}
} else {
$this->sys_error_db("select order", $this->db);
exit;
}
$result = array(
"total_page" => $tot_page,
"records" => $rows
);
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function getstaffbyid()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$spkHomeServiceId = $prm["spkHomeServiceId"];
$sql = "SELECT SpkHomeServiceStaffID,
SpkHomeServiceStaffM_StaffID,
SpkHomeServiceStaffSpkHomeServiceID,
M_StaffID as id,
M_StaffName as name
FROM spk_home_service_staff
JOIN m_staff ON SpkHomeServiceStaffM_StaffID = M_StaffID
AND M_StaffIsActive = 'Y'
WHERE SpkHomeServiceStaffIsActive = 'Y'
AND SpkHomeServiceStaffSpkHomeServiceID = ?";
$qry = $this->db->query($sql, [$spkHomeServiceId]);
if ($qry) {
$rows = $qry->result_array();
} else {
$this->sys_error_db("error get staff by id", $this->db);
exit;
}
$result = array(
"total" => count($rows),
"records" => $rows,
"xdate" => date("Y-m-d H:i:s")
);
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function releaseOrder()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$this->db->trans_begin();
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$spkHomeServiceId = $prm["spkHomeServiceId"];
$sql = "UPDATE spk_home_service SET
SpkHomeServiceStatus = 'R',
SpkHomeServiceLastUpdated = NOW(),
SpkHomeServiceLastUpdatedUserID = ?
WHERE SpkHomeServiceID = ?";
$qry = $this->db->query($sql, [$userid, $spkHomeServiceId]);
if (!$qry) {
$this->db->trans_rollback();
$this->sys_error_db("Error release spk home service", $this->db);
exit;
}
$sql_order = "SELECT SpkHomeServiceOrderID,
SpkHomeServiceOrderSpkHomeServiceID,
SpkHomeServiceOrderBranchCode,
SpkHomeServiceOrderPreregisterOnlineID,
PreregisterOnlineID,
PreregisterOnlinePreregisterID,
PreregisterOnlineTrxDateTime,
PreregisterOnlineQRCode,
PreregisterOnlineOrderNumber,
PreregisterOnlineBranchCode,
PreregisterOnlineM_PatientID,
PreregisterOnlineMgm_McuID,
PreregisterOnlineCorporateID,
PreregisterOnlineDiagnose,
PreregisterOnlineFoNote,
PreregisterOnlineStatus,
PreregisterOnlineType,
M_PatientID,
M_PatientNoReg,
M_PatientName,
M_PatientGender,
M_PatientDOB,
'' as details
FROM spk_home_service_order
JOIN preregister_online ON SpkHomeServiceOrderPreregisterOnlineID = PreregisterOnlineID
AND PreregisterOnlineIsActive = 'Y'
JOIN m_patient ON PreregisterOnlineM_PatientID = M_PatientID
AND M_PatientIsActive = 'Y'
WHERE SpkHomeServiceOrderIsActive = 'Y'
AND SpkHomeServiceOrderSpkHomeServiceID = ?";
$qry_order = $this->db->query($sql_order, [$spkHomeServiceId]);
if ($qry_order) {
$rows = $qry_order->result_array();
foreach ($rows as $k => $v) {
$sql_ol = "SELECT PreregisterOnlineJSON FROM preregister_online WHERE PreregisterOnlineIsActive = 'Y' AND PreregisterOnlineID = ?";
$qry_ol = $this->db_onedev->query($sql_ol, [$v['PreregisterOnlineID']]);
if (!$qry_ol) {
$this->sys_error_db("Error json preregister", $this->db_onedev);
exit;
}
$dataJson = $qry_ol->row_array();
// print_r($dataJson);
// exit;
$data = json_decode($dataJson["PreregisterOnlineJSON"], true);
$rows[$k]["details"] = $data;
}
} else {
$this->db->trans_rollback();
$this->sys_error_db("Error get data order", $this->db);
exit;
}
foreach ($rows as $key => $value) {
$data = array(
"branch_code_lab" => $value["PreregisterOnlineBranchCode"],
"trx_datetime" => $value["PreregisterOnlineTrxDateTime"],
"diagnose" => $value["PreregisterOnlineDiagnose"],
"fo_note" => $value["PreregisterOnlineFoNote"],
"patient_id" => $value["PreregisterOnlineM_PatientID"],
"patient_corporate_id" => $value["PreregisterOnlineCorporateID"],
"mgm_mcuID" => $value["PreregisterOnlineMgm_McuID"],
"patient_birthdate" => $value["M_PatientDOB"],
"preregister_id" => $value["PreregisterOnlinePreregisterID"],
"details" => $value["details"]
);
$jsonEncode = json_encode($data);
// print_r($data);
// $param = gzcompress($jsonEncode);
$url = "https://" . $this->hostname . "/one-api/website/order/register/";
$post_rst = $this->post($url, $jsonEncode);
$rst = json_decode($post_rst, true);
// print_r($rst["branch_code_lab"]);
$sql_update_order = "UPDATE spk_home_service_order SET
SpkHomeServiceOrderT_OrderHeaderID = ?,
SpkHomeServiceOrderLastUpdated = NOW(),
SpkHomeServiceOrderLastUpdatedUserID = ?
WHERE SpkHomeServiceOrderID = ?";
$qry = $this->db->query($sql_update_order, [$rst["order_id"], $userid, $value["SpkHomeServiceOrderID"]]);
if (!$qry) {
$this->db->trans_rollback();
$this->sys_error_db("Error update orerheaderid spk home service order", $this->db);
exit;
}
}
$this->db->trans_commit();
$result = array("total" => 1, "id" => $spkHomeServiceId);
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function deleteOrder()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$this->db->trans_begin();
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$spkHomeServiceId = $prm["spkHomeServiceId"];
$sql_sh = "UPDATE spk_home_service SET
SpkHomeServiceIsActive = 'N',
SpkHomeServiceDeleted = NOW(),
SpkHomeServiceDeletedUserID = ?
WHERE SpkHomeServiceID = ?";
$qry_sh = $this->db->query($sql_sh, [$userid, $spkHomeServiceId]);
if (!$qry_sh) {
$this->db->trans_rollback();
$this->sys_error_db("Error delete spk home service", $this->db);
exit;
}
$sql_sho = "UPDATE spk_home_service_order SET
SpkHomeServiceOrderIsActive = 'N',
SpkHomeServiceOrderDeleted = NOW(),
SpkHomeServiceOrderDeletedUserID = ?
WHERE SpkHomeServiceOrderSpkHomeServiceID = ?";
$qry_sho = $this->db->query($sql_sho, [$userid, $spkHomeServiceId]);
if (!$qry_sho) {
$this->db->trans_rollback();
$this->sys_error_db("Error delete spk home service order", $this->db);
exit;
}
$sql_staff = "UPDATE spk_home_service_staff SET
SpkHomeServiceStaffIsActive = 'N',
SpkHomeServiceStaffDeleted = NOW(),
SpkHomeServiceStaffDeletedUserID = ?
WHERE SpkHomeServiceStaffSpkHomeServiceID = ?";
$qry_staff = $this->db->query($sql_staff, [$userid, $spkHomeServiceId]);
if (!$qry_staff) {
$this->db->trans_rollback();
$this->sys_error_db("Error delete spk home service staff", $this->db);
exit;
}
$this->db->trans_commit();
$result = array("total" => 1, "id" => $spkHomeServiceId);
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
}