src/Controller/UserController.php line 43

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use DateTime;
  4. use App\Entity\User;
  5. use App\Entity\Member;
  6. use App\Entity\Address;
  7. use App\Form\MemberType;
  8. use App\Form\UserType;
  9. use DateTimeImmutable;
  10. use App\Security\EmailVerifier;
  11. use App\Repository\UserRepository;
  12. use App\Repository\MemberRepository;
  13. use App\Repository\AddressRepository;
  14. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  19. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  20. use App\Security\UserAuthenticator;
  21. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  22. use SymfonyCasts\Bundle\VerifyEmail\Exception\VerifyEmailExceptionInterface;
  23. /**
  24.  * @Route("/user")
  25.  */
  26. class UserController extends AbstractController
  27. {
  28.    /* private EmailVerifier $emailVerifier;
  29.     public function __construct(EmailVerifier $emailVerifier)
  30.     {
  31.         $this->emailVerifier = $emailVerifier;
  32.     }*/
  33.     /**
  34.      * @Route("/", name="app_user_index", methods={"GET"})
  35.      */
  36.     public function index(UserRepository $userRepository): Response
  37.     {
  38.         return $this->render('user/index.html.twig', [
  39.             'users' => $userRepository->findAll(),
  40.         ]);
  41.     }
  42.     /**
  43.      * @Route("/new", name="app_user_new", methods={"GET", "POST"})
  44.      */
  45.     public function newMember(Request $requestUserRepository $userRepositoryMemberRepository $memberRepositoryAddressRepository $addressRepository UserPasswordHasherInterface $userPasswordHasher,UserAuthenticatorInterface $userAuthenticatorUserAuthenticator $authenticator): Response
  46.     {
  47.         $user = new User();
  48.         $form $this->createForm(UserType::class, $user);
  49.         $form->handleRequest($request);
  50.         if ($form->isSubmitted() && $form->isValid()) {
  51.             //$rolesForm = $request->request->get('roles') ;
  52.             //création du compte user
  53.             $user->setCreatedAt(new DateTimeImmutable());
  54.             $user->setUpdatedAt(new DateTimeImmutable());
  55.             $user->setIsVerified(false);
  56.             $user->setPassword(
  57.             $userPasswordHasher->hashPassword(
  58.                 $user,
  59.                 $form->get('password')->getData()
  60.             ));
  61.              
  62.             //création du compte member
  63.             $member = new Member();
  64.             $member->setFirstName($request->request->get('firstName'));
  65.             $member->setLastName($request->request->get('lastName'));
  66.             $member->setEmail($form->get('email')->getData());
  67.             $member->setPhone($request->request->get('phone'));
  68.             $member->setBirthDate(\DateTime::createFromFormat('Y-m-d'$request->request->get('birthDate')));
  69.             $member->setSexe($request->request->get('sexe'));
  70.             $member->setCreatedAt(new  DateTimeImmutable());
  71.             $member->setUpdatedAt(new  DateTimeImmutable());
  72.             $member->setActive(false);
  73.             $member->setUser($user);
  74.             //création de l'adresse
  75.             $address =new Address();
  76.             $address->setStreet($request->request->get('street'));
  77.             $address->setNumber($request->request->get('number'));
  78.             $address->setCountry($request->request->get('country'));
  79.             $address->setPostcode($request->request->get('postcode'));
  80.             $address->setCreatedAt(new  DateTimeImmutable());
  81.             $address->setUpdatedAt(new  DateTimeImmutable());
  82.             $address->setActive(true);
  83.             $addressRepository->add($address);
  84.             $member->setAddress($address);
  85.             $userRoles = array("ROLE_USER","ROLE_MEMBER");
  86.             $user->setRoles($userRoles);
  87.             $memberRepository->add($member);
  88.             $userRepository->add($usertrue);
  89.              // generate a signed url and email it to the user
  90.             /*$this->emailVerifier->sendEmailConfirmation('app_verify_email', $user,
  91.              (new TemplatedEmail())
  92.                  ->from(new Address('bot@coaching-village.fitness', 'Coaching Village Bot'))
  93.                  ->to($user->getEmail())
  94.                  ->subject('Confirmaion de votre Email pour la validation de votre compte')
  95.                  ->htmlTemplate('registration/confirmation_email.html.twig')
  96.          );*/
  97.             return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  98.         }
  99.         return $this->render('user/new.html.twig', [
  100.             'user' => $user,
  101.             'form' => $form->createView(),
  102.         ]);
  103.     }
  104.     /**
  105.      * @Route("/{id}", name="app_user_show", methods={"GET"})
  106.      */
  107.     public function show(User $user): Response
  108.     {
  109.         return $this->render('user/show.html.twig', [
  110.             'user' => $user,
  111.         ]);
  112.     }
  113.     /**
  114.      * @Route("/{id}/edit", name="app_user_edit", methods={"GET", "POST"})
  115.      */
  116.     public function edit(Request $requestUser $user,UserPasswordHasherInterface $userPasswordHasherAddressRepository $addressRepositoryUserRepository $userRepositoryMemberRepository $memberRepository): Response
  117.     {
  118.         $member $memberRepository->findByUser($user);
  119.         $form $this->createForm(MemberType::class, $member);
  120.         $form->handleRequest($request);
  121.         if ($form->isSubmitted() && $form->isValid()) {
  122.             $member->setUpdatedAt(new  DateTimeImmutable());
  123.             $user->setUpdatedAt(new  DateTimeImmutable());
  124.             //modification de l'adresse
  125.             $address $member->getAddress();
  126.             $address->setStreet($request->request->get('street'));
  127.             $address->setNumber($request->request->get('number'));
  128.             $address->setCountry($request->request->get('country'));
  129.             $address->setPostcode($request->request->get('postcode'));
  130.             $address->setUpdatedAt(new  DateTimeImmutable());
  131.             $addressRepository->add($addresstrue);
  132.             $userRepository->add($usertrue);
  133.             $memberRepository->add($membertrue);
  134.             return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  135.         }
  136.         return $this->renderForm('user/edit.html.twig', [
  137.             'user' => $user,
  138.             'member'=>$member,
  139.             'address'=>$member->getAddress(),
  140.             'form' => $form,
  141.         ]);
  142.     }
  143.     /**
  144.      * @Route("/{id}", name="app_user_delete", methods={"POST"})
  145.      */
  146.     public function delete(Request $requestUser $userUserRepository $userRepository): Response
  147.     {
  148.         $user->setActive(false);
  149.         $userRepository->add($user,true);
  150.         return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  151.     }
  152.     /*
  153.     public function delete(Request $request, User $user, UserRepository $userRepository): Response
  154.     {
  155.         if ($this->isCsrfTokenValid('delete'.$user->getId(), $request->request->get('_token'))) {
  156.             $userRepository->remove($user, true);
  157.         }
  158.         return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  159.     }*/
  160. }