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

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