id(); // Ambil data guru berdasarkan user login $guru = Guru::where('user_id', $userId)->first(); if (!$guru) { abort(404, 'Data guru tidak ditemukan.'); } // Ambil semua mapel yang diampu lengkap dengan relasi kelas & mapel $jadwal = GuruMapel::with(['mapel', 'kelas']) ->where('guru_id', $guru->id) ->get(); // Ambil daftar mapel unik $mapelYangDiampu = $jadwal->pluck('mapel')->unique('id')->values(); // Fungsi bantu mapping nama hari ke tanggal minggu berjalan function getDateForDay($dayName) { $days = ['Minggu' => 0, 'Senin' => 1, 'Selasa' => 2, 'Rabu' => 3, 'Kamis' => 4, 'Jumat' => 5, 'Sabtu' => 6]; $today = Carbon::now(); $monday = $today->startOfWeek(Carbon::MONDAY); // Senin minggu ini $dayNumber = $days[$dayName] ?? null; if ($dayNumber === null) return null; return $monday->copy()->addDays($dayNumber - 1)->format('Y-m-d'); } // Buat array events untuk FullCalendar $events = []; foreach ($jadwal as $item) { $tanggal = getDateForDay($item->hari); if (!$tanggal) continue; // skip kalau hari tidak valid // Pastikan jam mulai dan selesai ada if (!$item->jam_mulai || !$item->jam_selesai) continue; $events[] = [ 'title' => $item->mapel->nama_mapel . ' - ' . $item->kelas->nama_kelas, 'start' => $tanggal . 'T' . $item->jam_mulai, 'end' => $tanggal . 'T' . $item->jam_selesai, ]; } return view('guru.dashboard', compact('mapelYangDiampu', 'jadwal', 'events')); } }