src/Controller/SUHelpController.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\HttpFoundation\Response;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Validator\Constraints\DateTime;
  9. use App\Utils\Constants;
  10. use App\Utils\Breadcrumbs;
  11. use App\Utils\Utils;
  12. use App\Entity\Setting;
  13. use App\Entity\Organisation;
  14. use App\Entity\FAQ;
  15. use App\Entity\SupportQuery;
  16. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  17. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  18. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  19. /**
  20. *
  21. * @IsGranted("ROLE_SUPER_USER")
  22. */
  23. class SUHelpController extends AbstractController
  24. {
  25. /**
  26. * @Route("/su/help/{showArchivedTM}/{showArchivedFAQ}", name="su-help", defaults={"showArchivedTM" = Constants::ACTIVE, "showArchivedFAQ" = Constants::ACTIVE})
  27. * @IsGranted("ROLE_SUPER_USER")
  28. */
  29. public function index($showArchivedTM = Constants::ACTIVE, $showArchivedFAQ = Constants::ACTIVE, Request $request, \Swift_Mailer $mailer)
  30. {
  31. // $hasAccess = $this->isGranted('ROLE_USER');
  32. // $this->denyAccessUnlessGranted('ROLE_USER');
  33. $user = $this->getUser();
  34. $org = $user->getOrganisations()->first();
  35. $from = $user->getEmail();
  36. //------------------
  37. // Training Material
  38. //------------------
  39. //dfeehely - 200611 - changed to hardcoded docs because of lack of non-ephemeral storage on Heroku.
  40. /*
  41. $trRepo = $this->getDoctrine()->getRepository(TrainingMaterial::class);
  42. $trainingMaterials = $trRepo->findBy(
  43. ['status' => $showArchivedTM],
  44. ['date_updated' => 'DESC']
  45. );
  46. $resourceTypes = array();
  47. $itemURL = "";
  48. foreach ($trainingMaterials as $trainingMaterial) {
  49. switch ($trainingMaterial->getResourceType()) {
  50. case Constants::RESOURCE_FILE:
  51. $resourceTypes[$trainingMaterial->getId()][] = Constants::RESOURCE_FILE_TEXT;
  52. $itemURL = Constants::RESOURCE_PUBLIC_PATH.$trainingMaterial->getFile();
  53. break;
  54. case Constants::RESOURCE_URL:
  55. $resourceTypes[$trainingMaterial->getId()][] = Constants::RESOURCE_URL_TEXT;
  56. $itemURL = $trainingMaterial->getURL();
  57. break;
  58. case Constants::RESOURCE_VIDEO:
  59. $resourceTypes[$trainingMaterial->getId()][] = Constants::RESOURCE_VIDEO_TEXT;
  60. $itemURL = $trainingMaterial->getURL();
  61. break;
  62. case Constants::RESOURCE_BOOK:
  63. $resourceTypes[$trainingMaterial->getId()][] = Constants::RESOURCE_BOOK_TEXT;
  64. $itemURL = $trainingMaterial->getURL();
  65. break;
  66. }
  67. }
  68. */
  69. /*
  70. $trainingMaterialURLS = array();
  71. $trainingMaterials = array();
  72. $trainingMaterial = new TrainingMaterial();
  73. $trainingMaterial->setName("Company Admin User Guide");
  74. $trainingMaterial->setPermissionLevel(Constants::PERMISSION_LEVEL_COMPANY_ADMIN);
  75. $trainingMaterial->setDateUpdated(\DateTime::createFromFormat('Y-m-d H:i', "2019-08-15 23:31"));
  76. $resourceTypes[$trainingMaterial->getId()][] = Constants::RESOURCE_FILE_TEXT;
  77. $itemURL = Constants::RESOURCE_TRAINING_DOCS_PATH.Constants::RESOURCE_TRAINING_DOCS_CA_FILE_NAME;
  78. //$trainingMaterials[] = $trainingMaterial;
  79. $trainingMaterialURLS[$trainingMaterial->getId()][] = $itemURL;
  80. $trainingMaterial2 = new TrainingMaterial();
  81. $trainingMaterial2->setName("User Guide");
  82. $trainingMaterial2->setPermissionLevel(Constants::PERMISSION_LEVEL_COMPANY_USER);
  83. $trainingMaterial2->setDateUpdated(\DateTime::createFromFormat('Y-m-d H:i', "2019-08-15 19:11"));
  84. $resourceTypes[$trainingMaterial2->getId()][] = Constants::RESOURCE_FILE_TEXT;
  85. $itemURL2 = Constants::RESOURCE_TRAINING_DOCS_PATH.Constants::RESOURCE_TRAINING_DOCS_CU_FILE_NAME;
  86. //$trainingMaterials[] = $trainingMaterial2;
  87. $trainingMaterialURLS[$trainingMaterial2->getId()][] = $itemURL2;
  88. */
  89. $permissionLevels = array();
  90. $permissionLevels[Constants::PERMISSION_LEVEL_COMPANY_USER] = Constants::PERMISSION_LEVEL_COMPANY_USER_TEXT;
  91. $permissionLevels[Constants::PERMISSION_LEVEL_COMPANY_ADMIN] = Constants::PERMISSION_LEVEL_COMPANY_ADMIN_TEXT;
  92. $permissionLevels[Constants::PERMISSION_LEVEL_SUPER_USER] = Constants::PERMISSION_LEVEL_SUPER_USER_TEXT;
  93. //------------------
  94. // FAQ
  95. //------------------
  96. $faqRepo = $this->getDoctrine()->getRepository(FAQ::class);
  97. $faqs = $faqRepo->findBy(
  98. ['status' => $showArchivedFAQ],
  99. ['date_updated' => 'DESC']
  100. );
  101. //------------------
  102. //Support Query Form
  103. //------------------
  104. $defaultData = ['1' => '2'];
  105. $form = $this->createFormBuilder($defaultData)->getForm();
  106. $form->add('query', TextareaType::class, ['label' => 'Query: ', 'attr' => array('class' => 'form-control') ]);
  107. $form->add('save', SubmitType::class, ['label' => 'Submit Query', 'attr' => array('class' => 'btn btn-success btn-lg') ]);
  108. $form->handleRequest($request);
  109. if ($form->isSubmitted() and $form->isValid()) {
  110. $data = $form->getData();
  111. $query = $data['query'];
  112. $query = htmlspecialchars($query);
  113. $sq = new SupportQuery();
  114. $sq->setOrganisation($org);
  115. $sq->setText($query);
  116. $sq->setStatus(Constants::ACTIVE);
  117. $sq->setDateUpdated(\DateTime::createFromFormat('U', time()));
  118. $sq->setUserUpdated($user);
  119. $em = $this->getDoctrine()->getManager();
  120. $em->persist($sq);
  121. $em->flush();
  122. $result = Utils::sendEmail($mailer, $this, Constants::PERMISSION_LEVEL_SUPER_USER_TEXT.' Support Query Received', $query, Constants::EMAIL_TO_SUPPORT_QUERY, $from, Constants::EMAIL_TEMPLATE_SUPPORT_QUERY);
  123. if($result == "1") {
  124. $this->addFlash('notice', 'Thank you, your query email has been sent.');
  125. } else {
  126. $this->addFlash('error','Error sending your email: '.$result);
  127. }
  128. return $this->redirectToRoute('su-help');
  129. }
  130. $constants = new Constants();
  131. $firstBreadcrumb = Breadcrumbs::getFirstBreadcrumb($this->getDoctrine(), $user, $request);
  132. $backLinkLabel = "Help";
  133. $backLink = "/su/help";
  134. $breadcrumbs[$firstBreadcrumb] = "/";
  135. $breadcrumbs[$backLinkLabel] = $backLink;
  136. $sulink = Utils::buildSULink($this, Constants::SU_LINK_HELP);
  137. return $this->render('su/help.html.twig', array(
  138. 'form' => $form->createView(),
  139. 'page_heading' => $backLinkLabel,
  140. 'constants' => $constants,
  141. 'breadcrumbs' => $breadcrumbs,
  142. 'user' => $user,
  143. //'training_materials' => $trainingMaterials,
  144. //'resource_types' => $resourceTypes,
  145. //'item_urls' => $trainingMaterialURLS,
  146. 'faqs' => $faqs,
  147. 'permission_levels' => $permissionLevels,
  148. 'backlink' => $backLink,
  149. 'backlink_label' => $backLinkLabel,
  150. 'sulink' => $sulink,
  151. ));
  152. }
  153. }