src/Controller/RoomController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Room;
  4. use App\Entity\Rack;
  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\RoomForm;
  12. class RoomController  extends AbstractController
  13. {
  14.     /**
  15.      * @Route("/settings/location/room", name="room")
  16.      */
  17.     public function indexAction(Request $requestTranslatorInterface $translator)
  18.   {
  19.         $user $this->getUser();
  20.         $room = new Room();
  21.         $errors = [];
  22.         $form $this->createForm(RoomForm::class, $room);
  23.         $form->handleRequest($request);
  24.         if ($form->isSubmitted() && $user->hasRole("ROLE_SUPER_ADMIN")) {
  25.             if ($form->isValid()){
  26.                 $room $form->getData();
  27.                 $em $this->getDoctrine()->getManager();
  28.                 $em->persist($room);
  29.                 $em->flush();
  30.                 return $this->redirectToRoute('room');
  31.             }
  32.             $validator $this->get('validator');
  33.             $errors $validator->validate($room);
  34.         }
  35.         $list $this->getDoctrine()->getRepository(Room::class)->findAll();
  36.         return $this->render('location/room.html.twig', [
  37.             'action' => 'insert',
  38.             'page_title' => $translator->trans('Rooms'),
  39.             'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> '.$translator->trans('Add new'),
  40.             'path_default' => 'room',
  41.             'path_update' => 'room_update',
  42.             'path_delete' => 'room_delete',
  43.             'form' => $form->createView(),
  44.             'list' => $list,
  45.             'errors' => $errors
  46.         ]);
  47.     }
  48.     /**
  49.      * @Route("/settings/location/room/edit/{id}", name="room_update")
  50.      */
  51.     public function updateAction(Request $requestRoom $roomTranslatorInterface $translator)
  52.   {
  53.         $user $this->getUser();
  54.         $errors = [];
  55.         $form $this->createForm(RoomForm::class, $room);
  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('room');
  61.             }
  62.             $validator $this->get('validator');
  63.             $errors $validator->validate($room);
  64.             $this->getDoctrine()->getManager()->detach($room);
  65.         }
  66.         $list $this->getDoctrine()->getRepository(Room::class)->findAll();
  67.         return $this->render('location/room.html.twig', [
  68.             'action' => 'update',
  69.             'page_title' => $translator->trans('Rooms'),
  70.             'box_title' => '<i class="fa fa-edit fa-fw"></i> '.$translator->trans('Edit'),
  71.             'path_default' => 'room',
  72.             'path_update' => 'room_update',
  73.             'path_delete' => 'room_delete',
  74.             'form' => $form->createView(),
  75.             'list' => $list,
  76.             'errors' => $errors
  77.         ]);
  78.     }
  79.     /**
  80.      * @IsGranted("ROLE_SUPER_ADMIN")
  81.      * @Route("/settings/location/room/delete/{id}", name="room_delete")
  82.      */
  83.     public function deleteAction($idTranslatorInterface $translator)
  84.   {
  85.         $em $this->getDoctrine()->getManager();
  86.         $room $em->getRepository(Room::class)->find($id);
  87.         $msgError null;
  88.         // find racks in usage
  89.         $racks $em->getRepository(Rack::class)->findByRoom($room);
  90.         if (!$racks){
  91.             $em->remove($room);
  92.             $em->flush();
  93.         }
  94.         else {
  95.           $msgError $translator->trans('deleteError');
  96.           $this->addFlash(
  97.               'error',
  98.               $msgError
  99.           );
  100.        }
  101.         return $this->redirectToRoute('room');
  102.     }
  103. }