from flask import Flask, render_template
from flask_cors import CORS
from mongoengine import connect
from config import Config
from routes.auth import auth_bp
from routes.exam_manager import exams_bp
from routes.mock_test import mock_test_bp
from routes.old_papers import old_papers_bp
from routes.video_courses import video_courses_bp
from routes.ebooks import ebooks_bp
from routes.notfication_routes import notification_bp
import logging
from routes.image_routes import image_routes
from routes.image_upload import upload_bp
from routes.mcq import savemcq_bp
from routes.qna import qna_bp
from routes.mcq_extraction import extractor_bp
from routes.educoins_topup import educoins_topup_bp
from routes.coupons_routes import coupon_bp
from routes.user_auth import user_bp
from datetime import timedelta
from routes.payments import payments_bp
from routes.courses import courses_bp
from routes.cart import cart_bp

# Ensure logs show up even from blueprints and utils
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s [%(levelname)s] %(message)s',
)

def create_app():
    app = Flask(__name__)
    app.config.from_object(Config)
    CORS(app)

    # Connect to MongoDB
    connect(host=app.config['MONGO_URI'])
    app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=30)  # Remember me duration

    # Register Blueprints
    app.register_blueprint(exams_bp, url_prefix='/api')
    app.register_blueprint(auth_bp, url_prefix='/api')
    app.register_blueprint(mock_test_bp, url_prefix='/api/mock_test')
    app.register_blueprint(old_papers_bp, url_prefix='/api/old_papers')
    app.register_blueprint(video_courses_bp, url_prefix='/api/video_courses')
    app.register_blueprint(ebooks_bp, url_prefix='/api/ebooks')
    app.register_blueprint(notification_bp, url_prefix='/api')
    app.register_blueprint(image_routes, url_prefix='/api/')
    app.register_blueprint(upload_bp, url_prefix='/api')
    app.register_blueprint(savemcq_bp, url_prefix='/api')
    app.register_blueprint(qna_bp, url_prefix='/api')
    app.register_blueprint(educoins_topup_bp, url_prefix='/api')
    app.register_blueprint(coupon_bp, url_prefix='/api')
    app.register_blueprint(courses_bp, url_prefix='/api')
    app.register_blueprint(extractor_bp, url_prefix='/user')
    app.register_blueprint(payments_bp, url_prefix='/api')
    app.register_blueprint(user_bp)
    
    app.register_blueprint(cart_bp, url_prefix='/api')
    return app

app = create_app()  
if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5001)







# curl -X POST http://127.0.0.1:5001/api/register \
# -H "Content-Type: application/json" \
# -d '{
#     "mobile_no": "9592743647",
#     "password": "Test@123",
#     "confirm_password": "Test@123",
#     "register_type": "Learner",
#     "refer_by" : "HI4JLPV6"
    
# }'

