feat(customer): Affiche les sites web du client sur la page d'édition.

This commit is contained in:
Serreau Jovann
2025-11-12 11:30:49 +01:00
parent 13979d7a6f
commit 18ac4dfb3c
2 changed files with 72 additions and 0 deletions

View File

@@ -21,6 +21,7 @@ use App\Entity\{Account,
CustomerSplitLine,
CustomerWallet,
CustomerWalletHistory,
EsyWeb\Website,
OrderNumberCurrent};
use App\Form\Artemis\Intranet\{CustomerDnsEmailType,
CustomerEditType,
@@ -713,6 +714,12 @@ class CustomerController extends AbstractController
return $this->redirectToRoute('artemis_intranet_customer_view', ['id' => $customer->getId(),'current'=>'wallet']);
}
$websites =[];
foreach ($entityManager->getRepository(Website::class)->findBy(['customer'=>$customer], ['id' => 'ASC']) as $website) {
$websites[] = $website;
$websites[] = $website;
$websites[] = $website;
}
return $this->render('artemis/intranet/customer/edit.twig', [
'form' => $form->createView(),
@@ -720,6 +727,7 @@ class CustomerController extends AbstractController
'formNddEmail' => $formNddEmail->createView(),
'formWallet' => $formWallet->createView(),
'customer' => $customer,
'websites' => $websites,
'ndd' => $customerNdd,
'isAccountCreated' => $customer->getAccount() instanceof Account,
'nddEmails' => $nddEmails,

View File

@@ -0,0 +1,64 @@
{#
Conteneur principal utilisant CSS Grid :
- grid: active le mode grille.
- grid-cols-1: par défaut, une colonne (pour mobile).
- md:grid-cols-3: sur les écrans "medium" (md) et plus, passe à trois colonnes.
- gap-4: espace de 1rem entre les éléments de la grille.
#}
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 p-4 dark:bg-gray-900 rounded-lg max-w-7xl mx-auto">
{% for website in websites %}
{# Conteneur de la carte (Chaque carte est un élément de la grille) #}
<div class="p-4 bg-white dark:bg-gray-800 shadow-lg rounded-lg border border-gray-200 dark:border-gray-700 hover:shadow-xl transition duration-300 flex flex-col h-full">
{# Titre et Type - Disposition Flexbox #}
<div class="flex justify-between items-start mb-2">
<h3 class="text-lg font-semibold text-gray-800 dark:text-gray-100">{{ website.title }}</h3>
{# Badge du Type - Couleurs conditionnelles #}
<span class="px-3 py-1 text-xs font-medium rounded-full flex-shrink-0
{% if website.type == 'e-commerce' %}
bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200
{% elseif website.type == 'blog' %}
bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200
{% else %}
bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-300
{% endif %}">
{# Traduire la valeur 'type' en majuscules (si c'est une clé) #}
{{ website.type|upper }}
</span>
</div>
{# Statut du site #}
<div class="text-sm text-gray-500 dark:text-gray-400 mb-4">
Statut Actuel :
{% set statusClass = 'bg-gray-600 text-gray-200' %}
{% if website.state == 'Actif' %}
{% set statusClass = 'bg-green-700/50 text-green-300' %}
{% elseif website.state == 'Suspendu' %}
{% set statusClass = 'bg-red-700/50 text-red-300' %}
{% elseif website.state == 'En Développement' %}
{% set statusClass = 'bg-yellow-700/50 text-yellow-300' %}
{% elseif website.state == 'validate' %}
{% set statusClass = 'bg-zinc-700/50 text-zinc-300' %}
{% elseif website.state == 'created' %}
{% set statusClass = 'bg-stone-700/50 text-stone-300' %}
{% else %}
{% set statusClass = 'bg-indigo-700/50 text-indigo-300' %}
{% endif %}
<span class="font-medium {{ statusClass }}">
{# Traduire la valeur 'state' en français (si ce n'est pas fait côté données) #}
{{ website.state }}
</span>
</div>
{# Bouton d'Action (Utilisation de mt-auto pour aligner en bas) #}
<div class="mt-auto">
<a href="{{ path('artemis_esyweb_view', {id: website.id}) }}"
class="inline-block w-full text-center px-4 py-2 text-sm font-medium text-white bg-indigo-600 rounded-md
hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 transition duration-150">
Voir les Détails
</a>
</div>
</div>
{% endfor %}
</div>