|
- <?php
-
- namespace Lc\CaracoleBundle\Controller\User;
-
- use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
- use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext;
- use EasyCorp\Bundle\EasyAdminBundle\Field\ArrayField;
- use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
- use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
- use Lc\CaracoleBundle\Controller\AdminControllerTrait;
- use Lc\CaracoleBundle\Form\User\UserMerchantFormType;
- use Lc\SovBundle\Controller\AbstractAdminController;
- use Lc\SovBundle\Field\BooleanField;
- use Lc\SovBundle\Model\User\UserInterface;
- use Symfony\Component\HttpFoundation\Response;
-
- abstract class UserMerchantAdminController extends AbstractAdminController
- {
- use AdminControllerTrait;
-
- public function configureFields(string $pageName): iterable
- {
- yield TextField::new('user.email');
- yield TextField::new('user.lastname');
- yield TextField::new('user.firstname');
- yield BooleanField::new('active');
- yield BooleanField::new('creditActive');
- if($this->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(),
- ]
- );
- }
-
- }
|