<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\IzinPenerimaanTamu;
use Carbon\Carbon;

class NotifikasiController extends Controller
{
    public function cekNotif(Request $request)
    {
        $seconds = $request->get('seconds', 30);
        $since = Carbon::now()->subSeconds($seconds);

        // --- UPDATE PENTING ---
        // Menggunakan 'desc' agar sinkron dengan indexAdmin (tanggal terbaru di atas)
        $tamu = IzinPenerimaanTamu::orderBy('waktu_mulai', 'desc')
                                   ->orderBy('waktu_selesai', 'desc')
                                   ->get();
        
        $events = collect();

        // 1️⃣ TAMU BARU (notif suara.mp3)
        $baru = IzinPenerimaanTamu::where('created_at', '>=', $since)
            ->orderByDesc('created_at')
            ->get();

        foreach ($baru as $item) {
            $item->type = 'baru'; // 🔊 suara.mp3
            $events->push($item);
        }

        // 2️⃣ KONFIRMASI HADIR (notif.mp3)
        $konfirmasi = IzinPenerimaanTamu::where('status_hadir', 'hadir')
            ->whereNotNull('jam_masuk')
            ->where('jam_masuk', '>=', $since)
            ->orderByDesc('jam_masuk')
            ->get();

        foreach ($konfirmasi as $item) {
            $item->type = 'konfirmasi'; // 🔊 notif.mp3
            $events->push($item);
        }

        // 3️⃣ UPDATE BIASA (notif suara.mp3)
        $update = IzinPenerimaanTamu::where('updated_at', '>=', $since)
            ->whereColumn('updated_at', '!=', 'created_at')
            ->where(function ($q) use ($since) {
                $q->whereNull('jam_masuk')
                  ->orWhere('jam_masuk', '<', $since); // bukan konfirmasi baru
            })
            ->orderByDesc('updated_at')
            ->get();

        foreach ($update as $item) {
            $item->type = 'update'; // 🔊 suara.mp3
            $events->push($item);
        }

        return response()->json([
            'allData' => $tamu, // Data ini sekarang sudah urut tanggal terbaru di atas
            'events'  => $events->sortByDesc('updated_at')->values(),
        ]);
    }
}