src/Controller/MemberController.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Member;
  4. use App\Entity\User;
  5. use App\Entity\Address;
  6. use App\Form\MemberType;
  7. use DateTimeImmutable;
  8. use App\Repository\MemberRepository;
  9. use App\Repository\UserRepository;
  10. use App\Repository\AddressRepository;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. /**
  17.  * @Route("/member")
  18.  */
  19. class MemberController extends AbstractController
  20. {
  21.     /**
  22.      * @Route("/", name="app_member_index", methods={"GET"})
  23.      */
  24.     public function index(MemberRepository $memberRepository): Response
  25.     {
  26.         return $this->render('member/index.html.twig', [
  27.             'members' => $memberRepository->findAll(),
  28.         ]);
  29.     }
  30.     /**
  31.      * @Route("/new", name="app_member_new", methods={"GET", "POST"})
  32.      */
  33.     public function new(Request $request,UserRepository $userRepositoryMemberRepository $memberRepository ,AddressRepository $addressRepository,  UserPasswordHasherInterface $userPasswordHasher): Response
  34.     {
  35.         $member = new Member();
  36.         $form $this->createForm(MemberType::class, $member);
  37.         $form->handleRequest($request);
  38.         if ($form->isSubmitted() && $form->isValid()) {
  39.             //création du compte user
  40.             $user = new User();
  41.             $user->setEmail($form->get('email')->getData());
  42.             $user->setCreatedAt(new DateTimeImmutable());
  43.             $user->setUpdatedAt(new DateTimeImmutable());
  44.             $user->setIsVerified(false);
  45.             $user->setPassword(
  46.             $userPasswordHasher->hashPassword(
  47.                 $user,
  48.                 $request->request->get('password')
  49.             ));
  50.             $userRoles = array("ROLE_USER","ROLE_MEMBER");
  51.             $user->setRoles($userRoles);
  52.             //création du membre
  53.             $member->setCreatedAt(new  DateTimeImmutable());
  54.             $member->setUpdatedAt(new  DateTimeImmutable());
  55.             $member->setUser($user);
  56.             if($request->request->get('active') == null)
  57.             {
  58.                 $member->setActive(false);
  59.                 $user->setActive(false);
  60.             }else{
  61.                 $member->setActive(true);
  62.                 $user->setActive(true);
  63.             }
  64.             
  65.             //création de l'adresse
  66.             $address =new Address();
  67.             $address->setStreet($request->request->get('street'));
  68.             $address->setNumber($request->request->get('number'));
  69.             $address->setCountry($request->request->get('country'));
  70.             $address->setPostcode($request->request->get('postcode'));
  71.             $address->setCreatedAt(new  DateTimeImmutable());
  72.             $address->setUpdatedAt(new  DateTimeImmutable());
  73.             $address->setActive(true);
  74.             $addressRepository->add($addresstrue);
  75.             $userRepository->add($usertrue);
  76.             $member->setAddress($address);
  77.             $memberRepository->add($membertrue);
  78.             return $this->redirectToRoute('app_member_index', [], Response::HTTP_SEE_OTHER);
  79.         }
  80.         return $this->renderForm('member/new.html.twig', [
  81.             'member' => $member,
  82.             'form' => $form,
  83.         ]);
  84.     }
  85.     /**
  86.      * @Route("/{id}", name="app_member_show", methods={"GET"})
  87.      */
  88.     public function show(Member $member): Response
  89.     {
  90.         return $this->render('member/show.html.twig', [
  91.             'member' => $member,
  92.         ]);
  93.     }
  94.     /**
  95.      * @Route("/{id}/edit", name="app_member_edit", methods={"GET", "POST"})
  96.      */
  97.     public function edit(Request $requestMember $memberMemberRepository $memberRepositoryUserRepository $userRepositoryAddressRepository $addressRepository): Response
  98.     {
  99.         $form $this->createForm(MemberType::class, $member);
  100.         $form->handleRequest($request);
  101.         $user$member->getUser();
  102.         if ($form->isSubmitted() && $form->isValid()) {
  103.             if($request->request->get('active') == 'on')
  104.             {
  105.                 $member->setActive(true);
  106.                 $user->setActive(true);
  107.             }else{
  108.                 $member->setActive(false);
  109.                 $user->setActive(false);
  110.             }
  111.             $member->setUpdatedAt(new  DateTimeImmutable());
  112.             $user->setUpdatedAt(new  DateTimeImmutable());
  113.             //modification de l'adresse
  114.             $address $member->getAddress();
  115.             $address->setStreet($request->request->get('street'));
  116.             $address->setNumber($request->request->get('number'));
  117.             $address->setCountry($request->request->get('country'));
  118.             $address->setPostcode($request->request->get('postcode'));
  119.             $address->setUpdatedAt(new  DateTimeImmutable());
  120.             $addressRepository->add($addresstrue);
  121.             $userRepository->add($usertrue);
  122.             $memberRepository->add($membertrue);
  123.             return $this->redirectToRoute('app_member_index', [], Response::HTTP_SEE_OTHER);
  124.         }
  125.         return $this->renderForm('member/edit.html.twig', [
  126.             'member' => $member,
  127.             'address'=>$member->getAddress(),
  128.             'form' => $form,
  129.         ]);
  130.     }
  131.     /**
  132.      * @Route("/{id}", name="app_member_delete", methods={"POST"})
  133.      */
  134.     public function delete(Request $requestMember $memberMemberRepository $memberRepository): Response
  135.     {
  136.         if ($this->isCsrfTokenValid('delete'.$member->getId(), $request->request->get('_token'))) {
  137.             $memberRepository->remove($membertrue);
  138.         }
  139.         return $this->redirectToRoute('app_member_index', [], Response::HTTP_SEE_OTHER);
  140.     }
  141. }