<?php
namespace App\Controller\Admin\Pages;
use App\Service\LanguagesManager;
use App\Entity\Pages\PageCategory;
use App\Service\Manager\AdminManager;
use App\Repository\LanguagesRepository;
use App\Controller\Admin\CoreController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Repository\Pages\PageCategoryRepository;
use App\Form\Search\Pages\SearchPageCategoryType;
use App\Service\Manager\Pages\PageCategoryManager;
#[Route('/admin/pages/page_category')]
class PageCategoryController extends CoreController
{
#[Route('/', name: 'admin_pages_page_category_index')]
public function index(Request $request, PageCategoryRepository $repository): Response
{
$language = $this->getCurrentLanguage();
$form = $this->createForm(SearchPageCategoryType::class, null, [
'method' => 'GET',
'language' => $language
]);
$form->handleRequest($request);
$formParams = $form->getData() ?? [];
return $this->render('admin/pages/page_category/index.html.twig', [
'lists' => $repository->paginateAllVisible(
$language,
$request->query->getInt('page', 1),
$formParams,
),
'form' => $form->createView(),
'table' => $this->getTable()
]);
}
#[Route('/new', name: 'admin_pages_page_category_new')]
#[Route('/edit/{id}', name: 'admin_pages_page_category_edit')]
public function new(LanguagesRepository $languagesRepository,
PageCategoryManager $pageCategoryManager,
LanguagesManager $languagesManager,
PageCategory $pageCategory = null
) {
if(!$pageCategory) {
$pageCategory = new PageCategory();
$pageCategory = $languagesManager->addLangue($pageCategory, true);
}
else {
$pageCategory = $languagesManager->addLangue($pageCategory, false);
}
$response = $pageCategoryManager->getForm($pageCategory);
if($response instanceof Response) return $response;
return $this->render('admin/pages/page_category/form.html.twig', [
'field' => $response['pageCategory'],
'form' => $response['form'],
'paletteColors' => $response['paletteColors'],
'blocs' => $response['blocs'],
'languages' => $languagesRepository->findBy(['deletedAt' => null]),
]);
}
#[Route('/delete/{id}', name: 'admin_pages_page_category_delete')]
public function delete(Request $request, PageCategory $pageCategory, AdminManager $adminManager): Response
{
if ($this->isCsrfTokenValid('delete'.$pageCategory->getId(), $request->query->get('_token'))) {
$adminManager->deleteEntity($pageCategory);
}
return $this->redirectToRoute('admin_pages_page_category_index');
}
public function getTable($type = null)
{
$fields = [
[
'field' => 'category_name',
'order' => 'category_name',
],
[
'field' => 'isEnable',
'type' => 'isEnable',
'order' => 'pc.isEnable',
],
[
'field' => 'createdAt',
'type' => 'date',
'order' => 'pc.createdAt'
]
];
return [
'id' => 'p',
'fields' => array_filter($fields)
];
}
}