@extends('layouts.app') @section('title', 'Laporan Pelanggaran') @section('content') @php $selectedClass = $classes->firstWhere('id', $filters['class_id']); @endphp
{{-- ===== Hero ===== --}}

Laporan Rekap Pelanggaran

Rekap pelanggaran per periode untuk BK & Kepala Sekolah — cetak langsung atau unduh PDF.

Periode {{ $filters['date_from'] ?? 'Awal' }} — {{ $filters['date_to'] ?? 'Sekarang' }} {{ $selectedClass?->name ?? 'Semua Kelas' }}
{{-- ===== Filter Bar ===== --}}
Cepat: @foreach ([ '7 Hari Terakhir' => [now()->subDays(6)->format('Y-m-d'), now()->format('Y-m-d')], '30 Hari Terakhir' => [now()->subDays(29)->format('Y-m-d'), now()->format('Y-m-d')], 'Semester Ganjil' => [now()->month >= 7 ? now()->year.'-07-01' : now()->subYear()->year.'-07-01', now()->month >= 7 ? now()->year.'-12-31' : now()->subYear()->year.'-12-31'], 'Semester Genap' => [now()->month >= 7 ? (now()->year + 1).'-01-01' : now()->year.'-01-01', now()->month >= 7 ? (now()->year + 1).'-06-30' : now()->year.'-06-30'], 'Tahun Ini' => [now()->year.'-01-01', now()->year.'-12-31'], ] as $label => [$from, $to]) @endforeach
{{-- ===== KPI ===== --}}
{{ number_format($stats['totalKasus']) }}
Total Kasus
{{ number_format($stats['totalPoin']) }}
Total Poin
{{ number_format($stats['siswaTerlibat']) }}
Siswa Terlibat
{{ $stats['jenisTerbanyak']['jenis'] ?? 'Belum Ada' }}
Jenis Terbanyak
{{-- ===== Rekap: per Jenis & per Kelas ===== --}}
{{-- Per Jenis --}}

Rekap per Jenis Pelanggaran

{{ $stats['perJenis']->count() }} jenis
@forelse ($stats['perJenis']->take(8) as $item) @php $max = max($stats['perJenis']->max('jumlah'), 1); @endphp
{{ $item['jenis'] }} {{ $item['jumlah'] }}× · {{ $item['poin'] }} poin
@empty

Belum ada data pada periode ini

@endforelse
{{-- Per Kelas --}}

Rekap per Kelas

{{ $stats['perKelas']->count() }} kelas
@forelse ($stats['perKelas']->take(10) as $i => $item) @empty @endforelse
Kelas Kasus Poin
{{ strtoupper(substr($item['kelas'], 0, 2)) }} {{ $item['kelas'] }} {{ $item['jumlah'] }} {{ $item['poin'] }}

Belum ada data pada periode ini

{{-- ===== Rincian Terbaru ===== --}}

Rincian Pelanggaran Terbaru

Lihat Semua
@forelse ($recent as $v) @empty @endforelse
Tanggal NISN Siswa Kelas Jenis Poin
{{ $v->violation_date?->format('d/m/Y') }} {{ $v->student?->nisn }} {{ $v->student?->full_name }} {{ $v->student?->class?->name }}
{{ $v->violationType?->name }}
@if ($v->description)
{{ $v->description }}
@endif
{{ $v->points }}

Belum ada pelanggaran pada periode ini

Ubah periode atau filter kelas untuk melihat data

@endsection