from flask import Flask, request
import requests
import base64
from datetime import datetime
import os

app = Flask(__name__)

# ====== بيانات Zoom ======
ACCOUNT_ID = "9gnZoqOuQ5SULYD_fLJr4w"
CLIENT_ID = "Wi8QrIWPTXDbuX8lsJeeg"
CLIENT_SECRET = "aubPPInQXcU3plApSithLCXDnJzIQXml"

# ====== منع استخدام أي Proxy ======
os.environ["HTTP_PROXY"] = ""
os.environ["HTTPS_PROXY"] = ""

# ---- 1. الحصول على Access Token ----
def get_access_token():
    url = "https://zoom.us/oauth/token"
    creds = f"{CLIENT_ID}:{CLIENT_SECRET}"
    b64_creds = base64.b64encode(creds.encode()).decode()

    headers = {
        "Authorization": f"Basic {b64_creds}"
    }
    payload = {
        "grant_type": "account_credentials",
        "account_id": ACCOUNT_ID
    }

    try:
        response = requests.post(url, headers=headers, params=payload, timeout=20)
        response.raise_for_status()
        return response.json()["access_token"]
    except requests.exceptions.RequestException as e:
        print("❌ حدث خطأ عند الحصول على التوكن:", e)
        return None

# ---- 2. إنشاء اجتماع جديد ----
def create_meeting(start_time, topic="Meeting with Client"):
    token = get_access_token()
    if not token:
        return {"error": "فشل في الحصول على التوكن"}

    url = "https://api.zoom.us/v2/users/me/meetings"
    headers = {"Authorization": f"Bearer {token}"}

    payload = {
        "topic": topic,
        "type": 2,  # Scheduled meeting
        "start_time": start_time,
        "duration": 60,
        "timezone": "Africa/Cairo"
    }

    try:
        response = requests.post(url, headers=headers, json=payload, timeout=20)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        print("❌ حدث خطأ عند إنشاء الاجتماع:", e)
        return {"error": str(e)}

# ---- 3. عرض المواعيد الفارغة ----
@app.route("/")
def index():
    free_slots = ["09:00 - 10:00", "11:00 - 12:00", "15:00 - 16:00"]
    html = "<h2>المواعيد الفارغة</h2><ul>"
    for slot in free_slots:
        html += f"""
        <li>{slot}
            <form action="/book" method="post" style="display:inline;">
                <input type="hidden" name="slot" value="{slot}">
                <button type="submit">احجز</button>
            </form>
        </li>
        """
    html += "</ul>"
    return html

# ---- 4. الحجز ----
@app.route("/book", methods=["POST"])
def book():
    slot = request.form.get("slot")
    if not slot:
        return "⚠️ لم يتم إرسال وقت الاجتماع", 400

    start_hour = slot.split(" - ")[0]
    today = datetime.now().strftime("%Y-%m-%d")
    start_time = f"{today}T{start_hour}:00"

    meeting = create_meeting(start_time)
    if "error" in meeting:
        return f"❌ حدث خطأ: {meeting['error']}", 500

    return f"""
    <h2>تم الحجز بنجاح ✅</h2>
    <p>رابط الاجتماع: <a href="{meeting['join_url']}" target="_blank">{meeting['join_url']}</a></p>
    <p>كلمة المرور: {meeting.get('password', 'بدون')}</p>
    <a href="/">🔙 رجوع</a>
    """

if __name__ == "__main__":
    app.run(debug=True)
