src/Controller/DealerController.php line 46
<?phpnamespace App\Controller;use App\Entity\Dealer;use App\Form\DealerType;use App\Repository\DealerRepository;use App\Repository\VehicleRepository;use App\Services\ImgUploader;use Knp\Component\Pager\PaginatorInterface;use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\String\Slugger\AsciiSlugger;#[Route('/dealer')]class DealerController extends AbstractController{#[Security('is_granted("ROLE_ADMIN")')]#[Route('/set-url', name: 'app_dealer_url_set', methods: ['GET'])]public function setUrl(DealerRepository $dealerRepository): Response{foreach ($dealerRepository->findAll() as $dealer) {if(!$dealer->getUrl()) {$slugger = new AsciiSlugger('cs');$slug = $slugger->slug($dealer->getName(), '-')->lower();$dealer->setUrl($slug->toString());$dealerRepository->save($dealer, true);}}return $this->json( ['ok']);}public function countVehicle(Dealer $dealer, VehicleRepository $vehicleRepository): Response{return new Response(''. $vehicleRepository->count(['dealer' => $dealer, 'visible'=>true]),);}#[Security('is_granted("ROLE_ADMIN")')]#[Route('/', name: 'app_dealer_index', methods: ['GET'])]public function index(Request $request, PaginatorInterface $paginator, DealerRepository $dealerRepository): Response{$parameters = [];if($request->query->all()) {$parameters = $request->query->all();}$pagination = $paginator->paginate($dealerRepository->findQuery($parameters), /* query NOT result */$request->query->getInt('page', 1), /*page number*/20 /*limit per page*/);return $this->render('dealer/index.html.twig', ['dealers' => $pagination,]);}#[Security('is_granted("ROLE_ADMIN")')]#[Route('/new', name: 'app_dealer_new', methods: ['GET', 'POST'])]public function new(Request $request, DealerRepository $dealerRepository, ParameterBagInterface $parameterBag): Response{$dealer = new Dealer();$form = $this->createForm(DealerType::class, $dealer);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {$fileUpload = $form['file']->getData();if ($fileUpload) {$imgUploader = new ImgUploader($parameterBag->get('imgDealerFolder'),1800);$dealer->setLogo($imgUploader->upload($fileUpload));}$dealerRepository->save($dealer, true);return $this->redirectToRoute('app_dealer_show', [ 'id'=> $dealer->getId() ], Response::HTTP_SEE_OTHER);}return $this->render('dealer/new.html.twig', compact('dealer', 'form'));}#[Security('is_granted("ROLE_ADMIN")')]#[Route('/{id}', name: 'app_dealer_show', methods: ['GET'])]public function show(Dealer $dealer): Response{return $this->render('dealer/show.html.twig', compact('dealer'));}#[Security('is_granted("ROLE_ADMIN")')]#[Route('/{id}/edit', name: 'app_dealer_edit', methods: ['GET', 'POST'])]public function edit(Request $request, Dealer $dealer, ParameterBagInterface $parameterBag,DealerRepository $dealerRepository): Response{$form = $this->createForm(DealerType::class, $dealer);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {$fileUpload = $form['file']->getData();if ($fileUpload) {$imgUploader = new ImgUploader($parameterBag->get('imgDealerFolder'),1800);if ($dealer->getLogo()) {$imgUploader->deleteFiles($dealer->getLogo());}$dealer->setLogo($imgUploader->upload($fileUpload));}$dealerRepository->save($dealer, true);return $this->redirectToRoute('app_dealer_show', [ 'id'=> $dealer->getId() ], Response::HTTP_SEE_OTHER);}return $this->render('dealer/edit.html.twig', compact('dealer', 'form'));}#[Security('is_granted("ROLE_ADMIN")')]#[Route('/{id}', name: 'app_dealer_delete', methods: ['POST'])]public function delete(Request $request, Dealer $dealer, DealerRepository $dealerRepository): Response{if ($this->isCsrfTokenValid('delete'.$dealer->getId(), $request->request->get('_token'))) {try {$vehicleCount = $dealerRepository->deleteWithAllRelations($dealer);$this->addFlash('success', 'Dealer a všechny jeho inzeráty (' . $vehicleCount . ') byly úspěšně smazány.');} catch (\Exception $e) {$this->addFlash('error', 'Chyba při mazání dealera: ' . $e->getMessage());}}return $this->redirectToRoute('app_dealer_index', [], Response::HTTP_SEE_OTHER);}}