src/Controller/ContactController.php line 35

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Contact;
  4. use App\Entity\Instance;
  5. use App\Repository\ContactConfigRepository;
  6. use App\Service\Mail;
  7. use App\Service\SiteConfig;
  8. use App\Form\ContactType;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Contracts\Translation\TranslatorInterface;
  15. use Symfony\Contracts\HttpClient\HttpClientInterface;
  16. use App\Repository\SiteConfigRepository;
  17. class ContactController extends AbstractController
  18. {
  19.     public function __construct(
  20.         private EntityManagerInterface $em,
  21.         private SiteConfig $config,
  22.         private TranslatorInterface $translator,
  23.         private Mail $mail,
  24.         private ContactConfigRepository $contactConfigRepo,
  25.         private SiteConfigRepository $siteConfigRepository,
  26.         private EntityManagerInterface $entityManager,
  27.     ) {}
  28.     /**
  29.      * @Route("/contact", name="contact")
  30.      */
  31.     public function new(Request $request): Response
  32.     {
  33.         if ($this->config->isContactActivated() === false)
  34.             return $this->redirectToRoute('not_found_url');
  35.         if (!$this->getUser() && !$this->config->isPublicFrontOffice())
  36.             return $this->redirectToRoute('app_login');
  37.         $contact = new Contact();
  38.         $contact->setCreatedAt(new \DateTime('now'));
  39.         $message_send false;
  40.         $message_error false;
  41.         $message $this->translator->trans('contact.flash-message.contact.done');
  42.         $form $this->createForm(ContactType::class, $contact);
  43.         $form->handleRequest($request);
  44.         if ($form->isSubmitted() && $form->isValid()) {
  45.             $contact $form->getData();
  46.             $generalSiteConfig $this->siteConfigRepository->findOneBy([]);
  47.             $isInstanceActive $generalSiteConfig $generalSiteConfig->isInstanceActive() : true;
  48.             
  49.             if ($isInstanceActive) {
  50.                 $session $request->getSession();
  51.                 $instanceId $session->get('selected_instance_id');
  52.                 
  53.                 if ($instanceId) {
  54.                     $instance $this->entityManager->getRepository(Instance::class)->find($instanceId);
  55.                     if ($instance) {
  56.                         $contact->setInstance($instance);
  57.                     }
  58.                 }
  59.             }
  60.             $this->em->persist($contact);
  61.             $this->em->flush();
  62.             $contactConfig $this->contactConfigRepo->findOneBy(['isActivated' => true]);
  63.             if ($contactConfig) {
  64.                 $message $contactConfig->getMessage();
  65.             }
  66.             $this->addFlash(
  67.                 'success',
  68.                 $message
  69.             );
  70.             $subject "{$contact->getSubject()} [{$contact->getEmail()}]";
  71.             $content "{$contact->getName()} [{$contact->getEmail()}]\n{$contact->getMessage()}";
  72.             $this->mail->sendingblue_email($subject$content$this->config->getContactTemplateId());
  73.             $message_send true;
  74.             return $this->redirectToRoute('contact');
  75.         }
  76.         $generalSiteConfig $this->siteConfigRepository->findOneBy([]);
  77.         $isInstanceActive $generalSiteConfig $generalSiteConfig->isInstanceActive() : true;
  78.         if($isInstanceActive) {
  79.             $this->config->getConfig();
  80.             $this->config->getCustomization();
  81.         }
  82.         return $this->render('contact/index.html.twig', [
  83.             'form' => $form->createView(),
  84.             'contact_info' => $this->config->getContactInfo(),
  85.             'staticNav' => false,
  86.             'message_send' => $message_send,
  87.             'message_error' =>  $message_error,
  88.             'message' => $message
  89.         ]);
  90.     }
  91. }