<?php
// src/Controller/HomeController.php
namespace App\Controller;
use App\Repository\ContentRepository;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Request;
use App\Repository\PlanningRepository;
use App\Form\PlanningUserType;
use App\Serializer\CountryNormalizer;
use App\Serializer\CountryDenormalizer;
use App\Serializer\StateNormalizer;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\PropertyNormalizer;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
use Symfony\Component\Serializer\Serializer;
use Doctrine\Common\Annotations\AnnotationReader;
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
class HomeController extends AbstractController
{
/**
* @var Security
*/
private $security;
public function __construct(Security $security)
{
$this->security = $security;
}
/**
* @Route("/meeting/confirm/{id}", name="meeting_confirm")
*/
public function meetingConfirm(int $id, ContentRepository $contentRepository, PlanningRepository $planningRepository, Request $request, ManagerRegistry $doctrine, MailerInterface $mailer): Response
{
return $this->redirectToRoute('paused');
$content1 = $contentRepository->find(1);
$content2 = $contentRepository->find(2);
$content3 = $contentRepository->find(3);
$content4 = $contentRepository->find(4);
$content5 = $contentRepository->find(5);
$planning = $planningRepository->find($id);
$formPlanning = $this->createForm(PlanningUserType::class, $planning);
$formPlanning->handleRequest($request);
if($formPlanning->isSubmitted() && $formPlanning->isValid()) {
$planningData = $formPlanning->getData();
$planningData->setDateHour($planning->getDateHour());
$planningData->setDurationText($planning->getDurationText());
$entityManager = $doctrine->getManager();
// $entityManager->persist($planning);
$entityManager->flush();
if($this->getParameter('kernel.environment') != "local") {
$email = (new TemplatedEmail())
->from('contact@carolechabanne-psychologue.fr')
->to($planningData->getEmail())
->replyTo('carole.chabanne@outlook.com')
->subject('Confirmation de rendez-vous')
->htmlTemplate('emails\meeting_confirm.html.twig')
->context(['planning' => $planningData])
->attachFromPath($this->getParameter('kernel.project_dir').'/public/documents/rib_chabanne.pdf');
$mailer->send($email);
$emailAdmin = (new TemplatedEmail())
->from('contact@carolechabanne-psychologue.fr')
->to('carole.chabanne@outlook.com')
->replyTo('carole.chabanne@outlook.com')
->subject('Nouveau rendez-vous')
->htmlTemplate('emails\meeting_new.html.twig')
->context(['planning' => $planningData]);
$mailer->send($emailAdmin);
}
$this->addFlash('success', 'Rendez-vous enregistré');
if($this->getParameter('kernel.environment') != "local") {
return $this->redirectToRoute('home', ['_fragment' => 'planning']);
} else {
return $this->render('emails\meeting_confirm.html.twig', [
'planning' => $planningData
]);
}
}
return $this->render('home/meeting_planning.html.twig', [
'formPlanning' => $formPlanning->createView(),
'content1' => $content1,
'content2' => $content2,
'content3' => $content3,
'content4' => $content4,
'content5' => $content5,
'planning' => $planning
]);
}
/**
* @Route("/meeting/delete/{id}", name="meeting_delete")
*/
public function meetingDelete(int $id, PlanningRepository $planningRepository, ManagerRegistry $doctrine, MailerInterface $mailer, int $month = 0, int $year = 0): Response
{
return $this->redirectToRoute('paused');
$planning = $planningRepository->find($id);
$planningSvg = clone $planning;
$planning->setName(null);
$planning->setFirstname(null);
$planning->setEmail(null);
$planning->setPhone(null);
$entityManager = $doctrine->getManager();
$entityManager->persist($planning);
$entityManager->flush();
if($this->getParameter('kernel.environment') != "local") {
$emailAdmin = (new TemplatedEmail())
->from('contact@carolechabanne-psychologue.fr')
->to('carole.chabanne@outlook.com')
->replyTo('carole.chabanne@outlook.com')
->subject('Rendez-vous annulé')
->htmlTemplate('emails\meeting_cancel.html.twig')
->context(['planning' => $planningSvg]);
$mailer->send($emailAdmin);
}
return $this->redirectToRoute('home', ['_fragment' => 'planning']);
}
#[Route('/mentions', name: 'mentions_legales')]
public function mentions(ContentRepository $contentRepository): Response
{
return $this->redirectToRoute('paused');
$content1 = $contentRepository->find(1);
$content2 = $contentRepository->find(2);
$content3 = $contentRepository->find(3);
$content4 = $contentRepository->find(4);
$content5 = $contentRepository->find(5);
return $this->render('home/mentions.html.twig', [
'content1' => $content1,
'content2' => $content2,
'content3' => $content3,
'content4' => $content4,
'content5' => $content5
]);
}
#[Route('/home', name: 'home')]
public function home(ContentRepository $contentRepository, PlanningRepository $planningRepository): Response
{
return $this->redirectToRoute('paused');
$content1 = $contentRepository->find(1);
$content2 = $contentRepository->find(2);
$content3 = $contentRepository->find(3);
$content4 = $contentRepository->find(4);
$content5 = $contentRepository->find(5);
$tabPlannings = $planningRepository->findNextFree();
return $this->render('home/index.html.twig', [
'content1' => $content1,
'content2' => $content2,
'content3' => $content3,
'content4' => $content4,
'content5' => $content5,
'tabPlannings' => $tabPlannings
]);
}
#[Route('/', name: 'paused')]
public function paused(): Response
{
return $this->render('home/paused.html.twig');
}
}