belongsTo('App\Models\Dataset','dataset_id'); } public static function dataChart($modelClass,$datasetId,$templateId){ $datasets = \App\Models\Dataset::where('template_id', $templateId) ->orderBy('tahun', 'asc') ->get() ->map(function ($dataset) use ($modelClass) { $dataset->items = (new $modelClass)->where('dataset_id', $dataset->id)->get(); return $dataset; }); $years = $datasets->pluck('tahun')->toArray(); $model = self::with('dataset')->whereHas('dataset',function($query) use ($years){ $query->whereIn('tahun',$years); })->where('dataset_id',$datasetId)->get(); $result = []; foreach ($model as $row) { $lokasi = $row->lokasi ?? 'Unknown'; if (!isset($result[$lokasi])) { $result[$lokasi] = [ 'luas' => [], 'persen' => [] ]; } $result[$lokasi]['luas'][] = (float) $row->luas; $result[$lokasi]['persen'][] = (float) $row->persentase_area_kerusakan; } return [ 'title' => 'Luas & Persentase Area Kerusakan per Wilayah', 'years' => $years, 'yTitle' => 'Luas (Ha)', 'yOpposite' => 'Persentase (%)', 'series' => collect($result)->flatMap(function ($item, $lokasi) { return [ [ 'name' => "Luas - {$lokasi}", 'type' => 'column', 'data' => $item['luas'] ], [ 'name' => "Persentase - {$lokasi}", 'type' => 'line', 'data' => $item['persen'] ] ]; })->values() ]; } }