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

421 lines
14 KiB
PHP

<?php
class Sindhu extends MY_Controller
{
function __construct()
{
parent::__construct();
}
function index()
{
echo "Api: Training Playground";
}
function control_byname()
{
$param = $this->sys_input;
// $page = 0;
$page = $param['page'];
// check input parameter
// mandatory
$control = trim($param['control']);
$control = "%" . $control . "%";
// tidak mandatory
$instrument = "";
if (isset($param['instrument'])) {
$instrument = trim($param["instrument"]);
if ($instrument != "") {
$instrument = '%' . $param['instrument'] . '%';
}
}
$test = "";
if (isset($param['test'])) {
$test = trim($param["test"]);
if ($test != "") {
$test = '%' . $param['test'] . '%';
}
}
// hitung start_offset
$ROW_PER_PAGE = 10;
$start_offset = 0;
if (isset($param["page"])) {
if (is_numeric($param["page"]) && $param['page'] > 0) {
$start_offset = ($page - 1) * $ROW_PER_PAGE;
}
}
// query
if($instrument == "" && $test == ""){
$sql = "select
distinct Nat_QcControlID,
Nat_QcControlName,
Nat_QcControlLotNumber,
Nat_QcControlExpired,
Nat_QcLevelID,
Nat_QcLevelName
from nat_qc_control
join nat_qc_level
ON Nat_QcControlNat_QcLevelID = Nat_QcLevelID
AND Nat_QcControlIsActive = 'Y'
AND Nat_QcLevelIsActive = 'Y'
AND Nat_QcControlName like ?
limit 10 offset ?";
$qry = $this->db->query($sql, [$control, $start_offset]);
$last_query = $this->db->last_query();
$sql_total_filter = "select
count(distinct Nat_QcControlID,
Nat_QcControlName,
Nat_QcControlLotNumber,
Nat_QcControlExpired,
Nat_QcLevelID,
Nat_QcLevelName) as total_filter
from nat_qc_control
join nat_qc_level
ON Nat_QcControlNat_QcLevelID = Nat_QcLevelID
AND Nat_QcControlIsActive = 'Y'
AND Nat_QcLevelIsActive = 'Y'
AND Nat_QcControlName like ?";
$qry_total_filter = $this->db->query($sql_total_filter, [$control]);
$last_query_total_filter = $this->db->last_query();
} else if($instrument !== "" && $test == ""){
// instrument terisi dan tes kosong
$sql = "select
distinct Nat_QcControlID,
Nat_QcControlName,
Nat_QcControlLotNumber,
Nat_QcControlExpired,
Nat_QcLevelID,
Nat_QcLevelName
from nat_qc_control
join nat_qc_level
ON Nat_QcControlNat_QcLevelID = Nat_QcLevelID
AND Nat_QcControlIsActive = 'Y'
AND Nat_QcLevelIsActive = 'Y'
AND Nat_QcControlName like ?
join nat_qc
ON Nat_QcControlID = Nat_QcNat_QcControlID
AND Nat_QcIsActive = 'Y'
join nat_instrument
ON Nat_QcNat_InstrumentID = Nat_InstrumentID
AND Nat_InstrumentIsActive = 'Y'
AND Nat_InstrumentName like ?
limit 10 offset ?";
$qry = $this->db->query($sql, [$control, $instrument, $start_offset]);
$last_query = $this->db->last_query();
$sql_total_filter = "select
count(distinct Nat_QcControlID,
Nat_QcControlName,
Nat_QcControlLotNumber,
Nat_QcControlExpired,
Nat_QcLevelID,
Nat_QcLevelName) as total_filter
from nat_qc_control
join nat_qc_level
ON Nat_QcControlNat_QcLevelID = Nat_QcLevelID
AND Nat_QcControlIsActive = 'Y'
AND Nat_QcLevelIsActive = 'Y'
AND Nat_QcControlName like ?
join nat_qc
ON Nat_QcControlID = Nat_QcNat_QcControlID
AND Nat_QcIsActive = 'Y'
join nat_instrument
ON Nat_QcNat_InstrumentID = Nat_InstrumentID
AND Nat_InstrumentIsActive = 'Y'
AND Nat_InstrumentName like ?";
$qry_total_filter = $this->db->query($sql_total_filter, [$control, $instrument]);
$last_query_total_filter = $this->db->last_query();
} else if($instrument == "" && $test !== ""){
// instrument kosong dan tes terisi
$sql = "select
distinct Nat_QcControlID,
Nat_QcControlName,
Nat_QcControlLotNumber,
Nat_QcControlExpired,
Nat_QcLevelID,
Nat_QcLevelName
from nat_qc_control
join nat_qc_level
ON Nat_QcControlNat_QcLevelID = Nat_QcLevelID
AND Nat_QcControlIsActive = 'Y'
AND Nat_QcLevelIsActive = 'Y'
AND Nat_QcControlName like ?
join nat_qc
ON Nat_QcControlID = Nat_QcNat_QcControlID
AND Nat_QcIsActive = 'Y'
join nat_test
ON Nat_QcNat_TestID = Nat_TestID
AND Nat_TestIsActive = 'Y'
AND Nat_TestName like ?
limit 10 offset ?";
$qry = $this->db->query($sql, [$control, $test, $start_offset]);
$last_query = $this->db->last_query();
$sql_total_filter = "select
count(distinct Nat_QcControlID,
Nat_QcControlName,
Nat_QcControlLotNumber,
Nat_QcControlExpired,
Nat_QcLevelID,
Nat_QcLevelName) as total_filter
from nat_qc_control
join nat_qc_level
ON Nat_QcControlNat_QcLevelID = Nat_QcLevelID
AND Nat_QcControlIsActive = 'Y'
AND Nat_QcLevelIsActive = 'Y'
AND Nat_QcControlName like ?
join nat_qc
ON Nat_QcControlID = Nat_QcNat_QcControlID
AND Nat_QcIsActive = 'Y'
join nat_test
ON Nat_QcNat_TestID = Nat_TestID
AND Nat_TestIsActive = 'Y'
AND Nat_TestName like ?";
$qry_total_filter = $this->db->query($sql_total_filter, [$control, $test]);
$last_query_total_filter = $this->db->last_query();
} else{
// instrument dan test terisi
$sql = "select
distinct Nat_QcControlID,
Nat_QcControlName,
Nat_QcControlLotNumber,
Nat_QcControlExpired,
Nat_QcLevelID,
Nat_QcLevelName
from nat_qc_control
join nat_qc_level
ON Nat_QcControlNat_QcLevelID = Nat_QcLevelID
AND Nat_QcControlIsActive = 'Y'
AND Nat_QcLevelIsActive = 'Y'
AND Nat_QcControlName like ?
join nat_qc
ON Nat_QcControlID = Nat_QcNat_QcControlID
AND Nat_QcIsActive = 'Y'
join nat_instrument
ON Nat_QcNat_InstrumentID = Nat_InstrumentID
AND Nat_InstrumentIsActive = 'Y'
AND Nat_InstrumentName like ?
join nat_test
ON Nat_QcNat_TestID = Nat_TestID
AND Nat_TestIsActive = 'Y'
AND Nat_TestName like ?
limit 10 offset ?";
$qry = $this->db->query($sql, [$control, $instrument, $test, $start_offset]);
$last_query = $this->db->last_query();
$sql_total_filter = "select
count(distinct Nat_QcControlID,
Nat_QcControlName,
Nat_QcControlLotNumber,
Nat_QcControlExpired,
Nat_QcLevelID,
Nat_QcLevelName) as total_filter
from nat_qc_control
join nat_qc_level
ON Nat_QcControlNat_QcLevelID = Nat_QcLevelID
AND Nat_QcControlIsActive = 'Y'
AND Nat_QcLevelIsActive = 'Y'
AND Nat_QcControlName like ?
join nat_qc
ON Nat_QcControlID = Nat_QcNat_QcControlID
AND Nat_QcIsActive = 'Y'
join nat_instrument
ON Nat_QcNat_InstrumentID = Nat_InstrumentID
AND Nat_InstrumentIsActive = 'Y'
AND Nat_InstrumentName like ?
join nat_test
ON Nat_QcNat_TestID = Nat_TestID
AND Nat_TestIsActive = 'Y'
AND Nat_TestName like ?";
$qry_total_filter = $this->db->query($sql_total_filter, [$control, $instrument, $test]);
$last_query_total_filter = $this->db->last_query();
}
if (!$qry) {
echo json_encode([
"status" => "ERR",
"message" => $this->db->error()["message"],
"sql" => $last_query
]);
exit;
}
if (!$qry_total_filter) {
echo json_encode([
"status" => "ERR",
"message" => $this->db->error()["message"],
"sql" => $last_query_total_filter
]);
exit;
}
$rows = $qry->result_array();
$rows_total_filter = $qry_total_filter->result_array();
$total = ceil($rows_total_filter[0]["total_filter"] / $ROW_PER_PAGE);
echo json_encode([
"status" => "OK",
// "rows" => $rows,
"records" => $rows,
"total_filter" => $rows_total_filter[0]["total_filter"],
"total" => $total,
"sql" => $this->db->last_query()
]);
}
function control_byid()
{
$param = $this->sys_input;
$page = $param['page'];
// check input parameter
// mandatory
$id = 0;
if (isset($param['id'])) {
if(is_numeric($param['id'])){
$id = $param['id'];
}
}
// hitung start_offset
$ROW_PER_PAGE = 10;
$start_offset = 0;
if (isset($param["page"])) {
if (is_numeric($param["page"]) && $param['page'] > 0) {
$start_offset = ($page - 1) * $ROW_PER_PAGE;
}
}
$sql = "select
distinct Nat_QcControlID,
Nat_QcControlName,
Nat_QcControlLotNumber,
Nat_QcControlExpired,
Nat_QcLevelID,
Nat_QcLevelName,
Nat_InstrumentID,
Nat_InstrumentName,
Nat_TestID,
Nat_TestName
from nat_qc_control
join nat_qc_level
ON Nat_QcControlNat_QcLevelID = Nat_QcLevelID
AND Nat_QcControlIsActive = 'Y'
AND Nat_QcLevelIsActive = 'Y'
join nat_qc
ON Nat_QcControlID = Nat_QcNat_QcControlID
AND Nat_QcIsActive = 'Y'
join nat_instrument
ON Nat_QcNat_InstrumentID = Nat_InstrumentID
AND Nat_InstrumentIsActive = 'Y'
AND Nat_InstrumentID = ?
join nat_test
ON Nat_QcNat_TestID = Nat_TestID
AND Nat_TestIsActive = 'Y'
limit 10 offset ?";
$qry = $this->db->query($sql, [$id, $start_offset]);
$last_query = $this->db->last_query();
$sql_total_filter = "select
count(distinct Nat_QcControlID,
Nat_QcControlName,
Nat_QcControlLotNumber,
Nat_QcControlExpired,
Nat_QcLevelID,
Nat_QcLevelName,
Nat_InstrumentID,
Nat_InstrumentName,
Nat_TestID,
Nat_TestName) as total_filter
from nat_qc_control
join nat_qc_level
ON Nat_QcControlNat_QcLevelID = Nat_QcLevelID
AND Nat_QcControlIsActive = 'Y'
AND Nat_QcLevelIsActive = 'Y'
join nat_qc
ON Nat_QcControlID = Nat_QcNat_QcControlID
AND Nat_QcIsActive = 'Y'
join nat_instrument
ON Nat_QcNat_InstrumentID = Nat_InstrumentID
AND Nat_InstrumentIsActive = 'Y'
AND Nat_InstrumentID = ?
join nat_test
ON Nat_QcNat_TestID = Nat_TestID
AND Nat_TestIsActive = 'Y'";
$qry_total_filter = $this->db->query($sql_total_filter, [$id]);
$last_query_total_filter = $this->db->last_query();
if (!$qry) {
echo json_encode([
"status" => "ERR",
"message" => $this->db->error()["message"],
"sql" => $last_query
]);
exit;
}
if (!$qry_total_filter) {
echo json_encode([
"status" => "ERR",
"message" => $this->db->error()["message"],
"sql" => $last_query_total_filter
]);
exit;
}
$rows = $qry->result_array();
$rows_total_filter = $qry_total_filter->result_array();
$total = ceil($rows_total_filter[0]["total_filter"] / $ROW_PER_PAGE);
echo json_encode([
"status" => "OK",
// "rows" => $rows,
"records" => $rows,
"total_filter" => $rows_total_filter[0]["total_filter"],
"total" => $total,
"sql" => $this->db->last_query()
]);
}
function post_coba_birt_request()
{
file_put_contents("/xtmp/sindhulog",print_r($_POST,true)."\n",FILE_APPEND);
file_put_contents("/xtmp/sindhulog",print_r($_GET,true)."\n",FILE_APPEND);
file_put_contents("/xtmp/sindhulog",print_r($_REQUEST,true)."\n",FILE_APPEND);
// $orderID = $_SERVER['HTTP_ORDERID'];
// $orderID = $_REQUEST['orderID'];
$orderID = isset($_REQUEST['orderID']) ? $_REQUEST['orderID'] : 'Order ID not available';
$sql = "select
T_OrderHeaderID
from t_orderheader
WHERE T_OrderHeaderID = ?
limit 0, 1";
$qry = $this->db->query($sql, [$orderID]);
$data = $qry->result_array();
if(!$qry){
echo json_encode([
"status" => "ERR",
"message" => $this->db->error()["message"],
]);
exit;
}
echo json_encode($data);
}
}
?>