<?php
namespace App\Controller\Admin;
use App\Entity\Faq;
use App\Entity\FaqTheme;
use Doctrine\ORM\EntityManagerInterface;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use EasyCorp\Bundle\EasyAdminBundle\Field\DateField;
use Knp\Component\Pager\PaginatorInterface;
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
use Symfony\Component\HttpFoundation\JsonResponse;
class FaqCrudController extends AbstractCrudController
{
public static function getEntityFqcn(): string
{
return Faq::class;
}
public function configureActions(Actions $actions): Actions
{
$actions->update(Crud::PAGE_NEW, Action::SAVE_AND_RETURN, function (Action $action) {
return $action->setLabel('Enregistrer');
});
return $actions;
}
public function configureCrud(Crud $crud): Crud
{
return $crud
->setPageTitle('index', 'Gestion des FAQ')
// ->setPageTitle('detail', )
// ->setPageTitle('edit', fn (Category $category) => sprintf('Editing <b>%s</b>', $category->getName()))
;
}
public function configureFields(string $pageName): iterable
{
return [
IdField::new('id')->hideOnForm(),
AssociationField::new('faqTheme') ->setFormTypeOption('choice_label', 'title'),
TextEditorField::new('question')->formatValue(function ($value) {
return $value ;
}),
TextEditorField::new('reponse', 'Réponse')->formatValue(function ($value) {
return $value ;
}),
];
}
#[Route('/show/faq', name: 'show_faq')]
public function showByFaq(Request $request, EntityManagerInterface $entityManager, PaginatorInterface $paginator): Response
{
//$donnees = $entityManager->getRepository(FaqTheme::class)->findAll();
$donnees = $entityManager->getRepository(FaqTheme::class)->getLastsFaqTheme(0, 2);
// $faq = $paginator->paginate(
// $donnees,
// $request->query->getInt('page', 1),
// 10
// );
return $this->render('faq/index.html.twig', [
'faqs'=>$donnees
]);
}
#[Route('ajax/get/faqtheme', name: 'ajax_get_faqtheme')]
public function getFaqTheme(Request $request, EntityManagerInterface $em): JsonResponse
{
/** @var $result */
$result = [];
try {
$donnees = $em->getRepository(FaqTheme::class)->getLastsFaqTheme($request->query->get('offset'), 3);
foreach ($donnees as $key => $obj) {
$faqs=[];
foreach ($donnees[$key]->getFaqs() as $key2 => $obj2) {
$faqs[$key2] = ['id' => $obj2->getId(),'question' => $obj2->getQuestion(), 'reponse' => $obj2->getReponse()];
}
$result[$key] = ['id' => $obj->getId(),'title' => $obj->getTitle(), 'faqs' => $faqs];
}
} catch (\Exception $e) {
echo $e->getMessage();
}
return new JsonResponse(json_encode($result));
}
}