intranet/src/Controller/ComplaintController.php
2023-07-28 15:34:20 +00:00

58 lines
2.1 KiB
PHP

<?php
namespace App\Controller;
use App\Form\AnonymousComplaintType;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Yaml\Yaml;
use Symfony\Component\HttpFoundation\Request;
use jv\intranet\Types\NavbarItem;
use Psr\Log\LoggerInterface;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Symfony\Component\Mailer\TransportInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mailer\Transport\TransportInterface as TransportTransportInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\Mime\Address;
class ComplaintController extends AbstractController
{
#[Route('/complaint/anon', name: 'complaint')]
public function Index(Request $request, TransportTransportInterface $mailer,LoggerInterface $log) : Response
{
$form = $this->createForm(AnonymousComplaintType::class);
$form->handleRequest($request);
if($form->isSubmitted())
{
$message = $form->get('Message')->getData();
$sendMail = $this->sendEmail($mailer, $message, $log);
}
else
{
$sendMail = null;
}
return $this->render('complaint.html.twig',['form' => $form, 'isSubmitted' => $sendMail, 'complaintReceiverName' => $_SERVER['COMPLAINT_RECIPIENT_NAME']]);
}
public function sendEmail(TransportTransportInterface $mailer, string $message, LoggerInterface $log) : bool
{
$email = (new Email())
->from(new Address('noreply@jv.com', 'Anonymous'))
->to($_SERVER['COMPLAINT_RECIPIENT_ADDRESS'])
->subject('Anonymous Contact Form')
->text($message);
$email->getHeaders()->addTextHeader('X-Auto-Response-Suppress', 'OOF, DR, RN, NRN, AutoReply'); //Tell autoresponders to not reply
try
{
$log->debug($mailer->send($email)->toString());
return true;
}
catch (TransportExceptionInterface $e)
{
return false;
}
}
}