"""
Contexte Django pour les templates HTML BMC et BP.
Utilisé pour rendre templates/bmc/index.html et templates/bp/index.html avec les vraies données.
"""
from datetime import datetime
from business_plan.models import BusinessPlan


def _text_to_list(text):
    """Découpe un texte par lignes, filtre les vides, retourne une liste pour <li>."""
    if not text or not str(text).strip():
        return []
    return [line.strip() for line in str(text).strip().split("\n") if line.strip()]


def get_bmc_template_context(bmc, request=None):
    """
    Construit le contexte pour le template templates/bmc/index.html.
    company_name et project_title viennent du BP de l'entrepreneur si existant.
    """
    user = getattr(bmc, "entrepreneur", None)
    author_name = "Participant"
    if user:
        author_name = f"{getattr(user, 'first_name', '') or ''} {getattr(user, 'last_name', '') or ''}".strip()
        if not author_name:
            author_name = getattr(user, "email", "Participant")

    company_name = "Projet"
    project_title = getattr(bmc, "value_proposition", "")[:60] if getattr(bmc, "value_proposition", None) else "Business Model Canvas"
    try:
        bp = BusinessPlan.objects.filter(entrepreneur=bmc.entrepreneur).first()
        if bp:
            company_name = (getattr(bp, "company_name", None) or "").strip() or company_name
            project_title = (getattr(bp, "project_title", None) or "").strip() or company_name
    except Exception:
        pass

    updated = getattr(bmc, "updated_at", None) or getattr(bmc, "created_at", None) or datetime.now()
    if hasattr(updated, "strftime"):
        doc_date = updated.strftime("%B %Y")  # Février 2026
    else:
        doc_date = str(updated)[:7]

    return {
        "company_name": company_name,
        "project_title": project_title,
        "document_title": f"{company_name} - {project_title}" if project_title != company_name else company_name,
        "author_name": author_name,
        "document_date": doc_date,
        "version": "1.0",
        "key_partners_list": _text_to_list(getattr(bmc, "key_partners", "")),
        "key_activities_list": _text_to_list(getattr(bmc, "key_activities", "")),
        "key_resources_list": _text_to_list(getattr(bmc, "key_resources", "")),
        "value_proposition_text": (getattr(bmc, "value_proposition", "") or "").strip(),
        "value_proposition_list": _text_to_list(getattr(bmc, "value_proposition", "")),
        "customer_relationships_list": _text_to_list(getattr(bmc, "customer_relationships", "")),
        "channels_list": _text_to_list(getattr(bmc, "channels", "")),
        "customer_segments_list": _text_to_list(getattr(bmc, "customer_segments", "")),
        "cost_structure_list": _text_to_list(getattr(bmc, "cost_structure", "")),
        "revenue_streams_list": _text_to_list(getattr(bmc, "revenue_streams", "")),
    }
