feat(Docuseal): Ajoute la récupération du lien de signature Docuseal.

This commit is contained in:
Serreau Jovann
2025-10-10 10:41:33 +02:00
parent 31d9c7800d
commit 72900b5daa
4 changed files with 26 additions and 9 deletions

View File

@@ -6,11 +6,13 @@ use App\Entity\CustomerAdvertPayment;
use App\Repository\CustomerAdvertPaymentRepository;
use App\Repository\CustomerDevisRepository;
use App\Repository\CustomerOrderRepository;
use App\Service\Docuseal\SignClient;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Vich\UploaderBundle\Templating\Helper\UploaderHelper;
class DashboardController extends AbstractController
{
@@ -18,7 +20,9 @@ class DashboardController extends AbstractController
public function artemis(Request $request,
CustomerOrderRepository $customerOrderRepository,
CustomerAdvertPaymentRepository $customerAdvertPaymentRepository,
CustomerDevisRepository $customerDevisRepository
CustomerDevisRepository $customerDevisRepository,
SignClient $signClient,
UploaderHelper $uploaderHelper
): Response
{
$invoiceList = [];
@@ -37,6 +41,8 @@ class DashboardController extends AbstractController
'date' => $order->getCreateAt()->format('Y-m-d'),
'amount' => $amount,
'status' => $order->getState(),
'file' => ''
];
}
foreach ($customerAdvertPaymentRepository->findBy(['customer'=>$customer]) as $order) {
@@ -52,6 +58,7 @@ class DashboardController extends AbstractController
'date' => $order->getCreateAt()->format('Y-m-d'),
'amount' => $amount,
'status' => $order->getState(),
'file' => ''
];
}
foreach ($customerDevisRepository->findBy(['customer'=>$customer]) as $order) {
@@ -59,11 +66,17 @@ class DashboardController extends AbstractController
foreach ($order->getCustomerDevisLines() as $customerOrderLine) {
$amount += (1.*20*$customerOrderLine->getPriceHt());
}
$signLink = "";
if($order->getState() =="send") {
$signLink = $signClient->getLinkSign($order->getDevisSubmiterId());
}
$devisList[] = [
'reference' => $order->getNumDevis(),
'date' => $order->getCreateAt()->format('Y-m-d'),
'amount' => $amount,
'status' => $order->getState(),
'signLink' => $signLink,
'file' => $uploaderHelper->asset($order,'devis')
];
}
}

View File

@@ -34,6 +34,7 @@ class SignClient
throw new \RuntimeException('No current request available');
}
$submissionId = $this->docuseal->createSubmissionFromPdf([
'name' => 'Devis N°' . $devis->getNumDevis(),
'completed_redirect_url' => $this->urlGenerator->generate(
@@ -95,4 +96,10 @@ class SignClient
return $path;
}
public function getLinkSign(?string $submittersId)
{
$submissionData = $this->docuseal->getSubmitter($submittersId);
return "https://signature.esy-web.dev/s/" . $submissionData['slug'];
}
}

View File

@@ -4,18 +4,12 @@
{% block content %}
{# Titre adapté au Dark Mode #}
<h1 class="text-3xl font-bold text-gray-800 dark:text-gray-100 mb-8">Espace Client - Tableau de Bord</h1>
{% if is_granted('ROLE_CUSTOMER') %}
<h1 class="text-3xl font-bold text-gray-800 dark:text-gray-100 mb-8">Espace Client - Tableau de Bord</h1>
{# Données Statiques simulant les informations de l'API/BDD #}
{% set static_quotes = [
{'reference': 'D-2024-0021', 'date': '2024-10-01', 'amount': 890.50, 'status': 'Accepté', 'id': 21},
{'reference': 'D-2024-0020', 'date': '2024-09-10', 'amount': 120.00, 'status': 'En cours', 'id': 20},
] %}
{% set payment_plan = {
'next_due_date': '2025-10-20',
'next_amount': 125.50,

View File

@@ -36,7 +36,10 @@
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
{# Bouton 'Voir' stylisé pour le Dark Mode #}
<a href="#" class="text-indigo-400 hover:text-indigo-300 font-medium py-1 px-3 border border-indigo-600 rounded-md transition duration-150 ease-in-out hover:bg-indigo-700">Voir</a>
<a target="_blank" href="{{ document.file }}" class="text-indigo-400 hover:text-indigo-300 font-medium py-1 px-3 border border-indigo-600 rounded-md transition duration-150 ease-in-out hover:bg-indigo-700">Voir</a>
{% if type == "devis" and document.status == "send" %}
<a target="_blank" href="{{ document.signLink }}" class="text-green-400 hover:text-green-300 font-medium py-1 px-3 border border-green-600 rounded-md transition duration-150 ease-in-out hover:bg-green-700">Signée le devis</a>
{% endif %}
</td>
</tr>
{% endfor %}