diff --git a/app/Http/Controllers/Guru/DashboardController.php b/app/Http/Controllers/Guru/DashboardController.php index 3e42dac..ed7d154 100644 --- a/app/Http/Controllers/Guru/DashboardController.php +++ b/app/Http/Controllers/Guru/DashboardController.php @@ -5,6 +5,7 @@ use App\Http\Controllers\Controller; use App\Models\Mengajar; use App\Models\Siswa; +use App\Models\Tugas; use Illuminate\Support\Facades\Auth; class DashboardController extends Controller @@ -15,25 +16,47 @@ public function index() try { $totalKelas = Mengajar::where('id_guru', $guru->id_guru) - ->distinct('id_kelas') - ->count('id_kelas'); + ->distinct('id_kelas')->count('id_kelas'); $totalMapel = Mengajar::where('id_guru', $guru->id_guru) - ->distinct('id_mapel') - ->count('id_mapel'); + ->distinct('id_mapel')->count('id_mapel'); - $kelasIds = Mengajar::where('id_guru', $guru->id_guru) - ->pluck('id_kelas') - ->unique(); + $kelasIds = Mengajar::where('id_guru', $guru->id_guru) + ->pluck('id_kelas')->unique(); $totalSiswa = Siswa::whereIn('id_kelas', $kelasIds)->count(); + // Chart: pengumpulan tugas per tugas (6 tugas terbaru) + $idMengajars = Mengajar::where('id_guru', $guru->id_guru)->pluck('id_mengajar'); + + $tugasList = Tugas::with(['mengajar.mapel', 'pengumpulanTugas']) + ->whereIn('id_mengajar', $idMengajars) + ->latest()->take(6)->get(); + + $chartLabels = []; + $chartSudah = []; + $chartBelum = []; + + foreach ($tugasList as $tugas) { + $namaMapel = optional($tugas->mengajar->mapel)->nama_mapel ?? 'Mapel'; + $chartLabels[] = strlen($namaMapel) > 14 ? substr($namaMapel, 0, 14) . '…' : $namaMapel; + $sudah = $tugas->pengumpulanTugas->count(); + $chartSudah[] = $sudah; + $chartBelum[] = max(0, $totalSiswa - $sudah); + } + } catch (\Exception $e) { - $totalKelas = 0; - $totalMapel = 0; - $totalSiswa = 0; + $totalKelas = 0; + $totalMapel = 0; + $totalSiswa = 0; + $chartLabels = []; + $chartSudah = []; + $chartBelum = []; } - return view('guru.dashboard', compact('totalKelas', 'totalMapel', 'totalSiswa')); + return view('guru.dashboard', compact( + 'totalKelas', 'totalMapel', 'totalSiswa', + 'chartLabels', 'chartSudah', 'chartBelum' + )); } } \ No newline at end of file diff --git a/resources/views/admin/challenge/index.blade.php b/resources/views/admin/challenge/index.blade.php index aacacba..603d39e 100644 --- a/resources/views/admin/challenge/index.blade.php +++ b/resources/views/admin/challenge/index.blade.php @@ -956,7 +956,6 @@ function openTambahModal() { data.soal.forEach(s => tambahSoal('editSoalContainer', s)); - // Recalc EXP otomatis setiap kali angka EXP di modal edit berubah const expElEdit = document.getElementById('editExp'); expElEdit.oninput = () => recalcExp('editSoalContainer'); diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index d0c8769..4ba3a2f 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -4,118 +4,64 @@ @push('styles') @@ -134,7 +80,6 @@ @php use Carbon\Carbon; - $greeting = Carbon::now()->hour < 12 ? 'Selamat Pagi' : (Carbon::now()->hour < 17 ? 'Selamat Siang' : 'Selamat Malam'); @endphp