{# templates/analytics/_bloc_pipeline.html.twig ───────────────────────────────────────────────────────────────────────────── Bloc pipeline — Force de Vente et Multi uniquement. Paramètres attendus : pipeline (array) → collection d'entités Recommendation triées par createdAt DESC Actions disponibles depuis ce bloc : POST /compte/analytics/recommendation/{id}/statut → permet de faire avancer un lead : new → contacted → converted ───────────────────────────────────────────────────────────────────────────── #} {# ── Regroupement par statut ── #} {% set leadsNew = pipeline | filter(r => r.status == 'new') %} {% set leadsContacted = pipeline | filter(r => r.status == 'contacted') %} {% set leadsConverted = pipeline | filter(r => r.status == 'converted') %} {# ── Config des statuts ── #} {% set statutConfig = { 'new': { 'label': '🆕 Nouveau', 'couleur': '#667eea', 'bg': '#667eea0d' }, 'contacted': { 'label': '📞 Contacté', 'couleur': '#f59e0b', 'bg': '#f59e0b0d' }, 'converted': { 'label': '✅ Converti', 'couleur': '#22c55e', 'bg': '#22c55e0d' } } %}

📋 Pipeline prescripteurs

{{ pipeline | length }} lead{{ pipeline | length > 1 ? 's' : '' }}
{% if pipeline is empty %}

Aucun lead dans le pipeline.

💡 Les leads apparaissent ici lorsque des contacts remplissent le formulaire de recommandation depuis votre carte Force de Vente.

{% else %} {# ══════════════════════════════════════════════════════════════════ VUE KANBAN — 3 colonnes ══════════════════════════════════════════════════════════════════ #}
{% for statut, leads in { 'new': leadsNew, 'contacted': leadsContacted, 'converted': leadsConverted } %} {% set config = statutConfig[statut] %}
{# En-tête colonne #}
{{ config.label }} {{ leads | length }}
{# Cartes leads #} {% if leads is empty %}

Aucun lead ici.

{% else %} {% for lead in leads %}
{# Identité du contact — PSEUDONYMISÉE côté affichage #}
{{ lead.contactName }} {% if lead.contactEntreprise %} {{ lead.contactEntreprise }} {% endif %}
{# Offre suggérée #} {% if lead.offreSuggeree %} {{ lead.offreSuggeree | capitalize }} {% endif %} {# Date de création #} {{ lead.createdAt | date('d/m/Y') }} {# Message #} {% if lead.message %}

{{ lead.message|length > 80 ? lead.message|slice(0, 80) ~ '…' : lead.message }}

{% endif %} {# Actions — boutons de progression de statut #}
{% if statut == 'new' %}
{% elseif statut == 'contacted' %}
{% elseif statut == 'converted' %} 🏆 Converti le {{ lead.updatedAt | date('d/m/Y') }} {% endif %} {# Lien contact direct #} {% if lead.contactEmail %} ✉️ Contacter {% endif %}
{% endfor %} {% endif %}
{% endfor %}
{# ══════════════════════════════════════════════════════════════════ NOTE RGPD — contacts tiers ══════════════════════════════════════════════════════════════════ #}

🔒 Les données de contact affichées ici sont issues des formulaires de recommandation soumis volontairement. Elles sont supprimées automatiquement après 90 jours — conformité RGPD (article 5.1.e).

{% endif %}