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

des = {
    'version': "1.0.0",
    'credits': "HVHVZ",
    'description': "Thêm nội dung mới vào khuyến mãi hiện có theo tiêu đề",
    'power': "Quản trị viên"
}

def load_km_list():
    try:
        with open('modules/cache/km.json', 'r', encoding='utf-8') as f:
            data = json.load(f)
            return data if isinstance(data, list) else []
    except Exception as e:
        print(f"Error loading km.json: {str(e)}")
        return []

def save_km_list(content):
    try:
        with open('modules/cache/km.json', 'w', encoding='utf-8') as f:
            json.dump(content, f, ensure_ascii=False, indent=4)
        return True, None
    except Exception as e:
        return False, str(e)

def handle_addkm_command(message, message_object, thread_id, thread_type, author_id, client):
    try:
        if str(author_id) not in ADMIN:
            error_msg = "❌ Chỉ quản trị viên mới có thể sử dụng lệnh này!"
            client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)
            return
        
        content = message.replace(f"{PREFIX}addkm", "", 1).strip()
        if not content:
            error_msg = f"❌ Vui lòng nhập đúng định dạng: {PREFIX}addkm {{tiêu đề}}: {{nội dung mới}}"
            client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)
            return
        
        if ": " not in content:
            error_msg = f"❌ Vui lòng nhập đúng định dạng: {PREFIX}addkm {{tiêu đề}}: {{nội dung mới}}"
            client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)
            return
        
        title, new_content = content.split(": ", 1)
        title = title.strip()
        new_content = new_content.strip()
        
        if not title or not new_content:
            error_msg = f"❌ Tiêu đề hoặc nội dung mới không được để trống!"
            client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)
            return
        
        km_list = load_km_list()
        km_found = None
        for km in km_list:
            if km['title'] == title:
                km_found = km
                break
        
        if not km_found:
            error_msg = f"❌ Tiêu đề '{title}' không tồn tại!"
            client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)
            return
        
        # Thêm nội dung mới vào content hiện tại, dùng \n để phân tách
        km_found['content'] = f"{km_found['content']}\n{new_content}"
        
        success, error = save_km_list(km_list)
        if not success:
            error_msg = f"❌ Lỗi khi lưu khuyến mãi: {error}. Vui lòng thử lại!"
            client.replyMessage(Message(text=error_msg), message_object, thread_id, thread_type, ttl=60000)
            return
        
        success_msg = (
            f"✅ Đã thêm nội dung vào khuyến mãi '{title}'!\n\n"
            f"Nội dung mới:\n{km_found['content']}"
        )
        client.replyMessage(Message(text=success_msg), message_object, thread_id, thread_type)
        
    except Exception as e:
        error_msg = f"❌ Lỗi không xác định: {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():
    print("Loaded addkm module")
    return {
        'addkm': handle_addkm_command
    }