Files
2026-04-27 10:26:26 +07:00

218 lines
8.5 KiB
Plaintext

<?php
class Receive_result extends MY_Controller
{
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
$this->db_log = $this->load->database("cpone_log", true);
$this->load->helper(array('form', 'url'));
}
function getInput()
{
$data = file_get_contents("php://input");
$this->sys_input = json_decode($data, true);
}
function index()
{
$this->getInput();
$data = $this->sys_input["data"];
$user_id = 555;
$md5 = $this->sys_input["md5"];
$l_md5 = md5(json_encode($data));
if ($md5 != $l_md5) {
echo json_encode([
"status" => "ERR",
"message" => "Md5 $md5 <> $l_md5",
]);
exit();
}
$order_id = $data["order_id"];
$lab_number = $data["lab_number"];
$results = $data["results"];
if($lab_number == null)
{
echo json_encode([
"status" => "ERR",
"message" => "Lab number tidak ditemukan",
]);
exit;
}else{
$sql = "INSERT INTO log_receive_result(
Log_ReceiveResultT_OrderHeaderID,
Log_ReceiveResultT_OrderHeaderLabNumber,
Log_ReceiveResultData,
Log_ReceiveResultCreated
) VALUES (?, ?, ?, NOW())";
$query = $this->db_log->query($sql, [$order_id, $lab_number, json_encode($results)]);
if (!$query)
{
echo json_encode([
"status" => "ERR",
"message" => "Gagal menyimpan log",
"query" => $this->db_log->last_query()
]);
exit;
}
$log_id = $this->db_log->insert_id();
}
$this->db_onedev->trans_begin();
if(count($results) > 0)
{
$arr_result = [];
foreach($results as $result)
{
$temp_r = $result;
$temp_r['N_OrderDetailID'] = $result['T_OrderDetailT_OrderDetailOldID'];
unset($temp_r['T_OrderDetailT_OrderDetailOldID']);
$temp_r['L_OrderDetailID'] = $result['T_OrderDetailID'];
unset($temp_r['T_OrderDetailID']);
unset($temp_r['T_OrderDetailT_OrderPromiseID']);
unset($temp_r['T_OrderDetailDetailDeleted']);
unset($temp_r['T_OrderDetailDetailDeletedUserID']);
unset($temp_r['T_OrderDetailNat_InstrumentID']);
unset($temp_r['T_OrderDetailT_OrderDetailOrderID']);
$arr_result[] = $temp_r;
}
foreach($arr_result as $result)
{
$sql = "SELECT * FROM result_t_orderdetail WHERE N_OrderDetailID = ?";
$query = $this->db_onedev->query($sql, [$result['N_OrderDetailID']]);
$check_exist = $query->result_array();
if(count($check_exist) > 0)
{
$query = $this->db_onedev->where('N_OrderDetailID', $result['N_OrderDetailID'])->update('result_t_orderdetail', $result);
if(!$query)
{
$this->db_onedev->trans_rollback();
$this->insert_error('Receive_result:updatetemp', $this->db_onedev->last_query(), json_encode($result), "Gagal menyimpan data hasil pemeriksaan");
echo json_encode([
"status" => "ERR",
"message" => "Gagal update data hasil pemeriksaan",
"query" => $this->db_onedev->last_query()
]);
exit;
}
}else{
$query = $this->db_onedev->insert('result_t_orderdetail', $result);
if(!$query)
{
$this->db_onedev->trans_rollback();
$this->insert_error('Receive_result:inserttemp', $this->db_onedev->last_query(), json_encode($result), "Gagal menyimpan data hasil pemeriksaan");
echo json_encode([
"status" => "ERR",
"message" => "Gagal menyimpan data hasil pemeriksaan",
"query" => $this->db_onedev->last_query()
]);
exit;
}
}
$sql = "UPDATE t_orderdetail SET
T_OrderDetailResult = ?,
T_OrderDetailResultFlag = ?,
T_OrderDetailNote = ?,
T_OrderDetailNat_UnitID = ?,
T_OrderDetailNat_UnitName = ?,
T_OrderDetailVerification = ?,
T_OrderDetailVerDate = ?,
T_OrderDetailVerUserID = 555,
T_OrderDetailValidation = ?,
T_OrderDetailValDate = ?,
T_OrderDetailValUserID = 555,
T_OrderDetailLastUpdated = NOW(),
T_OrderDetailNat_NormalValueID = ?,
T_OrderDetailNormalValueNote = ?,
T_OrderDetailNormalValueDescription = ?,
T_OrderDetailMinValue = ?,
T_OrderDetailMaxValue = ?,
T_OrderDetailMinValueInclusive = ?,
T_OrderDetailMaxValueInclusive = ?,
T_OrderDetailNat_MethodeID = ?,
T_OrderdetailNat_MethodeName = ?,
T_OrderDetailFlagResult = ?
WHERE T_OrderDetailID = ?";
$query = $this->db_onedev->query($sql, [
$result['T_OrderDetailResult'],
$result['T_OrderDetailResultFlag'],
$result['T_OrderDetailNote'],
$result['T_OrderDetailNat_UnitID'],
$result['T_OrderDetailNat_UnitName'],
$result['T_OrderDetailVerification'],
$result['T_OrderDetailVerDate'],
$result['T_OrderDetailValidation'],
$result['T_OrderDetailValDate'],
$result['T_OrderDetailNat_NormalValueID'],
$result['T_OrderDetailNormalValueNote'],
$result['T_OrderDetailNormalValueDescription'],
$result['T_OrderDetailMinValue'],
$result['T_OrderDetailMaxValue'],
$result['T_OrderDetailMinValueInclusive'],
$result['T_OrderDetailMaxValueInclusive'],
$result['T_OrderDetailNat_MethodeID'],
$result['T_OrderdetailNat_MethodeName'],
$result['T_OrderDetailFlagResult'],
$result['N_OrderDetailID']
]);
if(!$query)
{
$this->db_onedev->trans_rollback();
$this->insert_error('Receive_result:updateorderdetail', $this->db_onedev->last_query(), json_encode($result), "Gagal update data order detail");
echo json_encode([
"status" => "ERR",
"message" => "Gagal update data order detail ".$result['T_OrderDetailT_TestName']." : ".$result['T_OrderDetailT_TestCode'],
"query" => $this->db_onedev->last_query()
]);
exit;
}
}
}else{
echo json_encode([
"status" => "ERR",
"message" => "Tidak ada data hasil pemeriksaan",
]);
exit;
}
$this->db_onedev->trans_commit();
echo json_encode([
"status" => "OK",
"result" => [
"lab_number" => $lab_number
]
]);
exit;
}
function insert_error($fn,$query,$data,$message)
{
$sql = "INSERT INTO log_error_upload(
Log_ErrorUploadFn,
Log_ErrorUploadQuery,
Log_ErrorUploadData,
Log_ErrorUploadMessage,
Log_ErrorUploadCreated
) VALUES (?,?,?,?,NOW())";
$query = $this->db_log->query($sql, [$fn,$query,$data,$message]);
if(!$query)
{
return false;
}
return true;
}
}