<?php
namespace App\Controller;
use App\Entity\Room;
use App\Entity\Rack;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Contracts\Translation\TranslatorInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use App\Form\RoomForm;
class RoomController extends AbstractController
{
/**
* @Route("/settings/location/room", name="room")
*/
public function indexAction(Request $request, TranslatorInterface $translator)
{
$user = $this->getUser();
$room = new Room();
$errors = [];
$form = $this->createForm(RoomForm::class, $room);
$form->handleRequest($request);
if ($form->isSubmitted() && $user->hasRole("ROLE_SUPER_ADMIN")) {
if ($form->isValid()){
$room = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($room);
$em->flush();
return $this->redirectToRoute('room');
}
$validator = $this->get('validator');
$errors = $validator->validate($room);
}
$list = $this->getDoctrine()->getRepository(Room::class)->findAll();
return $this->render('location/room.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Rooms'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> '.$translator->trans('Add new'),
'path_default' => 'room',
'path_update' => 'room_update',
'path_delete' => 'room_delete',
'form' => $form->createView(),
'list' => $list,
'errors' => $errors
]);
}
/**
* @Route("/settings/location/room/edit/{id}", name="room_update")
*/
public function updateAction(Request $request, Room $room, TranslatorInterface $translator)
{
$user = $this->getUser();
$errors = [];
$form = $this->createForm(RoomForm::class, $room);
$form->handleRequest($request);
if ($form->isSubmitted() && $user->hasRole("ROLE_SUPER_ADMIN")) {
if ($form->isValid()){
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('room');
}
$validator = $this->get('validator');
$errors = $validator->validate($room);
$this->getDoctrine()->getManager()->detach($room);
}
$list = $this->getDoctrine()->getRepository(Room::class)->findAll();
return $this->render('location/room.html.twig', [
'action' => 'update',
'page_title' => $translator->trans('Rooms'),
'box_title' => '<i class="fa fa-edit fa-fw"></i> '.$translator->trans('Edit'),
'path_default' => 'room',
'path_update' => 'room_update',
'path_delete' => 'room_delete',
'form' => $form->createView(),
'list' => $list,
'errors' => $errors
]);
}
/**
* @IsGranted("ROLE_SUPER_ADMIN")
* @Route("/settings/location/room/delete/{id}", name="room_delete")
*/
public function deleteAction($id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$room = $em->getRepository(Room::class)->find($id);
$msgError = null;
// find racks in usage
$racks = $em->getRepository(Rack::class)->findByRoom($room);
if (!$racks){
$em->remove($room);
$em->flush();
}
else {
$msgError = $translator->trans('deleteError');
$this->addFlash(
'error',
$msgError
);
}
return $this->redirectToRoute('room');
}
}