feat(customer): Ajoute la génération de PDF pour la liste des emails.
```
This commit is contained in:
Serreau Jovann
2025-09-27 17:41:19 +02:00
parent c194825cc5
commit a8f8eb37df
4 changed files with 41 additions and 1 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Controller\Artemis\Intranet;
use App\Service\Pdf\EmailListPdf;
use App\Entity\{
Customer,
CustomerAdvertPayment,
@@ -51,6 +52,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\KernelInterface;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Uid\Uuid;
@@ -177,6 +179,7 @@ class CustomerController extends AbstractController
CustomerOrderRepository $customerOrderRepository,
VaultClient $vaultClient,
PaginatorInterface $paginator,
KernelInterface $kernel,
Client $client,
?Customer $customer,
CustomerDnsRepository $customerDnsRepository,
@@ -386,7 +389,13 @@ class CustomerController extends AbstractController
return $this->redirectToRoute('artemis_intranet_customer_view', ['id' => $customer->getId(), 'current' => 'email', 'idNdd' => $emailDelete->getDns()->getId()]);
}
}
if ($request->query->has('idNdd') && $request->query->has('pdf')) {
$idNdd = $request->query->getInt('idNdd');
$ndd = $entityManager->getRepository(CustomerDns::class)->find($idNdd);
$pdf = new EmailListPdf($kernel,$ndd);
$pdf->AddPage();
$pdf->Output('I');
}
if ($request->query->has('idEmailDelete')) {
$idEmailDelete = $request->query->getInt('idEmailDelete');
$emailDelete = $entityManager->getRepository(CustomerDnsEmail::class)->find($idEmailDelete);
@@ -533,6 +542,7 @@ class CustomerController extends AbstractController
'formNdd' => $formNdd->createView(),
'formNddEmail' => $formNddEmail->createView(),
'customer' => $customer,
'ndd' => $customerNdd,
'nddEmails' => $nddEmails,
'orderDevis' => $paginator->paginate($orderDevis, $request->query->getInt('page', 1), 20),
'orderOrders' => $paginator->paginate($orderOrder, $request->query->getInt('page', 1), 20),

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Service\Pdf;
use App\Entity\CustomerDns;
use Fpdf\Fpdf;
use Symfony\Component\HttpKernel\KernelInterface;
class EmailListPdf extends FPDF
{
public function __construct(
private readonly KernelInterface $kernel,
private readonly CustomerDns $customerDevis
) {
parent::__construct();
}
public function Header(): void
{
$this->Image($this->kernel->getProjectDir() . "/public/assets/logo_siteconseil.png", 90, 5, 25);
}
}

View File

@@ -1,3 +1,9 @@
<div class="grid grid-cols-1 md:grid-cols-4 gap-4 mb-6">
<a target="_blank" href="{{ path('artemis_intranet_customer_view',{id:customer.id,current:'email',idNdd:ndd.id,pdf:true}) }}" class="bg-purple-600 hover:bg-purple-700 text-white px-3 py-1 rounded">Liste des mails (sans mot de passe)</a>
<a href="{{ path('artemis_intranet_customer_view',{id:customer.id,current:'email',idNdd:ndd.id,pdfPassword:true}) }}" class="bg-purple-600 hover:bg-purple-700 text-white px-3 py-1 rounded">Liste des mails (avec mot de passe)</a>
<a target="_blank" href="{{ path('artemis_intranet_customer_view',{id:customer.id,current:'email',idNdd:ndd.id,pdfSend:true}) }}" class="bg-purple-600 hover:bg-purple-700 text-white px-3 py-1 rounded">Envoie la liste des email (sans mot de passe)</a>
<a href="{{ path('artemis_intranet_customer_view',{id:customer.id,current:'email',idNdd:ndd.id,pdfSendPassword:true}) }}" class="bg-purple-600 hover:bg-purple-700 text-white px-3 py-1 rounded">Envoie la liste des email (avec mot de passe)</a>
</div>
<div class="overflow-x-auto rounded-lg shadow-lg bg-white dark:bg-gray-800">
<table class="min-w-full divide-y divide-gray-300 dark:divide-gray-700">
<thead class="bg-gray-50 dark:bg-gray-700">

View File

@@ -1,3 +1,4 @@
<div class="overflow-x-auto rounded-lg shadow-lg bg-white dark:bg-gray-800">
<table class="min-w-full divide-y divide-gray-300 dark:divide-gray-700">
<thead class="bg-gray-50 dark:bg-gray-700">