import json
from zlapi.models import Message, ThreadType
from config import PREFIX

des = {
    'version': "1.0.0",
    'credits': "HVHVZ",
    'description': "Xác nhận lựa chọn sản phẩm",
    'power': "Thành viên"
}

def load_price_list():
    try:
        with open('modules/cache/price_list.json', 'r', encoding='utf-8') as f:
            data = json.load(f)
            return data if isinstance(data, dict) else {}
    except Exception:
        return {}

def get_admin_avatar(client, admin_id):
    try:
        admin_info = client.fetchUserInfo(admin_id)
        if admin_info and hasattr(admin_info, 'changed_profiles'):
            profile = admin_info.changed_profiles.get(admin_id, {})
            return profile.get('avatar', None)
        return None
    except Exception:
        return None

def handle_mua_command(message, message_object, thread_id, thread_type, author_id, client):
    try:
        admin_id = "4968265841152141652"
        admin_phone = "0395656909"

        parts = message.split(" ", 1)
        if len(parts) < 2 or not parts[1].strip():
            error_msg = f"❌ Vui lòng cung cấp mã sản phẩm. Ví dụ: {PREFIX}mua gemini"
            client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)
            return

        product_code = parts[1].strip()

        price_list = load_price_list()
        if not price_list:
            error_msg = "❌ Không thể tải bảng giá. Vui lòng kiểm tra file modules/cache/price_list.json!"
            client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)
            return

        if product_code not in price_list:
            error_msg = f"❌ Mã sản phẩm '{product_code}' không tồn tại trong bảng giá!"
            client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)
            return

        product_name = price_list[product_code].get('name', 'Không xác định')
        packages = price_list[product_code].get('packages', [])

        reply_text = (
            f"Bạn đã chọn sản phẩm: {product_name} ({product_code})\n"
            "Danh sách gói:\n"
        )
        if packages:
            for package in packages:
                reply_text += f"  - Gói {package['number']}: {package['content']}\n"
        else:
            reply_text += "  (Chưa có gói nào cho sản phẩm này)\n"
        reply_text += "Vui lòng liên hệ admin qua danh thiếp bên dưới để tiếp tục mua hàng."

        client.replyMessage(
            Message(text=reply_text),
            message_object,
            thread_id=thread_id,
            thread_type=thread_type,
            ttl=60000
        )

        avatar_url = get_admin_avatar(client, admin_id)
        if not avatar_url:
            error_msg = "⚠️ Không thể lấy ảnh đại diện admin, nhưng danh thiếp vẫn được gửi."
            client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)

        try:
            client.sendBusinessCard(
                userId=admin_id,
                qrCodeUrl=avatar_url,
                thread_id=thread_id,
                thread_type=thread_type,
                phone=admin_phone
            )
        except Exception as e:
            error_msg = f"❌ Không thể gửi danh thiếp admin: {str(e)}. Vui lòng liên hệ admin qua Zalo: {admin_phone}"
            client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)

    except Exception as e:
        error_msg = f"❌ Lỗi khi thực hiện lệnh mua: {str(e)}. Vui lòng thử lại!"
        client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)

def ft_vxkiue():
    return {
        'mua': handle_mua_command
    }