<?php
namespace App\Controller;
use App\Entity\Membre;
use App\Entity\Personne;
use App\Entity\Province;
use App\Entity\User;
use App\Form\MembreInscriptionType;
use App\Form\MembreType;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
class AdhesionController extends AbstractController
{
#[Route('/adhesion', name: 'app_adhesion')]
public function index(ManagerRegistry $doctrine): Response
{
$em = $doctrine->getManager();
$provinces = $em->getRepository(Province::class)->findBy([], ['nom' => 'ASC']);
return $this->render('adhesion/index.html.twig', [
'provinces' => $provinces,
]);
}
#[Route('/adhesion/form/{id}', name: 'adhesion_form')]
public function form(Request $request, UserPasswordHasherInterface $passwordHasher, ManagerRegistry $doctrine, $id): Response
{
$membre = new Membre();
$membre->setAdhesion(new \Datetime);
$em = $this->getDoctrine()->getManager();
$province = $em->getRepository(Province::class)->find($id);
$federations = $province->getFederations();
$form = $this->createForm(MembreInscriptionType::class, $membre, [
'federations' => $federations, // Passer le tableau des fédérations au formulaire
]);
if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
$userForm = $form->get('user')->getData();
$password = $form->get('user')->get('password')->getData();
$password2 = $form->get('password2')->getData();
$personne = $userForm->getPersonne();
$checkDoublon = $em->getRepository(Personne::class)->findByDoublon($personne->getNom(), $personne->getPrenom(), $personne->getPostnom(), $personne->getDateNaissance(), $personne->getTelephone());
if ($checkDoublon == null){
$email = $personne->getNom() . $personne->getPrenom() . '@cnc.cd';
$email = str_replace(' ','',$email);
$checkMail = false;
$i = 1;
while ($checkMail == false){
$test = $em->getRepository(User::class)->findBy(["email" => $email]);
if ($test != null){
$nb = rand(1, 1000);
$email = $personne->getNom() . $personne->getPrenom() . $nb . '@cnc.cd';
$i++;
}else{
$checkMail = true;
}
}
$email = str_replace(' ','',$email);
$userForm->setEmail($email);
$userForm->setRoles(['ROLE_USER']);
$userForm->setPassword($passwordHasher->hashPassword($userForm, $password));
if ($password == $password2){
$em->persist($membre);
$em->flush();
//$this->sms2($personne->getTelephone(), $personne->getNom());
}else{
return $this->redirectToRoute('membre_inscription', array("id" => 2, "erreur" => "Les deux mots de passe ne sont pas identiques"));
}
return $this->redirectToRoute('app_login', array("mail" => $email));
}else{
return $this->redirectToRoute('app_login', array("doublon" => "Il semblerait que vous ayez déja été enregistré, veuillez vous connecter ou contacter un administrateur"));
}
}
return $this->render('adhesion/form.html.twig', [
'form' => $form->createView() ]);
}
}