src/Controller/AdhesionController.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Membre;
  4. use App\Entity\Personne;
  5. use App\Entity\Province;
  6. use App\Entity\User;
  7. use App\Form\MembreInscriptionType;
  8. use App\Form\MembreType;
  9. use Doctrine\Persistence\ManagerRegistry;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. class AdhesionController extends AbstractController
  16. {
  17. #[Route('/adhesion', name: 'app_adhesion')]
  18. public function index(ManagerRegistry $doctrine): Response
  19. {
  20. $em = $doctrine->getManager();
  21. $provinces = $em->getRepository(Province::class)->findBy([], ['nom' => 'ASC']);
  22. return $this->render('adhesion/index.html.twig', [
  23. 'provinces' => $provinces,
  24. ]);
  25. }
  26. #[Route('/adhesion/form/{id}', name: 'adhesion_form')]
  27. public function form(Request $request, UserPasswordHasherInterface $passwordHasher, ManagerRegistry $doctrine, $id): Response
  28. {
  29. $membre = new Membre();
  30. $membre->setAdhesion(new \Datetime);
  31. $em = $this->getDoctrine()->getManager();
  32. $province = $em->getRepository(Province::class)->find($id);
  33. $federations = $province->getFederations();
  34. $form = $this->createForm(MembreInscriptionType::class, $membre, [
  35. 'federations' => $federations, // Passer le tableau des fédérations au formulaire
  36. ]);
  37. if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
  38. $userForm = $form->get('user')->getData();
  39. $password = $form->get('user')->get('password')->getData();
  40. $password2 = $form->get('password2')->getData();
  41. $personne = $userForm->getPersonne();
  42. $checkDoublon = $em->getRepository(Personne::class)->findByDoublon($personne->getNom(), $personne->getPrenom(), $personne->getPostnom(), $personne->getDateNaissance(), $personne->getTelephone());
  43. if ($checkDoublon == null){
  44. $email = $personne->getNom() . $personne->getPrenom() . '@cnc.cd';
  45. $email = str_replace(' ','',$email);
  46. $checkMail = false;
  47. $i = 1;
  48. while ($checkMail == false){
  49. $test = $em->getRepository(User::class)->findBy(["email" => $email]);
  50. if ($test != null){
  51. $nb = rand(1, 1000);
  52. $email = $personne->getNom() . $personne->getPrenom() . $nb . '@cnc.cd';
  53. $i++;
  54. }else{
  55. $checkMail = true;
  56. }
  57. }
  58. $email = str_replace(' ','',$email);
  59. $userForm->setEmail($email);
  60. $userForm->setRoles(['ROLE_USER']);
  61. $userForm->setPassword($passwordHasher->hashPassword($userForm, $password));
  62. if ($password == $password2){
  63. $em->persist($membre);
  64. $em->flush();
  65. //$this->sms2($personne->getTelephone(), $personne->getNom());
  66. }else{
  67. return $this->redirectToRoute('membre_inscription', array("id" => 2, "erreur" => "Les deux mots de passe ne sont pas identiques"));
  68. }
  69. return $this->redirectToRoute('app_login', array("mail" => $email));
  70. }else{
  71. return $this->redirectToRoute('app_login', array("doublon" => "Il semblerait que vous ayez déja été enregistré, veuillez vous connecter ou contacter un administrateur"));
  72. }
  73. }
  74. return $this->render('adhesion/form.html.twig', [
  75. 'form' => $form->createView() ]);
  76. }
  77. }