diff --git a/.env b/.env index 371ccf0..54e60be 100644 --- a/.env +++ b/.env @@ -85,7 +85,7 @@ STRIPE_WEBHOOKS_SECRET= SIGN_URL=https://00ca-212-114-31-239.ngrok-free.app STRIPE_BASEURL=https://00ca-212-114-31-239.ngrok-free.app -CONTRAT_BASEURL=https://00ca-212-114-31-239.ngrok-free.app +CONTRAT_BASEURL=https://esyweb.local MINIO_S3_URL= MINIO_S3_CLIENT_ID= diff --git a/src/Controller/Webhooks.php b/src/Controller/Webhooks.php index df93ecf..ed432a4 100644 --- a/src/Controller/Webhooks.php +++ b/src/Controller/Webhooks.php @@ -189,6 +189,46 @@ class Webhooks extends AbstractController $metadata = $content->metadata; $status = $content->status ?? ''; + // Email de notification admin (à adapter si besoin) + $adminEmail = 'contact@ludikevent.fr'; + + // --- TRAITEMENT DES CONTRATS --- + if (isset($metadata->type) && $metadata->type === "contrat" && isset($metadata->id)) { + $contrats = $contratsRepository->find($metadata->id); + + if ($contrats instanceof Contrats) { + // Cas 1 : Signature refusée par le client + if ($status === "declined") { + $reason = $content->decline_reason ?? 'Aucune raison spécifiée'; + + $contrats->setRefused(true); + $contrats->setRefusedRaison($reason); + + $entityManager->persist($contrats); + $entityManager->flush(); + + // Notification ADMIN + $customer = $contrats->getCustomer(); + if ($customer) { + $mailer->send( + $adminEmail, + "Intranet Ludikevent", + "[Action Requise] Refus de signature - Contrat n°" . $contrats->getNumReservation(), + "mails/customer/contrat_refuses.twig", + [ + 'contrat' => $contrats, + 'raison' => $reason, + ] + ); + } + + $appLogger->record('WEBHOOK', sprintf("Contrat %s refusé par le client. Raison: %s", $contrats->getNumReservation(), $reason)); + + return new Response("ok-contrat-declined"); + } + } + } + // --- TRAITEMENT DES DEVIS --- if (isset($metadata->type) && $metadata->type === "devis" && isset($metadata->id)) { $devis = $devisRepository->find($metadata->id); @@ -204,13 +244,13 @@ class Webhooks extends AbstractController $entityManager->persist($devis); $entityManager->flush(); - // Notification au client (Confirmation de prise en compte du refus) + // Notification ADMIN $customer = $devis->getCustomer(); if ($customer) { $mailer->send( - $customer->getEmail(), - $customer->getName() . " " . $customer->getSurname(), - "[Intranet Ludikevent] - Le client a refusé la signature du devis n°" . $devis->getNum(), + $adminEmail, + "Intranet Ludikevent", + "[Action Requise] Refus de signature - Devis n°" . $devis->getNum(), "mails/customer/devis_refuses.twig", [ 'devis' => $devis, @@ -224,9 +264,8 @@ class Webhooks extends AbstractController return new Response("ok-devis-declined"); } - // Cas 2 : Signature complétée (Optionnel - à implémenter selon vos besoins) + // Cas 2 : Signature complétée if ($status === "completed") { - // Logique de succès (ex: passage en contrat) $appLogger->record('WEBHOOK', sprintf("Devis %s signé avec succès.", $devis->getNum())); return new Response("ok-devis-completed"); } diff --git a/src/Entity/Contrats.php b/src/Entity/Contrats.php index f7d9664..af2a63d 100644 --- a/src/Entity/Contrats.php +++ b/src/Entity/Contrats.php @@ -152,6 +152,12 @@ class Contrats #[ORM\ManyToOne(inversedBy: 'contrats')] private ?Prestaire $prestataire = null; + #[ORM\Column(nullable: true)] + private ?bool $refused = null; + + #[ORM\Column(type: Types::TEXT, nullable: true)] + private ?string $refusedRaison = null; + public function __construct() { $this->contratsPayments = new ArrayCollection(); @@ -904,4 +910,28 @@ class Contrats })->first() instanceof ContratsPayments; } + public function isRefused(): ?bool + { + return $this->refused; + } + + public function setRefused(?bool $refused): static + { + $this->refused = $refused; + + return $this; + } + + public function getRefusedRaison(): ?string + { + return $this->refusedRaison; + } + + public function setRefusedRaison(?string $refusedRaison): static + { + $this->refusedRaison = $refusedRaison; + + return $this; + } + } diff --git a/templates/dashboard/devis/list.twig b/templates/dashboard/devis/list.twig index bdaa537..b6de74a 100644 --- a/templates/dashboard/devis/list.twig +++ b/templates/dashboard/devis/list.twig @@ -5,7 +5,7 @@ {% block actions %}
{{ reason }}
+Aucun devis trouvé
+Aucun devis trouvé
+Légende des actions
-