$sector) { $caseStatement .= "WHEN sector = '{$sector}' THEN {$index} "; } $caseStatement .= "ELSE " . (count($order)) . " END"; $data = self::where('active_status', 1)->where('row_status', 1) ->orderByRaw($caseStatement)->orderBy('row_num') ->get()->toArray(); $groupedData = []; foreach ($data as $item) { $newData = self::getSectorCaption($item['sector']); $sector = $newData; if (!isset($groupedData[$sector])) { $groupedData[$sector] = []; } $groupedData[$sector][] = $item; } return $groupedData; } private static function getSectorCaption($sector) { switch ($sector) { case 'energy': case 'energy_gpc': return 'Energi'; case 'ippu': return 'IPPU'; case 'agriculture': return 'Pertanian'; case 'folu': return 'Lahan'; case 'waste': return 'Limbah'; default: return ucfirst($sector); } } }