db_onedev = $this->load->database("onedev", true); $this->db_log = $this->load->database("log", true); $this->load->helper(array('form', 'url')); } public function error_log($data,$userid=999) { $sql = "INSERT INTO ais_error_log ( AisErrorLogFnName, AisErrorLogMessage, AisErrorLogQuery, AisErrorLogJson, AisErrorLogUserID, AisErrorLogCreated ) VALUES( ?, ?, ?, ?, ?, NOW() )"; $qry = $this->db_log->query($sql, array($data['fn_name'],$data['message'],$data['query'],$data['json'],$userid)); //echo $this->db_log->last_query(); return true; } /** * Generic POST request function * @param string $url API endpoint URL * @param array $data Request payload * @param array $headers Custom headers (optional) * @return array Response from API */ public function post_request($url, $data = array(), $headers = array()) { // Default headers $default_headers = array( 'Content-Type: application/json' ); // Merge custom headers with default headers $final_headers = array_merge($default_headers, $headers); // Initialize cURL $ch = curl_init(); // Set cURL options curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, $final_headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Execute cURL request $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error = curl_error($ch); // Close cURL curl_close($ch); // Prepare result $result = array( 'success' => false, 'http_code' => $http_code, 'response' => null, 'error' => null ); if ($error) { $result['error'] = $error; } else { $result = json_decode($response, true); $result['success'] = true; } return $result; } public function get_request($url, $headers = array()) { // Retrieve configuration $config = $this->get_config(); $token = $config['AisConfigAuthToken'] ?? 'default-token'; $header_token = $config['AisConfigHeaderToken']; // Default headers based on the curl command $default_headers = array( 'Header-Token: ' . $header_token, 'Authorization: Bearer ' . $token ); // Merge custom headers with default headers $final_headers = array_merge($default_headers, $headers); // Initialize cURL $ch = curl_init(); // Set cURL options curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPGET, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $final_headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Execute cURL request $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error = curl_error($ch); // Close cURL curl_close($ch); // Prepare result $result = array( 'success' => false, 'http_code' => $http_code, 'response' => null, 'error' => null ); if ($error) { $result['error'] = $error; } else { $decoded = json_decode($response, true); $result['response'] = $decoded; // Check if response is successful based on http code if ($http_code === 200) { $result['success'] = true; } } return $result; } function get_config() { $sql = "SELECT * FROM ais_config LIMIT 1"; $qry = $this->db_onedev->query($sql); $dt_config = $qry->row_array(); return $dt_config; } /** * POST request to auth API * @param string $username Username for authentication * @param string $password Password for authentication * @return array Response from API */ public function post_auth() { $dt_config = $this->get_config(); $baseUrl = $dt_config['AisConfigBaseUrl']; $url = $baseUrl.'/api/auth/auth.php'; $headers = array( 'Header-Token: '.$dt_config['AisConfigHeaderToken'] ); $username = $dt_config['AisConfigUsername']; $password = $dt_config['AisConfigPassword']; $data = array( 'username' => $username, 'password' => $password ); $result = $this->post_request($url, $data, $headers); $sql = "INSERT INTO ais_login_log( AisLoginLogUsername, AisLoginLogPassword, AisLoginLogHeaderToken, AisLoginLogResult, AisLoginLogCreated ) VALUES( ?, ?, ?, ?, NOW() )"; $qry = $this->db_log->query($sql, array($username,$password,$dt_config['AisConfigHeaderToken'],json_encode($result))); if(!$qry){ $this->error_log(array('fn_name'=>'post_auth','message'=>'ais_login_log insert','query'=>$sql,'json'=>json_encode($result)),999); exit; } //print_r($result); //exit; // Check if success if(!$result['success']){ $this->error_log(array('fn_name'=>'post_auth','message'=>'failed auth','query'=>'','json'=>json_encode($result)),999); $errors = array('status' => 'error','message' => 'Gagal Login'); return $errors; }else{ // Update token $token = $result['data']['token'];; $sql = "UPDATE ais_config SET AisConfigAuthToken = ? WHERE AisConfigID = 1"; $qry = $this->db_onedev->query($sql, array($token)); //echo $this->db_onedev->last_query(); //exit; if(!$qry){ $this->error_log(array('fn_name'=>'post_auth','message'=>'ais_config update','query'=>$sql,'json'=>''),999); $errors = array('status' => 'error','message' => 'Gagal Update Token'); return $errors; } return $result; } } function post_transaction($labnum='',$xdate=null) { // Auth Login $login = $this->post_auth(); if (!$login['success']) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 555); $errors = array('status' => 'error', 'message' => 'Gagal Login'); echo json_encode($errors); exit; } // Get config $dt_config = $this->get_config(); $baseUrl = $dt_config['AisConfigBaseUrl']; $url = $baseUrl . '/api/transaction_full/transaksi.php'; $headers = array( 'Header-Token: ' . $dt_config['AisConfigHeaderToken'], 'Authorization: Bearer ' . $dt_config['AisConfigAuthToken'] ); if($labnum == ''){ $xdate = $xdate == null ? date('Y-m-d') : $xdate; } // Get data $sql = "SELECT T_OrderHeaderID, T_OrderHeaderTotal as Total, T_OrderHeaderLabNumber as RegID, Mgm_McuM_BranchID as mgm_mcu_m_branch_id, M_PatientNoReg as MEDRECID, T_OrderHeaderDate as Tanggal, T_OrderHeaderDate as PulangTanggal, IF(Mgm_McuM_BranchID = 100,'',CorporateCode) as PerusahaanID, IF(Mgm_McuM_BranchID = 100,'',CorporateCode) as AsuransiID, T_PriceHeaderCode as GroupTarifID, M_PatientName as Nama, M_PatientIdentifierValue as NIK, DATE_FORMAT(M_PatientDOB, '%Y-%m-%d %H:%i:%s') as TglLahir, IF(M_PatientGender = 'male','L','P') as JnsKelamin, '' as NomorPolis, '' as NomerJaminan, '2' as JenisRegID, IF(Mgm_McuM_BranchID = 100,0,1) as JenisPasienID, 'LAB-WESTERINDO-01' as DepartemenID, 'Y' as Pulang, 'Y' as BolehPulang, '' as Catatan, 'Y' as Verified, 'LABKLINIK' as KelasID, M_UserEmail as LoginBuat, T_OrderHeaderCreated as TanggalBuat, branch_order.M_BranchAis_branch_code as BranchCode, CorporateTypeais_pillar_code as PillarCode, '4569' as SiteCenterCode, M_UserEmail as VerifiedBy, T_OrderHeaderCreated as VerifiedDate, '' as TrxLayanan, '' as TrxItem, '' as TrxItemReturn, '' as RegpasNominal, '' as Trxtt, '' as TrxBayar, '' as TrxLain, '' as PaketDispenser FROM t_orderheader JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID JOIN corporate ON CorporateID = T_OrderHeaderCorporateID JOIN corporate_type ON CorporateTypeID = CorporateTypeID JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID -- AND Mgm_McuID = 1566 JOIN t_priceheader ON Mgm_McuT_PriceHeaderID = T_PriceHeaderID JOIN m_user ON T_OrderHeaderCreatedUserID = M_UserID LEFT JOIN cpone_log.ais_transaction ON Ais_TransactionOrderHeaderLabNumber = T_OrderHeaderLabNumber AND Ais_TransactionStatus = 'success' WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderLabNumber = ? AND Ais_TransactionID IS NULL GROUP BY T_OrderHeaderID LIMIT 100"; $qry = $this->db_onedev->query($sql, array($labnum)); //echo $this->db_onedev->last_query(); //exit; if (!$qry) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderheader select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999); exit; } $raw_data = $qry->result_array(); $data = array(); foreach ($raw_data as $key => $row) { $row['TrxLayanan'] = []; $row['TrxItem'] = []; $row['TrxItemReturn'] = []; $row['RegpasNominal'] = []; $row['Trxtt'] = null; $row['TrxBayar'] = []; $row['TrxLain'] = null; $row['PaketDispenser'] = null; $layanan = []; $sql = "SELECT * FROM ( SELECT T_OrderDetailID as TrxLayananID, case when Nat_GroupID = 1 then '1100' when Nat_GroupID = 2 then '1200' when Nat_GroupID = 3 then '1200' when Nat_GroupID = 4 then '1303' end as ProfitCostCenterCode, '' as TrxDepartemenID, T_OrderDetailCreated as TanggalBuat, T_OrderDetailT_TestSasCode as LayananID, T_OrderDetailT_TestName as LayananName, doctorlab.M_DoctorCode as DokterID, 0 as ShareRS, 0 as ShareDokter, 0 as ShareExternal, 0 as ShareLain2, '' as PihakExternal, '' as PihakLain2, 'Percentage' as ShareTipe, T_OrderDetailPrice as Harga, 1 as Jumlah, 1 as Rate, 'N' as FOC, T_OrderDetailDiscTotal as Diskon, 'Absolute' as TipeDiskon, '' as DepartemenID, IF(Mgm_McuM_BranchID = 100,T_OrderDetailTotal,0) as DitanggungPasien, IF(Mgm_McuM_BranchID = 100,0,T_OrderDetailTotal) as DitanggungPenjamin, 0 as MarkUpCito, 'N' as Cito, T_PacketSasCode as PaketID, 'LABKLINIK' as KelasID, '' as TrxLayananDetail, 'Y' as Tagihkan FROM t_orderdetail JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND T_TestIsActive = 'Y' JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y' JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' JOIN t_orderdetailorder ON T_OrderDetailT_OrderDetailOrderID = T_OrderDetailOrderID AND T_OrderDetailOrderIsPacket = 'Y' AND T_OrderDetailOrderIsActive = 'Y' JOIN t_packet ON T_OrderDetailOrderT_PacketID = T_PacketID JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_PacketID AND T_PacketDetailT_TestID = T_OrderDetailT_TestID AND T_PacketDetailIsActive = 'Y' JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID JOIN m_doctor doctorlab ON T_OrderHeaderPjM_DoctorID = M_DoctorID LEFT JOIN f_payment ON T_OrderHeaderID = F_PaymentT_OrderHeaderID AND F_PaymentIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y' UNION SELECT T_OrderDetailID as TrxLayananID, Nat_GroupID as ProfitCostCenterCode, '' as TrxDepartemenID, T_OrderDetailCreated as TanggalBuat, T_OrderDetailT_TestSasCode as LayananID, T_OrderDetailT_TestName as LayananName, doctorlab.M_DoctorCode as DokterID, 0 as ShareRS, 0 as ShareDokter, 0 as ShareExternal, 0 as ShareLain2, '' as PihakExternal, '' as PihakLain2, 'Percentage' as ShareTipe, T_OrderDetailPrice as Harga, 1 as Jumlah, 1 as Rate, 'N' as FOC, T_OrderDetailDiscTotal as Diskon, 'Absolute' as TipeDiskon, '' as DepartemenID, IF(Mgm_McuM_BranchID = 100,T_OrderDetailTotal,0) as DitanggungPasien, IF(Mgm_McuM_BranchID = 100,0,T_OrderDetailTotal) as DitanggungPenjamin, 0 as MarkUpCito, 'N' as Cito, '' as PaketID, 'LABKLINIK' as KelasID, NULL as TrxLayananDetail, 'Y' as Tagihkan FROM `t_orderdetailorder` JOIN t_orderdetail ON T_OrderdetailT_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_OrderDetailOrderID = T_OrderDetailOrderID JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND T_TestIsActive = 'Y' JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y' JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID JOIN m_doctor doctorlab ON T_OrderHeaderPjM_DoctorID = M_DoctorID LEFT JOIN f_payment ON T_OrderHeaderID = F_PaymentT_OrderHeaderID AND F_PaymentIsActive = 'Y' WHERE `T_OrderDetailOrderT_OrderHeaderID` = ? AND `T_OrderDetailOrderIsPacket` = 'N' AND T_OrderDetailOrderIsActive = 'Y' ) AS t_orderdetailorder"; $qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID'],$row['T_OrderHeaderID'])); if (!$qry) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999); exit; } $total_layanan_debug = 0; $layanan = $qry->result_array(); $raw_data[$key]['TrxLayanan'] = []; if(count($layanan) > 0){ foreach($layanan as $key_layanan => $row_layanan){ $total_layanan_debug += $row_layanan['Harga']; $layanan[$key_layanan]['TrxLayananDetail'] = []; $sql = "SELECT M_DoctorCode, M_DoctorID FROM `so_resultentry` JOIN t_orderdetail ON ? = So_ResultEntryT_OrderDetailID AND T_OrderDetailIsActive = 'Y' JOIN m_doctor ON M_DoctorID = So_ResultEntryM_DoctorID AND M_DoctorIsActive = 'Y' WHERE `So_ResultEntryT_OrderHeaderID` = ? AND `So_ResultEntryIsActive` = 'Y' AND `So_ResultEntryM_DoctorID` > '0' LIMIT 1 "; $qry = $this->db_onedev->query($sql, array($row_layanan['TrxLayananID'],$row['T_OrderHeaderID'])); if (!$qry) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 'so_resultentry select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999); exit; } $get_resultentry = $qry->result_array(); if (count($get_resultentry) > 0) { $row_layanan['DokterID'] = $get_resultentry[0]['M_DoctorCode']; } $raw_data[$key]['TrxLayanan'][] = $row_layanan; } } $regpasnominal = []; $jumlah_layanan_lab = 0; $sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_lab FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y' JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND Nat_GroupID = 1 WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y' "; $qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID'])); //echo $this->db_onedev->last_query(); //exit; if (!$qry) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail lab select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999); exit; } $get_layanan_lab = $qry->row_array(); $jumlah_layanan_lab = $get_layanan_lab['total_layanan_lab']; $jumlah_layanan_radiologi = 0; $sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_radiologi FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y' JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND Nat_GroupID = 3 WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y' "; $qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID'])); if (!$qry) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail radiologi select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999); exit; } $get_layanan_radiologi = $qry->row_array(); $jumlah_layanan_radiologi = $get_layanan_radiologi['total_layanan_radiologi']; $jumlah_layanan_lain = 0; $sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_lain FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y' JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND Nat_GroupID IN (2,4) WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y' "; $qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID'])); if (!$qry) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail lain select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999); exit; } $get_layanan_lain = $qry->row_array(); $jumlah_layanan_lain = $get_layanan_lain['total_layanan_lain']; $total_layanan = 0; $sql = "SELECT SUM(T_OrderDetailTotal) as total_layanan, Mgm_McuM_BranchID as BranchID FROM t_orderdetail JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y' "; $qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID'])); if (!$qry) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail total layanan select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999); exit; } $total_layanan = $qry->row_array(); $total_layanan = $total_layanan['total_layanan']; $total_bayar = 0; $sql = "SELECT F_PaymentTotal as total FROM f_payment WHERE F_PaymentT_OrderHeaderID = ? AND F_PaymentIsActive = 'Y' "; $qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID'])); if (!$qry) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 'f_payment select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999); exit; } $get_total_bayar = $qry->result_array(); if (count($get_total_bayar) > 0) { foreach($get_total_bayar as $key_total_bayar => $row_total_bayar){ $total_bayar += $row_total_bayar['total']; } } $mgm_mcu_m_branch_id = $row['mgm_mcu_m_branch_id']; $total_ditanggung_pasien = $mgm_mcu_m_branch_id == 100 ? $total_layanan : 0; $total_ditanggung_penjamin = $mgm_mcu_m_branch_id == 100 ? 0 : $total_layanan; $regpasnominal = array( "BiayaParamedik" => "0.00", "ParamedikDitanggungPasien" => "0.00", "ParamedikDitanggungPenjamin" => "0.00", "BiayaAdministrasi" => "0", "AdmDitanggungPasien" => "0.00", "AdmDitanggungPenjamin" => "0.00", "BiayaMaterai" => "0.00", "BiayaMateraiDitanggungPasien" => "0.00", "BiayaMateraiDitanggungPenjamin" => "0.00", "JumlahLayanan" => $jumlah_layanan_lain, "JumlahLayananRadiologi" => $jumlah_layanan_radiologi, "JumlahLayananLaboratorium" => $jumlah_layanan_lab, "JumlahItem" => 0, "JumlahItemRetur" => 0, "JumlahTT" => "0.00", "JumlahBiayaLain" => "0.00", "JumlahBayar" => $total_bayar, "TipeDiskonGlobal" => "Absolute", "DiskonGlobal" => "0.00", "TotalDitanggungPasien" => $total_ditanggung_pasien, "TotalDitanggungPenjamin" => $total_ditanggung_penjamin ); $raw_data[$key]['RegpasNominal'] = array( $regpasnominal ); //echo $total_bayar; $raw_data[$key]['TrxBayar'] = null; if($total_bayar > 0){ $sql = "SELECT M_PatientNoReg as MEDRECID, F_PaymentDetailID as BayarID, IFNULL(F_PaymentDetailAmount,0) as Jumlah, F_PaymentDetailCreated as Tanggal, 'Pelunasan' as JenisBayarID, CONCAT(F_PaymentNumber,'.',F_PaymentDetailID) as KwitansiID, CONCAT(F_PaymentDetailM_PaymentTypeID,F_PaymentDetailM_BankAccountID) as TipeBayarID, 'N' as Dibatalkan FROM f_paymentdetail JOIN f_payment ON F_PaymentDetailF_PaymentID = F_PaymentID AND F_PaymentIsActive = 'Y' JOIN t_orderheader ON F_PaymentT_OrderHeaderID = T_OrderHeaderID JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' WHERE F_PaymentT_OrderHeaderID = ? AND F_PaymentDetailIsActive = 'Y' GROUP BY F_PaymentDetailID"; $qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID'])); if (!$qry) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 'f_payment select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999); exit; } //echo $this->db_onedev->last_query(); //exit; $bayar = $qry->result_array(); $raw_data[$key]['TrxBayar'] = $bayar; } $raw_data[$key]['Trxtt'] = null; $raw_data[$key]['TrxLain'] = null; $raw_data[$key]['PaketDispenser'] = null; $errors = []; //echo json_encode($raw_data[$key]); //exit; $result = $this->post_request($url, $raw_data[$key], $headers); if ($result['status'] == '400') { $sql = "INSERT INTO ais_transaction( Ais_TransactionOrderHeaderLabNumber, Ais_TransactionJson, Ais_TransactionStatus, Ais_TransactionResponse, Ais_TransactionUrl, Ais_TransactionUserID, Ais_TransactionCreated ) VALUES( ?, ?, ?, ?, ?, ?, NOW() )"; $qry = $this->db_log->query($sql, array( $row['RegID'], json_encode($raw_data[$key]), 'error', json_encode($result), $url, 555 )); if (!$qry) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 'ais_transaction insert', 'query' => $this->db_log->last_query(), 'json' => json_encode($result)), 999); exit; } $this->error_log(array('fn_name' => 'post_transaction', 'message' => 'transaction insert', 'query' => $this->db_onedev->last_query(), 'json' => json_encode($result)), 999); $errors[] = array('RegID' => $row['RegID'], 'error' => $result['message']); }else{ //echo 'insert ais_transaction'; $sql = "INSERT INTO ais_transaction( Ais_TransactionOrderHeaderLabNumber, Ais_TransactionJson, Ais_TransactionStatus, Ais_TransactionResponse, Ais_TransactionUrl, Ais_TransactionUserID, Ais_TransactionCreated ) VALUES( ?, ?, ?, ?, ?, ?, NOW() )"; $qry = $this->db_log->query($sql, array( $row['RegID'], json_encode($raw_data[$key]), 'success', json_encode($result), $url, 555 )); if (!$qry) { $this->error_log(array('fn_name' => 'post_transaction', 'message' => 'ais_transaction insert', 'query' => $this->db_log->last_query(), 'json' => json_encode($result)), 999); exit; } } } if(count($errors) > 0){ $success = array('status' => 'error', 'message' => 'Gagal Post Transaction', 'errors' => $errors); echo json_encode($success); exit; }else{ $success = array('status' => 'success', 'message' => 'Berhasil Post Transaction'); echo json_encode($success); exit; } } function get_transaction() { // Get id from query parameter $id = $this->input->get('id'); if (empty($id)) { $errors = array('status' => 'error', 'message' => 'ID parameter is required'); echo json_encode($errors); exit; } $login = $this->post_auth(); if (!$login['success']) { $this->error_log(array('fn_name' => 'get_transaction_auth', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 999); $errors = array('status' => 'error', 'message' => 'Gagal Login'); echo json_encode($errors); exit; } $dt_config = $this->get_config(); $baseUrl = $dt_config['AisConfigBaseUrl']; $url = $baseUrl . '/api/transaksi?id=' . $id; $result = $this->get_request($url); if (!$result['success']) { $this->error_log(array('fn_name' => 'get_transaction', 'message' => 'failed get transaction', 'query' => '', 'json' => json_encode($result)), 999); $errors = array('status' => 'error', 'message' => 'Gagal Get Transaction'); echo json_encode($errors); exit; } $data = $result['response']['data'] ?? null; // $data = json_encode($data); $success = array('status' => 'success', 'message' => 'Berhasil Get Transaction', 'data' => $data); echo json_encode($success); exit; } }