<?php
namespace App\Controller\Pages;
use App\Entity\Contacts;
use App\Entity\Demandestages;
use App\Form\ContactsType;
use App\Form\DemandestagesType;
use App\Notifications\MailNotifications;
use MercurySeries\FlashyBundle\FlashyNotifier;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\SerializerInterface;
/**
* @Route("/ci-tourisme")
*/
class PagesCiTourismeController extends AbstractController
{
/**
* @var FlashyNotifier
*/
private $flashy;
public function __construct(FlashyNotifier $flashy)
{
$this->flashy = $flashy;
}
/**
* @Route("/distinction", name="cit.distinction", defaults={"title":"Notre distinction"})
* @param $title
* @return Response
*/
public function distinction($title): Response
{
return $this->render('pages/internes/cit/distinction.html.twig', [
'title' => $title,
'menu' => "Cote d'Ivoire",
'current_page' => 'cit'
]);
}
/**
* @Route("/demande-stage", name="cit.demande.stage", defaults={"title":"Demande de stage"})
* @param $title
* @param Request $request
* @return Response
*/
public function demandeStage($title, Request $request): Response
{
$demandestage = new Demandestages();
$form = $this->createForm(DemandestagesType::class, $demandestage);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($demandestage);
$entityManager->flush();
$this->flashy->success('Votre demande à été envoyé.');
return $this->redirectToRoute('cit.demande.stage');
}
return $this->render('pages/internes/cit/demandeStage.html.twig', [
'title' => $title,
'form' => $form->createView(),
'menu' => "Cote d'Ivoire",
'current_page' => 'cit'
]);
}
/**
* @Route("/contact-office", name="cit.contact.office", defaults={"title":"Contact Office"}, methods={"POST", "GET"})
* @param $title
* @param Request $request
* @param MailNotifications $notifications
* @param SerializerInterface $serializer
* @param FlashyNotifier $flashy
* @return Response
*/
public function contactOffice($title, Request $request, MailNotifications $notifications, SerializerInterface $serializer, FlashyNotifier $flashy): Response
{
//Traitement du formulaire de contact
$contact = new Contacts();
$form = $this->createForm(ContactsType::class, $contact);
$form->handleRequest($request);
//dd($request->request->get('contacts'));
if ($request->isXmlHttpRequest()){
$json = $this->json($request->request->get('contacts'));
$contact = $serializer->deserialize($json->getContent(), Contacts::class, 'json');
if($contact->getRobot() !== ""){
return new JsonResponse(['resultat' => "NONOK"]);
}
$notifications->sendWithDatas($contact);
return new JsonResponse(['resultat' => "OK"]);
}
if($form->isSubmitted() && $form->isValid()){
if($contact->getRobot() !== null){
return $this->redirectToRoute('contacts');
}
$notifications->sendWithDatas($contact);
$flashy->success('Votre email a bien été envoyé');
return $this->redirectToRoute('contacts');
}
return $this->render('pages/internes/cit/contactOffice.html.twig', [
'title' => $title,
'contact' => $contact,
'form' => $form->createView(),
'menu' => "Cote d'Ivoire",
'current_page' => 'cit'
]);
}
/**
* @Route("/nos-formulaires", name="cit.formulares", defaults={"title":"Nos formulaires"})
* @param string $title
* @return Response
*/
public function formulaires(string $title): Response
{
return $this->render('pages/internes/cit/formulaires.html.twig', [
'title' => $title,
'menu' => "Cote d'Ivoire",
'current_page' => 'cit'
]);
}
}