import os
from dotenv import load_dotenv
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
import mysql.connector

load_dotenv()
TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN")

def execute_query(query, params, fetchone=False):
    # دریافت اطلاعات دیتابیس از فایل .env
    db_url = os.environ.get("DATABASE_URL")
    # استخراج ساده اطلاعات (برای محیط عملیاتی می‌توانید از ابزارهای بهتری برای Parse استفاده کنید)
    conn = mysql.connector.connect(host="localhost", user="root", password="password", database="queue_db")
    cursor = conn.cursor(dictionary=True)
    cursor.execute(query, params)
    if fetchone:
        result = cursor.fetchone()
    else:
        result = cursor.fetchall()
    conn.commit()
    conn.close()
    return result

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    chat_id = update.message.chat_id
    args = context.args
    
    if args:
        token = args[0]
        execute_query("UPDATE client SET telegram_chat_id = %s WHERE telegram_token = %s", (str(chat_id), token))
        await update.message.reply_text("✅ حساب شما با موفقیت به سیستم نوبت‌دهی انجمن کامپیوتر متصل شد.\nاز این پس تمامی اطلاعیه‌ها را اینجا دریافت خواهید کرد.")
    else:
        await update.message.reply_text("سلام! به ربات انجمن علمی خوش آمدید. لطفا برای دریافت اعلان‌ها، از طریق لینک موجود در سایت وارد شوید.")

async def status(update: Update, context: ContextTypes.DEFAULT_TYPE):
    chat_id = str(update.message.chat_id)
    client = execute_query("SELECT * FROM client WHERE telegram_chat_id = %s ORDER BY id DESC LIMIT 1", (chat_id,), True)
    
    if client:
        text = f"🎫 شماره نوبت: {client['ticket_number']}\n👤 نام: {client['name']}\n📌 وضعیت فعلی: {client['status']}"
        await update.message.reply_text(text)
    else:
        await update.message.reply_text("نوبتی برای شما یافت نشد.")

def main():
    if not TOKEN:
        print("Error: TELEGRAM_BOT_TOKEN not set in .env")
        return
    application = Application.builder().token(TOKEN).build()
    application.add_handler(CommandHandler("start", start))
    application.add_handler(CommandHandler("status", status))
    print("Bot is running...")
    application.run_polling()

if __name__ == '__main__':
    main()