from flask import Blueprint, redirect, render_template, request, url_for
from flask_login import current_user, login_required

from services.email_service import send_issue_notification
from services.issue_service import create_issue, get_issue, update_issue

blueprint = Blueprint("issues", __name__, url_prefix="/tickets")

PROJECT_ID = 1  # DAROS-PDV fixo por enquanto (ver handoff, Decisão 4)


@blueprint.route("/novo", methods=["GET", "POST"])
@login_required
def novo():
    if request.method == "POST":
        title = request.form.get("title")
        description = request.form.get("description")
        issue = create_issue(PROJECT_ID, title, description)
        send_issue_notification(
            issue, current_user.name or current_user.email, "criou", PROJECT_ID
        )
        return redirect(url_for("main.dashboard"))

    return render_template("tickets/form.html", issue=None)


@blueprint.route("/<int:issue_id>/editar", methods=["GET", "POST"])
@login_required
def editar(issue_id):
    issue = get_issue(issue_id)

    if request.method == "POST":
        title = request.form.get("title")
        description = request.form.get("description")
        issue = update_issue(issue_id, title, description)
        send_issue_notification(
            issue, current_user.name or current_user.email, "alterou", PROJECT_ID
        )
        return redirect(url_for("main.dashboard"))

    return render_template("tickets/form.html", issue=issue)
