vendor/uvdesk/support-center-bundle/Controller/Folder.php line 32

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\SupportCenterBundle\Controller;
  3. use Doctrine\Common\Collections\Criteria;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  8. use Webkul\UVDesk\SupportCenterBundle\Entity as SupportEntites;
  9. use Webkul\UVDesk\CoreFrameworkBundle\Services\UserService;
  10. use Webkul\UVDesk\CoreFrameworkBundle\Services\FileUploadService;
  11. use Webkul\UVDesk\CoreFrameworkBundle\FileSystem\FileSystem;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. use Symfony\Component\Filesystem\Filesystem as Fileservice;
  14. class Folder extends AbstractController
  15. {
  16.     private $userService;
  17.     private $translator;
  18.     private $fileSystem;
  19.     private $fileUploadService;
  20.     public function __construct(UserService $userServiceTranslatorInterface $translatorFileSystem $fileSystemFileUploadService $fileUploadService)
  21.     {
  22.         $this->userService $userService;
  23.         $this->translator $translator;
  24.         $this->fileSystem $fileSystem;
  25.         $this->fileUploadService $fileUploadService;
  26.     }
  27.     public function listFolders(Request $request)
  28.     {
  29.         if (!$this->userService->isAccessAuthorized('ROLE_AGENT_MANAGE_KNOWLEDGEBASE')) {
  30.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  31.         }
  32.         $entityManager $this->getDoctrine()->getManager();
  33.         $totalKnowledgebaseFolders count($entityManager->getRepository(SupportEntites\Solutions::class)->findAll());
  34.         $totalKnowledgebaseCategories count($entityManager->getRepository(SupportEntites\SolutionCategory::class)->findAll());
  35.         $totalKnowledgebaseArticles count($entityManager->getRepository(SupportEntites\Article::class)->findAll());
  36.         return $this->render('@UVDeskSupportCenter/Staff/Folders/listFolders.html.twig', [
  37.             'articleCount' => $totalKnowledgebaseArticles,
  38.             'categoryCount' => $totalKnowledgebaseCategories,
  39.             'solutionCount' => $totalKnowledgebaseFolders,
  40.         ]);
  41.     }
  42.     public function createFolder(Request $request)
  43.     {
  44.         if (!$this->userService->isAccessAuthorized('ROLE_AGENT_MANAGE_KNOWLEDGEBASE')) {
  45.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  46.         }
  47.         $folder = new SupportEntites\Solutions();
  48.         $errors = [];
  49.         if ($request->getMethod() == "POST") {
  50.             $entityManager $this->getDoctrine()->getManager();
  51.             $solutionImage $request->files->get('solutionImage');
  52.             if ($imageFile $request->files->get('solutionImage')) { 
  53.                 if ($imageFile->getMimeType() == "image/svg+xml" || $imageFile->getMimeType() == "image/svg") {
  54.                     if (!$this->fileUploadService->svgFileCheck($imageFile)){
  55.                         $message $this->translator->trans('Warning! Not a vaild svg. (Recommened: PNG, JPG or GIF Format).');
  56.                         $this->addFlash('warning'$message);
  57.     
  58.                         return $this->redirect($this->generateUrl('helpdesk_member_knowledgebase_create_folder'));
  59.                     }
  60.                 }
  61.                 if (!preg_match('#^(image/)(?!(tif)|(svg) )#'$imageFile->getMimeType()) && !preg_match('#^(image/)(?!(tif)|(svg))#'$imageFile->getClientMimeType())) {
  62.                     $message $this->translator->trans('Warning! Provide valid image file. (Recommened: PNG, JPG or GIF Format).');
  63.                     $this->addFlash('warning'$message);
  64.                     return $this->redirect($this->generateUrl('helpdesk_member_knowledgebase_create_folder'));
  65.                 }
  66.             }
  67.             $data $request->request->all();
  68.             $folder->setName($data['name']);
  69.             $folder->setDescription($data['description']);
  70.             $folder->setvisibility($data['visibility']);
  71.             if(isset($solutionImage)){
  72.                 $assetDetails $this->fileSystem->getUploadManager()->uploadFile($solutionImage'knowledgebase');
  73.                 $folder->setSolutionImage($assetDetails['path']);
  74.             }
  75.             $folder->setDateAdded( new \DateTime());
  76.             $folder->setDateUpdated( new \DateTime());
  77.             $folder->setSortOrder(1);
  78.             $entityManager->persist($folder);
  79.             $entityManager->flush();
  80.             $message $this->translator->trans('Success! Folder has been added successfully.');
  81.             $this->addFlash('success'$message);
  82.             return $this->redirect($this->generateUrl('helpdesk_member_knowledgebase_folders_collection'));
  83.         }
  84.         return $this->render('@UVDeskSupportCenter/Staff/Folders/createFolder.html.twig', [
  85.             'folder' => $folder,
  86.             'errors' => json_encode($errors)
  87.         ]);
  88.     }
  89.     public function updateFolder($folderId)
  90.     {
  91.         if (!$this->userService->isAccessAuthorized('ROLE_AGENT_MANAGE_KNOWLEDGEBASE')) {
  92.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  93.         }
  94.         $entityManager $this->getDoctrine()->getManager();
  95.         $request $this->container->get('request_stack')->getCurrentRequest();
  96.         $knowledgebaseFolder $entityManager->getRepository(SupportEntites\Solutions::class)->findSolutionById(['id' => $folderId]);
  97.         if (empty($knowledgebaseFolder)) {
  98.             $this->noResultFound();
  99.         }
  100.         if ($request->getMethod() == "POST") {
  101.             $formData $request->request->all();
  102.             $solutionImage $request->files->get('solutionImage');
  103.             if ($imageFile $request->files->get('solutionImage')) {
  104.                 if ($imageFile->getMimeType() == "image/svg+xml" || $imageFile->getMimeType() == "image/svg") {
  105.                     if (!$this->fileUploadService->svgFileCheck($imageFile)){
  106.                         $message $this->translator->trans('Warning! Not a vaild svg. (Recommened: PNG, JPG or GIF Format).');
  107.                         $this->addFlash('warning'$message);
  108.     
  109.                         return $this->redirect($this->generateUrl('helpdesk_member_knowledgebase_create_folder'));
  110.                     }
  111.                 }
  112.                 
  113.                 if (!preg_match('#^(image/)(?!(tif)|(svg) )#'$imageFile->getMimeType()) && !preg_match('#^(image/)(?!(tif)|(svg))#'$imageFile->getClientMimeType())) {
  114.                     $message $this->translator->trans('Warning! Provide valid image file. (Recommened: PNG, JPG or GIF Format).');
  115.                     $this->addFlash('warning'$message);
  116.                     return $this->render('@UVDeskSupportCenter/Staff/Folders/updateFolder.html.twig', [
  117.                         'folder' => $folder
  118.                     ]);
  119.                 }
  120.             }
  121.             $formData $request->request->all();
  122.             if (isset($solutionImage)) {
  123.                 // Removing old image from physical path is new image uploaded
  124.                 $fileService = new Fileservice();
  125.                 if ($knowledgebaseFolder->getSolutionImage()) {
  126.                     $fileService->remove($this->getParameter('kernel.project_dir')."/public/".$knowledgebaseFolder->getSolutionImage());
  127.                 }
  128.                 $assetDetails $this->fileSystem->getUploadManager()->uploadFile($solutionImage'knowledgebase');
  129.                 $knowledgebaseFolder->setSolutionImage($assetDetails['path']);
  130.             }
  131.             $knowledgebaseFolder
  132.                 ->setName($formData['name'])
  133.                 ->setDescription($formData['description'])
  134.                 ->setvisibility($formData['visibility'])
  135.                 ->setDateUpdated( new \DateTime())
  136.                 ->setSortOrder(1);
  137.             $entityManager->persist($knowledgebaseFolder);
  138.             $entityManager->flush();
  139.             $this->addFlash('success'$this->translator->trans('Folder updated successfully.'));
  140.             
  141.             return $this->redirect($this->generateUrl('helpdesk_member_knowledgebase_folders_collection'));
  142.         }
  143.         return $this->render('@UVDeskSupportCenter/Staff/Folders/updateFolder.html.twig', [
  144.             'folder' => $knowledgebaseFolder,
  145.             'errors' => json_encode(!empty($errors) ? $errors : [])
  146.         ]);
  147.     }
  148.     /**
  149.      * If customer is playing with url and no result is found then what will happen
  150.      * @return 
  151.      */
  152.     protected function noResultFound()
  153.     {
  154.         throw new NotFoundHttpException('Not Found!');
  155.     }
  156. }