diff --git a/src/Command/MailCommand.php b/src/Command/MailCommand.php index 8878225..ac4c264 100644 --- a/src/Command/MailCommand.php +++ b/src/Command/MailCommand.php @@ -49,17 +49,44 @@ class MailCommand extends Command continue; } - if(!$contrat->isAccompte()) { + if (!$contrat->isAccompte()) { $customer = $contrat->getCustomer(); - if ($customer) { - $this->mailer->send( - $customer->getEmail(), - $customer->getName() . " " . $customer->getSurname(), - "[Ludikevent] Rappel : Acompte à régler pour votre réservation N°" . $contrat->getNumReservation(), - "mails/task/contrat-noaccompte.twig", - ['contrat' => $contrat, 'customer' => $customer] - ); - $io->text("Rappel acompte envoyé pour le contrat : " . $contrat->getNumReservation()); + $diff = $contrat->getCreateAt() ? $contrat->getCreateAt()->diff($now)->days : 0; + + // Annulation automatique après 3 jours sans acompte + if ($diff >= 3) { + if ($customer) { + $this->mailer->send( + $customer->getEmail(), + $customer->getName() . " " . $customer->getSurname(), + "[Ludikevent] Réservation N°" . $contrat->getNumReservation() . " annulée - Acompte non reçu", + "mails/task/contrat-cancelled-noaccompte.twig", + ['contrat' => $contrat, 'customer' => $customer] + ); + } + foreach ($contrat->getContratsLines() as $line) { + $this->entityManager->remove($line); + } + foreach ($contrat->getContratsOptions() as $option) { + $this->entityManager->remove($option); + } + foreach ($contrat->getContratsPayments() as $payment) { + $this->entityManager->remove($payment); + } + $io->warning("Annulation du contrat N°" . $contrat->getNumReservation() . " (Acompte non payé après 3 jours)"); + $this->entityManager->remove($contrat); + } else { + // Rappel simple + if ($customer) { + $this->mailer->send( + $customer->getEmail(), + $customer->getName() . " " . $customer->getSurname(), + "[Ludikevent] Rappel : Acompte à régler pour votre réservation N°" . $contrat->getNumReservation(), + "mails/task/contrat-noaccompte.twig", + ['contrat' => $contrat, 'customer' => $customer] + ); + $io->text("Rappel acompte envoyé pour le contrat : " . $contrat->getNumReservation()); + } } } } diff --git a/src/Entity/ContratsPayments.php b/src/Entity/ContratsPayments.php index e808065..7d9062f 100644 --- a/src/Entity/ContratsPayments.php +++ b/src/Entity/ContratsPayments.php @@ -236,9 +236,11 @@ class ContratsPayments /** * @param \DateTimeImmutable|null $updateAt */ - public function setUpdateAt(?\DateTimeImmutable $updateAt): void + public function setUpdateAt(?\DateTimeImmutable $updateAt): static { $this->updateAt = $updateAt; + + return $this; } /** diff --git a/src/Service/Mailer/Mailer.php b/src/Service/Mailer/Mailer.php index 35c18b1..19ca6fc 100644 --- a/src/Service/Mailer/Mailer.php +++ b/src/Service/Mailer/Mailer.php @@ -102,7 +102,7 @@ class Mailer 'unsubscribe_url' => $unsubscribeUrl, 'message_id' => $messageId // Ici on peut l'afficher pour info ], - 'datas' => $data, + 'datas' => $data, ]); $htmlContent = $this->convertMjmlToHtml($mjmlGenerator); diff --git a/templates/mails/task/contrat-cancelled-noaccompte.twig b/templates/mails/task/contrat-cancelled-noaccompte.twig new file mode 100644 index 0000000..6063c01 --- /dev/null +++ b/templates/mails/task/contrat-cancelled-noaccompte.twig @@ -0,0 +1,35 @@ +{% extends 'mails/base.twig' %} + +{% block content %} + + + + Réservation annulée + + + + + + Bonjour {{ datas.customer.name }} {{ datas.customer.surname }}, + + + + Nous sommes au regret de vous informer que votre réservation n°{{ datas.contrat.numReservation }} a été annulée automatiquement en raison du non-paiement de l'acompte dans le délai imparti de 3 jours. + + + + Les créneaux réservés ont été remis en disponibilité. + + + + + + Si vous souhaitez effectuer une nouvelle réservation ou si vous pensez qu'il s'agit d'une erreur, n'hésitez pas à nous contacter directement en répondant à cet email. + + + + L'équipe Ludikevent + + + +{% endblock %}