<?php
namespace App\Controller;
use Psr\Log\LoggerInterface;
use App\Entity\Link;
use App\Entity\LinkExtension;
use App\Entity\Trunk;
use App\Entity\TrunkCableFiber;
use App\Entity\TrunkExtension;
use App\Entity\Port;
use App\Entity\Extremity;
use App\Entity\ExtensionOrder;
use App\Entity\LinkValidation;
use App\Entity\Rack;
use App\Entity\EquipmentSpecific;
use App\Entity\EquipmentGeneric;
use App\Entity\InterfaceGeneric;
use App\Entity\InterfaceSpecific;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\ExpressionLanguage\Tests\Node\Obj;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Pagerfanta\Adapter\ArrayAdapter;
use Pagerfanta\Pagerfanta;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Contracts\Translation\TranslatorInterface;
use Qipsius\TCPDFBundle\Controller\TCPDFController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
class LinkController extends AbstractController
{
/**
* @Route("/link/create/step1", name="link_create_form_step1")
*/
public function createAction(Request $request, TranslatorInterface $translator)
{
try {
$typeCable = $this->getDoctrine()->getRepository('App\Entity\TypeCable')->findAll();
$typeUsage = $this->getDoctrine()->getRepository('App\Entity\TypeUsage')->findAll();
$typeLink = $this->getDoctrine()->getRepository('App\Entity\TypeLink')->findAll();
$linkID = $this->getDoctrine()->getRepository('App\Entity\Link')->getNewId();
return $this->render('link/create_step1.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Create Link - Step 1'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> ' . $translator->trans('Add new'),
'typeCable' => $typeCable,
'typeUsage' => $typeUsage,
'typeLink' => $typeLink,
'linkID' => $linkID
]);
} catch (\Exception $e) {
return $this->redirect($request->headers->get('referer'));
}
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/create/step2", name="link_create_process_step1")
*/
public function processLinkAction(Request $request, TranslatorInterface $translator)
{
try {
$em = $this->getDoctrine()->getManager();
$link = new Link();
$link->setLinkID($request->request->get('linkID'));
$link->setOwner($request->request->get('owner'));
$link->setTypeUsage($this->getDoctrine()->getRepository('App\Entity\TypeUsage')->findOneById($request->request->get('typeUsage')));
$link->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->findOneById($request->request->get('typeLink')));
$em->persist($link);
$em->flush();
if ($request->request->get('action') == 'reserve') {
return $this->redirectToRoute('link_list');
}
$sites = $this->getDoctrine()->getRepository('App\Entity\Site')->findBy([], ['title' => 'ASC']);
$eqGeneric = $this->getDoctrine()->getRepository('App\Entity\EquipmentGeneric')->findBy([], ['title' => 'ASC']);
$rackFaces = $this->getDoctrine()->getRepository('App\Entity\RackFace')->findAll();
//$sites = $this->getDoctrine()->getRepository('App\Entity\Site')->findAll();
//$rackFaces = $this->getDoctrine()->getRepository('App\Entity\RackFace')->findAll();
$trunks = $this->getDoctrine()->getRepository('App\Entity\Trunk')->findBy([], ['trunkID' => 'ASC']);
$typeCable = $this->getDoctrine()->getRepository('App\Entity\TypeCable')->findAll();
//$eqGeneric = $this->getDoctrine()->getRepository('App\Entity\EquipmentGeneric')->findAll();
$typeConnection = $request->request->get('typeConnection');
switch ($typeConnection) {
// preassembled
case 1:
return $this->render('link/create_step2_preassembled.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Create Link - Step 2'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> ' . $translator->trans('Add new'),
'link' => $link,
'sites' => $sites,
'rackFaces' => $rackFaces,
'typeCable' => $typeCable,
'eqGeneric' => $eqGeneric
]);
break;
// trunk
case 2:
return $this->render('link/create_step2_trunk.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Create Link - Step 2'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> ' . $translator->trans('Add new'),
'link' => $link,
'sites' => $sites,
'rackFaces' => $rackFaces,
'trunks' => $trunks
]);
break;
}
} catch (\Exception $e) {
return $this->redirect($request->headers->get('referer'));
}
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/add/links", name="link_add_links")
*/
public function addLinksAction(Request $request, TranslatorInterface $translator)
{
try {
$link = $this->getDoctrine()->getRepository('App\Entity\Link')->findOneById($request->request->get('link_id'));
$sites = $this->getDoctrine()->getRepository('App\Entity\Site')->findBy([], ['title' => 'ASC']);
$eqGeneric = $this->getDoctrine()->getRepository('App\Entity\EquipmentGeneric')->findBy(["isModule" => false, "isModulaire" => false], ['title' => 'ASC']);
$rackFaces = $this->getDoctrine()->getRepository('App\Entity\RackFace')->findAll();
$typeCable = $this->getDoctrine()->getRepository('App\Entity\TypeCable')->findAll();
return $this->render('link/create_step2_preassembled.html.twig', [
'action' => 'edit',
'page_title' => $translator->trans('Add Links'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> ' . $translator->trans('Add new'),
'link' => $link,
'sites' => $sites,
'rackFaces' => $rackFaces,
'typeCable' => $typeCable,
'eqGeneric' => $eqGeneric
]);
} catch (\Exception $e) {
return $this->redirect($request->headers->get('referer'));
}
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/add-first/links", name="link_add_first")
*/
public function addFirstAction(Request $request, LoggerInterface $logger, TranslatorInterface $translator)
{
try {
$link = $this->getDoctrine()->getRepository('App\Entity\Link')->findOneById($request->request->get('link_id'));
$sites = $this->getDoctrine()->getRepository('App\Entity\Site')->findBy([], ['title' => 'ASC']);
$eqGeneric = $this->getDoctrine()->getRepository('App\Entity\EquipmentGeneric')->findBy(["isModule" => false, "isModulaire" => false], ['title' => 'ASC']);
$rackFaces = $this->getDoctrine()->getRepository('App\Entity\RackFace')->findAll();
$typeCable = $this->getDoctrine()->getRepository('App\Entity\TypeCable')->findAll();
$nextExt = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link"=>$link, "sequenceNo"=>1]);
$nextInt = $nextExt->getExtremityA()->getExtensionOrder()[0]->getPort()->getPortMpo() ? $nextExt->getExtremityA()->getExtensionOrder()[0]->getPort()->getPortMpo()->getInterfaceSpecific() : $nextExt->getExtremityA()->getExtensionOrder()[0]->getPort()->getInterfaceSpecific();
// $nextInt = $nextExt->getPortA()->getInterfaceSpecific();
$nextEq = $nextInt->getEquipmentSpecificMpo() ? $nextInt->getEquipmentSpecificMpo() : $nextInt->getEquipmentSpecific();
// $nextEq = $nextExt->getPortA()->getInterfaceSpecific()->getEquipmentSpecific();
$nextPort = [];
$nextPortTemp = $nextExt->getExtremityA()->getExtensionOrder();
foreach ($nextPortTemp as $value) {
$nextPort[] = $value->getPort();
}
$nextIntType = $nextInt->getInterfaceGeneric()->getTypeInterconnection()->getId();
return $this->render('link/add_first.html.twig', [
'action' => 'edit',
'page_title' => $translator->trans('Add Links'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> ' . $translator->trans('Add new'),
'link' => $link,
'sites' => $sites,
'rackFaces' => $rackFaces,
'typeCable' => $typeCable,
'eqGeneric' => $eqGeneric,
'nextEq' => $nextEq,
'nextInt' => $nextInt,
'nextIntType' => $nextIntType,
'nextPort' => $nextPort
]);
} catch (\Exception $e) {
$logger->info($e->getMessage());
return $this->redirect($request->headers->get('referer'));
}
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/create/process/ports", name="link_create_process_step2")
*/
public function processPortsAction(Request $request, TranslatorInterface $translator)
{
// var_dump($request->request);
$em = $this->getDoctrine()->getManager();
$link = $this->getDoctrine()->getRepository('App\Entity\Link')->findOneById($request->request->get('link_id'));
$typeCable = $this->getDoctrine()->getRepository('App\Entity\TypeCable')->findOneById($request->request->get('typeCable'));
$portA2 = null;
$portA3 = null;
$portA4 = null;
$portA5 = null;
$portA6 = null;
$portA7 = null;
$portA8 = null;
$portA9 = null;
$portA10 = null;
$portA11 = null;
$portA12 = null;
$portB2 = null;
$portB3 = null;
$portB4 = null;
$portB5 = null;
$portB6 = null;
$portB7 = null;
$portB8 = null;
$portB9 = null;
$portB10 = null;
$portB11 = null;
$portB12 = null;
// get selected ports
$portA1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA_1'));
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointA_' . $i) != "") {
$temp = "portA" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA_' . $i));
}
}
// if ($request->request->get('pointA_2') != "") {
// $portA2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA_2'));
// }
$portB1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB_1'));
// if ($request->request->get('pointB_2') != "") {
// $portB2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB_2'));
// }
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointB_' . $i) != "") {
$temp = "portB" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB_' . $i));
}
}
//
//i beleive the LinkExtension entity structure has to be modified ??? extremity A/B can have 1 or more ports
//check if port is $nPort
$nPortsA = $portA1->getInterfaceSpecific()->getInterfaceGeneric()->getNPorts();
if ($nPortsA) {
$nPortsA = json_decode($nPortsA);
} else {
$nPortsA = [];
}
$nPortsB = $portB1->getInterfaceSpecific()->getInterfaceGeneric()->getNPorts();
if ($nPortsB) {
$nPortsB = json_decode($nPortsB);
} else {
$nPortsB = [];
}
$portsToCheck = array();
if (!in_array($portA1->getOrderNo(), $nPortsA)) {
$portsToCheck[] = $portA1;
}
if (!in_array($portB1->getOrderNo(), $nPortsB)) {
$portsToCheck[] = $portB1;
}
for ($i = 2; $i <= 12; $i++) {
$temp = "portA" . $i;
if ($$temp && !in_array($$temp->getOrderNo(), $nPortsA)) {
$portsToCheck[] = $$temp;
}
}
for ($i = 2; $i <= 12; $i++) {
$temp = "portB" . $i;
if ($$temp && !in_array($$temp->getOrderNo(), $nPortsB)) {
$portsToCheck[] = $$temp;
}
}
$redirect = false;
foreach ($portsToCheck as $value) {
if ($value->getLink()) {
$this->addFlash(
'error',
'l\'un des ports Choisis est déjà dans un link'
);
$redirect = true;
}
if ($redirect) {
break;
}
}
if ($redirect) {
return $this->redirectToRoute('link_view', array('id' => $link->getId()));
} else {
$extension = new LinkExtension();
$extA = new Extremity();
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(1);
$extensinOrder->setPort($portA1);
$extensinOrder->setExtremity($extA);
$portA1->addExtensionOrder($extensinOrder);
$extA->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portA1->setOrderNoExtension(1);
// $portA1->addExtremity($extA);
$portA1->setLink($link);
$portA1->setLinkExtension($extension);
$em->persist($portA1);
// $extA->addPort($portA1);
//generating portAStr
$portAOrderNos = array();
$portAOrderNos[0] = $portA1->getAlias() != "" ? $portA1->getAlias() : $portA1->getOrderNo();
for ($i = 2; $i <= 12; $i++) {
$temp = "portA" . $i;
if ($$temp) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber($i);
$extensinOrder->setPort($$temp);
$extensinOrder->setExtremity($extA);
$$temp->addExtensionOrder($extensinOrder);
$extA->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portA2->setOrderNoExtension(2);
// $portA2->addExtremity($extA);
$$temp->setLink($link);
$$temp->setLinkExtension($extension);
$em->persist($$temp);
// $extA->addPort($portA2);
$portAOrderNos[$i - 1] = $$temp->getAlias() != "" ? $$temp->getAlias() : $$temp->getOrderNo();
}
}
//generating portAStr
$portAOrderNos = array_unique($portAOrderNos);
ksort($portAOrderNos);
$extension->setPortAStr(implode("/", $portAOrderNos));
$em->persist($extA);
$extension->setExtremityA($extA);
// //calculating other values
// $eqA = $portA1->getInterfaceSpecific()->getEquipmentSpecificMpo() ? $portA1->getInterfaceSpecific()->getEquipmentSpecificMpo() : $portA1->getInterfaceSpecific()->getEquipmentSpecific();
// $intA = $portA1->getPortMpo() ? $portA1->getPortMpo()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber() : $portA1->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $rackA = $eqA->getRack();
// $roomA = $rackA->getRoom();
// $siteA = $roomA->getSite();
// //equipementA
// $equipementAStr = "";
// if($eqA->isModule()){
// $equipementAStr = $eqA->getParent().getEquipmentSpecificName() . " â•‘ " . $eqA->getEquipmentSpecificName();
// }
// elseif($eqA->isChassisModule()){
// $equipementAStr = $eqA->getChassisParent().getEquipmentSpecificName() . " â•‘ " . $eqA->getEquipmentSpecificName();
// }
// else{
// $equipementAStr = $eqA->getEquipmentSpecificName();
// }
// $link->setEquipementA($equipementAStr);
// $extension->setEquipementA($equipementAStr);
// //rackA
// $link->setArmoireA($rack->getTitle());
// $extension->setArmoireA($rack->getTitle());
// //roomA
// $link->setSalleA($room->getTitle());
// $extension->setSalleA($room->getTitle());
// //siteA
// $link->setSiteA($site->getTitle());
// $extension->setSiteA($site->getTitle());
// //interfaceA
// $extension->setInterfaceA($intA);
$extB = new Extremity();
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(1);
$extensinOrder->setPort($portB1);
$extensinOrder->setExtremity($extB);
$portB1->addExtensionOrder($extensinOrder);
$extB->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portB1->setOrderNoExtension(1);
// $portB1->addExtremity($extB);
$portB1->setLink($link);
$portB1->setLinkExtension($extension);
$em->persist($portB1);
// $extB->addPort($portB1);
for ($i = 2; $i <= 12; $i++) {
$temp = "portB" . $i;
if ($$temp) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber($i);
$extensinOrder->setPort($$temp);
$extensinOrder->setExtremity($extB);
$$temp->addExtensionOrder($extensinOrder);
$extB->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $$temp->setOrderNoExtension(2);
// $$temp->addExtremity($extB);
$$temp->setLink($link);
$$temp->setLinkExtension($extension);
$em->persist($$temp);
// $extB->addPort($portB2);
}
}
$em->persist($extB);
$extension->setExtremityB($extB);
// //calculating other values B
// $eqB = $portB1->getInterfaceSpecific()->getEquipmentSpecificMpo() ? $portB1->getInterfaceSpecific()->getEquipmentSpecificMpo() : $portB1->getInterfaceSpecific()->getEquipmentSpecific();
// $intB = $portB1->getPortMpo() ? $portB1->getPortMpo()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber() : $portB1->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $rackB = $eqB->getRack();
// $roomB = $rackB->getRoom();
// $siteB = $roomB->getSite();
// //equipementB
// $equipementBStr = "";
// if($eqB->isModule()){
// $equipementBStr = $eqB->getParent().getEquipmentSpecificName() . " â•‘ " . $eqB->getEquipmentSpecificName();
// }
// elseif($eqB->isChassisModule()){
// $equipementBStr = $eqB->getChassisParent().getEquipmentSpecificName() . " â•‘ " . $eqB->getEquipmentSpecificName();
// }
// else{
// $equipementBStr = $eqB->getEquipmentSpecificName();
// }
// $link->setEquipementB($equipementBStr);
// $extension->setEquipementB($equipementBStr);
// //rackB
// $link->setBrmoireB($rack->getTitle());
// $extension->setBrmoireB($rack->getTitle());
// //roomB
// $link->setSalleB($room->getTitle());
// $extension->setSalleB($room->getTitle());
// //siteB
// $link->setSiteB($site->getTitle());
// $extension->setSiteB($site->getTitle());
// //interfaceB
// $extension->setInterfaceB($intB);
$extension->setLink($link);
$extension->setTypeCable($typeCable);
$extension->setSequenceNo(1);
$em->persist($extension);
$em->flush();
// AFTER ACTION - REDIRECT
return $this->redirectToRoute('link_view', array('id' => $link->getId()));
}
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/create/process/first", name="add_first_process")
*/
public function processAddFirstAction(Request $request, TranslatorInterface $translator)
{
// var_dump($request->request);
$em = $this->getDoctrine()->getManager();
$link = $this->getDoctrine()->getRepository('App\Entity\Link')->findOneById($request->request->get('link_id'));
$typeCable = $this->getDoctrine()->getRepository('App\Entity\TypeCable')->findOneById($request->request->get('typeCable'));
$portA2 = null;
$portA3 = null;
$portA4 = null;
$portA5 = null;
$portA6 = null;
$portA7 = null;
$portA8 = null;
$portA9 = null;
$portA10 = null;
$portA11 = null;
$portA12 = null;
$portB2 = null;
$portB3 = null;
$portB4 = null;
$portB5 = null;
$portB6 = null;
$portB7 = null;
$portB8 = null;
$portB9 = null;
$portB10 = null;
$portB11 = null;
$portB12 = null;
// get selected ports
$portA1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA_1'));
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointA_' . $i) != "") {
$temp = "portA" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA_' . $i));
}
}
// if ($request->request->get('pointA_2') != "") {
// $portA2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA_2'));
// }
$portB1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB_1'));
// if ($request->request->get('pointB_2') != "") {
// $portB2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB_2'));
// }
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointB_' . $i) != "") {
$temp = "portB" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB_' . $i));
}
}
//
//i beleive the LinkExtension entity structure has to be modified ??? extremity A/B can have 1 or more ports
//check if port is $nPort
$nPortsA = $portA1->getInterfaceSpecific()->getInterfaceGeneric()->getNPorts();
if ($nPortsA) {
$nPortsA = json_decode($nPortsA);
} else {
$nPortsA = [];
}
$nPortsB = $portB1->getInterfaceSpecific()->getInterfaceGeneric()->getNPorts();
if ($nPortsB) {
$nPortsB = json_decode($nPortsB);
} else {
$nPortsB = [];
}
$portsToCheck = array();
if (!in_array($portA1->getOrderNo(), $nPortsA)) {
$portsToCheck[] = $portA1;
}
if (!in_array($portB1->getOrderNo(), $nPortsB)) {
$portsToCheck[] = $portB1;
}
for ($i = 2; $i <= 12; $i++) {
$temp = "portA" . $i;
if ($$temp && !in_array($$temp->getOrderNo(), $nPortsA)) {
$portsToCheck[] = $$temp;
}
}
for ($i = 2; $i <= 12; $i++) {
$temp = "portB" . $i;
if ($$temp && !in_array($$temp->getOrderNo(), $nPortsB)) {
$portsToCheck[] = $$temp;
}
}
$redirect = false;
foreach ($portsToCheck as $value) {
if ($value->getLink() && $value->getLink()->getId() != $link->getId()) {
$this->addFlash(
'error',
'l\'un des ports Choisis est déjà dans un link'
);
$redirect = true;
}
if ($redirect) {
break;
}
}
if ($redirect) {
return $this->redirectToRoute('link_view', array('id' => $link->getId()));
} else {
$extension = new LinkExtension();
$extA = new Extremity();
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(1);
$extensinOrder->setPort($portA1);
$extensinOrder->setExtremity($extA);
$portA1->addExtensionOrder($extensinOrder);
$extA->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portA1->setOrderNoExtension(1);
// $portA1->addExtremity($extA);
$portA1->setLink($link);
$portA1->setLinkExtension($extension);
$em->persist($portA1);
// $extA->addPort($portA1);
//generating portAStr
$portAOrderNos = array();
$portAOrderNos[0] = $portA1->getAlias() != "" ? $portA1->getAlias() : $portA1->getOrderNo();
for ($i = 2; $i <= 12; $i++) {
$temp = "portA" . $i;
if ($$temp) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber($i);
$extensinOrder->setPort($$temp);
$extensinOrder->setExtremity($extA);
$$temp->addExtensionOrder($extensinOrder);
$extA->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portA2->setOrderNoExtension(2);
// $portA2->addExtremity($extA);
$$temp->setLink($link);
$$temp->setLinkExtension($extension);
$em->persist($$temp);
// $extA->addPort($portA2);
$portAOrderNos[$i - 1] = $$temp->getAlias() != "" ? $$temp->getAlias() : $$temp->getOrderNo();
}
}
//generating portAStr
$portAOrderNos = array_unique($portAOrderNos);
ksort($portAOrderNos);
$extension->setPortAStr(implode("/", $portAOrderNos));
$em->persist($extA);
$extension->setExtremityA($extA);
// //calculating other values
// $eqA = $portA1->getInterfaceSpecific()->getEquipmentSpecificMpo() ? $portA1->getInterfaceSpecific()->getEquipmentSpecificMpo() : $portA1->getInterfaceSpecific()->getEquipmentSpecific();
// $intA = $portA1->getPortMpo() ? $portA1->getPortMpo()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber() : $portA1->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $rackA = $eqA->getRack();
// $roomA = $rackA->getRoom();
// $siteA = $roomA->getSite();
// //equipementA
// $equipementAStr = "";
// if($eqA->isModule()){
// $equipementAStr = $eqA->getParent().getEquipmentSpecificName() . " â•‘ " . $eqA->getEquipmentSpecificName();
// }
// elseif($eqA->isChassisModule()){
// $equipementAStr = $eqA->getChassisParent().getEquipmentSpecificName() . " â•‘ " . $eqA->getEquipmentSpecificName();
// }
// else{
// $equipementAStr = $eqA->getEquipmentSpecificName();
// }
// $link->setEquipementA($equipementAStr);
// $extension->setEquipementA($equipementAStr);
// //rackA
// $link->setArmoireA($rack->getTitle());
// $extension->setArmoireA($rack->getTitle());
// //roomA
// $link->setSalleA($room->getTitle());
// $extension->setSalleA($room->getTitle());
// //siteA
// $link->setSiteA($site->getTitle());
// $extension->setSiteA($site->getTitle());
// //interfaceA
// $extension->setInterfaceA($intA);
$extB = new Extremity();
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(1);
$extensinOrder->setPort($portB1);
$extensinOrder->setExtremity($extB);
$portB1->addExtensionOrder($extensinOrder);
$extB->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portB1->setOrderNoExtension(1);
// $portB1->addExtremity($extB);
$portB1->setLink($link);
$portB1->setLinkExtension($extension);
$em->persist($portB1);
// $extB->addPort($portB1);
for ($i = 2; $i <= 12; $i++) {
$temp = "portB" . $i;
if ($$temp) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber($i);
$extensinOrder->setPort($$temp);
$extensinOrder->setExtremity($extB);
$$temp->addExtensionOrder($extensinOrder);
$extB->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $$temp->setOrderNoExtension(2);
// $$temp->addExtremity($extB);
$$temp->setLink($link);
$$temp->setLinkExtension($extension);
$em->persist($$temp);
// $extB->addPort($portB2);
}
}
$em->persist($extB);
$extension->setExtremityB($extB);
// //calculating other values B
// $eqB = $portB1->getInterfaceSpecific()->getEquipmentSpecificMpo() ? $portB1->getInterfaceSpecific()->getEquipmentSpecificMpo() : $portB1->getInterfaceSpecific()->getEquipmentSpecific();
// $intB = $portB1->getPortMpo() ? $portB1->getPortMpo()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber() : $portB1->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $rackB = $eqB->getRack();
// $roomB = $rackB->getRoom();
// $siteB = $roomB->getSite();
// //equipementB
// $equipementBStr = "";
// if($eqB->isModule()){
// $equipementBStr = $eqB->getParent().getEquipmentSpecificName() . " â•‘ " . $eqB->getEquipmentSpecificName();
// }
// elseif($eqB->isChassisModule()){
// $equipementBStr = $eqB->getChassisParent().getEquipmentSpecificName() . " â•‘ " . $eqB->getEquipmentSpecificName();
// }
// else{
// $equipementBStr = $eqB->getEquipmentSpecificName();
// }
// $link->setEquipementB($equipementBStr);
// $extension->setEquipementB($equipementBStr);
// //rackB
// $link->setBrmoireB($rack->getTitle());
// $extension->setBrmoireB($rack->getTitle());
// //roomB
// $link->setSalleB($room->getTitle());
// $extension->setSalleB($room->getTitle());
// //siteB
// $link->setSiteB($site->getTitle());
// $extension->setSiteB($site->getTitle());
// //interfaceB
// $extension->setInterfaceB($intB);
$extension->setLink($link);
$extension->setTypeCable($typeCable);
$extension->setSequenceNo(1);
//update the other link extensions
$linkExtensions = $link->getLinkExtension();
foreach ($linkExtensions as $linkExtension) {
$linkExtension->setSequenceNo($linkExtension->getSequenceNo()+1);
$em->persist($linkExtension);
}
$em->persist($extension);
$em->flush();
// AFTER ACTION - REDIRECT
return $this->redirectToRoute('link_view', array('id' => $link->getId()));
}
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/extend/{id}/{typeExtension}/{extensionId}", name="link_extend")
*/
public function extendLinkAction($id, $typeExtension, $extensionId, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$link = $em->getRepository(Link::class)->find($id);
$lastExt = null;
$lastExt = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->find($extensionId);
$lastSeq = $lastExt->getSequenceNo();
switch ($typeExtension) {
// trunk
case 1:
// $lastInt = $lastExt->getExtremityB()->getExtensionOrder()[0]->getPort()->getPortMpo() ? $lastExt->getExtremityB()->getExtensionOrder()[0]->getPort()->getPortMpo()->getInterfaceSpecific() : $lastExt->getExtremityB()->getExtensionOrder()[0]->getPort()->getInterfaceSpecific();
$lastInt = $lastExt->getExtremityB()->getExtensionOrder()[0]->getPort()->getInterfaceSpecific();
$lastEq = $lastInt->getEquipmentSpecificMpo() ? $lastInt->getEquipmentSpecificMpo() : $lastInt->getEquipmentSpecific();
$trunks = [];
$portsA = [];
$portsB = [];
// find last extension(s) of link ??? many links have the same sequenceNos
$ext = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(['link' => $link, 'sequenceNo' => $lastSeq]);
//now ther is only one last extension
// var_dump($ext);
$portsAtmp = [];
$portsBtmp = [];
$portsAtmp1 = $ext->getExtremityA()->getExtensionOrder();
foreach ($portsAtmp1 as $value) {
$portsAtmp[] = $value->getPort();
}
$portsBtmp1 = $ext->getExtremityB()->getExtensionOrder();
foreach ($portsBtmp1 as $value) {
$portsBtmp[] = $value->getPort();
}
$tcfFA = null;
$tcfFB = null;
// var_dump($ext->getExtremityA());
foreach ($portsBtmp as $portBtmp) {
// var_dump($portBtmp->getId());
// get the trunk cable corresponds to the portA
// $tcfF = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portBtmp);
$tcfFA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portBtmp);
$tcfFB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($portBtmp);
//
// $tcfF = null;
// $tcfF = ($tcfFA) ? $tcfFA : $tcfFB;
if ($tcfFA) {
// var_dump("trunk cable b id: ".$tcfFB->getId());
$portBtcf = $tcfFA->getPortB();
// var_dump("trunk cable port b id: ".$portBtcf->getId());
foreach ($portsAtmp as $portAtmp) {
// var_dump($portAtmp->getId(), $portBtcf->getId());
if ($portBtcf != $portAtmp) {
$trunk = $tcfFA->getTrunk();
// var_dump("trunk id" . $trunk->getId());
if (!in_array($trunk, $trunks)) {
$trunk->direction = 'F';
$trunks[] = $trunk;
}
if (!in_array($portBtmp, $portsA)) {
$portsA[] = $portBtmp;
}
}
}
} elseif ($tcfFB) {
// var_dump("trunk cable b id: ".$tcfFB->getId());
$portAtcf = $tcfFB->getPortA();
// var_dump("trunk cable port b id: ".$portAtcf->getId());
foreach ($portsAtmp as $portAtmp) {
// var_dump($portAtmp->getId(), $portBtcf->getId());
if ($portAtcf != $portAtmp) {
$trunk = $tcfFB->getTrunk();
// var_dump("trunk id" . $trunk->getId());
if (!in_array($trunk, $trunks)) {
$trunk->direction = 'R';
$trunks[] = $trunk;
}
if (!in_array($portBtmp, $portsA)) {
$portsA[] = $portBtmp;
}
// if (!in_array($portAtcf, $portsB)) {
// $portsB[] = $portAtcf;
// }
}
}
}
// check trunk extensions first
$tExtR = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portBtmp);
// var_dump($tExtR);
if ($tExtR) {
$tcf = $tExtR->getTrunkCableFiber();
$trunk = $tExtR->getTrunkCableFiber()->getTrunk();
$seqNoTrunkExtension = $tExtR->getSequenceNo();
$lastSeqNumber = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->getTotalSequenceNo($tcf);
if ($seqNoTrunkExtension == $lastSeqNumber) {
$portAtcf = $tcf->getPortA();
foreach ($portsAtmp as $portAtmp) {
if ($portAtcf != $portAtmp) {
if (!in_array($trunk, $trunks)) {
$trunk->direction = 'R';
$trunks[] = $trunk;
}
// ports B in trunk become port A in link extension
if (!in_array($portBtmp, $portsA)) {
$portsA[] = $portBtmp;
}
}
}
}
// check not extended trunks
$tcfR = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($portBtmp);
if (!$tExtR && $tcfR) {
$portAtcf = $tcfR->getPortA();
// var_dump($portAtcf);
foreach ($portsAtmp as $portAtmp) {
if ($portAtcf != $portAtmp) {
// var_dump($portAtcf != $portAtmp);
$trunk = $tcfR->getTrunk();
if (!in_array($trunk, $trunks)) {
$trunk->direction = 'F';
$trunks[] = $trunk;
}
// ports B in trunk become port A in link extension
if (!in_array($portBtmp, $portsA)) {
$portsA[] = $portBtmp;
}
}
}
}
}
}
$trunk = null;
foreach ($trunks as $value) {
if ($ext->getTrunk()) {
if ($ext->getTrunk()->getId() != $value->getId()) {
$trunk = $value;
break;
}
} else {
$trunk = $value;
break;
}
}
if ($trunk) {
// match - trunk found
// forward direction
if ($trunk->direction == 'F') {
foreach ($portsA as $portA) {
$tcfs = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findBy(['trunk' => $trunk, 'portA' => $portA]);
if ($tcfs) {
// var_dump($tcfs);
foreach ($tcfs as $tcf) {
// check if extended
$isExtended = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['trunkCableFiber' => $tcf]);
if ($isExtended) {
$tcf = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->getLastSequenceExtension($tcf);
$portsB[] = $tcf->getPortB();
$opInt = $tcf->getPortB()->getInterfaceSpecific();
$opEq = $opInt->getEquipmentSpecificMpo() ? $opInt->getEquipmentSpecificMpo() : $opInt->getEquipmentSpecific();
} else {
$portsB[] = $tcf->getPortB();
$opInt = $tcf->getPortB()->getInterfaceSpecific();
$opEq = $opInt->getEquipmentSpecificMpo() ? $opInt->getEquipmentSpecificMpo() : $opInt->getEquipmentSpecific();
}
}
}
}
// var_dump($portsB);
// reverse direction
} else {
// we have portA for extension
foreach ($portsA as $portA) {
// check if in extension
$tExts = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findBy(['portB' => $portA]);
if ($tExts) {
foreach ($tExts as $tExt) {
$tcf = $tExt->getTrunkCableFiber();
$portsB[] = $tcf->getPortA();
$opInt = $tcf->getPortA()->getInterfaceSpecific();
$opEq = $opInt->getEquipmentSpecificMpo() ? $opInt->getEquipmentSpecificMpo() : $opInt->getEquipmentSpecific();
}
}
// find trunk fibers that ends with portA
$tcfs = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findBy(['trunk' => $trunk, 'portB' => $portA]);
if ($tcfs && !$tExts) {
// portsB in extension are reversed - portsA in trunk
foreach ($tcfs as $tcf) {
$portsB[] = $tcf->getPortA();
$opInt = $tcf->getPortA()->getInterfaceSpecific();
$opEq = $opInt->getEquipmentSpecificMpo() ? $opInt->getEquipmentSpecificMpo() : $opInt->getEquipmentSpecific();
}
}
}
}
return $this->render('link/extend_trunk_match.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Extend Link by Trunk'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> ' . $translator->trans('Extend by Trunk'),
'link' => $link,
'trunk' => $trunk,
'eqA' => $lastEq,
'intA' => $lastInt,
'portsA' => $portsA,
'eqB' => $opEq,
'intB' => $opInt,
'portsB' => $portsB,
'nextSequence' => $lastSeq+1
]);
} else {
// no match - find other trunks on equipment interface!
$trunks = array();
$ports = $lastInt->getPort();
foreach ($ports as $port) {
$tcf = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($port);
if ($tcf) {
$trunk = $tcf->getTrunk();
if ($ext->getTrunk()) {
if (!in_array($trunk, $trunks) && $ext->getTrunk()->getId() != $trunk->getId()) {
$trunk->direction = 'F';
$trunks[] = $trunk;
}
} else {
if (!in_array($trunk, $trunks)) {
$trunk->direction = 'F';
$trunks[] = $trunk;
}
}
}
$tcf = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($port);
if ($tcf) {
$trunk = $tcf->getTrunk();
if ($ext->getTrunk()) {
if (!in_array($trunk, $trunks) && $ext->getTrunk()->getId() != $trunk->getId()) {
$trunk->direction = 'R';
$trunks[] = $trunk;
}
} else {
if (!in_array($trunk, $trunks)) {
$trunk->direction = 'R';
$trunks[] = $trunk;
}
}
}
$tExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['portB' => $port]);
if ($tExt) {
$tcf = $tExt->getTrunkCableFiber();
$trunk = $tcf->getTrunk();
if ($ext->getTrunk()) {
if (!in_array($trunk, $trunks) && $ext->getTrunk()->getId() != $trunk->getId()) {
$trunk->direction = 'R';
$trunks[] = $trunk;
}
} else {
if (!in_array($trunk, $trunks)) {
$trunk->direction = 'R';
$trunks[] = $trunk;
}
}
}
}
return $this->render('link/extend_trunk.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Extend Link by Trunk'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> ' . $translator->trans('Extend by Trunk'),
'link' => $link,
'eqLast' => $lastEq,
'trunks' => $trunks,
'nextSequence' => $lastSeq+1
]);
}
break;
// preassembled
case 2:
$sites = $this->getDoctrine()->getRepository('App\Entity\Site')->findBy([], ['title' => 'ASC']);
$eqGeneric = $this->getDoctrine()->getRepository('App\Entity\EquipmentGeneric')->findBy([], ['title' => 'ASC']);
$rackFaces = $this->getDoctrine()->getRepository('App\Entity\RackFace')->findAll();
$typeCable = $this->getDoctrine()->getRepository('App\Entity\TypeCable')->findAll();
// $lastExt = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(['link' => $link], ['sequenceNo' => 'DESC']);
// $lastSeq = $lastExt->getSequenceNo();
// $lastInt = $lastExt->getExtremityB()->getExtensionOrder()[0]->getPort()->getInterfaceSpecific();
$lastInt = $lastExt->getExtremityB()->getExtensionOrder()[0]->getPort()->getPortMpo() ? $lastExt->getExtremityB()->getExtensionOrder()[0]->getPort()->getPortMpo()->getInterfaceSpecific() : $lastExt->getExtremityB()->getExtensionOrder()[0]->getPort()->getInterfaceSpecific();
// $lastInt = $lastExt->getPortB()->getInterfaceSpecific();
$lastEq = $lastInt->getEquipmentSpecificMpo() ? $lastInt->getEquipmentSpecificMpo() : $lastInt->getEquipmentSpecific();
// $lastEq = $lastExt->getPortB()->getInterfaceSpecific()->getEquipmentSpecific();
$lastPort = [];
$lastPortTemp = $lastExt->getExtremityB()->getExtensionOrder();
foreach ($lastPortTemp as $value) {
$lastPort[] = $value->getPort();
}
// $lastPort = $lastExt->getExtremityB()->getPorts();
// $lastPort = $lastExt->getPortB();
$lastIntType = $lastInt->getInterfaceGeneric()->getTypeInterconnection()->getId();
if ($lastIntType != 1) { // 1-n // n-n
return $this->render('link/extend_cable.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Extend Link by Preassembled Connection'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> ' . $translator->trans('Extend by Preassembled Connection'),
'link' => $link,
'sites' => $sites,
'rackFaces' => $rackFaces,
'typeCable' => $typeCable,
'eqGeneric' => $eqGeneric,
'eqLast' => $lastEq,
'nextSequence' => $lastSeq+1
]);
} else {
return $this->render('link/extend_cable_1-1.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Extend Link by Preassembled Connection'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> ' . $translator->trans('Extend by Preassembled Connection'),
'link' => $link,
'sites' => $sites,
'rackFaces' => $rackFaces,
'typeCable' => $typeCable,
'eqGeneric' => $eqGeneric,
'eqLast' => $lastEq,
'intLast' => $lastInt,
'portLast' => $lastPort,
'nextSequence' => $lastSeq+1
]);
}
break;
}
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/extend", name="link_process_extend")
*/
public function processExtensionsAction(Request $request, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$link = $this->getDoctrine()->getRepository('App\Entity\Link')->findOneById($request->request->get('link_id'));
$typeExtension = $request->request->get('typeExtension');
// $sequenceNumber = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->getNextSequenceNo($link);
$sequenceNumber = $request->request->get('nextSequence');
$nbExtensions = count($link->getLinkExtension());
$lastExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $sequenceNumber - 1]);
$nextExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $sequenceNumber + 1]);
$isIntermediateExtension = $sequenceNumber <= $nbExtensions;
//sq=2, nbExt>=2; after the addition, nbExt=3,
//we have to modify extension number of all the extensions starting from 2
if ($isIntermediateExtension) {
foreach($link->getLinkExtension() as $ex){
if($ex->getSequenceNo() >= $sequenceNumber){
$ex->setSequenceNo($ex->getSequenceNo()+1);
$em->persist($ex);
}
}
}
$ext = new LinkExtension();
$portsB = [];//for validation
switch ($typeExtension) {
// trunk
case 1:
$trunk = $this->getDoctrine()->getRepository('App\Entity\Trunk')->findOneById($request->request->get('trunk_id'));
$portsA = array();
$portA2 = null;
$portA3 = null;
$portA4 = null;
$portA5 = null;
$portA6 = null;
$portA7 = null;
$portA8 = null;
$portA9 = null;
$portA10 = null;
$portA11 = null;
$portA12 = null;
$portB2 = null;
$portB3 = null;
$portB4 = null;
$portB5 = null;
$portB6 = null;
$portB7 = null;
$portB8 = null;
$portB9 = null;
$portB10 = null;
$portB11 = null;
$portB12 = null;
// get selected ports
$portA1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA1'));
//$portsA["portA1"] = $portA1;
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointA' . $i) != "") {
$temp = "portA" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA' . $i));
}
}
// if ($request->request->get('pointA2') != "") {
// $portA2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA2'));
// }
$portB1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB1'));
$portsB["portB1"] = $portB1;
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointB' . $i) != "") {
$temp = "portB" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB' . $i));
$portsB["portB" . $i] = $$temp;
}
}
// if ($request->request->get('pointB2') != "") {
// $portB2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB2'));
// }
//
//i beleive the LinkExtension entity structure has to be modified ??? extremity A/B can have 1 or more ports
// // get selected ports
// $portsAselected = $request->request->get('pointA');
// $portsAids = explode('|',substr($portsAselected, 0, -1));
//
// foreach ($portsAids as $id){
// $portsA[] = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($id);
// }
//
// $portsBselected = $request->request->get('pointB');
// $portsBids = explode('|',substr($portsBselected, 0, -1));
//
// foreach ($portsBids as $id){
// $portsB[] = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($id);
// }
// $iterations = [];
//
// // new iterations
// $i = count($portsA);
// $j = count($portsB);
//
// if ($i == $j){ // equal A = B
// for ($k=0; $k<$i; $k++){
// $iterations[] = array($portsA[$k],$portsB[$k]);
// }
// }
//
// if ($i < $j){ // A < B
// for ($k=0; $k<$i; $k++){
// $iterations[] = array($portsA[$k],$portsB[$k]);
// }
// $lastA = end($portsA);
// for ($m=$k; $m<$j; $m++){
// $iterations[] = array($lastA,$portsB[$m]);
// }
// }
//
// if ($i > $j){ // B < A
// for ($k=0; $k<$j; $k++){
// $iterations[] = array($portsA[$k],$portsB[$k]);
// }
// $lastB = end($portsB);
// for ($m=$k; $m<$i; $m++){
// $iterations[] = array($portsA[$m],$lastB);
// }
//
// }
// iterations option deprecated
/*foreach($portsA as $portA){
foreach ($portsB as $portB){
$iterations[] = array($portA, $portB);
}
}*/
// foreach ($iterations as $it){
//
// $ext = new LinkExtension();
//
// $ext->setLink($link);
// $ext->setTrunk($trunk);
// $ext->setPortA($it[0]);
// $ext->setPortB($it[1]);
// $ext->setSequenceNo($sequenceNumber);
//
// $em->persist($ext);
// $em->flush();
//
// }
$extA = new Extremity();
for ($i = 1; $i <= 12; $i++) {
$temp = "portA" . $i;
if ($$temp) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber($i);
$extensinOrder->setPort($$temp);
$extensinOrder->setExtremity($extA);
$$temp->addExtensionOrder($extensinOrder);
$extA->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portA1->setOrderNoExtension(1);
// $portA1->addExtremity($extA);
$$temp->setLink($link);
$$temp->setLinkExtension($ext);
$em->persist($$temp);
$portsA[] = $$temp;
}
}
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(1);
// $extensinOrder->setPort($portA1);
// $extensinOrder->setExtremity($extA);
// $portA1->addExtensionOrder($extensinOrder);
// $extA->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portA1->setOrderNoExtension(1);
// // $portA1->addExtremity($extA);
// $portA1->setLink($link);
// $portA1->setLinkExtension($ext);
// $em->persist($portA1);
// // $extA->addPort($portA1);
// $portsA[] = $portA1;
// if ($portA2) {
//
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(2);
// $extensinOrder->setPort($portA2);
// $extensinOrder->setExtremity($extA);
// $portA2->addExtensionOrder($extensinOrder);
// $extA->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portA2->setOrderNoExtension(2);
// // $portA2->addExtremity($extA);
// $portA2->setLink($link);
// $portA2->setLinkExtension($ext);
// $em->persist($portA2);
// // $extA->addPort($portA2);
// $portsA[] = $portA2;
// }
// getOtherPorts used by the link
$ports = $this->getPorts($trunk, $portsA, $link->getTypeLink());
foreach ($ports as $port) {
$port->setLink($link);
$port->setLinkExtension($ext);
$em->persist($port);
}
$em->persist($extA);
$ext->setExtremityA($extA);
$extB = new Extremity();
for ($i = 1; $i <= 12; $i++) {
$temp = "portB" . $i;
if ($$temp) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber($i);
$extensinOrder->setPort($$temp);
$extensinOrder->setExtremity($extB);
$$temp->addExtensionOrder($extensinOrder);
$extB->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
$$temp->setLink($link);
$$temp->setLinkExtension($ext);
$em->persist($$temp);
}
}
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(1);
// $extensinOrder->setPort($portB1);
// $extensinOrder->setExtremity($extB);
// $portB1->addExtensionOrder($extensinOrder);
// $extB->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portB1->setOrderNoExtension(1);
// // $portB1->addExtremity($extB);
// $portB1->setLink($link);
// $portB1->setLinkExtension($ext);
// $em->persist($portB1);
// // $extB->addPort($portB1);
// if ($portB2) {
//
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(2);
// $extensinOrder->setPort($portB2);
// $extensinOrder->setExtremity($extB);
// $portB2->addExtensionOrder($extensinOrder);
// $extB->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portB2->setOrderNoExtension(2);
// // $portB2->addExtremity($extB);
// $portB2->setLink($link);
// $portB2->setLinkExtension($ext);
// $em->persist($portB2);
// // $extB->addPort($portB2);
// }
$em->persist($extB);
$ext->setExtremityB($extB);
$ext->setTrunk($trunk);
$ext->setLink($link);
$ext->setSequenceNo($sequenceNumber);
// $lastExt = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link"=>$link, "sequenceNo"=>$sequenceNumber-1]);
// $lastExt->setIsValid(true);
// $lastExt->setError(null);
// $em->persist($lastExt);
$em->persist($ext);
$em->flush();
// $extremityA = new Extremity();
// foreach ($portsA as $port) {
// $extremityA->addPort($port);
// $port->addExtremity($extremityA);
// $em->persist($port);
// }
//
// $em->persist($extremityA);
// $extremityB = new Extremity();
// foreach ($portsB as $port) {
// $extremityB->addPort($port);
// $port->addExtremity($extremityB);
// $em->persist($port);
// }
//
//
// $em->persist($extremityB);
// $ext->setTrunk($trunk);
// $ext->setLink($link);
// $ext->setExtremityA($extremityA);
// $ext->setExtremityB($extremityB);
// // $ext->setPortA($it[0]);
// // $ext->setPortB($it[1]);
// // $ext->setTypeCable($typeCable);
// $ext->setSequenceNo($sequenceNumber);
//
// $em->persist($ext);
// $em->flush();
break;
// preassembled
case 2:
$redirect = false;
$typeCable = $this->getDoctrine()->getRepository('App\Entity\TypeCable')->findOneById($request->request->get('typeCable'));
$portA2 = null;
$portA3 = null;
$portA4 = null;
$portA5 = null;
$portA6 = null;
$portA7 = null;
$portA8 = null;
$portA9 = null;
$portA10 = null;
$portA11 = null;
$portA12 = null;
$portB2 = null;
$portB3 = null;
$portB4 = null;
$portB5 = null;
$portB6 = null;
$portB7 = null;
$portB8 = null;
$portB9 = null;
$portB10 = null;
$portB11 = null;
$portB12 = null;
// get selected ports
$portA1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA1'));
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointA' . $i) != "") {
$temp = "portA" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA' . $i));
}
}
// if ($request->request->get('pointA2') != "") {
// $portA2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA2'));
// }
$portB1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB1'));
$portsB["portB1"] = $portB1;
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointB' . $i) != "") {
$temp = "portB" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB' . $i));
$portsB["portB" . $i] = $$temp;
}
}
// $portA1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA1'));
// if ($request->request->get('pointA2') != "") {
// $portA2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA2'));
// }
// $portB1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB1'));
// if ($request->request->get('pointB2') != "") {
// $portB2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB2'));
// }
$nPortsA = $portA1->getInterfaceSpecific()->getInterfaceGeneric()->getNPorts();
if ($nPortsA) {
$nPortsA = json_decode($nPortsA);
} else {
$nPortsA = [];
}
// $nPortsB = $portB1->getInterfaceSpecific()->getInterfaceGeneric()->getNPorts();
// if ($nPortsB){
// $nPortsB = json_decode($nPortsB);
// } else {
// $nPortsB = [];
// }
$portsAToCheck = array();
// $portsBToCheck = array();
if (!in_array($portA1->getOrderNo(), $nPortsA)) {
$portsAToCheck[] = $portA1;
}
// if (!in_array($portB1->getOrderNo(), $nPortsB)){
// $portsBToCheck[] = $portB1;
// }
for ($i = 2; $i <= 12; $i++) {
$temp = "portA" . $i;
if ($$temp && !in_array($$temp->getOrderNo(), $nPortsA)) {
$portsToCheck[] = $$temp;
}
}
// if ($portA2 && !in_array($portA2->getOrderNo(), $nPortsA)){
// $portsAToCheck[] = $portA2;
// }
// if ($portB2 && !in_array($portB2->getOrderNo(), $nPortsB)){
// $portsBToCheck[] = $portB2;
// }
$lastLinkExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $sequenceNumber - 1]);
foreach ($portsAToCheck as $value) {
if ($value->getLink() && $value->getLink()->getId() != $link->getId()) {
$this->addFlash(
'error',
'l\'un des ports Choisis est déjà dans un link'
);
$redirect = true;
} elseif ($value->getLinkExtension() && $value->getLinkExtension()->getId() != $lastLinkExtension->getId()) {
$this->addFlash(
'error',
'l\'un des ports Choisis est déjà dans un link'
);
$redirect = true;
}
if ($redirect) {
break;
}
}
if ($redirect) {
return $this->redirectToRoute('link_view', array('id' => $link->getId()));
}
// foreach ($portsBToCheck as $value) {
// if ($value->getLink()) {
// $this->addFlash(
// 'error',
// 'l\'un des ports Choisis est déjà dans un link'
// );
// $redirect = true;
// }
// if ($redirect) {
// break;
// }
// }
// if ($redirect) {
// return $this->redirectToRoute('link_view', array('id' => $link->getId()));
// }
// // get selected ports
// $portsAselected = $request->request->get('pointA');
// $portsAids = explode('|',substr($portsAselected, 0, -1));
//
// foreach ($portsAids as $id){
// $portsA[] = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($id);
// }
//
// $portsBselected = $request->request->get('pointB');
// $portsBids = explode('|',substr($portsBselected, 0, -1));
//
// foreach ($portsBids as $id){
// $portsB[] = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($id);
// }
// $iterations = [];
// new iterations
// $i = count($portsA);
// $j = count($portsB);
//
// if ($i == $j){ // equal A = B
// for ($k=0; $k<$i; $k++){
// $iterations[] = array($portsA[$k],$portsB[$k]);
// }
// }
//
// if ($i < $j){ // A < B
// for ($k=0; $k<$i; $k++){
// $iterations[] = array($portsA[$k],$portsB[$k]);
// }
// $lastA = end($portsA);
// for ($m=$k; $m<$j; $m++){
// $iterations[] = array($lastA,$portsB[$m]);
// }
// }
//
// if ($i > $j){ // B < A
// for ($k=0; $k<$j; $k++){
// $iterations[] = array($portsA[$k],$portsB[$k]);
// }
// $lastB = end($portsB);
// for ($m=$k; $m<$i; $m++){
// $iterations[] = array($portsA[$m],$lastB);
// }
//
// }
/*foreach($portsA as $portA){
foreach ($portsB as $portB){
$iterations[] = array($portA, $portB);
}
}*/
// foreach ($iterations as $it){
//
// $ext = new LinkExtension();
//
// $ext->setLink($link);
// $ext->setPortA($it[0]);
// $ext->setPortB($it[1]);
// $ext->setTypeCable($typeCable);
// $ext->setSequenceNo($sequenceNumber);
//
// $em->persist($ext);
// $em->flush();
//
// }
// $ext = new LinkExtension();
$extA = new Extremity();
for ($i = 1; $i <= 12; $i++) {
$temp = "portA" . $i;
if ($$temp) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber($i);
$extensinOrder->setPort($$temp);
$extensinOrder->setExtremity($extA);
$$temp->addExtensionOrder($extensinOrder);
$extA->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portA1->setOrderNoExtension(1);
// $portA1->addExtremity($extA);
$$temp->setLink($link);
$$temp->setLinkExtension($ext);
$em->persist($$temp);
}
}
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(1);
// $extensinOrder->setPort($portA1);
// $extensinOrder->setExtremity($extA);
// $portA1->addExtensionOrder($extensinOrder);
// $extA->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portA1->setOrderNoExtension(1);
// // $portA1->addExtremity($extA);
// $portA1->setLink($link);
// $portA1->setLinkExtension($ext);
//
// $em->persist($portA1);
// // $extA->addPort($portA1);
//
// if ($portA2) {
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(2);
// $extensinOrder->setPort($portA2);
// $extensinOrder->setExtremity($extA);
// $portA2->addExtensionOrder($extensinOrder);
// $extA->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portA2->setOrderNoExtension(2);
// // $portA2->addExtremity($extA);
// $portA2->setLink($link);
// $portA2->setLinkExtension($ext);
// $em->persist($portA2);
// // $extA->addPort($portA2);
// }
$em->persist($extA);
$ext->setExtremityA($extA);
$extB = new Extremity();
for ($i = 1; $i <= 12; $i++) {
$temp = "portB" . $i;
if ($$temp) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber($i);
$extensinOrder->setPort($$temp);
$extensinOrder->setExtremity($extB);
$$temp->addExtensionOrder($extensinOrder);
$extB->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
$$temp->setLink($link);
$$temp->setLinkExtension($ext);
$em->persist($$temp);
}
}
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(1);
// $extensinOrder->setPort($portB1);
// $extensinOrder->setExtremity($extB);
// $portB1->addExtensionOrder($extensinOrder);
// $extB->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portB1->setOrderNoExtension(1);
// // $portB1->addExtremity($extB);
// $portB1->setLink($link);
// $portB1->setLinkExtension($ext);
// $em->persist($portB1);
// // $extB->addPort($portB1);
// if ($portB2) {
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(2);
// $extensinOrder->setPort($portB2);
// $extensinOrder->setExtremity($extB);
// $portB2->addExtensionOrder($extensinOrder);
// $extB->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portB2->setOrderNoExtension(2);
// // $portB2->addExtremity($extB);
// $portB2->setLink($link);
// $portB2->setLinkExtension($ext);
// $em->persist($portB2);
// // $extB->addPort($portB2);
// }
$em->persist($extB);
$ext->setExtremityB($extB);
$ext->setLink($link);
$ext->setTypeCable($typeCable);
$ext->setSequenceNo($sequenceNumber);
// $lastExt = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link"=>$link, "sequenceNo"=>$sequenceNumber-1]);
// $lastExt->setIsValid(true);
// $lastExt->setError(null);
// $em->persist($lastExt);
$em->persist($ext);
$em->flush();
// $ext = new LinkExtension();
// $extremityA = new Extremity();
// foreach ($portsA as $port) {
// $extremityA->addPort($port);
// $port->addExtremity($extremityA);
// $em->persist($port);
// }
//
// $em->persist($extremityA);
// $extremityB = new Extremity();
// foreach ($portsB as $port) {
// $extremityB->addPort($port);
// $port->addExtremity($extremityB);
// $em->persist($port);
// }
//
//
// $em->persist($extremityB);
// $ext->setTrunk($trunk);
// $ext->setLink($link);
// $ext->setExtremityA($extremityA);
// $ext->setExtremityB($extremityB);
// // $ext->setPortA($it[0]);
// // $ext->setPortB($it[1]);
// $ext->setTypeCable($typeCable);
// $ext->setSequenceNo($sequenceNumber);
//
// $em->persist($ext);
// $em->flush();
break;
}
if($isIntermediateExtension){
LinkController::validateNextExtension($em, $link, $ext, $portsB);
}
$lastExtension->setIsValid(true);
$lastExtension->setError(null);
$em->persist($lastExtension);
$em->flush();
// redirect to link view
return $this->redirectToRoute('link_view', array('id' => $link->getId()));
}
/**
* @Route("/link/list", name="link_list")
*/
public function listAction(Request $request, TranslatorInterface $translator)
{
// $cache = new FilesystemAdapter();
// $linkList = $cache->getItem('pagerfanta.list.link"');
// $linkList->expiresAfter(1);
$links = null;
// if (!$linkList->isHit()) {
$links = $this->getDoctrine()->getRepository('App\Entity\Link')->findAll();
foreach ($links as $link) {
$extensions = $link->getLinkExtension();
$link->totalExts=0;
if (!($extensions->isEmpty())) {
$firstExt = $extensions[0];
// var_dump($firstExt->getSequenceNo());
$portsA = [];
$portAOrderNos = array();
$portsATemp = $firstExt->getExtremityA()->getExtensionOrder();
foreach ($portsATemp as $value) {
$portsA[] = $value->getPort();
// $tempMpo = $value->getPort()->getPortMpo() ? $value->getPort()->getPortMpo()->getAlias() ? $value->getPort()->getPortMpo()->getAlias() . "|" : $value->getPort()->getPortMpo()->getOrderNo() . "|" : "";
$portAOrderNos[$value->getOrderNumber() - 1] = $value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsA = $firstExt->getExtremityA()->getPorts();
$eqA = $portsA[0]->getInterfaceSpecific()->getEquipmentSpecificMpo() ? $portsA[0]->getInterfaceSpecific()->getEquipmentSpecificMpo() : $portsA[0]->getInterfaceSpecific()->getEquipmentSpecific();
$intA = $portsA[0]->getPortMpo() ? $portsA[0]->getPortMpo()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber() : $portsA[0]->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
$link->eqA = $eqA;
$link->intA = $intA;
// $portAOrderNos = array();
// foreach ($portsA as $portA) {
// $portAOrderNos[$portA->getOrderNoExtension()-1] = $portA->getOrderNo();
// }
$portAOrderNos = array_unique($portAOrderNos);
ksort($portAOrderNos);
$link->portA = implode("/", $portAOrderNos);
// $eqB = $firstExt->getExtremityA()->getExtensionOrder()[0]->getPort()->getInterfaceSpecific()->getEquipmentSpecific();
$portBOrderNos = array();
$lastExt = $extensions[count($extensions) - 1];
$portsB = [];
$portsBTemp = $lastExt->getExtremityB()->getExtensionOrder();
foreach ($portsBTemp as $value) {
$portsB[] = $value->getPort();
$portBOrderNos[$value->getOrderNumber() - 1] = $value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsB = $extension->getExtremityB()->getPorts();
if (count($portsB) > 0) {
$eqB = $portsB[0]->getInterfaceSpecific()->getEquipmentSpecificMpo() ? $portsB[0]->getInterfaceSpecific()->getEquipmentSpecificMpo() : $portsB[0]->getInterfaceSpecific()->getEquipmentSpecific();
$intB = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber() : $portsB[0]->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
}
$link->eqB = $eqB;
$link->intB = $intB;
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$link->portB = implode("/", $portBOrderNos);
$link->totalExts = count($link->getLinkExtension());
}
}
// $linkList->expiresAfter(1);
// $cache->save($linkList->set($links));
// }
// else {
// $links = $linkList->get();
// // var_dump($links);
// }
// var_dump($links);
//pagerfanta starts
// $adapter = new ArrayAdapter($links);
// $pagerfanta = new Pagerfanta($adapter);
// $pageLength = $request->query->get("pageLength", $this->getParameter("link.maxPerPage"));
// if ($pageLength == "Tout") {
// $pagerfanta->setMaxPerPage(count($links)); // 10 by default
// }
// else {
// $pagerfanta->setMaxPerPage($pageLength); // 10 by default
// }
// // $this->container->setParameter("link.maxPerPage", $pageLength);
// $page = $request->query->get("page", 1);
// $pagerfanta->setCurrentPage($page);
//pagerfanta ends
// $maxPerPage = $pagerfanta->getMaxPerPage();
// $pagerfanta->setCurrentPage($currentPage); // 1 by default
// $currentPage = $pagerfanta->getCurrentPage();
// $nbResults = $pagerfanta->getNbResults();
// $currentPageResults = $pagerfanta->getCurrentPageResults();
// var_dump($nbResults);
// $pagerfanta->getNbPages();
// $pagerfanta->haveToPaginate(); // whether the number of results is higher than the max per page
//
// $pagerfanta->hasPreviousPage();
// $pagerfanta->getPreviousPage();
// $pagerfanta->hasNextPage();
// $pagerfanta->getNextPage();
// $pagerfanta->getCurrentPageOffsetStart();
// $pagerfanta->getCurrentPageOffsetEnd();
return $this->render('link/list.html.twig', [
'action' => 'list',
'page_title' => $translator->trans('Links'),
'list' => $links,
// 'my_pager' => $pagerfanta,
// 'pageLength' => $pageLength,
]);
}
/**
* @Route("/link/view/{id}", name="link_view")
*/
public function viewAction($id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$link = $em->getRepository(Link::class)->find($id);
$typeUsage = $this->getDoctrine()->getRepository('App\Entity\TypeUsage')->findAll();
$typeLink = $this->getDoctrine()->getRepository('App\Entity\TypeLink')->findAll();
$linkValidationList = '';
// $validationPorts = [];
//
// $linkValidations = $em->getRepository(LinkValidation::class)->findBy(['link' => $link]);
// if ($linkValidations){
//
// $linkValidationList = [];
//
// foreach ($linkValidations as $linkValidation){
//
// $linkValidationList[] = array('trunk_id' => $linkValidation->getTrunk()->getId(), 'trunkID' => $linkValidation->getTrunk()->getTrunkID());
// $validationPorts[] = $linkValidation->getPort();
//
// }
//
// }
// $linkExtensions = $link->getLinkExtension();
//to be modified
// foreach ($linkExtensions as $linkExtension){
//
// $portsA = $linkExtension->getExtremityA()->getPorts();
// $portsB = $linkExtension->getExtremityB()->getPorts();
// foreach ($portsA as $portA) {
// if (in_array($portA, $validationPorts)){
//
// $linkExtension->toValidate = true;
//
// } else {
//
// $linkExtension->toValidate = false;
//
// }
//
//
// }
// foreach ($portsB as $portB) {
// if (in_array($portB, $validationPorts)){
//
// $linkExtension->toValidate = true;
//
// } else {
//
// $linkExtension->toValidate = false;
//
// }
// }
//
//
//
// }
// var_dump($link->getLinkExtension()[0]->getExtremityA());
return $this->render('link/list_details.html.twig', [
'action' => 'list',
'page_title' => $translator->trans('Link') . ' ' . $link->getLinkID(),
'link' => $link,
'typeUsage' => $typeUsage,
'typeLink' => $typeLink,
'linkValidationList' => $linkValidationList
]);
}
/**
* @Route("/link/duplicate/{id}", name="link_duplicate")
*/
public function duplicateAction($id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$link = $em->getRepository(Link::class)->find($id);
$typeUsage = $this->getDoctrine()->getRepository('App\Entity\TypeUsage')->findAll();
$typeLink = $this->getDoctrine()->getRepository('App\Entity\TypeLink')->findAll();
$linkID = $this->getDoctrine()->getRepository('App\Entity\Link')->getNewId();
$extensions = [];
$linkExtensions = $link->getLinkExtension();
$e = 1;
$t = 0;
$tsn = 0;
foreach ($linkExtensions as $linkExtension) {
$portA = $linkExtension->getExtremityA()->getExtensionOrder()[0]->getPort();
$portB = $linkExtension->getExtremityB()->getExtensionOrder()[0]->getPort();
// $portA = $linkExtension->getPortA();
// $portB = $linkExtension->getPortB();
$trunk = $linkExtension->getTrunk();
$typeCable = $linkExtension->getTypeCable();
if ($trunk) {
if ($linkExtension->getSequenceNo() != $tsn) {
$t = $t + 1;
$tsn = $linkExtension->getSequenceNo();
}
$extension['connection'] = $trunk->getTrunkID();
$extension['isTrunk'] = "true";
} else {
$e = $linkExtension->getSequenceNo() - $t;
if ($e > 1) {
$extension['connection'] = "E" . ($e - 1);
} else {
$extension['connection'] = "";
}
$extension['isTrunk'] = "false";
}
$interfaceA = $portA->getInterfaceSpecific();
$equipmentA = $interfaceA->getEquipmentSpecificMpo() ? $interfaceA->getEquipmentSpecificMpo() : $interfaceA->getEquipmentSpecific();
$extension['siteA'] = $equipmentA->getRack()->getRoom()->getSite()->getTitle();
$extension['roomA'] = $equipmentA->getRack()->getRoom()->getTitle();
$extension['rackA'] = $equipmentA->getRack()->getTitle();
$extension['equipmentA'] = "";
if ($equipmentA->getParent()) {
$extension['equipmentA'] = $equipmentA->getParent()->getEquipmentSpecificName() . " â•‘ " . $equipmentA->getEquipmentSpecificName();
} elseif ($equipmentA->getChassisParent()) {
$extension['equipmentA'] = $equipmentA->getChassisParent()->getEquipmentSpecificName() . " â•‘ " . $equipmentA->getEquipmentSpecificName();
} else {
$extension['equipmentA'] = $equipmentA->getEquipmentSpecificName();
}
$extension['interfaceA'] = $portA->getPortMpo() ? $portA->getPortMpo()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber() : $portA->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
$extension['typeLinkA'] = $portA->getInterfaceSpecific()->getInterfaceGeneric()->getTypeLink()->getTitle();
$extension['typeInterConnectionA'] = $portA->getInterfaceSpecific()->getInterfaceGeneric()->getTypeInterconnection()->getTitle();
$portsA = [];
$ports = $interfaceA->getPort();
$nPorts = $interfaceA->getInterfaceGeneric()->getNPorts();
if ($nPorts) {
$nPorts = json_decode($nPorts);
} else {
$nPorts = array();
}
foreach ($ports as $port) {
$used = 0;
// if ($trunk) {
// $tcfsA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($port);
// $tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($port);
// $usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($port);
// if (!$tcfsA && !$tcfsB && !$usedExt) {
// $used = 1;
// }
// elseif (in_array($port->getOrderNo(), $nPorts)){
// $used = 0;
// }
// else {
// $tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($port);
//
// if ($tcfsB && count($tcfsB->getExtensions()) > 0) {
// $used = 1;
// }
// $usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($port);
//
// if ($usedExt) {
// $tcf = $usedExt->getTrunkCableFiber();
// $len = count($tcf->getExtensions());
// if ($len != $usedExt->getSequenceNo()) {
// $used = 1;
// }
// }
// if (count($port->getExtensionOrder()) > 0) {
// $used = 1;
// }
// }
// }
// else {
// if (in_array($port->getOrderNo(), $nPorts)){
// $used = 0;
// }
// else {
// $tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($port);
//
// if ($tcfsB && count($tcfsB->getExtensions()) > 0) {
// $used = 1;
// }
// $usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($port);
//
// if ($usedExt) {
// $tcf = $usedExt->getTrunkCableFiber();
// $len = count($tcf->getExtensions());
// if ($len != $usedExt->getSequenceNo()) {
// $used = 1;
// }
// }
// if (count($port->getExtensionOrder()) > 0) {
// $used = 1;
// }
// }
// }
if (in_array($port->getOrderNo(), $nPorts)) {
$used = 0;
} else {
$tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($port);
if ($tcfsB && count($tcfsB->getExtensions()) > 0) {
$used = 1;
}
$usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($port);
if ($usedExt) {
$tcf = $usedExt->getTrunkCableFiber();
$len = count($tcf->getExtensions());
if ($len != $usedExt->getSequenceNo()) {
$used = 1;
}
}
if (count($port->getExtensionOrder()) > 0) {
$used = 1;
}
}
if ($trunk) {
$tcfsA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(["portA" => $port, "trunk" => $trunk]);
$tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(["portB" => $port, "trunk" => $trunk]);
$usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($port);
if ($usedExt) {
$tcf = $usedExt->getTrunkCableFiber();
if ($tcf->getTrunk()->getId() == $trunk->getId()) {
$usedExt = true;
} else {
$usedExt = false;
}
}
if (!$tcfsA && !$tcfsB && !$usedExt) {
$used = 1;
}
}
// $linkExtA = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneByPortA($port);
// $linkExtB = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneByPortB($port);
//
// if ($linkExtA || $linkExtB){
// $used = 1;
// }
// $portTemp = new Port();
$portTemp = clone $port;
$portTemp->used = $used;
// $port->used = $used;
$portsA[] = $portTemp;
}
$extension['portsA'] = $portsA;
$extension['numberOfLoopsA'] = $this->getNumberOfLoops($link->getTypeLink()->getTitle(), $interfaceA->getInterfaceGeneric()->getTypeLink()->getTitle());
$interfaceB = $portB->getInterfaceSpecific();
$equipmentB = $interfaceB->getEquipmentSpecificMpo() ? $interfaceB->getEquipmentSpecificMpo() : $interfaceB->getEquipmentSpecific();
$extension['siteB'] = $equipmentB->getRack()->getRoom()->getSite()->getTitle();
$extension['roomB'] = $equipmentB->getRack()->getRoom()->getTitle();
$extension['rackB'] = $equipmentB->getRack()->getTitle();
$extension['equipmentB'] = "";
if ($equipmentB->getParent()) {
$extension['equipmentB'] = $equipmentB->getParent()->getEquipmentSpecificName() . " â•‘ " . $equipmentB->getEquipmentSpecificName();
} elseif ($equipmentB->getChassisParent()) {
$extension['equipmentB'] = $equipmentB->getChassisParent()->getEquipmentSpecificName() . " â•‘ " . $equipmentB->getEquipmentSpecificName();
} else {
$extension['equipmentB'] = $equipmentB->getEquipmentSpecificName();
}
$extension['interfaceB'] = $portB->getPortMpo() ? $portB->getPortMpo()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber() : $portB->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
$extension['typeLinkB'] = $portB->getInterfaceSpecific()->getInterfaceGeneric()->getTypeLink()->getTitle();
$extension['typeLinkB'] = $portB->getInterfaceSpecific()->getInterfaceGeneric()->getTypeLink()->getTitle();
$extension['typeInterConnectionB'] = $portB->getInterfaceSpecific()->getInterfaceGeneric()->getTypeInterconnection()->getTitle();
$portsB = [];
$ports = $interfaceB->getPort();
$nPorts = $interfaceB->getInterfaceGeneric()->getNPorts();
if ($nPorts) {
$nPorts = json_decode($nPorts);
} else {
$nPorts = array();
}
foreach ($ports as $port) {
$used = 0;
if (in_array($port->getOrderNo(), $nPorts)) {
$used = 0;
} else {
$tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($port);
if ($tcfsB && count($tcfsB->getExtensions()) > 0) {
$used = 1;
}
$usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($port);
if ($usedExt) {
$tcf = $usedExt->getTrunkCableFiber();
$len = count($tcf->getExtensions());
if ($len != $usedExt->getSequenceNo()) {
$used = 1;
}
}
if (count($port->getExtensionOrder()) > 0) {
$used = 1;
}
}
if ($trunk) {
$tcfsA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(["portA" => $port, "trunk" => $trunk]);
$tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(["portB" => $port, "trunk" => $trunk]);
$usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($port);
if ($usedExt) {
$tcf = $usedExt->getTrunkCableFiber();
if ($tcf->getTrunk()->getId() == $trunk->getId()) {
$usedExt = true;
} else {
$usedExt = false;
}
}
if (!$tcfsA && !$tcfsB && !$usedExt) {
$used = 1;
}
}
// if (count($port->getExtensionOrder()) >= 1 ){
// $used = 1;
// }
// $linkExtA = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneByPortA($port);
// $linkExtB = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneByPortB($port);
//
// if ($linkExtA || $linkExtB){
// $used = 1;
// }
$portTemp = clone $port;
$portTemp->used = $used;
// $port->used = $used;
$portsB[] = $portTemp;
// $port->used = $used;
// $portsB[] = $port;
}
$extension['portsB'] = $portsB;
$extension['numberOfLoopsB'] = $this->getNumberOfLoops($link->getTypeLink()->getTitle(), $interfaceB->getInterfaceGeneric()->getTypeLink()->getTitle());
$extensions[] = $extension;
}
return $this->render('link/duplicate.html.twig', [
'action' => 'list',
'page_title' => $translator->trans('Duplicate Link') . ' ' . $link->getLinkID(),
'link' => $link,
'typeUsage' => $typeUsage,
'typeLink' => $typeLink,
'extensions' => $extensions,
'link_ID' => $linkID
]);
}
public function getNumberOfLoops($typeLinkTitle, $interfaceTypeLinkTitle)
{
$nbLoop = 0;
if ($typeLinkTitle == $interfaceTypeLinkTitle) {
$nbLoop = 0;
} else if ($typeLinkTitle == "Duplex" && $interfaceTypeLinkTitle == "Simplex") {
$nbLoop = 2;
} else if ($typeLinkTitle == "Triplex" && $interfaceTypeLinkTitle == "Simplex") {
$nbLoop = 3;
} else if ($typeLinkTitle == "Quadruplex" && $interfaceTypeLinkTitle == "Simplex") {
$nbLoop = 4;
} else if ($typeLinkTitle == "Pentaplex" && $interfaceTypeLinkTitle == "Simplex") {
$nbLoop = 5;
} else if ($typeLinkTitle == "6" && $interfaceTypeLinkTitle == "Simplex") {
$nbLoop = 6;
} else if ($typeLinkTitle == "7" && $interfaceTypeLinkTitle == "Simplex") {
$nbLoop = 7;
} else if ($typeLinkTitle == "8" && $interfaceTypeLinkTitle == "Simplex") {
$nbLoop = 8;
} else if ($typeLinkTitle == "9" && $interfaceTypeLinkTitle == "Simplex") {
$nbLoop = 9;
} else if ($typeLinkTitle == "10" && $interfaceTypeLinkTitle == "Simplex") {
$nbLoop = 10;
} else if ($typeLinkTitle == "11" && $interfaceTypeLinkTitle == "Simplex") {
$nbLoop = 11;
} else if ($typeLinkTitle == "12" && $interfaceTypeLinkTitle == "Simplex") {
$nbLoop = 12;
} else if (($typeLinkTitle == "Triplex" || $typeLinkTitle == "Quadruplex") && $interfaceTypeLinkTitle == "Duplex") {
$nbLoop = 2;
} else if (($typeLinkTitle == "Pentaplex" || $typeLinkTitle == "6") && $interfaceTypeLinkTitle == "Duplex") {
$nbLoop = 3;
} else if (($typeLinkTitle == "7" || $typeLinkTitle == "8") && $interfaceTypeLinkTitle == "Duplex") {
$nbLoop = 4;
} else if (($typeLinkTitle == "9" || $typeLinkTitle == "10") && $interfaceTypeLinkTitle == "Duplex") {
$nbLoop = 5;
} else if (($typeLinkTitle == "11" || $typeLinkTitle == "12") && $interfaceTypeLinkTitle == "Duplex") {
$nbLoop = 6;
} else if (($typeLinkTitle == "Quadruplex" || $typeLinkTitle == "Pentaplex" || $typeLinkTitle == "6") && $interfaceTypeLinkTitle == "Triplex") {
$nbLoop = 2;
} else if (($typeLinkTitle == "8" || $typeLinkTitle == "8" || $typeLinkTitle == "9") && $interfaceTypeLinkTitle == "Triplex") {
$nbLoop = 3;
} else if (($typeLinkTitle == "10" || $typeLinkTitle == "11" || $typeLinkTitle == "12") && $interfaceTypeLinkTitle == "Triplex") {
$nbLoop = 4;
} else if (($typeLinkTitle == "Pentaplex" || $typeLinkTitle == "6" || $typeLinkTitle == "7" || $typeLinkTitle == "8") && $interfaceTypeLinkTitle == "Quadruplex") {
$nbLoop = 2;
} else if (($typeLinkTitle == "9" || $typeLinkTitle == "10" || $typeLinkTitle == "11" || $typeLinkTitle == "12") && $interfaceTypeLinkTitle == "Quadruplex") {
$nbLoop = 3;
} else if (($typeLinkTitle == "6" || $typeLinkTitle == "7" || $typeLinkTitle == "8" || $typeLinkTitle == "9" || $typeLinkTitle == "10") && $interfaceTypeLinkTitle == "Pentaplex") {
$nbLoop = 2;
} else if (($typeLinkTitle == "11" || $typeLinkTitle == "12") && $interfaceTypeLinkTitle == "Pentaplex") {
$nbLoop = 3;
}
return $nbLoop;
}
/**
* @Route("/link/process/duplicate", name="link_duplicate_process")
*/
public function duplicateProcessAction(Request $request, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$link = new Link();
$link->setLinkID($request->request->get('linkID'));
$link->setOwner($request->request->get('owner'));
$link->setTypeUsage($this->getDoctrine()->getRepository('App\Entity\TypeUsage')->findOneById($request->request->get('typeUsage')));
$link->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->findOneById($request->request->get('typeLink')));
$em->persist($link);
// $em->flush();
$duplicatedLink = $this->getDoctrine()->getRepository('App\Entity\Link')->find($request->request->get('link_id'));
$duplicatedLinkExtensions = $duplicatedLink->getLinkExtension();
if ($duplicatedLinkExtensions) {
$i = 1;
$portOldB1 = null;
$portOldB2 = null;
foreach ($duplicatedLinkExtensions as $duplicatedLinkExtension) {
$portsA = array();
$trunk = $duplicatedLinkExtension->getTrunk();
$typeCable = $duplicatedLinkExtension->getTypeCable();
$ext = new LinkExtension();
$portA2 = null;
$portB2 = null;
$portA1 = $this->getDoctrine()->getRepository('App\Entity\Port')->find($_POST['portA1_' . $i]);
if ($i > 1) {
if ($portOldB1->getInterfaceSpecific()->getInterfaceGeneric()->getTypeInterconnection()->getTitle() == '1-1') {
if ($portA1 != $portOldB1) {
$ext->setIsValid(false);
if ($ext->getError()) {
$ext->setError($ext->getError() . "," . "PortA");
} else {
$ext->setError("PortA");
}
}
}
}
if ($trunk) {
$tcfsA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portA1);
$tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($portA1);
$usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portA1);
if (!$tcfsA && !$tcfsB && !$usedExt) {
$this->addFlash(
'error',
'Opération échouée'
);
return $this->redirectToRoute('link_list');
}
}
if ($_POST['portA2_' . $i]) {
$portA2 = $this->getDoctrine()->getRepository('App\Entity\Port')->find($_POST['portA2_' . $i]);
if ($i > 1) {
if ($portOldB2->getInterfaceSpecific()->getInterfaceGeneric()->getTypeInterconnection()->getTitle() == '1-1') {
if ($portA2 != $portOldB2) {
$ext->setIsValid(false);
if ($ext->getError()) {
$ext->setError($ext->getError() . "," . "PortA");
} else {
$ext->setError("PortA");
}
}
}
}
if ($trunk) {
$tcfsA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portA2);
$tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($portA2);
$usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portA2);
if (!$tcfsA && !$tcfsB && !$usedExt) {
$this->addFlash(
'error',
'Opération échouée'
);
return $this->redirectToRoute('link_list');
}
}
}
$portB1 = $this->getDoctrine()->getRepository('App\Entity\Port')->find($_POST['portB1_' . $i]);
$portOldB1 = $portB1;
if ($trunk) {
$tcfsA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portB1);
$tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($portB1);
$usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portB1);
if (!$tcfsA && !$tcfsB && !$usedExt) {
$this->addFlash(
'error',
'Opération échouée'
);
return $this->redirectToRoute('link_list');
}
}
if ($_POST['portB2_' . $i]) {
$portB2 = $this->getDoctrine()->getRepository('App\Entity\Port')->find($_POST['portB2_' . $i]);
$portOldB2 = $portB2;
if ($trunk) {
$tcfsA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portB2);
$tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($portB2);
$usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portB2);
if (!$tcfsA && !$tcfsB && !$usedExt) {
$this->addFlash(
'error',
'Opération échouée'
);
return $this->redirectToRoute('link_list');
}
}
}
$ext->setLink($link);
$portsA[] = $portA1;
$extA = new Extremity();
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(1);
$extensinOrder->setPort($portA1);
$extensinOrder->setExtremity($extA);
$portA1->addExtensionOrder($extensinOrder);
$extA->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portA1->setOrderNoExtension(1);
// $portA1->addExtremity($extA);
$portA1->setLink($link);
$portA1->setLinkExtension($ext);
$em->persist($portA1);
// $extA->addPort($portA1);
if ($portA2) {
$portsA[] = $portA2;
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(2);
$extensinOrder->setPort($portA2);
$extensinOrder->setExtremity($extA);
$portA2->addExtensionOrder($extensinOrder);
$extA->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portA2->setOrderNoExtension(2);
// $portA2->addExtremity($extA);
$portA2->setLink($link);
$portA2->setLinkExtension($ext);
$em->persist($portA2);
// $extA->addPort($portA2);
}
$em->persist($extA);
$ext->setExtremityA($extA);
$extB = new Extremity();
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(1);
$extensinOrder->setPort($portB1);
$extensinOrder->setExtremity($extB);
$portB1->addExtensionOrder($extensinOrder);
$extB->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portB1->setOrderNoExtension(1);
// $portB1->addExtremity($extB);
$portB1->setLink($link);
$portB1->setLinkExtension($ext);
$em->persist($portB1);
// $extB->addPort($portB1);
if ($portB2) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(2);
$extensinOrder->setPort($portB2);
$extensinOrder->setExtremity($extB);
$portB2->addExtensionOrder($extensinOrder);
$extB->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portB2->setOrderNoExtension(2);
// $portB2->addExtremity($extB);
$portB2->setLink($link);
$portB2->setLinkExtension($ext);
$em->persist($portB2);
// $extB->addPort($portB2);
}
$em->persist($extB);
$ext->setExtremityB($extB);
// $ext->setPortA($portA);
// $ext->setPortB($portB);
if ($typeCable) {
$ext->setTypeCable($typeCable);
}
if ($trunk) {
$ports = $this->getPorts($trunk, $portsA, $link->getTypeLink());
foreach ($ports as $port) {
$port->setLink($link);
$port->setLinkExtension($ext);
$em->persist($port);
}
$ext->setTrunk($trunk);
}
$ext->setSequenceNo($i);
$em->persist($ext);
$i++;
}
}
$em->flush();
return $this->redirectToRoute('link_list');
}
/**
* @Route("/link/overview/list", name="link_overview_list")
*/
public function overviewListAction(Request $request, TranslatorInterface $translator)
{
// $cache = new FilesystemAdapter();
// $linkList = $cache->getItem('pagerfanta.list.link"');
// $linkList->expiresAfter(1);
$links = null;
// if (!$linkList->isHit()) {
$links = $this->getDoctrine()->getRepository('App\Entity\Link')->findAll();
foreach ($links as $link) {
$extensions = $link->getLinkExtension();
$link->totalExts=0;
if (!($extensions->isEmpty())) {
$firstExt = $extensions[0];
$portsA = [];
$portAOrderNos = array();
$portsATemp = $firstExt->getExtremityA()->getExtensionOrder();
foreach ($portsATemp as $value) {
$portsA[] = $value->getPort();
$tempMpo = $value->getPort()->getPortMpo() ? $value->getPort()->getPortMpo()->getAlias() != "" ? $value->getPort()->getPortMpo()->getAlias() . "|" : $value->getPort()->getPortMpo()->getOrderNo() . "|" : "";
$portAOrderNos[$value->getOrderNumber() - 1] = $tempMpo . ($value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo());
}
// $portsA = $firstExt->getExtremityA()->getPorts();
$eqA = $portsA[0]->getInterfaceSpecific()->getEquipmentSpecificMpo() ? $portsA[0]->getInterfaceSpecific()->getEquipmentSpecificMpo() : $portsA[0]->getInterfaceSpecific()->getEquipmentSpecific();
$intA = $portsA[0]->getPortMpo() ? $portsA[0]->getPortMpo()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber() : $portsA[0]->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
$link->eqA = $eqA;
$link->intA = $intA;
// $portAOrderNos = array();
// foreach ($portsA as $portA) {
// $portAOrderNos[$portA->getOrderNoExtension()-1] = $portA->getOrderNo();
// }
$portAOrderNos = array_unique($portAOrderNos);
ksort($portAOrderNos);
$link->portA = implode("/", $portAOrderNos);
// $eqB = $firstExt->getExtremityA()->getExtensionOrder()[0]->getPort()->getInterfaceSpecific()->getEquipmentSpecific();
$portBOrderNos = array();
$lastExt = $extensions[count($extensions) - 1];
$portsB = [];
$portsBTemp = $lastExt->getExtremityB()->getExtensionOrder();
foreach ($portsBTemp as $value) {
$portsB[] = $value->getPort();
$tempMpo = $value->getPort()->getPortMpo() ? $value->getPort()->getPortMpo()->getAlias() != "" ? $value->getPort()->getPortMpo()->getAlias() . "|" : $value->getPort()->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[$value->getOrderNumber() - 1] = $tempMpo . ($value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo());
}
// $portsB = $extension->getExtremityB()->getPorts();
if (count($portsB) > 0) {
$eqB = $portsB[0]->getInterfaceSpecific()->getEquipmentSpecificMpo() ? $portsB[0]->getInterfaceSpecific()->getEquipmentSpecificMpo() : $portsB[0]->getInterfaceSpecific()->getEquipmentSpecific();
$intB = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber() : $portsB[0]->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
}
$link->eqB = $eqB;
$link->intB = $intB;
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$link->portB = implode("/", $portBOrderNos);
$link->totalExts = count($link->getLinkExtension());
}
}
// $cache->save($linkList->set($links));
// }
// else {
// $links = $linkList->get();
// // var_dump($links);
// }
// var_dump($links);
//pagerfanta starts
// $adapter = new ArrayAdapter($links);
// $pagerfanta = new Pagerfanta($adapter);
$pageLength = $request->query->get("pageLength", $this->getParameter("link.maxPerPage"));
// if ($pageLength == "Tout") {
// $pagerfanta->setMaxPerPage(count($links)); // 10 by default
// }
// else {
// $pagerfanta->setMaxPerPage($pageLength); // 10 by default
// }
// // $this->container->setParameter("link.maxPerPage", $pageLength);
// $page = $request->query->get("page", 1);
// $pagerfanta->setCurrentPage($page);
//pagerfanta ends
return $this->render('overview/link_list.html.twig', [
'action' => 'list',
'page_title' => $translator->trans('Link Overview'),
'list' => $links,
// 'my_pager' => $pagerfanta,
'pageLength' => $pageLength,
]);
}
/**
* @Route("/link/overview/item/{id}", name="link_overview")
*/
public function overviewAction($id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$link = $em->getRepository(Link::class)->find($id);
$extensions = [];
$sequence = [];
$e = 1;
$t = 0;
$tsn = 0;
$linkExtensions = $link->getLinkExtension();
foreach ($linkExtensions as $ext) {
$linkExtensionSequenceNo = $ext->getSequenceNo();
$linkExtensionTrunk = $ext->getTrunk();
if (is_null($linkExtensionTrunk)) {
$e = $linkExtensionSequenceNo - $t;
if ($e > 1) {
$extension['id'] = 'E' . ($e - 1);
} else {
$extension['id'] = '';
$extension['typeCable'] = $ext->getTypeCable()->getTitle();
$extension['color'] = $ext->getTypeCable()->getColor();
}
} else {
if ($linkExtensionSequenceNo != $tsn) {
$extension['id'] = $linkExtensionTrunk->getTrunkID();
$extension['typeCable'] = $linkExtensionTrunk->getTypeCable()->getTitle();
$extension['color'] = $linkExtensionTrunk->getTypeCable()->getColor();
$tsn = $linkExtensionSequenceNo;
$t++;
}
}
//set ports on extension object
$portsA = [];
$portAOrderNos = array();
$portsATemp = $ext->getExtremityA()->getExtensionOrder();
foreach ($portsATemp as $value) {
$portsA[] = $value->getPort();
$tempMpo = $value->getPort()->getPortMpo() ? $value->getPort()->getPortMpo()->getAlias() != "" ? $value->getPort()->getPortMpo()->getAlias() . "|" : $value->getPort()->getPortMpo()->getOrderNo() . "|" : "";
$portAOrderNos[$value->getOrderNumber() - 1] = $tempMpo . ($value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo());
// $portAOrderNos[$value->getOrderNumber()-1] = ($value->getPort()->getAlias()) ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsA = $ext->getExtremityA()->getPorts();
// foreach ($portsA as $p) {
// $portAOrderNos[$p->getOrderNoExtension()-1] = $p->getOrderNo();
// }
$portAOrderNos = array_unique($portAOrderNos);
ksort($portAOrderNos);
$extension['portA'] = implode("/", $portAOrderNos);
$portsB = [];
$portBOrderNos = array();
$portsBTemp = $ext->getExtremityB()->getExtensionOrder();
foreach ($portsBTemp as $value) {
$portsB[] = $value->getPort();
$tempMpo = $value->getPort()->getPortMpo() ? $value->getPort()->getPortMpo()->getAlias() != "" ? $value->getPort()->getPortMpo()->getAlias() . "|" : $value->getPort()->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[$value->getOrderNumber() - 1] = $tempMpo . ($value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo());
// $portBOrderNos[$value->getOrderNumber()-1] = ($value->getPort()->getAlias()) ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsB = $ext->getExtremityB()->getPorts();
// $portBOrderNos = array();
// foreach ($portsB as $p) {
// $portBOrderNos[$p->getOrderNoExtension()-1] = $p->getOrderNo();
// }
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// set other properties on side A of extension object
$interfaceSpecTemp = $portsA[0]->getPortMpo() ? $portsA[0]->getPortMpo()->getInterfaceSpecific() : $portsA[0]->getInterfaceSpecific();
$rackTemp = $interfaceSpecTemp->getEquipmentSpecific()->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteA'] = $roomTemp->getSite()->getTitle();
$extension['roomA'] = $roomTemp->getTitle();
$extension['rackA'] = $rackTemp->getTitle();
$extension['equipmentA'] = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecificMpo()->getEquipmentSpecificName() . ')' : $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName() . ')';
$extension['interfaceA'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
// set other properties on side B of extension object
$interfaceSpecTemp = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific() : $portsB[0]->getInterfaceSpecific();
$rackTemp = $interfaceSpecTemp->getEquipmentSpecific()->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
$extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecificMpo()->getEquipmentSpecificName() . ')' : $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName() . ')';
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
$extension['isValid'] = $ext->isValid();
// $fiberNo = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->noFibersInExtension($link, $linkExtensionSequenceNo);
//
// if ($fiberNo > 1){
//
// $portsA = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->getPortsABySequence($link, $linkExtensionSequenceNo);
// $portsB = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->getPortsBBySequence($link, $linkExtensionSequenceNo);
//
// $extension['portA'] = '';
// $extension['portB'] = '';
//
// $portsAIDS = [];
// $portsBIDS = [];
//
// foreach ($portsA as $portID){
//
// $port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
//
// $extension['siteA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceA'] = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
//
// if (!in_array($portID,$portsAIDS)){
// $extension['portA'] .= $port->getOrderNo().'/';
// }
//
// $portsAIDS[] = $portID;
//
// }
//
// $extension['portA'] = substr($extension['portA'], 0, -1);
//
// foreach ($portsB as $portID){
//
// $port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
//
// $extension['siteB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
//
// if (!in_array($portID,$portsBIDS)){
// $extension['portB'] .= $port->getOrderNo().'/';
// }
//
// $portsBIDS[] = $portID;
//
// }
//
// $extension['portB'] = substr($extension['portB'], 0, -1);
//
// } else {
//
// $extension['siteA'] = $ext->getPortA()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomA'] = $ext->getPortA()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackA'] = $ext->getPortA()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentA'] = $ext->getPortA()->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$ext->getPortA()->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceA'] = $ext->getPortA()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $extension['portA'] = $ext->getPortA()->getOrderNo();
//
// $extension['siteB'] = $ext->getPortB()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomB'] = $ext->getPortB()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackB'] = $ext->getPortB()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentB'] = $ext->getPortB()->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$ext->getPortB()->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $ext->getPortB()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $extension['portB'] = $ext->getPortA()->getOrderNo();
//
// }
if (!in_array($linkExtensionSequenceNo, $sequence)) {
$extensions[] = $extension;
}
$sequence[] = $linkExtensionSequenceNo;
}
return $this->render('overview/link.html.twig', [
'action' => 'list',
'page_title' => $translator->trans('Link Overview'),
'link' => $link,
'extensions' => $extensions
]);
}
/**
* @Route("/link/diagram-pdf/{id}", name="link_diagram_pdf")
*/
public function viewDiagramPdfAction($id, TranslatorInterface $translator, TCPDFController $tcpdf)
{
$em = $this->getDoctrine()->getManager();
$link = $em->getRepository(Link::class)->find($id);
$extensions = [];
$sequence = [];
$e = 1;
$t = 0;
$tsn = 0;
//get all the link extensions
$linkExtensions = $link->getLinkExtension();
foreach ($linkExtensions as $ext) {
$reverseTrunk = false;
// var_dump("link ext: ".$ext->getId());
$linkExtensionSequenceNo = $ext->getSequenceNo(); //If "1" that means, its first link extension
$linkExtensionTrunk = $ext->getTrunk(); //get the trunk if exists
$extIsTrunkAndHasExtensions = 0;
if (is_null($linkExtensionTrunk)) { // if it doesn't have trunk
// var_dump("trunk is null");
$e = $linkExtensionSequenceNo - $t;
if ($e > 1) {
$extension['ext'] = 'E' . ($e - 1);
} else {
$extension['ext'] = '';
}
$extension['label'] = $link->getLinkID();
} else {
// var_dump("trunk id: ".$linkExtensionTrunk->getId());
if ($linkExtensionSequenceNo != $tsn) {
$tcfs = $linkExtensionTrunk->getCableFiber();
foreach ($tcfs as $tcf) {
$trunkExts = $tcf->getExtensions();
if (sizeof($trunkExts) > 0) {
$extIsTrunkAndHasExtensions = 1;
}
}
if ($extIsTrunkAndHasExtensions == 0) {
// var_dump("trunk doesn't have extension");
$extension['ext'] = $linkExtensionTrunk->getOperatorID();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
} else {
// var_dump("trunk has extensions");
$portsA = [];
$portAOrderNos = array();
$portsATemp = $ext->getExtremityA()->getExtensionOrder();
foreach ($portsATemp as $value) {
$portsA[] = $value->getPort();
$portAOrderNos[$value->getOrderNumber() - 1] = ($value->getPort()->getAlias() != "") ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsA = $ext->getExtremityA()->getPorts();
// var_dump("extremity A id: ".$ext->getExtremityA()->getId());
// var_dump("nombre de ports", count($portsA));
// set other properties on side A of extension object
$interfaceSpecTemp = $portsA[0]->getInterfaceSpecific();
$rackTemp = $interfaceSpecTemp->getEquipmentSpecific()->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteA'] = $roomTemp->getSite()->getTitle();
$extension['roomA'] = $roomTemp->getTitle();
$extension['rackA'] = $rackTemp->getTitle();
$extension['equipmentA'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName() . ')';
$extension['interfaceA'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
// first trunk extension
$portsB = [];
$tcfsForExts = [];
$tcfsExts = [];
$tcfExtsFromB = null;
$duplex = false;
if ($link->getTypeLink()->getTitle() == "Duplex" && count($portsA) == 1 || ($link->getTypeLink()->getTitle() != "Simplex" && count($portsA) == 1)) {
$duplex = true;
}
// var_dump($duplex);
foreach ($portsA as $port) {
// $portAOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$tcfFromA = null;
$tcfFromB = null;
$tcfExtFromB = null;
if ($duplex) {
$tcfFromA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findBy(['portA' => $port]);
// var_dump($tcfFromA->getId());
$tcfFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findBy(['portB' => $port]);
// var_dump($tcfFromB->getId());
$tcfExtFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findBy(['portB' => $port]);
foreach ($tcfFromA as $temp) {
$portB = $temp->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $temp;
}
foreach ($tcfFromB as $temp) {
$portB = $temp->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $temp;
}
foreach ($tcfExtFromB as $temp) {
$tcfExtsFromB[] = $temp;
$reverseTrunk = true;
}
} else {
$tcfFromA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(['portA' => $port]);
// var_dump($tcfFromA->getId());
$tcfFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(['portB' => $port]);
// var_dump($tcfFromB->getId());
$tcfExtFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['portB' => $port]);
if ($tcfFromA) {
$portB = $tcfFromA->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $tcfFromA;
// var_dump($portB->getId());
}
if ($tcfFromB) {
$portB = $tcfFromB->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $tcfFromB;
// var_dump($portB->getId());
}
//to treat the reverse case
if ($tcfExtFromB) {
// var_dump($tcfExtFromB);
$tcfExtsFromB[] = $tcfExtFromB;
$reverseTrunk = true;
}
}
}
$portAOrderNos = array_unique($portAOrderNos);
ksort($portAOrderNos);
$extension['portA'] = implode("/", $portAOrderNos);
if ($reverseTrunk) {
// var_dump("in reverse trunk");
$portsArrayArray = array();
if (count($tcfExtsFromB) > 0) {
$tcfsForExts = array();
foreach ($tcfExtsFromB as $tcfExt) {
$tcfsForExts[] = $tcfExt->getTrunkCableFiber();
}
for ($i = 1; $i <= count($tcfsForExts[0]->getExtensions()); $i++) {
$portArray = [];
foreach ($tcfsForExts as $tempTcf) {
// get the extensions of sequence $i
$tempExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['trunkCableFiber' => $tempTcf, "sequenceNo" => $i]);
// var_dump($tempExt);
if ($tempExt) {
$portArray[] = $tempExt->getPortB();
}
}
$portsArrayArray[] = $portArray;
// var_dump($portsArrayArray);
}
// var_dump($portsArrayArray);
$tcf = $tcfsForExts[0];
$tcfExts = $tcf->getExtensions();
// var_dump($tcfExts);
for ($i = count($tcfExts) - 1; $i >= 0; $i--) {
$portsB = null;
if ($i == 0) {
foreach ($tcfsForExts as $tempTcf) {
$portsB[] = $tempTcf->getPortB();
}
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $linkExtensionTrunk->getOperatorID();
$extension['portA'] = $extension['portB'];
// $operatorID = $tcfsForExts[0]->getOperatorID();
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getInterfaceSpecific();
$rackTemp = $interfaceSpecTemp->getEquipmentSpecific()->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
$extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName() . ')';
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$portBOrderNos[] = ($port->getAlias() != "") ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
} else {
$portsB = $portsArrayArray[$i - 1];
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $tcfExts[$i]->getOperatorID();
$extension['portA'] = $extension['portB'];
$operatorID = $tcfExts[$i]->getOperatorID();
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getInterfaceSpecific();
$rackTemp = $interfaceSpecTemp->getEquipmentSpecific()->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
$extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName() . ')';
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$portBOrderNos[] = ($port->getAlias() != "") ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
}
}
// var_dump($tcfsForExts);
$portsB = null;
foreach ($tcfsForExts as $tempTcf) {
$portsB[] = $tempTcf->getPortA();
}
// var_dump($portsB);
}
} else {
$extension['portB_temp'] = '';
$portBOrderNos = array();
$interfaceSpecTemp = $portsB[0]->getInterfaceSpecific();
$rackTemp = $interfaceSpecTemp->getEquipmentSpecific()->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
$extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName() . ')';
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$portBOrderNos[] = ($port->getAlias() != "") ? $port->getAlias() : $port->getOrderNo();
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
$extension['ext'] = $linkExtensionTrunk->getOperatorID();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extensions[] = $extension;
// other trunk extensions
// get the ports for the extensions
$portsArrayArray = array();
if (count($tcfsForExts) > 0) {
for ($i = 1; $i <= count($tcfsForExts[0]->getExtensions()); $i++) {
$portArray = [];
foreach ($tcfsForExts as $tempTcf) {
// get the extensions of sequence $i
$tempExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['trunkCableFiber' => $tempTcf, "sequenceNo" => $i]);
// var_dump($tempExt);
if ($tempExt) {
$portArray[] = $tempExt->getPortB();
}
}
$portsArrayArray[] = $portArray;
}
// var_dump($portsArrayArray);
$tcf = $tcfsForExts[0];
$tcfExts = $tcf->getExtensions();
$iterator = 0;
foreach ($tcfExts as $tcfExt) {
// var_dump($tcfExt->getId());
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $tcfExt->getOperatorID();
$extension['portA'] = $extension['portB'];
$operatorID = $tcfExt->getOperatorID();
$portsB = $portsArrayArray[$iterator++];
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getInterfaceSpecific();
$rackTemp = $interfaceSpecTemp->getEquipmentSpecific()->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
$extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName() . ')';
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$portBOrderNos[] = ($port->getAlias() != "") ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
}
}
}
}
$tsn = $linkExtensionSequenceNo;
$t++;
}
}
if ($reverseTrunk) {
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $linkExtensionTrunk->getOperatorID();
$extension['portA'] = $extension['portB'];
// $operatorID = $tcfsForExts[0]->getOperatorID();
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getInterfaceSpecific();
$rackTemp = $interfaceSpecTemp->getEquipmentSpecific()->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
$extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName() . ')';
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$portBOrderNos[] = ($port->getAlias() != "") ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
} else {
if ($ext->getTypeCable()) {
$extension['color'] = $ext->getTypeCable()->getColor();
} else {
$extension['color'] = $ext->getTrunk()->getTypeCable()->getColor();
}
//set ports on extension object
$portsA = [];
$portAOrderNos = array();
$portsATemp = $ext->getExtremityA()->getExtensionOrder();
foreach ($portsATemp as $value) {
$portsA[] = $value->getPort();
$portAOrderNos[$value->getOrderNumber() - 1] = ($value->getPort()->getAlias() != "") ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsA = $ext->getExtremityA()->getPorts();
// foreach ($portsA as $p) {
// $portAOrderNos[$p->getOrderNoExtension()-1] = $p->getOrderNo();
// }
$portAOrderNos = array_unique($portAOrderNos);
ksort($portAOrderNos);
$extension['portA'] = implode("/", $portAOrderNos);
$portsB = [];
$portBOrderNos = array();
$portsBTemp = $ext->getExtremityB()->getExtensionOrder();
foreach ($portsBTemp as $value) {
$portsB[] = $value->getPort();
$portBOrderNos[$value->getOrderNumber() - 1] = ($value->getPort()->getAlias() != "") ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsB = $ext->getExtremityB()->getPorts();
// $portBOrderNos = array();
// foreach ($portsB as $p) {
// $portBOrderNos[$p->getOrderNoExtension()-1] = $p->getOrderNo();
// }
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// set other properties on side A of extension object
$interfaceSpecTemp = $portsA[0]->getInterfaceSpecific();
$rackTemp = $interfaceSpecTemp->getEquipmentSpecific()->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteA'] = $roomTemp->getSite()->getTitle();
$extension['roomA'] = $roomTemp->getTitle();
$extension['rackA'] = $rackTemp->getTitle();
$extension['equipmentA'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName() . ')';
$extension['interfaceA'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
// set other properties on side B of extension object
$interfaceSpecTemp = $portsB[0]->getInterfaceSpecific();
$rackTemp = $interfaceSpecTemp->getEquipmentSpecific()->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
$extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle() . ' (' . $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName() . ')';
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// var_dump($extension);
// $fiberNo = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->noFibersInExtension($link, $linkExtensionSequenceNo);
//
// if ($fiberNo > 1){
//
// $portsA = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->getPortsABySequence($link, $linkExtensionSequenceNo);
// $portsB = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->getPortsBBySequence($link, $linkExtensionSequenceNo);
//
// $extension['portA'] = '';
// $extension['portB'] = '';
//
// $portsAIDS = [];
// $portsBIDS = [];
//
// foreach ($portsA as $portID){
//
// $port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
//
// $extension['siteA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceA'] = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
//
// if (!in_array($portID,$portsAIDS)){
// $extension['portA'] .= $port->getOrderNo().'/';
//
// }
//
// $portsAIDS[] = $portID;
//
// }
//
// $extension['portA'] = substr($extension['portA'], 0, -1);
//
// $extension['portB_temp'] = '';
//
// foreach ($portsB as $portID){
//
// $port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
//
// $extension['siteB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
//
// if (!in_array($portID,$portsBIDS)){
// $extension['portB_temp'] .= $port->getOrderNo().'/';
// }
//
// $portsBIDS[] = $portID;
//
// }
//
//
// $extension['portB'] = substr($extension['portB_temp'], 0, -1);
//
//
// } else {
//
// $extension['siteA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $extension['portA'] = $ext->getExtremityA()->getPorts()[0]->getOrderNo();
//
// $extension['siteB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $extension['portB'] = $ext->getExtremityB()->getPorts()[0]->getOrderNo();
//
// }
if (!in_array($linkExtensionSequenceNo, $sequence) && $extIsTrunkAndHasExtensions == 0) {
$extensions[] = $extension;
}
$sequence[] = $linkExtensionSequenceNo;
}
$html = $this->renderView(
'link/list_diagram_pdf.html.twig',
[
'link' => $link,
'extensions' => $extensions
]
);
$pdf = $tcpdf->create('P', PDF_UNIT, 'A4', true, 'UTF-8', false);
$pdf->SetAuthor('FIBERLINK');
$pdf->SetTitle('Link ' . $link->getLinkID());
$pdf->SetSubject('Link ' . $link->getLinkID());
$pdf->setFontSubsetting(true);
$pdf->SetFont('helvetica', '', 7, '', true);
$pdf->AddPage();
$filename = 'link-' . $link->getLinkID();
$pdf->writeHTML($html, true, false, true, false, '');
ob_end_clean();
$pdf->Output($filename . ".pdf", 'I'); // This will output the PDF as a response directly
}
/**
* @Route("/link/diagram/{id}", name="link_diagram")
*/
public function viewDiagramAction($id, Request $request, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$link = $em->getRepository(Link::class)->find($id);
$extensions = [];
$sequence = [];
$e = 1;
$t = 0;
$tsn = 0;
//get all the link extensions
$linkExtensions = $link->getLinkExtension();
foreach ($linkExtensions as $ext) {
$reverseTrunk = false;
// var_dump("link ext: ".$ext->getId());
$linkExtensionSequenceNo = $ext->getSequenceNo(); //If "1" that means, its first link extension
$linkExtensionTrunk = $ext->getTrunk(); //get the trunk if exists
$extIsTrunkAndHasExtensions = 0;
$tcfExtsFromB = null;
if (is_null($linkExtensionTrunk)) { // if it doesn't have trunk
// var_dump("trunk is null");
$e = $linkExtensionSequenceNo - $t;
if ($e > 1) {
$extension['ext'] = 'E' . ($e - 1);
} else {
$extension['ext'] = '';
}
$extension['label'] = $link->getLinkID();
} else {
// var_dump("trunk id: ".$linkExtensionTrunk->getId());
if ($linkExtensionSequenceNo != $tsn) {
$tcfs = $linkExtensionTrunk->getCableFiber();
foreach ($tcfs as $tcf) {
$trunkExts = $tcf->getExtensions();
if (sizeof($trunkExts) > 0) {
$extIsTrunkAndHasExtensions = 1;
}
}
if ($extIsTrunkAndHasExtensions == 0) {
// var_dump("trunk doesn't have extension");
$extension['ext'] = $linkExtensionTrunk->getOperatorID();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
} else {
// var_dump("trunk has extensions");
$portsA = [];
$portAOrderNos = array();
$portsATemp = $ext->getExtremityA()->getExtensionOrder();
foreach ($portsATemp as $value) {
$portsA[] = $value->getPort();
$tempMpo = $value->getPort()->getPortMpo() ? $value->getPort()->getPortMpo()->getAlias() != "" ? $value->getPort()->getPortMpo()->getAlias() . "|" : $value->getPort()->getPortMpo()->getOrderNo() . "|" : "";
$portAOrderNos[$value->getOrderNumber() - 1] = $tempMpo . ($value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo());
// $portAOrderNos[$value->getOrderNumber()-1] = ($value->getPort()->getAlias()) ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsA = $ext->getExtremityA()->getPorts();
// var_dump("extremity A id: ".$ext->getExtremityA()->getId());
// var_dump("nombre de ports", count($portsA));
// set other properties on side A of extension object
$interfaceSpecTemp = $portsA[0]->getPortMpo() ? $portsA[0]->getPortMpo()->getInterfaceSpecific() : $portsA[0]->getInterfaceSpecific();
// $interfaceSpecTemp = $portsA[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteA'] = $roomTemp->getSite()->getTitle();
$extension['roomA'] = $roomTemp->getTitle();
$extension['rackA'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentA'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentA'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentA'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentA'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentA'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceA'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceA'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceA'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// first trunk extension
$portsB = [];
$tcfsForExts = [];
$tcfsExts = [];
$tcfExtsFromB = null;
$duplex = false;
if ($link->getTypeLink()->getTitle() == "Duplex" && count($portsA) == 1 || ($link->getTypeLink()->getTitle() != "Simplex" && count($portsA) == 1)) {
$duplex = true;
}
// var_dump($duplex);
foreach ($portsA as $port) {
// $portAOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$tcfFromA = null;
$tcfFromB = null;
$tcfExtFromB = null;
if ($duplex) {
$tcfFromA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findBy(['portA' => $port]);
// var_dump($tcfFromA->getId());
$tcfFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findBy(['portB' => $port]);
// var_dump($tcfFromB->getId());
$tcfExtFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findBy(['portB' => $port]);
foreach ($tcfFromA as $temp) {
$portB = $temp->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $temp;
}
foreach ($tcfFromB as $temp) {
$portB = $temp->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $temp;
}
foreach ($tcfExtFromB as $temp) {
$tcfExtsFromB[] = $temp;
$reverseTrunk = true;
}
} else {
$tcfFromA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(['portA' => $port]);
// var_dump($tcfFromA->getId());
$tcfFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(['portB' => $port]);
// var_dump($tcfFromB->getId());
$tcfExtFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['portB' => $port]);
if ($tcfFromA) {
$portB = $tcfFromA->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $tcfFromA;
// var_dump($portB->getId());
}
if ($tcfFromB) {
$portB = $tcfFromB->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $tcfFromB;
// var_dump($portB->getId());
}
//to treat the reverse case
if ($tcfExtFromB) {
// var_dump($tcfExtFromB);
$tcfExtsFromB[] = $tcfExtFromB;
$reverseTrunk = true;
}
}
}
$portAOrderNos = array_unique($portAOrderNos);
ksort($portAOrderNos);
$extension['portA'] = implode("/", $portAOrderNos);
if ($reverseTrunk) {
// var_dump("in reverse trunk");
$portsArrayArray = array();
if (count($tcfExtsFromB) > 0) {
$tcfsForExts = array();
foreach ($tcfExtsFromB as $tcfExt) {
$tcfsForExts[] = $tcfExt->getTrunkCableFiber();
}
for ($i = 1; $i <= count($tcfsForExts[0]->getExtensions()); $i++) {
$portArray = [];
foreach ($tcfsForExts as $tempTcf) {
// get the extensions of sequence $i
$tempExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['trunkCableFiber' => $tempTcf, "sequenceNo" => $i]);
// var_dump($tempExt);
if ($tempExt) {
$portArray[] = $tempExt->getPortB();
}
}
$portsArrayArray[] = $portArray;
// var_dump($portsArrayArray);
}
// var_dump($portsArrayArray);
$tcf = $tcfsForExts[0];
$tcfExts = $tcf->getExtensions();
// var_dump($tcfExts);
for ($i = count($tcfExts) - 1; $i >= 0; $i--) {
$portsB = null;
if ($i == 0) {
foreach ($tcfsForExts as $tempTcf) {
$portsB[] = $tempTcf->getPortB();
}
$extension['color'] = $linkExtensionTrunk->getTypeCable()->getColor();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $tcfExts[$i]->getOperatorID();
$extension['portA'] = $extension['portB'];
// $operatorID = $tcfsForExts[0]->getOperatorID();
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific() : $portsB[0]->getInterfaceSpecific();
// $interfaceSpecTemp = $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$tempMpo = $port->getPortMpo() ? $port->getPortMpo()->getAlias() != "" ? $port->getPortMpo()->getAlias() . "|" : $port->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[] = $tempMpo . ($port->getAlias() != "" ? $port->getAlias() : $port->getOrderNo());
// $portBOrderNos[] = ($port->getAlias()) ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
} else {
$portsB = $portsArrayArray[$i - 1];
$extension['color'] = $linkExtensionTrunk->getTypeCable()->getColor();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $tcfExts[$i]->getOperatorID();
$extension['portA'] = $extension['portB'];
$operatorID = $tcfExts[$i]->getOperatorID();
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific() : $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$tempMpo = $port->getPortMpo() ? $port->getPortMpo()->getAlias() != "" ? $port->getPortMpo()->getAlias() . "|" : $port->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[] = $tempMpo . ($port->getAlias() != "" ? $port->getAlias() : $port->getOrderNo());
// $portBOrderNos[] = ($port->getAlias()) ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
}
}
// var_dump($tcfsForExts);
$portsB = null;
foreach ($tcfsForExts as $tempTcf) {
$portsB[] = $tempTcf->getPortA();
}
// var_dump($portsB);
}
} else {
$extension['portB_temp'] = '';
$portBOrderNos = array();
if ($portsB[0]) {
$interfaceSpecTemp = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific() : $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// if ($eqSpe->isModule()) {
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
// }
// else {
// $extension['equipmentB'] = $eqSpe->getEquipmentSpecificName().' ('.$eqSpe->getEquipmentGeneric()->getTitle().')';
// }
// // $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
$tempMpo = $port->getPortMpo() ? $port->getPortMpo()->getAlias() != "" ? $port->getPortMpo()->getAlias() . "|" : $port->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[] = $tempMpo . ($port->getAlias() != "" ? $port->getAlias() : $port->getOrderNo());
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
// $portBOrderNos[] = ($port->getAlias()) ? $port->getAlias() : $port->getOrderNo();
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
$extension['ext'] = $linkExtensionTrunk->getOperatorID();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['color'] = $linkExtensionTrunk->getTypeCable()->getColor();
$extensions[] = $extension;
// other trunk extensions
// get the ports for the extensions
$portsArrayArray = array();
if (count($tcfsForExts) > 0) {
for ($i = 1; $i <= count($tcfsForExts[0]->getExtensions()); $i++) {
$portArray = [];
foreach ($tcfsForExts as $tempTcf) {
// get the extensions of sequence $i
$tempExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['trunkCableFiber' => $tempTcf, "sequenceNo" => $i]);
// var_dump($tempExt);
if ($tempExt) {
$portArray[] = $tempExt->getPortB();
}
}
$portsArrayArray[] = $portArray;
}
// var_dump($portsArrayArray);
$tcf = $tcfsForExts[0];
$tcfExts = $tcf->getExtensions();
$iterator = 0;
foreach ($tcfExts as $tcfExt) {
// var_dump($tcfExt->getId());
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $tcfExt->getOperatorID();
$extension['color'] = $tcfExt->getTypeCable()->getColor();
$extension['portA'] = $extension['portB'];
$operatorID = $tcfExt->getOperatorID();
$portsB = $portsArrayArray[$iterator++];
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// if ($eqSpe->isModule()) {
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
// }
// else {
// $extension['equipmentB'] = $eqSpe->getEquipmentSpecificName().' ('.$eqSpe->getEquipmentGeneric()->getTitle().')';
// }
// // $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$tempMpo = $port->getPortMpo() ? $port->getPortMpo()->getAlias() != "" ? $port->getPortMpo()->getAlias() . "|" : $port->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[] = $tempMpo . ($port->getAlias() != "" ? $port->getAlias() : $port->getOrderNo());
// $portBOrderNos[] = ($port->getAlias()) ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
}
}
}
}
}
$tsn = $linkExtensionSequenceNo;
$t++;
}
}
if ($reverseTrunk) {
$extension['color'] = $linkExtensionTrunk->getTypeCable()->getColor();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $linkExtensionTrunk->getOperatorID();
$extension['portA'] = $extension['portB'];
// $operatorID = $tcfsForExts[0]->getOperatorID();
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific() : $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// if ($eqSpe->isModule()) {
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
// }
// else {
// $extension['equipmentB'] = $eqSpe->getEquipmentSpecificName().' ('.$eqSpe->getEquipmentGeneric()->getTitle().')';
// }
// // $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$tempMpo = $port->getPortMpo() ? $port->getPortMpo()->getAlias() != "" ? $port->getPortMpo()->getAlias() . "|" : $port->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[] = $tempMpo . ($port->getAlias() != "" ? $port->getAlias() : $port->getOrderNo());
// $portBOrderNos[] = ($port->getAlias()) ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
} else {
if ($ext->getTypeCable()) {
$extension['color'] = $ext->getTypeCable()->getColor();
} else {
$extension['color'] = $ext->getTrunk()->getTypeCable()->getColor();
}
//set ports on extension object
$portsA = [];
$portAOrderNos = array();
$portsATemp = $ext->getExtremityA()->getExtensionOrder();
foreach ($portsATemp as $value) {
$portsA[] = $value->getPort();
$tempMpo = $value->getPort()->getPortMpo() ? $value->getPort()->getPortMpo()->getAlias() != "" ? $value->getPort()->getPortMpo()->getAlias() . "|" : $value->getPort()->getPortMpo()->getOrderNo() . "|" : "";
$portAOrderNos[$value->getOrderNumber() - 1] = $tempMpo . ($value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo());
// $portAOrderNos[$value->getOrderNumber()-1] = ($value->getPort()->getAlias()) ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsA = $ext->getExtremityA()->getPorts();
// foreach ($portsA as $p) {
// $portAOrderNos[$p->getOrderNoExtension()-1] = $p->getOrderNo();
// }
$portAOrderNos = array_unique($portAOrderNos);
ksort($portAOrderNos);
$extension['portA'] = implode("/", $portAOrderNos);
$portsB = [];
$portBOrderNos = array();
$portsBTemp = $ext->getExtremityB()->getExtensionOrder();
foreach ($portsBTemp as $value) {
$portsB[] = $value->getPort();
$tempMpo = $value->getPort()->getPortMpo() ? $value->getPort()->getPortMpo()->getAlias() != "" ? $value->getPort()->getPortMpo()->getAlias() . "|" : $value->getPort()->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[$value->getOrderNumber() - 1] = $tempMpo . ($value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo());
// $portBOrderNos[$value->getOrderNumber()-1] = ($value->getPort()->getAlias()) ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsB = $ext->getExtremityB()->getPorts();
// $portBOrderNos = array();
// foreach ($portsB as $p) {
// $portBOrderNos[$p->getOrderNoExtension()-1] = $p->getOrderNo();
// }
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// set other properties on side A of extension object
$interfaceSpecTemp = $portsA[0]->getPortMpo() ? $portsA[0]->getPortMpo()->getInterfaceSpecific() : $portsA[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteA'] = $roomTemp->getSite()->getTitle();
$extension['roomA'] = $roomTemp->getTitle();
$extension['rackA'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentA'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentA'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentA'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceA'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceA'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceA'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// if ($eqSpe->isModule()) {
// $extension['equipmentA'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
// }
// else {
// $extension['equipmentA'] = $eqSpe->getEquipmentSpecificName().' ('.$eqSpe->getEquipmentGeneric()->getTitle().')';
// }
// // $extension['equipmentA'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceA'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
// set other properties on side B of extension object
$interfaceSpecTemp = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific() : $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// if ($eqSpe->isModule()) {
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
// }
// else {
// $extension['equipmentB'] = $eqSpe->getEquipmentSpecificName().' ('.$eqSpe->getEquipmentGeneric()->getTitle().')';
// }
// // $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// var_dump($extension);
// $fiberNo = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->noFibersInExtension($link, $linkExtensionSequenceNo);
//
// if ($fiberNo > 1){
//
// $portsA = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->getPortsABySequence($link, $linkExtensionSequenceNo);
// $portsB = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->getPortsBBySequence($link, $linkExtensionSequenceNo);
//
// $extension['portA'] = '';
// $extension['portB'] = '';
//
// $portsAIDS = [];
// $portsBIDS = [];
//
// foreach ($portsA as $portID){
//
// $port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
//
// $extension['siteA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceA'] = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
//
// if (!in_array($portID,$portsAIDS)){
// $extension['portA'] .= $port->getOrderNo().'/';
//
// }
//
// $portsAIDS[] = $portID;
//
// }
//
// $extension['portA'] = substr($extension['portA'], 0, -1);
//
// $extension['portB_temp'] = '';
//
// foreach ($portsB as $portID){
//
// $port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
//
// $extension['siteB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
//
// if (!in_array($portID,$portsBIDS)){
// $extension['portB_temp'] .= $port->getOrderNo().'/';
// }
//
// $portsBIDS[] = $portID;
//
// }
//
//
// $extension['portB'] = substr($extension['portB_temp'], 0, -1);
//
//
// } else {
//
// $extension['siteA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $extension['portA'] = $ext->getExtremityA()->getPorts()[0]->getOrderNo();
//
// $extension['siteB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $extension['portB'] = $ext->getExtremityB()->getPorts()[0]->getOrderNo();
//
// }
if (!in_array($linkExtensionSequenceNo, $sequence) && $extIsTrunkAndHasExtensions == 0) {
$extensions[] = $extension;
}
$sequence[] = $linkExtensionSequenceNo;
}
for ($i = 0; $i < count($extensions); $i++) {
if ($i < count($extensions) - 1) {
if ($extensions[$i]['portB'] == $extensions[$i + 1]['portA']) {
$extensions[$i]['portsB'] = $extensions[$i]['portB'];
} else {
$extensions[$i]['portsB'] = 'E: ' . $extensions[$i]['portB'] . ' | S: ' . $extensions[$i + 1]['portA'];
}
} else {
$extensions[$i]['portsB'] = $extensions[$i]['portB'];
}
}
//return $this->json($extensions);
return $this->render('link/diagram.html.twig', [
'page_title' => $translator->trans('Link Diagram'),
'link' => $link,
'extensions' => $extensions,
"referer" => $request->headers->get('referer')
]);
}
/**
* @Route("/api/link/diagram/{id}", name="api_link_diagram")
*/
public function apiLinkDiagramAction($id, Request $request, TranslatorInterface $translator, TCPDFController $tcpdf)
{
$em = $this->getDoctrine()->getManager();
$id = strtoupper($id);
$link = $em->getRepository(Link::class)->findOneByLinkID($id);
if (!$link) {
return $this->json(['error' => 'Link ' . $id . ' n\'existe pas']);
}
$extensions = [];
$sequence = [];
$e = 1;
$t = 0;
$tsn = 0;
//get all the link extensions
$linkExtensions = $link->getLinkExtension();
foreach ($linkExtensions as $ext) {
$reverseTrunk = false;
// var_dump("link ext: ".$ext->getId());
$linkExtensionSequenceNo = $ext->getSequenceNo(); //If "1" that means, its first link extension
$linkExtensionTrunk = $ext->getTrunk(); //get the trunk if exists
$extIsTrunkAndHasExtensions = 0;
$tcfExtsFromB = null;
if (is_null($linkExtensionTrunk)) { // if it doesn't have trunk
// var_dump("trunk is null");
$e = $linkExtensionSequenceNo - $t;
if ($e > 1) {
$extension['ext'] = 'E' . ($e - 1);
} else {
$extension['ext'] = '';
}
$extension['label'] = $link->getLinkID();
} else {
// var_dump("trunk id: ".$linkExtensionTrunk->getId());
if ($linkExtensionSequenceNo != $tsn) {
$tcfs = $linkExtensionTrunk->getCableFiber();
foreach ($tcfs as $tcf) {
$trunkExts = $tcf->getExtensions();
if (sizeof($trunkExts) > 0) {
$extIsTrunkAndHasExtensions = 1;
}
}
if ($extIsTrunkAndHasExtensions == 0) {
// var_dump("trunk doesn't have extension");
$extension['ext'] = $linkExtensionTrunk->getOperatorID();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
} else {
// var_dump("trunk has extensions");
$portsA = [];
$portAOrderNos = array();
$portsATemp = $ext->getExtremityA()->getExtensionOrder();
foreach ($portsATemp as $value) {
$portsA[] = $value->getPort();
$tempMpo = $value->getPort()->getPortMpo() ? $value->getPort()->getPortMpo()->getAlias() != "" ? $value->getPort()->getPortMpo()->getAlias() . "|" : $value->getPort()->getPortMpo()->getOrderNo() . "|" : "";
$portAOrderNos[$value->getOrderNumber() - 1] = $tempMpo . ($value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo());
// $portAOrderNos[$value->getOrderNumber()-1] = ($value->getPort()->getAlias()) ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsA = $ext->getExtremityA()->getPorts();
// var_dump("extremity A id: ".$ext->getExtremityA()->getId());
// var_dump("nombre de ports", count($portsA));
// set other properties on side A of extension object
$interfaceSpecTemp = $portsA[0]->getPortMpo() ? $portsA[0]->getPortMpo()->getInterfaceSpecific() : $portsA[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteA'] = $roomTemp->getSite()->getTitle();
$extension['roomA'] = $roomTemp->getTitle();
$extension['rackA'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentA'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentA'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentA'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentA'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentA'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceA'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceA'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceA'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// first trunk extension
$portsB = [];
$tcfsForExts = [];
$tcfsExts = [];
$tcfExtsFromB = null;
$duplex = false;
if ($link->getTypeLink()->getTitle() == "Duplex" && count($portsA) == 1 || ($link->getTypeLink()->getTitle() != "Simplex" && count($portsA) == 1)) {
$duplex = true;
}
// var_dump($duplex);
foreach ($portsA as $port) {
// $portAOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$tcfFromA = null;
$tcfFromB = null;
$tcfExtFromB = null;
if ($duplex) {
$tcfFromA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findBy(['portA' => $port]);
// var_dump($tcfFromA->getId());
$tcfFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findBy(['portB' => $port]);
// var_dump($tcfFromB->getId());
$tcfExtFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findBy(['portB' => $port]);
foreach ($tcfFromA as $temp) {
$portB = $temp->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $temp;
}
foreach ($tcfFromB as $temp) {
$portB = $temp->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $temp;
}
foreach ($tcfExtFromB as $temp) {
$tcfExtsFromB[] = $temp;
$reverseTrunk = true;
}
} else {
$tcfFromA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(['portA' => $port]);
// var_dump($tcfFromA->getId());
$tcfFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(['portB' => $port]);
// var_dump($tcfFromB->getId());
$tcfExtFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['portB' => $port]);
if ($tcfFromA) {
$portB = $tcfFromA->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $tcfFromA;
// var_dump($portB->getId());
}
if ($tcfFromB) {
$portB = $tcfFromB->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $tcfFromB;
// var_dump($portB->getId());
}
//to treat the reverse case
if ($tcfExtFromB) {
// var_dump($tcfExtFromB);
$tcfExtsFromB[] = $tcfExtFromB;
$reverseTrunk = true;
}
}
}
$portAOrderNos = array_unique($portAOrderNos);
ksort($portAOrderNos);
$extension['portA'] = implode("/", $portAOrderNos);
if ($reverseTrunk) {
// var_dump("in reverse trunk");
$portsArrayArray = array();
if (count($tcfExtsFromB) > 0) {
$tcfsForExts = array();
foreach ($tcfExtsFromB as $tcfExt) {
$tcfsForExts[] = $tcfExt->getTrunkCableFiber();
}
for ($i = 1; $i <= count($tcfsForExts[0]->getExtensions()); $i++) {
$portArray = [];
foreach ($tcfsForExts as $tempTcf) {
// get the extensions of sequence $i
$tempExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['trunkCableFiber' => $tempTcf, "sequenceNo" => $i]);
// var_dump($tempExt);
if ($tempExt) {
$portArray[] = $tempExt->getPortB();
}
}
$portsArrayArray[] = $portArray;
// var_dump($portsArrayArray);
}
// var_dump($portsArrayArray);
$tcf = $tcfsForExts[0];
$tcfExts = $tcf->getExtensions();
// var_dump($tcfExts);
for ($i = count($tcfExts) - 1; $i >= 0; $i--) {
$portsB = null;
if ($i == 0) {
foreach ($tcfsForExts as $tempTcf) {
$portsB[] = $tempTcf->getPortB();
}
$extension['color'] = $linkExtensionTrunk->getTypeCable()->getColor();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $tcfExts[$i]->getOperatorID();
$extension['portA'] = $extension['portB'];
// $operatorID = $tcfsForExts[0]->getOperatorID();
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific() : $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$tempMpo = $port->getPortMpo() ? $port->getPortMpo()->getAlias() != "" ? $port->getPortMpo()->getAlias() . "|" : $port->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[] = $tempMpo . ($port->getAlias() != "" ? $port->getAlias() : $port->getOrderNo());
// $portBOrderNos[] = ($port->getAlias()) ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
} else {
$portsB = $portsArrayArray[$i - 1];
$extension['color'] = $linkExtensionTrunk->getTypeCable()->getColor();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $tcfExts[$i]->getOperatorID();
$extension['portA'] = $extension['portB'];
$operatorID = $tcfExts[$i]->getOperatorID();
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific() : $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$tempMpo = $port->getPortMpo() ? $port->getPortMpo()->getAlias() != "" ? $port->getPortMpo()->getAlias() . "|" : $port->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[] = $tempMpo . ($port->getAlias() != "" ? $port->getAlias() : $port->getOrderNo());
// $portBOrderNos[] = ($port->getAlias()) ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
}
}
// var_dump($tcfsForExts);
$portsB = null;
foreach ($tcfsForExts as $tempTcf) {
$portsB[] = $tempTcf->getPortA();
}
// var_dump($portsB);
}
} else {
$extension['portB_temp'] = '';
$portBOrderNos = array();
if ($portsB[0]) {
$interfaceSpecTemp = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific() : $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// if ($eqSpe->isModule()) {
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
// }
// else {
// $extension['equipmentB'] = $eqSpe->getEquipmentSpecificName().' ('.$eqSpe->getEquipmentGeneric()->getTitle().')';
// }
// // $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
$tempMpo = $port->getPortMpo() ? $port->getPortMpo()->getAlias() != "" ? $port->getPortMpo()->getAlias() . "|" : $port->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[] = $tempMpo . ($port->getAlias() != "" ? $port->getAlias() : $port->getOrderNo());
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
// $portBOrderNos[] = ($port->getAlias()) ? $port->getAlias() : $port->getOrderNo();
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
$extension['ext'] = $linkExtensionTrunk->getOperatorID();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['color'] = $linkExtensionTrunk->getTypeCable()->getColor();
$extensions[] = $extension;
// other trunk extensions
// get the ports for the extensions
$portsArrayArray = array();
if (count($tcfsForExts) > 0) {
for ($i = 1; $i <= count($tcfsForExts[0]->getExtensions()); $i++) {
$portArray = [];
foreach ($tcfsForExts as $tempTcf) {
// get the extensions of sequence $i
$tempExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['trunkCableFiber' => $tempTcf, "sequenceNo" => $i]);
// var_dump($tempExt);
if ($tempExt) {
$portArray[] = $tempExt->getPortB();
}
}
$portsArrayArray[] = $portArray;
}
// var_dump($portsArrayArray);
$tcf = $tcfsForExts[0];
$tcfExts = $tcf->getExtensions();
$iterator = 0;
foreach ($tcfExts as $tcfExt) {
// var_dump($tcfExt->getId());
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $tcfExt->getOperatorID();
$extension['color'] = $tcfExt->getTypeCable()->getColor();
$extension['portA'] = $extension['portB'];
$operatorID = $tcfExt->getOperatorID();
$portsB = $portsArrayArray[$iterator++];
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// if ($eqSpe->isModule()) {
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
// }
// else {
// $extension['equipmentB'] = $eqSpe->getEquipmentSpecificName().' ('.$eqSpe->getEquipmentGeneric()->getTitle().')';
// }
// // $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$tempMpo = $port->getPortMpo() ? $port->getPortMpo()->getAlias() != "" ? $port->getPortMpo()->getAlias() . "|" : $port->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[] = $tempMpo . ($port->getAlias() != "" ? $port->getAlias() : $port->getOrderNo());
// $portBOrderNos[] = ($port->getAlias()) ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
}
}
}
}
}
$tsn = $linkExtensionSequenceNo;
$t++;
}
}
if ($reverseTrunk) {
$extension['color'] = $linkExtensionTrunk->getTypeCable()->getColor();
$extension['label'] = $linkExtensionTrunk->getTrunkID();
$extension['ext'] = $linkExtensionTrunk->getOperatorID();
$extension['portA'] = $extension['portB'];
// $operatorID = $tcfsForExts[0]->getOperatorID();
// $portB = $tcfExt->getPortB();
// $portsB[] = $portB;
$extension['portB'] = '';
$portsBIDS = [];
$extension['portB_temp'] = '';
$interfaceSpecTemp = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific() : $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// if ($eqSpe->isModule()) {
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
// }
// else {
// $extension['equipmentB'] = $eqSpe->getEquipmentSpecificName().' ('.$eqSpe->getEquipmentGeneric()->getTitle().')';
// }
// // $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
$portBOrderNos = array();
foreach ($portsB as $portID) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
// $portBOrderNos[$port->getOrderNoExtension()-1] = $port->getOrderNo();
$tempMpo = $port->getPortMpo() ? $port->getPortMpo()->getAlias() != "" ? $port->getPortMpo()->getAlias() . "|" : $port->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[] = $tempMpo . ($port->getAlias() != "" ? $port->getAlias() : $port->getOrderNo());
// $portBOrderNos[] = ($port->getAlias()) ? $port->getAlias() : $port->getOrderNo();
$portsBIDS[] = $portID;
}
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// var_dump($extension['portB']);
$extensions[] = $extension;
} else {
if ($ext->getTypeCable()) {
$extension['color'] = $ext->getTypeCable()->getColor();
} else {
$extension['color'] = $ext->getTrunk()->getTypeCable()->getColor();
}
//set ports on extension object
$portsA = [];
$portAOrderNos = array();
$portsATemp = $ext->getExtremityA()->getExtensionOrder();
foreach ($portsATemp as $value) {
$portsA[] = $value->getPort();
$tempMpo = $value->getPort()->getPortMpo() ? $value->getPort()->getPortMpo()->getAlias() != "" ? $value->getPort()->getPortMpo()->getAlias() . "|" : $value->getPort()->getPortMpo()->getOrderNo() . "|" : "";
$portAOrderNos[$value->getOrderNumber() - 1] = $tempMpo . ($value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo());
// $portAOrderNos[$value->getOrderNumber()-1] = ($value->getPort()->getAlias()) ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsA = $ext->getExtremityA()->getPorts();
// foreach ($portsA as $p) {
// $portAOrderNos[$p->getOrderNoExtension()-1] = $p->getOrderNo();
// }
$portAOrderNos = array_unique($portAOrderNos);
ksort($portAOrderNos);
$extension['portA'] = implode("/", $portAOrderNos);
$portsB = [];
$portBOrderNos = array();
$portsBTemp = $ext->getExtremityB()->getExtensionOrder();
foreach ($portsBTemp as $value) {
$portsB[] = $value->getPort();
$tempMpo = $value->getPort()->getPortMpo() ? $value->getPort()->getPortMpo()->getAlias() != "" ? $value->getPort()->getPortMpo()->getAlias() . "|" : $value->getPort()->getPortMpo()->getOrderNo() . "|" : "";
$portBOrderNos[$value->getOrderNumber() - 1] = $tempMpo . ($value->getPort()->getAlias() != "" ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo());
// $portBOrderNos[$value->getOrderNumber()-1] = ($value->getPort()->getAlias()) ? $value->getPort()->getAlias() : $value->getPort()->getOrderNo();
}
// $portsB = $ext->getExtremityB()->getPorts();
// $portBOrderNos = array();
// foreach ($portsB as $p) {
// $portBOrderNos[$p->getOrderNoExtension()-1] = $p->getOrderNo();
// }
$portBOrderNos = array_unique($portBOrderNos);
ksort($portBOrderNos);
$extension['portB'] = implode("/", $portBOrderNos);
// set other properties on side A of extension object
$interfaceSpecTemp = $portsA[0]->getPortMpo() ? $portsA[0]->getPortMpo()->getInterfaceSpecific() : $portsA[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteA'] = $roomTemp->getSite()->getTitle();
$extension['roomA'] = $roomTemp->getTitle();
$extension['rackA'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentA'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentA'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentA'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceA'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceA'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceA'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// if ($eqSpe->isModule()) {
// $extension['equipmentA'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
// }
// else {
// $extension['equipmentA'] = $eqSpe->getEquipmentSpecificName().' ('.$eqSpe->getEquipmentGeneric()->getTitle().')';
// }
// // $extension['equipmentA'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceA'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
// set other properties on side B of extension object
$interfaceSpecTemp = $portsB[0]->getPortMpo() ? $portsB[0]->getPortMpo()->getInterfaceSpecific() : $portsB[0]->getInterfaceSpecific();
$eqSpe = $interfaceSpecTemp->getEquipmentSpecificMpo() ? $interfaceSpecTemp->getEquipmentSpecificMpo() : $interfaceSpecTemp->getEquipmentSpecific();
$rackTemp = $eqSpe->getRack();
$roomTemp = $rackTemp->getRoom();
$extension['siteB'] = $roomTemp->getSite()->getTitle();
$extension['roomB'] = $roomTemp->getTitle();
$extension['rackB'] = $rackTemp->getTitle();
if ($eqSpe->isModule()) {
$extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} elseif ($eqSpe->isChassisModule()) {
$extension['equipmentB'] = $eqSpe->getChassisParent()->getEquipmentSpecificName() . ' (' . $eqSpe->getChassisParent()->getEquipmentGeneric()->getTitle() . ')';
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
} else {
$extension['equipmentB'] = $eqSpe->getEquipmentSpecificName() . ' (' . $eqSpe->getEquipmentGeneric()->getTitle() . ')';
}
if ($eqSpe->isModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} elseif ($eqSpe->isChassisModule()) {
$extension['interfaceB'] = $eqSpe->getEquipmentSpecificName() . '-' . $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
} else {
$extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// if ($eqSpe->isModule()) {
// $extension['equipmentB'] = $eqSpe->getParent()->getEquipmentSpecificName(). 'â•‘' . $eqSpe->getEquipmentSpecificName() .' ('.$eqSpe->getParent()->getEquipmentGeneric()->getTitle().')';
// }
// else {
// $extension['equipmentB'] = $eqSpe->getEquipmentSpecificName().' ('.$eqSpe->getEquipmentGeneric()->getTitle().')';
// }
// // $extension['equipmentB'] = $interfaceSpecTemp->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$interfaceSpecTemp->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $interfaceSpecTemp->getInterfaceGeneric()->getInterfaceNumber();
}
// var_dump($extension);
// $fiberNo = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->noFibersInExtension($link, $linkExtensionSequenceNo);
//
// if ($fiberNo > 1){
//
// $portsA = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->getPortsABySequence($link, $linkExtensionSequenceNo);
// $portsB = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->getPortsBBySequence($link, $linkExtensionSequenceNo);
//
// $extension['portA'] = '';
// $extension['portB'] = '';
//
// $portsAIDS = [];
// $portsBIDS = [];
//
// foreach ($portsA as $portID){
//
// $port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
//
// $extension['siteA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceA'] = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
//
// if (!in_array($portID,$portsAIDS)){
// $extension['portA'] .= $port->getOrderNo().'/';
//
// }
//
// $portsAIDS[] = $portID;
//
// }
//
// $extension['portA'] = substr($extension['portA'], 0, -1);
//
// $extension['portB_temp'] = '';
//
// foreach ($portsB as $portID){
//
// $port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
//
// $extension['siteB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
//
// if (!in_array($portID,$portsBIDS)){
// $extension['portB_temp'] .= $port->getOrderNo().'/';
// }
//
// $portsBIDS[] = $portID;
//
// }
//
//
// $extension['portB'] = substr($extension['portB_temp'], 0, -1);
//
//
// } else {
//
// $extension['siteA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceA'] = $ext->getExtremityA()->getPorts()[0]->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $extension['portA'] = $ext->getExtremityA()->getPorts()[0]->getOrderNo();
//
// $extension['siteB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// $extension['roomB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// $extension['rackB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentGeneric()->getTitle().' ('.$ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName().')';
// $extension['interfaceB'] = $ext->getExtremityB()->getPorts()[0]->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $extension['portB'] = $ext->getExtremityB()->getPorts()[0]->getOrderNo();
//
// }
if (!in_array($linkExtensionSequenceNo, $sequence) && $extIsTrunkAndHasExtensions == 0) {
$extensions[] = $extension;
}
$sequence[] = $linkExtensionSequenceNo;
}
for ($i = 0; $i < count($extensions); $i++) {
if ($i < count($extensions) - 1) {
if ($extensions[$i]['portB'] == $extensions[$i + 1]['portA']) {
$extensions[$i]['portsB'] = $extensions[$i]['portB'];
} else {
$extensions[$i]['portsB'] = 'E: ' . $extensions[$i]['portB'] . ' | S: ' . $extensions[$i + 1]['portA'];
}
} else {
$extensions[$i]['portsB'] = $extensions[$i]['portB'];
}
}
// return $this->render('link/diagram_pdf.html.twig', [
// 'page_title' => $translator->trans('Link Diagram'),
// 'link' => $link,
// 'extensions' => $extensions,
// "referer" => $request->headers->get('referer')
// ]);
$html = $this->renderView(
'link/diagram_pdf.html.twig',
[
'link' => $link,
'extensions' => $extensions
]
);
$heightExt = 30 + (sizeof($extensions) + 1) * 48;
$pdf = $tcpdf->create('P', PDF_UNIT, array(120, $heightExt), true, 'UTF-8', false);
$pdf->SetAuthor('FIBERLINK');
$pdf->SetTitle('Link ' . $link->getLinkID());
$pdf->SetSubject('Link ' . $link->getLinkID());
$pdf->setFontSubsetting(true);
$pdf->SetFont('helvetica', '', 7, '', true);
// remove default header/footer
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->setMargins(2, -3, 2, false); //left, top, right
$pdf->SetAutoPageBreak(TRUE, 0);
$pdf->AddPage();
$filename = $this->container->get('kernel')->getRootDir() . '/../web/uploads/link-' . $link->getLinkID();
// $filename = 'link-'.$link->getLinkID();
$pdf->writeHTML($html, true, false, true, false, '');
ob_end_clean();
$pdf->Output($filename . ".pdf", 'F'); // This will save the PDF to the directory
$pdf = new \Spatie\PdfToImage\Pdf($filename . ".pdf");
$pdf->setOutputFormat('png')
->saveImage($filename . '.png');
// ob_end_clean();
return new BinaryFileResponse(
$filename . ".png"
);
// return null;
// $html = $this->renderView('link/diagram_pdf.html.twig', [
// 'link' => $link,
// 'extensions' => $extensions
// ]
// );
// $filename = 'link-'.$link->getLinkID() . '.png';
// return new JpegResponse(
// $this->get('knp_snappy.image')->getOutputFromHtml($html),
// $filename
// );
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/process/basic", name="link_edit_basic")
*/
public function editBasicAction(Request $request, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$link = $this->getDoctrine()->getRepository('App\Entity\Link')->findOneById($request->request->get('link_id'));
$link->setLinkID($request->request->get('linkID'));
$link->setOwner($request->request->get('owner'));
$link->setTypeUsage($this->getDoctrine()->getRepository('App\Entity\TypeUsage')->findOneById($request->request->get('typeUsage')));
$link->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->findOneById($request->request->get('typeLink')));
$em->persist($link);
$em->flush();
return $this->redirectToRoute('link_list');
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/edit/fiber/{id}", name="link_edit_fiber")
*/
public function editFiberAction($id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$extension = $em->getRepository(LinkExtension::class)->find($id);
$link = $extension->getLink();
$sites = $this->getDoctrine()->getRepository('App\Entity\Site')->findBy([], ['title' => 'ASC']);
$eqGeneric = $this->getDoctrine()->getRepository('App\Entity\EquipmentGeneric')->findBy([], ['title' => 'ASC']);
$racks = $this->getDoctrine()->getRepository('App\Entity\Rack')->findBy([], ['title' => 'ASC']);
$rackFaces = $this->getDoctrine()->getRepository('App\Entity\RackFace')->findAll();
$typeCable = $this->getDoctrine()->getRepository('App\Entity\TypeCable')->findAll();
// $portsATemp = $extension->getExtremityA()->getPorts();
$portsATemp = $extension->getExtremityA()->getExtensionOrder();
// $portsBTemp = $extension->getExtremityB()->getPorts();
$portsBTemp = $extension->getExtremityB()->getExtensionOrder();
$portsA = array();
foreach ($portsATemp as $p) {
$portsA[] = $p->getPort();
}
$portsB = array();
foreach ($portsBTemp as $p) {
$portsB[] = $p->getPort();
}
return $this->render('link/edit_fiber.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Edit Cable / Fiber'),
'box_title' => '<i class="fa fa-edit fa-fw"></i> ' . $translator->trans('Edit'),
'extension' => $extension,
'sites' => $sites,
'eqGeneric' => $eqGeneric,
'racks' => $racks,
'rackFaces' => $rackFaces,
'link' => $link,
'typeCable' => $typeCable,
'portsA' => $portsA,
'portsB' => $portsB
]);
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/edit/process/fiber", name="link_edit_process_fiber")
*/
public function editProcessFiberAction(Request $request, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$extension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneById($request->request->get('extension_id'));
$trunk = $extension->getTrunk();
$link = $extension->getLink();
$typeCable = $this->getDoctrine()->getRepository('App\Entity\TypeCable')->findOneById($request->request->get('typeCable'));
$portsA = array();
$portsB = array();
$portsAOld = array();
$portA2 = null;
$portA3 = null;
$portA4 = null;
$portA5 = null;
$portA6 = null;
$portA7 = null;
$portA8 = null;
$portA9 = null;
$portA10 = null;
$portA11 = null;
$portA12 = null;
$portB2 = null;
$portB3 = null;
$portB4 = null;
$portB5 = null;
$portB6 = null;
$portB7 = null;
$portB8 = null;
$portB9 = null;
$portB10 = null;
$portB11 = null;
$portB12 = null;
// get selected ports
$portA1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA_1'));
$portsA["portA1"] = $portA1;
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointA_' . $i) != "") {
$temp = "portA" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA_' . $i));
$portsA[$temp] = $$temp;
}
}
// if ($request->request->get('pointA_2') != "") {
// $portA2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA_2'));
// }
$portB1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB_1'));
$portsB[] = $portB1;
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointB_' . $i) != "") {
$temp = "portB" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB_' . $i));
$portsB[$temp] = $$temp;
}
}
// if ($request->request->get('pointB_2') != "") {
// $portB2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB_2'));
// }
//get old ports
$portOldA2 = null;
$portOldA3 = null;
$portOldA4 = null;
$portOldA5 = null;
$portOldA6 = null;
$portOldA7 = null;
$portOldA8 = null;
$portOldA9 = null;
$portOldA10 = null;
$portOldA11 = null;
$portOldA12 = null;
$portOldB2 = null;
$portOldB3 = null;
$portOldB4 = null;
$portOldB5 = null;
$portOldB6 = null;
$portOldB7 = null;
$portOldB8 = null;
$portOldB9 = null;
$portOldB10 = null;
$portOldB11 = null;
$portOldB12 = null;
// get selected portOlds
$portOldA1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointOldA_1'));
$portsAOld[] = $portOldA1;
// if ($request->request->get('pointOldA_2') != "") {
// $portOldA2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointOldA_2'));
// $portsAOld[] = $portOldA2;
// }
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointOldA_' . $i) != "") {
$temp = "portOldA" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointOldA_' . $i));
$portsAOld[] = $$temp;
}
}
$portOldB1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointOldB_1'));
for ($i = 2; $i <= 12; $i++) {
if ($request->request->get('pointOldB_' . $i) != "") {
$temp = "portOldB" . $i;
$$temp = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointOldB_' . $i));
// $portsBOld[] = $$temp;
}
}
// if ($request->request->get('pointOldB_2') != "") {
// $portOldB2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointOldB_2'));
// }
//check if it's a trunk
if ($trunk) {
for ($i = 1; $i <= 12; $i++) {
$temp = "portA" . $i;
if ($$temp && !$this->isInTrunk($$temp)) {
$this->addFlash(
'error',
'l\'un des ports Choisis n\'est pas dans trunk'
);
$redirect = true;
break;
}
}
// if (!$this->isInTrunk($portA1)) {
// $this->addFlash(
// 'error',
// 'l\'un des ports Choisis n\'est pas dans trunk'
// );
// $redirect = true;
// }
//
// if ($portA2 && !$this->isInTrunk($portA2)) {
// $this->addFlash(
// 'error',
// 'l\'un des ports Choisis n\'est pas dans trunk'
// );
// $redirect = true;
// }
for ($i = 1; $i <= 12; $i++) {
$temp = "portB" . $i;
if ($$temp && !$this->isInTrunk($$temp)) {
$this->addFlash(
'error',
'l\'un des ports Choisis n\'est pas dans trunk'
);
$redirect = true;
break;
}
}
// if (!$this->isInTrunk($portB1)) {
// $this->addFlash(
// 'error',
// 'l\'un des ports Choisis n\'est pas dans trunk'
// );
// $redirect = true;
// }
// if ($portB2 && !$this->isInTrunk($portB2)) {
// $this->addFlash(
// 'error',
// 'l\'un des ports Choisis n\'est pas dans trunk'
// );
// $redirect = true;
// }
if ($redirect) {
return $this->redirectToRoute('link_view', array('id' => $link->getId()));
}
// getOtherPorts used by the link
//unset old ports
$ports = $this->getPorts($trunk, $portsAOld, $link->getTypeLink());
foreach ($ports as $port) {
$port->setLink(null);
$port->setLinkExtension(null);
$em->persist($port);
}
if (($portA1->getId() != $portOldA1->getId() && $portB1->getId() != $portOldB1->getId()) || $portA1->getId() != $portOldA1->getId()) {
for ($i = 1; $i <= 12; $i++) {
$temp = "portA" . $i;
if ($$temp) {
$trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($$temp);
if ($trunkExtTemp) {
$tcfTemp = $trunkExtTemp->getTrunkCableFiber();
if ($i > 1) {
$tempPortB2 = $tcfTemp->getPortA();
$temp1 = "portB" . ($i - 1);
if ($$temp1->getId() != $tempPortB2->getId()) {
$temp2 = "portB" . $i;
$$temp2 = $tempPortB2;
}
} else {
$portB1 = $tcfTemp->getPortA();
}
} else {
$tcfTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($$temp);
if ($tcfTemp) {
$lenTemp = count($tcfTemp->getExtensions());
if ($lenTemp > 0) {
$trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(["trunkCableFiber" => $tcfTemp, "sequenceNo" => $lenTemp]);
if ($i > 1) {
$tempPortB2 = $trunkExtTemp->getPortB();
$temp1 = "portB" . ($i - 1);
if ($$temp1->getId() != $tempPortB2->getId()) {
$temp2 = "portB" . $i;
$$temp2 = $tempPortB2;
}
} else {
$portB1 = $trunkExtTemp->getPortB();
}
} else {
if ($i > 1) {
$tempPortB2 = $tcfTemp->getPortB();
$temp1 = "portB" . ($i - 1);
if ($$temp1->getId() != $tempPortB2->getId()) {
$temp2 = "portB" . $i;
$$temp2 = $tempPortB2;
}
} else {
$portB1 = $tcfTemp->getPortB();
}
}
}
}
}
}
// $trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portA1);
// if ($trunkExtTemp) {
// $tcfTemp = $trunkExtTemp->getTrunkCableFiber();
// $portB1 = $tcfTemp->getPortA();
// }
// else {
// $tcfTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portA1);
// if ($tcfTemp) {
// $lenTemp = count($tcfTemp->getExtensions());
// if ($lenTemp > 0) {
// $trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(["trunkCableFiber"=>$tcfTemp, "sequenceNo"=>$lenTemp]);
// $portB1 = $trunkExtTemp->getPortB();
// }
// else {
// $portB1 = $tcfTemp->getPortB();
// }
// }
//
// }
// if ($portA2) {
// $trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portA2);
// if ($trunkExtTemp) {
// $tcfTemp = $trunkExtTemp->getTrunkCableFiber();
// $tempPortB2 = $tcfTemp->getPortA();
// if ($portB1->getId() != $tempPortB2->getId()) {
// $portB2 = $tempPortB2;
// }
// }
// else {
// $tcfTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portA2);
// if ($tcfTemp) {
// $lenTemp = count($tcfTemp->getExtensions());
// if ($lenTemp > 0) {
// $trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(["trunkCableFiber"=>$tcfTemp, "sequenceNo"=>$lenTemp]);
// $tempPortB2 = $trunkExtTemp->getPortB();
// if ($portB1->getId() != $tempPortB2->getId()) {
// $portB2 = $tempPortB2;
// }
// }
// else {
// $tempPortB2 = $tcfTemp->getPortB();
// if ($portB1->getId() != $tempPortB2->getId()) {
// $portB2 = $tempPortB2;
// }
// }
// }
// }
// }
} elseif ($portB1->getId() != $portOldB1->getId()) {
for ($i = 1; $i <= 12; $i++) {
$temp = "portB" . $i;
if ($$temp) {
$trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($$temp);
if ($trunkExtTemp) {
$tcfTemp = $trunkExtTemp->getTrunkCableFiber();
if ($i > 1) {
$tempPortA2 = $tcfTemp->getPortA();
$temp1 = "portA" . ($i - 1);
if ($$temp1->getId() != $tempPortA2->getId()) {
$temp2 = "portA" . $i;
$$temp2 = $tempPortA2;
}
} else {
$portA1 = $tcfTemp->getPortA();
}
} else {
$tcfTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($$temp);
if ($tcfTemp) {
$lenTemp = count($tcfTemp->getExtensions());
if ($lenTemp > 0) {
$trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(["trunkCableFiber" => $tcfTemp, "sequenceNo" => $lenTemp]);
if ($i > 1) {
$tempPortA2 = $trunkExtTemp->getPortB();
$temp1 = "portA" . ($i - 1);
if ($$temp1->getId() != $tempPortA2->getId()) {
$temp2 = "portA" . $i;
$$temp2 = $tempPortA2;
}
} else {
$portA1 = $trunkExtTemp->getPortB();
}
} else {
if ($i > 1) {
$tempPortA2 = $tcfTemp->getPortB();
$temp1 = "portA" . ($i - 1);
if ($$temp1->getId() != $tempPortA2->getId()) {
$temp2 = "portA" . $i;
$$temp2 = $tempPortA2;
}
} else {
$portA1 = $tcfTemp->getPortB();
}
}
}
}
}
}
// $trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portB1);
// if ($trunkExtTemp) {
// $tcfTemp = $trunkExtTemp->getTrunkCableFiber();
// $portA1 = $tcfTemp->getPortA();
// }
// else {
// $tcfTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portB1);
// if ($tcfTemp) {
// $lenTemp = count($tcfTemp->getExtensions());
// if ($lenTemp > 0) {
// $trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(["trunkCableFiber"=>$tcfTemp, "sequenceNo"=>$lenTemp]);
// $portA1 = $trunkExtTemp->getPortB();
// }
// else {
// $portA1 = $tcfTemp->getPortB();
// }
// }
// }
// if ($portB2) {
// $trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portB2);
// if ($trunkExtTemp) {
// $tcfTemp = $trunkExtTemp->getTrunkCableFiber();
// $tempPortA2 = $tcfTemp->getPortA();
// if ($portA1->getId() != $tempPortA2->getId()) {
// $portA2 = $tempPortA2;
// }
// }
// else {
// $tcfTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portB2);
// if ($tcfTemp) {
// $lenTemp = count($tcfTemp->getExtensions());
// if ($lenTemp > 0) {
// $trunkExtTemp = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(["trunkCableFiber"=>$tcfTemp, "sequenceNo"=>$lenTemp]);
// $tempPortA2 = $trunkExtTemp->getPortB();
// if ($portA1->getId() != $tempPortA2->getId()) {
// $portA2 = $tempPortA2;
// }
// }
// else {
// $tempPortA2 = $tcfTemp->getPortB();
// if ($portA1->getId() != $tempPortA2->getId()) {
// $portA2 = $tempPortA2;
// }
// }
// }
//
// }
// }
}
//set new ports
//ADDED on 16/01/2020
$trunk = $this->getTrunkByPortId($portA1);
//END
$ports = $this->getPorts($trunk, $portsA, $link->getTypeLink());
foreach ($ports as $port) {
$port->setLink($link);
$port->setLinkExtension($extension);
$em->persist($port);
}
}
$nPortsA = $portA1->getInterfaceSpecific()->getInterfaceGeneric()->getNPorts();
if ($nPortsA) {
$nPortsA = json_decode($nPortsA);
} else {
$nPortsA = [];
}
$nPortsB = $portB1->getInterfaceSpecific()->getInterfaceGeneric()->getNPorts();
if ($nPortsB) {
$nPortsB = json_decode($nPortsB);
} else {
$nPortsB = [];
}
$portsAToCheck = array();
$portsBToCheck = array();
if (!in_array($portA1->getOrderNo(), $nPortsA)) {
$portsAToCheck[] = $portA1;
}
for ($i = 2; $i <= 12; $i++) {
$temp = "portA" . $i;
if ($$temp && !in_array($$temp->getOrderNo(), $nPortsA)) {
$portsToCheck[] = $$temp;
}
}
if (!in_array($portB1->getOrderNo(), $nPortsB)) {
$portsBToCheck[] = $portB1;
}
for ($i = 2; $i <= 12; $i++) {
$temp = "portB" . $i;
if ($$temp && !in_array($$temp->getOrderNo(), $nPortsB)) {
$portsToCheck[] = $$temp;
}
}
// if ($portA2 && !in_array($portA2->getOrderNo(), $nPortsA)){
// $portsAToCheck[] = $portA2;
// }
// if ($portB2 && !in_array($portB2->getOrderNo(), $nPortsB)){
// $portsBToCheck[] = $portB2;
// }
$lastLinkExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $extension->getSequenceNo() - 1]);
$nextLinkExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $extension->getSequenceNo() + 1]);
$redirect = false;
foreach ($portsAToCheck as $value) {
if ($value->getLink() && $value->getLink()->getId() != $link->getId()) {
$this->addFlash(
'error',
'l\'un des ports Choisis est déjà dans un link'
);
$redirect = true;
}
// elseif ($lastLinkExtension && $value->getLinkExtension() && !$lastLinkExtension) {
// $this->addFlash(
// 'error',
// '2-l\'un des ports Choisis est déjà dans un link'
// );
// $redirect = true;
// }
elseif ($lastLinkExtension && $value->getLinkExtension() && ($value->getLinkExtension()->getId() != $extension->getid() && $value->getLinkExtension()->getId() != $lastLinkExtension->getId())) {
$this->addFlash(
'error',
'l\'un des ports Choisis est déjà dans un link'
);
$redirect = true;
}
if ($redirect) {
break;
}
}
if ($redirect) {
return $this->redirectToRoute('link_view', array('id' => $link->getId()));
}
foreach ($portsBToCheck as $value) {
if ($value->getLink() && $value->getLink()->getId() != $link->getId()) {
$this->addFlash(
'error',
'l\'un des ports Choisis est déjà dans un link link'
);
$redirect = true;
}
// elseif ($value->getLinkExtension() && !$nextLinkExtension ) {
// var_dump("linkextension exist");
// $this->addFlash(
// 'error',
// 'linkextension exist - l\'un des ports Choisis est déjà dans un link'
// );
// $redirect = true;
// }
elseif ($value->getLinkExtension() && $nextLinkExtension && ($value->getLinkExtension()->getId() != $extension->getid() && $value->getLinkExtension()->getId() != $nextLinkExtension->getId())) {
// var_dump("linkextension ids not match");
$this->addFlash(
'error',
'l\'un des ports Choisis est déjà dans un link link extension'
);
$redirect = true;
}
if ($redirect) {
break;
}
}
if ($redirect) {
return $this->redirectToRoute('link_view', array('id' => $link->getId()));
}
//
//check for continuity Extremity B of last link extension
//check if it's first link extension
//if it's first, DO NOTHING
if ($extension->getSequenceNo() > 1) {
// //else get the last extension's extremity B's equipment
// $lastExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link"=>$link, "sequenceNo"=>$extension->getSequenceNo()-1]);
// $lastExtB = $lastExtension->getExtremityB();
// $lastPorts = [];
// $lastPortsTemp = $lastExtB->getExtensionOrder();
// foreach ($lastPortsTemp as $value) {
// $lastPorts[] = $value->getPort();
// }
// // $lastPorts = $lastExtB->getPorts();
// // var_dump($lastPorts);
// $lastInterfaceSpecific = $lastPorts[0]->getInterfaceSpecific();
// $lastInterfaceGeneric = $lastInterfaceSpecific->getInterfaceGeneric();
// $lastEquipment = $lastInterfaceSpecific->getEquipmentSpecific();
//
// $currentInterfaceSpecific = $portA1->getInterfaceSpecific();
// $currentEquipment = $currentInterfaceSpecific->getEquipmentSpecific();
//
// //check if it's same as current modified link ext
// if ($currentEquipment->getId() != $lastEquipment->getId()) {
// //if false, set the link and las link extension as INVALID
// $lastExtension->setIsValid(false);
// if ($lastExtension->getError()) {
// $lastExtension->setError($lastExtension->getError() . "," . "EquipmentB");
// }
// else {
// $lastExtension->setError("EquipmentB");
// }
// $em->persist($lastExtension);
// }
// else {
// // var_dump('hi');
// $errMsg = $lastExtension->getError();
// $errMsg = str_replace("EquipmentB", "", $errMsg);
// $lastExtension->setError($errMsg);
// if (!$errMsg && (strpos($errMsg, 'EquipmentA') !== false || strpos($errMsg, 'PortA') !== false)) {
// $lastExtension->setIsValid(false);
// }
// else {
// $lastExtension->setIsValid(true);
// $lastExtension->setError(null);
// }
// $em->persist($lastExtension);
// //else get the last extension's extremity B's interface
// //check if it's 1:1
// if ($lastInterfaceGeneric->getTypeInterconnection()->getTitle() == '1-1') {
// // if true, check ports are the same
// //if true, DO NOTHING
// //else set the link and las link extension as INVALID
// foreach ($lastPorts as $lastPort) {
// // var_dump($lastPort);
// $extensionOrder = $this->getDoctrine()->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port"=>$lastPort, "extremity"=>$lastExtB]);
//
// if ($extensionOrder->getOrderNumber() == 1) {
// if ($lastPort->getId() != $portA1->getId()) {
// $lastExtension->setIsValid(false);
// if ($lastExtension->getError()) {
// $lastExtension->setError($lastExtension->getError() . "," . "PortB");
// }
// else {
// $lastExtension->setError("PortB");
// }
// $em->persist($lastExtension);
// }
// else {
// $lastExtension->setIsValid(true);
// $lastExtension->setError(null);
// $em->persist($lastExtension);
// }
// }
// elseif ($extensionOrder->getOrderNumber() == 2) {
// if ($lastPort->getId() != $portA2->getId()) {
// $lastExtension->setIsValid(false);
// if ($lastExtension->getError()) {
// $lastExtension->setError($lastExtension->getError() . "," . "PortB");
// }
// else {
// $lastExtension->setError("PortB");
// }
// $em->persist($lastExtension);
// }
// else {
// $lastExtension->setIsValid(true);
// $lastExtension->setError(null);
// $em->persist($lastExtension);
// }
// }
// }
// }
// }
LinkController::validateLastExtension($em, $link, $extension, $portsA);
// LinkController::validateLastExtension($em, $link, $extension, $portA1, $portA2);
}
//check for continuity Extremity A of next link extension
//check if it's last link extension
//if it's last, DO NOTHING
if ($extension->getSequenceNo() != count($link->getLinkExtension())) {
// //else get the last extension's extremity B's equipment
// $nextExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link"=>$link, "sequenceNo"=>$extension->getSequenceNo()+1]);
// $nextExtA = $nextExtension->getExtremityA();
// $nextPorts = [];
// $nextPortsTemp = $nextExtA->getExtensionOrder();
// foreach ($nextPortsTemp as $value) {
// $nextPorts[] = $value->getPort();
// }
// // $nextPorts = $nextExtA->getPorts();
// $nextInterfaceSpecific = $nextPorts[0]->getInterfaceSpecific();
// $nextInterfaceGeneric = $nextInterfaceSpecific->getInterfaceGeneric();
// $nextEquipment = $nextInterfaceSpecific->getEquipmentSpecific();
//
// $currentInterfaceSpecific = $portB1->getInterfaceSpecific();
// $currentEquipment = $currentInterfaceSpecific->getEquipmentSpecific();
//
// //check if it's same as current modified link ext
// if ($currentEquipment->getId() != $nextEquipment->getId()) {
// //if false, set the link and las link extension as INVALID
// $nextExtension->setIsValid(false);
// if ($nextExtension->getError()) {
// $nextExtension->setError($nextExtension->getError() . "," . "EquipmentA");
// }
// else {
// $nextExtension->setError("EquipmentA");
// }
// $em->persist($nextExtension);
// }
// else {
// $nextExtension->setIsValid(true);
// $nextExtension->setError(null);
// $em->persist($nextExtension);
// //else get the next extension's extremity B's interface
// //check if it's 1:1
// if ($nextInterfaceGeneric->getTypeInterconnection()->getTitle() == '1-1') {
// // if true, check ports are the same
// //if true, DO NOTHING
// //else set the link and las link extension as INVALID
// foreach ($nextPorts as $nextPort) {
// $extensionOrder = $this->getDoctrine()->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port"=>$nextPort, "extremity"=>$nextExtA]);
//
// if ($extensionOrder->getOrderNumber() == 1) {
// if ($nextPort->getId() != $portB1->getId()) {
// $nextExtension->setIsValid(false);
// if ($nextExtension->getError()) {
// $nextExtension->setError($nextExtension->getError() . "," . "PortA");
// }
// else {
// $nextExtension->setError("PortA");
// }
// $em->persist($nextExtension);
// }
// else {
// $nextExtension->setIsValid(true);
// $nextExtension->setError(null);
// $em->persist($nextExtension);
// }
// }
// elseif ($extensionOrder->getOrderNumber() == 2) {
// if ($nextPort->getId() != $portB2->getId()) {
// $nextExtension->setIsValid(false);
// if ($nextExtension->getError()) {
// $nextExtension->setError($nextExtension->getError() . "," . "PortA");
// }
// else {
// $nextExtension->setError("PortA");
// }
// $em->persist($nextExtension);
// }
// else {
// $nextExtension->setIsValid(true);
// $nextExtension->setError(null);
// $em->persist($nextExtension);
// }
// }
// }
// }
// }
LinkController::validateNextExtension($em, $link, $extension, $portsB);
// LinkController::validateNextExtension($em, $link, $extension, $portB1, $portB2);
}
//i beleive the LinkExtension entity structure has to be modified ??? extremity A/B can have 1 or more ports
for ($i = 1; $i <= 12; $i++) {
$temp = "portOldA" . $i;
if ($$temp) {
if (count($$temp->getExtensionOrder()) <= 1) {
$$temp->setLink(null);
}
$extA = $extension->getExtremityA();
$extensinOrder = $this->getDoctrine()->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port" => $$temp, "extremity" => $extA, "orderNumber" => $i]);
$em->remove($extensinOrder);
// $extA->removePort($portOldA1);
// $portOldA1->setLink(null);
$$temp->setLinkExtension(null);
// $portOldA1->setOrderNoExtension(1);
$em->persist($$temp);
}
}
// if (count($portOldA1->getExtensionOrder()) <= 1) {
// $portOldA1->setLink(null);
// }
//
// $extA = $extension->getExtremityA();
// $extensinOrder = $this->getDoctrine()->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port"=>$portOldA1, "extremity"=>$extA, "orderNumber"=>1]);
// $em->remove($extensinOrder);
//
// // $extA->removePort($portOldA1);
// // $portOldA1->setLink(null);
// $portOldA1->setLinkExtension(null);
// // $portOldA1->setOrderNoExtension(1);
// $em->persist($portOldA1);
//
// if ($portOldA2) {
// if (count($portOldA2->getExtensionOrder()) <= 1) {
// $portOldA2->setLink(null);
// }
// $extensinOrder = $this->getDoctrine()->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port"=>$portOldA2, "extremity"=>$extA, "orderNumber"=>2]);
// $em->remove($extensinOrder);
//
// // $extA->removePort($portOldA2);
// // $portOldA2->setLink(null);
// $portOldA2->setLinkExtension(null);
// // $portOldA2->setOrderNoExtension(1);
// $em->persist($portOldA2);
// }
for ($i = 1; $i <= 12; $i++) {
$temp = "portA" . $i;
if ($$temp) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber($i);
$extensinOrder->setPort($$temp);
$extensinOrder->setExtremity($extA);
$$temp->addExtensionOrder($extensinOrder);
$extA->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portA1->setOrderNoExtension(1);
// $portA1->addExtremity($extA);
$$temp->setLink($link);
$$temp->setLinkExtension($extension);
$em->persist($$temp);
}
}
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(1);
// $extensinOrder->setPort($portA1);
// $extensinOrder->setExtremity($extA);
// $portA1->addExtensionOrder($extensinOrder);
// $extA->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portA1->setOrderNoExtension(1);
// // $portA1->addExtremity($extA);
// $portA1->setLink($link);
// $portA1->setLinkExtension($extension);
// $em->persist($portA1);
// // $extA->addPort($portA1);
//
//
// if ($portA2) {
// $portsA[] = $portA2;
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(2);
// $extensinOrder->setPort($portA2);
// $extensinOrder->setExtremity($extA);
// $portA2->addExtensionOrder($extensinOrder);
// $extA->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portA2->setOrderNoExtension(2);
// // $portA2->addExtremity($extA);
// $portA2->setLink($link);
// $portA2->setLinkExtension($extension);
// $em->persist($portA2);
// // $extA->addPort($portA2);
// }
$em->persist($extA);
$extension->setExtremityA($extA);
$extB = $extension->getExtremityB();
for ($i = 1; $i <= 12; $i++) {
$temp = "portOldB" . $i;
if ($$temp) {
if (count($$temp->getExtensionOrder()) <= 1) {
$$temp->setLink(null);
}
$extB = $extension->getExtremityB();
$extensinOrder = $this->getDoctrine()->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port" => $$temp, "extremity" => $extB, "orderNumber" => $i]);
$em->remove($extensinOrder);
// $extA->removePort($portOldA1);
// $portOldA1->setLink(null);
$$temp->setLinkExtension(null);
// $portOldA1->setOrderNoExtension(1);
$em->persist($$temp);
}
}
// if (count($portOldB1->getExtensionOrder()) <= 1) {
// $portOldB1->setLink(null);
// }
// $extensinOrder = $this->getDoctrine()->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port"=>$portOldB1, "extremity"=>$extB, "orderNumber"=>1]);
// $em->remove($extensinOrder);
//
// // $extB->removePort($portOldB1);
// // $portOldB1->setLink(null);
// $portOldB1->setLinkExtension(null);
// // $portOldB1->setOrderNoExtension(1);
// $em->persist($portOldB1);
// if ($portOldB2) {
// if (count($portOldB2->getExtensionOrder()) <= 1) {
// $portOldB2->setLink(null);
// }
// $extensinOrder = $this->getDoctrine()->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port"=>$portOldB2, "extremity"=>$extB, "orderNumber"=>2]);
// $em->remove($extensinOrder);
//
// // $extB->removePort($portOldB2);
// // $portOldB2->setLink(null);
// $portOldB2->setLinkExtension(null);
// // $portOldB2->setOrderNoExtension(1);
// $em->persist($portOldB2);
// }
for ($i = 1; $i <= 12; $i++) {
$temp = "portB" . $i;
if ($$temp) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber($i);
$extensinOrder->setPort($$temp);
$extensinOrder->setExtremity($extB);
$$temp->addExtensionOrder($extensinOrder);
$extB->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
$$temp->setLink($link);
$$temp->setLinkExtension($extension);
$em->persist($$temp);
}
}
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(1);
// $extensinOrder->setPort($portB1);
// $extensinOrder->setExtremity($extB);
// $portB1->addExtensionOrder($extensinOrder);
// $extB->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portB1->setOrderNoExtension(1);
// // $portB1->addExtremity($extB);
// $portB1->setLink($link);
// $portB1->setLinkExtension($extension);
// $em->persist($portB1);
// // $extB->addPort($portB1);
//
// if ($portB2) {
// $extensinOrder = new ExtensionOrder();
// $extensinOrder->setOrderNumber(2);
// $extensinOrder->setPort($portB2);
// $extensinOrder->setExtremity($extB);
// $portB2->addExtensionOrder($extensinOrder);
// $extB->addExtensionOrder($extensinOrder);
// $em->persist($extensinOrder);
//
// // $portB2->setOrderNoExtension(2);
// // $portB2->addExtremity($extB);
// $portB2->setLink($link);
// $portB2->setLinkExtension($extension);
// $em->persist($portB2);
// // $extB->addPort($portB2);
//
// }
$em->persist($extB);
$extension->setExtremityB($extB);
// $extension->setLink($link);
$extension->setTypeCable($typeCable);
if ($trunk) {
$trunk->setTypeCable($typeCable);
//ADDED on 16/01/2020
$extension->setTrunk($trunk);
//END
}
// $extension->setSequenceNo(1);
$extension->setIsValid(true);
$extension->setError(null);
$em->persist($extension);
$em->flush();
//
// $portA1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA_1'));
// $portA2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointA_2'));
// $portB1 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB_1'));
// $portB2 = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($request->request->get('pointB_2'));
//
// $typeCable = $this->getDoctrine()->getRepository('App\Entity\TypeCable')->findOneById($request->request->get('typeCable'));
//
// $extA = new Extremity();
// $extA->addPort($portA1);
// if ($portA2) {
// $portA2->setOrderNoExtension(2);
// $em->persist($portA2);
// $extA->addPort($portA2);
// }
//
// $em->persist($extA);
// $extension->setExtremityA($extA);
//
// $extB = new Extremity();
// $extB->addPort($portB);
// if ($portB2) {
// $portB2->setOrderNoExtension(2);
// $em->persist($portB2);
// $extB->addPort($portB2);
// }
// $em->persist($extB);
// $extension->setExtremityB($extB);
//
// $extension->setTypeCable($typeCable);
//
// $em->persist($extension);
// $em->flush();
$link = $extension->getLink();
return $this->redirectToRoute('link_view', array('id' => $link->getId()));
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/delete/{id}", name="link_delete")
*/
public function deleteAction(Request $request, $id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$link = $em->getRepository(Link::class)->find($id);
$exts = $link->getLinkExtension();
$conn = $em->getConnection();
$sql = "update port set link_id=null where link_id = " . $link->getId();
// $extIds = [$temp[0]->getExtremityA()->getId(), $temp[0]->getExtremityB()->getId()];
$stmt = $conn->prepare($sql);
$stmt->execute();
foreach ($exts as $ext) {
$sql = "update port set link_extension_id=null where link_extension_id = " . $ext->getId();
$stmt = $conn->prepare($sql);
$stmt->execute();
$sql = "delete from link_extension where id = " . $ext->getId();
// $extIds = [$temp[0]->getExtremityA()->getId(), $temp[0]->getExtremityB()->getId()];
$stmt = $conn->prepare($sql);
$stmt->execute();
$sql = "delete from extremity where id in (" . $ext->getExtremityA()->getId() . " , " . $ext->getExtremityB()->getId() . ")";
$stmt = $conn->prepare($sql);
$stmt->execute();
}
// $sql = "delete from link where id =". $id;
// $stmt = $conn->prepare($sql);
// $stmt->execute();
$em->remove($link);
$em->flush();
return $this->redirect($request->headers->get('referer'));
// return $this->redirectToRoute('link_list');
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/delete/extension/{id}", name="link_delete_extension")
*/
public function deleteExtensionAction($id, TranslatorInterface $translator, LoggerInterface $logger)
{
$em = $this->getDoctrine()->getManager();
$linkExtension = $em->getRepository(LinkExtension::class)->find($id);
$linkExtensionSequenceNo = $linkExtension->getSequenceNo();
$link = $linkExtension->getLink();
$lastExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $linkExtensionSequenceNo - 1]);
$nextExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $linkExtensionSequenceNo + 1]);
if ($linkExtensionSequenceNo > 1 && $linkExtensionSequenceNo != count($link->getLinkExtension())) {
$lastExtension->setIsValid(false);
if ($lastExtension->getError()) {
$lastExtension->setError($lastExtension->getError() . "," . "EquipmentB");
} else {
$lastExtension->setError("EquipmentB");
}
$em->persist($lastExtension);
// $nextExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $linkExtensionSequenceNo + 1]);
$nextExtension->setIsValid(false);
if ($nextExtension->getError()) {
$nextExtension->setError($nextExtension->getError() . "," . "EquipmentA");
} else {
$nextExtension->setError("EquipmentA");
}
$em->persist($nextExtension);
} else if ($linkExtensionSequenceNo == 2 && 2 == count($link->getLinkExtension())) {
$lastExtension->setIsValid(true);
$lastExtension->setError(null);
$em->persist($lastExtension);
} elseif ($linkExtensionSequenceNo == count($link->getLinkExtension()) && $linkExtensionSequenceNo != 1) {
$errMsg = $lastExtension->getError();
$errMsg = str_replace("EquipmentB", "", $errMsg);
$lastExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentA') !== false || strpos($errMsg, 'PortA') !== false)) {
$lastExtension->setIsValid(false);
} else {
$lastExtension->setIsValid(true);
$lastExtension->setError(null);
}
$em->persist($lastExtension);
}
$ports = $em->getRepository(Port::class)->findByLinkExtension($id);
// var_dump($ports);
foreach ($ports as $port) {
$port->setLinkExtension(null);
// var_dump($port);
// var_dump($port->getExtensionOrder());
// var_dump(count($port->getExtensionOrder()));
$logger->info("extension count: ".count($port->getExtensionOrder()));
if (count($port->getExtensionOrder()) <= 1) {
// var_dump($port->getid());
// var_dump("hi");
$port->setLink(null);
}
$em->persist($port);
}
$em->flush();
$this->getDoctrine()->getRepository('App\Entity\LinkExtension')->deleteExtension($link, $linkExtension, $linkExtensionSequenceNo);
// $fiberNo = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->noFibersInExtension($link, $linkExtensionSequenceNo);
// if ($fiberNo == 1){
// $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->deleteExtension($link, $linkExtensionSequenceNo);
// } else {
// $em->remove($linkExtension);
// $em->flush();
// }
return $this->redirectToRoute('link_view', array('id' => $link->getId()));
}
/**
* @IsGranted("ROLE_CRUD")
* @Route("/link/delete/extensions/selected", name="link_delete_extensions")
*/
public function deleteExtensionsAction(LoggerInterface $logger, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$logger = $logger;
$ids = json_decode($_POST["ids"]);
$logger->debug("extension ids: ");
$logger->debug($ids);
foreach(array_reverse($ids) as $id ){
$linkExtension = $em->getRepository(LinkExtension::class)->find($id);
$linkExtensionSequenceNo = $linkExtension->getSequenceNo();
$link = $linkExtension->getLink();
$lastExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $linkExtensionSequenceNo - 1]);
$nextExtension = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $linkExtensionSequenceNo + 1]);
if ($linkExtensionSequenceNo > 1 && $linkExtensionSequenceNo != count($link->getLinkExtension())) {
$lastExtension->setIsValid(false);
if ($lastExtension->getError()) {
$lastExtension->setError($lastExtension->getError() . "," . "EquipmentB");
} else {
$lastExtension->setError("EquipmentB");
}
$em->persist($lastExtension);
if($nextExtension != null){
$nextExtension->setIsValid(false);
if ($nextExtension->getError()) {
$nextExtension->setError($nextExtension->getError() . "," . "EquipmentA");
} else {
$nextExtension->setError("EquipmentA");
}
$em->persist($nextExtension);
}
} else if ($linkExtensionSequenceNo == 2 && 2 == count($link->getLinkExtension())) {
$lastExtension->setIsValid(true);
$lastExtension->setError(null);
$em->persist($lastExtension);
} elseif ($linkExtensionSequenceNo == count($link->getLinkExtension()) && $linkExtensionSequenceNo != 1) {
$errMsg = $lastExtension->getError();
$errMsg = str_replace("EquipmentB", "", $errMsg);
$lastExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentA') !== false || strpos($errMsg, 'PortA') !== false)) {
$lastExtension->setIsValid(false);
} else {
$lastExtension->setIsValid(true);
$lastExtension->setError(null);
}
$em->persist($lastExtension);
}
$ports = $em->getRepository(Port::class)->findByLinkExtension($id);
foreach ($ports as $port) {
$port->setLinkExtension(null);
$em->persist($port);
}
$em->flush();
$this->getDoctrine()->getRepository('App\Entity\LinkExtension')->deleteExtension($link, $linkExtension, $linkExtensionSequenceNo);
// $em->flush();
}
//update link attribute on ports
$ports = $em->getRepository(Port::class)->findByLink($link);
foreach ($ports as $port) {
if (count($port->getExtensionOrder()) == 0) {
$port->setLink(null);
}
$em->persist($port);
}
$em->flush();
return $this->json(array("OK"=>true));
}
/**
* @Route("/link/findLinkIdDuplicate", name="ajax_find_link_id")
*/
public function findLinkIdDuplicate()
{
$response = $this->getDoctrine()->getRepository('App\Entity\Link')->findLinkIdDuplicate($_POST['linkID']);
return $this->json($response);
}
/**
* @Route("/link/findLinkIdDuplicateOther", name="ajax_find_link_id_other")
*/
public function findLinkIdDuplicateOther()
{
$response = $this->getDoctrine()->getRepository('App\Entity\Link')->findLinkIdDuplicateOther($_POST['linkID'], $_POST['id']);
return $this->json($response);
}
/**
* @Route("/link/validate", name="link_validate")
*/
public function validateAction()
{
$link_id = $_POST['link_id'];
$em = $this->getDoctrine()->getManager();
$link = $em->getRepository(Link::class)->find($link_id);
$linkValidations = $em->getRepository(LinkValidation::class)->findBy(['link' => $link]);
foreach ($linkValidations as $linkValidation) {
$em->remove($linkValidation);
$em->flush();
}
return $this->json($link_id);
}
/**
* @Route("/link/validate/list", name="link_validate_list")
*/
public function validateListAction(TranslatorInterface $translator)
{
$linkValidations = $this->getDoctrine()->getRepository('App\Entity\LinkValidation')->findAll();
return $this->render('link/list_validation.html.twig', [
'action' => 'list',
'page_title' => $translator->trans('Link Validation'),
'list' => $linkValidations
]);
}
public static function startsWith($haystack, $needle)
{
$length = strlen($needle);
return (substr($haystack, 0, $length) === $needle);
}
public static function endsWith($haystack, $needle)
{
$length = strlen($needle);
if ($length == 0) {
return true;
}
return (substr($haystack, -$length) === $needle);
}
/**
* @Route("/link/import/csv", name="link_import_csv")
*/
public function importCSVAction(Request $request, TranslatorInterface $translator)
{
set_time_limit(0);
$user = $this->getUser();
$defaultPortExterne = 6;
// process form
if (isset($_FILES['csvFile']) && $_FILES['csvFile']['tmp_name'] && ($user->hasRole("ROLE_SUPER_ADMIN") || $user->hasRole("ROLE_ADMIN"))) {
$em = $this->getDoctrine()->getManager();
//to be used for creating fake equipments
$equipmentsArray = array();
if (is_uploaded_file($_FILES['csvFile']['tmp_name'])) {
$file = $_FILES['csvFile']['tmp_name'];
// $row = 1;
$extractedData = array();
if (($handle = fopen($file, "r")) !== FALSE) {
$linkTitle = "";
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$linkExtension = array();
if (LinkController::startsWith($data[0], "F0")) {
// $num = count($data);
// for ($c=0; $c < $num; $c++) {
for ($c = 0; $c < 19; $c++) {
switch ($c) {
//Link title
case 1:
$linkTitle = trim($data[$c]);
if (!array_key_exists($linkTitle, $extractedData)) {
$extractedData[$linkTitle] = array();
}
break;
// extension ex: trunk title, e1, e2
case 2:
$linkExtension["extension"] = trim($data[$c]);
break;
// connecteur extremity A ex: LC PC, SC PC, etc...
case 3:
$linkExtension["connecteurTypeExtrmityA"] = trim($data[$c]);
break;
// connecteur extremity A ex: LC PC, SC PC, etc...
case 4:
$linkExtension["connecteurTypeExtrmityB"] = trim($data[$c]);
break;
// Type de lien ex: single monoservice, single multiservice, duplex multiservice, duplex monoservice, etc...
case 5:
$linkExtension["typeLien"] = explode(" ", trim($data[$c]))[0];
break;
// Type de cable ex: OS2, OM4, etc...
case 6:
$linkExtension["typeCable"] = trim($data[$c]);
break;
// Site title ex: @46, @89, etc...
case 7:
$linkExtension["siteExtremityA"] = trim($data[$c]);
break;
// room title
case 8:
$linkExtension["roomExtremityA"] = trim($data[$c]);
break;
// rack title
case 9:
$linkExtension["rackExtremityA"] = trim($data[$c]);
break;
// equipment title
case 10:
$linkExtension["equipmentExtremityA"] = trim($data[$c]);
break;
// slot
case 11:
$linkExtension["slotExtremityA"] = trim($data[$c]);
if (!array_key_exists($linkExtension["equipmentExtremityA"], $equipmentsArray)) {
$equipmentsArray[$linkExtension["equipmentExtremityA"]] = array();
}
$equipmentsArray[$linkExtension["equipmentExtremityA"]][] = explode("-", trim($data[$c]))[0];
break;
// port
case 12:
$tempPorts = trim($data[$c]);
$tempPortsAArray = explode("/", $tempPorts);
if (count($tempPortsAArray) > 1 && $linkExtension["typeLien"] == "Duplex" && $tempPortsAArray[1] == "0") {
$tempPortsAArray[1] = $tempPortsAArray[0] + 1;
$tempPorts = implode("/", $tempPortsAArray);
} elseif (count($tempPortsAArray) > 1 && $linkExtension["typeLien"] == "Single" && $tempPortsAArray[1] == "0") {
$tempPorts = $tempPortsAArray[0];
}
if (LinkController::endsWith($linkExtension["equipmentExtremityA"], "ACE48FO")) {
$slot = LinkController::startsWith($linkExtension["slotExtremityA"], "0") ? substr($linkExtension["slotExtremityA"], 1) : $linkExtension["slotExtremityA"];
$tempPortsAArray = explode("/", $tempPorts);
$resPorts = array();
foreach ($tempPortsAArray as $value) {
switch ($slot) {
case '1':
$resPorts[] = $value > 12 ? $value % 12 : $value;
break;
case '2':
$resPorts[] = $value < 13 || $value > 24 ? 12 + ($value % 12) : $value;
break;
case '3':
$resPorts[] = $value < 25 || $value > 36 ? 24 + ($value % 12) : $value;
break;
case '4':
$resPorts[] = $value < 37 || $value > 48 ? 36 + ($value % 12) : $value;
break;
case '5':
$resPorts[] = $value < 49 || $value > 60 ? 48 + ($value % 12) : $value;
break;
default:
// code...
break;
}
}
$tempPorts = implode("/", $resPorts);
}
$linkExtension["portExtremityA"] = $tempPorts;
break;
// Site title ex: @46, @89, etc...
case 13:
$linkExtension["siteExtremityB"] = trim($data[$c]);
break;
// room title
case 14:
$linkExtension["roomExtremityB"] = trim($data[$c]);
break;
// rack title
case 15:
$linkExtension["rackExtremityB"] = trim($data[$c]);
break;
// equipment title
case 16:
$linkExtension["equipmentExtremityB"] = trim($data[$c]);
break;
// slot
case 17:
$linkExtension["slotExtremityB"] = trim($data[$c]);
if (!array_key_exists($linkExtension["equipmentExtremityB"], $equipmentsArray)) {
$equipmentsArray[$linkExtension["equipmentExtremityB"]] = array();
}
$equipmentsArray[$linkExtension["equipmentExtremityB"]][] = explode("-", trim($data[$c]))[0];
break;
// port
case 18:
$tempPorts = trim($data[$c]);
$tempPortsBArray = explode("/", $tempPorts);
if (count($tempPortsBArray) > 1 && $linkExtension["typeLien"] == "Duplex" && $tempPortsBArray[1] == "0") {
$tempPortsBArray[1] = $tempPortsBArray[0] + 1;
$tempPorts = implode("/", $tempPortsBArray);
} elseif (count($tempPortsBArray) > 1 && $linkExtension["typeLien"] == "Single" && $tempPortsBArray[1] == "0") {
$tempPorts = $tempPortsBArray[0];
}
if (LinkController::endsWith($linkExtension["equipmentExtremityB"], "ACE48FO")) {
$slot = LinkController::startsWith($linkExtension["slotExtremityB"], "0") ? substr($linkExtension["slotExtremityB"], 1) : $linkExtension["slotExtremityB"];
$tempPortsBArray = explode("/", $tempPorts);
$resPorts = array();
foreach ($tempPortsBArray as $value) {
switch ($slot) {
case '1':
$resPorts[] = $value > 12 ? $value % 12 : $value;
break;
case '2':
$resPorts[] = $value < 13 || $value > 24 ? 12 + ($value % 12) : $value;
break;
case '3':
$resPorts[] = $value < 25 || $value > 36 ? 24 + ($value % 12) : $value;
break;
case '4':
$resPorts[] = $value < 37 || $value > 48 ? 36 + ($value % 12) : $value;
break;
case '5':
$resPorts[] = $value < 49 || $value > 60 ? 48 + ($value % 12) : $value;
break;
default:
$resPorts[] = $value;
break;
}
}
$tempPorts = implode("/", $resPorts);
}
$linkExtension["portExtremityB"] = $tempPorts;
break;
default:
// code...
break;
}
}
$extractedData[$linkTitle]["linkExtensions"][] = $linkExtension;
}
// $row++;
}
fclose($handle);
}
// print_r($extractedData["F00030"]);
$corresFile = $_FILES['corresCsvFile']['tmp_name'];
$row = 1;
$corresExtractedData = array();
if (($handle = fopen($corresFile, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($row > 2) {
$num = count($data);
$keyWithoutSlot = "";
$keyWithSlot = "";
$modulaireId = null;
$moduleId = null;
$equipmentId = null;
$equipmentName = null;
for ($c = 0; $c < $num; $c++) {
switch ($c) {
//Link title
case 1:
case 2:
case 3:
case 4:
$keyWithoutSlot .= trim($data[$c]);
break;
case 5:
$keyWithSlot = $keyWithoutSlot . trim($data[$c]);
break;
case 7:
$comment = trim($data[$c]);
break;
case 9:
$equipmentName = trim($data[$c]);
break;
case 10:
$modulaireId = trim($data[$c]);
break;
case 11:
$moduleId = trim($data[$c]);
break;
case 12:
$equipmentId = trim($data[$c]);
break;
default:
break;
}
}
$corresExtractedData[$keyWithoutSlot] = array(
"equipmentName" => $equipmentName,
"modulaireId" => $modulaireId,
"moduleId" => $moduleId,
"equipmentId" => $equipmentId
);
$corresExtractedData[$keyWithSlot] = array(
"equipmentName" => $equipmentName,
"modulaireId" => $modulaireId,
"moduleId" => $moduleId,
"equipmentId" => $equipmentId
);
}
$row++;
}
fclose($handle);
}
$linkErrorFile = $_FILES['linkErrorFile']['tmp_name'];
$row = 1;
$linkErrorFileExtractedData = array();
if (($handle = fopen($linkErrorFile, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if (LinkController::startsWith($data[0], "F0")) {
$num = count($data);
$test1 = "";
$test2 = "";
for ($c = 0; $c < $num; $c++) {
switch ($c) {
case 21:
$test1 = trim($data[$c]);
break;
case 22:
$test2 = trim($data[$c]);
break;
default:
break;
}
}
// var_dump($test1);
// var_dump($test2);
if ($test1 === "TRUE" || $test2 === "TRUE") {
$linkErrorFileExtractedData[trim($data[1])] = null;
}
}
}
fclose($handle);
}
// print_r($corresExtractedData);
// foreach ($extractedData as $linkArray) {
// foreach ($linkArray["linkExtensions"] as $linkExtensionArray) {
// $tempArrayA = array("site"=>$linkExtensionArray["siteExtremityA"],
// "room"=>$linkExtensionArray["roomExtremityA"],
// "rack"=>$linkExtensionArray["rackExtremityA"],
// "equipment"=>$linkExtensionArray["equipmentExtremityA"],
// "slot"=>$linkExtensionArray["slotExtremityA"]
// );
// $equipementAArray = $this->getEquipmentId($tempArrayA, $corresExtractedData);
// // var_dump($tempArrayA["equipment"]);
// if($equipementAArray == null || !($equipementAArray["equipmentId"] || $equipementAArray["moduleId"])){
// $equipementAArray = $this->createFakeEquipment($tempArrayA, $equipmentsArray, 65, 1, 16, 3, 11);
// $keyWithSlot = implode($tempArrayA);
// $keyWithoutSlot = $tempArrayA["site"].$tempArrayA["room"].$tempArrayA["rack"].$tempArrayA["equipment"];
// $corresExtractedData[$keyWithSlot] = $equipementAArray;
// $corresExtractedData[$keyWithoutSlot] = $equipementAArray;
// // continue;
// }
// $tempArrayB = array("site"=>$linkExtensionArray["siteExtremityB"],
// "room"=>$linkExtensionArray["roomExtremityB"],
// "rack"=>$linkExtensionArray["rackExtremityB"],
// "equipment"=>$linkExtensionArray["equipmentExtremityB"],
// "slot"=>$linkExtensionArray["slotExtremityB"]
// );
// $equipementBArray = $this->getEquipmentId($tempArrayB, $corresExtractedData);
// if($equipementBArray == null || !($equipementBArray["equipmentId"] || $equipementBArray["moduleId"])){
//
// $equipementBArray = $this->createFakeEquipment($tempArrayB, $equipmentsArray, 65, 1, 16, 3, 11);
// $keyWithSlot = implode($tempArrayB);
// $keyWithoutSlot = $tempArrayB["site"].$tempArrayB["room"].$tempArrayB["rack"].$tempArrayB["equipment"];
// $corresExtractedData[$keyWithSlot] = $equipementBArray;
// $corresExtractedData[$keyWithoutSlot] = $equipementBArray;
// }
// $em->flush();
// }
//
// }
$em = $this->getDoctrine()->getManager();
$error = array();
$test = 1;
foreach ($extractedData as $linkID => $linkArray) {
if ($test > 606) {
break;
}
$test++;
if (in_array($linkID, LinkController::getLinkExceptions())) {
continue;
}
if ($this->getDoctrine()->getRepository('App\Entity\Link')->findOneByLinkID($linkID)) {
if (!array_key_exists($linkID, $error)) {
$error[$linkID] = array();
}
$error[$linkID]["exists"][] = "Link déjà existe !";
continue;
}
$typeLink = "Simplex";
$link = new Link();
try {
$link->setLinkID($linkID);
$link->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->findOneByTitle($typeLink));
try {
$em->persist($link);
$em->flush();
} catch (\Exception $e) {
if (!array_key_exists($linkID, $error)) {
$error[$linkID] = array();
}
$error[$linkID]["errors"][] = $e->getMessage();
continue;
}
$sequenceNo = 0;
foreach ($linkArray["linkExtensions"] as $linkExtensionArray) {
$sequenceNo++;
$typeCable = $linkExtensionArray["typeCable"];
$portA1 = null;
$portA2 = null;
$portB1 = null;
$portB2 = null;
$tempArrayA = array(
"site" => $linkExtensionArray["siteExtremityA"],
"room" => $linkExtensionArray["roomExtremityA"],
"rack" => $linkExtensionArray["rackExtremityA"],
"equipment" => $linkExtensionArray["equipmentExtremityA"],
"slot" => $linkExtensionArray["slotExtremityA"]
);
$equipementAArray = $this->getEquipmentId($tempArrayA, $corresExtractedData);
// if($equipementAArray == null || !($equipementAArray["equipmentId"] || $equipementAArray["moduleId"])){
// $equipementAArray = $this->createFakeEquipment($tempArrayA, $equipmentsArray, 65, 1, 16, 3, 11);
// $keyWithSlot = implode($tempArrayA);
// $keyWithoutSlot = $tempArrayA["site"].$tempArrayA["room"].$tempArrayA["rack"].$tempArrayA["equipment"];
// $corresExtractedData[$keyWithSlot] = $equipementAArray;
// $corresExtractedData[$keyWithoutSlot] = $equipementAArray;
// // continue;
// }
if ($equipementAArray == null || !($equipementAArray["equipmentId"] || $equipementAArray["moduleId"])) {
if (!array_key_exists($linkID, $error)) {
$error[$linkID] = array();
}
$error[$linkID]["errors"][] = $sequenceNo . " - ExtremityA - " . $linkExtensionArray["equipmentExtremityA"] . " n'a pas été trouvé !";
$error[$linkID]["faultLink"] = array_key_exists($linkID, $linkErrorFileExtractedData);
}
if (isset($error[$linkID]) && isset($error[$linkID]["errors"]) && count($error[$linkID]["errors"]) > 0) {
continue;
}
//Extremity A
$interfaceSpecificA = $this->getInterfaceSpecific($equipementAArray, $linkExtensionArray, "A");
$interfaceSpecificATypeId = null;
// var_dump($interfaceSpecificA);
if ($interfaceSpecificA) {
// var_dump($interfaceSpecificA->getId());
$interfaceSpecificATypeId = $interfaceSpecificA->getInterfaceGeneric()->getTypeLink()->getId();
if ($interfaceSpecificATypeId == 2) {
$typeLink = "Duplex";
}
} else {
// var_dump("fault");
if (!array_key_exists($linkID, $error)) {
$error[$linkID] = array();
}
$error[$linkID]["errors"][] = $sequenceNo . " - ExtremityA - " . $linkExtensionArray["equipmentExtremityA"] . " - slot " . $linkExtensionArray["slotExtremityA"] . " n'a pas été trouvé !";
$error[$linkID]["faultLink"] = array_key_exists($linkID, $linkErrorFileExtractedData);
continue;
}
// var_dump($interfaceSpecificA->getId());
$portsAArray = explode("/", $linkExtensionArray["portExtremityA"]);
if (count($portsAArray) == 2) {
$typeLink = "Duplex";
}
$portsA = $this->getPortsCSV($interfaceSpecificA, $portsAArray);
foreach ($portsA as $value) {
if ($value == null) {
$interfaceSpecificA = $this->getInterfaceSpecificV2($equipementAArray, $linkExtensionArray["portExtremityA"]);
// var_dump($interfaceSpecificA);
if ($interfaceSpecificA) {
$this->get('logger')->error("4931 : " . $interfaceSpecificA->getId());
$portsA = $this->getPortsCSV2($interfaceSpecificA, $portsAArray);
$error[$linkID]["check"][] = $sequenceNo . " - ExtremityA - " . $linkExtensionArray["equipmentExtremityA"] . " - Interface: " . $interfaceSpecificA->getId() . " à vérifier !";
}
break;
}
}
//Check for port externe
if (count($portsA) > 0 && $interfaceSpecificATypeId == 3) {
foreach ($portsA as $temp) {
if ($temp && is_null($temp->getPortExterne())) {
$temp->setPortExterne($this->getDoctrine()->getRepository('App\Entity\PortExterne')->find($defaultPortExterne));
$em->persist($temp);
$em->flush();
}
if ($temp && $temp->getPortExterne() && $temp->getPortExterne()->getTypeLink()->getId() == 2) {
$typeLink = "Duplex";
}
}
}
for ($i = 0; $i < count($portsA); $i++) {
if (is_null($portsA[$i])) {
if (!array_key_exists($linkID, $error)) {
$error[$linkID] = array();
}
$error[$linkID]["errors"][] = $sequenceNo . " - ExtremityA - " . $linkExtensionArray["equipmentExtremityA"] . " PortA: " . $portsAArray[$i] . " n'a pas été trouvé !";
$error[$linkID]["faultLink"] = array_key_exists($linkID, $linkErrorFileExtractedData);
continue;
}
if ($i == 0) {
$portA1 = $portsA[$i];
} elseif ($i == 1) {
$portA2 = $portsA[$i];
}
}
if (isset($error[$linkID]) && isset($error[$linkID]["errors"]) && count($error[$linkID]["errors"]) > 0) {
continue;
}
$tempArrayB = array(
"site" => $linkExtensionArray["siteExtremityB"],
"room" => $linkExtensionArray["roomExtremityB"],
"rack" => $linkExtensionArray["rackExtremityB"],
"equipment" => $linkExtensionArray["equipmentExtremityB"],
"slot" => $linkExtensionArray["slotExtremityB"]
);
$equipementBArray = $this->getEquipmentId($tempArrayB, $corresExtractedData);
// if($equipementBArray == null || !($equipementBArray["equipmentId"] || $equipementBArray["moduleId"])){
//
// $equipementBArray = $this->createFakeEquipment($tempArrayB, $equipmentsArray, 65, 1, 16, 3, 11);
// $keyWithSlot = implode($tempArrayB);
// $keyWithoutSlot = $tempArrayB["site"].$tempArrayB["room"].$tempArrayB["rack"].$tempArrayB["equipment"];
// $corresExtractedData[$keyWithSlot] = $equipementBArray;
// $corresExtractedData[$keyWithoutSlot] = $equipementBArray;
// }
if ($equipementBArray == null || !($equipementBArray["equipmentId"] || $equipementBArray["moduleId"])) {
if (!array_key_exists($linkID, $error)) {
$error[$linkID] = array();
}
$error[$linkID]["errors"][] = $sequenceNo . " - ExtremityB - " . $linkExtensionArray["equipmentExtremityB"] . " n'a pas été trouvé !";
$error[$linkID]["faultLink"] = array_key_exists($linkID, $linkErrorFileExtractedData);
}
if (isset($error[$linkID]) && isset($error[$linkID]["errors"]) && count($error[$linkID]["errors"]) > 0) {
continue;
}
// var_dump($portsA);
//Extremity B
$interfaceSpecificB = $this->getInterfaceSpecific($equipementBArray, $linkExtensionArray, "B");
$interfaceSpecificBTypeId = null;
if ($interfaceSpecificB) {
$this->get('logger')->error("5017 : " . $interfaceSpecificB->getId());
// var_dump($interfaceSpecificB->getId());
$interfaceSpecificBTypeId = $interfaceSpecificB->getInterfaceGeneric()->getTypeLink()->getId();
if ($interfaceSpecificBTypeId == 2) {
$typeLink = "Duplex";
}
} else {
if (!array_key_exists($linkID, $error)) {
$error[$linkID] = array();
}
$error[$linkID]["errors"][] = $sequenceNo . " - ExtremityB - " . $linkExtensionArray["equipmentExtremityB"] . " - slot " . $linkExtensionArray["slotExtremityB"] . " n'a pas été trouvé !";
$error[$linkID]["faultLink"] = array_key_exists($linkID, $linkErrorFileExtractedData);
continue;
}
// var_dump($interfaceSpecificB->getId());
$portsBArray = explode("/", $linkExtensionArray["portExtremityB"]);
// print_r($portsBArray);
if (count($portsBArray) == 2) {
$typeLink = "Duplex";
}
$portsB = $this->getPortsCSV($interfaceSpecificB, $portsBArray);
foreach ($portsB as $value) {
if ($value == null) {
$interfaceSpecificB = $this->getInterfaceSpecificV2($equipementBArray, $linkExtensionArray["portExtremityB"]);
if ($interfaceSpecificB) {
$portsB = $this->getPortsCSV2($interfaceSpecificB, $portsBArray);
$error[$linkID]["check"][] = $sequenceNo . " - ExtremityB - " . $linkExtensionArray["equipmentExtremityB"] . " - Interface: " . $interfaceSpecificB->getId() . " à vérifier !";
}
break;
}
}
//Check for port externe
if (count($portsB) > 0 && $interfaceSpecificBTypeId == 3) {
foreach ($portsB as $temp) {
if ($temp && is_null($temp->getPortExterne())) {
$temp->setPortExterne($this->getDoctrine()->getRepository('App\Entity\PortExterne')->find($defaultPortExterne));
$em->persist($temp);
$em->flush();
}
if ($temp && $temp->getPortExterne() && $temp->getPortExterne()->getTypeLink()->getId() == 2) {
$typeLink = "Duplex";
}
}
}
for ($i = 0; $i < count($portsB); $i++) {
if (is_null($portsB[$i])) {
if (!array_key_exists($linkID, $error)) {
$error[$linkID] = array();
}
$error[$linkID]["errors"][] = $sequenceNo . " - ExtremityB - " . $linkExtensionArray["equipmentExtremityB"] . " PortB: " . $portsBArray[$i] . " n'a pas été trouvé !";
$error[$linkID]["faultLink"] = array_key_exists($linkID, $linkErrorFileExtractedData);
continue;
}
if ($i == 0) {
$portB1 = $portsB[$i];
} elseif ($i == 1) {
$portB2 = $portsB[$i];
}
}
if (isset($error[$linkID]) && isset($error[$linkID]["errors"]) && count($error[$linkID]["errors"]) > 0) {
continue;
}
//used to set the interface's typelink to newly created equipments
if (count($portsB) == 2 && count($portsA) == 1) {
$ifg = $portsA[0]->getInterfaceSpecific()->getInterfaceGeneric();
$ifg->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->find(2));
$em->persist($ifg);
$em->flush();
}
if (count($portsB) == 1 && count($portsA) == 2) {
$ifg = $portsB[0]->getInterfaceSpecific()->getInterfaceGeneric();
$ifg->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->find(2));
$em->persist($ifg);
$em->flush();
}
// var_dump($portsB);
$trunk = null;
if ($linkExtensionArray["extension"] && LinkController::startsWith($linkExtensionArray["extension"], "T0")) {
$trunk = $this->getDoctrine()->getRepository('App\Entity\Trunk')->findOneByTrunkID($linkExtensionArray["extension"]);
//check if ports are in the trunk
$usedA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portA1);
$usedExtA = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portA1);
$usedB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($portB1);
$usedExtB = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portB1);
$usedARev = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortA($portB1);
$usedExtARev = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portB1);
$usedBRev = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneByPortB($portA1);
$usedExtBRev = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($portA1);
if ((($usedA || $usedExtA) && ($usedB || $usedExtB)) || (($usedARev || $usedExtARev) && ($usedBRev || $usedExtBRev))) {
//do nothing
} else {
if ($trunk == null) {
$trunk = new Trunk();
$trunk->setTrunkID($linkExtensionArray["extension"]);
$trunk->setTypeCreation(2);
$trunk->setCapacity(48);
$trunk->setCreatedBy($user);
$trunk->setUpdatedBy($user);
$em->persist($trunk);
$em->flush();
}
$error[$linkID]["check"][] = $sequenceNo . " - Trunk - " . $trunk->getTrunkID() . " à vérifier !";
$trunkCables = $trunk->getCableFiber();
if (count($trunkCables) > 0) {
$first = true;
foreach ($trunkCables as $tcf) {
$typeCable = $tcf->getTrunk()->getTypeCable();
$tcfExts = $tcf->getExtensions();
if (count($tcfExts) == 0) {
$tcfPortB = $tcf->getPortB()->getId();
if (count($portsB) == 2 && count($portsA) == 1) {
if ($first) {
if ($tcfPortB == $portA1->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB1);
$ext->setSequenceNo(1);
$em->persist($ext);
$em->flush();
$first = false;
}
} else {
if ($tcfPortB == $portA1->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB2);
$ext->setSequenceNo(1);
$em->persist($ext);
$em->flush();
break;
}
}
} elseif (count($portsB) == 1 && count($portsA) == 2) {
if ($first) {
if ($tcfPortB == $portA1->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB1);
$ext->setSequenceNo(1);
$em->persist($ext);
$em->flush();
$first = false;
}
} else {
if ($tcfPortB == $portA2->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB1);
$ext->setSequenceNo(1);
$em->persist($ext);
$em->flush();
break;
}
}
} elseif (count($portsB) == 2 && count($portsA) == 2) {
if ($first) {
if ($tcfPortB == $portA1->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB1);
$ext->setSequenceNo(1);
$em->persist($ext);
$em->flush();
$first = false;
}
} else {
if ($tcfPortB == $portA2->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB2);
$ext->setSequenceNo(1);
$em->persist($ext);
$em->flush();
break;
}
}
} elseif (count($portsB) == 1 && count($portsA) == 1) {
if ($tcfPortB == $portA1->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB1);
$ext->setSequenceNo(1);
$em->persist($ext);
$em->flush();
break;
}
}
} else {
// $lastExt = $tcfExts{
// count($tcfExts) - 1};
$lastExt = $tcfExts[count($tcfExts) - 1];
$tcfPortB = $lastExt->getPortB()->getId();
if (count($portsB) == 2 && count($portsA) == 1) {
if ($first) {
if ($tcfPortB == $portA1->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB1);
$ext->setSequenceNo(count($tcfExts) + 1);
$em->persist($ext);
$em->flush();
$first = false;
}
} else {
if ($tcfPortB == $portA1->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB2);
$ext->setSequenceNo(count($tcfExts) + 1);
$em->persist($ext);
$em->flush();
break;
}
}
} elseif (count($portsB) == 1 && count($portsA) == 2) {
if ($first) {
if ($tcfPortB == $portA1->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB1);
$ext->setSequenceNo(count($tcfExts) + 1);
$em->persist($ext);
$em->flush();
$first = false;
}
} else {
if ($tcfPortB == $portA2->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB1);
$ext->setSequenceNo(count($tcfExts) + 1);
$em->persist($ext);
$em->flush();
break;
}
}
} elseif (count($portsB) == 2 && count($portsA) == 2) {
if ($first) {
if ($tcfPortB == $portA1->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB1);
$ext->setSequenceNo(count($tcfExts) + 1);
$em->persist($ext);
$em->flush();
$first = false;
}
} else {
if ($tcfPortB == $portA2->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB2);
$ext->setSequenceNo(count($tcfExts) + 1);
$em->persist($ext);
$em->flush();
break;
}
}
} elseif (count($portsB) == 1 && count($portsA) == 1) {
if ($tcfPortB == $portA1->getId()) {
$ext = new TrunkExtension();
$ext->setTrunkCableFiber($tcf);
$ext->setTypeCable($typeCable);
$ext->setPortB($portB1);
$ext->setSequenceNo(count($tcfExts) + 1);
$em->persist($ext);
$em->flush();
break;
}
}
}
}
} else {
if (count($portsB) == 2 && count($portsA) == 1) {
$tcf1 = new TrunkCableFiber();
$tcf1->setTrunk($trunk);
$tcf1->setPortA($portA1);
$tcf1->setPortB($portB1);
$em->persist($tcf1);
$tcf2 = new TrunkCableFiber();
$tcf2->setTrunk($trunk);
$tcf2->setPortA($portA1);
$tcf2->setPortB($portB2);
$em->persist($tcf2);
$em->flush();
} elseif (count($portsB) == 1 && count($portsA) == 2) {
$tcf1 = new TrunkCableFiber();
$tcf1->setTrunk($trunk);
$tcf1->setPortA($portA1);
$tcf1->setPortB($portB1);
$em->persist($tcf1);
$tcf2 = new TrunkCableFiber();
$tcf2->setTrunk($trunk);
$tcf2->setPortA($portA2);
$tcf2->setPortB($portB1);
$em->persist($tcf2);
$em->flush();
} elseif (count($portsB) == 2 && count($portsA) == 2) {
$tcf1 = new TrunkCableFiber();
$tcf1->setTrunk($trunk);
$tcf1->setPortA($portA1);
$tcf1->setPortB($portB1);
$em->persist($tcf1);
$tcf2 = new TrunkCableFiber();
$tcf2->setTrunk($trunk);
$tcf2->setPortA($portA2);
$tcf2->setPortB($portB2);
$em->persist($tcf2);
$em->flush();
} elseif (count($portsB) == 1 && count($portsA) == 1) {
$tcf1 = new TrunkCableFiber();
$tcf1->setTrunk($trunk);
$tcf1->setPortA($portA1);
$tcf1->setPortB($portB1);
$em->persist($tcf1);
$em->flush();
}
}
}
}
//Start Link Extension création
$extension = new LinkExtension();
$extA = new Extremity();
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(1);
$extensinOrder->setPort($portA1);
$extensinOrder->setExtremity($extA);
$portA1->addExtensionOrder($extensinOrder);
$extA->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portA1->setOrderNoExtension(1);
// $portA1->addExtremity($extA);
$portA1->setLink($link);
$portA1->setLinkExtension($extension);
$em->persist($portA1);
// $extA->addPort($portA1);
if ($portA2) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(2);
$extensinOrder->setPort($portA2);
$extensinOrder->setExtremity($extA);
$portA2->addExtensionOrder($extensinOrder);
$extA->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portA2->setOrderNoExtension(2);
// $portA2->addExtremity($extA);
$portA2->setLink($link);
$portA2->setLinkExtension($extension);
$em->persist($portA2);
// $extA->addPort($portA2);
}
$em->persist($extA);
$extension->setExtremityA($extA);
$extB = new Extremity();
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(1);
$extensinOrder->setPort($portB1);
$extensinOrder->setExtremity($extB);
$portB1->addExtensionOrder($extensinOrder);
$extB->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portB1->setOrderNoExtension(1);
// $portB1->addExtremity($extB);
$portB1->setLink($link);
$portB1->setLinkExtension($extension);
$em->persist($portB1);
// $extB->addPort($portB1);
if ($portB2) {
$extensinOrder = new ExtensionOrder();
$extensinOrder->setOrderNumber(2);
$extensinOrder->setPort($portB2);
$extensinOrder->setExtremity($extB);
$portB2->addExtensionOrder($extensinOrder);
$extB->addExtensionOrder($extensinOrder);
$em->persist($extensinOrder);
// $portB2->setOrderNoExtension(2);
// $portB2->addExtremity($extB);
$portB2->setLink($link);
$portB2->setLinkExtension($extension);
$em->persist($portB2);
// $extB->addPort($portB2);
}
$em->persist($extB);
$extension->setExtremityB($extB);
$extension->setLink($link);
$extension->setTypeCable($this->getDoctrine()->getRepository('App\Entity\TypeCable')->findOneByTitle($typeCable));
$extension->setSequenceNo($sequenceNo);
if ($trunk) {
$extension->setTrunk($trunk);
}
$em->persist($extension);
$em->flush();
//End Link Extension création
}
} catch (\Exception $e) {
if (!array_key_exists($linkID, $error)) {
$error[$linkID] = array();
}
$error[$linkID] = $e->getMessage();
$this->get('logger')->error($e->getMessage());
}
$link->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->findOneByTitle($typeLink));
$em->persist($link);
$em->flush();
// var_dump($link);
}
$html = $this->renderView(
// app/Resources/views/Emails/registration.html.twig
'link/error_file.html.twig',
array('error' => $error)
);
$errorPath = $this->get("kernel")->getLogDir() . '/error_file.html';
file_put_contents($errorPath, $html);
return $this->file($errorPath);
// print_r($error);
}
// show form
}
return $this->render('link/import_csv.html.twig', [
'page_title' => $translator->trans('Générer link - CSV'),
'box_title' => "Choisir un Fichier CSV"
]);
}
/**
* @Route("/link/create/fakeEquipment", name="link_create_fake_equipment")
*/
public function linkCreatefakeEquipment(Request $request, TranslatorInterface $translator)
{
set_time_limit(0);
$user = $this->getUser();
// process form
if (isset($_FILES['csvFile']) && $_FILES['csvFile']['tmp_name'] && ($user->hasRole("ROLE_SUPER_ADMIN") || $user->hasRole("ROLE_ADMIN"))) {
$em = $this->getDoctrine()->getManager();
//to be used for creating fake equipments
$equipmentsArray = array();
if (is_uploaded_file($_FILES['csvFile']['tmp_name'])) {
$file = $_FILES['csvFile']['tmp_name'];
// $row = 1;
$extractedData = array();
if (($handle = fopen($file, "r")) !== FALSE) {
$linkTitle = "";
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$linkExtension = array();
if (LinkController::startsWith($data[0], "F0")) {
// $num = count($data);
// for ($c=0; $c < $num; $c++) {
for ($c = 0; $c < 19; $c++) {
switch ($c) {
//Link title
case 1:
$linkTitle = trim($data[$c]);
if (!array_key_exists($linkTitle, $extractedData)) {
$extractedData[$linkTitle] = array();
}
break;
// extension ex: trunk title, e1, e2
case 2:
$linkExtension["extension"] = trim($data[$c]);
break;
// connecteur extremity A ex: LC PC, SC PC, etc...
case 3:
$linkExtension["connecteurTypeExtrmityA"] = trim($data[$c]);
break;
// connecteur extremity A ex: LC PC, SC PC, etc...
case 4:
$linkExtension["connecteurTypeExtrmityB"] = trim($data[$c]);
break;
// Type de lien ex: single monoservice, single multiservice, duplex multiservice, duplex monoservice, etc...
case 5:
$linkExtension["typeLien"] = explode(" ", trim($data[$c]))[0];
break;
// Type de cable ex: OS2, OM4, etc...
case 6:
$linkExtension["typeCable"] = trim($data[$c]);
break;
// Site title ex: @46, @89, etc...
case 7:
$linkExtension["siteExtremityA"] = trim($data[$c]);
break;
// room title
case 8:
$linkExtension["roomExtremityA"] = trim($data[$c]);
break;
// rack title
case 9:
$linkExtension["rackExtremityA"] = trim($data[$c]);
break;
// equipment title
case 10:
$linkExtension["equipmentExtremityA"] = trim($data[$c]);
break;
// slot
case 11:
$linkExtension["slotExtremityA"] = trim($data[$c]);
if (!array_key_exists($linkExtension["equipmentExtremityA"], $equipmentsArray)) {
$equipmentsArray[$linkExtension["equipmentExtremityA"]] = array();
}
if (!array_key_exists(explode("-", trim($data[$c]))[0], $equipmentsArray[$linkExtension["equipmentExtremityA"]])) {
$equipmentsArray[$linkExtension["equipmentExtremityA"]][explode("-", trim($data[$c]))[0]] = 0;
}
// $equipmentsArray[$linkExtension["equipmentExtremityA"]][explode("-", trim($data[$c]))[0]] = 0;
break;
// port
case 12:
$tempPorts = trim($data[$c]);
$tempPortsAArray = explode("/", $tempPorts);
if (count($tempPortsAArray) > 1 && $linkExtension["typeLien"] == "Duplex" && $tempPortsAArray[1] == "0") {
$tempPortsAArray[1] = $tempPortsAArray[0] + 1;
$tempPorts = implode("/", $tempPortsAArray);
} elseif (count($tempPortsAArray) > 1 && $linkExtension["typeLien"] == "Single" && $tempPortsAArray[1] == "0") {
$tempPorts = $tempPortsAArray[0];
}
if (LinkController::endsWith($linkExtension["equipmentExtremityA"], "ACE48FO")) {
$slot = LinkController::startsWith($linkExtension["slotExtremityA"], "0") ? substr($linkExtension["slotExtremityA"], 1) : $linkExtension["slotExtremityA"];
$tempPortsAArray = explode("/", $tempPorts);
$resPorts = array();
foreach ($tempPortsAArray as $value) {
switch ($slot) {
case '1':
$resPorts[] = $value > 12 ? $value % 12 : $value;
break;
case '2':
$resPorts[] = $value < 13 || $value > 24 ? 12 + ($value % 12) : $value;
break;
case '3':
$resPorts[] = $value < 25 || $value > 36 ? 24 + ($value % 12) : $value;
break;
case '4':
$resPorts[] = $value < 37 || $value > 48 ? 36 + ($value % 12) : $value;
break;
case '5':
$resPorts[] = $value < 49 || $value > 60 ? 48 + ($value % 12) : $value;
break;
default:
// code...
break;
}
}
$tempPorts = implode("/", $resPorts);
}
$tempPortsAArray = explode("/", $tempPorts);
foreach ($tempPortsAArray as $value) {
$this->get('logger')->error("5614 : " . $value);
$this->get('logger')->error("5615 : " . $equipmentsArray[$linkExtension["equipmentExtremityA"]][explode("-", $linkExtension["slotExtremityA"])[0]]);
$this->get('logger')->error("5616 : " . explode("-", $linkExtension["slotExtremityA"])[0]);
if ($equipmentsArray[$linkExtension["equipmentExtremityA"]][explode("-", $linkExtension["slotExtremityA"])[0]] < $value) {
$equipmentsArray[$linkExtension["equipmentExtremityA"]][explode("-", $linkExtension["slotExtremityA"])[0]] = $value;
}
}
$linkExtension["portExtremityA"] = $tempPorts;
break;
// Site title ex: @46, @89, etc...
case 13:
$linkExtension["siteExtremityB"] = trim($data[$c]);
break;
// room title
case 14:
$linkExtension["roomExtremityB"] = trim($data[$c]);
break;
// rack title
case 15:
$linkExtension["rackExtremityB"] = trim($data[$c]);
break;
// equipment title
case 16:
$linkExtension["equipmentExtremityB"] = trim($data[$c]);
break;
// slot
case 17:
$linkExtension["slotExtremityB"] = trim($data[$c]);
if (!array_key_exists($linkExtension["equipmentExtremityB"], $equipmentsArray)) {
$equipmentsArray[$linkExtension["equipmentExtremityB"]] = array();
}
if (!array_key_exists(explode("-", trim($data[$c]))[0], $equipmentsArray[$linkExtension["equipmentExtremityB"]])) {
$equipmentsArray[$linkExtension["equipmentExtremityB"]][explode("-", trim($data[$c]))[0]] = 0;
}
// $equipmentsArray[$linkExtension["equipmentExtremityB"]][explode("-", trim($data[$c]))[0]] = 0;
break;
// port
case 18:
$tempPorts = trim($data[$c]);
$tempPortsBArray = explode("/", $tempPorts);
if (count($tempPortsBArray) > 1 && $linkExtension["typeLien"] == "Duplex" && $tempPortsBArray[1] == "0") {
$tempPortsBArray[1] = $tempPortsBArray[0] + 1;
$tempPorts = implode("/", $tempPortsBArray);
} elseif (count($tempPortsBArray) > 1 && $linkExtension["typeLien"] == "Single" && $tempPortsBArray[1] == "0") {
$tempPorts = $tempPortsBArray[0];
}
if (LinkController::endsWith($linkExtension["equipmentExtremityB"], "ACE48FO")) {
$slot = LinkController::startsWith($linkExtension["slotExtremityB"], "0") ? substr($linkExtension["slotExtremityB"], 1) : $linkExtension["slotExtremityB"];
$tempPortsBArray = explode("/", $tempPorts);
$resPorts = array();
foreach ($tempPortsBArray as $value) {
switch ($slot) {
case '1':
$resPorts[] = $value > 12 ? $value % 12 : $value;
break;
case '2':
$resPorts[] = $value < 13 || $value > 24 ? 12 + ($value % 12) : $value;
break;
case '3':
$resPorts[] = $value < 25 || $value > 36 ? 24 + ($value % 12) : $value;
break;
case '4':
$resPorts[] = $value < 37 || $value > 48 ? 36 + ($value % 12) : $value;
break;
case '5':
$resPorts[] = $value < 49 || $value > 60 ? 48 + ($value % 12) : $value;
break;
default:
$resPorts[] = $value;
break;
}
}
$tempPorts = implode("/", $resPorts);
}
$tempPortsBArray = explode("/", $tempPorts);
foreach ($tempPortsBArray as $value) {
if ($equipmentsArray[$linkExtension["equipmentExtremityB"]][explode("-", $linkExtension["slotExtremityB"])[0]] < $value) {
$equipmentsArray[$linkExtension["equipmentExtremityB"]][explode("-", $linkExtension["slotExtremityB"])[0]] = $value;
}
}
$linkExtension["portExtremityB"] = $tempPorts;
break;
default:
// code...
break;
}
}
$extractedData[$linkTitle]["linkExtensions"][] = $linkExtension;
}
// $row++;
}
fclose($handle);
}
// print_r($extractedData["F00030"]);
$corresFile = $_FILES['corresCsvFile']['tmp_name'];
$row = 1;
$corresExtractedData = array();
if (($handle = fopen($corresFile, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($row > 2) {
$num = count($data);
$keyWithoutSlot = "";
$keyWithSlot = "";
$modulaireId = null;
$moduleId = null;
$equipmentId = null;
$equipmentName = null;
for ($c = 0; $c < $num; $c++) {
switch ($c) {
//Link title
case 1:
case 2:
case 3:
case 4:
$keyWithoutSlot .= trim($data[$c]);
break;
case 5:
$keyWithSlot = $keyWithoutSlot . trim($data[$c]);
break;
case 7:
$comment = trim($data[$c]);
break;
case 9:
$equipmentName = trim($data[$c]);
break;
case 10:
$modulaireId = trim($data[$c]);
break;
case 11:
$moduleId = trim($data[$c]);
break;
case 12:
$equipmentId = trim($data[$c]);
break;
default:
break;
}
}
$corresExtractedData[$keyWithoutSlot] = array(
"equipmentName" => $equipmentName,
"modulaireId" => $modulaireId,
"moduleId" => $moduleId,
"equipmentId" => $equipmentId
);
$corresExtractedData[$keyWithSlot] = array(
"equipmentName" => $equipmentName,
"modulaireId" => $modulaireId,
"moduleId" => $moduleId,
"equipmentId" => $equipmentId
);
}
$row++;
}
fclose($handle);
}
$upload_dir = $this->get("kernel")->getLogDir();
$fullPathImage = $upload_dir . "/table de correspondabce.csv";
move_uploaded_file($corresFile, $fullPathImage);
$fp = fopen($fullPathImage, 'ab');
// fputs($fp, "\r\n");
// print_r($corresExtractedData);
$test = 1;
foreach ($extractedData as $key => $linkArray) {
if ($test > 606) {
break;
}
$test++;
if (in_array($key, LinkController::getLinkExceptions())) {
continue;
}
foreach ($linkArray["linkExtensions"] as $linkExtensionArray) {
$tempArrayA = array(
"site" => $linkExtensionArray["siteExtremityA"],
"room" => $linkExtensionArray["roomExtremityA"],
"rack" => $linkExtensionArray["rackExtremityA"],
"equipment" => $linkExtensionArray["equipmentExtremityA"],
"slot" => $linkExtensionArray["slotExtremityA"]
);
$equipementAArray = $this->getEquipmentId($tempArrayA, $corresExtractedData);
// var_dump($tempArrayA["equipment"]);
if ($equipementAArray == null || !($equipementAArray["equipmentId"] || $equipementAArray["moduleId"])) {
$equipementAArray = $this->createFakeEquipment($tempArrayA, $equipmentsArray, 1, 16, 3, 11);
$keyWithSlot = implode($tempArrayA);
$keyWithoutSlot = $tempArrayA["site"] . $tempArrayA["room"] . $tempArrayA["rack"] . $tempArrayA["equipment"];
$corresExtractedData[$keyWithSlot] = $equipementAArray;
$corresExtractedData[$keyWithoutSlot] = $equipementAArray;
$line = array("", $tempArrayA["site"], $tempArrayA["room"], $tempArrayA["rack"], $tempArrayA["equipment"], $tempArrayA["slot"], "", "", "", "", "", "", $equipementAArray["equipmentId"]);
// $val = implode(",", $line);
fputcsv($fp, $line);
// continue;
}
$tempArrayB = array(
"site" => $linkExtensionArray["siteExtremityB"],
"room" => $linkExtensionArray["roomExtremityB"],
"rack" => $linkExtensionArray["rackExtremityB"],
"equipment" => $linkExtensionArray["equipmentExtremityB"],
"slot" => $linkExtensionArray["slotExtremityB"]
);
$equipementBArray = $this->getEquipmentId($tempArrayB, $corresExtractedData);
if ($equipementBArray == null || !($equipementBArray["equipmentId"] || $equipementBArray["moduleId"])) {
$equipementBArray = $this->createFakeEquipment($tempArrayB, $equipmentsArray, 1, 16, 3, 11);
$keyWithSlot = implode($tempArrayB);
$keyWithoutSlot = $tempArrayB["site"] . $tempArrayB["room"] . $tempArrayB["rack"] . $tempArrayB["equipment"];
$corresExtractedData[$keyWithSlot] = $equipementBArray;
$corresExtractedData[$keyWithoutSlot] = $equipementBArray;
$line = array("", $tempArrayB["site"], $tempArrayB["room"], $tempArrayB["rack"], $tempArrayB["equipment"], $tempArrayB["slot"], "", "", "", "", "", "", $equipementBArray["equipmentId"]);
// $val = implode(",", $line);
fputcsv($fp, $line);
}
$em->flush();
}
}
fclose($fp);
return $this->file($fullPathImage);
// print_r($error);
}
// show form
}
return $this->render('link/import_csv.html.twig', [
'page_title' => $translator->trans('Générer link - CSV'),
'box_title' => "Choisir un Fichier CSV"
]);
}
/**
* @Route("/link/verification", name="link_verification")
*/
public function linkVerification(Request $request, TranslatorInterface $translator)
{
set_time_limit(0);
$user = $this->getUser();
// process form
if ($user->hasRole("ROLE_SUPER_ADMIN") || $user->hasRole("ROLE_ADMIN")) {
$em = $this->getDoctrine()->getManager();
$links = $em->getRepository(Link::class)->findAll();
foreach ($links as $link) {
LinkController::validateLink($em, $link);
}
}
return $this->redirect($request->headers->get('referer'));
}
public static function validateLink($em, $link)
{
$linkExts = $em->getRepository(LinkExtension::class)->findBy(["link" => $link]);
foreach ($linkExts as $linkExt) {
if ($linkExt->getSequenceNo() > 1) {
// validate last extension
// $portA1 = null;
// $portA2 = null;
$portsA = array();
$extOrders = $linkExt->getExtremityA()->getExtensionOrder();
foreach ($extOrders as $extOrder) {
for ($i = 1; $i <= 12; $i++) {
if ($extOrder->getOrderNumber() == $i) {
$portsA["portA" . $i] = $extOrder->getPort();
}
}
// if ($extOrder->getOrderNumber() == 1) {
// $portA1 = $extOrder->getPort();
// $portsA["portA1"] = $portA1;
// }
// elseif ($extOrder->getOrderNumber() == 2) {
// $portA2 = $extOrder->getPort();
// $portsA["portA2"] = $portA2;
// }
}
LinkController::validateLastExtension($em, $link, $linkExt, $portsA);
}
if ($linkExt->getSequenceNo() < count($link->getLinkExtension())) {
// validate next extension
// $portB1 = null;
// $portB2 = null;
$portsB = array();
$extOrders = $linkExt->getExtremityB()->getExtensionOrder();
foreach ($extOrders as $extOrder) {
for ($i = 1; $i <= 12; $i++) {
if ($extOrder->getOrderNumber() == $i) {
// $portB1 = $extOrder->getPort();
$portsB["portB" . $i] = $extOrder->getPort();
}
}
// if ($extOrder->getOrderNumber() == 1) {
// $portB1 = $extOrder->getPort();
// $portsB["portB1"] = $portB1;
// }
// elseif ($extOrder->getOrderNumber() == 2) {
// $portB2 = $extOrder->getPort();
// $portsB["portB2"] = $portB2;
// }
}
LinkController::validateNextExtension($em, $link, $linkExt, $portsB);
// LinkController::validateNextExtension($em, $link, $linkExt, $portB1, $portB2);
}
}
$em->flush();
}
public static function getLinkExceptions()
{
return array(
"F00097",
"F00099",
"F00164",
"F00211",
"F00359",
"F00360",
"F00361",
"F00362",
"F00363",
"F00364",
"F00365",
"F00366",
"F00367",
"F00368"
);
}
public function getEquipmentId($eqData, $corresExtractedData)
{
$keyWithSlot = implode($eqData);
$keyWithoutSlot = $eqData["site"] . $eqData["room"] . $eqData["rack"] . $eqData["equipment"];
if (array_key_exists($keyWithSlot, $corresExtractedData) && ($corresExtractedData[$keyWithSlot]["equipmentId"] || $corresExtractedData[$keyWithSlot]["moduleId"])) {
// var_dump($keyWithSlot . " - ". $corresExtractedData[$keyWithSlot]["equipmentId"]);
return $corresExtractedData[$keyWithSlot];
} elseif (array_key_exists($keyWithoutSlot, $corresExtractedData) && ($corresExtractedData[$keyWithoutSlot]["equipmentId"] || $corresExtractedData[$keyWithoutSlot]["moduleId"])) {
// var_dump($keyWithoutSlot . " - ". $corresExtractedData[$keyWithoutSlot]["moduleId"]);
return $corresExtractedData[$keyWithoutSlot];
} elseif ("Cassette.12Fo" == $eqData["equipment"]) {
$tempRoom = explode(" ", $eqData["room"]);
$eqName = "Idea " . $tempRoom[count($tempRoom) - 1] . " " . $eqData["rack"];
// var_dump($eqName);
//To make it work with the slots starts with leading 0
$tempSlot = $eqData["slot"];
// if ($eqData["slot"]{
// 0} == "0") {
if ($eqData["slot"][0] == "0") {
// $tempSlot = $eqData["slot"]{
// 1};
$tempSlot = $eqData["slot"][1];
}
$moduleName = "Cassette " . $tempSlot;
// var_dump($module);
$tempSite = $eqData["site"];
if (LinkController::startsWith($eqData["site"], "RTL")) {
$tempSite = "RTL";
}
$site = $this->getDoctrine()->getRepository('App\Entity\Site')->findOneByTitle($tempSite);
$room = $this->getDoctrine()->getRepository('App\Entity\Room')->findOneBy(["title" => $tempRoom[count($tempRoom) - 1], "site" => $site]);
$rack = $this->getDoctrine()->getRepository('App\Entity\Rack')->findOneBy(["title" => $eqData["rack"], "room" => $room]);
$equipment = $this->getDoctrine()->getRepository('App\Entity\EquipmentSpecific')->findOneBy(["equipmentSpecificName" => $eqName, "rack" => $rack]);
$module = $this->getDoctrine()->getRepository('App\Entity\EquipmentSpecific')->findOneBy(["equipmentSpecificName" => $moduleName, "parent" => $equipment]);
if ($module) {
// var_dump($module->getId());
return array(
"equipmentName" => $module->getEquipmentSpecificName(),
"modulaireId" => null,
"moduleId" => $module->getId(),
"equipmentId" => null,
);
} else {
$em = $this->getDoctrine()->getManager();
$eq = new EquipmentSpecific();
$eq->setEquipmentSpecificName($moduleName);
$eq->setAlias("K7-" . $tempSlot);
$moduleGeneric = $this->getDoctrine()->getRepository('App\Entity\EquipmentGeneric')->findOneById(3);
$eq->setEquipmentGeneric($moduleGeneric);
$slot = $this->getDoctrine()->getRepository('App\Entity\Slot')->findOneBy(["modulaire" => $equipment, "slotNumber" => $tempSlot]);
$slot->setModule($eq);
$em->persist($slot);
$eq->setIsModule(true);
$eq->setParent($equipment);
//
// $eq->setRack($this->getDoctrine()->getRepository('App\Entity\Rack')->findOneById($request->request->get('rack')));
// $eq->setRackFace($this->getDoctrine()->getRepository('App\Entity\RackFace')->findOneById($request->request->get('rackFace')));
// $eq->setPositionRack($request->request->get('positionRack'));
$em->persist($eq);
$em->flush();
$eq->setRack($rack);
// create specific interfaces
$interfacesGeneric = $this->getDoctrine()->getRepository('App\Entity\InterfaceGeneric')->findByEquipmentGeneric($moduleGeneric);
foreach ($interfacesGeneric as $interfaceGeneric) {
$interfaceSpecific = new InterfaceSpecific();
$interfaceSpecific->setEquipmentSpecific($eq);
$interfaceSpecific->setInterfaceGeneric($interfaceGeneric);
$em->persist($interfaceSpecific);
$em->flush();
$alias = null;
if ($interfaceGeneric->getAlias()) {
$alias = json_decode($interfaceGeneric->getAlias(), true);
}
$portExternes = null;
$idTemp = $interfaceGeneric->getId();
// var_dump($_POST["portExterne[$idTemp]"]);
if (isset($_POST["portExterne"][$idTemp])) {
foreach ($_POST["portExterne"][$idTemp] as $key => $value) {
$portExternes[$key] = $value;
}
}
// var_dump($portExternes);
// create ports
$numberOfPorts = $interfaceGeneric->getNumberOfPorts();
for ($i = 1; $i <= $numberOfPorts; $i++) {
$port = new Port();
$port->setInterfaceSpecific($interfaceSpecific);
$port->setOrderNo($i);
if ($alias && count($alias) > 0) {
$port->setAlias($alias[$i]);
}
if ($portExternes) {
if (isset($portExternes[$i]) && $portExternes[$i]) {
$port->setPortExterne($this->getDoctrine()->getRepository('App\Entity\PortExterne')->findOneById($portExternes[$i]));
}
}
$em->persist($port);
$em->flush();
}
}
return array(
"equipmentName" => $eq->getEquipmentSpecificName(),
"modulaireId" => null,
"moduleId" => $eq->getId(),
"equipmentId" => null,
);
}
} else {
$eqName = $eqData["equipment"];
$tempSite = $eqData["site"];
if (LinkController::startsWith($eqData["site"], "RTL")) {
$tempSite = "RTL";
}
$site = $this->getDoctrine()->getRepository('App\Entity\Site')->findOneByTitle($tempSite);
if (null == $site) {
return null;
}
$room = null;
if ($eqData["room"] == "STU 01") {
$room = $this->getDoctrine()->getRepository('App\Entity\Room')->findOneBy(["title" => "STU01", "site" => $site]);
} else {
$room = $this->getDoctrine()->getRepository('App\Entity\Room')->findOneBy(["title" => $eqData["room"], "site" => $site]);
}
if (null == $room) {
$tempRoom = explode(" ", $eqData["room"]);
if (count($tempRoom) == 2) {
$room = $this->getDoctrine()->getRepository('App\Entity\Room')->findOneBy(["title" => $tempRoom[1], "site" => $site]);
} elseif (count($tempRoom) == 3) {
$room = $this->getDoctrine()->getRepository('App\Entity\Room')->findOneBy(["title" => $tempRoom[1] . " " . $tempRoom[2], "site" => $site]);
} else {
return null;
}
if (null == $room) {
return null;
}
}
$rack = $this->getDoctrine()->getRepository('App\Entity\Rack')->findOneBy(["title" => $eqData["rack"], "room" => $room]);
if (null == $rack) {
return null;
}
$equipment = $this->getDoctrine()->getRepository('App\Entity\EquipmentSpecific')->findOneBy(["equipmentSpecificName" => $eqName, "rack" => $rack]);
if ($equipment) {
return array(
"equipmentName" => $equipment->getEquipmentSpecificName(),
"modulaireId" => null,
"moduleId" => null,
"equipmentId" => $equipment->getId(),
);
}
}
return null;
}
public function getInterfaceSpecific($equipementArray, $linkExtensionArray, $extremity)
{
$eqId = $equipementArray["equipmentId"] ? $equipementArray["equipmentId"] : $equipementArray["moduleId"];
$equipmentSpecific = $this->getDoctrine()->getRepository('App\Entity\EquipmentSpecific')->find($eqId);
$interface = null;
$defaultInterfaceToChoose = ["SFP", "SFP LC", "SFP SC", "SFP SC", "SFP X2", "QSFP", "10G", "X2 SC"];
if ($equipmentSpecific) {
$interfaceSpecificArray = $equipmentSpecific->getInterfaceSpecific();
$slot = $extremity == "A" ? $linkExtensionArray["slotExtremityA"] : $linkExtensionArray["slotExtremityB"];
$eqName = $extremity == "A" ? $linkExtensionArray["equipmentExtremityA"] : $linkExtensionArray["equipmentExtremityB"];
if ($equipementArray["equipmentId"]) {
foreach ($interfaceSpecificArray as $temp) {
if ($temp->getInterfaceGeneric()->getInterfaceNumber() == $slot) {
$interface = $temp;
break;
}
}
if ($interface == null) {
if ($eqName == "RACK.48FO") {
$interface = $interfaceSpecificArray[0];
} elseif ($eqName == "SW.BOLERO") {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if ($tempInterfaceNo == "2") {
$interface = $temp;
break;
}
// if(in_array($temp->getInterfaceGeneric()->getInterfaceNumber(),$defaultInterfaceToChoose)){
// $interface = $temp;
// break;
// }
}
} else {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "SFP")) {
$interface = $temp;
break;
}
// if(in_array($temp->getInterfaceGeneric()->getInterfaceNumber(),$defaultInterfaceToChoose)){
// $interface = $temp;
// break;
// }
}
if ($interface == null) {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "10G")) {
$interface = $temp;
break;
}
// if(in_array($temp->getInterfaceGeneric()->getInterfaceNumber(),$defaultInterfaceToChoose)){
// $interface = $temp;
// break;
// }
}
if ($interface == null) {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "QSFP")) {
$interface = $temp;
break;
}
// if(in_array($temp->getInterfaceGeneric()->getInterfaceNumber(),$defaultInterfaceToChoose)){
// $interface = $temp;
// break;
// }
}
if ($interface == null) {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "X2 SC")) {
$interface = $temp;
break;
}
// if(in_array($temp->getInterfaceGeneric()->getInterfaceNumber(),$defaultInterfaceToChoose)){
// $interface = $temp;
// break;
// }
}
}
}
}
}
}
} elseif ($equipementArray["moduleId"]) {
$slotTemp = explode("-", $slot);
if (count($slotTemp) > 1) {
$slot = $slotTemp[count($slotTemp) - 1];
foreach ($interfaceSpecificArray as $temp) {
if ($temp->getInterfaceGeneric()->getInterfaceNumber() == $slot) {
$interface = $temp;
break;
}
}
if ($interface == null) {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "SFP")) {
$interface = $temp;
break;
}
// if(in_array($temp->getInterfaceGeneric()->getInterfaceNumber(),$defaultInterfaceToChoose)){
// $interface = $temp;
// break;
// }
}
if ($interface == null) {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "10G")) {
$interface = $temp;
break;
}
// if(in_array($temp->getInterfaceGeneric()->getInterfaceNumber(),$defaultInterfaceToChoose)){
// $interface = $temp;
// break;
// }
}
if ($interface == null) {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "QSFP")) {
$interface = $temp;
break;
}
// if(in_array($temp->getInterfaceGeneric()->getInterfaceNumber(),$defaultInterfaceToChoose)){
// $interface = $temp;
// break;
// }
}
if ($interface == null) {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "X2 SC")) {
$interface = $temp;
break;
}
// if(in_array($temp->getInterfaceGeneric()->getInterfaceNumber(),$defaultInterfaceToChoose)){
// $interface = $temp;
// break;
// }
}
}
}
}
}
} else {
if (count($interfaceSpecificArray) == 1) {
// var_dump($interfaceSpecificArray{0}->getId());
$interface = $interfaceSpecificArray[0];
} else {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "SFP")) {
$interface = $temp;
break;
}
}
if ($interface == null) {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "10G")) {
$interface = $temp;
break;
}
}
if ($interface == null) {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "QSFP")) {
$interface = $temp;
break;
}
}
if ($interface == null) {
foreach ($interfaceSpecificArray as $temp) {
$tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
if (LinkController::startsWith($tempInterfaceNo, "X2 SC")) {
$interface = $temp;
break;
}
}
}
}
}
// foreach ($interfaceSpecificArray as $temp) {
// $tempInterfaceNo = $temp->getInterfaceGeneric()->getInterfaceNumber();
// if (LinkController::startsWith($tempInterfaceNo, "SFP")) {
// $interface = $temp;
// break;
// }
// elseif(LinkController::startsWith($tempInterfaceNo, "10G")) {
// $interface = $temp;
// break;
// }
// elseif(LinkController::startsWith($tempInterfaceNo, "QSFP")) {
// $interface = $temp;
// break;
// }
// elseif(LinkController::startsWith($tempInterfaceNo, "X2 SC")) {
// $interface = $temp;
// break;
// }
// // if(in_array($temp->getInterfaceGeneric()->getInterfaceNumber(),$defaultInterfaceToChoose)){
// // $interface = $temp;
// // break;
// // }
// }
}
}
}
}
// $this->get('logger')->error("5294 : ".$interface->getId());
return $interface;
}
public function getInterfaceSpecificV2($equipementArray, $ports)
{
// if ($equipementArray["moduleId"]) {
$eqId = $equipementArray["moduleId"] ? $equipementArray["moduleId"] : $equipementArray["equipmentId"];
$equipmentSpecific = $this->getDoctrine()->getRepository('App\Entity\EquipmentSpecific')->find($eqId);
$interface = null;
// $defaultInterfaceToChoose = ["QSFP", "10G", "40G", "X2 SC"];
if ($equipmentSpecific) {
$interfaceSpecificArray = $equipmentSpecific->getInterfaceSpecific();
// $slot = $extremity == "A" ? $equipementArray["slotExtremityA"] : $equipementArray["slotExtremityB"];
$portsTemp = explode("/", $ports);
if (count($portsTemp) == 1) {
foreach ($interfaceSpecificArray as $temp) {
// if(LinkController::startsWith($tempInterfaceNo, "SFP") || in_array($temp->getInterfaceGeneric()->getInterfaceNumber(), $defaultInterfaceToChoose)){
foreach ($temp->getPort() as $value) {
if ($value->getOrderNo() == $ports || $value->getAlias() == $ports) {
// print_r($ports);
// print_r($value->getOrderNo());
// print_r($value->getAlias());
return $temp;
}
}
// }
}
if (count($interfaceSpecificArray) == 2 && $ports > 48) {
foreach ($interfaceSpecificArray as $temp) {
if ($temp->getInterfaceGeneric()->getNumberOfPorts() != 48) {
return $temp;
}
}
}
}
}
// }
return null;
}
public function getPortsCSV($interfaceSpecific, $orderNoArray)
{
// var_dump($interfaceSpecific->getId());
$portsArray = array();
foreach ($orderNoArray as $orderNo) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneBy(["interfaceSpecific" => $interfaceSpecific, "orderNo" => $orderNo]);
if ($port == null) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneBy(["interfaceSpecific" => $interfaceSpecific, "alias" => $orderNo]);
}
if ($port == null) {
$port = $this->getDoctrine()->getRepository("App:Port")->createQueryBuilder('p')
->where('p.interfaceSpecific = :if')
->andWhere('p.orderNo LIKE :no')
->setParameter('if', $interfaceSpecific)
->setParameter('no', '%' . $orderNo)
->getQuery()
->getOneOrNullResult();
}
if ($port == null) {
switch ($orderNo) {
case '49':
$orderNo = "G1";
break;
case '50':
$orderNo = "G2";
break;
case '51':
$orderNo = "G3";
break;
case '52':
$orderNo = "G4";
break;
default:
// code...
break;
}
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneBy(["interfaceSpecific" => $interfaceSpecific, "alias" => $orderNo]);
}
$portsArray[] = $port;
}
return $portsArray;
}
public function getPortsCSV2($interfaceSpecific, $orderNoArray)
{
// var_dump($interfaceSpecific->getId());
$portsArray = array();
foreach ($orderNoArray as $orderNo) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneBy(["interfaceSpecific" => $interfaceSpecific, "orderNo" => $orderNo]);
if ($port == null) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneBy(["interfaceSpecific" => $interfaceSpecific, "alias" => $orderNo]);
}
if ($port == null) {
$port = $this->getDoctrine()->getRepository("App:Port")->createQueryBuilder('p')
->where('p.interfaceSpecific = :if')
->andWhere('p.orderNo LIKE :no')
->setParameter('if', $interfaceSpecific)
->setParameter('no', '%' . $orderNo)
->getQuery()
->getOneOrNullResult();
if ($port == null) {
$orderNo = $orderNo - 48;
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneBy(["interfaceSpecific" => $interfaceSpecific, "orderNo" => $orderNo]);
if ($port == null) {
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneBy(["interfaceSpecific" => $interfaceSpecific, "alias" => $orderNo]);
}
if ($port == null) {
$port = $this->getDoctrine()->getRepository("App:Port")->createQueryBuilder('p')
->where('p.interfaceSpecific = :if')
->andWhere('p.orderNo LIKE :no')
->setParameter('if', $interfaceSpecific)
->setParameter('no', '%' . $orderNo)
->getQuery()
->getOneOrNullResult();
}
}
}
$portsArray[] = $port;
}
return $portsArray;
}
public function createFakeEquipment($tempArray, $equipmentsArray, $typeLinkId, $typeConnectorId, $typeInterconnxionId, $typeEquipmentId)
{
$eqName = $tempArray["equipment"];
$tempSite = $tempArray["site"];
if (LinkController::startsWith($tempArray["site"], "RTL")) {
$tempSite = "RTL";
}
$site = $this->getDoctrine()->getRepository('App\Entity\Site')->findOneByTitle($tempSite);
if (null == $site) {
return false;
}
$this->get('logger')->error("5586 : " . $site->getId());
//
// if (!$site) {
// return false;
// }
$room = null;
if ($tempArray["room"] == "STU 01") {
$room = $this->getDoctrine()->getRepository('App\Entity\Room')->findOneBy(["title" => "STU01", "site" => $site]);
} else {
$room = $this->getDoctrine()->getRepository('App\Entity\Room')->findOneBy(["title" => $tempArray["room"], "site" => $site]);
}
if (null == $room) {
$tempRoom = explode(" ", $tempArray["room"]);
if (count($tempRoom) == 2) {
$room = $this->getDoctrine()->getRepository('App\Entity\Room')->findOneBy(["title" => $tempRoom[1], "site" => $site]);
} elseif (count($tempRoom) == 3) {
$room = $this->getDoctrine()->getRepository('App\Entity\Room')->findOneBy(["title" => $tempRoom[1] . " " . $tempRoom[2], "site" => $site]);
} else {
return false;
}
if (null == $room) {
return false;
}
}
$this->get('logger')->error("5604 : " . $room->getId());
// if (!$room) {
// return false;
// }
$em = $this->getDoctrine()->getManager();
$rack = $this->getDoctrine()->getRepository('App\Entity\Rack')->findOneBy(["title" => $tempArray["rack"], "room" => $room]);
if (null == $rack) {
$rack = new Rack();
$rack->setRoom($room);
$rack->setTitle($tempArray["rack"]);
$rack->setNumberOfUnits(80);
$em->persist($rack);
$em->flush();
}
$this->get('logger')->error("5613 : " . $rack->getId());
// $eq = $this->getDoctrine()->getRepository('App\Entity\EquipmentSpecific')->findOneById(["equipmentSpecificName"=>$eqName, "rack"=>$rack]);
// if ($eq){
// return array("equipmentName" =>$eq->getEquipmentSpecificName(),
// "modulaireId" =>null,
// "moduleId" =>null,
// "equipmentId" =>$eq->getId(),
// );
// }
// $slotsArrayTemp = array_unique($equipmentsArray[$eqName]);
// foreach ($slotsArrayTemp as $key => $value) {
// $slotsArray[$key] = $value;
// }
$slotsArray = $equipmentsArray[$eqName];
$eqGenericId = $this->createFakeEquipmentGeneric($eqName, $slotsArray, $typeLinkId, $typeConnectorId, $typeInterconnxionId, $typeEquipmentId);
$this->get('logger')->error("5567 : " . $eqGenericId);
$eqGeneric = $this->getDoctrine()->getRepository('App\Entity\EquipmentGeneric')->findOneById($eqGenericId);
$eq = new EquipmentSpecific();
$eq->setEquipmentSpecificName($eqName);
$eq->setAlias($eqName);
$eq->setEquipmentGeneric($eqGeneric);
$eq->setRack($rack);
$rackFaceId = 1;
$rackPosition = $this->findEmptyRackPosition($rackFaceId, $rack->getId(), $eqGeneric->getId());
$this->get('logger')->error("5618 : " . $rackPosition);
if ($rackPosition < 1) {
$rackFaceId = 2;
$rackPosition = $this->findEmptyRackPosition($rackFaceId, $rack->getId(), $eqGeneric->getId());
}
if ($rackPosition < 1) {
return false;
}
$eq->setRackFace($this->getDoctrine()->getRepository('App\Entity\RackFace')->findOneById($rackFaceId));
$eq->setPositionRack($rackPosition);
$em->persist($eq);
$em->flush();
// create specific interfaces
$interfacesGeneric = $this->getDoctrine()->getRepository('App\Entity\InterfaceGeneric')->findByEquipmentGeneric($eqGeneric);
foreach ($interfacesGeneric as $interfaceGeneric) {
$interfaceSpecific = new InterfaceSpecific();
$interfaceSpecific->setEquipmentSpecific($eq);
$interfaceSpecific->setInterfaceGeneric($interfaceGeneric);
$em->persist($interfaceSpecific);
$em->flush();
$alias = null;
if ($interfaceGeneric->getAlias()) {
$alias = json_decode($interfaceGeneric->getAlias(), true);
}
// create ports
$numberOfPorts = $interfaceGeneric->getNumberOfPorts();
for ($i = 1; $i <= $numberOfPorts; $i++) {
$port = new Port();
$port->setInterfaceSpecific($interfaceSpecific);
$port->setOrderNo($i);
if ($alias && count($alias) > 0) {
$port->setAlias($alias[$i]);
}
$em->persist($port);
$em->flush();
}
}
return array(
"equipmentName" => $eq->getEquipmentSpecificName(),
"modulaireId" => null,
"moduleId" => null,
"equipmentId" => $eq->getId(),
);
}
public function createFakeEquipmentGeneric($eqName, $slotsArray, $typeLinkId, $typeConnectorId, $typeInterconnxionId, $typeEquipmentId)
{
$eq = $this->getDoctrine()->getRepository('App\Entity\EquipmentGeneric')->findOneByTitle($eqName . " Generic");
if ($eq) {
$this->get('logger')->error("5744 : " . $eq->getId());
return $eq->getId();
}
$em = $this->getDoctrine()->getManager();
$eq = new EquipmentGeneric();
$eq->setTitle($eqName . " Generic");
$eq->setNumberOfUnits(1);
$eq->setNumberOfInterfaces(count($slotsArray));
$eq->setType($this->getDoctrine()->getRepository('App\Entity\TypeEquipment')->findOneById($typeEquipmentId));
$em->persist($eq);
$em->flush();
// $this->get('logger')->info(count($slotsArray));
// store interfaces
$this->get('logger')->error("5685 : " . count($slotsArray));
$inter_num = $eq->getNumberOfInterfaces();
$this->get('logger')->error("5687 : " . $inter_num);
foreach ($slotsArray as $key => $value) {
$this->get('logger')->error($key);
$if = new InterfaceGeneric();
$if->setEquipmentGeneric($eq);
$if->setInterfaceNumber($key);
$if->setNumberOfPorts($value);
$if->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->findOneById($typeLinkId));
$if->setTypeConnector($this->getDoctrine()->getRepository('App\Entity\TypeConnector')->findOneById($typeConnectorId));
$if->setTypeInterconnection($this->getDoctrine()->getRepository('App\Entity\TypeInterconnection')->findOneById($typeInterconnxionId));
$alias = [];
$nPorts = [];
for ($j = 1; $j <= $value; $j++) {
$alias[$j] = "";
$nPorts[] = $j;
}
$nPorts = json_encode($nPorts);
$nPorts = (string)$nPorts;
$if->setNPorts($nPorts);
$alias = json_encode($alias);
$alias = (string)$alias;
$if->setAlias($alias);
// }
// var_dump($if);
//
$em->persist($if);
$em->flush();
}
// for ($i = 0; $i < $inter_num; $i++){
//
// $this->get('logger')->error($i);
// $if = new InterfaceGeneric();
// $if->setEquipmentGeneric($eq);
// $if->setInterfaceNumber($slotsArray[$i]);
// $if->setNumberOfPorts($slotsArray[$i]);
// $if->setTypeLink($this->getDoctrine()->getRepository('App\Entity\TypeLink')->findOneById($typeLinkId));
// $if->setTypeConnector($this->getDoctrine()->getRepository('App\Entity\TypeConnector')->findOneById($typeConnectorId));
// $if->setTypeInterconnection($this->getDoctrine()->getRepository('App\Entity\TypeInterconnection')->findOneById($typeInterconnxionId));
//
// $alias = [];
// $nPorts = [];
//
// for ($j = 1; $j<=$nbPorts; $j++){
// $alias[$j] = "";
// $nPorts[] = $j;
// }
// $nPorts = json_encode($nPorts);
// $nPorts = (string)$nPorts;
//
// $if->setNPorts($nPorts);
//
// $alias = json_encode($alias);
// $alias = (string)$alias;
//
// $if->setAlias($alias);
// // }
// // var_dump($if);
// //
// $em->persist($if);
// $em->flush();
//
// }
return $eq->getId();
}
public function findEmptyRackPosition($rackFaceId, $rackId, $eqGeneric)
{
$rack = $this->getDoctrine()->getRepository('App\Entity\Rack')->findOneById($rackId);
$rack_capacity = $rack->getNumberOfUnits();
// start positions in rack
$front_positions = [];
$rear_positions = [];
for ($i = 1; $i <= $rack_capacity; $i++) {
$front_positions[] = $i;
$rear_positions[] = $i;
}
// remove occupied positions
$eqSpecificInRack = $this->getDoctrine()->getRepository('App\Entity\EquipmentSpecific')->findBy(["rack" => $rack->getId(), "isModule" => false]);
foreach ($eqSpecificInRack as $eq) {
$eqSpecificPosition = $eq->getPositionRack();
$eqSpecificHeight = $eq->getEquipmentGeneric()->getNumberOfUnits();
$eqSpecificRackFace = $eq->getRackFace()->getId();
for ($j = $eqSpecificPosition; $j < $eqSpecificPosition + $eqSpecificHeight; $j++) {
if ($eqSpecificRackFace == 1) {
if (($key = array_search($j, $front_positions)) !== false) {
unset($front_positions[$key]);
}
} else if ($eqSpecificRackFace == 2) {
if (($key = array_search($j, $front_positions)) !== false) {
unset($rear_positions[$key]);
}
} else {
if (($key = array_search($j, $front_positions)) !== false) {
unset($front_positions[$key]);
unset($rear_positions[$key]);
}
}
}
}
// get number of units of generic equipment
$equipmentGeneric = $this->getDoctrine()->getRepository('App\Entity\EquipmentGeneric')->findOneById($eqGeneric);
$numberOfUnits = $equipmentGeneric->getNumberOfUnits();
$available_positions = [];
if ($rackFaceId == 1) {
foreach ($front_positions as $key => $value) {
$available = true;
for ($k = $value; $k < $value + $numberOfUnits; $k++) {
if (!in_array($k, $front_positions)) {
$available = false;
}
}
if ($available) {
if (!in_array($value, $available_positions)) {
$available_positions[] = $value;
}
}
}
} else if ($rackFaceId == 2) {
foreach ($rear_positions as $key => $value) {
$available = true;
for ($k = $value; $k < $value + $numberOfUnits; $k++) {
if (!in_array($k, $rear_positions)) {
$available = false;
}
}
if ($available) {
if (!in_array($value, $available_positions)) {
$available_positions[] = $value;
}
}
}
} else {
foreach ($front_positions as $key => $value) {
$available = true;
for ($k = $value; $k < $value + $numberOfUnits; $k++) {
if (!in_array($k, $front_positions) || !in_array($k, $rear_positions)) {
$available = false;
}
}
if ($available) {
if (!in_array($value, $available_positions)) {
$available_positions[] = $value;
}
}
}
}
// RETURN ARRAY
return count($available_positions) > 0 ? $available_positions[0] : false;
}
public function getPorts($trunk, $ports, $linkType)
{
//get $tcfs
// var_dump($ports);
$portsB = [];
$tcfsForExts = [];
$tcfExtsFromB = array();
$duplex = false;
//MODIFIED ON 06/03/2020
if (($linkType->getTitle() == "Duplex" && count($ports) == 1) || ($linkType->getTitle() != "Simplex" && count($ports) == 1)) {
$duplex = true;
}
// var_dump($duplex);
foreach ($ports as $port) {
$tcfFromA = null;
$tcfFromB = null;
$tcfExtFromB = null;
if ($duplex) {
$tcfFromA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findBy(['portA' => $port]);
// var_dump($tcfFromA->getId());
$tcfFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findBy(['portB' => $port]);
// var_dump($tcfFromB->getId());
$tcfExtFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findBy(['portB' => $port]);
foreach ($tcfFromA as $temp) {
$portB = $temp->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $temp;
}
foreach ($tcfFromB as $temp) {
$portB = $temp->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $temp;
}
foreach ($tcfExtFromB as $temp) {
$tcfExtsFromB[] = $temp;
$reverseTrunk = true;
}
// var_dump($tcfsForExts);
// var_dump($tcfExtsFromB);
} else {
$tcfFromA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(['portA' => $port]);
// var_dump($tcfFromA->getId());
$tcfFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(['portB' => $port]);
// var_dump($tcfFromB->getId());
$tcfExtFromB = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['portB' => $port]);
if ($tcfFromA) {
$portB = $tcfFromA->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $tcfFromA;
// var_dump($portB->getId());
}
if ($tcfFromB) {
$portB = $tcfFromB->getPortB();
$portsB[] = $portB;
$tcfsForExts[] = $tcfFromB;
// var_dump($portB->getId());
}
//to treat the reverse case
if ($tcfExtFromB) {
// var_dump($tcfExtFromB);
$tcfExtsFromB[] = $tcfExtFromB;
$reverseTrunk = true;
}
// var_dump($tcfsForExts);
// var_dump($tcfExtsFromB);
}
}
if (count($tcfsForExts) > 0) {
foreach ($tcfsForExts as $tempTcf) {
$portsB[] = $tempTcf->getPortB();
}
for ($i = 1; $i <= count($tcfsForExts[0]->getExtensions()); $i++) {
foreach ($tcfsForExts as $tempTcf) {
// get the extensions of sequence $i
$tempExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['trunkCableFiber' => $tempTcf, "sequenceNo" => $i]);
// var_dump($tempExt);
if ($tempExt) {
$portsB[] = $tempExt->getPortB();
}
}
}
}
foreach ($tcfExtsFromB as $value) {
$tcf = $value->getTrunkCableFiber();
$portsB[] = $tcf->getPortB();
for ($i = 1; $i <= count($tcf->getExtensions()); $i++) {
// get the extensions of sequence $i
$tempExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneBy(['trunkCableFiber' => $tcf, "sequenceNo" => $i]);
// var_dump($tempExt);
if ($tempExt) {
$portsB[] = $tempExt->getPortB();
}
}
}
// foreach ($tcfExtsFromB as $tempTcf) {
// $portsB[] = $tempTcf->getPortB();
//
// }
// var_dump($portsB);
return $portsB;
}
public static function validateLastExtension($em, $link, $extension, $portsAArray)
{
$lastExtension = $em->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $extension->getSequenceNo() - 1]);
$lastExtB = $lastExtension->getExtremityB();
$lastPorts = [];
$lastPortsTemp = $lastExtB->getExtensionOrder();
foreach ($lastPortsTemp as $value) {
$lastPorts[] = $value->getPort();
}
// $lastPorts = $lastExtB->getPorts();
// var_dump($lastPorts);
$lastInterfaceSpecific = $lastPorts[0]->getInterfaceSpecific();
$lastInterfaceGeneric = $lastInterfaceSpecific->getInterfaceGeneric();
$lastEquipment = $lastInterfaceSpecific->getEquipmentSpecific() ? $lastInterfaceSpecific->getEquipmentSpecific() : $lastInterfaceSpecific->getEquipmentSpecificMpo();
$currentInterfaceSpecific = $portsAArray["portA1"]->getInterfaceSpecific();
// $currentInterfaceSpecific = $portA1->getInterfaceSpecific();
$currentEquipment = $currentInterfaceSpecific->getEquipmentSpecific() ? $currentInterfaceSpecific->getEquipmentSpecific() : $currentInterfaceSpecific->getEquipmentSpecificMpo();
//check if it's same as current modified link ext
if ($currentEquipment->getId() != $lastEquipment->getId()) {
//if false, set the link and las link extension as INVALID
$lastExtension->setIsValid(false);
if ($lastExtension->getError()) {
$lastExtension->setError($lastExtension->getError() . "," . "EquipmentB");
} else {
$lastExtension->setError("EquipmentB");
}
$em->persist($lastExtension);
} else {
// var_dump('hi');
$errMsg = $lastExtension->getError();
$errMsg = str_replace("EquipmentB", "", $errMsg);
$lastExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentA') !== false || strpos($errMsg, 'PortA') !== false)) {
$lastExtension->setIsValid(false);
} else {
$lastExtension->setIsValid(true);
$lastExtension->setError(null);
}
$em->persist($lastExtension);
//else get the last extension's extremity B's interface
//check if it's 1:1
if ($lastInterfaceGeneric->getTypeInterconnection()->getTitle() == '1-1') {
// if true, check ports are the same
//if true, DO NOTHING
//else set the link and las link extension as INVALID
foreach ($lastPorts as $lastPort) {
// var_dump($lastPort);
$extensionOrder = $em->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port" => $lastPort, "extremity" => $lastExtB]);
for ($i = 1; $i <= 12; $i++) {
if ($extensionOrder->getOrderNumber() == $i) {
if ($lastPort->getId() != $portsAArray["portA" . $i]->getId()) {
$lastExtension->setIsValid(false);
if ($lastExtension->getError()) {
$lastExtension->setError($lastExtension->getError() . "," . "PortB");
} else {
$lastExtension->setError("PortB");
}
$em->persist($lastExtension);
} else {
$errMsg = str_replace("PortB", "", $errMsg);
$lastExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentA') !== false || strpos($errMsg, 'PortA') !== false)) {
$lastExtension->setIsValid(false);
} else {
$lastExtension->setIsValid(true);
$lastExtension->setError(null);
}
$em->persist($lastExtension);
}
}
}
// if ($extensionOrder->getOrderNumber() == 1) {
// if ($lastPort->getId() != $portsAArray["portA1"]->getId()) {
// $lastExtension->setIsValid(false);
// if ($lastExtension->getError()) {
// $lastExtension->setError($lastExtension->getError() . "," . "PortB");
// }
// else {
// $lastExtension->setError("PortB");
// }
// $em->persist($lastExtension);
// }
// else {
// $errMsg = str_replace("PortB", "", $errMsg);
// $lastExtension->setError($errMsg);
// if (!$errMsg && (strpos($errMsg, 'EquipmentA') !== false || strpos($errMsg, 'PortA') !== false)) {
// $lastExtension->setIsValid(false);
// }
// else {
// $lastExtension->setIsValid(true);
// $lastExtension->setError(null);
// }
// $em->persist($lastExtension);
// }
// }
// elseif ($extensionOrder->getOrderNumber() == 2) {
// if ($lastPort->getId() != $portsAArray["portA2"]->getId()) {
// $lastExtension->setIsValid(false);
// if ($lastExtension->getError()) {
// $lastExtension->setError($lastExtension->getError() . "," . "PortB");
// }
// else {
// $lastExtension->setError("PortB");
// }
// $em->persist($lastExtension);
// }
// else {
// $errMsg = str_replace("PortB", "", $errMsg);
// $lastExtension->setError($errMsg);
// if (!$errMsg && (strpos($errMsg, 'EquipmentA') !== false || strpos($errMsg, 'PortA') !== false)) {
// $lastExtension->setIsValid(false);
// }
// else {
// $lastExtension->setIsValid(true);
// $lastExtension->setError(null);
// }
// $em->persist($lastExtension);
// }
// }
}
}
}
}
public static function validateLastExtensionV0($em, $link, $extension, $portA1, $portA2)
{
$lastExtension = $em->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $extension->getSequenceNo() - 1]);
$lastExtB = $lastExtension->getExtremityB();
$lastPorts = [];
$lastPortsTemp = $lastExtB->getExtensionOrder();
foreach ($lastPortsTemp as $value) {
$lastPorts[] = $value->getPort();
}
// $lastPorts = $lastExtB->getPorts();
// var_dump($lastPorts);
$lastInterfaceSpecific = $lastPorts[0]->getInterfaceSpecific();
$lastInterfaceGeneric = $lastInterfaceSpecific->getInterfaceGeneric();
$lastEquipment = $lastInterfaceSpecific->getEquipmentSpecific() ? $lastInterfaceSpecific->getEquipmentSpecific() : $lastInterfaceSpecific->getEquipmentSpecificMpo();
$currentInterfaceSpecific = $portA1->getInterfaceSpecific();
$currentEquipment = $currentInterfaceSpecific->getEquipmentSpecific() ? $currentInterfaceSpecific->getEquipmentSpecific() : $currentInterfaceSpecific->getEquipmentSpecificMpo();
//check if it's same as current modified link ext
if ($currentEquipment->getId() != $lastEquipment->getId()) {
//if false, set the link and las link extension as INVALID
$lastExtension->setIsValid(false);
if ($lastExtension->getError()) {
$lastExtension->setError($lastExtension->getError() . "," . "EquipmentB");
} else {
$lastExtension->setError("EquipmentB");
}
$em->persist($lastExtension);
} else {
// var_dump('hi');
$errMsg = $lastExtension->getError();
$errMsg = str_replace("EquipmentB", "", $errMsg);
$lastExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentA') !== false || strpos($errMsg, 'PortA') !== false)) {
$lastExtension->setIsValid(false);
} else {
$lastExtension->setIsValid(true);
$lastExtension->setError(null);
}
$em->persist($lastExtension);
//else get the last extension's extremity B's interface
//check if it's 1:1
if ($lastInterfaceGeneric->getTypeInterconnection()->getTitle() == '1-1') {
// if true, check ports are the same
//if true, DO NOTHING
//else set the link and las link extension as INVALID
foreach ($lastPorts as $lastPort) {
// var_dump($lastPort);
$extensionOrder = $em->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port" => $lastPort, "extremity" => $lastExtB]);
if ($extensionOrder->getOrderNumber() == 1) {
if ($lastPort->getId() != $portA1->getId()) {
$lastExtension->setIsValid(false);
if ($lastExtension->getError()) {
$lastExtension->setError($lastExtension->getError() . "," . "PortB");
} else {
$lastExtension->setError("PortB");
}
$em->persist($lastExtension);
} else {
$errMsg = str_replace("PortB", "", $errMsg);
$lastExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentA') !== false || strpos($errMsg, 'PortA') !== false)) {
$lastExtension->setIsValid(false);
} else {
$lastExtension->setIsValid(true);
$lastExtension->setError(null);
}
$em->persist($lastExtension);
}
} elseif ($extensionOrder->getOrderNumber() == 2) {
if ($lastPort->getId() != $portA2->getId()) {
$lastExtension->setIsValid(false);
if ($lastExtension->getError()) {
$lastExtension->setError($lastExtension->getError() . "," . "PortB");
} else {
$lastExtension->setError("PortB");
}
$em->persist($lastExtension);
} else {
$errMsg = str_replace("PortB", "", $errMsg);
$lastExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentA') !== false || strpos($errMsg, 'PortA') !== false)) {
$lastExtension->setIsValid(false);
} else {
$lastExtension->setIsValid(true);
$lastExtension->setError(null);
}
$em->persist($lastExtension);
}
}
}
}
}
}
public static function validateNextExtension($em, $link, $extension, $portsB)
{
$nextExtension = $em->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $extension->getSequenceNo() + 1]);
$nextExtA = $nextExtension->getExtremityA();
$nextPorts = [];
$nextPortsTemp = $nextExtA->getExtensionOrder();
foreach ($nextPortsTemp as $value) {
$nextPorts[] = $value->getPort();
}
// $nextPorts = $nextExtA->getPorts();
$nextInterfaceSpecific = $nextPorts[0]->getInterfaceSpecific();
$nextInterfaceGeneric = $nextInterfaceSpecific->getInterfaceGeneric();
$nextEquipment = $nextInterfaceSpecific->getEquipmentSpecific() ? $nextInterfaceSpecific->getEquipmentSpecific() : $nextInterfaceSpecific->getEquipmentSpecificMpo();
$currentInterfaceSpecific = $portsB["portB1"]->getInterfaceSpecific();
$currentEquipment = $currentInterfaceSpecific->getEquipmentSpecific() ? $currentInterfaceSpecific->getEquipmentSpecific() : $currentInterfaceSpecific->getEquipmentSpecificMpo();
//check if it's same as current modified link ext
if ($currentEquipment != null && $nextEquipment != null && $currentEquipment->getId() != $nextEquipment->getId()) {
//if false, set the link and las link extension as INVALID
$nextExtension->setIsValid(false);
if ($nextExtension->getError()) {
$nextExtension->setError($nextExtension->getError() . "," . "EquipmentA");
} else {
$nextExtension->setError("EquipmentA");
}
$em->persist($nextExtension);
} else {
$errMsg = $nextExtension->getError();
$errMsg = str_replace("EquipmentA", "", $errMsg);
$nextExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentB') !== false || strpos($errMsg, 'PortB') !== false)) {
$nextExtension->setIsValid(false);
} else {
$nextExtension->setIsValid(true);
$nextExtension->setError(null);
}
$em->persist($nextExtension);
//else get the next extension's extremity B's interface
//check if it's 1:1
if ($nextInterfaceGeneric->getTypeInterconnection()->getTitle() == '1-1') {
// if true, check ports are the same
//if true, DO NOTHING
//else set the link and las link extension as INVALID
foreach ($nextPorts as $nextPort) {
$extensionOrder = $em->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port" => $nextPort, "extremity" => $nextExtA]);
for ($i = 1; $i <= 12; $i++) {
if ($extensionOrder->getOrderNumber() == $i) {
if ($nextPort->getId() != $portsB["portB" . $i]->getId()) {
$nextExtension->setIsValid(false);
if ($nextExtension->getError()) {
$nextExtension->setError($nextExtension->getError() . "," . "PortA");
} else {
$nextExtension->setError("PortA");
}
$em->persist($nextExtension);
} else {
$errMsg = str_replace("PortA", "", $errMsg);
$nextExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentB') !== false || strpos($errMsg, 'PortB') !== false)) {
$nextExtension->setIsValid(false);
} else {
$nextExtension->setIsValid(true);
$nextExtension->setError(null);
}
$em->persist($nextExtension);
}
}
}
// if ($extensionOrder->getOrderNumber() == $i) {
// if ($nextPort->getId() != $portsB["portB".$i]->getId()) {
// $nextExtension->setIsValid(false);
// if ($nextExtension->getError()) {
// $nextExtension->setError($nextExtension->getError() . "," . "PortA");
// }
// else {
// $nextExtension->setError("PortA");
// }
// $em->persist($nextExtension);
// }
// else {
// $errMsg = str_replace("PortA", "", $errMsg);
// $nextExtension->setError($errMsg);
// if (!$errMsg && (strpos($errMsg, 'EquipmentB') !== false || strpos($errMsg, 'PortB') !== false)) {
// $nextExtension->setIsValid(false);
// }
// else {
// $nextExtension->setIsValid(true);
// $nextExtension->setError(null);
// }
// $em->persist($nextExtension);
// }
// }
// elseif ($extensionOrder->getOrderNumber() == 2) {
// if ($nextPort->getId() != $portB2->getId()) {
// $nextExtension->setIsValid(false);
// if ($nextExtension->getError()) {
// $nextExtension->setError($nextExtension->getError() . "," . "PortA");
// }
// else {
// $nextExtension->setError("PortA");
// }
// $em->persist($nextExtension);
// }
// else {
// $errMsg = str_replace("PortA", "", $errMsg);
// $nextExtension->setError($errMsg);
// if (!$errMsg && (strpos($errMsg, 'EquipmentB') !== false || strpos($errMsg, 'PortB') !== false)) {
// $nextExtension->setIsValid(false);
// }
// else {
// $nextExtension->setIsValid(true);
// $nextExtension->setError(null);
// }
// $em->persist($nextExtension);
// }
// }
}
}
}
}
public static function validateNextExtensionV0($em, $link, $extension, $portB1, $portB2)
{
$nextExtension = $em->getRepository('App\Entity\LinkExtension')->findOneBy(["link" => $link, "sequenceNo" => $extension->getSequenceNo() + 1]);
$nextExtA = $nextExtension->getExtremityA();
$nextPorts = [];
$nextPortsTemp = $nextExtA->getExtensionOrder();
foreach ($nextPortsTemp as $value) {
$nextPorts[] = $value->getPort();
}
// $nextPorts = $nextExtA->getPorts();
$nextInterfaceSpecific = $nextPorts[0]->getInterfaceSpecific();
$nextInterfaceGeneric = $nextInterfaceSpecific->getInterfaceGeneric();
$nextEquipment = $nextInterfaceSpecific->getEquipmentSpecific() ? $nextInterfaceSpecific->getEquipmentSpecific() : $nextInterfaceSpecific->getEquipmentSpecificMpo();
$currentInterfaceSpecific = $portB1->getInterfaceSpecific();
$currentEquipment = $currentInterfaceSpecific->getEquipmentSpecific() ? $currentInterfaceSpecific->getEquipmentSpecific() : $currentInterfaceSpecific->getEquipmentSpecificMpo();
//check if it's same as current modified link ext
if ($currentEquipment->getId() != $nextEquipment->getId()) {
//if false, set the link and las link extension as INVALID
$nextExtension->setIsValid(false);
if ($nextExtension->getError()) {
$nextExtension->setError($nextExtension->getError() . "," . "EquipmentA");
} else {
$nextExtension->setError("EquipmentA");
}
$em->persist($nextExtension);
} else {
$errMsg = $nextExtension->getError();
$errMsg = str_replace("EquipmentA", "", $errMsg);
$nextExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentB') !== false || strpos($errMsg, 'PortB') !== false)) {
$nextExtension->setIsValid(false);
} else {
$nextExtension->setIsValid(true);
$nextExtension->setError(null);
}
$em->persist($nextExtension);
//else get the next extension's extremity B's interface
//check if it's 1:1
if ($nextInterfaceGeneric->getTypeInterconnection()->getTitle() == '1-1') {
// if true, check ports are the same
//if true, DO NOTHING
//else set the link and las link extension as INVALID
foreach ($nextPorts as $nextPort) {
$extensionOrder = $em->getRepository('App\Entity\ExtensionOrder')->findOneBy(["port" => $nextPort, "extremity" => $nextExtA]);
if ($extensionOrder->getOrderNumber() == 1) {
if ($nextPort->getId() != $portB1->getId()) {
$nextExtension->setIsValid(false);
if ($nextExtension->getError()) {
$nextExtension->setError($nextExtension->getError() . "," . "PortA");
} else {
$nextExtension->setError("PortA");
}
$em->persist($nextExtension);
} else {
$errMsg = str_replace("PortA", "", $errMsg);
$nextExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentB') !== false || strpos($errMsg, 'PortB') !== false)) {
$nextExtension->setIsValid(false);
} else {
$nextExtension->setIsValid(true);
$nextExtension->setError(null);
}
$em->persist($nextExtension);
}
} elseif ($extensionOrder->getOrderNumber() == 2) {
if ($nextPort->getId() != $portB2->getId()) {
$nextExtension->setIsValid(false);
if ($nextExtension->getError()) {
$nextExtension->setError($nextExtension->getError() . "," . "PortA");
} else {
$nextExtension->setError("PortA");
}
$em->persist($nextExtension);
} else {
$errMsg = str_replace("PortA", "", $errMsg);
$nextExtension->setError($errMsg);
if (!$errMsg && (strpos($errMsg, 'EquipmentB') !== false || strpos($errMsg, 'PortB') !== false)) {
$nextExtension->setIsValid(false);
} else {
$nextExtension->setIsValid(true);
$nextExtension->setError(null);
}
$em->persist($nextExtension);
}
}
}
}
}
}
public function isInTrunk($port)
{
$tcfsA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(["portA" => $port]);
$tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(["portB" => $port]);
$usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($port);
if ($tcfsA || $tcfsB || $usedExt) {
return true;
} else {
return false;
}
}
public function getTrunkByPortId($port)
{
$tcfsA = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(["portA" => $port]);
if ($tcfsA) {
return $tcfsA->getTrunk();
}
$tcfsB = $this->getDoctrine()->getRepository('App\Entity\TrunkCableFiber')->findOneBy(["portB" => $port]);
if ($tcfsB) {
return $tcfsB->getTrunk();
}
$usedExt = $this->getDoctrine()->getRepository('App\Entity\TrunkExtension')->findOneByPortB($port);
if ($usedExt) {
return $usedExt->getTrunk();
}
return null;
}
}