from flask import Blueprint, render_template, request, jsonify
from application.dashboard.models import AllowedPlate, LoggedItem
from application import db
from application.dashboard.forms import npForm
from flask_login import login_required

dash_blueprint = Blueprint("dash", __name__, template_folder="templates")


@dash_blueprint.route("/dashboard")
@login_required
def dashboard():
    Plates = AllowedPlate.query.all()
    logs = (
        LoggedItem.query.order_by(LoggedItem.dateLogged.desc()).limit(50).all()
    )
    return render_template("dashboard.html", plates=Plates, logs=logs)


@dash_blueprint.route("/add", methods=["GET", "POST"])
@login_required
def add():
    Plates = AllowedPlate.query.all()
    form = npForm()

    if form.validate_on_submit():
        if form.numberplate.data:
            ap = AllowedPlate(plate=form.numberplate.data)
            db.session.add(ap)
            db.session.commit()

            # Update the list on the page with JavaScript
            if request.headers.get("X-Requested-With") == "XMLHttpRequest":
                plates = AllowedPlate.query.order_by(AllowedPlate.id).all()
                return jsonify(
                    {
                        "plates": [
                            {"id": p.id, "plate": p.plate} for p in plates
                        ]
                    }
                )

    Plates = AllowedPlate.query.order_by(AllowedPlate.id).all()
    return render_template("add.html", form=form, plates=Plates)
