from flask import Flask, request, jsonify
from flask_cors import CORS
import requests
import os
import random
import string
import logging
from datetime import datetime
from dotenv import load_dotenv

load_dotenv()

app = Flask(__name__)
CORS(app)

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

API_TOKEN = os.getenv('API_TOKEN')
RESELLER_USERNAME = os.getenv('RESELLER_USERNAME')
RESELLER_PASSWORD = os.getenv('RESELLER_PASSWORD')
BASE_URL = 'http://icell.ae/mypanel/Api/CreateUserTMO'

def generate_username():
    return ''.join(random.choices(string.ascii_lowercase + string.digits, k=10))

@app.route('/api/accountinfo', methods=['GET', 'POST'])
def accountinfo():
    return jsonify({
        "status": "success",
        "username": RESELLER_USERNAME,
        "balance": "100.00",
        "currency": "USD",
        "credits": "1000"
    })

@app.route('/api/services', methods=['GET', 'POST'])
def services():
    return jsonify({
        "status": "success",
        "services": [{
            "id": "tmo_unlock",
            "name": "TMO Unlock Service",
            "price": 10.00,
            "currency": "USD"
        }]
    })

@app.route('/api/order', methods=['POST'])
def order():
    try:
        data = request.get_json()
        if not data:
            data = request.form.to_dict()
        
        fingerprint = data.get('fingerprint')
        credits = data.get('credits', 10)
        
        if not fingerprint:
            return jsonify({"status": "error", "msg": "fingerprint required"}), 400
        
        new_username = generate_username()
        
        params = {
            'token': API_TOKEN,
            'resellerid': RESELLER_USERNAME,
            'resellerpassword': RESELLER_PASSWORD,
            'username': new_username,
            'fingerprint': fingerprint,
            'credits': credits
        }
        
        response = requests.get(BASE_URL, params=params, timeout=30)
        result = response.json()
        
        if result.get('status') == 'success':
            return jsonify({
                "status": "success",
                "username": result.get('username', new_username),
                "password": result.get('password', ''),
                "fingerprint": result.get('fingerprint', fingerprint),
                "msg": result.get('msg', 'User TMO create successfully')
            })
        else:
            return jsonify({
                "status": "error",
                "msg": result.get('msg', 'Error creating user')
            }), 400
            
    except Exception as e:
        logger.error(f"Order error: {str(e)}")
        return jsonify({"status": "error", "msg": str(e)}), 500

@app.route('/api/status', methods=['GET', 'POST'])
def status():
    order_id = request.args.get('order_id') or request.form.get('order_id')
    return jsonify({
        "status": "success",
        "order_id": order_id,
        "status": "completed",
        "msg": "Order completed"
    })

@app.route('/api/index.php', methods=['GET', 'POST', 'OPTIONS'])
def index_php():
    action = request.form.get('action') or request.args.get('action')
    logger.info(f"📥 index.php action: {action}")
    
    if action == 'accountinfo':
        return jsonify({
            "status": "success",
            "username": RESELLER_USERNAME,
            "balance": "100.00",
            "currency": "USD",
            "credits": "1000"
        })
    elif action == 'services':
        return services()
    elif action == 'order':
        return order()
    elif action == 'status':
        return status()
    else:
        return jsonify({"status": "error", "msg": f"Unknown action: {action}"}), 400

@app.route('/api/health', methods=['GET'])
def health():
    return jsonify({"status": "ok"})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
