Quellcode durchsuchen

FD3-740 se modificó la forma de asignar las vlanId a los ServicePort

Espinoza Guillermo vor 6 Jahren
Ursprung
Commit
4896249cbd

+ 0 - 27
src/FTTHBundle/Entity/ServicePort.php

@@ -63,9 +63,6 @@ class ServicePort
      */
     protected $vlan = 0;
 
-    /** @ORM\Column(type="string") */
-    private $type;
-
     /**
      * @ORM\ManyToOne(targetEntity="\FTTHBundle\Entity\ONU", inversedBy="servicePorts", fetch="EXTRA_LAZY", cascade={"persist", "remove"})
      * @ORM\JoinColumn(name="onu_id", referencedColumnName="id", onDelete="CASCADE")
@@ -99,30 +96,6 @@ class ServicePort
         return $this->number;
     }
 
-    /**
-     * Set type
-     *
-     * @param string $type
-     *
-     * @return ServicePort
-     */
-    public function setType($type)
-    {
-        $this->type = $type;
-
-        return $this;
-    }
-
-    /**
-     * Get type
-     *
-     * @return string
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
     /**
      * Set olt
      *

+ 28 - 31
src/FTTHBundle/EventListener/ONUSubscriber.php

@@ -302,9 +302,23 @@ class ONUSubscriber implements EventSubscriber
             	$model_extra_data = array();
             }
             
+            // Si la ONU no tiene asignadas vlans, busco alguna que este por default
+            $vlans = $onu->getVlans();
+            if (is_null($vlans) || count($vlans) == 0) {
+                $vlans = [
+                    $this->em->getRepository(VLanID::class)
+                        ->findOneBy(array(
+                            "usedByDefault" => true,
+                        ))
+                ];
+            }
+            
             if (isset($model_extra_data['auto-create-service-ports']) and 
-                $model_extra_data['auto-create-service-ports'] === true and count($sp) == 0) {
+                $model_extra_data['auto-create-service-ports'] === true and count($sp) == 0
+                and count($vlans)) {
                 $olt = $onu->getNAP()->getOLT();
+                
+                // Se buscan los ServicePort utilizados en la OLT
                 $used_sp = $this->em->getRepository(ServicePort::class)->findBy(array(
                     "olt" => $olt,
                 ));
@@ -314,28 +328,9 @@ class ONUSubscriber implements EventSubscriber
                 }
                     
                 $foundit = array();
-                $found_at_least = 2;
-                
-                $service_type = array("data", "voip", /*'iptv'*/);
-                $vlans = $onu->getVlans() ?: [];
-                $vlangemport_config = array(
-	    			'voip' => array(
-                        'gemport' => 0,
-                        'vlan' => 13,
-                    ), 
-	    			'data' => array(
-                        'gemport' => 1,
-                        'vlan' => 10,
-                    )
-	    		);
-                foreach ($service_type as $st) {
-                    foreach ($vlans as $vlan) {
-                        if (strpos($vlan->getName(), $st) !== false) {
-                            $vlangemport_config[$st]['vlan'] = $vlan->getValue();
-                        }
-                    }
-                }
-                
+                $found_at_least = count($vlans);
+                                
+                // Si existen ServicePort asignados se buscan los números libres                            
                 $max_n = 2;
                 if (count($services)) {
                     $max_n = @max(array_keys($services)); //Warning: max(): Array must contain at least one element
@@ -354,18 +349,20 @@ class ONUSubscriber implements EventSubscriber
                     $foundit[] = 1 + $max_n + $i;
                 }
                 
+                $vlanNumbers = [];
+                foreach ($vlans as $vlan) {
+                    $vlanNumbers[] = $vlan->getValue();
+                }
+                
+                $gemport = 0;
                 foreach ($foundit as $key => $num) {
                     $sp = new ServicePort();
-                    $ok = list($skey, $ser) = each($service_type);
-                    if ($ok === false) {
-                        reset($service_type);
-                        $ok = list($skey, $ser) = current($service_type);
-                    }
                     $sp->setNumber($num);
-                    $sp->setGemport($vlangemport_config[$ser]['gemport']);
-                    $sp->setVlan($vlangemport_config[$ser]['vlan']);
-                    $sp->setType($ser);
+                    $sp->setGemport($gemport);
+                    $sp->setVlan(array_shift($vlanNumbers));
                     $onu->addServicePort($sp);
+                    
+                    $gemport++;
                 }
                 $this->em->flush();
             }

+ 0 - 8
src/FTTHBundle/Form/ServicePortType.php

@@ -16,14 +16,6 @@ class ServicePortType extends AbstractType
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
-            ->add('type', ChoiceType::class, array(
-    		    'choices'  => array(
-        			'Data' => 'data',
-        			'VoIP' => 'voip',
-        			'IPTV' => 'iptv',
-    		    ),
-    		    'label' => 'form.service_port.type',
-			))
             ->add('number', null, array(
     			'attr' => array('maxlength' => 6),
     			'label'=> 'form.service_port.number'

+ 1 - 1
src/FTTHBundle/Resources/translations/FTTHBundle.es.yml

@@ -309,7 +309,7 @@ helps:
     onu_serial_number: Serial Number de la ONU conformado por 16 caracteres, si es vacío lo calculamos desde el Identificador.
     onu_pon_serial_number: Identificador de la ONU, puede ser un Serial Number o Pon Serial Number.
     onu_pon_serial_number_aux: Pon Serial Number de la ONU conformado por 12 caracteres, si es vacío lo calculamos desde el Identificador.
-    service_port: Los services ports son creados automaticamente, si el modelo de OLT tiene seteado 'auto-create-service-ports' == true, en caso de modificarlos <b>no</b> se actualizaran en la OLT, sino que seran utilizados en el siguiente comando.
+    service_port: Los services ports son creados automáticamente, si el modelo de OLT tiene seteado 'auto-create-service-ports' == true y asigne una plantilla de ONU, en caso de modificarlos <b>no</b> se actualizarán en el momento en la OLT, sino que serán utilizados en el siguiente comando.
     tr069_wifi: La configuración de estos campos puede depender/variar según el modelo de la ONU/ONT. Los campos pueden tardar en actualizarse.
     tr069_catv: La configuración de este campo puede depender/variar según el modelo de la ONU/ONT. El campo puede tardar en actualizarse.
     tr069_no_edit: El servicio TR069 se encuentra solamente disponible para la edición de la ONU/ONT.