vendor/uvdesk/core-framework/Controller/SavedReplies.php line 32

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\CoreFrameworkBundle\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Webkul\UVDesk\CoreFrameworkBundle\Entity\SavedReplies as CoreBundleSavedReplies;
  6. use Webkul\UVDesk\CoreFrameworkBundle\Entity\SupportTeam;
  7. use Webkul\UVDesk\CoreFrameworkBundle\Entity\SupportGroup;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  10. use Webkul\UVDesk\CoreFrameworkBundle\Form as CoreFrameworkBundleForms;
  11. use Webkul\UVDesk\CoreFrameworkBundle\Entity as CoreFrameworkBundleEntities;
  12. use Webkul\UVDesk\CoreFrameworkBundle\Services\UserService;
  13. use Symfony\Contracts\Translation\TranslatorInterface;
  14. use Symfony\Component\DependencyInjection\ContainerInterface;
  15. class SavedReplies extends AbstractController
  16. {
  17.     const LIMIT 10;
  18.     const ROLE_REQUIRED 'saved_replies';
  19.     private $userService;
  20.     private $translator;
  21.     
  22.     public function __construct(UserService $userServiceTranslatorInterface $translator)
  23.     {
  24.         $this->userService $userService;
  25.         $this->translator $translator;
  26.     }
  27.     public function loadSavedReplies(Request $request)
  28.     {
  29.         $savedReplyReferenceIds $this->userService->getUserSavedReplyReferenceIds();
  30.         return $this->render('@UVDeskCoreFramework//savedRepliesList.html.twig', [
  31.             'savedReplyReferenceIds' => array_unique($savedReplyReferenceIds),
  32.         ]);
  33.     }
  34.     public function updateSavedReplies(Request $requestContainerInterface $container)
  35.     {
  36.         $templateId $request->attributes->get('template');
  37.         $repository $this->getDoctrine()->getRepository(CoreFrameworkBundleEntities\SavedReplies::class);
  38.         if (empty($templateId)) {
  39.             $template = new CoreFrameworkBundleEntities\SavedReplies();
  40.         } else {
  41.             // @TODO: Refactor: We shouldn't be passing around the container.
  42.             $template $repository->getSavedReply($templateId$container);
  43.             if (empty($template)) {
  44.                 $this->noResultFound();
  45.             }
  46.         }
  47.         $errors = [];
  48.         if ($request->getMethod() == 'POST') {
  49.             if (empty($request->request->get('message'))) {
  50.                 $this->addFlash('warning',  $this->translator->trans('Error! Saved reply body can not be blank'));
  51.                 
  52.                 return $this->render('@UVDeskCoreFramework//savedReplyForm.html.twig', [
  53.                     'template' => $template,
  54.                     'errors' => json_encode($errors)
  55.                 ]);
  56.             }
  57.             $em $this->getDoctrine()->getManager();
  58.             $template->setName($request->request->get('name'));
  59.             // Groups
  60.             $previousGroupIds = [];
  61.             $groups explode(','$request->request->get('tempGroups'));
  62.             if ($template->getSupportGroups()) {
  63.                 foreach ($template->getSupportGroups()->toArray() as $key => $group) {
  64.                     $previousGroupIds[] = $group->getId();
  65.                     if (!in_array($group->getId(), $groups) && $this->getUser()->getAgentInstance()->getSupportRole()->getCode() != "ROLE_AGENT") {
  66.                         $template->removeSupportGroups($group);
  67.                         $em->persist($template);
  68.                     }
  69.                 }
  70.             }
  71.             foreach($groups as $key => $groupId) {
  72.                 if ($groupId) {
  73.                     $group $em->getRepository(SupportGroup::class)->findOneBy([ 'id' => $groupId ]);
  74.                     if ($group && (empty($previousGroupIds) || !in_array($groupId$previousGroupIds))) {
  75.                         $template->addSupportGroup($group);
  76.                         $em->persist($template);
  77.                     }
  78.                 }
  79.             }
  80.             // Teams
  81.             $previousTeamIds = [];
  82.             $teams explode(','$request->request->get('tempTeams'));
  83.             if ($template->getSupportTeams()) {
  84.                 foreach ($template->getSupportTeams()->toArray() as $key => $team) {
  85.                     $previousTeamIds[] = $team->getId();
  86.                    
  87.                     if (!in_array($team->getId(), $teams) && $this->getUser()->getAgentInstance()->getSupportRole()->getCode() != "ROLE_AGENT") {
  88.                         $template->removeSupportTeam($team);
  89.                         $em->persist($template);
  90.                     }
  91.                 }
  92.             }
  93.             foreach ($teams as $key => $teamId) {
  94.                 if ($teamId) {
  95.                     $team $em->getRepository(SupportTeam::class)->findOneBy([ 'id' => $teamId ]);
  96.                     if ($team && (empty($previousTeamIds) || !in_array($teamId$previousTeamIds))) {
  97.                         $template->addSupportTeam($team);
  98.                         $em->persist($template);
  99.                     }
  100.                 }
  101.             }
  102.             $template->setMessage($request->request->get('message'));
  103.             if (empty($template->getUser()))  {
  104.                 $template->setUser($this->getUser()->getAgentInstance());
  105.             }
  106.             
  107.             $em->persist($template);
  108.             $em->flush();
  109.             $this->addFlash('success'$request->attributes->get('template') ? $this->translator->trans('Success! Reply has been updated successfully.'): $this->translator->trans('Success! Reply has been added successfully.'));
  110.             return $this->redirectToRoute('helpdesk_member_saved_replies');
  111.         }
  112.         return $this->render('@UVDeskCoreFramework//savedReplyForm.html.twig', array(
  113.             'template' => $template,
  114.             'errors' => json_encode($errors)
  115.         ));
  116.     }
  117.     public function savedRepliesXHR(Request $requestContainerInterface $container)
  118.     {
  119.         if (!$request->isXmlHttpRequest()) {
  120.             throw new \Exception(404);
  121.         }
  122.         $entityManager $this->getDoctrine()->getManager();
  123.         $savedReplyRepository $entityManager->getRepository(CoreBundleSavedReplies::class);
  124.         if ($request->getMethod() == 'GET') {
  125.             $responseContent $savedReplyRepository->getSavedReplies($request->query$container);
  126.         } else {
  127.             $savedReplyId $request->attributes->get('template');
  128.             if (null == $savedReplyId || $request->getMethod() != 'DELETE') {
  129.                 throw new \Exception(404);
  130.             } else {
  131.                 $savedReply $savedReplyRepository->findOneBy(['id' => $savedReplyId'user' => $this->getUser()->getAgentInstance()]);
  132.                 if (empty($savedReply)) {
  133.                     throw new \Exception(404);
  134.                 }
  135.             }
  136.             $entityManager->remove($savedReply);
  137.             $entityManager->flush();
  138.             $responseContent = [
  139.                 'alertClass' => 'success',
  140.                 'alertMessage' => $this->translator->trans('Success! Saved Reply has been deleted successfully.')
  141.             ];
  142.         }
  143.         return new Response(json_encode($responseContent), 200, ['Content-Type' => 'application/json']);
  144.     }
  145.     private function getId($item)
  146.     {
  147.         return $item->getId();
  148.     }
  149. }