from services.locale_service import get_locale
from flask import Flask
from config import Config
from flask_babel import Babel
from extensions import db, migrate
from urllib.parse import quote_plus
from routes.login_register import login_register_bp
from routes.language import language_bp
from routes.web import web_bp
from routes.slots import slots_bp
from routes.chatbot import chatbot_bp


def create_flask_app():
    app = Flask(__name__)
    app.config.from_object(Config)

    # Initialize Babel for i18n
    babel = Babel()
    babel.init_app(app, locale_selector=get_locale)
    app.jinja_env.globals['get_locale'] = get_locale

    # Initialize database and migrations
    db.init_app(app)
    migrate.init_app(app, db)

    # Register blueprints
    app.register_blueprint(login_register_bp)
    app.register_blueprint(language_bp)
    app.register_blueprint(web_bp)
    app.register_blueprint(slots_bp)
    app.register_blueprint(chatbot_bp)

    # Import models so tables are created
    from models.user import User
    from models.chats import ChatMessage

    with app.app_context():
        db.create_all()

    return app


if __name__ == "__main__":
    # Local development
    app = create_flask_app()
    app.run(host="0.0.0.0", port=5100, debug=True)



