vendor/uvdesk/core-framework/Controller/AccountXHR.php line 16

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\CoreFrameworkBundle\Controller;
  3. use Webkul\UVDesk\CoreFrameworkBundle\Entity\User;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Webkul\UVDesk\CoreFrameworkBundle\Entity\SavedFilters;
  7. use Symfony\Component\EventDispatcher\GenericEvent;
  8. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  9. use Webkul\UVDesk\CoreFrameworkBundle\Workflow\Events as CoreWorkflowEvents;
  10. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  11. class AccountXHR extends Controller
  12. {
  13.     public function listAgentsXHR(Request $request)
  14.     {
  15.         if (!$this->get('user.service')->isAccessAuthorized('ROLE_AGENT_MANAGE_AGENT')) {
  16.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  17.         }
  18.         if (true === $request->isXmlHttpRequest()) {
  19.             $userRepository $this->getDoctrine()->getRepository('UVDeskCoreFrameworkBundle:User');
  20.             $agentCollection $userRepository->getAllAgents($request->query$this->container);
  21.             return new Response(json_encode($agentCollection), 200, ['Content-Type' => 'application/json']);
  22.         }
  23.         return new Response(json_encode([]), 404);
  24.     }
  25.     public function deleteAgent(Request $request)
  26.     {
  27.         if($request->getMethod() == "DELETE") {
  28.             $em $this->getDoctrine()->getManager();
  29.             $id $request->query->get('id');
  30.             /*
  31.                 Original Code: $user = $em->getRepository('WebkulUserBundle:User')->findUserByCompany($id,$company->getId());
  32.                 Using findUserByCompany() won't execute the UserListener, so user roles won't be set and user with ROLE_SUPER_ADMIN can be deleted as a result.
  33.                 To trigger UserListener to set roles, you need to only select 'u' instead of both 'u, dt' in query select clause.
  34.                 Doing this here instead of directly making changes to userRepository->findUserByCompany().
  35.              */
  36.             $user $em->createQuery('SELECT u FROM UVDeskCoreFrameworkBundle:User u JOIN u.userInstance userInstance WHERE u.id = :userId  AND userInstance.supportRole != :roles')
  37.                 ->setParameter('userId'$id)
  38.                 ->setParameter('roles'4)
  39.                 ->getOneOrNullResult();
  40.             if ($user) {
  41.                 if($user->getAgentInstance()->getSupportRole() != "ROLE_SUPER_ADMIN") {
  42.                     $this->get('user.service')->removeAgent($user);
  43.                     // Trigger agent delete event
  44.                     $event = new GenericEvent(CoreWorkflowEvents\Agent\Delete::getId(), [
  45.                         'entity' => $user,
  46.                     ]);
  47.                     $this->get('event_dispatcher')->dispatch('uvdesk.automation.workflow.execute'$event);
  48.                     $json['alertClass'] = 'success';
  49.                     $json['alertMessage'] = $this->get('translator')->trans('Success ! Agent removed successfully.');
  50.                 } else {
  51.                     $json['alertClass'] = 'warning';
  52.                     $json['alertMessage'] = $this->get('translator')->trans("Warning ! You are allowed to remove account owner's account.");
  53.                 }
  54.             } else {
  55.                 $json['alertClass'] = 'danger';
  56.                 $json['alertMessage'] = $this->get('translator')->trans('Error ! Invalid user id.');
  57.             }
  58.         }
  59.         $response = new Response(json_encode($json));
  60.         $response->headers->set('Content-Type''application/json');
  61.         return $response;
  62.     }
  63.     public function savedFiltersXHR(Request $request)
  64.     {
  65.         $json = array();
  66.         $em $this->getDoctrine()->getManager();
  67.         $user $this->get('user.service')->getCurrentUser();
  68.         $userData $user->getAgentInstance();
  69.         if($request->getMethod() == 'POST') {
  70.             $content $request->request->all();
  71.             $filter = new SavedFilters();
  72.             $filter->setName($content['name']);
  73.             $filter->setRoute($content['route']);
  74.             $filter->setUser($userData);
  75.             $em->persist($filter);
  76.             $em->flush();
  77.             if(isset($content['is_default'])) {
  78.                 $userData->setDefaultFiltering($filter->getId());
  79.                 $em->persist($userData);
  80.                 $em->flush();
  81.             }
  82.             $json['filter'] = ['id' => $filter->getId(), 'name' => $filter->getName(), 'route' => $filter->getRoute(), 'is_default' => isset($content['is_default'])];
  83.             $json['alertClass'] = 'success';
  84.             $json['alertMessage'] = $this->get('translator')->trans('Success ! Filter has been saved successfully.');
  85.         } elseif($request->getMethod() == 'PUT' || $request->getMethod() == 'PATCH') {
  86.             $content $request->request->all();
  87.             $filter $em->getRepository('UVDeskCoreFrameworkBundle:SavedFilters')->find($content['id']);
  88.             $filter->setName($content['name']);
  89.             $filter->setRoute($content['route']);
  90.             $em->flush();
  91.             if(isset($content['is_default']))
  92.                 $userData->setDefaultFiltering($filter->getId());
  93.             elseif($filter->getId() == $userData->getDefaultFiltering())
  94.                 $userData->setDefaultFiltering(0);
  95.             $em->persist($userData);
  96.             $em->flush();
  97.             $json['filter'] = ['id' => $filter->getId(), 'name' => $filter->getName(), 'route' => $filter->getRoute(), 'is_default' => isset($content['is_default']) ? ];
  98.             $json['alertClass'] = 'success';
  99.             $json['alertMessage'] = $this->get('translator')->trans('Success ! Filter has been updated successfully.');
  100.         } elseif($request->getMethod() == 'DELETE') {
  101.             $id $request->attributes->get('filterId');
  102.             $filter $em->getRepository('UVDeskCoreFrameworkBundle:SavedFilters')->find($id);
  103.             $em->remove($filter);
  104.             $em->flush();
  105.             // if($id == $userData->getDefaultFiltering())
  106.             //     $userData->setDefaultFiltering(0);
  107.             // $em->persist($userData);
  108.             // $em->flush();
  109.             $json['alertClass'] = 'success';
  110.             $json['alertMessage'] = $this->get('translator')->trans('Success ! Filter has been removed successfully.');
  111.         }
  112.         $response = new Response(json_encode($json));
  113.         $response->headers->set('Content-Type''application/json');
  114.         return $response;
  115.     }
  116. }