ソースを参照

Merged in FD3-552 (pull request #16)

Voip en Cablemodem - FD3-552

Approved-by: Guillermo Espinoza <guillermo@interlink.com.ar>
Approved-by: Maximiliano Schvindt <maximiliano@interlink.com.ar>
Maximiliano Schvindt 7 年 前
コミット
b920b31511

ファイルの差分が大きいため隠しています
+ 1 - 1
app/DoctrineMigrations/Version20180124153518.yml


+ 20 - 7
src/CablemodemBundle/Admin/CablemodemAdmin.php

@@ -61,13 +61,26 @@ class CablemodemAdmin extends WorkflowBaseAdmin
     protected function configureFormFields(FormMapper $formMapper)
     {
         $formMapper
-            ->add('clientId')
-            ->add('model')
-            ->add('mac','text',array('attr' => array('pattern' => '[a-zA-Z0-9]+','title' => 'Only accept [0-9a-zA-Z]', 'maxlength' => '12', 'minlength' => '12')))
-            ->add('activationCode')
-            ->add('node')
-            ->add('profile')
-            ->add('mtaEnabled')
+                ->tab('default')
+                    ->with('')
+                        ->add('clientId')
+                        ->add('model')
+                        ->add('mac','text',array('attr' => array('pattern' => '[a-zA-Z0-9]+','title' => 'Only accept [0-9a-zA-Z]', 'maxlength' => '12', 'minlength' => '12')))
+                        ->add('activationCode')
+                        ->add('node')
+                        ->add('profile')
+                    ->end()
+                ->end()
+                ->tab('cm_form_advanced')
+                    ->with('cm_form_voip')
+                        ->add('mtaEnabled')
+                        ->add('voip', 'collection', array(
+                                'entry_type'   => 'CablemodemBundle\\Form\\VoipType',
+                                'allow_add' => true, 
+                                'required' => false,
+                                'allow_delete' => true))
+                    ->end()
+                ->end()
         ;
     }
 

+ 77 - 35
src/CablemodemBundle/Entity/Cablemodem.php

@@ -143,6 +143,17 @@ class Cablemodem implements DeviceInterface, TenancyIdTraitInterface, LocationIn
      */
     protected $mtaEnabled = false;
 
+    /**
+     *
+     * @ORM\Column(type="array", nullable=true)
+     *
+     * @Assert\Callback(
+     *  callback={"CablemodemBundle\Validator\ArrayValidator", "validate"},
+     *  payload={"field"="voip"}
+     * )
+     */
+    protected $voip = null;
+
 
     /**
      * @return string
@@ -351,41 +362,72 @@ class Cablemodem implements DeviceInterface, TenancyIdTraitInterface, LocationIn
     }
 
     /**
-    * @return boolean
-    */
-   public function getMtaEnabled()
-   {
-       return $this->mtaEnabled;
-   }
-
-   /**
-    * @param boolean $mtaEnabled
-    *
-    * @return Cablemodem
-    */
-   public function setMtaEnabled($mtaEnabled)
-   {
-       $this->mtaEnabled = $mtaEnabled;
-
-       return $this;
-   }
-
-   /**
-    * @return string
-    */
-   public function getDHCPOptions()
-   {
-       global $kernel;
-       $options = [
+     * @return boolean
+     */
+    public function getMtaEnabled()
+    {
+        return $this->mtaEnabled;
+    }
+
+    /**
+     * @param boolean $mtaEnabled
+     *
+     * @return Cablemodem
+     */
+    public function setMtaEnabled($mtaEnabled)
+    {
+        $this->mtaEnabled = $mtaEnabled;
+
+        return $this;
+    }
+
+    /**
+     * @return string
+     */
+    public function getDHCPOptions()
+    {
+        global $kernel;
+        $options = [
            'filename' => $this->mac . '.bin',
-       ];
-       $container = $kernel->getContainer();
-       if ($this->mtaEnabled && $container->hasParameter('dhcp_server_ip')) {
-           $options['option122_dhcp_server'] = $container->getParameter('dhcp_server_ip');
-           $options['option122_provisioning_type'] = "BASIC.1";
-       }
-
-       return $options;
-   }
+        ];
+        $container = $kernel->getContainer();
+        if ($this->mtaEnabled && $container->hasParameter('dhcp_server_ip')) {
+            $options['option122_dhcp_server'] = $container->getParameter('dhcp_server_ip');
+            $options['option122_provisioning_type'] = "BASIC.1";
+        }
+
+        return $options;
+    }
+
+    /**
+     * @return array
+     */
+    public function getVoip()
+    {
+        return $this->voip;
+    }
+
+    /**
+     * @param array $voip
+     *
+     * @return Cablemodem
+     */
+    public function setVoip($voip)
+    {
+        if(is_null($voip)) {
+            $this->voip = $voip;
+            return $this;
+        }
+
+        $this->voip = array_values($voip);
+        return $this;
+    }
+
+    public function getVoipData($index)
+    {
+        if(is_null($this->voip)) return null;
+
+        if(isset($this->voip[$index])) return $this->voip[$index];
+    }
 
 }

+ 25 - 0
src/CablemodemBundle/Form/VoipType.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace CablemodemBundle\Form;
+
+use Symfony\Component\Form\AbstractType;
+use Symfony\Component\Form\FormBuilderInterface;
+use Symfony\Component\OptionsResolver\OptionsResolver;
+use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
+
+
+class VoipType extends AbstractType
+{
+    /**
+     * @param FormBuilderInterface $builder
+     * @param array $options
+     */
+    public function buildForm(FormBuilderInterface $builder, array $options)
+    {
+        $builder
+            ->add('number', 'text', array('label' => 'voip.number', 'translation_domain' => 'CablemodemBundle'))
+            ->add('password', 'text', array('label' => 'voip.password', 'translation_domain' => 'CablemodemBundle'))
+        ;
+    }
+
+}

+ 8 - 0
src/CablemodemBundle/Resources/translations/CablemodemBundle.es.yml

@@ -69,6 +69,7 @@ form:
     label_time_cmts_octets: Tráfico de CMTS y CMs
     label_docs_version: Versión DOCSIS
     label_mta_enabled: MTA Enabled
+    label_voip: Voip
 list:
     label_id: Id
     label_name: Nombre
@@ -137,3 +138,10 @@ State: Estado
 active: Activo
 suspended: Suspendido
 disabled: Inactivo
+cm_form_advanced: Avanzado
+cm_form_voip: Voip
+form_label_password: Password
+form_label_number: Número
+voip.number: Número
+voip.password: Password
+voip.technology: Tecnología

+ 25 - 0
src/CablemodemBundle/Validator/ArrayValidator.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace CablemodemBundle\Validator;
+
+use Symfony\Component\Validator\Context\ExecutionContextInterface;
+
+class ArrayValidator
+{
+
+    /**
+     * @param string $value
+     * @param ExecutionContextInterface $context
+     * @param array $payload
+     */
+    public static function validate($value, ExecutionContextInterface $context, $payload)
+    {
+        /* 
+        $context->buildViolation('error.format_invalid')
+                ->atPath($payload['field'])
+                ->addViolation();
+           
+        */
+    }
+
+}