levelReportService = $levelReportService; } /** * Zeige Level-Aufstieg Reports */ public function index(Request $request) { // Filter aus Request extrahieren $filters = [ 'month' => $request->get('month'), 'year' => $request->get('year'), 'user_id' => $request->get('user_id'), 'only_not_updated' => $request->boolean('not_updated') ]; // Lade Level-Aufstiege $promotions = $this->levelReportService->getLevelPromotions($filters); $statistics = $this->levelReportService->getStatistics($promotions); // Verfügbare Jahre für Filter $availableYears = range(date('Y'), date('Y') - 5); $availableMonths = [ 1 => 'Januar', 2 => 'Februar', 3 => 'März', 4 => 'April', 5 => 'Mai', 6 => 'Juni', 7 => 'Juli', 8 => 'August', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'Dezember' ]; return view('admin.level-reports.index', compact( 'promotions', 'statistics', 'filters', 'availableYears', 'availableMonths' )); } /** * CSV Export */ public function export(Request $request) { // Filter aus Request extrahieren $filters = [ 'month' => $request->get('month'), 'year' => $request->get('year'), 'user_id' => $request->get('user_id'), 'only_not_updated' => $request->boolean('not_updated') ]; // Lade Level-Aufstiege $promotions = $this->levelReportService->getLevelPromotions($filters); if ($promotions->isEmpty()) { return redirect()->back()->with('error', 'Keine Daten für Export gefunden.'); } // Erstelle CSV $filename = 'level_promotions_' . date('Y-m-d_H-i-s') . '.csv'; $filepath = $this->levelReportService->exportToCsv($promotions, $filename); // Download CSV return response()->download($filepath, $filename)->deleteFileAfterSend(true); } }