src/Controller/Api/CategoryController.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Api;
  3. use App\Entity\Category;
  4. use App\Entity\Product;
  5. use App\Repository\CategoryRepository;
  6. use App\Service\Traduction;
  7. use App\Service\TraduireContenu;
  8. //use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Serializer\Encoder\JsonEncoder;
  15. use Symfony\Component\Serializer\Encoder\XmlEncoder;
  16. use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
  17. use Symfony\Component\Serializer\Serializer;
  18. use Symfony\Component\Serializer\SerializerInterface;
  19. class CategoryController extends AbstractController
  20. {
  21.   private CategoryRepository $categoryRepository;
  22.   private TraduireContenu $traduireContenu;
  23.   public function __construct(
  24.     CategoryRepository $categoryRepository
  25.   ) {
  26.     $this->categoryRepository $categoryRepository;
  27.   }
  28.   /**
  29.    * @Route("/{langue<en|fr|de|it|es>}/rest/category")
  30.    */
  31.   public function getAll($langueTraduction $tradCategoryRepository $repository):Response
  32.   {
  33.     $categorys $repository->findBy(['unicity' => 1]);
  34.     $categoryList = [];
  35.     foreach ($categorys as $category) {
  36.       $dataTrad $trad->getTraduction($langue$category);
  37.   
  38.        $categoryData = [
  39.         "id"=>$dataTrad->getId(),
  40.         "name"=>$dataTrad->getName(),
  41.         "description"=>$dataTrad->getDescription(),
  42.         "image"=>$dataTrad->getImage(),
  43.         "slug"=>$dataTrad->getSlug()
  44.        ];
  45.       $categoryList[] = $categoryData; }
  46.   return new JsonResponse($categoryList);
  47.    }
  48.     /**
  49.      * @Route("/rest/cat")
  50.      */
  51.     public function getAllCatNoTranslation(Request $requestCategoryRepository $repositorySerializerInterface $serializer)
  52.     {
  53.         $session=$request->getSession();
  54.         $response = new Response();
  55.         $response->headers->set('Content-Type''application/json');
  56.         $response->headers->set('Access-Control-Allow-Origin''*');
  57.         $categories $repository->findBy(['unicity' => 1]);
  58.         $categories_array = [];
  59.         foreach($categories as $categorie_array){
  60.             $categorie_entity=$repository->find($categorie_array->getId());
  61.             $c $categorie_entity;
  62.             array_push($categories_array,[
  63.                 "id"=>$c->getId(),
  64.                 "name"=>$c->getName(),
  65.                 "description"=>$c->getDescription(),
  66.                 "image"=>$c->getImage(),
  67.                 "slug"=>$c->getSlug()
  68.             ]);
  69.         }
  70.         $response->setContent($serializer->serialize($categories_array'json'));
  71.         return $response;
  72.     }
  73.   public function getAllCategories($langue){
  74.     //récupération de toutes les catégories en francais
  75.     $categories $this->categoryRepository->findBy(["unicity"=>1]);  
  76.     $tabtraduit = [];
  77.     foreach($categories as $category){
  78.           $trad $category;
  79.           if($langue !="fr"){
  80.               $trad $this->traduireContenu->retourTrad($category,$langue);
  81.           }
  82.           array_push($tabtraduit,$trad);
  83.     }
  84.     //dd($tabtraduit);
  85.     return $tabtraduit;
  86.   /**
  87.    * @Route("/rest/category/{id}")
  88.    */
  89.   public function getOne($idSerializerInterface $serializer)
  90.   {
  91.     $response = new Response();
  92.     $response->headers->set('Content-Type''application/json');
  93.     $response->headers->set('Access-Control-Allow-Origin''*');
  94.     $category $this->categoryRepository->find($id);
  95.     $response->setContent($serializer->serialize($category'json', ['groups'=>'category']));
  96.     return $response;
  97.   }
  98.   /**
  99.    * @Route("/{_locale<en|fr|de|it|es>}/api/categories", methods={"GET"})
  100.    */
  101.   public function getCategoriesWithSubcategories()
  102.   {
  103.     // Categories with subcategories
  104.     $categories $this->categoryRepository->findAllWithSubcategories();
  105.     // Response
  106.     $response = new Response();
  107.     $response->headers->set('Content-Type''application/json');
  108.     $response->headers->set('Access-Control-Allow-Origin''*');
  109.     $response->setStatusCode(RESPONSE::HTTP_OK);
  110.     $response->setContent(json_encode($categories));
  111.     return $response;
  112.   }
  113.   /**
  114.    * @Route("/{_locale<en|fr|de|it|es>}/rest/productsByCategory/{cat}")
  115.    */
  116.   public function getProductsByCategory($cat)
  117.   {
  118.     $response = new Response();
  119.     $response->headers->set('Content-Type''application/json');
  120.     $response->headers->set('Access-Control-Allow-Origin''*');
  121.     $services $this->getDoctrine()
  122.       ->getRepository(Product::class)
  123.       ->createQueryBuilder('p')
  124.       ->select("p, c")
  125.       ->leftJoin('p.category''c')
  126.       ->where('p.category = :id')
  127.       ->setParameter('id'$cat)
  128.       ->getQuery()
  129.       ->getArrayResult();
  130.     $response->setContent(json_encode($services));
  131.     return $response;
  132.   }
  133.   /**
  134.    * @Route("/rest/category/subcategory/{id}")
  135.    */
  136.   public function getCategoryBySubcat($id)
  137.   {
  138.     $response = new Response();
  139.     $response->headers->set('Content-Type''application/json');
  140.     $response->headers->set('Access-Control-Allow-Origin''*');
  141.     $category $this->getDoctrine()
  142.       ->getRepository(Category::class)
  143.       ->createQueryBuilder('c')
  144.       ->select("c")
  145.       ->leftJoin('c.subcategories''s')
  146.       ->where('s.id = :id')
  147.       ->setParameter('id'$id)
  148.       ->getQuery()
  149.       ->getArrayResult();
  150.     $response->setContent(json_encode($category));
  151.     return $response;
  152.   }
  153.   /**
  154.    * @Route("/{_locale<en|fr|de|it|es>}/rest/categoriesByCompany/{companyId}")
  155.    */
  156.   public function getCategoriesByCompany($companyId)
  157.   {
  158.     $response = new Response();
  159.     $response->headers->set('Content-Type''application/json');
  160.     $response->headers->set('Access-Control-Allow-Origin''*');
  161.     $categories $this->getDoctrine()
  162.       ->getRepository(Category::class)
  163.       ->createQueryBuilder('c')
  164.       ->leftJoin('c.companies''co')
  165.       ->where('co.id = :id')
  166.       ->setParameter('id'$companyId)
  167.       ->getQuery()
  168.       ->getArrayResult();
  169.     $response->setContent(json_encode($categories));
  170.     return $response;
  171.   }
  172. }