src/Controller/CategoriesController.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\CategoryRepository;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. /**
  11.  * @Route("/api/category")
  12.  */
  13. class CategoriesController extends AbstractController
  14. {
  15.     /**
  16.      * @var CategoryRepository
  17.      */
  18.     private $categoryRepository;
  19.     /**
  20.      * @var ParameterBagInterface
  21.      */
  22.     private $params;
  23.     public function __construct(CategoryRepository $categoryRepositoryParameterBagInterface $params)
  24.     {
  25.         $this->categoryRepository $categoryRepository;
  26.         $this->params $params;
  27.     }
  28.     /**
  29.      * @Route("/", name="hbk_api_categories_list")
  30.      */
  31.     public function categoryList(): Response
  32.     {
  33.         $categories $this->categoryRepository->findBy(["is_deleted" => false], []);
  34.         foreach ($categories as &$category) {
  35.             $category $category->jsonSerialize();
  36.         }
  37.         return $this->json($categories);
  38.     }
  39.     /**
  40.      * @Route("/new", name="hbk_api_category_new", methods={"POST"})
  41.      * @Route("/edit/{id}", name="hbk_api_category_edit", methods={"PUT"})
  42.      */
  43.     public function categoryCreate(int $id nullRequest $request): Response
  44.     {
  45.         $parameters json_decode($request->getContent(), true);
  46.         $response = new JsonResponse();
  47.         if(isset($parameters["_admin_token"]) && $parameters["_admin_token"] == $this->params->get('adminToken')) {
  48.             if($id == null) {
  49.                 $id $this->categoryRepository->editCategory($parameters$id);
  50.                 $response->setStatusCode(Response::HTTP_CREATED);
  51.                 $response->setContent(json_encode([
  52.                     "redirect_url" => 'admin.php?page=api-category-form-page&category='.$id
  53.                 ]));
  54.             } else {
  55.                 $this->categoryRepository->editCategory($parameters$id);
  56.                 $response->setStatusCode(Response::HTTP_OK);
  57.             }
  58.         } else {
  59.             $response->setStatusCode(Response::HTTP_FORBIDDEN);
  60.         }
  61.         return $response;
  62.     }
  63.     /**
  64.      * @Route("/manage/new", name="hbk_api_category_form_new")
  65.      * @Route("/manage/edit/{id}", name="hbk_api_category_form")
  66.      */
  67.     public function editForm(int $id nullRequest $request): Response
  68.     {
  69.         $parameters json_decode($request->getContent(), true);
  70.         $admin_token = isset($parameters["_admin_token"]) ? $parameters["_admin_token"] : $request->query->get('_admin_token');
  71.         $is_admin $admin_token == $this->params->get('adminToken');
  72.         $category $id === null ? new \App\Entity\Category() : $this->categoryRepository->find($id);
  73.         $can_access $is_admin;
  74.         if (!$can_access) {
  75.             $response = new Response();
  76.             $response->setStatusCode(Response::HTTP_FORBIDDEN);
  77.             return $response;
  78.         }
  79.         return $this->render('category/ajax.html.twig', [
  80.             'token' => $admin_token,
  81.             'is_admin' => $is_admin,
  82.             'admin_token' => $admin_token,
  83.             'category' => $category->jsonSerialize()
  84.         ]);
  85.     }
  86.     /**
  87.      * @Route("/delete/{id}", name="hbk_api_category_delete", methods={"DELETE"})
  88.      */
  89.     public function categoryDelete(int $idRequest $request): Response
  90.     {
  91.         $parameters $request->request->all();
  92.         $response = new Response();
  93.         if((isset($parameters["_admin_token"]) && $parameters["_admin_token"] == $this->params->get('adminToken'))) {
  94.             $this->categoryRepository->deleteCategory($id);
  95.             $response->setStatusCode(Response::HTTP_OK);
  96.         } else {
  97.             $response->setStatusCode(Response::HTTP_FORBIDDEN);
  98.         }
  99.         return $response;
  100.     }
  101. }