Buatkan implementasi sistem notifikasi absensi guru berdasarkan data dari model `TeacherSchedule` dengan field: - teacher_id - day_of_week ('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday') - start_time (jam masuk) - end_time (jam keluar) make url for create notification from controller sesuai dengan jadwal teacher dari teacher_schedules Gunakan arsitektur: - Service - Repository Fitur yang harus dibuat untuk insert ke table notifikasi teacher: 1. Notifikasi Terlambat Absen - title: "Terlambat Absen" - description: "Anda melewati waktu absensi masuk hari ini." - Kondisi: - Jika waktu sekarang > start_time - DAN guru belum melakukan absen masuk - Notifikasi dikirim setelah melewati jam masuk - dengan cek ke table teacher_schedules sesuai teacher_id dan day_of_week 1 jam setelah start_time 2. Notifikasi Absen Masuk Segera Dimulai - title: "Absen Masuk Segera Dimulai" - description: "Jangan lupa lakukan absensi masuk sesuai jadwal." - Kondisi: - Beberapa menit sebelum start_time (sebelum 1 jam) - dengan cek ke table teacher_schedules sesuai teacher_id dan day_of_week 1 jam sebelum start_time 3. Notifikasi Absen Keluar Segera Dimulai - title: "Waktu Absen Keluar Segera Dimulai" - description: "Jangan lupa lakukan absensi keluar sesuai jadwal." - Kondisi: - Beberapa menit sebelum end_time (sebelum 1 jam) - dengan cek ke table teacher_schedules sesuai teacher_id dan day_of_week 1 jam sebelum end_time 4. Notifikasi Absen Keluar Belum Dilakukan - title: "Absen Keluar Belum Dilakukan" - description: "Absensi keluar Anda hari ini belum tercatat." - Kondisi: - Waktu sekarang > end_time - DAN guru belum melakukan absen keluar dengan cek ke table teacher_attendances jika tidak ada data yang status_attendance out 5. Notifikasi Jadwal Guru Piket Hari Ini - title: "Jadwal Guru Piket Hari Ini" - description: "Hari ini Anda bertugas sebagai guru piket. Mohon bersiap sesuai jadwal." - Kondisi: - Jika guru memiliki jadwal pada hari ini ('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday') - Dikirim di pagi hari (jam 07:00) dengan cek apakah teacher tersebut ada jadwal atau tidak dari table teacher_schedules_piket sesuai teacher_id dan day_of_week Ketentuan teknis: - Gunakan Carbon untuk manipulasi waktu - Gunakan cron job / scheduler Laravel (Kernel.php) untuk menjalankan pengecekan berkala (misal setiap menit) - Gunakan Service untuk: - Ambil data jadwal hari ini - Cek kondisi waktu - Tentukan jenis notifikasi - Gunakan Repository untuk: - Menyimpan data ke tabel notifications Tambahkan: - Pencegahan duplicate notifikasi (misal: 1 jenis notif hanya dikirim 1x per hari per user) - Contoh implementasi pengecekan waktu (before / after start_time & end_time) Output yang diharapkan: - Service logic lengkap - Contoh pemanggilan di Scheduler Laravel - Struktur clean dan scalable