from flask import Flask, render_template, request, redirect, url_for, session, flash
from flask_sqlalchemy import SQLAlchemy
app = Flask(
    __name__,
    static_folder='stylesheets',      # kus asuvad CSS-id
    static_url_path='/stylesheets'    # URL-i prefiks neile
)

app.secret_key = "vaga_salajane"

# --- Andmebaasiseadistus ---
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///kasutajad.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

# --- Mudel andmebaasi jaoks ---
class Kasutaja(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(100), unique=True, nullable=False)
    parool = db.Column(db.String(100), nullable=False)

# --- Loo tabelid, kui neid pole ---
with app.app_context():
    db.create_all()


@app.route("/avaleht")
def avaleht():
    return render_template("avaleht.html", logged_in=session.get("user"))

# --- Konto loomine ---
@app.route("/kasutaja-loomine", methods=["GET", "POST"])
def konto_loomine():
    if request.method == "POST":
        email = request.form.get("email")
        pw = request.form.get("parool")
        pw_kontroll = request.form.get("parooli-kontroll")

        # Kontrollid
        if not email or not pw:
            flash("Palun täida kõik väljad.")
            return redirect(url_for("konto_loomine"))

        if pw != pw_kontroll:
            flash("Paroolid ei ühti.")
            return redirect(url_for("konto_loomine"))

        olemas = Kasutaja.query.filter_by(email=email).first()
        if olemas:
            flash("See e-post on juba registreeritud.")
            return redirect(url_for("konto_loomine"))

        # Salvesta kasutaja
        uus = Kasutaja(email=email, parool=pw)
        db.session.add(uus)
        db.session.commit()

        flash("Konto loodud! Logi nüüd sisse.")
        return redirect(url_for("sisse_logimine"))

    return render_template("kasutaja_loomine.html")

# --- Sisselogimine ---
@app.route("/sisse-logimine", methods=["GET", "POST"])
def sisse_logimine():
    if request.method == "POST":
        email = request.form.get("email")
        pw = request.form.get("parool")

        kasutaja = Kasutaja.query.filter_by(email=email, parool=pw).first()
        if kasutaja:
            session["user"] = kasutaja.email
            flash("Tere tulemast, " + kasutaja.email)
            return redirect(url_for("avaleht"))
        else:
            flash("Vale e-post või parool.")
            return redirect(url_for("sisse_logimine"))

    return render_template("sisse_logimine.html")


# --- Profiilileht (ainult sisse logituna) ---
@app.route("/profiil")
def profiil():
    if not session.get("user"):
        flash("Palun logi sisse, et näha profiili.")
        return redirect(url_for("sisse_logimine"))

    return render_template("profiil.html", username=session["user"])


@app.route("/meist")
def meist():
    return render_template("meist.html")


@app.route("/koolitused")
def koolitused():
    return render_template("koolitused.html")


@app.route("/booking", methods=["GET", "POST"])
def booking():
    if request.method == "POST":
        # Siia hiljem: vormi andmete lugemine ja salvestamine
        return redirect(url_for("booking_confirmed"))
    return render_template("booking.html")


@app.route("/booking-confirmed")
def booking_confirmed():
    return render_template("booking_confirmed.html")


@app.route("/logout")
def logout():
    session.pop("user", None)
    flash("Oled välja logitud.")
    return redirect(url_for("avaleht"))

if __name__ == "__main__":
    app.run(debug=True)
