<?php
namespace App\Controller;
use Pimcore\Controller\FrontendController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Contracts\Translation\TranslatorInterface;
use Pimcore\Model\DataObject;
use Pimcore\Model\Document;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
use Pimcore\Model\WebsiteSetting;
use App\Form\RequestADemoFormType;
use Pimcore\Mail;
class RequestDemoController extends FrontendController
{
/**
* @Template
* @param Request $request
*
* @param DataObject $object
*
* @return Response
*
*/
public function defaultAction(Request $request)
{
$formStatus = false;
$honeypotValue = "Waterloo";
// initialize form and handle request data
$formContact = $this->createForm(RequestADemoFormType::class, null);
$formContact->handleRequest($request);
// On vérifie si un POST a bien été effectué et donc si le formulaire a été envoyé
if ($formContact->isSubmitted() && $formContact ->isValid()) {
$data = $formContact->getData();
$email = $data['email'];
$phone = $data['phone'];
$firstname = $data['firstname'];
$lastname = $data['lastname'];
$role = $data['role'];
$company = $data['company'];
$industry = $data['industry'];
$country = $data['country'];
$message = nl2br($data['message']);
// fake variable
$website = $_POST["website"];
$address = $_POST["address"];
$date = new \DateTime('now');
$gdpr = true;
// On vérifie que tous les champs sont bien complétés
if($email !== "" && $phone !== "" && $message !== ""){
// reCaptcha verification
$recaptchaKeyPrivate = WebsiteSetting::getByName('recaptchaKeyPrivate');
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_response = $data['recaptcha'];
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptchaKeyPrivate->getData() . '&response=' . $recaptcha_response);
$recaptcha = json_decode($recaptcha);
if ($recaptcha->success && isset($recaptcha->score) && $recaptcha->score > 0.7 && $website == "" && $address == $honeypotValue)
{
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Récupération du score recaptcha
if (isset($recaptcha->score)){
$data['recaptchaScore'] = strval($recaptcha->score);
}
// Email Admin
$mail = new Mail();
$emailDocument = Document::getByPath('/emails/request-demo');
$mail->setDocument($emailDocument);
$data['lang'] = $request->getLocale();
$data['message'] = nl2br($data['message']);
$mail->setParams($data);
$mail->send();
// Email Confirmation
$mailConfirmation = new Mail();
$emailConfirmationDocument = Document::getByPath('/emails/'.$request->getLocale().'/request-demo-confirmation');
$mailConfirmation->setDocument($emailConfirmationDocument);
$mailConfirmation->to($data['email']);
$mailConfirmation->setParams($data);
$mailConfirmation->send();
$formStatus = 'success';
return $this->redirect($this->generateUrl('requestDemoSuccess', array('customer_email'=> $data['email'])));
}else{
$formStatus = 'invalid-email';
}
}else{
$formStatus = 'robot';
$honeypotValue = $address;
}
}else{
$formStatus = 'required-empty';
}
}
return [
'form' => $formContact->createView(),
'formStatus' => $formStatus,
'honeypotValue' => $honeypotValue
];
}
/**
* @Template
* @param Request $request
* @return \Symfony\Component\HttpFoundation\JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse
* @throws \Exception
* @Route(
* "/{_locale}/request-a-demo-sucess",
* name="requestDemoSuccess",
* methods={"GET","POST"}
* )
*/
public function successAction(Request $request)
{
$mail = $request->get('customer_email');
return $this->render('request_demo/success.html.twig',[
'mail' => $mail,
]);
}
}