src/Controller/SiteController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Site;
  4. use App\Entity\Room;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  9. use Symfony\Contracts\Translation\TranslatorInterface;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  11. use App\Form\SiteForm;
  12. class SiteController  extends AbstractController
  13. {
  14.     /**
  15.      * @Route("/settings/location/site", name="site")
  16.      */
  17.     public function indexAction(Request $requestTranslatorInterface $translator)
  18.   {
  19.         $user $this->getUser();
  20.         $site = new Site();
  21.         $errors = [];
  22.         $form $this->createForm(SiteForm::class, $site);
  23.         $form->handleRequest($request);
  24.         if ($form->isSubmitted() && $user->hasRole("ROLE_SUPER_ADMIN")) {
  25.             if($form->isValid()){
  26.                 $site $form->getData();
  27.                 $em $this->getDoctrine()->getManager();
  28.                 $em->persist($site);
  29.                 $em->flush();
  30.                 return $this->redirectToRoute('site');
  31.             }
  32.             $validator $this->get('validator');
  33.             $errors $validator->validate($site);
  34.         }
  35.         $list $this->getDoctrine()->getRepository(Site::class)->findAll();
  36.         return $this->render('location/site.html.twig', [
  37.             'action' => 'insert',
  38.             'page_title' => $translator->trans('Sites'),
  39.             'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> '.$translator->trans('Add new'),
  40.             'path_default' => 'site',
  41.             'path_update' => 'site_update',
  42.             'path_delete' => 'site_delete',
  43.             'form' => $form->createView(),
  44.             'list' => $list,
  45.             'errors' => $errors
  46.         ]);
  47.     }
  48.     /**
  49.      * @Route("/settings/location/site/edit/{id}", name="site_update")
  50.      */
  51.     public function updateAction(Request $requestSite $siteTranslatorInterface $translator)
  52.   {
  53.         $user $this->getUser();
  54.         $errors = [];
  55.         $form $this->createForm(SiteForm::class, $site);
  56.         $form->handleRequest($request);
  57.         if ($form->isSubmitted() && $user->hasRole("ROLE_SUPER_ADMIN")) {
  58.             if($form->isValid()){
  59.                 $this->getDoctrine()->getManager()->flush();
  60.                 return $this->redirectToRoute('site');
  61.             }
  62.             $validator $this->get('validator');
  63.             $errors $validator->validate($site);
  64.             $this->getDoctrine()->getManager()->detach($site);
  65.         }
  66.         $list $this->getDoctrine()->getRepository(Site::class)->findAll();
  67.         return $this->render('location/site.html.twig', [
  68.             'action' => 'update',
  69.             'page_title' => $translator->trans('Sites'),
  70.             'box_title' => '<i class="fa fa-edit fa-fw"></i> '.$translator->trans('Edit'),
  71.             'path_default' => 'site',
  72.             'path_update' => 'site_update',
  73.             'path_delete' => 'site_delete',
  74.             'form' => $form->createView(),
  75.             'list' => $list,
  76.             'errors' => $errors
  77.         ]);
  78.     }
  79.     /**
  80.      * @IsGranted("ROLE_SUPER_ADMIN")
  81.      * @Route("/settings/location/site/delete/{id}", name="site_delete")
  82.      */
  83.     public function deleteAction($idTranslatorInterface $translator)
  84.   {
  85.         $em $this->getDoctrine()->getManager();
  86.         $site $em->getRepository(Site::class)->find($id);
  87.         $msgError null;
  88.         // find rooms in usage
  89.         $rooms $em->getRepository(Room::class)->findBySite($site);
  90.         if (!$rooms){
  91.             $em->remove($site);
  92.             $em->flush();
  93.         }
  94.         else {
  95.           $msgError $translator->trans('deleteError');
  96.           $this->addFlash(
  97.               'error',
  98.               $msgError
  99.           );
  100.        }
  101.         return $this->redirectToRoute('site');
  102.     }
  103. }