from flask import render_template, request, redirect, session, flash
from extensions import app, mysql


# ==============================
# FUNGSI CEK LOGIN
# ==============================
def cek_login():
    return "login" in session


# ==============================
# FUNGSI CEK ROLE ADMIN
# ==============================
def cek_admin():
    return session.get("role") == "admin"


# ==============================
# FUNGSI CEK ROLE GUDANG
# ==============================
def cek_gudang():
    return session.get("role") == "gudang"


# ==============================
# FUNGSI CEK ROLE KASIR
# ==============================
def cek_kasir():
    return session.get("role") == "kasir"


# ==============================
# HALAMAN LOGIN
# ==============================
@app.route("/login", methods=["GET", "POST"])
def login():

    # Jika sudah login, arahkan sesuai role
    if cek_login():

        if cek_admin():
            return redirect("/admin")

        elif cek_gudang():
            return redirect("/gudang")

        elif cek_kasir():
            return redirect("/kasir")

    if request.method == "POST":

        username = request.form.get("username", "").strip()
        password = request.form.get("password", "").strip()

        if username == "" or password == "":
            flash("Username dan password wajib diisi.", "danger")
            return redirect("/login")

        cursor = mysql.connection.cursor()

        cursor.execute(
            """
            SELECT
                id,
                nama,
                username,
                password,
                role,
                status
            FROM users
            WHERE username = %s
            LIMIT 1
            """,
            (username,)
        )

        user = cursor.fetchone()

        cursor.close()

        if user is None:
            flash("Username atau password salah.", "danger")
            return redirect("/login")

        user_id = user[0]
        nama = user[1]
        username_db = user[2]
        password_db = user[3]
        role = user[4]
        status = user[5]

        # Untuk tahap awal masih menggunakan password plaintext
        if password != password_db:
            flash("Username atau password salah.", "danger")
            return redirect("/login")

        if status != "aktif":
            flash("Akun Anda sedang tidak aktif.", "danger")
            return redirect("/login")

        # Membuat session
        session["login"] = True
        session["user_id"] = user_id
        session["nama"] = nama
        session["username"] = username_db
        session["role"] = role

        # Redirect berdasarkan role
        if role == "admin":
            return redirect("/admin")

        elif role == "gudang":
            return redirect("/gudang")

        elif role == "kasir":
            return redirect("/kasir")

        else:
            session.clear()
            flash("Role pengguna tidak dikenali.", "danger")
            return redirect("/login")

    return render_template("auth/login.html")


# ==============================
# LOGOUT
# ==============================
@app.route("/logout")
def logout():

    session.clear()

    flash("Anda berhasil logout.", "success")

    return redirect("/login")