<?php
namespace App\Controller\Module;
use Pimcore\Controller\FrontendController;
use Symfony\Bridge\Twig\Attribute\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Twig\Environment;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
class FormTerminController extends FrontendController
{
/**
* @Route("/send-termin-form", name="handle_form_submission", methods={"POST"})
*/
public function handleForm(Request $request, MailerInterface $mailer, Environment $twig)
{
$subject = $request->request->get('subject');
$name = $request->request->get('name');
$email = $request->request->get('email');
$service = $request->request->get('service');
$location = $request->request->get('location');
$date = $request->request->get('date');
$time = $request->request->get('time');
$url = $request->headers->get('referer');
$htmlContent = $twig->render('mail-template/form-termin.html.twig',
[
"name" => $name,
"email" => $email,
"service" => $service,
"location" => $location,
"date" => $date,
"time" => $time,
"url" => $url,
]);
// Create the email
$emailMessage = (new Email())
->from('website@glanzer.at')
->to('info@glanzer.at')
->priority(Email::PRIORITY_HIGH)
->subject($subject)
->html($htmlContent);
try {
// Attempt to send the email
$mailer->send($emailMessage);
return $this->json([
'success' => true,
'message' => 'Termin successfully booked. Email sent successfully.',
]);
} catch (TransportExceptionInterface $e) {
// Handle email sending failure
return $this->json([
'success' => false,
'message' => 'Termin booking failed. Could not send email.',
'error' => $e->getMessage(), // Optional: Include the error message for debugging
]);
}
}
public function formTerminAction(Request $request)
{
return $this->render("module/FormTermin/__form-termin.html.twig");
}
}