src/Controller/DealerController.php line 46

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Dealer;
  4. use App\Form\DealerType;
  5. use App\Repository\DealerRepository;
  6. use App\Repository\VehicleRepository;
  7. use App\Services\ImgUploader;
  8. use Knp\Component\Pager\PaginatorInterface;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\String\Slugger\AsciiSlugger;
  16. #[Route('/dealer')]
  17. class DealerController extends AbstractController
  18. {
  19.     #[Security('is_granted("ROLE_ADMIN")')]
  20.     #[Route('/set-url'name'app_dealer_url_set'methods: ['GET'])]
  21.     public function setUrl(DealerRepository $dealerRepository): Response
  22.     {
  23.         foreach ($dealerRepository->findAll() as $dealer) {
  24.              if(!$dealer->getUrl()) {
  25.                  $slugger = new AsciiSlugger('cs');
  26.                  $slug =   $slugger->slug($dealer->getName(), '-')->lower();
  27.                  $dealer->setUrl($slug->toString());
  28.                  $dealerRepository->save($dealertrue);
  29.              }
  30.         }
  31.         return $this->json( [
  32.             'ok'
  33.         ]);
  34.     }
  35.     public function countVehicle(Dealer $dealerVehicleRepository $vehicleRepository): Response
  36.     {
  37.         return new Response(
  38.             ''$vehicleRepository->count(['dealer' => $dealer'visible'=>true]),
  39.         );
  40.     }
  41.     #[Security('is_granted("ROLE_ADMIN")')]
  42.     #[Route('/'name'app_dealer_index'methods: ['GET'])]
  43.     public function index(Request $requestPaginatorInterface $paginatorDealerRepository $dealerRepository): Response
  44.     {
  45.         $parameters = [];
  46.         if($request->query->all()) {
  47.             $parameters $request->query->all();
  48.         }
  49.         $pagination $paginator->paginate(
  50.             $dealerRepository->findQuery($parameters), /* query NOT result */
  51.             $request->query->getInt('page'1), /*page number*/
  52.             20 /*limit per page*/
  53.         );
  54.         return $this->render('dealer/index.html.twig', [
  55.             'dealers' => $pagination,
  56.         ]);
  57.     }
  58.     #[Security('is_granted("ROLE_ADMIN")')]
  59.     #[Route('/new'name'app_dealer_new'methods: ['GET''POST'])]
  60.     public function new(Request $requestDealerRepository $dealerRepositoryParameterBagInterface $parameterBag): Response
  61.     {
  62.         $dealer = new Dealer();
  63.         $form $this->createForm(DealerType::class, $dealer);
  64.         $form->handleRequest($request);
  65.         if ($form->isSubmitted() && $form->isValid()) {
  66.             $fileUpload $form['file']->getData();
  67.             if ($fileUpload) {
  68.                 $imgUploader =  new ImgUploader($parameterBag->get('imgDealerFolder'),1800);
  69.                 $dealer->setLogo($imgUploader->upload($fileUpload));
  70.             }
  71.             $dealerRepository->save($dealertrue);
  72.             return $this->redirectToRoute('app_dealer_show', [ 'id'=>  $dealer->getId() ], Response::HTTP_SEE_OTHER);
  73.         }
  74.         return $this->render('dealer/new.html.twig'compact('dealer''form'));
  75.     }
  76.     #[Security('is_granted("ROLE_ADMIN")')]
  77.     #[Route('/{id}'name'app_dealer_show'methods: ['GET'])]
  78.     public function show(Dealer $dealer): Response
  79.     {
  80.         return $this->render('dealer/show.html.twig'compact('dealer'));
  81.     }
  82.     #[Security('is_granted("ROLE_ADMIN")')]
  83.     #[Route('/{id}/edit'name'app_dealer_edit'methods: ['GET''POST'])]
  84.     public function edit(Request $requestDealer $dealerParameterBagInterface $parameterBag,
  85.                          DealerRepository $dealerRepository): Response
  86.     {
  87.         $form $this->createForm(DealerType::class, $dealer);
  88.         $form->handleRequest($request);
  89.         if ($form->isSubmitted() && $form->isValid()) {
  90.             $fileUpload $form['file']->getData();
  91.             if ($fileUpload) {
  92.                 $imgUploader =  new ImgUploader($parameterBag->get('imgDealerFolder'),1800);
  93.                 if ($dealer->getLogo()) {
  94.                     $imgUploader->deleteFiles($dealer->getLogo());
  95.                 }
  96.                 $dealer->setLogo($imgUploader->upload($fileUpload));
  97.             }
  98.             $dealerRepository->save($dealertrue);
  99.             return $this->redirectToRoute('app_dealer_show', [ 'id'=>  $dealer->getId() ], Response::HTTP_SEE_OTHER);
  100.         }
  101.         return $this->render('dealer/edit.html.twig'compact('dealer''form'));
  102.     }
  103.     #[Security('is_granted("ROLE_ADMIN")')]
  104.     #[Route('/{id}'name'app_dealer_delete'methods: ['POST'])]
  105.     public function delete(Request $requestDealer $dealerDealerRepository $dealerRepository): Response
  106.     {
  107.         if ($this->isCsrfTokenValid('delete'.$dealer->getId(), $request->request->get('_token'))) {
  108.             
  109.             try {
  110.                 $vehicleCount $dealerRepository->deleteWithAllRelations($dealer);
  111.                 $this->addFlash('success''Dealer a všechny jeho inzeráty (' $vehicleCount ') byly úspěšně smazány.');
  112.                 
  113.             } catch (\Exception $e) {
  114.                 $this->addFlash('error''Chyba při mazání dealera: ' $e->getMessage());
  115.             }
  116.         }
  117.         return $this->redirectToRoute('app_dealer_index', [], Response::HTTP_SEE_OTHER);
  118.     }
  119. }