from flask import Blueprint, request, jsonify
from application import db
from application.dashboard.models import AllowedPlate, LoggedItem
from application.api.image_processing import process_image
from datetime import datetime
import asyncio

api_blueprint = Blueprint("api", __name__, template_folder="templates")


# API to process vehicle
@api_blueprint.route("/", methods=["POST"])
def data():
    data = request.data
    np = asyncio.run(process_image(image=data))

    # Check if the found plate is allowed to exit
    allowed = AllowedPlate.query.filter_by(plate=np).first() is not None
    db.session.add(  # Log the found numberplate and status
        LoggedItem(plate=np, allowed=allowed, datetime=datetime.now())
    )
    db.session.commit()

    # Return decision to Pico
    return jsonify(
        {
            "message": "Image sent succesfully",
            "status": allowed,
        }
    )
