<?php
namespace App\Controller;
use App\Entity\FAQ;
use App\Form\FAQType;
use App\Annotation\CmsAdminDash;
use App\Annotation\CmsComponent;
use App\Repository\FAQRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
#[Route('/takeflight/faq')]
class FAQController extends AbstractController
{
/**
* @CmsAdminDash("FAQs", active=true, routeName="app_f_a_q_index", icon="fa fa-question-circle", menuPosition=40, parentRouteName="control_content_index")
*/
#[Route('/', name: 'app_f_a_q_index', methods: ['GET'])]
public function index(FAQRepository $fAQRepository): Response
{
return $this->render('faq/index.html.twig', [
'f_a_qs' => $fAQRepository->findBy(['deleted' => false]),
]);
}
#[Route('/new', name: 'app_f_a_q_new', methods: ['GET', 'POST'])]
public function new(Request $request): Response
{
$fAQ = new FAQ();
$form = $this->createForm(FAQType::class, $fAQ);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// REQUIRED IF USING UPLOAD FILE TRAIT
// $fAQ->uploadFile();
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($fAQ);
$entityManager->flush();
return $this->redirectToRoute('app_f_a_q_index', [], Response::HTTP_SEE_OTHER);
}
return $this->render('faq/new.html.twig', [
'f_a_q' => $fAQ,
'form' => $form->createView(),
]);
}
#[Route('/{id}', name: 'app_f_a_q_show', methods: ['GET'])]
public function show(FAQ $fAQ): Response
{
return $this->render('faq/show.html.twig', [
'f_a_q' => $fAQ,
]);
}
#[Route('/{id}/edit', name: 'app_f_a_q_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, FAQ $fAQ): Response
{
$form = $this->createForm(FAQType::class, $fAQ);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// REQUIRED IF USING UPLOAD FILE TRAIT
// $fAQ->uploadFile();
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('app_f_a_q_index', [], Response::HTTP_SEE_OTHER);
}
return $this->render('faq/edit.html.twig', [
'f_a_q' => $fAQ,
'form' => $form->createView(),
]);
}
#[Route('/{id}', name: 'app_f_a_q_delete', methods: ['POST'])]
public function delete(Request $request, FAQ $fAQ): Response
{
if ($this->isCsrfTokenValid('delete'.$fAQ->getId(), $request->request->get('_token'))) {
$entityManager = $this->getDoctrine()->getManager();
$fAQ->setActive(false);
$fAQ->setDeleted(true);
$entityManager->persist($fAQ);
$entityManager->flush();
$this->addFlash('success', 'Success - FAQ deleted');
}
return $this->redirectToRoute('app_f_a_q_index', [], Response::HTTP_SEE_OTHER);
}
/**
* @CmsComponent("FAQs (All)", active=true, routeName="embed_faqs_all")
*
* @param mixed $request
*/
#[Route(path: '/test-faqs/all', name: 'embed_faqs_all')]
public function embedFaqsAll(EntityManagerInterface $em, Request $request): Response
{
// Get all FAQs grouped by service category
$faqsEmployer = $em->getRepository(FAQ::class)->findBy(['deleted' => false, 'active' => true, 'serviceCategory' => 1], ['sortOrder' => 'ASC']);
$faqsEmployee = $em->getRepository(FAQ::class)->findBy(['deleted' => false, 'active' => true, 'serviceCategory' => 2], ['sortOrder' => 'ASC']);
return $this->render('@theme/faq/faqs.html.twig', [
'faqsEmployer' => $faqsEmployer,
'faqsEmployee' => $faqsEmployee,
]);
}
}