import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from .config import Config
from dotenv import load_dotenv
from werkzeug.security import generate_password_hash

load_dotenv()

db = SQLAlchemy()

def create_app():
    app = Flask(__name__, template_folder='../templates', static_folder='static')
    app.config.from_object(Config)

    db.init_app(app)

    with app.app_context():
        from . import models
        db.create_all()

        # Create default admin if none exists
        from .models import Admin
        existing_admin = Admin.query.filter_by(email="admin@example.com").first()
        if not existing_admin:
            hashed_pw = generate_password_hash("admin123", method="pbkdf2:sha256")
            default_admin = Admin(email="admin@example.com", password=hashed_pw)
            db.session.add(default_admin)
        else:
    # Always reset password to admin123
            existing_admin.password = generate_password_hash("admin123", method="pbkdf2:sha256")
        db.session.commit()
    # register blueprints
    from .routes_admin import admin_bp
    from .routes_client import client_bp
    app.register_blueprint(admin_bp)
    app.register_blueprint(client_bp)

    return app
