service = $service; } public function show($inventoryYear = null, $activityYear = null, $sectorCode = null, $wsCode = null) { $categories = ReferenceSector::rowActive()->orderByRowNum()->get(); $worksheets = $sectorCode ? $this->service->getWorksheets($sectorCode) : []; // Fetch worksheet data $wsData = $this->service->getWorksheet($sectorCode, $wsCode); // Check if wsData and model are valid if ($wsData && class_exists($wsData->model)) { $modelClass = $wsData->model; $emisiData = $this->service->getEmissionsData($modelClass, $inventoryYear, $activityYear, $wsCode); } else { $emisiData = []; } return view('reports.worksheet.index', [ 'inventoryYear' => $inventoryYear ?? date('Y'), 'activityYear' => $activityYear, 'sectorCode' => $sectorCode, 'wsCode' => $wsCode, 'categories' => $categories, 'worksheets' => $worksheets, 'wsData' => $wsData, 'emisiData' => $emisiData ]); } public function getWorksheetsBySector(Request $request) { $code = $request->input('sector'); $worksheets = $this->service->getWorksheets($code); return response()->json($worksheets); } public function export(Request $request) { // Validate and sanitize inputs $validator = Validator::make($request->all(), [ 'inventoryYear' => 'required|integer', 'activityYear' => 'required|integer', 'sectorCode' => 'required|string', 'wsCode' => 'required|string', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } $inventoryYear = (int) $request->input('inventoryYear'); $activityYear = $request->input('activityYear') ? (int) $request->input('activityYear') : null; $sectorCode = $request->input('sectorCode'); $wsCode = $request->input('wsCode'); $wsData = $this->service->getWorksheet($sectorCode, $wsCode); if ($wsData && class_exists($wsData->model)) { $modelClass = $wsData->model; $emisiData = $this->service->getEmissionsData($modelClass, $inventoryYear, $activityYear, $wsCode); } else { $emisiData = []; } $titleExcel = 'WORKSHEET ' . strtoupper($sectorCode) . '-' . $wsCode . '-' . $activityYear . '-' . $inventoryYear; $wsData['titleExcel'] = $titleExcel; return Excel::download(new WorksheetExport($wsData, $emisiData), $titleExcel . '.xlsx'); } }