MIF_E31221225/app/Http/Controllers/Guru/DashboardGuruController.php

61 lines
2.0 KiB
PHP

<?php
namespace App\Http\Controllers\Guru;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use App\Models\Guru;
use App\Models\GuruMapel;
use Carbon\Carbon;
class DashboardGuruController extends Controller
{
public function index()
{
$userId = auth()->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'));
}
}