Files
BE_CPONE/application/controllers/mockup/receivesample/Receivesample.php
2026-04-27 10:31:17 +07:00

270 lines
11 KiB
PHP

<?php
class Receivesample extends MY_Controller
{
var $db;
public function __construct()
{
parent::__construct();
}
public function index()
{
// $cek = $this->db->query("select database() as current_db")->result();
// print_r($cek);
echo "RECEIVE SAMPLE API";
}
public function search()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$date = $prm["date"];
$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_order
JOIN t_orderheader ON SpkHomeServiceOrderT_OrderHeaderID = T_OrderHeaderID
AND T_OrderHeaderIsActive = 'Y'
JOIN spk_home_service ON SpkHomeServiceOrderSpkHomeServiceID = SpkHomeServiceID
AND SpkHomeServiceIsActive = 'Y'
AND SpkHomeServiceStatus = 'R'
AND DATE(SpkHomeServiceDate) = ?
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 (T_OrderHeaderLabNumber LIKE ? OR SpkHomeServiceNumber LIKE ?)
";
$qry_tot = $this->db->query($sql_tot, [
$date,
$search,
$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 order count", $this->db);
exit;
}
$sql = "SELECT SpkHomeServiceOrderID,
SpkHomeServiceOrderSpkHomeServiceID,
SpkHomeServiceOrderT_OrderHeaderID,
SpkHomeServiceOrderBranchCode,
SpkHomeServiceOrderPreregisterOnlineID,
SpkHomeServiceOrderIsActive,
SpkHomeServiceID,
SpkHomeServiceNumber,
DATE_FORMAT(SpkHomeServiceDate, '%d-%m-%Y') as SpkHomeServiceDate,
SpkHomeServiceStatus,
M_PatientID,
M_PatientNoReg,
M_PatientName,
T_OrderHeaderID,
T_OrderHeaderLabNumber,
T_OrderHeaderDate
FROM spk_home_service_order
JOIN t_orderheader ON SpkHomeServiceOrderT_OrderHeaderID = T_OrderHeaderID
AND T_OrderHeaderIsActive = 'Y'
JOIN spk_home_service ON SpkHomeServiceOrderSpkHomeServiceID = SpkHomeServiceID
AND SpkHomeServiceIsActive = 'Y'
AND SpkHomeServiceStatus = 'R'
AND DATE(SpkHomeServiceDate) = ?
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 (T_OrderHeaderLabNumber LIKE ? OR SpkHomeServiceNumber LIKE ?)
LIMIT ? OFFSET ?";
$qry = $this->db->query($sql, [
$date,
$search,
$search,
$number_limit,
$number_offset
]);
if ($qry) {
$rows = $qry->result_array();
} else {
$this->sys_error_db("Error lookup spk home service order", $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 getsample()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderheaderID = $prm["orderheaderID"];
$sql = "SELECT T_OrderSampleID,
T_OrderSampleT_SampleTypeID as sampleTypeID,
T_OrderSampleT_BarcodeLabID as barcodeLabID,
CONCAT(T_SampleTypeName, ' | ', T_OrderSampleBarcode) as typename_barcode,
T_SampleTypeName,
T_OrderSampleBarcode,
T_OrderSampleSampling,
IFNULL(T_OrderSampleSamplingDate,'') as T_OrderSampleSamplingDate,
IFNULL(T_OrderSampleSamplingTime,'') as T_OrderSampleSamplingTime,
T_OrderSampleReceive,
IFNULL(T_OrderSampleReceiveDate,'') as T_OrderSampleReceiveDate,
IFNULL(T_OrderSampleReceiveTime,'') as T_OrderSampleReceiveTime,
IF(ReceiveSampleSampleID IS NULL, 'N', 'Y') AS ischoose
FROM t_ordersample
JOIN t_sampletype ON T_OrderSampleT_SampleTypeID = T_SampleTypeID
JOIN t_barcodelab ON T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
LEFT JOIN receive_sample_sample ON T_OrderSampleID= ReceiveSampleSampleT_OrderSampleID
AND ReceiveSampleSampleIsActive = 'Y'
WHERE T_OrderSampleIsActive = 'Y'
AND T_OrderSampleT_OrderHeaderID = ?";
$qry = $this->db->query($sql, [$orderheaderID]);
if ($qry) {
$rows = $qry->result_array();
} else {
$this->sys_error_db("Error get sampel", $this->db);
exit;
}
$result = array(
"records" => $rows,
"sql" => $this->db->last_query()
);
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function saveConfirm()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$this->db->trans_begin();
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$arrSample = $prm["arrSample"];
$spkHomeServiceID = $prm["spkHomeServiceID"];
$spkHomeServiceOrderID = $prm["spkHomeServiceOrderID"];
$sql_sr = "INSERT INTO receive_sample(
ReceiveSampleDate,
ReceiveSampleSpkHomeServiceID,
ReceiveSampleIsActive,
ReceiveSampleCreated,
ReceiveSampleCreatedUserID
) VALUES (NOW(), ?, 'Y', NOW(), ?)";
$qry_sr = $this->db->query($sql_sr, [$spkHomeServiceID, $userid]);
if (!$qry_sr) {
$this->db->trans_rollback();
$this->sys_error_db("Error insert receive sample", $this->db);
exit;
}
$lastid_sr = $this->db->insert_id();
$sql_rso = "INSERT INTO receive_sample_order(
ReceiveSampleOrderReceiveSampleID,
ReceiveSampleOrderSpkHomeServiceOrderID,
ReceiveSampleOrderIsActive,
ReceiveSampleOrderCreated,
ReceiveSampleOrderCreatedUserID
) VALUES(?, ?, 'Y', NOW(), ?)";
$qry_rso = $this->db->query($sql_rso, [$lastid_sr, $spkHomeServiceOrderID, $userid]);
if (!$qry_rso) {
$this->db->trans_rollback();
$this->sys_error_db("Error insert receive sample order", $this->db);
exit;
}
foreach ($arrSample as $key => $value) {
$sql_sample = "INSERT INTO receive_sample_sample(
ReceiveSampleSampleReceiveSampleID,
ReceiveSampleSampleT_OrderSampleID,
ReceiveSampleSampleIsActive,
ReceiveSampleSampleCreated,
ReceiveSampleSampleCreatedUserID
) VALUES(?, ?, 'Y', NOW(), ?)";
$qry_sample = $this->db->query($sql_sample, [
$lastid_sr,
$value["T_OrderSampleID"],
$userid
]);
if (!$qry_sample) {
$this->db->trans_rollbakc();
$this->sys_error_db("Error insert receive sample sample", $this->db);
exit;
}
$sql = "UPDATE t_ordersample SET
T_OrderSampleReceive = 'Y',
T_OrderSampleReceiveDate = CURDATE(),
T_OrderSampleReceiveTime = CURTIME(),
T_OrderSampleReceiveUserID = ?
WHERE T_OrderSampleID = ?";
$qry = $this->db->query($sql, [
$userid,
$value["T_OrderSampleID"]
]);
if (!$qry) {
$this->db->trans_rollbakc();
$this->sys_error_db("Error update order sample receive", $this->db);
exit;
}
}
$this->db->trans_commit();
$result = array(
"total" => 1,
"records" => ""
);
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
}