from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton

# Главное меню
def main_menu(is_admin: bool = False):
    keyboard = InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="🎮 Мои серверы", callback_data="my_servers")],
        [InlineKeyboardButton(text="👤 Моя роль", callback_data="my_role")],
        [InlineKeyboardButton(text="📊 Стата администрации", callback_data="admin_stats")]
    ])
    
    if is_admin:
        keyboard.inline_keyboard.append(
            [InlineKeyboardButton(text="⚙️ Админ-панель", callback_data="admin_panel")]
        )
    
    return keyboard

# Админ-панель
def admin_panel_menu():
    return InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="🖥️ Управление серверами", callback_data="admin_servers")],
        [InlineKeyboardButton(text="👥 Управление пользователями", callback_data="admin_users")],
        [InlineKeyboardButton(text="🎭 Управление ролями", callback_data="admin_roles")],
        [InlineKeyboardButton(text="🔙 Назад", callback_data="main_menu")]
    ])

# Управление серверами
def admin_servers_menu():
    return InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="➕ Создать сервер", callback_data="create_server")],
        [InlineKeyboardButton(text="📋 Список серверов", callback_data="list_servers")],
        [InlineKeyboardButton(text="🔙 Назад", callback_data="admin_panel")]
    ])

# Список серверов
def servers_list_keyboard(servers, prefix="server"):
    keyboard = []
    for server in servers:
        keyboard.append([
            InlineKeyboardButton(
                text=f"🖥️ {server['name']}",
                callback_data=f"{prefix}_{server['id']}"
            )
        ])
    keyboard.append([InlineKeyboardButton(text="🔙 Назад", callback_data="admin_servers")])
    return InlineKeyboardMarkup(inline_keyboard=keyboard)

# Действия с сервером (админ)
def server_admin_actions(server_id):
    return InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="✏️ Настроить FTP", callback_data=f"setup_ftp_{server_id}")],
        [InlineKeyboardButton(text="💾 Настроить MariaDB", callback_data=f"setup_db_{server_id}")],
        [InlineKeyboardButton(text="📝 Изменить server.cfg", callback_data=f"edit_cfg_{server_id}")],
        [InlineKeyboardButton(text="👥 Управление доступом", callback_data=f"server_access_{server_id}")],
        [InlineKeyboardButton(text="🗑️ Удалить сервер", callback_data=f"delete_server_{server_id}")],
        [InlineKeyboardButton(text="🔙 Назад", callback_data="list_servers")]
    ])

# Панель управления сервером
def server_control_panel(server_id):
    return InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="▶️ Запустить сервер", callback_data=f"start_{server_id}")],
        [InlineKeyboardButton(text="⏹️ Остановить сервер", callback_data=f"stop_{server_id}")],
        [InlineKeyboardButton(text="🔄 Перезапустить сервер", callback_data=f"restart_{server_id}")],
        [InlineKeyboardButton(text="📝 Просмотр server.cfg", callback_data=f"view_cfg_{server_id}")],
        [InlineKeyboardButton(text="💾 Данные MariaDB", callback_data=f"view_db_{server_id}")],
        [InlineKeyboardButton(text="📁 Подключиться к FTP", callback_data=f"view_ftp_{server_id}")],
        [InlineKeyboardButton(text="🔙 Назад", callback_data="my_servers")]
    ])

# Управление пользователями
def admin_users_menu():
    return InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="📋 Список пользователей", callback_data="list_users")],
        [InlineKeyboardButton(text="🚫 Забанить пользователя", callback_data="ban_user")],
        [InlineKeyboardButton(text="✅ Разбанить пользователя", callback_data="unban_user")],
        [InlineKeyboardButton(text="🎭 Назначить роль", callback_data="assign_role")],
        [InlineKeyboardButton(text="🏆 Назначить игровой ранг", callback_data="assign_ingame_rank")],
        [InlineKeyboardButton(text="🔙 Назад", callback_data="admin_panel")]
    ])

# Управление ролями
def admin_roles_menu():
    return InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="➕ Создать роль", callback_data="create_role")],
        [InlineKeyboardButton(text="📋 Список ролей", callback_data="list_roles")],
        [InlineKeyboardButton(text="🔙 Назад", callback_data="admin_panel")]
    ])

# Список ролей
def roles_list_keyboard(roles):
    keyboard = []
    for role in roles:
        keyboard.append([
            InlineKeyboardButton(
                text=f"🎭 {role['name']}",
                callback_data=f"role_{role['id']}"
            )
        ])
    keyboard.append([InlineKeyboardButton(text="🔙 Назад", callback_data="admin_roles")])
    return InlineKeyboardMarkup(inline_keyboard=keyboard)

# Действия с ролью
def role_actions(role_id):
    return InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="🔑 Управление правами", callback_data=f"role_perms_{role_id}")],
        [InlineKeyboardButton(text="🗑️ Удалить роль", callback_data=f"delete_role_{role_id}")],
        [InlineKeyboardButton(text="🔙 Назад", callback_data="list_roles")]
    ])

# Права доступа
PERMISSIONS = {
    "server_start": "▶️ Запуск сервера",
    "server_stop": "⏹️ Остановка сервера",
    "server_restart": "🔄 Перезапуск сервера",
    "server_cfg": "📝 Изменение server.cfg",
    "server_ftp": "📁 Доступ к FTP",
    "server_db": "💾 Доступ к MariaDB"
}

def permissions_keyboard(role_id, current_perms):
    keyboard = []
    for perm_key, perm_name in PERMISSIONS.items():
        has_perm = perm_key in current_perms
        status = "✅" if has_perm else "❌"
        keyboard.append([
            InlineKeyboardButton(
                text=f"{status} {perm_name}",
                callback_data=f"toggle_perm_{role_id}_{perm_key}"
            )
        ])
    keyboard.append([InlineKeyboardButton(text="🔙 Назад", callback_data=f"role_{role_id}")])
    return InlineKeyboardMarkup(inline_keyboard=keyboard)

# Отмена действия
def cancel_keyboard():
    return InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="❌ Отмена", callback_data="cancel")]
    ])

# Подтверждение
def confirm_keyboard(action, entity_id):
    return InlineKeyboardMarkup(inline_keyboard=[
        [
            InlineKeyboardButton(text="✅ Да", callback_data=f"confirm_{action}_{entity_id}"),
            InlineKeyboardButton(text="❌ Нет", callback_data=f"cancel_{action}")
        ]
    ])

# Назад в главное меню
def back_to_main():
    return InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="🔙 Главное меню", callback_data="main_menu")]
    ])

