{# # ============================================================================ # ORGANISM: CONTRACT LIST # ============================================================================ # # Liste de contrats dans une card avec header. # Utilisé sur les pages admin utilisateur et entreprise. # # ============================================================================ # PARAMÈTRES # ============================================================================ # # | Paramètre | Type | Défaut | Description | # |------------|--------|---------------------|------------------------------| # | contracts | array | [] | Liste des contrats | # | title | string | 'Contrats actifs' | Titre de la section | # | emptyTitle | string | 'Aucun contrat' | Titre état vide | # | emptyDesc | string | 'Pas de contrat...' | Description état vide | # # Chaque contrat doit avoir: # - name: string # - startDate: DateTimeInterface # - endDate: DateTimeInterface # - tools: array de Tool entities ou codes # - monthlyTokens ou tokens: int # - isActive (optionnel): bool # - company.uuid (optionnel): pour le lien # # ============================================================================ # EXEMPLES D'UTILISATION # ============================================================================ # # Basique: # {% include '_organisms/contract-list/contract-list.html.twig' with { # contracts: userContracts # } only %} # # Personnalisé: # {% include '_organisms/contract-list/contract-list.html.twig' with { # contracts: companyContracts, # title: 'Contrats de l'entreprise', # emptyTitle: 'Aucun contrat associé', # emptyDesc: 'Créez un contrat pour cette entreprise.' # } only %} # # ============================================================================ #} {% set contracts = contracts|default([]) %} {% set title = title|default('Contrats actifs') %} {% set emptyTitle = emptyTitle|default('Aucun contrat') %} {% set emptyDesc = emptyDesc|default("Aucun contrat n'est associé pour le moment.") %}
{# Header #}
{% include '_atoms/icon/icon.html.twig' with { name: 'file-text', size: 'md', color: 'success' } only %}

{{ title }}

{% if contracts|length > 0 %} {% include '_atoms/badge/badge.html.twig' with { label: contracts|length, variant: 'success', size: 'sm' } only %} {% endif %}
{# Body #}
{% if contracts|length > 0 %}
{% for contract in contracts %} {% set contractName = contract.name|default('Contrat') %} {% set contractTools = contract.tools|default([]) %} {% set contractTokens = contract.monthlyTokens is defined ? contract.monthlyTokens : (contract.tokens|default(0)) %} {% set contractActive = contract.isActive is defined ? contract.isActive : true %} {% set contractHref = contract.company is defined and contract.company ? path('admin_company_show', {uuid: contract.company.uuid}) ~ '#contracts' : null %} {% include '_molecules/contract-row/contract-row.html.twig' with { name: contractName, startDate: contract.startDate, endDate: contract.endDate, tools: contractTools, tokens: contractTokens, isActive: contractActive, href: contractHref } only %} {% endfor %}
{% else %} {% include '_molecules/empty-state/empty-state.html.twig' with { title: emptyTitle, description: emptyDesc, icon: 'file-text', size: 'sm' } only %} {% endif %}