<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Validator\Constraints\DateTime;
use App\Utils\Constants;
use App\Utils\Breadcrumbs;
use App\Utils\Utils;
use App\Entity\Setting;
use App\Entity\Organisation;
use App\Entity\FAQ;
use App\Entity\SupportQuery;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
/**
*
* @IsGranted("ROLE_SUPER_USER")
*/
class SUHelpController extends AbstractController
{
/**
* @Route("/su/help/{showArchivedTM}/{showArchivedFAQ}", name="su-help", defaults={"showArchivedTM" = Constants::ACTIVE, "showArchivedFAQ" = Constants::ACTIVE})
* @IsGranted("ROLE_SUPER_USER")
*/
public function index($showArchivedTM = Constants::ACTIVE, $showArchivedFAQ = Constants::ACTIVE, Request $request, \Swift_Mailer $mailer)
{
// $hasAccess = $this->isGranted('ROLE_USER');
// $this->denyAccessUnlessGranted('ROLE_USER');
$user = $this->getUser();
$org = $user->getOrganisations()->first();
$from = $user->getEmail();
//------------------
// Training Material
//------------------
//dfeehely - 200611 - changed to hardcoded docs because of lack of non-ephemeral storage on Heroku.
/*
$trRepo = $this->getDoctrine()->getRepository(TrainingMaterial::class);
$trainingMaterials = $trRepo->findBy(
['status' => $showArchivedTM],
['date_updated' => 'DESC']
);
$resourceTypes = array();
$itemURL = "";
foreach ($trainingMaterials as $trainingMaterial) {
switch ($trainingMaterial->getResourceType()) {
case Constants::RESOURCE_FILE:
$resourceTypes[$trainingMaterial->getId()][] = Constants::RESOURCE_FILE_TEXT;
$itemURL = Constants::RESOURCE_PUBLIC_PATH.$trainingMaterial->getFile();
break;
case Constants::RESOURCE_URL:
$resourceTypes[$trainingMaterial->getId()][] = Constants::RESOURCE_URL_TEXT;
$itemURL = $trainingMaterial->getURL();
break;
case Constants::RESOURCE_VIDEO:
$resourceTypes[$trainingMaterial->getId()][] = Constants::RESOURCE_VIDEO_TEXT;
$itemURL = $trainingMaterial->getURL();
break;
case Constants::RESOURCE_BOOK:
$resourceTypes[$trainingMaterial->getId()][] = Constants::RESOURCE_BOOK_TEXT;
$itemURL = $trainingMaterial->getURL();
break;
}
}
*/
/*
$trainingMaterialURLS = array();
$trainingMaterials = array();
$trainingMaterial = new TrainingMaterial();
$trainingMaterial->setName("Company Admin User Guide");
$trainingMaterial->setPermissionLevel(Constants::PERMISSION_LEVEL_COMPANY_ADMIN);
$trainingMaterial->setDateUpdated(\DateTime::createFromFormat('Y-m-d H:i', "2019-08-15 23:31"));
$resourceTypes[$trainingMaterial->getId()][] = Constants::RESOURCE_FILE_TEXT;
$itemURL = Constants::RESOURCE_TRAINING_DOCS_PATH.Constants::RESOURCE_TRAINING_DOCS_CA_FILE_NAME;
//$trainingMaterials[] = $trainingMaterial;
$trainingMaterialURLS[$trainingMaterial->getId()][] = $itemURL;
$trainingMaterial2 = new TrainingMaterial();
$trainingMaterial2->setName("User Guide");
$trainingMaterial2->setPermissionLevel(Constants::PERMISSION_LEVEL_COMPANY_USER);
$trainingMaterial2->setDateUpdated(\DateTime::createFromFormat('Y-m-d H:i', "2019-08-15 19:11"));
$resourceTypes[$trainingMaterial2->getId()][] = Constants::RESOURCE_FILE_TEXT;
$itemURL2 = Constants::RESOURCE_TRAINING_DOCS_PATH.Constants::RESOURCE_TRAINING_DOCS_CU_FILE_NAME;
//$trainingMaterials[] = $trainingMaterial2;
$trainingMaterialURLS[$trainingMaterial2->getId()][] = $itemURL2;
*/
$permissionLevels = array();
$permissionLevels[Constants::PERMISSION_LEVEL_COMPANY_USER] = Constants::PERMISSION_LEVEL_COMPANY_USER_TEXT;
$permissionLevels[Constants::PERMISSION_LEVEL_COMPANY_ADMIN] = Constants::PERMISSION_LEVEL_COMPANY_ADMIN_TEXT;
$permissionLevels[Constants::PERMISSION_LEVEL_SUPER_USER] = Constants::PERMISSION_LEVEL_SUPER_USER_TEXT;
//------------------
// FAQ
//------------------
$faqRepo = $this->getDoctrine()->getRepository(FAQ::class);
$faqs = $faqRepo->findBy(
['status' => $showArchivedFAQ],
['date_updated' => 'DESC']
);
//------------------
//Support Query Form
//------------------
$defaultData = ['1' => '2'];
$form = $this->createFormBuilder($defaultData)->getForm();
$form->add('query', TextareaType::class, ['label' => 'Query: ', 'attr' => array('class' => 'form-control') ]);
$form->add('save', SubmitType::class, ['label' => 'Submit Query', 'attr' => array('class' => 'btn btn-success btn-lg') ]);
$form->handleRequest($request);
if ($form->isSubmitted() and $form->isValid()) {
$data = $form->getData();
$query = $data['query'];
$query = htmlspecialchars($query);
$sq = new SupportQuery();
$sq->setOrganisation($org);
$sq->setText($query);
$sq->setStatus(Constants::ACTIVE);
$sq->setDateUpdated(\DateTime::createFromFormat('U', time()));
$sq->setUserUpdated($user);
$em = $this->getDoctrine()->getManager();
$em->persist($sq);
$em->flush();
$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);
if($result == "1") {
$this->addFlash('notice', 'Thank you, your query email has been sent.');
} else {
$this->addFlash('error','Error sending your email: '.$result);
}
return $this->redirectToRoute('su-help');
}
$constants = new Constants();
$firstBreadcrumb = Breadcrumbs::getFirstBreadcrumb($this->getDoctrine(), $user, $request);
$backLinkLabel = "Help";
$backLink = "/su/help";
$breadcrumbs[$firstBreadcrumb] = "/";
$breadcrumbs[$backLinkLabel] = $backLink;
$sulink = Utils::buildSULink($this, Constants::SU_LINK_HELP);
return $this->render('su/help.html.twig', array(
'form' => $form->createView(),
'page_heading' => $backLinkLabel,
'constants' => $constants,
'breadcrumbs' => $breadcrumbs,
'user' => $user,
//'training_materials' => $trainingMaterials,
//'resource_types' => $resourceTypes,
//'item_urls' => $trainingMaterialURLS,
'faqs' => $faqs,
'permission_levels' => $permissionLevels,
'backlink' => $backLink,
'backlink_label' => $backLinkLabel,
'sulink' => $sulink,
));
}
}