This commit is contained in:
mahdahar 2025-11-24 13:56:21 +07:00
parent e68c88b600
commit 4f1d3e1097
5 changed files with 88 additions and 14 deletions

View File

@ -47,6 +47,8 @@ $routes->group('cs', ['filter' => 'role:4'], function($routes) {
// ------------------------------------------------------For API------------------------------------------------------ // // ------------------------------------------------------For API------------------------------------------------------ //
// $routes->get('/api/dashboard', 'ApiDashboard::index'); // $routes->get('/api/dashboard', 'ApiDashboard::index');
$routes->get('api/result/(:any)', 'Result::show/$1');
$routes->get('api/specimen/(:any)', 'Specimen::show/$1'); $routes->get('api/specimen/(:any)', 'Specimen::show/$1');
$routes->post('api/specimen/collect/(:any)', 'Specimen::collect/$1'); $routes->post('api/specimen/collect/(:any)', 'Specimen::collect/$1');
$routes->post('api/specimen/unreceive/(:any)', 'Specimen::unreceive/$1'); $routes->post('api/specimen/unreceive/(:any)', 'Specimen::unreceive/$1');

View File

@ -54,18 +54,21 @@ class ApiDashboard extends ResourceController {
// Simpan ke array // Simpan ke array
$dataList[] = [ $dataList[] = [
'statCode' => $statCode, 'statCode' => $statCode,
'reqdate' => $reqdate, 'reqdate' => $reqdate,
'patname' => $patname, 'patname' => $patname,
'reqnum' => $reqnum, 'reqnum' => $reqnum,
'hosnum' => $hosnum, 'hosnum' => $hosnum,
'reff' => $row['REFF'] ?? '', 'reff' => $row['REFF'] ?? '',
'doc' => $row['DOC'] ?? '', 'doc' => $row['DOC'] ?? '',
'tests' => $row['TESTS'] ?? '', 'tests' => $row['TESTS'] ?? '',
'stats' => $stats, 'stats' => $stats,
'isPrinted'=> $row['ODR_ISPRINTED'] ?? 0, 'isPrinted'=> $row['ODR_ISPRINTED'] ?? 0,
'isPending'=> $row['ODR_ISPENDING'] ?? 0, 'isPending'=> $row['ODR_ISPENDING'] ?? 0,
'isHardcopy'=> $row['ODR_NFLAGHARDCOPY'] ?? 0, 'isHardcopy'=> $row['ODR_NFLAGHARDCOPY'] ?? 0,
'isVal' => $row['ISVAL'] ?? 0, 'isVal1' => $row['ISVAL1'] ?? 0,
'val1user' => $row['VAL1USER'] ?? '',
'isVal2' => $row['ISVAL2'] ?? 0,
'val2user' => $row['VAL2USER'] ?? '',
'isDelete' => $isDelete, 'isDelete' => $isDelete,
]; ];
} }

View File

@ -16,7 +16,8 @@ class Result extends BaseController {
->getResultArray(); ->getResultArray();
$data['status'] = $result[0]['STATS']; $data['status'] = $result[0]['STATS'];
$data['verif'] = $result[0]['ISVAL2']; $data['verif'] = $result[0]['ISVAL2'];
return view('result/result_show',$data); //return view('result/result_show',$data);
return view('admin/modal_result',$data);
} }
public function invalidate($accessnumber) { public function invalidate($accessnumber) {

View File

@ -117,8 +117,10 @@
</td> </td>
<td data-acc="<?=$row['sp_accessnumber'];?>"> <td data-acc="<?=$row['sp_accessnumber'];?>">
<span class="border border-success rounded p-1 mb-2 me-2"> <?=$row['val'];?> </span> <span class="border border-success rounded p-1 mb-2 me-2"> <?=$row['val'];?> </span>
<?php if($row['val'] == 1) { ?> <?php if($row['val'] != 2) { ?>
<a href="<?=base_url('result/'.$row['sp_accessnumber']);?>" target="_blank" class="btn btn-xs btn-outline-primary px-1 py-0 mb-1">Verify</a> <br/> <!-- <a href="<?=base_url('result/'.$row['sp_accessnumber']);?>" target="_blank" class="btn btn-xs btn-outline-primary px-1 py-0 mb-1">Verify</a> -->
<button class='btn btn-xs btn-outline-success px-1 py-0 mb-1' onclick="verify(<?=$row['sp_accessnumber'];?>)" data-bs-toggle="modal" data-bs-target="#verifyModal">Verify</button>
<br/>
<?php } else { echo "<br />"; } ?> <?php } else { echo "<br />"; } ?>
<?php if($row['val'] == 2) { ?> <?php if($row['val'] == 2) { ?>
<a href="http://glenlis/spooler_db/main_dev.php?acc=<?=$row['sp_accessnumber'];?>" target="_blank" class="btn btn-xs btn-primary py-0 px-1">Ind</a> | <a href="http://glenlis/spooler_db/main_dev.php?acc=<?=$row['sp_accessnumber'];?>" target="_blank" class="btn btn-xs btn-primary py-0 px-1">Ind</a> |
@ -148,11 +150,22 @@
<h1 class="modal-title fw-bold fs-4" id="detailModal">Specimen Collection</h1> <h1 class="modal-title fw-bold fs-4" id="detailModal">Specimen Collection</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body" id="modalContent"> </div> <div class="modal-body" id="specimenModalContent"> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="verifyModal" aria-hidden="true" aria-labelledby="verifyModal" tabindex="-1">
<div class="modal-dialog modal-xl modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fw-bold fs-4" id="detailModal">Verification</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" id="verifyModalContent"> </div>
</div>
</div>
</div>
</div> </div>
<?= $this->endSection() ?> <?= $this->endSection() ?>
@ -236,6 +249,53 @@
}); });
} }
window.verify = function(accessNumber) {
const modalBody = $('#verifyModal .modal-body');
modalBody.html('<div class="text-center py-5"><div class="spinner-border text-primary" role="status"><span class="visually-hidden">Loading...</span></div><p class="mt-2">Fetching verification details for #' + accessNumber + '...</p></div>');
$.ajax({
url: '<?= base_url('api/result/'); ?>'+accessNumber,
method: 'GET', // Or 'POST', depending on your server setup
data: { access_number: accessNumber },
dataType: 'html',
success: function(response) {
modalBody.html(response);
},
error: function(xhr, status, error) {
console.error("AJAX Error:", status, error);
modalBody.html(`
<div class="alert alert-danger" role="alert">
<strong>Error loading content:</strong> Could not retrieve verification details.
<p class="mt-1 mb-0"><small>Details: ${error}</small></p>
</div>
`);
}
});
};
/*
function verify(accessnumber) {
// toggle checkbox
const row = document.getElementById(`row-${accessnumber}-${samplenumber}`);
const checkbox = row.querySelector('.coll-checkbox');
checkbox.checked = status;
$.ajax({
url: `<?=base_url('api/request/collect');?>/${accessnumber}`,
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({ samplenumber:samplenumber, status:status, userid:"<?=session('userid');?>" }),
success: function(response) {
console.log("Success:", response);
},
error: function(xhr, status, error) {
console.error("Error:", status, error);
}
});
}
*/
function unreceive(accessnumber, samplenumber) { function unreceive(accessnumber, samplenumber) {
// toggle checkbox // toggle checkbox
const row = document.getElementById(`row-${accessnumber}-${samplenumber}`); const row = document.getElementById(`row-${accessnumber}-${samplenumber}`);
@ -265,7 +325,7 @@
// Untuk Detail // Untuk Detail
document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function () {
const modal = document.getElementById('detailModal'); const modal = document.getElementById('detailModal');
const modalContent = document.getElementById('modalContent'); const modalContent = document.getElementById('specimenModalContent');
document.querySelectorAll('.pointercol').forEach(td => { document.querySelectorAll('.pointercol').forEach(td => {
td.addEventListener('click', async function () { td.addEventListener('click', async function () {
const access = this.dataset.access; const access = this.dataset.access;

View File

@ -0,0 +1,8 @@
<iframe
id="result-iframe"
title="PHP Embedded Content Demo"
class="flex-1"
src="http://glenlis/spooler_db/main_dev.php?acc=<?=$accessnumber;?>">
<p>Your browser does not support iframes. Please contact the technical support.</p>
</iframe>