from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup, InputMediaPhoto
from telegram.ext import ContextTypes
from config import BANNER_PATH
from services.auth_service import is_admin, is_owner
from services.admin_service import get_admin_by_id
from services.user_service import save_user
from services.maintenance_service import get_maintenance
from services.contact_service import get_open_contact_count
from data.pending_store import get_pending_count
from data.memory import REJOIN_PENDING
from utils.menu_view import show_main_menu
import os

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):

    user = update.effective_user
    save_user(user.id, first_name=user.first_name, username=user.username)
    context.user_data.clear()

    if get_maintenance() and not is_owner(user.id):
        await update.message.reply_text(
            "🔧 <b>Bot sedang dalam maintenance.</b>\n\n"
            "Mohon bersabar, bot akan segera aktif kembali. Terima kasih! 🙏",
            parse_mode="HTML"
        )
        return

    admin_data = get_admin_by_id(user.id)

    nama_admin = (
        admin_data["nama"]
        if admin_data
        else user.first_name
    )
    
    # Tampilan admin
    if is_admin(user.id):

        username = f"@{user.username}" if user.username else "Tidak disetel"

        if is_owner(user.id):
            inbox_count = get_open_contact_count()
            order_count = get_pending_count()
            rejoin_count = len(REJOIN_PENDING)
            notification_count = inbox_count + order_count + rejoin_count
            notification_label = (
                f"🔔 Notifications ({notification_count})"
                if notification_count
                else "🔔 Notifications"
            )
            keyboard = [
                [
                    InlineKeyboardButton(notification_label, callback_data="owner_notifications")
                ],
                [
                    InlineKeyboardButton("📣 Broadcast", callback_data="broadcast_menu")
                ],
                [
                    InlineKeyboardButton("📊 Info & Laporan", callback_data="owner_group_info")
                ],
                [
                    InlineKeyboardButton("📦 Kelola Product", callback_data="owner_group_product")
                ],
                [
                    InlineKeyboardButton("👮 Kelola Admin", callback_data="owner_group_admin")
                ],
                [
                    InlineKeyboardButton("⚙️ Pengaturan Bot", callback_data="owner_group_settings")
                ],
            ]
        else:
            vs_status = admin_data.get("vs_enabled", False) if admin_data else False
            toggle_label = "🔴 OFF kan Diri Saya" if vs_status else "🟢 ON kan Diri Saya"
            keyboard = [
                [
                    InlineKeyboardButton("🎥 Kelola Paket VCS", callback_data="vs_manage")
                ],
                [
                    InlineKeyboardButton(toggle_label, callback_data="admin_self_toggle")
                ]
            ]

        panel_title = (
            "OWNER PANEL"
            if is_owner(user.id)
            else f"ADMIN PANEL • {nama_admin}"
        )

        panel_icon = "👑" if is_owner(user.id) else "🎖️"

        teks_admin = f"""{panel_icon} <b>{panel_title}</b>

            👤 <b>Nama:</b> {user.first_name}
            🪪 <b>Username:</b> {username}
            🆔 <b>ID:</b> <code>{user.id}</code>

            🟢 Bot aktif dan siap digunakan.
            """

        await update.message.reply_text(
            teks_admin,
            parse_mode="HTML",
            reply_markup=InlineKeyboardMarkup(keyboard)
        )

        return
    
    # Tampilan user biasa
    await show_main_menu(
        update.message,
        user
    )
