add mail action and view, unsubscription
This commit is contained in:
parent
dbe2f62c45
commit
06ced163e6
5 changed files with 69 additions and 9 deletions
|
@ -272,6 +272,12 @@ final class AdminController extends AbstractController
|
|||
#[Route('/admin/labourer/{insee_code}', name: 'app_admin_labourer')]
|
||||
public function labourer(string $insee_code, bool $updateExisting = true): Response
|
||||
{
|
||||
|
||||
// Vérifier si le code INSEE est valide (composé uniquement de chiffres)
|
||||
if (!ctype_digit($insee_code) || $insee_code == 'undefined' || $insee_code == '') {
|
||||
$this->addFlash('error', 'Code INSEE invalide : il doit être composé uniquement de chiffres.');
|
||||
return $this->redirectToRoute('app_public_index');
|
||||
}
|
||||
try {
|
||||
// Récupérer ou créer les stats pour cette zone
|
||||
$stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]);
|
||||
|
@ -536,4 +542,43 @@ final class AdminController extends AbstractController
|
|||
|
||||
return $this->redirectToRoute('app_public_index');
|
||||
}
|
||||
|
||||
#[Route('/admin/send_email_to_place/{id}', name: 'app_admin_send_email_to_place')]
|
||||
public function send_email_to_place(Place $place, \Symfony\Component\Mailer\MailerInterface $mailer): Response
|
||||
{
|
||||
|
||||
// Vérifier si le lieu est opted out
|
||||
if ($place->isOptedOut()) {
|
||||
$this->addFlash('error', 'Ce lieu a demandé à ne plus être sollicité pour mettre à jour ses informations.');
|
||||
return $this->redirectToRoute('app_public_index');
|
||||
}
|
||||
// Vérifier si le lieu a déjà été contacté
|
||||
if ($place->getLastContactAttemptDate() !== null) {
|
||||
$this->addFlash('error', 'Ce lieu a déjà été contacté le ' . $place->getLastContactAttemptDate()->format('d/m/Y H:i:s'));
|
||||
return $this->redirectToRoute('app_public_index');
|
||||
}
|
||||
|
||||
// Générer le contenu de l'email avec le template
|
||||
$emailContent = $this->renderView('admin/email_content.html.twig', [
|
||||
'place' => $place
|
||||
]);
|
||||
|
||||
// Envoyer l'email
|
||||
$email = (new \Symfony\Component\Mime\Email())
|
||||
->from('contact@openstreetmap.fr')
|
||||
->to('contact+send_email@cipherbliss.com')
|
||||
->subject('Mise à jour des informations de votre établissement dans OpenStreetMap')
|
||||
->html($emailContent);
|
||||
|
||||
$mailer->send($email);
|
||||
|
||||
|
||||
// Mettre à jour la date de dernier contact
|
||||
$place->setLastContactAttemptDate(new \DateTime());
|
||||
$this->entityManager->persist($place);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Email envoyé avec succès à ' . $place->getName() . ' le ' . $place->getLastContactAttemptDate()->format('d/m/Y H:i:s'));
|
||||
return $this->redirectToRoute('app_public_index');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ class Place
|
|||
return 'école';
|
||||
}
|
||||
|
||||
return 'lieu';
|
||||
return 'établissement';
|
||||
}
|
||||
|
||||
public function getMainTag(): ?string
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue