isGranted('ROLE_SUPER_ADMIN'))yield ArrayField::new('roles'); } public function new(AdminContext $context): Response { $entityManager = $this->get('em'); $userFactory = $this->get('user_factory'); $userMerchantFactory = $this->get('user_merchant_factory'); $userRepository = $entityManager->getRepository(UserInterface::class); $merchantResolver = $this->get('merchant_resolver'); $userMerchant = $userMerchantFactory->create(); $form = $this->createForm(UserMerchantFormType::class, $userMerchant); $form->handleRequest($context->getRequest()); if ($form->isSubmitted() && $form->isValid()) { $userMerchant = $form->getData(); $existingUser = $userRepository->findOneByEmail($form->get('email')->getData()); //Le user n'existe pas, on le créer if ($existingUser == null) { $param['email'] = $form->get('email')->getData(); $param['lastname'] = $form->get('lastname')->getData(); $param['lastname'] = $form->get('firstname')->getData(); $param['roles'] = array(); $user = $userFactory->create($param); $entityManager->create($user); $userMerchant->setUser($user); $entityManager->create($userMerchant); $entityManager->flush(); $this->addFlash('success', $this->get('translator_admin')->trans('form.user_merchant.create')); $url = $this->get(AdminUrlGenerator::class)->setAction(Action::INDEX)->generateUrl(); return $this->redirect($url); } else { //Le user existe, on vérifie si le usemerchant existe aussi $existingUserMerchant = $merchantResolver->getUserMerchant($existingUser); if ($existingUserMerchant == null) { $userMerchant->setUser($existingUser); $entityManager->create($userMerchant); $entityManager->flush(); $this->addFlash('success', $this->get('translator_admin')->trans('form.user_merchant.linked')); $url = $this->get(AdminUrlGenerator::class)->setAction(Action::INDEX)->generateUrl(); return $this->redirect($url); } else { $this->addFlash('error', $this->get('translator_admin')->trans('form.user_merchant.already_exist')); } } } return $this->render( '@LcCaracole/admin/user/usermerchant_new.html.twig', [ 'form' => $form->createView(), ] ); } public function edit(AdminContext $context): Response { $entityManager = $this->get('em'); $userRepository = $entityManager->getRepository(UserInterface::class); $merchantResolver = $this->get('merchant_resolver'); $userMerchant = $context->getEntity()->getInstance(); $form = $this->createForm(UserMerchantFormType::class, $userMerchant); $form->handleRequest($context->getRequest()); if ($form->isSubmitted() && $form->isValid()) { $userMerchant = $form->getData(); $userMerchant->getUser()->setEmail($form->get('email')->getData()); $userMerchant->getUser()->setLastName($form->get('lastname')->getData()); $userMerchant->getUser()->setFirstname($form->get('firstname')->getData()); $entityManager->update($userMerchant); $entityManager->update($userMerchant->getUser()); $entityManager->flush(); $this->addFlash('success', $this->get('translator_admin')->trans('form.user_merchant.update')); $url = $this->get(AdminUrlGenerator::class)->setAction(Action::INDEX)->generateUrl(); return $this->redirect($url); } else { $form->get('email')->setData($userMerchant->getUser()->getEmail()); $form->get('lastname')->setData($userMerchant->getUser()->getLastname()); $form->get('firstname')->setData($userMerchant->getUser()->getFirstname()); } return $this->render( '@LcCaracole/admin/user/usermerchant_edit.html.twig', [ 'form' => $form->createView(), ] ); } }