<?php
namespace App\Controller;
use App\Entity\Administrateur;
use App\Entity\Categorie;
use App\Entity\FAQ;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class FAQController extends AbstractController
{
// /**
// * @Route("/faq/{id}", name="deleteFAQByID", methods={"DELETE"})
// */
// public function deleteFAQByID(FAQ $faq)
// {
// $entityManager = $this->getDoctrine()->getManager();
// $entityManager->remove($faq);
// $entityManager->flush();
// return new Response($faq->getId() . " has been successfully deleted");
// }
// /**
// * @Route("/faq", name="postFAQ", methods={"POST"})
// */
// public function postFAQ(Request $request): Response
// {
// $data = json_decode($request->getContent(), true);
// $faq = new FAQ();
// $admin = $this->getDoctrine()
// ->getRepository(Administrateur::class)
// ->findOneBy(['id' => $data["admin_id"]]);
// if ($admin == null) {
// return new Response(json_encode([
// 'message' => 'Error, no admin found at this id',
// 'path' => 'src/Controller/FAQController.php',
// ]));
// }
// $category = $this->getDoctrine()
// ->getRepository(Categorie::class)
// ->findOneBy(['id' => $data["category_id"]]);
// if ($category == null) {
// return new Response(json_encode([
// 'message' => 'Error, no category found at this id',
// 'path' => 'src/Controller/FAQController.php',
// ]));
// }
// $faq->setIdAdmin($admin);
// $faq->setIdCategorie($category);
// $faq->setQuestion($data["question"]);
// $faq->setAnswer($data["answer"]);
// $faq->setIsPro($data["is_pro"]);
// $faq->setDate(new \DateTime());
// $entityManager = $this->getDoctrine()->getManager();
// $entityManager->persist($faq);
// $entityManager->flush();
// return new Response(json_encode([
// "question" => $faq->getQuestion(),
// "answer" => $faq->getAnswer(),
// "admin_id" => $faq->getIdAdmin()->getId(),
// "category_id" => $faq->getIdCategorie()->getId(),
// "is_pro" => $faq->getIsPro(),
// ]));
// }
/**
* @Route("/faqs", name="getFAQs", methods={"GET","HEAD"})
*/
public function getFAQs()
{
$faqs = $this->getDoctrine()
->getRepository(FAQ::class)
->findBy(["isPro" => false]);
$result = new ArrayCollection();
foreach ($faqs as $faq) {
$result->add([
"id" => $faq->getId(),
"question" => $faq->getQuestion(),
"answer" => $faq->getAnswer(),
"admin_id" => $faq->getIdAdmin()->getId(),
"category_id" => $faq->getIdCategorie()->getId(),
"is_pro" => $faq->getIsPro(),
]);
}
return new Response(json_encode([
"faqs" => $result->toArray()
]));
}
/**
* @Route("/faqs/pro", name="getFAQsPro", methods={"GET","HEAD"})
*/
public function getFAQsPro()
{
$faqs = $this->getDoctrine()
->getRepository(FAQ::class)
->findBy(["isPro" => true]);
$result = new ArrayCollection();
foreach ($faqs as $faq) {
$result->add([
"id" => $faq->getId(),
"question" => $faq->getQuestion(),
"answer" => $faq->getAnswer(),
"admin_id" => $faq->getIdAdmin()->getId(),
"category_id" => $faq->getIdCategorie()->getId(),
"is_pro" => $faq->getIsPro(),
]);
}
return new Response(json_encode([
"faqs" => $result->toArray()
]));
}
/**
* @Route("/faq/{id}", name="getFAQ", methods={"GET","HEAD"})
*/
public function getFAQ(FAQ $faq): Response
{
return new Response(json_encode([
"question" => $faq->getQuestion(),
"answer" => $faq->getAnswer(),
"admin_id" => $faq->getIdAdmin()->getId(),
"category_id" => $faq->getIdCategorie()->getId(),
"is_pro" => $faq->getIsPro(),
]));
}
// /**
// * @Route("/faq/{id}", name="editFAQByID", methods={"PUT"})
// */
// public function editFAQByID(FAQ $faq, Request $request)
// {
// $entityManager = $this->getDoctrine()->getManager();
// $data = json_decode($request->getContent(), true);
// if (isset($data["admin_id"])) {
// $admin = $this->getDoctrine()
// ->getRepository(Administrateur::class)
// ->findOneBy(['id' => $data["admin_id"]]);
// if ($admin == null) {
// return new Response(json_encode([
// 'message' => 'Error, no Admin found at this id',
// 'path' => 'src/Controller/FAQController.php',
// ]));
// }
// $faq->setIdAdmin($admin);
// }
// if (isset($data["categorie_id"])) {
// $categorie = $this->getDoctrine()
// ->getRepository(Categorie::class)
// ->findOneBy(['id' => $data["categorie_id"]]);
// if ($categorie == null) {
// return new Response(json_encode([
// 'message' => 'Error, no Category found at this id',
// 'path' => 'src/Controller/FAQController.php',
// ]));
// }
// $faq->setIdCategorie($categorie);
// }
// if (isset($data["question"]))
// $faq->setQuestion($data["question"]);
// if (isset($data["answer"]))
// $faq->setAnswer($data["answer"]);
// if (isset($data["is_pro"]))
// $faq->setIsPro($data["is_pro"]);
// $entityManager->flush();
// return new Response(json_encode([
// "question" => $faq->getQuestion(),
// "answer" => $faq->getAnswer(),
// "admin_id" => $faq->getIdAdmin()->getId(),
// "category_id" => $faq->getIdCategorie()->getId(),
// "is_pro" => $faq->getIsPro(),
// ]));
// }
}