<?php

namespace App\Repositories\Eloquent;

use App\Models\AdminNotification;

class NotificationManagementRepository
{
    public function page(int $adminUserId): array
    {
        $query = AdminNotification::where('admin_user_id', $adminUserId);

        return [
            'notifications' => (clone $query)->latest()->paginate(15)->withQueryString(),
            'unreadCount' => (clone $query)->whereNull('read_at')->count(),
        ];
    }

    public function header(int $adminUserId): array
    {
        $query = AdminNotification::where('admin_user_id', $adminUserId)->latest();

        return [
            'headerNotifications' => (clone $query)->limit(6)->get(),
            'headerUnreadNotifications' => (clone $query)->whereNull('read_at')->count(),
        ];
    }

    public function markAllRead(int $adminUserId): void
    {
        AdminNotification::where('admin_user_id', $adminUserId)->whereNull('read_at')->update(['read_at' => now()]);
    }

    public function clear(int $adminUserId): void
    {
        AdminNotification::where('admin_user_id', $adminUserId)->delete();
    }
}
