88 lines
2.5 KiB
PHP
88 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Services\LevelReportService;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Response;
|
|
|
|
class LevelReportsController extends Controller
|
|
{
|
|
private $levelReportService;
|
|
|
|
public function __construct(LevelReportService $levelReportService)
|
|
{
|
|
$this->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);
|
|
}
|
|
}
|