from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, KeyboardButtonRequestChat
from utils import texts

def client_main_menu(is_admin=False):
    kb = [
        [
            KeyboardButton(text=texts.BTN_POST_PROJECT, style="primary"),
        ],
        [
            KeyboardButton(text=texts.BTN_MY_PROJECTS, style="primary"),
            KeyboardButton(text=texts.BTN_WALLET, style="success"),
        ],
        [
            KeyboardButton(text=texts.BTN_SWITCH_TO_FREELANCER, style="primary"),
            KeyboardButton(text="👥 زیرمجموعه‌گیری", style="primary"),
            KeyboardButton(text="🏆 برترین‌ها", style="primary"),
        ],
        [
            KeyboardButton(text="🛒 خرید خدمات آماده", style="success"),
            KeyboardButton(text=texts.BTN_VIP, style="danger"),
        ],
        [
            KeyboardButton(text=texts.BTN_SUPPORT, style="primary"),
        ]
    ]
    if is_admin:
        kb.append([KeyboardButton(text=texts.BTN_ADMIN, style="danger")])
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def freelancer_main_menu(is_admin=False):
    kb = [
        [
            KeyboardButton(text=texts.BTN_FIND_PROJECTS, style="primary"),
        ],
        [
            KeyboardButton(text=texts.BTN_MY_BIDS, style="primary"),
            KeyboardButton(text=texts.BTN_PROFILE, style="primary"),
        ],
        [
            KeyboardButton(text="🛍 مدیریت خدمات من", style="primary"),
        ],
        [
            KeyboardButton(text=texts.BTN_WALLET, style="success"),
            KeyboardButton(text=texts.BTN_VIP, style="danger"),
        ],
        [
            KeyboardButton(text=texts.BTN_SWITCH_TO_CLIENT, style="primary"),
            KeyboardButton(text="👥 زیرمجموعه‌گیری", style="primary"),
            KeyboardButton(text="🏆 برترین‌ها", style="primary"),
        ],
        [
            KeyboardButton(text=texts.BTN_SUPPORT, style="primary"),
        ]
    ]
    if is_admin:
        kb.append([KeyboardButton(text=texts.BTN_ADMIN, style="danger")])
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def cancel_menu():
    kb = [[KeyboardButton(text=texts.BTN_BACK, style="danger")]]
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def skip_or_cancel_menu():
    kb = [
        [KeyboardButton(text=texts.BTN_SKIP, style="primary")],
        [KeyboardButton(text=texts.BTN_BACK, style="danger")]
    ]
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def category_menu():
    cats = [
        "💻 برنامه‌نویسی و وب", "🎨 طراحی گرافیک و UI/UX",
        "📝 تولید محتوا و نویسندگی", "🗣 ترجمه و تایپ",
        "📈 دیجیتال مارکتینگ و سئو", "📱 ادمین شبکه‌های اجتماعی",
        "🎬 تدوین ویدیو و انیمیشن", "🎵 صداگذاری و موسیقی",
        "📐 معماری و نقشه‌کشی", "📊 مهندسی و علوم داده",
        "📱 برنامه‌نویسی موبایل", "🤖 توسعه ربات تلگرام",
        "💼 مشاوره کسب‌وکار", "🏫 آموزش و تدریس خصوصی",
        "📞 پشتیبانی مشتریان", "🌐 سایر زمینه‌ها"
    ]
    kb = []
    for i in range(0, len(cats), 2):
        row = [KeyboardButton(text=cats[i])]
        if i+1 < len(cats):
            row.append(KeyboardButton(text=cats[i+1]))
        kb.append(row)
    kb.append([KeyboardButton(text=texts.BTN_BACK, style="danger")])
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def project_type_menu():
    kb = [
        [KeyboardButton(text="💼 پروژه‌ای (مقطعی)")],
        [KeyboardButton(text="👔 تمام‌وقت / استخدام")],
        [KeyboardButton(text=texts.BTN_BACK, style="danger")]
    ]
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def chat_keyboard():
    kb = [[KeyboardButton(text=texts.BTN_END_CHAT, style="danger")]]
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def request_phone_keyboard():
    kb = [
        [KeyboardButton(text="📱 ارسال شماره موبایل", request_contact=True)],
        [KeyboardButton(text=texts.BTN_BACK)]
    ]
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def request_channel_keyboard():
    kb = [
        [KeyboardButton(text="📢 انتخاب کانال برای ربات", request_chat=KeyboardButtonRequestChat(request_id=1, chat_is_channel=True))],
        [KeyboardButton(text=texts.BTN_BACK)]
    ]
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def project_creation_keyboard(show_skip=False, is_first_step=False):
    kb = []
    if show_skip:
        kb.append([KeyboardButton(text="⏭ رد کردن")])
    
    row = []
    if not is_first_step:
        row.append(KeyboardButton(text="🔙 مرحله قبلی"))
    row.append(KeyboardButton(text="❌ انصراف از ثبت"))
    kb.append(row)
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def category_menu_with_back():
    cats = [
        "💻 برنامه‌نویسی و وب", "🎨 طراحی گرافیک و UI/UX",
        "📝 تولید محتوا و نویسندگی", "🗣 ترجمه و تایپ",
        "📈 دیجیتال مارکتینگ و سئو", "📱 ادمین شبکه‌های اجتماعی",
        "🎬 تدوین ویدیو و انیمیشن", "🎵 صداگذاری و موسیقی",
        "📐 معماری و نقشه‌کشی", "📊 مهندسی و علوم داده",
        "📱 برنامه‌نویسی موبایل", "🤖 توسعه ربات تلگرام",
        "💼 مشاوره کسب‌وکار", "🏫 آموزش و تدریس خصوصی",
        "📞 پشتیبانی مشتریان", "🌐 سایر زمینه‌ها"
    ]
    kb = []
    for i in range(0, len(cats), 2):
        row = [KeyboardButton(text=cats[i])]
        if i+1 < len(cats):
            row.append(KeyboardButton(text=cats[i+1]))
        kb.append(row)
    kb.append([KeyboardButton(text="🔙 مرحله قبلی"), KeyboardButton(text="❌ انصراف از ثبت")])
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def project_type_menu_with_back():
    kb = [
        [KeyboardButton(text="💼 پروژه‌ای (مقطعی)")],
        [KeyboardButton(text="👔 تمام‌وقت / استخدام")],
        [KeyboardButton(text="🔙 مرحله قبلی"), KeyboardButton(text="❌ انصراف از ثبت")]
    ]
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

def dispute_chat_keyboard():
    kb = [[KeyboardButton(text="خروج از چت داوری ⚖️")]]
    return ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)

