src/Controller/ContactController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use App\Utils\Constants;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use App\Utils\JsonResponseHelper;
  9. use Symfony\Component\Mime\Email;
  10. use Symfony\Component\Mailer\MailerInterface;
  11. use Psr\Log\LoggerInterface;
  12. class ContactController extends AbstractController
  13. {
  14.     private $logger;
  15.     public function __construct(LoggerInterface $logger)
  16.     {
  17.         $this->logger $logger;
  18.     }
  19.     public function index(): Response
  20.     {
  21.         return $this->render('Contact/index.html.twig');
  22.     }
  23.     public function sendEmailAction(Request $requestMailerInterface $mailer)
  24.     {
  25.         $response = [ "code" => Constants::RESPONSE_NOK ];
  26.         try {
  27.             $userFullName $request->query->get("name");
  28.             $userEmail $request->query->get("email");
  29.             $mailBody $request->query->get("message");
  30.             $mailReason $request->query->get("reason");
  31.             $userState $request->query->get("state");
  32.             if (($userState && $userState == "") || ($userFullName && $userFullName == "") || ($userEmail && $userEmail == ""
  33.                 || ($mailBody && $mailBody == "") || ($mailReason && $mailReason == "")) {
  34.                 
  35.                 $response["code"] = Constants::RESPONSE_EMAIL_DATA_EMPTY;
  36.                 return new JsonResponse($response);
  37.             }
  38.             $emailReasonTranslated "";
  39.             switch($mailReason) {
  40.                 case "DOUBTS":
  41.                     $emailReasonTranslated "Dudas generales";
  42.                     break;
  43.                 case "CONSULT_PRODUCT":
  44.                     $emailReasonTranslated "Consulta de producto";
  45.                     break;
  46.                 case "OTHERS":
  47.                     $emailReasonTranslated "Otros";
  48.                     break;
  49.             }
  50.             $environment $this->getParameter("kernel.environment");
  51.             // $environmentMessage = "Esto es prueba de desarrollo";
  52.             $emailsToEnd Constants::DEVELOPMENT_EMAILS;
  53.             $content = [
  54.                 "userName" => $userFullName,
  55.                 "userMail" => $userEmail,
  56.                 "mailBody" => $mailBody,
  57.                 "mailReason" => $emailReasonTranslated,
  58.                 "userState" => $userState
  59.             ];
  60.             $htmlTemplate $this->renderView("Mailer/mail_template.html.twig", [
  61.                 "content" => $content,
  62.                 "environment" => $environment
  63.             ]);
  64.              if ($environment == "prod") {
  65. //                 $environmentMessage = "DIALVI te ha enviado un correo.";
  66.                  $emailsToEnd Constants::PRODUCTION_EMAILS;
  67.              }
  68.             // $emailMessage = "Hola, {$userFullName} ha enviado su información de contacto:
  69.             //     Correo: {$userEmail}.
  70.             //     Estado de residencia: {$userState}.";
  71.             $email = (new Email())
  72.             ->from('soporte@dialvi.website')
  73.             ->to(...$emailsToEnd)
  74.             ->subject($emailReasonTranslated)
  75.             // ->text($environmentMessage . "\n" . $emailMessage . "\n" .  $mailBody)
  76.             ->html($htmlTemplate);
  77.             $mailer->send($email);
  78.             $response["code"] = Constants::RESPONSE_OK;
  79.         } catch (\Exception $exception) {
  80.             $response["code"] = Constants::RESPONSE_NOK;
  81.             $this->logger->error('DIALVI_ERROR: ' $exception->getMessage() . " IN FILE " $exception->getFile() . " LINE " $exception->getFile());
  82.         }
  83.         return new JsonResponse($response);
  84.     }
  85. }