<?php
namespace App\Controller;
use App\Entity\ItemCategory;
use App\Entity\ItemSpecCategory;
use App\Form\ItemCategorySortType;
use App\Form\ItemCategoryTitleSortType;
use App\Form\ItemCategoryType;
use App\Repository\ItemCategoryRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/item/category')]
class ItemCategoryController extends AbstractController
{
#[Route('/', name: 'app_item_category_index', methods: ['GET'])]
public function index(): Response
{
return $this->redirectToRoute('app_category');
}
#[Route('/new', name: 'app_item_category_new', methods: ['GET', 'POST'])]
public function new(Request $request, EntityManagerInterface $entityManager): Response
{
$itemCategory = new ItemCategory();
$form = $this->createForm(ItemCategoryType::class, $itemCategory);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($itemCategory);
$entityManager->flush();
return $this->redirectToRoute('app_item_category_edit', ['id' => $itemCategory->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('item_category/new.html.twig', [
'item_category' => $itemCategory,
'form' => $form,
]);
}
#[Route('/{id}/edit', name: 'app_item_category_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, ItemCategory $itemCategory, EntityManagerInterface $entityManager): Response
{
$form = $this->createForm(ItemCategoryType::class, $itemCategory);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
dump($form->getViewData());
$entityManager->persist($itemCategory);
$entityManager->flush();
return $this->redirectToRoute('app_item_category_edit', ['id' => $itemCategory->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('item_category/edit.html.twig', [
'item_category' => $itemCategory,
'form' => $form,
]);
}
#[Route('/{id}', name: 'app_item_category_delete', methods: ['POST'])]
public function delete(Request $request, ItemCategory $itemCategory, EntityManagerInterface $entityManager): Response
{
if ($this->isCsrfTokenValid('delete'.$itemCategory->getId(), $request->request->get('_token'))) {
$entityManager->remove($itemCategory);
$entityManager->flush();
}
return $this->redirectToRoute('app_item_category_index', [], Response::HTTP_SEE_OTHER);
}
#[Route('/{id}/sort/{category}', name: 'app_item_category_edit_sort', methods: ['GET', 'POST'])]
public function sorting($category, Request $request, ItemCategory $itemCategory, EntityManagerInterface $entityManager): Response
{
$itemSpecCategory = $entityManager->getRepository(ItemSpecCategory::class)->find($category);
$form = $this->createForm(ItemCategorySortType::class, $itemSpecCategory);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$sortArray = json_decode($form->get('sort')->getViewData(), true);
$itemSpecCategory->setSort($sortArray);
$entityManager->persist($itemSpecCategory);
$entityManager->flush();
return $this->redirectToRoute('app_item_category_edit', ['id' => $itemCategory->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('item_category/sort.html.twig', [
'item_category' => $itemCategory,
'spec' => $itemSpecCategory,
'form' => $form
]);
}
#[Route('/{id}/sort-title', name: 'app_item_category_edit_sort_title', methods: ['GET', 'POST'])]
public function sortingTitle($id, Request $request, EntityManagerInterface $entityManager): Response
{
$itemCategory = $entityManager->getRepository(ItemCategory::class)->findOneBy(['id' => $id]);
$form = $this->createForm(ItemCategoryTitleSortType::class, $itemCategory);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$sortArray = json_decode($form->get('sortTitle')->getViewData(), true);
$itemCategory->setSortTitle($sortArray);
$entityManager->persist($itemCategory);
$entityManager->flush();
return $this->redirectToRoute('app_item_category_edit', ['id' => $itemCategory->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('item_category/sortTitle.html.twig', [
'item_category' => $itemCategory,
'form' => $form
]);
}
}