src/Controller/Ecommerce/Profile/EcommerceTeamController.php line 84

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Ecommerce\Profile;
  3. use App\Entity\Roles;
  4. use App\Entity\RolesAuthorizedActions;
  5. use App\Entity\UserEstablishment;
  6. use App\Repository\UserEstablishmentRepository;
  7. use App\Repository\UsersRepository;
  8. use App\Repository\RolesRepository;
  9. use App\Repository\UserStatusRepository;
  10. use App\Repository\AuthorizedActionsRepository;
  11. use App\Repository\RolesAuthorizedActionsRepository;
  12. use App\Service\MailerService;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use DateTime;
  20. /**
  21.  * @Route("/ecommerce/profile/team", name="ecommerce_profile_team_")
  22.  */
  23. class EcommerceTeamController extends AbstractController
  24. {
  25.     public function __construct(
  26.         usersRepository $usersRepository,
  27.         RolesRepository $rolesRepository,
  28.         UserEstablishmentRepository $userEstablishmentRepository,
  29.         UserStatusRepository $userStatusRepository,
  30.         AuthorizedActionsRepository $authorizedActionsRepository,
  31.         RolesAuthorizedActionsRepository $rolesAuthorizedActionsRepository,
  32.         EntityManagerInterface $entityManager,
  33.         MailerService $mailerService
  34.     ) {
  35.         $this->usersRepository $usersRepository;
  36.         $this->rolesRepository $rolesRepository;
  37.         $this->userStatusRepository $userStatusRepository;
  38.         $this->userEstablishmentRepository $userEstablishmentRepository;
  39.         $this->authorizedActionsRepository $authorizedActionsRepository;
  40.         $this->rolesAuthorizedActionsRepository $rolesAuthorizedActionsRepository;
  41.         $this->entityManager $entityManager;
  42.         $this->mailerService $mailerService;
  43.     }
  44.     /**
  45.      * @Route("/", name="index")
  46.      */
  47.     public function index(): Response
  48.     {
  49.         $roles $this->rolesRepository->findBy(['establishment' => $this->getUser()->getConnectedAt(), 'deleted' => false]);
  50.         $actions $this->authorizedActionsRepository->findBy(['deleted'=>false]);
  51.         return $this->render('ecommerce/profile/team.html.twig', [
  52.             'roles' => $roles,
  53.             'actions' => $actions
  54.         ]);
  55.     }
  56.     /**
  57.      * @Route("/list", name="list")
  58.      */
  59.     public function list(): Response
  60.     {
  61.         $team $this->userEstablishmentRepository->findBy(['deleted' => false'establishment' => $this->getUser()->getConnectedAt()]);
  62.         $return $this->renderView('ecommerce/profile/team-list.html.twig', [
  63.             'team' => $team ??  null,
  64.         ]);
  65.         return new JsonResponse([
  66.             'status' => 200,
  67.             'html' => $return
  68.         ]);
  69.     }
  70.     /**
  71.      * @Route("/roles", name="roles")
  72.      */
  73.     public function roles(): Response
  74.     {
  75.         $roles $this->rolesRepository->findBy(['establishment' => $this->getUser()->getConnectedAt(), 'deleted' => false]);
  76.         $actions $this->authorizedActionsRepository->findBy(['deleted'=>false]);
  77.         return $this->render('ecommerce/profile/team-list-roles.html.twig', [
  78.             'roles' => $roles,
  79.             'actions' => $actions
  80.         ]);
  81.     }
  82.     /**
  83.      * @Route("/select-role", name="select_role")
  84.      */
  85.     public function selectRole(): Response
  86.     {
  87.         $roles $this->rolesRepository->findBy(['establishment' => $this->getUser()->getConnectedAt(), 'deleted' => false]);
  88.         return $this->render('ecommerce/profile/select-role.html.twig', [
  89.             'roles' => $roles,
  90.         ]);
  91.     }
  92.     /**
  93.      * @Route("/delete", name="delete")
  94.      */
  95.     public function delete(Request $request): Response
  96.     {
  97.         $userEstablishment $this->userEstablishmentRepository->find($request->get('userEstablishment'));
  98.         $userEstablishment->setDeleted(true);
  99.         $this->entityManager->persist($userEstablishment);
  100.         $this->entityManager->flush();
  101.         return new JsonResponse([
  102.             'status' => 200,
  103.             'comment' => 'Deletion saved'
  104.         ]);
  105.     }
  106.     /**
  107.      * @Route("/add", name="add")
  108.      */
  109.     public function add(Request $request): Response
  110.     {
  111.         $role $this->rolesRepository->find($request->get('role'));
  112.         $user $this->usersRepository->findOneBy(['email' => $request->get('email')]);
  113.         $linkExist $this->userEstablishmentRepository->findOneBy(['deleted' => false'establishment' => $this->getUser()->getConnectedAt(), 'user' => $user]);
  114.         if(!$linkExist && $user){
  115.             $newUserEstablishment = new UserEstablishment();
  116.             $newUserEstablishment->setUser($user);
  117.             $newUserEstablishment->setEstablishment($this->getUser()->getConnectedAt());
  118.             $newUserEstablishment->setRole($role);
  119.             $this->entityManager->persist($newUserEstablishment);
  120.             $this->entityManager->flush();
  121.             $params = [
  122.                 'establishment' => $this->getUser()->getConnectedAt()->getName(),
  123.                 'status' => $role->getName()
  124.             ];
  125.             $this->mailerService->load(
  126.                 $params,
  127.                 'd-b5de2d1cf2c6498d82a6d0ca8ce684c7',
  128.                 $user
  129.             );
  130.             return new JsonResponse([
  131.                 'status' => 200,
  132.                 'comment' => 'user add saved'
  133.             ]);
  134.         }
  135.         else{
  136.             return new JsonResponse([
  137.                 'status' => 200,
  138.             ]);
  139.         }
  140.     }
  141.     /**
  142.      * @Route("/filter-users", name="filter_users", methods={"GET"})
  143.      */
  144.     public function filterResponsible(Request $request): Response
  145.     {
  146.         $idOrName strtolower($request->get('idOrName')["term"]);
  147.         $users $this->usersRepository->filterResponsible($idOrName);
  148.         json_encode($usersJSON_HEX_QUOT JSON_HEX_APOS);
  149.         return new JsonResponse(['data' => $users]);
  150.     }
  151.     /**
  152.      * @Route("/add-action", name="add_action", methods={"POST"})
  153.      */
  154.     public function addAction(Request $request): Response
  155.     {
  156.         $role $this->rolesRepository->find($request->get('role'));
  157.         $action $this->authorizedActionsRepository->find($request->get('action'));
  158.         $roleAction $this->rolesAuthorizedActionsRepository->findBy(['authorizedAction' => $action'role'=> $role]);
  159.         if($roleAction){
  160.             return new JsonResponse(['comment' => "action already add"'data' => true], Response::HTTP_OK);
  161.         }
  162.         $roleAction = new RolesAuthorizedActions();
  163.         $roleAction->setRole($role);
  164.         $roleAction->setAuthorizedAction($action);
  165.         $this->entityManager->persist($roleAction);
  166.         $this->entityManager->flush();
  167.         return new JsonResponse(['comment' => "action updated"'data' => false], Response::HTTP_OK);
  168.     }
  169.     /**
  170.      * @Route("/delete-action", name="delete_action", methods={"POST"})
  171.      */
  172.     public function deleteRoleAction(Request $request): JsonResponse
  173.     {
  174.         $role $this->rolesAuthorizedActionsRepository->find($request->get('id'));
  175.         if (!$role)
  176.             return new JsonResponse(["error" => "The role could ne be found"], Response::HTTP_NOT_FOUND);
  177.         $role->setDeleted(true);
  178.         $this->entityManager->persist($role);
  179.         $this->entityManager->flush();
  180.         return new JsonResponse(["action deleted" => true], Response::HTTP_OK);
  181.     }
  182.     /**
  183.      * @Route("/delete-role", name="delete_role", methods={"POST"})
  184.      */
  185.     public function deleteRole(Request $request): Response
  186.     {
  187.         $role $this->rolesRepository->find($request->get('id'));
  188.         if (!$role)
  189.             return new JsonResponse(["error" => "The role could ne be found"], Response::HTTP_NOT_FOUND);
  190.         $role->setDeleted(true);
  191.         $this->entityManager->persist($role);
  192.         $this->entityManager->flush();
  193.         return new JsonResponse(["role deleted" => true], Response::HTTP_OK);
  194.     }
  195.     /**
  196.      * @Route("/create-role", name="create_role", methods={"POST"})
  197.      */
  198.     public function createRole(Request $request): Response
  199.     {
  200.         $role = new Roles();
  201.         $role->setName($request->get('name'));
  202.         $role->setEstablishment($this->getUser()->getConnectedAt());
  203.         $this->entityManager->persist($role);
  204.         $actions json_decode($request->get('actions'));
  205.         foreach ($actions as $actionId)
  206.         {
  207.             $roleAuthorizedAction = new RolesAuthorizedActions();
  208.             $roleAuthorizedAction->setRole($role);
  209.             $action $this->authorizedActionsRepository->find($actionId);
  210.             $roleAuthorizedAction->setAuthorizedAction($action);
  211.             $this->entityManager->persist($roleAuthorizedAction);
  212.         }
  213.         $this->entityManager->flush();
  214.         return new JsonResponse(['role created' => true], Response::HTTP_OK);
  215.     }
  216.     /**
  217.      * @Route("/modify", name="modify", methods={"POST"})
  218.      */
  219.     public function modify(Request $request): Response
  220.     {
  221.        $user $this->usersRepository->find($request->get('user'));
  222.        $role $this->rolesRepository->find($request->get('role'));
  223.        $userEstablishment $this->userEstablishmentRepository->findOneBy(['deleted' => false'user' => $user'establishment' =>$this->getUser()->getConnectedAt()]);
  224.        if($userEstablishment->getRole() !== $role){
  225.            $userEstablishment->setRole($role);
  226.            $this->entityManager->persist($userEstablishment);
  227.            $this->entityManager->flush();
  228.        }
  229.         return new JsonResponse(['role updated' => true], Response::HTTP_OK);
  230.     }
  231. }