src/Controller/DefaultController.php line 28

  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use App\Entity\Account;
  7. use App\Form\ContactSupportType;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\Mailer\MailerInterface;
  11. use Symfony\Component\Mime\Email;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. use Ntl\PaymentBundle\Entity\OnlinePaymentOrder;
  14. /**
  15.  * Main controller.
  16.  */
  17. class DefaultController extends AbstractController
  18. {
  19.     /**
  20.      * Index page.     
  21.      */
  22.     #[Route('/'name'app_index'methods: ['GET''HEAD'])]
  23.     public function index(): Response
  24.     {
  25.         return $this->render('default/index.html.twig');
  26.     }
  27.     /**
  28.      * Payment page
  29.      */
  30.     #[Route('/{id}'name'app_payment'condition"params['id'] matches '/^[0-9a-fA-F]{30}$/'"methods: ['GET''HEAD'])]
  31.     public function payment($id)
  32.     {
  33.         return $this->forward('App\Controller\PaymentController::paymentOrder', ["id" => $id]);
  34.     }
  35.     /**
  36.      * Support contact form     
  37.      */
  38.     #[Route('/contact/support'name'contact_support'methods: ['GET''HEAD''POST'])]
  39.     public function contactSupport(ManagerRegistry $doctrineRequest $requestTranslatorInterface $translatorMailerInterface $mailer): Response
  40.     {
  41.         $entityManager $doctrine->getManager();
  42.         $form $this->createForm(ContactSupportType::class, null, [
  43.             'force_subject' => $request->get("subject"),
  44.             'action' => $this->generateUrl($request->attributes->get('_route'), ["subject" => $request->get("subject")]),
  45.             'custom_message' => $translator->trans("msg.support.custom_message", [], "account"),
  46.         ]);
  47.         $form->handleRequest($request);
  48.         if ($form->isSubmitted() && $form->isValid()) {
  49.             $data $form->getData();
  50.             try {
  51.                 $email = (new Email())
  52.                     ->to(...$this->getParameter("support_mailing_list"))
  53.                     ->subject($data["subject"])
  54.                     ->text($data["message"] . "\n ExpĂ©diteur: " $data["email"]);
  55.                 // using the default transport
  56.                 $email->getHeaders()->addTextHeader('X-Transport''default');
  57.                 $mailer->send($email);
  58.                 return $this->json([
  59.                     'result' => true,
  60.                     'type' => "info",
  61.                     'message' => $translator->trans("msg.support.message_sent.title", [], $entityManager->getClassMetadata(Account::class)->getTableName())
  62.                 ]);
  63.             } catch (\Exception $exc) {                
  64.                 return $this->json([
  65.                     'result' => true,
  66.                     'type' => "warning",
  67.                     'message' => $translator->trans("msg.support.message_sent_error.title", [], $entityManager->getClassMetadata(Account::class)->getTableName()) . " :: " $exc->getMessage()
  68.                 ]);
  69.             }
  70.         }
  71.         return $this->render('default/form/form.html.twig', ['form' => $form->createView()]);
  72.     }
  73.     #[Route('/ipn'name'_ipn'methods: ['GET''POST'])]
  74.     public function paymentIpn()
  75.     {
  76.         return $this->forward('App\Controller\PaymentController::paymentIpn');
  77.     }
  78. }