<?php

declare(strict_types=1);

namespace App\Framework\Notification\ValueObjects;

/**
 * System Notification Types
 *
 * General system-level notification categories
 */
enum SystemNotificationType: string implements NotificationTypeInterface
{
    case SYSTEM = 'system';
    case SECURITY = 'security';
    case MARKETING = 'marketing';
    case SOCIAL = 'social';
    case TRANSACTIONAL = 'transactional';

    public function toString(): string
    {
        return $this->value;
    }

    public function getDisplayName(): string
    {
        return match ($this) {
            self::SYSTEM => 'System Notification',
            self::SECURITY => 'Security Alert',
            self::MARKETING => 'Marketing Message',
            self::SOCIAL => 'Social Update',
            self::TRANSACTIONAL => 'Transaction Notification',
        };
    }

    public function isCritical(): bool
    {
        return match ($this) {
            self::SECURITY => true,
            default => false,
        };
    }
}
