<?php
namespace App\Controller;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\Translation\TranslatorInterface;
use App\Entity\Rack;
use App\Entity\EquipmentSpecific;
use App\Entity\InterfaceSpecific;
use App\Entity\Port;
use App\Entity\Link;
use Psr\Log\LoggerInterface;
class LabelController extends AbstractController
{
/**
* @Route("/label/racks", name="label_form_racks")
*/
public function rackLabelIndexAction(Request $request, TranslatorInterface $translator)
{
$list = $this->getDoctrine()->getRepository(Rack::class)->findAll();
$racks = [];
foreach ($list as $item){
$title = $item->getTitle();
if ( strtolower(substr($title, 0, 1)) == 'f' ){
$racks[] = $item;
}
}
return $this->render('label/rack_list.html.twig', [
'page_title' => $translator->trans('Label - Choose Rack'),
'path_create' => 'label_create_racks',
'list' => $racks,
]);
}
/**
* @Route("/label/racks/{id}", name="label_create_racks")
*/
public function rackLabelCreateAction($id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$rack = $em->getRepository(Rack::class)->find($id);
$room = $rack->getRoom();
$list = [];
$linkExtensionsAIDS = []; // prevents duplication on bidirectional
$eq_in_rack = $this->getDoctrine()->getRepository('App\Entity\EquipmentSpecific')->findByRack($rack);
foreach ($eq_in_rack as $eq){
$interfaces = $eq->getInterfaceSpecific();
foreach ($interfaces as $interface){
$ports = $interface->getPort();
// var_dump(count($ports));
foreach ($ports as $port){
$extOrder = $port->getExtensionOrder();
// var_dump(count($extOrder));
foreach ($extOrder as $value) {
$extremity = $value->getExtremity();
// var_dump(count($extremity));
// $extremity = $linkExt->getExtremityA()->getExtensionOrder();
$linkExt = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(['extremityA' => $extremity]);
// $linkExtensionsA = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findBy(['portA' => $port, 'sequenceNo' => 1]);
// foreach ($linkExtensionsA as $linkExt){
if ($linkExt) {
$portB = null;
$link = $linkExt->getLink();
$extOrder1 = $linkExt->getExtremityB()->getExtensionOrder();
foreach ($extOrder1 as $value1) {
// $portB = $value1->getPort();
if ($value->getOrderNumber() == $value1->getOrderNumber()) {
$portB = $value1->getPort();
}
}
// $portB = $linkExt->getExtremityB()->getExtensionOrder();
if($portB != null){
$roomB = $portB->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom();
$rackBtitle = $portB->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
if($roomB == $room && strtolower(substr($rackBtitle, 0, 1)) == 'f'){
$rackA_lab = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
$eqA_lab = $port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName();
$intA_lab = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
$portA_lab = $port->getAlias() ? $port->getAlias() : $port->getOrderNo();
$rackB_lab = $portB->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
$eqB_lab = $portB->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName();
$intB_lab = $portB->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
$portB_lab = $portB->getAlias() ? $portB->getAlias() : $portB->getOrderNo();
$link_lab = $link->getLinkID();
$label = $rackA_lab.'-'.$intA_lab.'-'.$portA_lab.' / '.$rackB_lab.'-'.$intB_lab.'-'.$portB_lab;
$list[] = [
'rackA' => $rackA_lab,
'eqA' => $eqA_lab,
'intA' => $intA_lab,
'portA' => $portA_lab,
'rackB' => $rackB_lab,
'eqB' => $eqB_lab,
'intB' => $intB_lab,
'portB' => $portB_lab,
'label' => $label,
'link' => $link_lab
];
$linkExtensionsAIDS[] = $linkExt->getId();
}
}
}
// }
// $linkExtensionsB = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findBy(['portB' => $port, 'sequenceNo' => 1]);
$linkExt = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->findOneBy(['extremityB' => $extremity]);
// foreach ($linkExtensionsB as $linkExt){
if ($linkExt) {
if (!in_array($linkExt->getId(), $linkExtensionsAIDS)){ // prevents duplication on bidirectional
$portA = null;
$link = $linkExt->getLink();
$extOrder1 = $linkExt->getExtremityA()->getExtensionOrder();
foreach ($extOrder1 as $value1) {
// $portA = $value1->getPort();
if ($value->getOrderNumber() == $value1->getOrderNumber()) {
$portA = $value1->getPort();
}
}
// $portA = $linkExt->getPortA();
if($portA != null){
$roomA = $portA->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom();
$rackBtitle = $portA->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
if($roomA == $room && strtolower(substr($rackBtitle, 0, 1)) == 'f'){
$rackB_lab = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
$eqB_lab = $port->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName();
$intB_lab = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
$portB_lab = $port->getAlias() ? $port->getAlias() : $port->getOrderNo();
$rackA_lab = $portA->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
$eqA_lab = $portA->getInterfaceSpecific()->getEquipmentSpecific()->getEquipmentSpecificName();
$intA_lab = $portA->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
$portA_lab = $portA->getAlias() ? $portA->getAlias() : $portA->getOrderNo();
$link_lab = $link->getLinkID();
$label = $rackA_lab.'-'.$intA_lab.'-'.$portA_lab.' / '.$rackB_lab.'-'.$intB_lab.'-'.$portB_lab;
$list[] = [
'rackA' => $rackA_lab,
'eqA' => $eqA_lab,
'intA' => $intA_lab,
'portA' => $portA_lab,
'rackB' => $rackB_lab,
'eqB' => $eqB_lab,
'intB' => $intB_lab,
'portB' => $portB_lab,
'label' => $label,
'link' => $link_lab
];
}
}
}
}
}
// }
}
}
}
//return $this->json($linkExtensionsAIDS);
return $this->render('label/rack_labels.html.twig', [
'page_title' => $translator->trans('Rack Labels'),
'list' => $list,
]);
}
/**
* @Route("/label/links", name="label_form_links")
*/
public function linkLabelIndexAction(Request $request, TranslatorInterface $translator)
{
$links = $this->getDoctrine()->getRepository('App\Entity\Link')->findAll();
foreach ($links as $link){
$extensions = $link->getLinkExtension();
if ( !($extensions->isEmpty()) ) {
$firstExt = $extensions[0];
$eqA = $firstExt->getExtremityA()->getExtensionOrder()[0]->getPort()->getInterfaceSpecific()->getEquipmentSpecific();
// $eqA = $firstExt->getPortA()->getInterfaceSpecific()->getEquipmentSpecific();
$link->eqA = $eqA;
$eqB = $firstExt->getExtremityB()->getExtensionOrder()[0]->getPort()->getInterfaceSpecific()->getEquipmentSpecific();
foreach ($extensions as $extension) {
$portB = $extension->getExtremityB()->getExtensionOrder()[0]->getPort();
if (isset($portB)) {
$eqB = $extension->getExtremityB()->getExtensionOrder()[0]->getPort()->getInterfaceSpecific()->getEquipmentSpecific();
}
}
$link->eqB = $eqB;
}
}
return $this->render('label/link_list.html.twig', [
'page_title' => $translator->trans('Label - Choose Links'),
'path_create' => 'label_create_links',
'list' => $links,
]);
}
/**
* @Route("/label/links/create", name="label_create_links")
*/
public function linkLabelCreateAction(TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$links = $em->getRepository(Link::class)->findAll();
$list = [];
foreach ($links as $link){
if (isset($_POST['link_'.$link->getId()])){
$extensions = [];
$sequence = [];
$e = 1;
$t = 0;
$tsn = 0;
$linkExtensions = $link->getLinkExtension();
foreach ($linkExtensions as $ext){
$portsA = array();
$portsB = array();
$linkExtensionSequenceNo = $ext->getSequenceNo();
$linkExtensionTrunk = $ext->getTrunk();
if (is_null($linkExtensionTrunk)){
$e = $linkExtensionSequenceNo - $t;
if ($e > 1){
$extension['id'] = $link->getLinkID().'_E'.($e-1);
} else {
$extension['id'] = $link->getLinkID();
}
} else {
if ($linkExtensionSequenceNo != $tsn){
$extension['id'] = $linkExtensionTrunk->getTrunkID();
$tsn = $linkExtensionSequenceNo;
$t++;
}
}
// $fiberNo = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->noFibersInExtension($link, $linkExtensionSequenceNo);
// if ($fiberNo > 1){
$portsATemp = $ext->getExtremityA()->getExtensionOrder();
foreach ($portsATemp as $value) {
$portsA[] = $value->getPort();
}
// $portsA = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->getPortsABySequence($link, $linkExtensionSequenceNo);
$portsBTemp = $ext->getExtremityB()->getExtensionOrder();
foreach ($portsBTemp as $value) {
$portsB[] = $value->getPort();
}
// $portsB = $this->getDoctrine()->getRepository('App\Entity\LinkExtension')->getPortsBBySequence($link, $linkExtensionSequenceNo);
$extension['portA'] = '';
$extension['portB'] = '';
$portsAIDS = [];
$portsBIDS = [];
// var_dump($portsA);
foreach ($portsA as $portID){
$port = $this->getDoctrine()->getRepository('App\Entity\Port')->findOneById($portID);
$extension['siteA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
if ($port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getAlias()){
$extension['roomA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getAlias();
} else {
$extension['roomA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
}
$extension['rackA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
$extension['equipmentA'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getAlias();
$extension['interfaceA'] = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
if (!in_array($portID,$portsAIDS)){
$extension['portA'] .= $port->getAlias() ? $port->getAlias().'/' : $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();
if ($port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getAlias()){
$extension['roomB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getAlias();
} else {
$extension['roomB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
}
$extension['rackB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
$extension['equipmentB'] = $port->getInterfaceSpecific()->getEquipmentSpecific()->getAlias();
$extension['interfaceB'] = $port->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
if (!in_array($portID,$portsBIDS)){
$extension['portB'] .= $port->getAlias() ? $port->getAlias().'/' : $port->getOrderNo().'/';
}
$portsBIDS[] = $portID;
}
$extension['portB'] = substr($extension['portB'], 0, -1);
// } else {
//
// $extension['siteA'] = $ext->getPortA()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
//
// if ($ext->getPortA()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getAlias()){
// $extension['roomA'] = $ext->getPortA()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getAlias();
// } else {
// $extension['roomA'] = $ext->getPortA()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// }
//
// $extension['rackA'] = $ext->getPortA()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentA'] = $ext->getPortA()->getInterfaceSpecific()->getEquipmentSpecific()->getAlias();
// $extension['interfaceA'] = $ext->getPortA()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $extension['portA'] = $ext->getPortA()->getOrderNo();
//
// $extension['siteB'] = $ext->getPortB()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getSite()->getTitle();
// if ($ext->getPortB()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getAlias()){
// $extension['roomB'] = $ext->getPortB()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getAlias();
// } else {
// $extension['roomB'] = $ext->getPortB()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getRoom()->getTitle();
// }
// $extension['rackB'] = $ext->getPortB()->getInterfaceSpecific()->getEquipmentSpecific()->getRack()->getTitle();
// $extension['equipmentB'] = $ext->getPortB()->getInterfaceSpecific()->getEquipmentSpecific()->getAlias();
// $extension['interfaceB'] = $ext->getPortB()->getInterfaceSpecific()->getInterfaceGeneric()->getInterfaceNumber();
// $extension['portB'] = $ext->getPortA()->getOrderNo();
//
// }
if (!in_array($linkExtensionSequenceNo,$sequence) && is_null($linkExtensionTrunk)){
$extensions[] = [
'line1' => $extension['id'],
'line2' => $extension['siteA'].'_'.$extension['roomA'].'_B'. $extension['rackA'],
'line3' => $extension['equipmentA'].'_S'.$extension['interfaceA'].'_P'.$extension['portA'],
'line4' => '-------------------',
'line5' => $extension['siteB'].'_'.$extension['roomB'].'_B'. $extension['rackB'],
'line6' => $extension['equipmentB'].'_S'.$extension['interfaceB'].'_P'.$extension['portB']
];
}
$sequence[] = $linkExtensionSequenceNo;
}
$list[] = $extensions;
}
}
return $this->render('label/link_labels.html.twig', [
'page_title' => $translator->trans('Link Labels'),
'list' => $list,
]);
}
}