<?php

namespace Database\Seeders;

use App\Models\Notification;
use App\Models\User;
use Illuminate\Database\Seeder;

class NotificationSeeder extends Seeder
{
    public function run(): void
    {
        $admin = User::where('email', 'admin@smkn1gunungagung.sch.id')->first();
        $kepsek = User::where('email', 'kepsek@smkn1gunungagung.sch.id')->first();
        $guru = User::whereHas('role', fn ($q) => $q->where('name', 'guru'))->first();
        $siswa = User::whereHas('role', fn ($q) => $q->where('name', 'siswa'))
            ->where('is_active', true)
            ->first();

        $items = [
            [
                'user' => $admin,
                'title' => 'Sinkronisasi mesin selesai',
                'message' => 'Semua mesin fingerprint terdaftar berhasil disinkronkan pagi ini.',
                'type' => 'success',
                'is_read' => false,
            ],
            [
                'user' => $admin,
                'title' => 'Mesin offline',
                'message' => 'Mesin Fingerprint 5 - Bengkel TKR tidak merespons sejak kemarin.',
                'type' => 'warning',
                'is_read' => false,
            ],
            [
                'user' => $admin,
                'title' => 'Pengajuan izin menunggu',
                'message' => 'Terdapat 2 pengajuan izin/sakit yang menunggu persetujuan.',
                'type' => 'info',
                'is_read' => true,
                'read_at' => now()->subHours(2),
            ],
            [
                'user' => $kepsek,
                'title' => 'Rekap kehadiran bulanan',
                'message' => 'Rekap absensi Juli 2026 sudah tersedia untuk ditinjau.',
                'type' => 'info',
                'is_read' => false,
            ],
            [
                'user' => $kepsek,
                'title' => 'Surat peringatan diterbitkan',
                'message' => 'Admin TU telah menerbitkan SP1 untuk siswa dengan alpha berulang.',
                'type' => 'warning',
                'is_read' => false,
            ],
            [
                'user' => $guru,
                'title' => 'Izin disetujui',
                'message' => 'Pengajuan izin Anda telah disetujui oleh Admin TU.',
                'type' => 'success',
                'is_read' => true,
                'read_at' => now()->subDay(),
            ],
            [
                'user' => $siswa,
                'title' => 'Absensi terlambat',
                'message' => 'Anda tercatat terlambat pada absensi masuk hari ini. Harap datang lebih awal.',
                'type' => 'danger',
                'is_read' => false,
            ],
            [
                'user' => $siswa,
                'title' => 'Kalender akademik diperbarui',
                'message' => 'Jadwal UTS semester ganjil telah ditambahkan ke kalender akademik.',
                'type' => 'info',
                'is_read' => false,
            ],
        ];

        foreach ($items as $item) {
            if (!$item['user']) {
                continue;
            }

            Notification::updateOrCreate(
                [
                    'user_id' => $item['user']->id,
                    'title' => $item['title'],
                ],
                [
                    'message' => $item['message'],
                    'type' => $item['type'],
                    'is_read' => $item['is_read'],
                    'read_at' => $item['read_at'] ?? null,
                ]
            );
        }
    }
}
