<?php
namespace App\Controller;
use Pimcore\Controller\FrontendController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
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\RdvGratuitFormType;
use Pimcore\Mail;
use Carbon\Carbon;
use Pimcore\Model\DataObject\Folder;
class RdvGratuitController extends FrontendController
{
/**
* @Template
*
* @param Request $request
*
* @param DataObject $object
*
* @return response
*
*/
private function formContactAction(Request $request)
{
//Formulaire de contact
$formStatus = false;
// initialize form and handle request data
$formContact = $this->createForm(RdvGratuitFormType::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'];
$message = nl2br($data['message']);
$gdpr = $data['gdpr'];
// On vérifie que tous les champs sont bien complétés
if($firstname !== "" && $lastname !== "" && $email !== "" && $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)
{
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Récupération du score recaptcha
if (isset($recaptcha->score)){
$data['recaptchaScore'] = strval($recaptcha->score);
}
// condition pour changer le folder d'enregistrement de concours dans les assets
$folderPath = Folder::getByPath("/RdvGratuit");
if(!$folderPath){
$folderPath = new Folder();
$folderPath->setKey("RdvGratuit");
$folderPath->setParentId(1);
$folderPath->save();
}
if($this->document->getProperty('objectFormFolder')) {
$folderPath = Folder::getByPath($this->document->getProperty('objectFormFolder'));
}
$contact = new DataObject\RdvGratuit();
$contact->setLastname($lastname);
$contact->setFirstname($firstname);
$contact->setEmail($email);
$contact->setPhone($phone);
$contact->setMessage($message);
$contact->setGdpr($gdpr);
/*$contact->setLang($request->getLocale());*/
$contact->setKey($email.'_'.uniqid());
$contact->setParent($folderPath);
$contact->setPublished(true);
$contact->save();
//email à CED
$mail = new \Pimcore\Mail();
$mail->setDocument('/emails/rdv-gratuit');
$mail->replyTo($email);
$mail->setParams($data);
$mail->setSubject('Prise de contact de '.$data['firstname'].' '.$data['lastname']);
$mail->send();
//Copie au visiteur
$mail = new \Pimcore\Mail();
$mail->setDocument('/emails/'.$request->getLocale().'/rdv-gratuit-confirmation');
$mail->to($email);
$mail->setParams($data);
$mail->send();
$formStatus = 'success';
}else{
$formStatus = 'invalid-email';
}
}else{
$formStatus = 'robot';
}
}else{
$formStatus = 'required-empty';
}
}
$viewContactForm = $formContact->createView();
return[
'form' => $viewContactForm,
'formStatus' => $formStatus
];
}
/**
* @Template
*
* @param RequestStack $request
*
* @param DataObject $object
*
* @return response
*
*/
public function defaultContactAction(RequestStack $request)
{
$formDefault =$this->formContactAction($request->getMasterRequest());
return $this->render('rdv-gratuit/default.html.twig',[
'form' => $formDefault['form'],
'formStatus' => $formDefault['formStatus'],
]);
}
}