<?php

namespace App\Services;

use App\Models\AdminNotification;
use App\Repositories\Eloquent\NotificationManagementRepository;

class NotificationManagementService
{
    public function __construct(private NotificationManagementRepository $repository) {}

    public function page(int $adminUserId): array
    {
        return $this->repository->page($adminUserId);
    }

    public function header(int $adminUserId): array
    {
        return $this->repository->header($adminUserId);
    }

    public function markRead(AdminNotification $notification, int $adminUserId): void
    {
        abort_unless($notification->admin_user_id === $adminUserId, 404);
        $notification->update(['read_at' => $notification->read_at ?: now()]);
    }

    public function delete(AdminNotification $notification, int $adminUserId): void
    {
        abort_unless($notification->admin_user_id === $adminUserId, 404);
        $notification->delete();
    }

    public function markAllRead(int $adminUserId): void
    {
        $this->repository->markAllRead($adminUserId);
    }

    public function clear(int $adminUserId): void
    {
        $this->repository->clear($adminUserId);
    }
}
