{% extends '@App/app.html.twig' %} {% block title %}Calendrier des absences{% endblock %} {% block page_header %}{% endblock %} {% block content %} {% set status_options = { approved: 'Validées', submitted: 'Soumises', pending_manager: 'Att. manager', pending_rh: 'Att. RH' } %} {% set current_view = calendar.view|default(filters.view|default('month')) %} {% set month_names = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'] %} {% set period_month_label = month_names[calendar.period_start|date('n') - 1]|capitalize ~ ' ' ~ calendar.period_start|date('Y') %}

Calendrier des absences

{% if current_view == 'month' %} {{ period_month_label }} {% else %} {{ calendar.period_start|date('d') }} - {{ calendar.period_end|date('d/m/Y') }} {% endif %}
Aujourd'hui
{% for view, label in {month: 'Mois', week: 'Semaine', list: 'Liste'} %} {% if current_view == view %} {{ label }} {% else %} {{ label }} {% endif %} {% endfor %}
{% if current_view == 'month' %}
{% for label in ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'] %} {{ label }} {% endfor %}
{% for week in calendar.month_weeks %}
{% for day in week %}
{{ day.day|trim('0', 'left') }} {% for holiday in day.holidays %} Férié {{ holiday.title }} {% endfor %} {% for closure in day.closures %} Fermeture {{ closure.title }} {% endfor %}
{% for event in day.events|slice(0, 3) %} {{ event.salarie.nom|default(event.salarie) }} - {{ event.label }} {% endfor %} {% if day.events|length > 3 %} + {{ day.events|length - 3 }} autre{{ day.events|length - 3 > 1 ? 's' : '' }} {% endif %}
{% endfor %}
{% endfor %}
{% elseif current_view == 'week' %}
{% for day in calendar.days %} {% endfor %} {% for row in calendar.rows %} {% set salarie = row.salarie %} {% set photo_path = salarie.photo ? salarie.photo|trim : null %} {% set avatar_src = photo_path ? (photo_path starts with 'http://' or photo_path starts with 'https://' ? photo_path : asset(photo_path starts with '/' ? photo_path|slice(1) : photo_path)) : null %} {% set initials = ((salarie.prenom|default('')|first) ~ (salarie.nom|default('')|first))|upper ?: 'S' %} {% for cell in row.cells %} {% endfor %} {% else %} {% endfor %}
Collaborateur {{ day.weekday }} {{ day.day }} {% if day.has_conflict %} Conflit {% endif %}
{% if avatar_src %} {{ salarie }} {% else %} {{ initials }} {% endif %} {{ salarie }} {{ salarie.employeeService|default(salarie.service|default('Service')) }} {% if cell.request %} {{ cell.label }} {% endif %}
Aucun collaborateur à afficher.
{% else %}
{% for event in calendar.events %} {% set salarie = event.salarie %} {% set photo_path = salarie.photo ? salarie.photo|trim : null %} {% set avatar_src = photo_path ? (photo_path starts with 'http://' or photo_path starts with 'https://' ? photo_path : asset(photo_path starts with '/' ? photo_path|slice(1) : photo_path)) : null %} {% set initials = ((salarie.prenom|default('')|first) ~ (salarie.nom|default('')|first))|upper ?: 'S' %} {% else %} {% endfor %}
Salarié Type Période Durée Statut Actions
{% if avatar_src %} {{ salarie }} {% else %} {{ initials }} {% endif %} {{ salarie }} {{ salarie.employeeService|default(salarie.service|default('Service')) }} {{ event.label }}{{ event.type.nom|default('Congé') }} {{ event.start|date('d/m/Y') }} - {{ event.end|date('d/m/Y') }} {{ event.duration|number_format(event.duration == event.duration|round ? 0 : 1, ',', ' ') }} j {{ status_options[event.status]|default(event.status) }} Voir
Aucune absence sur la période.
{% endif %}
{% endblock %}