<?php
namespace App\Controller\Front;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use App\Form\ContactFormType;
use App\Form\ContactAgentFormType;
use App\Form\ContactRecrutementFormType;
use App\Service\MailSender;
use App\Entity\Agent;
class MessageController extends AbstractController
{
public function __construct(ParameterBagInterface $params)
{
$this->message_receiver = $params->get('message_receiver');
$this->contact_recipients = array_values($params->get('contact_recipients'));
$this->contact_recipient_names = array_keys($params->get('contact_recipients'));
$this->subject_choices = $params->get('subject_choices');
$this->menu = $params->get('main_menu');
}
/**
* include
*/
public function contactForm( $context=null, $display="default", $agent_id=null , $refannonce=null ): Response
{
dump([$context , $display, $agent_id]);
switch ($context) {
case 'agent':
$form = $this->createForm(ContactAgentFormType::class, ['agent_id' => $agent_id, 'refannonce' => $refannonce]);
break;
case 'devenir_conseiller_':
$form = $this->createForm(ContactRecrutementFormType::class);
break;
default:
$form = $this->createForm(ContactFormType::class);
break;
}
return $this->render('front/message/_contact_form.html.twig', [
'form' => $form->createView(),
'context' => $context,
'display' => $display,
]);
}
/**
* include
*/
public function contactFormModal( $context=null ): Response
{
$form = $this->createForm(ContactFormType::class);
return $this->render('front/message/_contact_form_modal.html.twig', [
'form' => $form->createView(),
'context' => $context,
'modale_name' => $context == 'agent' ? 'contact_modal_agent' : 'contact_modal'
]);
}
/**
* include
*/
public function contactFormFooter( $context=null ): Response
{
switch ($context) {
case 'devenir_conseiller_':
$form = $this->createForm(ContactRecrutementFormType::class);
break;
default:
$form = $this->createForm(ContactFormType::class);
break;
}
return $this->render('front/message/_contact_form_footer.html.twig', [
'form' => $form->createView(),
'context' => $context,
]);
}
/** Ajax
* @Route("/contact", name="contact")
*/
public function contact( Request $request, MailSender $mail_sender ): Response
{
$context = $request->request->has('context') ? $request->request->get('context') : null;
switch ($context) {
case 'agent':
$form = $this->createForm(ContactAgentFormType::class);
break;
case 'devenir_conseiller_':
$form = $this->createForm(ContactRecrutementFormType::class);
break;
default:
$form = $this->createForm(ContactFormType::class);
break;
}
$form->handleRequest($request);
if ( $request->isXmlHttpRequest() && $form->isSubmitted() ) {
if ( $form->isValid() ) {
$data = $form->getData();
if($context == 'agent'){
$agent = $this->getDoctrine()->getRepository(Agent::class)->find( $data['agent_id'] );
$to = $agent->getEmail();
$from = $data['email'];
$subject = "Prise de contact depuis www.sublimons.com";
$bcc = null;
}
elseif($context == 'devenir_conseiller_'){
$to = $this->contact_recipients['Sublimons Morbihan'];
$recipient_name = $this->contact_recipient_names[$data['Sublimons Morbihan']];
$from = $data['email'];
$subject = "Prise de contact [Recrutement] depuis www.sublimons.com - " . $recipient_name ;
$bcc = 'contact@sublimons.com';
}
else{
$to = $this->contact_recipients[0];
$recipient_name = $this->contact_recipient_names[0];
$from = $data['email'];
// $subject = "Prise de contact [".$this->getPageTitle($context)."] depuis www.sublimons.com - " . $recipient_name;
$subject = "Prise de contact depuis www.sublimons.com - [".$this->getPageTitle($context)."]";
$bcc = 'contact@sublimons.com';
$data['sujet'] = "Je souhaite " .$this->subject_choices[$data['sujet']];
}
$data['page_title'] = $this->getPageTitle($context);
$message = $this->render('front/message/_contact.html.twig', $data)->getContent();
$result = $mail_sender->send($to, $from, $subject, $message, [], 'default', $bcc);
if($result['antifa']){
$output['success'] = true;
$output['msg'] = "Votre message a bien été envoyé à la <b>POLICE</b>.";
}
elseif($result['success']){
$output['success'] = true;
$output['msg'] = "Votre message a bien été envoyé";
}
else{
$output['error'] = true;
$output['msg'] = $result['error'];
}
}
else{
$output['error'] = true;
$output['msg'] = 'Formulaire invalide';
$output['form'] = $this->render('front/message/_contact_form.html.twig', ['form' => $form->createView(), 'context' => $context])->getContent();
}
return $this->json($output);
}
else{
throw new AccessDeniedHttpException("L'action demandée est impossible");
}
}
public function getPageTitle($context)
{
switch ($context) {
case 'homepage':
$page_title = "Accueil";
break;
case 'agent':
$page_title = "Agent";
break;
case 'show_agent':
$page_title = "Agent";
break;
default:
$page_title = $this->menu[$context];
break;
}
return $page_title;
}
}