<?php
namespace App\Controller;
use App\Entity\TypeConnector;
use App\Entity\InterfaceGeneric;
use App\Entity\EquipmentGeneric;
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\TypeConnectorForm;
class TypeConnectorController extends AbstractController
{
/**
* @Route("/settings/types/connector", name="type_connector")
*/
public function indexAction(Request $request, TranslatorInterface $translator)
{
$user = $this->getUser();
$typeConnector = new TypeConnector();
$errors = [];
$form = $this->createForm(TypeConnectorForm::class, $typeConnector);
$form->handleRequest($request);
if ($form->isSubmitted() && $user->hasRole("ROLE_SUPER_ADMIN")) {
if($form->isValid()){
$typeConnector = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($typeConnector);
$em->flush();
return $this->redirectToRoute('type_connector');
}
$validator = $this->get('validator');
$errors = $validator->validate($typeConnector);
}
$list = $this->getDoctrine()->getRepository(TypeConnector::class)->findAll();
return $this->render('types/default.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Connector Type'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> '.$translator->trans('Add new'),
'path_default' => 'type_connector',
'path_update' => 'type_connector_update',
'path_delete' => 'type_connector_delete',
'path_show_module' => 'type_connector_show_module',
'path_show_equipement' => 'type_connector_show_equipement',
'form' => $form->createView(),
'list' => $list,
'errors' => $errors
]);
}
/**
* @Route("/settings/types/connector/edit/{id}", name="type_connector_update")
*/
public function updateAction(Request $request, TypeConnector $typeConnector, TranslatorInterface $translator)
{
$user = $this->getUser();
$errors = [];
$form = $this->createForm(TypeConnectorForm::class, $typeConnector);
$form->handleRequest($request);
if ($form->isSubmitted() && $user->hasRole("ROLE_SUPER_ADMIN")) {
if($form->isValid()){
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('type_connector');
}
$validator = $this->get('validator');
$errors = $validator->validate($typeConnector);
$this->getDoctrine()->getManager()->detach($typeConnector);
}
$list = $this->getDoctrine()->getRepository(TypeConnector::class)->findAll();
return $this->render('types/default.html.twig', [
'action' => 'update',
'page_title' => $translator->trans('Connector Type'),
'box_title' => '<i class="fa fa-edit fa-fw"></i> '.$translator->trans('Edit'),
'path_default' => 'type_connector',
'path_update' => 'type_connector_update',
'path_delete' => 'type_connector_delete',
'form' => $form->createView(),
'list' => $list,
'errors' => $errors
]);
}
/**
* @IsGranted("ROLE_SUPER_ADMIN")
* @Route("/settings/types/connector/delete/{id}", name="type_connector_delete")
*/
public function deleteAction($id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$typeConnector = $em->getRepository(TypeConnector::class)->find($id);
$msgError = null;
try {
$em->remove($typeConnector);
$em->flush();
} catch (\Exception $e) {
$msgError = $translator->trans('deleteError');
}
return $this->redirectToRoute('type_connector', array("msgError"=>$msgError));
}
/**
* @Route("/settings/types/connector/show_module/{id}", name="type_connector_show_module")
*/
public function showModuleAction($id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$eqIds = $em->getRepository(TypeConnector::class)->findModulesGenerique($id);
$eqPortExterneIds = $em->getRepository(TypeConnector::class)->findModulesGeneriquePortExterne($id);
$list = array();
for ($i=0; $i < count($eqIds); $i++) {
$list[] = $em->getRepository(EquipmentGeneric::class)->find($eqIds[$i]['id']);
}
for ($i=0; $i < count($eqPortExterneIds); $i++) {
$list[] = $em->getRepository(EquipmentGeneric::class)->find($eqPortExterneIds[$i]['id']);
}
return $this->render('types/module_list.html.twig', [
'page_title' => $translator->trans('Liste des modules génériques'),
'box_title' => $translator->trans('Liste des modules génériques'),
'path_retour' => 'type_connector',
'path_update' => 'equipment_generic_module_update',
'path_delete' => 'equipment_generic_delete',
'path_show_equipement' => 'module_show_equipement_specifique',
'list' => $list
]);
}
/**
* @Route("/settings/types/connector/show_equipement/{id}", name="type_connector_show_equipement")
*/
public function showEquipementAction($id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$eqIds = $em->getRepository(TypeConnector::class)->findEquipementsGenerique($id);
$eqPortExterneIds = $em->getRepository(TypeConnector::class)->findEquipementsGeneriquePortExterne($id);
$list = array();
for ($i=0; $i < count($eqIds); $i++) {
$list[] = $em->getRepository(EquipmentGeneric::class)->find($eqIds[$i]['id']);
}
for ($i=0; $i < count($eqPortExterneIds); $i++) {
$list[] = $em->getRepository(EquipmentGeneric::class)->find($eqPortExterneIds[$i]['id']);
}
return $this->render('types/equipement_list.html.twig', [
'page_title' => $translator->trans('Liste des équipements génériques'),
'box_title' => $translator->trans('Liste des équipements génériques'),
'path_retour' => 'type_connector',
'path_update' => 'equipment_generic_update',
'path_delete' => 'equipment_generic_delete',
'list' => $list
]);
}
}