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 , mail
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)




    # ✅ Your host mail settings
    app.config['MAIL_SERVER'] = 'mail.mykaman.ir'
    app.config['MAIL_PORT'] = 465
    app.config['MAIL_USE_SSL'] = True
    app.config['MAIL_USE_TLS'] = False  # must be False since we use SSL
    app.config['MAIL_USERNAME'] = 'no-reply@vipatech.mykaman.ir'
    app.config['MAIL_PASSWORD'] = 'Milad1375422'
    app.config['MAIL_DEFAULT_SENDER'] = ('دستیار هوشمند تکسورا', 'no-reply@vipatech.mykaman.ir')

    mail.init_app(app)




    # 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)
