Files
2026-04-28 21:15:09 +03:00

95 lines
2.7 KiB
PHP

<?php
/**
* @api-readonly
* Returns RFI dashboard statistics
*/
$rfi = db("r_f_i_s")->get();
$data = [];
// Initialize rfi_summary
$data['rfi_summary']['Overall'] = 0;
$status = j(setting("rfi-status"));
foreach($status as $stat) {
$data['rfi_summary'][$stat] = 0;
}
foreach($rfi as $r) {
// Status için güvenli değer atama
$currentStatus = !empty($r->status) ? trim($r->status) : 'Undefined';
$currentSubcontractor = !empty($r->subcontractor) ? trim($r->subcontractor) : 'Undefined';
if (!isset($data['rfi_summary'][$currentStatus])) {
$data['rfi_summary'][$currentStatus] = 0;
}
$data['rfi_summary'][$currentStatus]++;
$data['rfi_summary']['Overall']++;
if (!isset($data['subcontractor'][$currentSubcontractor]['Overall'])) {
$data['subcontractor'][$currentSubcontractor]['Overall'] = 0;
}
foreach ($status as $stat) {
if (!isset($data['subcontractor'][$currentSubcontractor][$stat])) {
$data['subcontractor'][$currentSubcontractor][$stat] = 0;
}
}
if (!isset($data['subcontractor'][$currentSubcontractor][$currentStatus])) {
$data['subcontractor'][$currentSubcontractor][$currentStatus] = 0;
}
if($currentSubcontractor !== 'Undefined' && $currentStatus !== 'Undefined') {
$data['subcontractor'][$currentSubcontractor][$currentStatus]++;
}
$data['subcontractor'][$currentSubcontractor]['Overall']++;
$dateCol = !empty($r->inspection_date) ?
date("M-y", strtotime($r->inspection_date)) :
date("M-y");
if (!isset($data['monthly']['total']['qty'])) {
$data['monthly']['total']['qty'] = 0;
}
$data['monthly']['total']['qty']++;
if (!isset($data['monthly'][$dateCol]['qty'])) {
$data['monthly'][$dateCol]['qty'] = 0;
}
$data['monthly'][$dateCol]['qty']++;
}
// Prepare data for DevExtreme DataGrid
$rfiSummaryData = [];
foreach ($data['rfi_summary'] as $status => $count) {
$rfiSummaryData[] = ['status' => $status, 'count' => $count];
}
$subcontractorData = [];
foreach ($data['subcontractor'] as $subcontractor => $statuses) {
$row = ['subcontractor' => $subcontractor];
foreach ($statuses as $status => $count) {
$row[$status] = $count;
}
$subcontractorData[] = $row;
}
// Prepare data for dxChart
$monthlyData = [];
foreach ($data['monthly'] as $month => $counts) {
if ($month !== 'total') {
$monthlyData[] = ['month' => $month, 'qty' => $counts['qty']];
}
}
$result = [
'rfi_summary' => $rfiSummaryData,
'subcontractor' => $subcontractorData,
'monthly' => $monthlyData
];
// Output data
echo json_encode($result);
// Now you can use the data with DevExtreme components