Files
BE_IBL/application/controllers/training/Worklisttest.php
2026-04-15 15:23:57 +07:00

206 lines
7.5 KiB
PHP

<?php
class Worklisttest extends MY_Controller
{
var $db;
function __construct()
{
parent::__construct();
}
function index()
{
echo "API WORKLIST TEST";
}
function lookup()
{
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 = "%%";
}
}
$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(DISTINCT T_WorklistID,
T_WorklistName,
T_TestID,
T_TestSasCode,
test_parent,
T_TestName) as total
FROM (SELECT T_TestName as test_parent, T_TestSasCode as sascode
FROM nat_test
JOIN t_test ON T_TestNat_TestID = Nat_TestID AND T_TestIsActive = 'Y'
WHERE
Nat_TestIsActive = 'Y' AND
Nat_TestIsPrice = 'Y' AND
Nat_TestNat_TestTypeID = 4) a
JOIN t_test ON T_TestSasCode like concat(sascode,'%') AND T_TestIsActive = 'Y' AND T_TestIsResult = 'Y'
JOIN t_worklistdetailv2 ON T_WorklistDetailNat_TestID = T_TestNat_TestID AND T_WorklistDetailIsActive = 'Y'
JOIN t_worklist ON T_WorklistID = T_WorklistDetailT_WorklistID AND T_WorklistIsActive = 'Y' AND T_WorklistIsRujukan = 'Y'
LEFT JOIN t_price_rujukan ON T_TestID = T_PriceRujukanT_TestID AND T_PriceRujukanIsActive = 'Y'
WHERE T_WorklistName like ? OR test_parent like ? OR T_TestName like ?";
$qry_filter = $this->db->query($sql_filter, [$search, $search, $search]);
// $last_qry = $this->db->last_query();
// print_r($last_qry);
$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("worklist select count", $this->db);
exit;
}
$sql = "SELECT
T_WorklistID as worklistId,
T_WorklistName,
T_TestID as testId,
T_TestSasCode,
test_parent,
T_TestName,
T_PriceRujukanAmount as amount
FROM (SELECT T_TestName as test_parent, T_TestSasCode as sascode
FROM nat_test
JOIN t_test ON T_TestNat_TestID = Nat_TestID AND T_TestIsActive = 'Y'
WHERE
Nat_TestIsActive = 'Y' AND
Nat_TestIsPrice = 'Y' AND
Nat_TestNat_TestTypeID = 4) a
JOIN t_test ON T_TestSasCode like concat(sascode,'%') AND T_TestIsActive = 'Y' AND T_TestIsResult = 'Y'
JOIN t_worklistdetailv2 ON T_WorklistDetailNat_TestID = T_TestNat_TestID AND T_WorklistDetailIsActive = 'Y'
JOIN t_worklist ON T_WorklistID = T_WorklistDetailT_WorklistID AND T_WorklistIsActive = 'Y' AND T_WorklistIsRujukan = 'Y'
LEFT JOIN t_price_rujukan ON T_TestID = T_PriceRujukanT_TestID AND T_PriceRujukanIsActive = 'Y'
WHERE T_WorklistName like ? OR test_parent like ? OR T_TestName like ? $q_sort
limit ? offset ?";
$qry = $this->db->query($sql, [$search, $search, $search, $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("worklist select", $this->db);
exit;
}
$result = array(
"total" => $tot_page,
"total_filter" => count($rows),
"records" => $rows
);
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function saveeditamount()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$this->db->trans_begin();
$prm = $this->sys_input;
$userid = $this->sys_user['M_UserID'];
$testid = $prm["testid"];
$worklistid = $prm["worklistid"];
$amount = 0;
if (isset($prm['amount'])) {
$amount = trim($prm["amount"]);
}
// cari test id
$sql_search = "SELECT T_PriceRujukanID as priceId, T_PriceRujukanT_TestID as testId
FROM t_price_rujukan
WHERE T_PriceRujukanIsActive = 'Y'
AND T_PriceRujukanT_TestID = ?";
$qry_search = $this->db->query($sql_search, array($testid));
if($qry_search){
$rows = $qry_search->result_array();
}else{
$this->sys_error_db("price rujukan select error", $this->db);
exit;
}
if (count($rows) > 0) {
// sudah ada
// print_r($rows);
$testidarray = $rows[0]["testId"];
$sql_update = "UPDATE t_price_rujukan SET
T_PriceRujukanAmount = ?,
T_PriceRujukanUserID = ?,
T_PriceRujukanCreated = NOW(),
T_PriceRujukanLastUpdated = NOW()
WHERE T_PriceRujukanT_TestID = ?";
$qry_update = $this->db->query($sql_update, array($amount, $userid, $testidarray));
if(!$qry_update) {
$this->sys_error_db("price rujukan update", $this->db);
exit;
}
} else {
// belum ada
$sql = "INSERT INTO t_price_rujukan(
T_PriceRujukanT_TestID,
T_PriceRujukanT_WorklistID,
T_PriceRujukanAmount,
T_PriceRujukanUserID,
T_PriceRujukanCreated,
T_PriceRujukanLastUpdated) VALUES(?, ?, ?, ?, NOW(), NOW())";
$qry = $this->db->query($sql, [
$testid,
$worklistid,
$amount,
$userid
]);
if(!$qry) {
$this->db->trans_rollback();
$this->sys_error_db("price rujukan insert", $this->db);
exit;
}
}
$this->db->trans_commit();
$result = array(
"total" => 1,
"inserted_id" => $this->db->insert_id()
);
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
}
?>