from flask import Flask, request, jsonify
import datetime
import mysql.connector

app = Flask(__name__)

# Fungsi koneksi ke database MySQL
def get_db_connection():
    connection = mysql.connector.connect(
        host='localhost',
        user='jasaopti_serverku',
        password=';K}d}e-YlSh6',
        database='jasaopti_serv'
    )
    return connection

@app.route("/license/check", methods=["POST"])
def check_license():
    try:
        raw_data = request.data
        if not raw_data:
            return jsonify({"error": "Data kosong"}), 400

        # Parse JSON dari MQL5
        import json
        try:
            data = json.loads(raw_data.decode('utf-8'))
        except Exception as e:
            return jsonify({"error": "JSON tidak valid", "details": str(e), "raw_data": raw_data.decode('utf-8')}), 400

        nomor_akun = str(data.get("nomor_akun", ""))
        if not nomor_akun:
            return jsonify({"error": "nomor_akun tidak diberikan"}), 400

        # Query ke database
        connection = get_db_connection()
        cursor = connection.cursor(dictionary=True)
        cursor.execute("""
            SELECT u.username, us.masa_aktif 
            FROM users u
            JOIN user_services us ON u.id = us.user_id
            WHERE u.username = %s
        """, (nomor_akun,))
        account = cursor.fetchone()
        cursor.close()
        connection.close()

        if not account:
            return jsonify({"error": "Pengguna tidak ditemukan"}), 404

        expiry_date = account["masa_aktif"]
        today = datetime.date.today()

        if today <= expiry_date:
            remaining_days = (expiry_date - today).days
            return jsonify({
                "message": f"Akun valid. Masa aktif sisa {remaining_days} hari",
                "nomor_akun": nomor_akun,
                "masa_aktif": expiry_date.isoformat(),
                "remaining_days": remaining_days
            }), 200
        else:
            return jsonify({"error": "Masa aktif sudah habis"}), 400

    except Exception as e:
        return jsonify({"error": "Terjadi kesalahan server", "details": str(e)}), 500

if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0", port=5000)
