gdc_cmod/app/Controllers/ApiDashboard.php
2025-11-24 11:13:25 +07:00

94 lines
3.5 KiB
PHP

<?php
namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
class ApiDashboard extends ResourceController {
public function index() {
$date1 = $this->request->getVar('date1');
$date2 = $this->request->getVar('date2');
$db = \Config\Database::connect();
$sql = "SELECT * from GDC_CMOD.dbo.V_DASHBOARD_DEV where
COLLECTIONDATE between '$date1 00:00' and '$date2 23:59'
and ODR_DDATE between '$date1 00:00' and '$date2 23:59'";
$query = $db->query($sql);
$results = $query->getResultArray();
// === Variabel counter ===
$CPending = 0; $CPColl = 0; $CColl = 0; $CPRecv = 0;
$CRecv = 0; $CInc = 0; $CPenV = 0; $CFin = 0; $CFinV = 0;
$dataList = [];
foreach ($results as $row) {
$reqdate = '';
if (!empty($row['REQDATE'])) {
$reqdate = date('Y-m-d H:i', strtotime($row['REQDATE']));
}
$patname = $row['Name'] ?? '';
$reqnum = $row['SP_ACCESSNUMBER'] ?? '';
$hosnum = $row['HOSTORDERNUMBER'] ?? '';
$stats = $row['STATS'] ?? '';
$tests = $row['TESTS'] ?? '';
$isDelete = $row['ISDELETE'] ?? 0;
// Bersihkan test string
$test = str_replace(['(', ')', ',', 'FA'], '', $tests);
if (!is_numeric($test) && $isDelete == 0) {
switch ($stats) {
case 'Pend': $statCode = 1; $CPending++; break;
case 'PartColl':$statCode = 2; $CPColl++; break;
case 'Coll': $statCode = 3; $CColl++; break;
case 'PartRecv':$statCode = 4; $CPRecv++; break;
case 'Recv': $statCode = 5; $CRecv++; break;
case 'Inc': $statCode = 6; $CInc++; break;
case 'PenV': $statCode = 7; $CPenV++; break;
case 'Fin': $statCode = 8; $CFin++; break;
case 'FinV': $statCode = 9; $CFinV++; break;
default: $statCode = 0; break;
}
// Simpan ke array
$dataList[] = [
'statCode' => $statCode,
'reqdate' => $reqdate,
'patname' => $patname,
'reqnum' => $reqnum,
'hosnum' => $hosnum,
'reff' => $row['REFF'] ?? '',
'doc' => $row['DOC'] ?? '',
'tests' => $row['TESTS'] ?? '',
'stats' => $stats,
'isPrinted'=> $row['ODR_ISPRINTED'] ?? 0,
'isPending'=> $row['ODR_ISPENDING'] ?? 0,
'isHardcopy'=> $row['ODR_NFLAGHARDCOPY'] ?? 0,
'isVal' => $row['ISVAL'] ?? 0,
'isDelete' => $isDelete,
];
}
}
// === Total Summary ===
$summary = [
'Pending' => $CPending,
'PartialCollected' => $CPColl,
'Collected' => $CColl,
'PartialReceived' => $CPRecv,
'Received' => $CRecv,
'Incomplete' => $CInc,
'PendingValidation' => $CPenV,
'Final' => $CFin,
'FinalValidation' => $CFinV,
];
// === Response JSON (misal API) ===
return $this->respond([
'status' => 'success',
'summary' => $summary,
'data' => $dataList,
]);
}
}