src/Controller/BikeController.php line 119

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\HttpFoundation\RedirectResponse;
  10. use Symfony\Component\String\Slugger\AsciiSlugger;
  11. use Nelmio\ApiDocBundle\Annotation\Security;
  12. use Nelmio\ApiDocBundle\Annotation\Model;
  13. use OpenApi\Annotations as OA;
  14. use App\Entity\Bike;
  15. use App\Entity\Agency;
  16. use App\Form\BikeType;
  17. use App\Repository\BikeRepository;
  18. use App\Repository\OrderRepository;
  19. use App\Service\BikeService;
  20. use App\Service\UploadFileService;
  21. class BikeController extends AbstractController
  22. {
  23.     /**
  24.      * @var BikeService
  25.      */
  26.     private $BikeService;
  27.     public function __construct(BikeService $BikeService)
  28.     {
  29.         $this->BikeService $BikeService;
  30.     }
  31.     /**
  32.      * @OA\Tag(name="Bike")
  33.      * @Security(name="Bearer") 
  34.      * @Route("/api/liste/bike", methods={"GET"})
  35.      */
  36.     public function liste()
  37.     {
  38.         $liste $this->BikeService->getBike();
  39.         $jsonBike = [];
  40.         foreach ($liste as $key => $bike){
  41.             $jsonBike[$key] = $this->BikeService->toJson($bike);
  42.         }
  43.         return new JsonResponse($jsonBike);
  44.     }
  45.     /**
  46.      * @OA\Tag(name="Bike")
  47.      * @Security(name="Bearer") 
  48.      * @Route("/api/liste/bike_by_agency/{id}", methods={"GET"})
  49.      */
  50.     public function listeBikeByAgency(Agency $agency)
  51.     {
  52.         $liste $this->BikeService->getBike(array('agency'=> $agency));
  53.         $jsonBike = [];
  54.         foreach ($liste as $key => $bike){
  55.             $jsonBike[$key] = $this->BikeService->toJson($bike);
  56.         }
  57.         return new JsonResponse($jsonBike);
  58.     }
  59.     /**
  60.      * @OA\Tag(name="Bike")
  61.      * @Security(name="Bearer") 
  62.      * @Route("/api/bike/{id}", methods={"GET"})
  63.      */
  64.     public function getBike(Bike $bike)
  65.     {
  66.         $jsonBike $this->BikeService->toJson($bike);
  67.         return new JsonResponse($jsonBike);
  68.     }
  69.     /**
  70.      *@OA\RequestBody( required=true, @OA\JsonContent (
  71.      *               @OA\Property(
  72.      *                   property="start",
  73.      *                   type="string",
  74.      *                   example="2023-03-14"
  75.      *               ),  
  76.      *               @OA\Property(
  77.      *                   property="end",
  78.      *                   type="string",
  79.      *                   example="2023-03-18"
  80.      *               ),     
  81.      *                @OA\Property(
  82.      *                   property="agency",
  83.      *                   type="string",
  84.      *                   example="2"
  85.      *               ),
  86.      *),)
  87.      * @OA\Response (
  88.      *     response=201,
  89.      *     description="Success",
  90.      * )
  91.      *  @OA\Response(
  92.      *     response="300",
  93.      *       description="FORMTYPE IS INVALID",
  94.      * )
  95.      * @OA\Response(
  96.      *     response="400",
  97.      *       description="BAD REQUEST",
  98.      * )
  99.      * @OA\Response(
  100.      *   response="401",
  101.      *       description="Unauthorized",
  102.      * )
  103.      * @OA\Tag(name="Bike")
  104.      * @Route("/api/get_free_bikes", methods={"POST"})
  105.      */
  106.     public function getFreeBikes(Request $requestBikeRepository $BikeRepositoryOrderRepository $OrderRepository)
  107.     {
  108.         $data json_decode($request->getContent(), true);
  109.         $start = new \DateTime($data['start']);
  110.         $end = new \DateTime($data['end']);
  111.         $ids = [];
  112.         $freeOrderBikes $OrderRepository->getFreeBikes($data['agency'], $start$end);
  113.         foreach($freeOrderBikes as $bike){
  114.             array_push($ids$bike['id']);
  115.         }
  116.         $jsonBike = [];
  117.         $liste $this->BikeService->getBike(array('agency'=> $data['agency']));
  118.         foreach ($liste as $bike) {
  119.             if (!in_array($bike->getId(), $ids))  {
  120.                 if($bike->isStatut()){
  121.                     array_push($jsonBike$this->BikeService->toJson($bike));
  122.                 }
  123.             }
  124.         }
  125.         return new JsonResponse($jsonBike);
  126.     }
  127.     /**
  128.      *@OA\RequestBody( required=true, @OA\JsonContent (
  129.      *               @OA\Property(
  130.      *                   property="bike",
  131.      *                   type="string",
  132.      *                   example="1"
  133.      *               ),  
  134.      *               @OA\Property(
  135.      *                   property="statut",
  136.      *                   type="boolean",
  137.      *                   example="true"
  138.      *               ),     
  139.      *),)
  140.      * @OA\Response (
  141.      *     response=201,
  142.      *     description="Success",
  143.      * )
  144.      *  @OA\Response(
  145.      *     response="300",
  146.      *       description="FORMTYPE IS INVALID",
  147.      * )
  148.      * @OA\Response(
  149.      *     response="400",
  150.      *       description="BAD REQUEST",
  151.      * )
  152.      * @OA\Response(
  153.      *   response="401",
  154.      *       description="Unauthorized",
  155.      * )
  156.      * @OA\Tag(name="Bike")
  157.      * @Route("/api/update_statut/bike", methods={"PUT"})
  158.      */
  159.     public function updateStatut(Request $request)
  160.     {
  161.         $data json_decode($request->getContent(), true);
  162.         $bike $this->BikeService->get($data['bike']);
  163.         if($bike){
  164.             $bike->setStatut($data['statut']);
  165.             $bike $this->BikeService->persist($bike);
  166.         }
  167.         return new JsonResponse($bike->getId());
  168.     }
  169.     /**
  170.      *@OA\RequestBody( required=true, @OA\JsonContent (
  171.      *               @OA\Property(
  172.      *                   property="agency",
  173.      *                   type="string",
  174.      *                   example="1"
  175.      *               ),  
  176.      *               @OA\Property(
  177.      *                   property="category",
  178.      *                   type="string",
  179.      *                   example="1"
  180.      *               ),     
  181.      *               @OA\Property(
  182.      *                   property="type",
  183.      *                   type="string",
  184.      *                   example="1"
  185.      *               ),
  186.      *                   @OA\Property(
  187.      *                   property="size",
  188.      *                   type="string",
  189.      *                   example="1"
  190.      *               ),@OA\Property(
  191.      *                   property="brand",
  192.      *                   type="string",
  193.      *                   example="1"
  194.      *               ),@OA\Property(
  195.      *                   property="tariff",
  196.      *                   type="string",
  197.      *                   example="1"
  198.      *               ),@OA\Property(
  199.      *                   property="participant",
  200.      *                   type="string",
  201.      *                   example="1"
  202.      *               ),@OA\Property(
  203.      *                   property="refernce",
  204.      *                   type="string",
  205.      *                   example="11111"
  206.      *               ),@OA\Property(
  207.      *                   property="description",
  208.      *                   type="string",
  209.      *                   example="description"
  210.      *               ),@OA\Property(
  211.      *                   property="statut",
  212.      *                   type="string",
  213.      *                   example="true"
  214.      *               ),
  215.      * 
  216.     *),)
  217.      * @OA\Response (
  218.      *     response=201,
  219.      *     description="Success",
  220.      * )
  221.      *  @OA\Response(
  222.      *     response="300",
  223.      *       description="FORMTYPE IS INVALID",
  224.      * )
  225.      * @OA\Response(
  226.      *     response="400",
  227.      *       description="BAD REQUEST",
  228.      * )
  229.      * @OA\Response(
  230.      *   response="401",
  231.      *       description="Unauthorized",
  232.      * )
  233.      * @Security(name="Bearer") 
  234.      * @OA\Tag(name="Bike")
  235.      * @Route("/api/create/bike", methods={"POST"})
  236.      */
  237.     public function createBike(Request $requestUploadFileService $UploadFileService)
  238.     {
  239.         $data $request->request->all();
  240.         
  241.         $bike = new Bike();
  242.         $form $this->createForm(BikeType::class, $bike, array('csrf_protection' => false));
  243.         $form->submit($data);
  244.         $principal_image =  $request->files->get('principal_image');
  245.         if ($principal_image) {
  246.             $principalImageName $UploadFileService->upload($principal_image);
  247.             $bike->setPrincipalImage($principalImageName);
  248.         }
  249.         $multiple_image =  $request->files->get('multiple_image');
  250.         if ($multiple_image) {
  251.             foreach($multiple_image as $image){
  252.                 $multipleImageName[] = $UploadFileService->upload($image);
  253.             }
  254.             $bike->setMultipleImage($multipleImageName);
  255.         }
  256.         $bike $this->BikeService->persist($bike);
  257.         return new JsonResponse($bike->getId());
  258.     }
  259.     /**
  260.      *@OA\RequestBody( required=true, @OA\JsonContent (
  261.      *               @OA\Property(
  262.      *                   property="agency",
  263.      *                   type="string",
  264.      *                   example="1"
  265.      *               ),  
  266.      *               @OA\Property(
  267.      *                   property="category",
  268.      *                   type="string",
  269.      *                   example="1"
  270.      *               ),     
  271.      *               @OA\Property(
  272.      *                   property="type",
  273.      *                   type="string",
  274.      *                   example="1"
  275.      *               ),
  276.      *                   @OA\Property(
  277.      *                   property="size",
  278.      *                   type="string",
  279.      *                   example="1"
  280.      *               ),@OA\Property(
  281.      *                   property="brand",
  282.      *                   type="string",
  283.      *                   example="1"
  284.      *               ),@OA\Property(
  285.      *                   property="tariff",
  286.      *                   type="string",
  287.      *                   example="1"
  288.      *               ),@OA\Property(
  289.      *                   property="participant",
  290.      *                   type="string",
  291.      *                   example="1"
  292.      *               ),@OA\Property(
  293.      *                   property="refernce",
  294.      *                   type="string",
  295.      *                   example="11111"
  296.      *               ),@OA\Property(
  297.      *                   property="description",
  298.      *                   type="string",
  299.      *                   example="description"
  300.      *               ),@OA\Property(
  301.      *                   property="statut",
  302.      *                   type="string",
  303.      *                   example="true"
  304.      *               ),
  305.     *),)
  306.      * @OA\Response (
  307.      *     response=201,
  308.      *     description="Success",
  309.      * )
  310.      *  @OA\Response(
  311.      *     response="300",
  312.      *       description="FORMTYPE IS INVALID",
  313.      * )
  314.      * @OA\Response(
  315.      *     response="400",
  316.      *       description="BAD REQUEST",
  317.      * )
  318.      * @OA\Response(
  319.      *   response="401",
  320.      *       description="Unauthorized",
  321.      * )
  322.      * @Security(name="Bearer") 
  323.      * @OA\Tag(name="Bike")
  324.      * @Route("/api/update/bike/{id}", methods={"POST"})
  325.      */
  326.     public function updateBike(Request $requestBike $bikeUploadFileService $UploadFileService)
  327.     {
  328.         $data $request->request->all();
  329.         
  330.         $form $this->createForm(BikeType::class, $bike, array('csrf_protection' => false));
  331.         $form->submit($datafalse);
  332.         $principal_image =  $request->files->get('principal_image');
  333.         if ($principal_image) {
  334.             $principalImageName $UploadFileService->upload($principal_image);
  335.             $bike->setPrincipalImage($principalImageName);
  336.         }
  337.         $multiple_image =  $request->files->get('multiple_image');
  338.         if ($multiple_image) {
  339.             foreach($multiple_image as $image){
  340.                 $multipleImageName[] = $UploadFileService->upload($image);
  341.             }
  342.             $bike->setMultipleImage($multipleImageName);
  343.         }
  344.         $bike $this->BikeService->persist($bike);
  345.         return new JsonResponse($bike->getId());
  346.     }
  347.     /**
  348.      * @OA\Tag(name="Bike")
  349.      * @Security(name="Bearer") 
  350.      * @Route("/api/delete/bike/{id}", methods={"DELETE"})
  351.      */
  352.     public function deleteBike($idRequest $request)
  353.     {
  354.         $Bike $this->BikeService->get($id);
  355.         try {
  356.             $this->BikeService->remove($Bike);
  357.             $request->getSession()->getFlashBag()->add('success''bike supprimé avec succès !');
  358.         } catch (\Exception $exception) {
  359.             $request->getSession()->getFlashBag()->add('danger''un ou plusieurs produit liés à cette entité !');
  360.         }
  361.         return new JsonResponse($request);
  362.     }
  363. }