from django import template

register = template.Library()

# Flask endpoint → Django view name (para classe active no menu)
ENDPOINT_TO_VIEW = {
    "reviews.detail": "reviews:detail",
    "reviews.settings": "reviews:settings",
    "planning.protocol": "planning:protocol",
    "planning.index": "planning:protocol",
    "planning.quality": "planning:quality",
    "planning.extraction": "planning:extraction",
    "conducting.search": "planning:protocol",
    "conducting.import_studies": "conducting:import_studies",
    "conducting.index": "conducting:import_studies",
    "conducting.selection": "conducting:selection",
    "conducting.quality_assessment": "conducting:quality_assessment",
    "conducting.data_extraction": "conducting:data_extraction",
    "conducting.analysis": "conducting:analysis",
    "reporting.index": "reporting:index",
    "reporting.synthesis": "reporting:synthesis",
    "reporting.thesis_reminders": "reporting:thesis_reminders",
    "reporting.thesis_reminders_print": "reporting:thesis_reminders_print",
}


@register.inclusion_tag("reviews/_sidebar_item.html", takes_context=True)
def sidebar_link(context, endpoint, url_name, icon, label, active_endpoints=None):
    review = context["review"]
    request = context["request"]
    active_views = []
    if active_endpoints:
        eps = [e.strip() for e in active_endpoints.split(",") if e.strip()]
    else:
        eps = [endpoint]
    for ep in eps:
        active_views.append(ENDPOINT_TO_VIEW.get(ep, ep.replace(".", ":")))
    view_name = ""
    if request.resolver_match:
        view_name = request.resolver_match.view_name or ""
    status = {}
    if "review_sidebar_status" in context:
        status = context["review_sidebar_status"].get(endpoint, {})
    from django.urls import reverse

    return {
        "url": reverse(url_name, kwargs={"review_id": review.id}),
        "icon": icon,
        "label": label,
        "active": view_name in active_views,
        "done": status.get("done"),
        "blocked": status.get("blocked"),
    }
