61 lines
2.0 KiB
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'));
|
|
}
|
|
}
|