<?php
namespace App\Controller;
use App\Entity\Site;
use App\Entity\Room;
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\SiteForm;
class SiteController extends AbstractController
{
/**
* @Route("/settings/location/site", name="site")
*/
public function indexAction(Request $request, TranslatorInterface $translator)
{
$user = $this->getUser();
$site = new Site();
$errors = [];
$form = $this->createForm(SiteForm::class, $site);
$form->handleRequest($request);
if ($form->isSubmitted() && $user->hasRole("ROLE_SUPER_ADMIN")) {
if($form->isValid()){
$site = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($site);
$em->flush();
return $this->redirectToRoute('site');
}
$validator = $this->get('validator');
$errors = $validator->validate($site);
}
$list = $this->getDoctrine()->getRepository(Site::class)->findAll();
return $this->render('location/site.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Sites'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> '.$translator->trans('Add new'),
'path_default' => 'site',
'path_update' => 'site_update',
'path_delete' => 'site_delete',
'form' => $form->createView(),
'list' => $list,
'errors' => $errors
]);
}
/**
* @Route("/settings/location/site/edit/{id}", name="site_update")
*/
public function updateAction(Request $request, Site $site, TranslatorInterface $translator)
{
$user = $this->getUser();
$errors = [];
$form = $this->createForm(SiteForm::class, $site);
$form->handleRequest($request);
if ($form->isSubmitted() && $user->hasRole("ROLE_SUPER_ADMIN")) {
if($form->isValid()){
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('site');
}
$validator = $this->get('validator');
$errors = $validator->validate($site);
$this->getDoctrine()->getManager()->detach($site);
}
$list = $this->getDoctrine()->getRepository(Site::class)->findAll();
return $this->render('location/site.html.twig', [
'action' => 'update',
'page_title' => $translator->trans('Sites'),
'box_title' => '<i class="fa fa-edit fa-fw"></i> '.$translator->trans('Edit'),
'path_default' => 'site',
'path_update' => 'site_update',
'path_delete' => 'site_delete',
'form' => $form->createView(),
'list' => $list,
'errors' => $errors
]);
}
/**
* @IsGranted("ROLE_SUPER_ADMIN")
* @Route("/settings/location/site/delete/{id}", name="site_delete")
*/
public function deleteAction($id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$site = $em->getRepository(Site::class)->find($id);
$msgError = null;
// find rooms in usage
$rooms = $em->getRepository(Room::class)->findBySite($site);
if (!$rooms){
$em->remove($site);
$em->flush();
}
else {
$msgError = $translator->trans('deleteError');
$this->addFlash(
'error',
$msgError
);
}
return $this->redirectToRoute('site');
}
}