<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use App\Utils\Constants;
use Symfony\Component\HttpFoundation\JsonResponse;
use App\Utils\JsonResponseHelper;
use Symfony\Component\Mime\Email;
use Symfony\Component\Mailer\MailerInterface;
use Psr\Log\LoggerInterface;
class ContactController extends AbstractController
{
private $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function index(): Response
{
return $this->render('Contact/index.html.twig');
}
public function sendEmailAction(Request $request, MailerInterface $mailer)
{
$response = [ "code" => Constants::RESPONSE_NOK ];
try {
$userFullName = $request->query->get("name");
$userEmail = $request->query->get("email");
$mailBody = $request->query->get("message");
$mailReason = $request->query->get("reason");
$userState = $request->query->get("state");
if (($userState && $userState == "") || ($userFullName && $userFullName == "") || ($userEmail && $userEmail == "")
|| ($mailBody && $mailBody == "") || ($mailReason && $mailReason == "")) {
$response["code"] = Constants::RESPONSE_EMAIL_DATA_EMPTY;
return new JsonResponse($response);
}
$emailReasonTranslated = "";
switch($mailReason) {
case "DOUBTS":
$emailReasonTranslated = "Dudas generales";
break;
case "CONSULT_PRODUCT":
$emailReasonTranslated = "Consulta de producto";
break;
case "OTHERS":
$emailReasonTranslated = "Otros";
break;
}
$environment = $this->getParameter("kernel.environment");
// $environmentMessage = "Esto es prueba de desarrollo";
$emailsToEnd = Constants::DEVELOPMENT_EMAILS;
$content = [
"userName" => $userFullName,
"userMail" => $userEmail,
"mailBody" => $mailBody,
"mailReason" => $emailReasonTranslated,
"userState" => $userState
];
$htmlTemplate = $this->renderView("Mailer/mail_template.html.twig", [
"content" => $content,
"environment" => $environment
]);
if ($environment == "prod") {
// $environmentMessage = "DIALVI te ha enviado un correo.";
$emailsToEnd = Constants::PRODUCTION_EMAILS;
}
// $emailMessage = "Hola, {$userFullName} ha enviado su información de contacto:
// Correo: {$userEmail}.
// Estado de residencia: {$userState}.";
$email = (new Email())
->from('soporte@dialvi.website')
->to(...$emailsToEnd)
->subject($emailReasonTranslated)
// ->text($environmentMessage . "\n" . $emailMessage . "\n" . $mailBody)
->html($htmlTemplate);
$mailer->send($email);
$response["code"] = Constants::RESPONSE_OK;
} catch (\Exception $exception) {
$response["code"] = Constants::RESPONSE_NOK;
$this->logger->error('DIALVI_ERROR: ' . $exception->getMessage() . " IN FILE " . $exception->getFile() . " LINE " . $exception->getFile());
}
return new JsonResponse($response);
}
}