<?php
namespace App\Controller\Backend;
use App\Entity\Inscription;
use App\Form\Inscription\InscriptionType;
use App\Repository\CongresRepository;
use App\Repository\EventRepository;
use App\Repository\InscriptionRepository;
use phpDocumentor\Reflection\PseudoTypes\False_;
use phpDocumentor\Reflection\Types\Null_;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Knp\Component\Pager\PaginatorInterface;
// /**
// * @Route("/inscription")
// */
class InscriptionController extends AbstractController
{
/**
* @Route("admin/inscription", name="app_inscription_index", methods={"GET"})
*/
public function index(InscriptionRepository $inscriptionRepository, PaginatorInterface $paginator,Request $request): Response
{
$inscription= $paginator->paginate($inscriptionRepository->findAll([],['id'=>'DESC']), $request->query->getInt('page', 1),20 );
return $this->render('backend/inscription/index.html.twig', [
'inscriptions' =>$inscription
]);
}
/**
* @Route("admin/inscription/search", name="search_incription", methods={"GET"})
*/
public function searchIncription(InscriptionRepository $inscriptionRepository,Request $request)
{
$searchItem = $request->request->get('searchTerm');
$resultats= $inscriptionRepository->searchByAllColumns($searchItem);
return new JsonResponse($resultats);
// return $this->render('backend/inscription/search_results.html.twig', [
// 'resultat' =>$resultats
// ]);
}
/**
* @Route("admin/accepterInscription", name="accepterInscription", methods={"POST"})
*/
public function accepterInscription(Request $request, InscriptionRepository $inscriptionRepository, EntityManagerInterface $em){
$id = $request->request->get('id');
$inscription = $inscriptionRepository->findOneBy(['id'=>$id]);
$inscription->setVerified("Accepter");
$em->persist($inscription);
$em->flush();
$titreEvent="";
$titleEvent="";
if (!empty($inscription->getEvent())){
$titreEvent=$inscription->getEvent()->getTitre();
$titleEvent=$inscription->getEvent()->getTitle();
}
elseif (!empty($inscription->getCongres())){
$titreEvent=$inscription->getCongres()->getLabel();
$titleEvent=$inscription->getCongres()->getLabelEn();
}
$to= $inscription->getEmail();
$subject = "ATU - Registration";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= 'From: contact@urotunisia.com' . "\r\n" .
'Reply-To: contact@urotunisia.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
// $template= new TwigEngine();
$message = "<div align='center'><img src='http://urotunisia.com/front-assets/assets/img/logo1.png' width='40%' class='img-responsive center-block' align='center'></div><h4>Dear Dr !</h4><p>Your registration to the ".$titleEvent."<br><strong> is confirmed</strong><br>To print your badge go to <a href='http://urotunisia.com/event/badge/".$inscription->getId()."' target='_blank'>http://urotunisia.com/event/badge/".$inscription->getId()."</a></p>
<p>Best regards, <br />Le secrétariat de l'ATU</p><br><br>
<h4>Cher Dr !</h4><p>Votre inscription à la ".$titreEvent." <br> <strong>est confirmée</strong><br>Pour imprimer votre badge allez a <a href='http://urotunisia.com/event/badge/".$inscription->getId()."' target='_blank'>http://urotunisia.com/event/badge/".$inscription->getId()."</a></p>
<p>Bien à vous, <br />Le secrétariat de l'ATU</p>";
mail($to, $subject, $message, $headers);
return new JsonResponse('inscriptionAccepter');
}
/**
* @Route("admin/refuserInscription", name="refuserInscription", methods={"POST"})
*/
public function refuserInscription(Request $request, InscriptionRepository $inscriptionRepository, EntityManagerInterface $em){
$id = $request->request->get('id');
$inscription = $inscriptionRepository->findOneBy(['id'=>$id]);
$inscription->setVerified("Refuser");
$em->persist($inscription);
$em->flush();
return new JsonResponse('inscriptionRefuser');
}
/**
* @Route("inscription/{type}/{id}/new", name="app_inscription_new", methods={"GET", "POST"})
*/
public function new(Request $request, InscriptionRepository $inscriptionRepository, $id,$type,EventRepository $eventRepository, CongresRepository $congresRepository): Response
{
$inscription = new Inscription();
$form = $this->createForm(InscriptionType::class, $inscription);
$form->handleRequest($request);
if ($type=='event'){
$event= $eventRepository->findOneBy(['id'=>$id]);
$congres=Null;
}
elseif($type=='congres'){
$congres = $congresRepository->findOneBy(['id'=>$id]);
$event= NUll;
}
if ($form->isSubmitted() && $form->isValid()) {
$titreEvent="";
$titleEvent="";
if ($type=='event'){
$inscription->setEvent($event);
$inscription->setRole("Participant");
$titreEvent=$event->getTitre();
$titleEvent=$event->getTitle();
}
elseif($type=='congres'){
$inscription->setCongres($congres);
$titreEvent=$congres->getLabel();
$titleEvent=$congres->getLabelEn();
}
$inscription->setType($type);
$inscription->setDate(new \DateTime());
$inscription->setVerified("en attente");
$inscriptionRepository->add($inscription, true);
$to = $inscription->getEmail();
$subject = "ATU - Registration";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= 'From: contact@urotunisia.com' . "\r\n" .
'Reply-To: contact@urotunisia.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
// $template= new TwigEngine();
$message = "<div align='center'><img src='http://urotunisia.com/front-assets/assets/img/logo1.png' width='40%' class='img-responsive center-block' align='center'></div><h4>Dear Dr !</h4><p>Thank you for your registration to ".$titleEvent." You will receive a confirmation mail after validation</p>
<p>Best regards, <br />Le secrétariat de l'ATU</p><br><br>
<h4>Cher Dr !</h4><p>Nous vous remercions pour votre inscription à la ".$titreEvent." <br>Vous recevez un mail de confirmation après validation</p>
<p>Bien à vous, <br />Le secrétariat de l'ATU</p>";
mail($to, $subject, $message, $headers);
if($request->getLocale()=='fr'){
$this->addFlash('success','Nous vous remercions pour votre inscription à la '.$titreEvent.'. Vous recevrez un courrier');
}
elseif($request->getLocale()=='en'){
$this->addFlash('success','Thank you for registering in '.$titleEvent.'. You will receive a mail');
}
return $this->redirectToRoute('congres_nationaux');
}
return $this->renderForm('backend/inscription/new.html.twig', [
'inscription' => $inscription,
'form' => $form,'event'=>$event,'congres'=>$congres,'type'=>$type
]);
}
/**
* @Route("admin/inscription/{id}", name="app_inscription_show", methods={"GET"})
*/
public function show(Inscription $inscription): Response
{
return $this->render('backend/inscription/show.html.twig', [
'inscription' => $inscription,
]);
}
/**
* @Route("admin/inscription/{id}/edit", name="app_inscription_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, Inscription $inscription, InscriptionRepository $inscriptionRepository): Response
{
$form = $this->createForm(InscriptionType::class, $inscription);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$inscriptionRepository->add($inscription, true);
return $this->redirectToRoute('app_inscription_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('backend/inscription/edit.html.twig', [
'inscription' => $inscription,
'form' => $form,
]);
}
/**
* @Route("admin/inscription/{id}", name="app_inscription_delete", methods={"POST"})
*/
public function delete(Request $request, Inscription $inscription, InscriptionRepository $inscriptionRepository): Response
{
// if ($this->isCsrfTokenValid('delete'.$inscription->getId(), $request->request->get('_token'))) {
$inscriptionRepository->remove($inscription, true);
// }
return $this->redirectToRoute('app_inscription_index', [], Response::HTTP_SEE_OTHER);
}
/**
* @Route("/supprimerInscription/{id}", name="supprimer_inscription")
*/
public function supprimer($id, InscriptionRepository $inscriptionRepository)
{
$inscription = $inscriptionRepository->find($id);
$inscriptionRepository->remove($inscription);
return $this->redirectToRoute('app_inscription_index');
}
}