<?php
namespace App\Controller\Backend;
use App\Entity\AbstractInscription;
use App\Entity\User;
use App\Form\AbstractInscription\AbstractInscriptionType;
use App\Repository\AbstractInscriptionRepository;
use App\Repository\CongresRepository;
use App\Repository\PaysRepository;
use App\Repository\UserRepository;
use Doctrine\ORM\EntityManagerInterface;
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\PasswordHasher\Hasher\UserPasswordHasherInterface;
// /**
// * @Route("/abstract/inscription")
// */
class AbstractInscriptionController extends AbstractController
{
/**
* @Route("/admin/abstract/inscription", name="app_abstract_inscription_index", methods={"GET"})
*/
public function index(AbstractInscriptionRepository $abstractInscriptionRepository): Response
{
return $this->render('backend/abstract_inscription/index.html.twig', [
'abstract_inscriptions' => $abstractInscriptionRepository->findAll(),
]);
}
/**
* @Route("/abstract/congress/{id}/new", name="app_abstract_congress_new", methods={"GET", "POST"})
*/
public function new(EntityManagerInterface $em , $id,Request $request,UserRepository $userrepository, UserPasswordHasherInterface $userPasswordHasher, PaysRepository $paysRepository, CongresRepository $congresRepository, AbstractInscriptionRepository $abstractInscriptionRepository): Response
{
$abstractInscription = new AbstractInscription();
// $user= new User();
$pays = $paysRepository->findAll();
// var_dump($pays);
// die();
// $form = $this->createForm(AbstractInscriptionType::class, $abstractInscription);
// $form->handleRequest($request);
$congres= $congresRepository->findOneBy(['id'=>$id]);
if ($request->isMethod('post')) {
if ($abstractInscriptionRepository->findOneBy(['email'=>$request->request->get('email')])!=null){
if($request->getLocale('fr')){
$this->addFlash('danger', 'email déja utilisé');
}else{
$this->addFlash('danger', 'email already used');
}
return $this->render('backend/abstract_inscription/new.html.twig', ['congres'=>$congres
]);
}
// encode the plain password.
$abstractInscription->setPassword(
$userPasswordHasher->hashPassword(
$abstractInscription,
$request->request->get('plainPassword')
)
);
$pay=$paysRepository->findOneBy(['id'=>$request->request->get('pays')]);
// var_dump($request->request->get('sousSpecialite'));
// die();
// $user->setNom($request->request->get('nom'));
// $user->setPrenom($request->request->get('prenom'));
// $user->setEmail($request->request->get('email'));
// $user->setSpecialite($request->request->get('specialite'));
// $user->setAddresse($request->request->get('addresse'));
// $user->setPays($request->request->get('pays'));
// $user->setSousSpecialite($request->request->get('sousSpecialite'));
// $user->setTitre($request->request->get('titre'));
// $user->setVerifCode($this->generateVerifCode());
// $user->setVerified(0);
// $user->setRoles(["ROLE_ABSTRACT_USER"]);
$abstractInscription->setNom($request->request->get('nom'));
$abstractInscription->setPrenom($request->request->get('prenom'));
$abstractInscription->setEmail($request->request->get('email'));
// $abstractInscription->setTitle($request->request->get('title'));
$abstractInscription->setCivilite($request->request->get('civilite'));
$abstractInscription->setSpecialite($request->request->get('specialite'));
$abstractInscription->setAdresse($request->request->get('addresse'));
$abstractInscription->setPays($pay);
$abstractInscription->setSubSpecialite($request->request->get('sousSpecialite'));
$abstractInscription->setTitle($request->request->get('titre'));
$abstractInscription->setCongres($congres);
$abstractInscription->setCreatedAt(new \DateTime('now'));
$abstractInscription->setVerifCode($this->generateVerifCode());
// $em->persist($user);
$em->persist($abstractInscription);
$em->flush();
if($request->getLocale()=='fr'){
$this->addFlash('success','Votre inscription est effectuée avec succès! Vous pouvez maintenant soumettre votre résumé');
}
if($request->getLocale()=='en'){
$this->addFlash('success','Your registration is successful! Now you can submit your abstract');
}
return $this->redirectToRoute('details_congres', ['id'=>$congres->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('backend/abstract_inscription/new.html.twig', [
'abstract_inscription' => $abstractInscription,'congres'=>$congres,'pays'=>$pays
// 'form' => $form,'
]);
}
// /**
// * @Route("/abstract/abstract/{id}/new", name="app_abstract_abstract_new", methods={"GET", "POST"})
// */
// public function new($id,Request $request, AbstractInscriptionRepository $abstractInscriptionRepository, CongresRepository $congresRepository): Response
// {
// $abstractInscription = new AbstractInscription();
// $user= new User();
// $form = $this->createForm(AbstractInscriptionType::class, $abstractInscription);
// $form->handleRequest($request);
// $congres= $congresRepository->findOneBy(['id'=>$id]);
// if ($form->isSubmitted() && $form->isValid()) {
// $tousInscription= $abstractInscriptionRepository->findBy(['congres'=>$congres->getId(),'email'=>$abstractInscription->getEmail()]);
// if(empty($tousInscription)){
// $abstractInscription->setCongres($congres);
// $abstractInscriptionRepository->add($abstractInscription, true);
// if($request->getLocale()=='fr'){
// $this->addFlash('success','Votre inscription est effectuée avec succès!, merci de vérifier votre boite mail pour soumettre votre abstract');
// }
// if($request->getLocale()=='en'){
// $this->addFlash('success','Your registration is successful!, please check your mailbox to submit your abstract');
// }
// }
// elseif(!empty($tousInscription)){
// if($request->getLocale()=='fr'){
// $this->addFlash('success','Vous avez déja inscrit, merci de vérifier votre boite mail pour soumettre votre abstract ');
// }
// if($request->getLocale()=='en'){
// $this->addFlash('success','You have already registered, please check your mailbox to submit your abstract');
// }
// }
// return $this->redirectToRoute('details_congres', ['id'=>$congres->getId()], Response::HTTP_SEE_OTHER);
// }
// return $this->renderForm('backend/abstract_inscription/new.html.twig', [
// 'abstract_inscription' => $abstractInscription,
// 'form' => $form,
// ]);
// }
/**
* @Route("admin/abstract/inscription/{id}", name="app_abstract_inscription_show", methods={"GET"})
*/
public function show(AbstractInscription $abstractInscription): Response
{
return $this->render('backend/abstract_inscription/show.html.twig', [
'abstract_inscription' => $abstractInscription,
]);
}
function generateVerifCode(){
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randstring = '';
for ($i = 0; $i < 15; $i++) {
$randstring .= $characters[rand(0, strlen($characters)-1)];
}
return $randstring;
}
/**
* @Route("admin/abstract/inscription/{id}/edit", name="app_abstract_inscription_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, AbstractInscription $abstractInscription, AbstractInscriptionRepository $abstractInscriptionRepository): Response
{
$form = $this->createForm(AbstractInscriptionType::class, $abstractInscription);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$abstractInscriptionRepository->add($abstractInscription, true);
return $this->redirectToRoute('app_abstract_inscription_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('backend/abstract_inscription/edit.html.twig', [
'abstract_inscription' => $abstractInscription,
'form' => $form,
]);
}
/**
* @Route("admin/abstract/inscription/{id}", name="app_abstract_inscription_delete", methods={"POST"})
*/
public function delete(Request $request, AbstractInscription $abstractInscription, AbstractInscriptionRepository $abstractInscriptionRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$abstractInscription->getId(), $request->request->get('_token'))) {
$abstractInscriptionRepository->remove($abstractInscription, true);
}
return $this->redirectToRoute('app_abstract_inscription_index', [], Response::HTTP_SEE_OTHER);
}
}