<?php
namespace App\Controller;
use App\Entity\Contact;
use App\Form\Type\ContactFormType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\Routing\Annotation\Route;
class ContactController extends AbstractController {
/**
* @Route("/contact", name="contact_page")
*/
public function contactPage(MailerInterface $mailer, Request $request)
{
$defaultData = ['message' => 'Type your message here'];
$form = $this->createFormBuilder()
->add('firstName', TextType::class,
[
'label' => 'First Name',
'required' => true,
]
)
->add('lastName', TextType::class,
[
'label' => 'Last Name',
'required' => true,
]
)
->add('email', EmailType::class,
[
'label' => 'Email Address',
'required' => true,
]
)
->add('mobile', EmailType::class,
[
'label' => 'Mobile #',
'required' => true,
]
)
->add('comments', TextareaType::class,
[
'label' => 'Comments',
'required' => true,
]
)
->add(
'created',
HiddenType::class, [
'data' => date('Y-m-d H:i:s')
]
)
->add('save', SubmitType::class, [
'attr' => [
'class' => 'con-btn']
]
)
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// data is an array with "name", "email", and "message" keys
$data = $form->getData();
$contact = new Contact();
$now = new \DateTime();
$contact->setFirstName($data['firstName']);
$contact->setLastName($data['lastName']);
$contact->setEmail($data['email']);
$contact->setMobile($data['mobile']);
$contact->setComments($data['comments']);
$contact->setCreated($data['created']);
$em = $this->getDoctrine()->getManager();
$em->persist($contact);
$em->flush();
// Send Email
$body = '<table style="padding: 8px; border-collapse: collapse; border: none; font-family: arial">';
$body .= '<tr><td colspan="2"><img src="https://huguenottunnel.nerdw.com/images/sanral-preferred-logo_cmyk.png"></td></tr>';
$body .= '<tr><td colspan="2"> </td></tr>';
$body .= '<tr><td colspan="2">Thank you for submitting your information. We will be in touch soon.</td></tr>';
$body .= '<tr><td colspan="2"> </td></tr>';
foreach($data as $key => $value){
$body .= '<tr>';
$body .= ' <td><b>'. $key .'</b></td>';
$body .= ' <td>'. ucwords(str_replace('_', ' ',$value)) .'</td>';
$body .= '</tr>';
}
$body .= '</table>';
$email = (new Email())
->from('SANRAL <support@nerdw.com>')
->to($data['email'])
->subject('Your enquiry has been received')
->html($body);
$mailer->send($email);;
return $this->render('frontend/contact.html.twig',
[
'form' => $form->createView(),
'created' => date('Y-m-d H:i:s'),
'message' => 1,
'page' => 'contact'
]);
}
return $this->render('frontend/contact.html.twig',
[
'form' => $form->createView(),
'created' => date('Y-m-d H:i:s'),
'message' => 0,
'page' => 'contact'
]);
}
}