src/Controller/PortExterneController.php line 125

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use App\Entity\PortExterne;
  6. use App\Entity\Port;
  7. use App\Entity\TypeConnector;
  8. use App\Entity\TypeLink;
  9. use App\Entity\InterfaceGeneric;
  10. use App\Entity\EquipmentGeneric;
  11. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Pagerfanta\Pagerfanta;
  14. // use Pagerfanta\Adapter\DoctrineORMAdapter;
  15. use Symfony\Contracts\Translation\TranslatorInterface;
  16. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  17. class PortExterneController  extends AbstractController
  18. {
  19.   /**
  20.    * @Route("/settings/settings/port-externe/create", name="port_externe_create")
  21.    */
  22.   public function createAction(Request $requestTranslatorInterface $translator)
  23.   {
  24.     $user $this->getUser();
  25.     // process form
  26.     if ($request->request->has('reference') && ($user->hasRole("ROLE_SUPER_ADMIN") || $user->hasRole("ROLE_ADMIN"))){
  27.         $em $this->getDoctrine()->getManager();
  28.         $pe = new PortExterne();
  29.         $pe->setReference($request->request->get('reference'));
  30.         if ($request->request->get('application')) {
  31.           $pe->setApplication($request->request->get('application'));
  32.         }
  33.         if ($request->request->get('formFactor')) {
  34.           $pe->setFormFactor($request->request->get('formFactor'));
  35.         }
  36.         if ($request->request->get('distanceMax')) {
  37.           $pe->setDistanceMax($request->request->get('distanceMax'));
  38.         }
  39.         if ($request->request->get('debitMax')) {
  40.           $pe->setDebitMax($request->request->get('debitMax'));
  41.         }
  42.         if ($request->request->get('longeurOnde')) {
  43.           $pe->setLongeurOnde($request->request->get('longeurOnde'));
  44.         }
  45.         if ($request->request->get('marque')) {
  46.           $pe->setMarque($request->request->get('marque'));
  47.         }
  48.         $pe->setTypeConnector($this->getDoctrine()->getRepository('App\Entity\TypeConnector')->findOneById($request->request->get('typeConnector')));
  49.         $pe->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->findOneById($request->request->get('typeLink')));
  50.         if ($request->request->get('sfpMpo')) {
  51.             $if = new InterfaceGeneric();
  52.             $this->createInterfaceGeneric($em$if);
  53.             $pe->setInterfaceGeneric($if);
  54.         }
  55.         // $pe->setInterfaceGeneric($if);
  56.         $em->persist($pe);
  57.         $em->flush();
  58.         return $this->redirectToRoute('port_externe_list');
  59.     // show form
  60.     } else {
  61.         $typeLink $this->getDoctrine()->getRepository('App\Entity\TypeLink')->findAll();
  62.         $typeConnector$this->getDoctrine()->getRepository('App\Entity\TypeConnector')->findAll();
  63.         $typeInterconnection$this->getDoctrine()->getRepository('App\Entity\TypeInterconnection')->findAll();
  64.         return $this->render('port_externe/create.html.twig', [
  65.             'action' => 'insert',
  66.             'page_title' => $translator->trans('Port Externe'),
  67.             'box_title' => '<i class="fa fa-plus-circle fa-fw"></i>'.$translator->trans('Add new'),
  68.             'typeLink' => $typeLink,
  69.             'typeConnector' => $typeConnector,
  70.             'typeInterconnection' => $typeInterconnection
  71.         ]);
  72.     }
  73.   }
  74.   private function createInterfaceGeneric($entityManager, &$interfaceGeneric){
  75.       $interfaceGeneric->setEquipmentGeneric(null);
  76.       $interfaceGeneric->setInterfaceNumber($_POST['interfaceNumber']);
  77.       $interfaceGeneric->setNumberOfPorts($_POST['interfaceNumberOfPorts']);
  78.       $interfaceGeneric->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->findOneById($_POST['interfaceTypeLink']));
  79.       if ($_POST['interfaceTypeConnector']) {
  80.         $interfaceGeneric->setTypeConnector($this->getDoctrine()->getRepository('App\Entity\TypeConnector')->findOneById($_POST['interfaceTypeConnector']));
  81.       }
  82.       $interfaceGeneric->setTypeInterconnection($this->getDoctrine()->getRepository('App\Entity\TypeInterconnection')->findOneById($_POST['interfaceTypeInterconnection']));
  83.       $alias = [];
  84.       for ($j 1$j<=count($_POST["port"]); $j++){
  85.           if (isset($_POST["port"][$j-1])) {
  86.               $alias[$j] = $_POST["port"][$j-1];
  87.           }
  88.           else {
  89.               $alias[$j] = "";
  90.           }
  91.       }
  92.       if (!empty($alias)) {
  93.           $alias json_encode($alias);
  94.           $alias = (string)$alias;
  95.       } else {
  96.           $alias null;
  97.       }
  98.       $interfaceGeneric->setAlias($alias);
  99.       $entityManager->persist($interfaceGeneric);
  100.       // $entityManager->flush();
  101.       // return $interfaceGeneric;
  102.   }
  103.   /**
  104.    * @Route("/settings/port-externe/list", name="port_externe_list")
  105.    */
  106.   public function listAction(Request $requestTranslatorInterface $translator)
  107.   {
  108.       $em $this->getDoctrine()->getManager();
  109.       $list $this->getDoctrine()->getRepository(PortExterne::class)->findAll();
  110.       // $queryBuilder = $em->createQueryBuilder()
  111.       // ->select('pe')
  112.       // ->from('App\Entity\PortExterne', 'pe')
  113.       // ->orderBy("pe.reference", "ASC");
  114.       // $adapter = new DoctrineORMAdapter($queryBuilder);
  115.       // $pagerfanta = new Pagerfanta($adapter);
  116.       $pageLength $request->query->get("pageLength"$this->getParameter("portExterne.maxPerPage"));
  117.       // if ($pageLength == "Tout") {
  118.       //   $qb = $em->createQueryBuilder()
  119.       //   ->select('COUNT(pe.id)')
  120.       //   ->from('App\Entity\PortExterne', 'pe');
  121.       //
  122.       //   $count = $qb->getQuery()->getSingleScalarResult();
  123.       //   $pagerfanta->setMaxPerPage($count); // 10 by default
  124.       // }
  125.       // else {
  126.       //   $pagerfanta->setMaxPerPage($pageLength); // 10 by default
  127.       // }
  128.       // $page = $request->query->get("page", 1);
  129.       // $pagerfanta->setCurrentPage($page);
  130.       return $this->render('port_externe/list.html.twig', [
  131.           'action' => 'list',
  132.           'page_title' => $translator->trans('Port Externe'),
  133.           'path_default' => 'port_externe_create',
  134.           'path_update' => 'port_externe_update',
  135.           'path_delete' => 'port_externe_delete',
  136.           'path_show_module' => 'port_externe_show_module',
  137.           'path_show_equipement' => 'port_externe_show_equipement',
  138.           'list' => $list,
  139.           // 'my_pager' => $pagerfanta,
  140.           'pageLength' => $pageLength,
  141.       ]);
  142.   }
  143.   /**
  144.    * @Route("/settings/port-externe/edit/{id}", name="port_externe_update")
  145.    */
  146.   public function updateAction(Request $request$idTranslatorInterface $translator)
  147.   {
  148.       $user $this->getUser();
  149.       $pe $this->getDoctrine()->getRepository('App\Entity\PortExterne')->findOneById($id);
  150.       $interfaceGen $pe->getInterfaceGeneric();
  151.       $isMPO = isset($interfaceGen) ? 0;
  152.       $inUse 0;
  153.       if ($isMPO) {
  154.           $specific $interfaceGen->getInterfaceSpecific();
  155.           if (count($specific) > 0){
  156.               $inUse 1;
  157.           }
  158.       }
  159.       if ($request->request->has('reference') && ($user->hasRole("ROLE_SUPER_ADMIN") || $user->hasRole("ROLE_ADMIN"))){
  160.           $em $this->getDoctrine()->getManager();
  161.           $pe->setReference($request->request->get('reference'));
  162.           if ($request->request->get('application')) {
  163.             $pe->setApplication($request->request->get('application'));
  164.           }
  165.           if ($request->request->get('formFactor')) {
  166.             $pe->setFormFactor($request->request->get('formFactor'));
  167.           }
  168.           if ($request->request->get('distanceMax')) {
  169.             $pe->setDistanceMax($request->request->get('distanceMax'));
  170.           }
  171.           if ($request->request->get('debitMax')) {
  172.             $pe->setDebitMax($request->request->get('debitMax'));
  173.           }
  174.           if ($request->request->get('longeurOnde')) {
  175.             $pe->setLongeurOnde($request->request->get('longeurOnde'));
  176.           }
  177.           if ($request->request->get('marque')) {
  178.             $pe->setMarque($request->request->get('marque'));
  179.           }
  180.           $pe->setTypeConnector($this->getDoctrine()->getRepository('App\Entity\TypeConnector')->findOneById($request->request->get('typeConnector')));
  181.           $pe->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->findOneById($request->request->get('typeLink')));
  182.           if ($request->request->get('sfpMpo')) {
  183.               $if $pe->getInterfaceGeneric();
  184.               $this->createInterfaceGeneric($em$if);
  185.               $pe->setInterfaceGeneric($if);
  186.           }
  187.           $em->persist($pe);
  188.           $em->flush();
  189.           return $this->redirectToRoute('port_externe_list');
  190.       // show form
  191.       } else {
  192.           $typeLink $this->getDoctrine()->getRepository('App\Entity\TypeLink')->findAll();
  193.           $typeConnector$this->getDoctrine()->getRepository('App\Entity\TypeConnector')->findAll();
  194.           $typeInterconnection$this->getDoctrine()->getRepository('App\Entity\TypeInterconnection')->findAll();
  195.           return $this->render('port_externe/edit.html.twig', [
  196.               'action' => 'insert',
  197.               'page_title' => $translator->trans('Port Externe'),
  198.               'box_title' => '<i class="fa fa-plus-circle fa-fw"></i>'.$translator->trans('Add new'),
  199.               'typeLink' => $typeLink,
  200.               'typeConnector' => $typeConnector,
  201.               "pe" => $pe,
  202.               'typeInterconnection' => $typeInterconnection,
  203.               'isMPO'=>$isMPO,
  204.               'inUse'=>$inUse
  205.           ]);
  206.       }
  207.   }
  208.   /**
  209.    * @IsGranted("ROLE_SUPER_ADMIN")
  210.    * @Route("/settings/port-externe/delete/{id}", name="port_externe_delete")
  211.    */
  212.   public function deleteAction($idTranslatorInterface $translator)
  213.   {
  214.       $em $this->getDoctrine()->getManager();
  215.       $portExterne $em->getRepository(PortExterne::class)->find($id);
  216.       $msgError null;
  217.       // find rooms in usage
  218.       $ports $em->getRepository(Port::class)->findByPortExterne($portExterne);
  219.       if (!$ports){
  220.           $em->remove($portExterne);
  221.           $em->flush();
  222.       }
  223.       else {
  224.         $msgError $translator->trans('deleteError');
  225.         $this->addFlash(
  226.             'error',
  227.             $msgError
  228.         );
  229.      }
  230.       return $this->redirectToRoute('port_externe_list');
  231.   }
  232.   /**
  233.    * @Route("/settings/port-externe/show_module/{id}", name="port_externe_show_module")
  234.    */
  235.   public function showModuleAction($idTranslatorInterface $translator)
  236.   {
  237.       $em $this->getDoctrine()->getManager();
  238.       $eqIds $em->getRepository(PortExterne::class)->findModulesGenerique($id);
  239.       $list = array();
  240.       for ($i=0$i count($eqIds); $i++) {
  241.           $list[] = $em->getRepository(EquipmentGeneric::class)->find($eqIds[$i]['id']);
  242.       }
  243.       return $this->render('types/module_list.html.twig', [
  244.           'page_title' => $translator->trans('Liste des modules génériques'),
  245.           'box_title' => $translator->trans('Liste des modules génériques'),
  246.           'path_retour' => 'port_externe_list',
  247.           'path_update' => 'equipment_generic_module_update',
  248.           'path_delete' => 'equipment_generic_delete',
  249.           'path_show_equipement' => 'module_show_equipement_specifique',
  250.           'list' => $list
  251.       ]);
  252.   }
  253.   /**
  254.    * @Route("/settings/port-externe/show_equipement/{id}", name="port_externe_show_equipement")
  255.    */
  256.   public function showEquipementAction($idTranslatorInterface $translator)
  257.   {
  258.       $em $this->getDoctrine()->getManager();
  259.       $eqIds $em->getRepository(PortExterne::class)->findEquipementsGenerique($id);
  260.       $list = array();
  261.       for ($i=0$i count($eqIds); $i++) {
  262.           $list[] = $em->getRepository(EquipmentGeneric::class)->find($eqIds[$i]['id']);
  263.       }
  264.       return $this->render('types/equipement_list.html.twig', [
  265.           'page_title' => $translator->trans('Liste des équipements génériques'),
  266.           'box_title' => $translator->trans('Liste des équipements génériques'),
  267.           'path_retour' => 'port_externe_list',
  268.           'path_update' => 'equipment_generic_update',
  269.           'path_delete' => 'equipment_generic_delete',
  270.           'list' => $list
  271.       ]);
  272.   }
  273. }