"""
UI Styles — стили оформления для разных уровней пользователей
"""

# =============================================================================
# ЦВЕТА И EMOJI ДЛЯ УРОВНЕЙ
# =============================================================================

LEVEL_COLORS = {
    'unverified': 'red',      # Неверифицированные
    'verified': 'green',      # Верифицированные
    'ig': 'blue',             # Инициативная группа
    'admin': 'orange',        # Админ
    'superadmin': 'purple',   # Супер-админ (владелец)
}

LEVEL_EMOJI = {
    'unverified': '🔴',
    'verified': '🟢',
    'ig': '🔵',
    'admin': '🟡',
    'superadmin': '🟣',
}

LEVEL_NAMES = {
    'unverified': 'НОВИЧОК',
    'verified': 'ЖИЛЕЦ',
    'ig': 'АКТИВ',
    'admin': 'АДМИН',
    'superadmin': 'ВЛАДЕЛЕЦ',
}

# =============================================================================
# ФОРМАТИРОВАНИЕ ТЕКСТА
# =============================================================================

def get_colored_header(text: str, level: str) -> str:
    """
    Создать заголовок с emoji (без <font> тегов!)
    
    Args:
        text: текст заголовка
        level: уровень пользователя
    
    Returns:
        строка с emoji и жирным текстом
    """
    emoji = LEVEL_EMOJI.get(level, '⚪')
    
    return f'{emoji} <b>{text}</b>'


def get_level_badge(level: str) -> str:
    """
    Получить бейдж уровня (без HTML тегов!)
    
    Args:
        level: уровень пользователя
    
    Returns:
        строка с emoji и названием
    """
    emoji = LEVEL_EMOJI.get(level, '⚪')
    name = LEVEL_NAMES.get(level, 'НЕИЗВЕСТНО')
    
    return f'<b>{emoji} {name}</b>'


def get_user_level(user) -> str:
    """
    Определить уровень пользователя
    
    Args:
        user: объект User
    
    Returns:
        строка уровня (unverified, verified, ig, admin, superadmin)
    """
    from config import ADMIN_USER_ID
    
    if not user:
        return 'unverified'
    
    # Супер-админ (владелец)
    if user.user_id == ADMIN_USER_ID:
        return 'superadmin'
    
    # Админ
    if user.is_admin:
        return 'admin'
    
    # Инициативная группа
    # Проверяется через InitiativeGroup.is_member()
    # Но для простоты вернём verified если не ИГ
    
    # Верифицированный
    if user.verified:
        return 'verified'
    
    # Неверифицированный
    return 'unverified'


def get_user_level_with_ig(user, is_ig_member: bool = False) -> str:
    """
    Определить уровень пользователя с учётом ИГ
    
    Args:
        user: объект User
        is_ig_member: член ИГ
    
    Returns:
        строка уровня
    """
    from config import ADMIN_USER_ID
    
    if not user:
        return 'unverified'
    
    # Супер-админ (владелец)
    if user.user_id == ADMIN_USER_ID:
        return 'superadmin'
    
    # Админ
    if user.is_admin:
        return 'admin'
    
    # Инициативная группа
    if is_ig_member and user.verified:
        return 'ig'
    
    # Верифицированный
    if user.verified:
        return 'verified'
    
    # Неверифицированный
    return 'unverified'
