vendor/uvdesk/core-framework/Controller/Account.php line 56

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\CoreFrameworkBundle\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Contracts\Translation\TranslatorInterface;
  5. use Symfony\Component\Filesystem\Filesystem as Fileservice;
  6. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  9. use Webkul\UVDesk\CoreFrameworkBundle\Entity\User;
  10. use Webkul\UVDesk\CoreFrameworkBundle\Entity\Recaptcha;
  11. use Webkul\UVDesk\CoreFrameworkBundle\Form\UserProfile;
  12. use Webkul\UVDesk\CoreFrameworkBundle\Entity\UserInstance;
  13. use Webkul\UVDesk\CoreFrameworkBundle\Entity\SupportRole;
  14. use Webkul\UVDesk\CoreFrameworkBundle\Entity\SupportTeam;
  15. use Webkul\UVDesk\CoreFrameworkBundle\Entity\SupportGroup;
  16. use Webkul\UVDesk\CoreFrameworkBundle\Entity\SupportPrivilege;
  17. use Webkul\UVDesk\CoreFrameworkBundle\Workflow\Events as CoreWorkflowEvents;
  18. use Webkul\UVDesk\CoreFrameworkBundle\Services\UserService;
  19. use Webkul\UVDesk\CoreFrameworkBundle\Services\UVDeskService;
  20. use Webkul\UVDesk\CoreFrameworkBundle\Services\FileUploadService;
  21. use Webkul\UVDesk\CoreFrameworkBundle\FileSystem\FileSystem;
  22. class Account extends AbstractController
  23. {
  24.     private $userService;
  25.     private $eventDispatcher;
  26.     private $translator;
  27.     private $passwordEncoder;
  28.     private $uvdeskService;
  29.     private $fileSystem;
  30.     private $fileUploadService;
  31.     public function __construct(UserService $userServiceEventDispatcherInterface $eventDispatcherTranslatorInterface $translatorUserPasswordEncoderInterface $passwordEncoderUVDeskService $uvdeskServiceFileSystem $fileSystemFileUploadService $fileUploadService)
  32.     {
  33.         $this->userService $userService;
  34.         $this->eventDispatcher $eventDispatcher;
  35.         $this->translator $translator;
  36.         $this->passwordEncoder $passwordEncoder;
  37.         $this->uvdeskService $uvdeskService;
  38.         $this->fileSystem $fileSystem;
  39.         $this->fileUploadService $fileUploadService;
  40.     }
  41.     private function encodePassword(User $user$plainPassword)
  42.     {
  43.         $encodedPassword $this->passwordEncoder->encodePassword($user$plainPassword);
  44.     }
  45.     public function loadDashboard(Request $request)
  46.     {
  47.         return $this->render('@UVDeskCoreFramework//dashboard.html.twig', []);
  48.     }
  49.     public function listAgents(Request $request)
  50.     {
  51.         if (! $this->userService->isAccessAuthorized('ROLE_AGENT_MANAGE_AGENT')) {
  52.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  53.         }
  54.         return $this->render('@UVDeskCoreFramework/Agents/listSupportAgents.html.twig');
  55.     }
  56.     public function loadProfile(Request $request)
  57.     {
  58.         // @TODO: Refactor
  59.         $em $this->getDoctrine()->getManager();
  60.         $user $this->getUser();
  61.         $originalUser = clone $user;
  62.         $errors = [];
  63.         $dataFiles $request->files->get('user_form');
  64.         if ($request->getMethod() == "POST") {
  65.             $data     $request->request->all();
  66.             $dataFiles $request->files->get('user_form');
  67.             // Profile upload validation
  68.             $validMimeType = ['image/jpeg''image/png''image/jpg'];
  69.             if (isset($dataFiles['profileImage'])) {
  70.                 if (! in_array($dataFiles['profileImage']->getMimeType(), $validMimeType)) {
  71.                     $this->addFlash('warning'$this->translator->trans('Error ! Profile image is not valid, please upload a valid format'));
  72.                     return $this->redirect($this->generateUrl('helpdesk_member_profile'));
  73.                 }
  74.             }
  75.             $data $data['user_form'];
  76.             $checkUser $em->getRepository(User::class)->findOneBy(array('email' => $data['email']));
  77.             $errorFlag 0;
  78.             if ($checkUser) {
  79.                 if ($checkUser->getId() != $user->getId())
  80.                     $errorFlag 1;
  81.             }
  82.             if (! $errorFlag) {
  83.                 $password $user->getPassword();
  84.                 $form $this->createForm(UserProfile::class, $user);
  85.                 $form->handleRequest($request);
  86.                 $form->submit($data);
  87.                 if ($form->isValid()) {
  88.                     if ($data != null) {
  89.                         $submittedPassword $data['password']['first'];
  90.                         $encoder $this->passwordEncoder;
  91.                         // save previous password if password is blank or null provided
  92.                         $encodedPassword = empty($submittedPassword) ? $password $encoder->encodePassword($user$submittedPassword);
  93.                         if (! empty($encodedPassword)) {
  94.                             $user->setPassword($encodedPassword);
  95.                         } else {
  96.                             $this->addFlash('warning'$this->translator->trans('Error! Given current password is incorrect.'));
  97.                             return $this->redirect($this->generateUrl('helpdesk_member_profile'));
  98.                         }
  99.                     }
  100.                     $user->setFirstName(trim($data['firstName']));
  101.                     $user->setLastName(trim($data['lastName']));
  102.                     $user->setEmail(trim($data['email']));
  103.                     $user->setTimezone($data['timezone']);
  104.                     $user->setTimeformat($data['timeformat']);
  105.                     $em->persist($user);
  106.                     $em->flush();
  107.                     $userInstance $em->getRepository(UserInstance::class)->findOneBy(array('user' => $user->getId()));
  108.                     $userInstance $this->userService->getUserDetailById($user->getId());
  109.                     if (isset($dataFiles['profileImage'])) {
  110.                         $previousImage $userInstance->getProfileImagePath();
  111.                         if ($previousImage != null) {
  112.                             $image str_replace("\\""/"$this->getParameter('kernel.project_dir') . '/public' $previousImage);
  113.                             $check $this->fileUploadService->fileRemoveFromFolder($image);
  114.                         }
  115.                         $assetDetails $this->fileSystem->getUploadManager()->uploadFile($dataFiles['profileImage'], 'profile');
  116.                         $userInstance->setProfileImagePath($assetDetails['path']);
  117.                     }
  118.                     // Removed profile image from database and path
  119.                     $fileService = new Fileservice;
  120.                     if ($request->get('removeImage') == 'on') {
  121.                         if ($userInstance->getProfileImagePath()) {
  122.                             $fileService->remove($this->getParameter('kernel.project_dir') . '/public' $userInstance->getProfileImagePath());
  123.                         }
  124.                         $userInstance $userInstance->setProfileImagePath(null);
  125.                     }
  126.                     $userInstance  $userInstance->setContactNumber($data['contactNumber']);
  127.                     $userInstance  $userInstance->setSignature($data['signature']);
  128.                     $em->persist($userInstance);
  129.                     $em->flush();
  130.                     $roleId $user->getAgentInstance()->getSupportRole()->getId();
  131.                     if (in_array($roleId,  [12])) {
  132.                         // Recaptcha Setting
  133.                         $recaptchaSetting $em->getRepository(Recaptcha::class)->findOneBy(['id' => 1]);
  134.                         if ($recaptchaSetting) {
  135.                             $recaptchaSetting->setSiteKey($data['recaptcha_site_key']);
  136.                             $recaptchaSetting->setSecretKey($data['recaptcha_secret_key']);
  137.                             if (isset($data['recaptcha_status'])) {
  138.                                 $recaptchaSetting->setIsActive(true);
  139.                             } else {
  140.                                 $recaptchaSetting->setIsActive(false);
  141.                             }
  142.                             $em->persist($recaptchaSetting);
  143.                             $em->flush();
  144.                         } else {
  145.                             $recaptchaNew = new Recaptcha;
  146.                             $recaptchaNew->setSiteKey($data['recaptcha_site_key']);
  147.                             $recaptchaNew->setSecretKey($data['recaptcha_secret_key']);
  148.                             if (isset($data['recaptcha_status'])) {
  149.                                 $recaptchaNew->setIsActive(true);
  150.                             } else {
  151.                                 $recaptchaNew->setIsActive(false);
  152.                             }
  153.                             $em->persist($recaptchaNew);
  154.                             $em->flush();
  155.                         }
  156.                     }
  157.                     $this->addFlash('success'$this->translator->trans('Success ! Profile update successfully.'));
  158.                     return $this->redirect($this->generateUrl('helpdesk_member_profile'));
  159.                 } else {
  160.                     $errors $form->getErrors();
  161.                 }
  162.             } else {
  163.                 $this->addFlash('warning'$this->translator->trans('Error ! User with same email is already exist.'));
  164.                 return $this->redirect($this->generateUrl('helpdesk_member_profile'));
  165.             }
  166.         }
  167.         return $this->render('@UVDeskCoreFramework//profile.html.twig', array(
  168.             'user'   => $user,
  169.             'errors' => json_encode($errors)
  170.         ));
  171.     }
  172.     public function editAgent($agentId)
  173.     {
  174.         if (!$this->userService->isAccessAuthorized('ROLE_AGENT_MANAGE_AGENT')) {
  175.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  176.         }
  177.         // @TODO: Refactor
  178.         $em $this->getDoctrine()->getManager();
  179.         $request $this->container->get('request_stack')->getCurrentRequest();
  180.         $activeUser $this->userService->getSessionUser();
  181.         $user $em->getRepository(User::class)->find($agentId);
  182.         $instanceRole $user->getAgentInstance()->getSupportRole()->getCode();
  183.         if (empty($user)) {
  184.             dump('Not found');
  185.             die;
  186.         }
  187.         switch (strtoupper($request->getMethod())) {
  188.             case 'POST':
  189.                 $formErrors = [];
  190.                 $data      $request->request->get('user_form');
  191.                 $dataFiles $request->files->get('user_form');
  192.                 // Agent Profile upload validation
  193.                 $validMimeType = ['image/jpeg''image/png''image/jpg'];
  194.                 if (isset($dataFiles['profileImage'])) {
  195.                     if (! in_array($dataFiles['profileImage']->getMimeType(), $validMimeType)) {
  196.                         $this->addFlash('warning'$this->translator->trans('Error ! Profile image is not valid, please upload a valid format'));
  197.                         $response $this->render('@UVDeskCoreFramework/Agents/updateSupportAgent.html.twig', [
  198.                             'user'         => $user,
  199.                             'instanceRole' => $instanceRole,
  200.                             'errors'       => json_encode([])
  201.                         ]);
  202.                         break;
  203.                     }
  204.                 }
  205.                 $checkUser $em->getRepository(User::class)->findOneBy(array('email' => $data['email']));
  206.                 $errorFlag 0;
  207.                 if ($checkUser && $checkUser->getId() != $agentId) {
  208.                     $errorFlag 1;
  209.                 }
  210.                 if (! $errorFlag) {
  211.                     $currentUser $this->getUser();
  212.                     $isAdmin in_array('ROLE_ADMIN'$currentUser->getRoles(), true);
  213.                     $userInstance $em->getRepository(UserInstance::class)->findOneBy(array('user' => $agentId'supportRole' => array(123)));
  214.                     $isSuperAdmin in_array('ROLE_SUPER_ADMIN'$currentUser->getRoles(), true);
  215.                     // Get current role code from user instance
  216.                     $currentRoleCode $userInstance->getSupportRole() ? $userInstance->getSupportRole()->getCode() : null;
  217.                     $targetUserIsSuperAdmin 'ROLE_SUPER_ADMIN' == $currentRoleCode;
  218.                     $targetUserIsAdmin 'ROLE_ADMIN' == $currentRoleCode;
  219.                     if (
  220.                         (($targetUserIsSuperAdmin
  221.                         && !$isSuperAdmin) || ($targetUserIsAdmin && !$isAdmin && !$isSuperAdmin))
  222.                         && $data['email'] !== $user->getEmail()
  223.                     ) {
  224.                         $this->addFlash('warning''You are not allowed to update the email of a Admin and Super Admin.');
  225.                         return $this->render('@UVDeskCoreFramework/Agents/updateSupportAgent.html.twig', [
  226.                             'user'         => $user,
  227.                             'instanceRole' => $instanceRole,
  228.                             'errors'       => json_encode([])
  229.                         ]);
  230.                     }
  231.                     if (
  232.                         isset($data['password']['first']) && ! empty(trim($data['password']['first']))
  233.                         && isset($data['password']['second'])  && ! empty(trim($data['password']['second']))
  234.                         && trim($data['password']['first']) == trim($data['password']['second'])
  235.                     ) {
  236.                         $encodedPassword $this->passwordEncoder->encodePassword($user$data['password']['first']);
  237.                         $user->setPassword($encodedPassword);
  238.                     }
  239.                     $user->setFirstName(trim($data['firstName']));
  240.                     $user->setLastName(trim($data['lastName']));
  241.                     $user->setEmail(trim($data['email']));
  242.                     $user->setIsEnabled(true);
  243.                     $oldSupportTeam = ($supportTeamList $userInstance != null $userInstance->getSupportTeams() : null) ? $supportTeamList->toArray() : [];
  244.                     $oldSupportGroup  = ($supportGroupList $userInstance != null $userInstance->getSupportGroups() : null) ? $supportGroupList->toArray() : [];
  245.                     $oldSupportedPrivilege = ($supportPrivilegeList $userInstance != null $userInstance->getSupportPrivileges() : null) ? $supportPrivilegeList->toArray() : [];
  246.                     if (isset($data['role'])) {
  247.                         $isError false;
  248.                         // Check if the role is actually being changed
  249.                         if ($data['role'] !== $currentRoleCode) {
  250.                             // Prevent unauthorized users from changing roles
  251.                             if (!$isAdmin && !$isSuperAdmin) {
  252.                                 $this->addFlash('warning'$this->translator->trans('Error! You are not allowed to change roles.'));
  253.                                 $isError true;
  254.                             }
  255.                             // Prevent users from changing their own role
  256.                             if ($currentUser->getId() === $agentId) {
  257.                                 $this->addFlash('warning'$this->translator->trans('Error! You cannot change your own role.'));
  258.                                 $isError true;
  259.                             }
  260.                             // Prevent assignment of ROLE_SUPER_ADMIN to anyone
  261.                             if ($data['role'] === 'ROLE_SUPER_ADMIN') {
  262.                                 $this->addFlash('warning'$this->translator->trans('Error! You cannot assign Super Admin role.'));
  263.                                 $isError true;
  264.                             }
  265.                             if ($targetUserIsSuperAdmin && !$isSuperAdmin) {
  266.                                 $this->addFlash('warning'$this->translator->trans("Error! You can't update profile of Super Admin."));
  267.                                 $isError true;
  268.                             }
  269.                             if ($isError) {
  270.                                 return $this->render('@UVDeskCoreFramework/Agents/updateSupportAgent.html.twig', [
  271.                                     'user'         => $user,
  272.                                     'instanceRole' => $instanceRole,
  273.                                     'errors'       => json_encode([])
  274.                                 ]);
  275.                             }
  276.                             // All checks passed, assign the new role
  277.                             $role $em->getRepository(SupportRole::class)->findOneBy(['code' => $data['role']]);
  278.                             if ($role) {
  279.                                 $userInstance->setSupportRole($role);
  280.                             }
  281.                         }
  282.                     }
  283.                     if (isset($data['ticketView'])) {
  284.                         $userInstance->setTicketAccessLevel($data['ticketView']);
  285.                     }
  286.                     $userInstance->setDesignation($data['designation']);
  287.                     $userInstance->setContactNumber($data['contactNumber']);
  288.                     $userInstance->setSource('website');
  289.                     if (isset($dataFiles['profileImage'])) {
  290.                         // Removed profile image from database and path
  291.                         $fileService = new Fileservice;
  292.                         if ($userInstance->getProfileImagePath()) {
  293.                             $fileService->remove($this->getParameter('kernel.project_dir') . '/public' $userInstance->getProfileImagePath());
  294.                         }
  295.                         $assetDetails $this->fileSystem->getUploadManager()->uploadFile($dataFiles['profileImage'], 'profile');
  296.                         $userInstance->setProfileImagePath($assetDetails['path']);
  297.                     }
  298.                     $userInstance->setSignature($data['signature']);
  299.                     $userInstance->setIsActive(isset($data['isActive']) ? $data['isActive'] : 0);
  300.                     if (isset($data['userSubGroup'])) {
  301.                         foreach ($data['userSubGroup'] as $userSubGroup) {
  302.                             if ($userSubGrp $this->uvdeskService->getEntityManagerResult(
  303.                                 SupportTeam::class,
  304.                                 'findOneBy',
  305.                                 [
  306.                                     'id' => $userSubGroup
  307.                                 ]
  308.                             ))
  309.                                 if (!$oldSupportTeam || !in_array($userSubGrp$oldSupportTeam)) {
  310.                                     $userInstance->addSupportTeam($userSubGrp);
  311.                                 } elseif ($oldSupportTeam && ($key array_search($userSubGrp$oldSupportTeam)) !== false)
  312.                                     unset($oldSupportTeam[$key]);
  313.                         }
  314.                         foreach ($oldSupportTeam as $removeteam) {
  315.                             $userInstance->removeSupportTeam($removeteam);
  316.                             $em->persist($userInstance);
  317.                         }
  318.                     } else {
  319.                         foreach ($oldSupportTeam as $supportTeam) {
  320.                             $userInstance->removeSupportTeam($supportTeam);
  321.                             $em->persist($userInstance);
  322.                         }
  323.                         $em->flush();
  324.                     }
  325.                     if (isset($data['groups'])) {
  326.                         foreach ($data['groups'] as $userGroup) {
  327.                             if ($userGrp $this->uvdeskService->getEntityManagerResult(
  328.                                 SupportGroup::class,
  329.                                 'findOneBy',
  330.                                 [
  331.                                     'id' => $userGroup
  332.                                 ]
  333.                             ))
  334.                                 if (!$oldSupportGroup || !in_array($userGrp$oldSupportGroup)) {
  335.                                     $userInstance->addSupportGroup($userGrp);
  336.                                 } elseif ($oldSupportGroup && ($key array_search($userGrp$oldSupportGroup)) !== false)
  337.                                     unset($oldSupportGroup[$key]);
  338.                         }
  339.                         foreach ($oldSupportGroup as $removeGroup) {
  340.                             $userInstance->removeSupportGroup($removeGroup);
  341.                             $em->persist($userInstance);
  342.                         }
  343.                     }
  344.                     if (isset($data['agentPrivilege'])) {
  345.                         foreach ($data['agentPrivilege'] as $supportPrivilege) {
  346.                             if ($supportPlg $this->uvdeskService->getEntityManagerResult(
  347.                                 SupportPrivilege::class,
  348.                                 'findOneBy',
  349.                                 [
  350.                                     'id' => $supportPrivilege
  351.                                 ]
  352.                             ))
  353.                                 if (!$oldSupportedPrivilege || !in_array($supportPlg$oldSupportedPrivilege)) {
  354.                                     $userInstance->addSupportPrivilege($supportPlg);
  355.                                 } elseif ($oldSupportedPrivilege && ($key array_search($supportPlg$oldSupportedPrivilege)) !== false)
  356.                                     unset($oldSupportedPrivilege[$key]);
  357.                         }
  358.                         foreach ($oldSupportedPrivilege as $removeGroup) {
  359.                             $userInstance->removeSupportPrivilege($removeGroup);
  360.                             $em->persist($userInstance);
  361.                         }
  362.                     }
  363.                     $userInstance->setUser($user);
  364.                     $user->addUserInstance($userInstance);
  365.                     $em->persist($user);
  366.                     $em->persist($userInstance);
  367.                     $em->flush();
  368.                     // Trigger customer Update event
  369.                     $event = new CoreWorkflowEvents\Agent\Update();
  370.                     $event
  371.                         ->setUser($user);
  372.                     $this->eventDispatcher->dispatch($event'uvdesk.automation.workflow.execute');
  373.                     $this->addFlash('success'$this->translator->trans('Success ! Agent updated successfully.'));
  374.                     return $this->redirect($this->generateUrl('helpdesk_member_account_collection'));
  375.                 } else {
  376.                     $this->addFlash('warning'$this->translator->trans('Error ! User with same email is already exist.'));
  377.                 }
  378.                 $response $this->render('@UVDeskCoreFramework/Agents/updateSupportAgent.html.twig', [
  379.                     'user'         => $user,
  380.                     'instanceRole' => $instanceRole,
  381.                     'errors'       => json_encode([])
  382.                 ]);
  383.                 break;
  384.             default:
  385.                 $response $this->render('@UVDeskCoreFramework/Agents/updateSupportAgent.html.twig', [
  386.                     'user'         => $user,
  387.                     'instanceRole' => $instanceRole,
  388.                     'errors'       => json_encode([])
  389.                 ]);
  390.                 break;
  391.         }
  392.         return $response;
  393.     }
  394.     public function createAgent(Request $request)
  395.     {
  396.         // @TODO: Refactor
  397.         if (! $this->userService->isAccessAuthorized('ROLE_AGENT_MANAGE_AGENT')) {
  398.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  399.         }
  400.         $user = new User();
  401.         $userServiceContainer $this->userService;
  402.         if ('POST' == $request->getMethod()) {
  403.             $formDetails $request->request->get('user_form');
  404.             $uploadedFiles $request->files->get('user_form');
  405.             $entityManager $this->getDoctrine()->getManager();
  406.             // Profile upload validation
  407.             $validMimeType = ['image/jpeg''image/png''image/jpg'];
  408.             if (isset($uploadedFiles['profileImage'])) {
  409.                 if (!in_array($uploadedFiles['profileImage']->getMimeType(), $validMimeType)) {
  410.                     $this->addFlash('warning'$this->translator->trans('Error ! Profile image is not valid, please upload a valid format'));
  411.                     return $this->redirect($this->generateUrl('helpdesk_member_create_account'));
  412.                 }
  413.             }
  414.             $user $entityManager->getRepository(User::class)->findOneByEmail($formDetails['email']);
  415.             $agentInstance = ! empty($user) ? $user->getAgentInstance() : null;
  416.             if (empty($agentInstance)) {
  417.                 if (! empty($formDetails)) {
  418.                     $fullname trim(implode(' ', [$formDetails['firstName'], $formDetails['lastName']]));
  419.                     $supportRole $entityManager->getRepository(SupportRole::class)->findOneByCode($formDetails['role']);
  420.                     $user $this->userService->createUserInstance($formDetails['email'], $fullname$supportRole, [
  421.                         'contact'     => $formDetails['contactNumber'],
  422.                         'source'      => 'website',
  423.                         'active'      => !empty($formDetails['isActive']) ? true false,
  424.                         'image'       => $uploadedFiles['profileImage'],
  425.                         'signature'   => $formDetails['signature'],
  426.                         'designation' => $formDetails['designation'],
  427.                     ]);
  428.                     if (! empty($user)) {
  429.                         $user->setIsEnabled(true);
  430.                         $entityManager->persist($user);
  431.                         $entityManager->flush();
  432.                     }
  433.                     $userInstance $user->getAgentInstance();
  434.                     if (isset($formDetails['ticketView'])) {
  435.                         $userInstance->setTicketAccessLevel($formDetails['ticketView']);
  436.                     }
  437.                     // Map support team
  438.                     if (! empty($formDetails['userSubGroup'])) {
  439.                         $supportTeamRepository $entityManager->getRepository(SupportTeam::class);
  440.                         foreach ($formDetails['userSubGroup'] as $supportTeamId) {
  441.                             $supportTeam $supportTeamRepository->findOneById($supportTeamId);
  442.                             if (! empty($supportTeam)) {
  443.                                 $userInstance->addSupportTeam($supportTeam);
  444.                             }
  445.                         }
  446.                     }
  447.                     // Map support group
  448.                     if (! empty($formDetails['groups'])) {
  449.                         $supportGroupRepository $entityManager->getRepository(SupportGroup::class);
  450.                         foreach ($formDetails['groups'] as $supportGroupId) {
  451.                             $supportGroup $supportGroupRepository->findOneById($supportGroupId);
  452.                             if (! empty($supportGroup)) {
  453.                                 $userInstance->addSupportGroup($supportGroup);
  454.                             }
  455.                         }
  456.                     }
  457.                     // Map support privileges
  458.                     if (! empty($formDetails['agentPrivilege'])) {
  459.                         $supportPrivilegeRepository $entityManager->getRepository(SupportPrivilege::class);
  460.                         foreach ($formDetails['agentPrivilege'] as $supportPrivilegeId) {
  461.                             $supportPrivilege $supportPrivilegeRepository->findOneById($supportPrivilegeId);
  462.                             if (! empty($supportPrivilege)) {
  463.                                 $userInstance->addSupportPrivilege($supportPrivilege);
  464.                             }
  465.                         }
  466.                     }
  467.                     $entityManager->persist($userInstance);
  468.                     $entityManager->flush();
  469.                     $this->addFlash('success'$this->translator->trans('Success ! Agent added successfully.'));
  470.                     return $this->redirect($this->generateUrl('helpdesk_member_account_collection'));
  471.                 }
  472.             } else {
  473.                 $this->addFlash('warning'$this->translator->trans('Error ! User with same email already exist.'));
  474.             }
  475.         }
  476.         return $this->render('@UVDeskCoreFramework/Agents/createSupportAgent.html.twig', [
  477.             'user'   => $user,
  478.             'errors' => json_encode([])
  479.         ]);
  480.     }
  481. }