{% extends 'base.html.twig' %}

{% set jours_fr = ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'] %}
{% set motif_labels = {
    'indisponibilite': 'Indisponibilité',
    'accident_travail': 'Accident travail',
    'arret_travail': 'Arrêt travail'
} %}

{% block title %}Agenda agents — {{ monthName|capitalize }} {{ year }}{% endblock %}

{% block body %}
<div class="row">
    <div class="col-12">
        <div class="page-title-box d-sm-flex align-items-center justify-content-between">
            <h4 class="mb-sm-0 font-size-18">Agenda agents — Indisponibilités</h4>
            <div class="page-title-right">
                <ol class="breadcrumb m-0">
                    <li class="breadcrumb-item"><a href="{{ path('app_planning_agent_index') }}">Planning</a></li>
                    <li class="breadcrumb-item active">Agenda agents</li>
                </ol>
            </div>
        </div>
    </div>
</div>

<div class="row">
    <div class="col-12">
        <div class="card">
            <div class="card-body">

                <!-- Navigation mois -->
                <div class="d-flex align-items-center justify-content-between mb-4">
                    <a href="{{ path('app_admin_agenda_month', {year: prevYear, month: prevMonth}) }}"
                       class="btn btn-outline-secondary btn-sm">
                        <i class="bi bi-chevron-left"></i>
                    </a>
                    <h5 class="mb-0 fw-bold">{{ monthName|upper }} {{ year }}</h5>
                    <a href="{{ path('app_admin_agenda_month', {year: nextYear, month: nextMonth}) }}"
                       class="btn btn-outline-secondary btn-sm">
                        <i class="bi bi-chevron-right"></i>
                    </a>
                </div>

                <!-- Tableau récapitulatif -->
                {% if agents|length == 0 %}
                    <p class="text-muted">Aucun agent enregistré.</p>
                {% else %}
                <div class="table-responsive">
                    <table class="table table-bordered table-sm align-middle" style="font-size:.82rem;">
                        <thead class="table-light">
                            <tr>
                                <th style="min-width:140px;">Agent</th>
                                {% for day in daysInMonth %}
                                    {% set dow = day.format('N')|number_format %}
                                    <th class="text-center px-0 {{ dow >= 6 ? 'table-secondary' : '' }}"
                                        style="min-width:28px; width:28px;">
                                        <div style="font-size:.7em; line-height:1.1;">{{ jours_fr[dow - 1] }}</div>
                                        <div style="font-size:.8em; font-weight:600;">{{ day.format('d') }}</div>
                                    </th>
                                {% endfor %}
                                <th class="text-center" style="min-width:40px;">Total</th>
                            </tr>
                        </thead>
                        <tbody>
                            {% for agent in agents %}
                                {% set agentUnavail = unavailByAgent[agent.id]|default({}) %}
                                {% set totalDays = 0 %}
                                <tr>
                                    <td class="fw-semibold">
                                        {{ agent.lastName }} {{ agent.firstName }}
                                        {% if agent.matricule %}
                                            <br><small class="text-muted">{{ agent.matricule }}</small>
                                        {% endif %}
                                    </td>
                                    {% for day in daysInMonth %}
                                        {% set dateKey = day.format('Y-m-d') %}
                                        {% set dow = day.format('N')|number_format %}
                                        {% set dayUnavails = agentUnavail[dateKey]|default([]) %}
                                        {% set hasUnavail = dayUnavails|length > 0 %}
                                        {% if hasUnavail %}{% set totalDays = totalDays + 1 %}{% endif %}
                                        <td class="text-center p-0 {{ hasUnavail ? 'table-danger' : (dow >= 6 ? 'table-secondary' : '') }}"
                                            {% if hasUnavail %}
                                            title="{{ agent.lastName }} {{ agent.firstName }} — {{ dateKey }}{% for u in dayUnavails %}: {% if u.allDay %}Toute la journée{% else %}{{ u.startTime|date('H:i') }}-{{ u.endTime|date('H:i') }}{% endif %}{% if u.reason %} ({{ motif_labels[u.reason]|default(u.reason) }}){% endif %}{% endfor %}"
                                            {% endif %}>
                                            {% if hasUnavail %}
                                                <span style="font-size:.7em; display:block; line-height:1.1;">
                                                    {% for u in dayUnavails %}
                                                        {% if u.allDay %}
                                                            <span class="text-danger fw-bold">✕</span>
                                                        {% else %}
                                                            <span class="text-danger" style="font-size:.85em;">{{ u.startTime|date('H:i') }}</span>
                                                        {% endif %}
                                                    {% endfor %}
                                                </span>
                                            {% endif %}
                                        </td>
                                    {% endfor %}
                                    <td class="text-center fw-bold {{ totalDays > 0 ? 'text-danger' : 'text-muted' }}">
                                        {{ totalDays > 0 ? totalDays : '—' }}
                                    </td>
                                </tr>
                            {% endfor %}
                        </tbody>
                    </table>
                </div>

                <!-- Légende -->
                <div class="d-flex gap-4 mt-3 flex-wrap">
                    <div class="d-flex align-items-center gap-2">
                        <div style="width:18px;height:18px;background:#f8d7da;border:1px solid #f5c2c7;border-radius:3px;"></div>
                        <small>Indisponible (✕ = journée entière)</small>
                    </div>
                    <div class="d-flex align-items-center gap-2">
                        <div style="width:18px;height:18px;background:#e9ecef;border:1px solid #dee2e6;border-radius:3px;"></div>
                        <small>Week-end</small>
                    </div>
                    <small class="text-muted"><i class="bi bi-info-circle me-1"></i>Survolez une cellule pour le détail.</small>
                </div>
                {% endif %}

            </div>
        </div>
    </div>
</div>

<!-- Détail par agent (cartes) -->
{% set hasAnyUnavail = false %}
{% for agent in agents %}
    {% if unavailByAgent[agent.id]|default({})|length > 0 %}
        {% set hasAnyUnavail = true %}
    {% endif %}
{% endfor %}

{% if hasAnyUnavail %}
<div class="row">
    <div class="col-12">
        <h6 class="mb-3 text-muted">Détail des indisponibilités — {{ monthName|capitalize }} {{ year }}</h6>
    </div>
    {% for agent in agents %}
        {% set agentUnavail = unavailByAgent[agent.id]|default({}) %}
        {% if agentUnavail|length > 0 %}
        <div class="col-md-4 col-lg-3 mb-3">
            <div class="card border-danger">
                <div class="card-header bg-danger text-white py-2">
                    <strong style="font-size:.9em;">{{ agent.lastName }} {{ agent.firstName }}</strong>
                    {% if agent.matricule %}<small class="ms-1 opacity-75">{{ agent.matricule }}</small>{% endif %}
                </div>
                <ul class="list-group list-group-flush">
                    {% for dateKey, dayUnavails in agentUnavail %}
                        {% for u in dayUnavails %}
                        <li class="list-group-item py-1 px-2" style="font-size:.82em;">
                            <span class="fw-semibold">{{ u.date|date('d/m/Y') }}</span>
                            <span class="ms-1 text-danger">
                                {% if u.allDay %}Toute la journée
                                {% else %}{{ u.startTime|date('H:i') }} – {{ u.endTime|date('H:i') }}
                                {% endif %}
                            </span>
                            {% if u.reason %}
                                <span class="badge bg-secondary ms-1" style="font-size:.75em;">{{ motif_labels[u.reason]|default(u.reason) }}</span>
                            {% endif %}
                        </li>
                        {% endfor %}
                    {% endfor %}
                </ul>
            </div>
        </div>
        {% endif %}
    {% endfor %}
</div>
{% endif %}

{% endblock %}
