templates/partials/_etablissements_cards.html.twig line 1

  1. {% for etablissement in etablissements %}
  2.     <div class="group bg-white rounded-xl border border-slate-200 p-5 hover:shadow-lg transition-all hover:-translate-y-1 hover:border-indigo-200 relative etablissement-card">
  3.         <!-- En-tête -->
  4.         <div class="mb-3">
  5.             <a href="{{ path('app_candidature_new', {'etablissement': etablissement.id}) }}" >
  6.                 <h3 class="text-lg font-semibold text-slate-900 group-hover:text-indigo-600 transition">
  7.                     {{ etablissement.nom }}
  8.                 </h3>
  9.             </a>
  10.             {% if etablissement.localite %}
  11.                 <p class="text-xs text-slate-500 mt-1">
  12.                     <i class="fas fa-map-marker-alt mr-1 text-indigo-400"></i>
  13.                     {{ etablissement.localite.nom }}
  14.                     {% if etablissement.localite.directionRegionale %}
  15.                         - {{ etablissement.localite.directionRegionale.nom }}
  16.                     {% endif %}
  17.                 </p>
  18.             {% endif %}
  19.         </div>
  20.         
  21.         <!-- Stats -->
  22.         <div class="flex items-center text-xs text-slate-600 mb-3">
  23.             <i class="fas fa-briefcase mr-2 text-indigo-500"></i>
  24.             <span>{{ etablissement.etablissementMetiers|length }} métier(s)</span>
  25.             <span class="mx-2">•</span>
  26.             <i class="fas fa-users mr-1 text-green-500"></i>
  27.             {% set totalPlaces = 0 %}
  28.             {% for em in etablissement.etablissementMetiers %}
  29.                 {% set totalPlaces = totalPlaces + (em.nbrplace ?? 0) %}
  30.             {% endfor %}
  31.             <span>{{ totalPlaces }} place(s)</span>
  32.         </div>
  33.         
  34.         <!-- Liste des métiers (badges) -->
  35.         {% if etablissement.etablissementMetiers|length > 0 %}
  36.         <div class="mb-3">
  37.             <div class="flex flex-wrap gap-1">
  38.                 {% for em in etablissement.etablissementMetiers|slice(0, 8) %}
  39.                     {% if em.metier %}
  40.                     <a href="{{ path('app_candidature_new', {'etablissement': etablissement.id, 'metier': em.metier.id}) }}"  
  41.                             class="px-3 py-1 bg-indigo-50 text-indigo-700 text-sm rounded-full" 
  42.                             title="Postuler pour {{ em.metier.nom }}">
  43.                         {{ em.metier.nom|length > 25 ? em.metier.nom|slice(0, 25) ~ '…' : em.metier.nom }}
  44.                     </a>
  45.                     {% endif %}
  46.                 {% endfor %}
  47.                 {% if etablissement.etablissementMetiers|length > 8 %}
  48.                     <span class="px-3 py-1 bg-slate-100 text-slate-600 text-sm rounded-full" title="Voir les {{ etablissement.etablissementMetiers|length }} métiers">
  49.                         +{{ etablissement.etablissementMetiers|length - 8 }}
  50.                     </span>
  51.                 {% endif %}
  52.             </div>
  53.         </div>
  54.         {% endif %}
  55.         
  56.         <!-- Bouton d'action -->
  57.         <!--div class="flex justify-end mt-3 pt-2 border-t border-slate-100">
  58.             <a href="{ { path('app_candidature_new', {'etablissement': etablissement.id}) }}" 
  59.                class="inline-flex items-center text-sm font-medium text-green-600 hover:text-green-700 transition group/btn">
  60.                 <span>Choisir</span>
  61.                 <i class="fas fa-arrow-right ml-1 text-xs group-hover/btn:translate-x-1 transition-transform"></i>
  62.             </a>
  63.         </div-->
  64.     </div>
  65. {% else %}
  66.     <div class="col-span-full text-center py-12">
  67.         <div class="w-16 h-16 bg-slate-100 rounded-full flex items-center justify-center mx-auto mb-4">
  68.             <i class="fas fa-school text-2xl text-slate-400"></i>
  69.         </div>
  70.         <p class="text-lg text-slate-600">Aucun établissement trouvé</p>
  71.         <p class="text-sm text-slate-500">Essayez de modifier vos filtres</p>
  72.     </div>
  73. {% endfor %}