service = $service; } public function show($inventoryYear = null, $activityYear = null, $sectorCode = null) { $categories = ReferenceSector::rowActive()->orderByRowNum()->get(); $worksheets = ReferenceWs::with('children')->rowActive()->where('sector', $sectorCode)->isMain()->orderByRowNum()->get(); $crfData = ActivityCrf::rowActive() ->where('sector', $sectorCode) ->where('inventory_year', $inventoryYear) ->where('activity_year', $activityYear) ->get(); // dd($crfData); return view($this->template.'.index', [ 'title' => $this->title, 'route' => $this->route, 'inventoryYear' => $inventoryYear ?? date('Y'), 'activityYear' => $activityYear ?? date('Y') - 1, 'sectorCode' => $sectorCode, 'categories' => $categories, 'worksheets' => $worksheets, 'crfData' => $crfData, ]); } public function export(Request $request) { // Validate and sanitize inputs $validator = Validator::make($request->all(), [ 'inventoryYear' => 'required|integer', 'activityYear' => 'required|integer', 'sectorCode' => 'required|string', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } $inventoryYear = $request->input('inventoryYear'); $activityYear = $request->input('activityYear'); $sectorCode = $request->input('sectorCode'); // Fetch the necessary data $sector = ReferenceSector::rowActive()->where('code', $sectorCode)->first(); $worksheets = ReferenceWs::with('children')->rowActive()->where('sector', $sectorCode)->isMain()->orderByRowNum()->get(); $crfData = ActivityCrf::rowActive() ->where('sector', $sectorCode) ->where('inventory_year', $inventoryYear) ->where('activity_year', $activityYear) ->get(); $titleExcel = 'CRF_' . strtoupper($sector->name) . '_' . $inventoryYear . '_' . $activityYear; $sector->inventoryYear = $inventoryYear; $sector->activityYear = $activityYear; return Excel::download(new CrfExport($sector, $crfData, $worksheets), $titleExcel . '.xlsx'); } }