Kaynağa Gözat

Merge con master

Guillermo Espinoza 7 yıl önce
ebeveyn
işleme
09400bde93

+ 9 - 9
composer.lock

@@ -1420,7 +1420,7 @@
             "source": {
                 "type": "git",
                 "url": "ssh://git@200.50.168.30:222/VendorSoftwareFlowdat3/BaseAdmin.git",
-                "reference": "1b0e8111d52e22171fec5386c55bf75d21a2f8dd"
+                "reference": "b70c8ad0e636bf473de0be586bed617d1a98e8dc"
             },
             "type": "library",
             "autoload": {
@@ -1435,7 +1435,7 @@
                 "bootstrap",
                 "sonata"
             ],
-            "time": "2017-08-24 15:21:23"
+            "time": "2017-08-25 12:53:50"
         },
         {
             "name": "ik/device-bundle",
@@ -1632,7 +1632,7 @@
             "source": {
                 "type": "git",
                 "url": "ssh://git@200.50.168.30:222/VendorSoftwareFlowdat3/Webservice.git",
-                "reference": "b52ce2ca48888b55efae468773b25f2119348c5e"
+                "reference": "4741dcfae72c9464714d5b50f8466bcda70720d2"
             },
             "require": {
                 "ext-curl": "*",
@@ -1645,7 +1645,7 @@
                 }
             },
             "description": "The Flowdat3 Webservice Rest",
-            "time": "2017-08-15 13:48:13"
+            "time": "2017-08-25 16:30:30"
         },
         {
             "name": "ik/workflow-bundle",
@@ -3982,16 +3982,16 @@
         },
         {
             "name": "sensio/distribution-bundle",
-            "version": "v5.0.20",
+            "version": "v5.0.21",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
-                "reference": "4b019d4c0bd64438c42e4b6b0726085b409be8d9"
+                "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/4b019d4c0bd64438c42e4b6b0726085b409be8d9",
-                "reference": "4b019d4c0bd64438c42e4b6b0726085b409be8d9",
+                "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/eb6266b3b472e4002538610b28a0a04bcf94891a",
+                "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a",
                 "shasum": ""
             },
             "require": {
@@ -4030,7 +4030,7 @@
                 "configuration",
                 "distribution"
             ],
-            "time": "2017-05-11T16:21:03+00:00"
+            "time": "2017-08-25T16:55:44+00:00"
         },
         {
             "name": "sensio/framework-extra-bundle",

+ 67 - 5
src/FTTHBundle/Form/ONUType.php

@@ -6,8 +6,24 @@ use Symfony\Component\Form\AbstractType;
 use Symfony\Component\Form\FormBuilderInterface;
 use Symfony\Component\OptionsResolver\OptionsResolver;
 
+use Symfony\Component\Form\Extension\Core\Type\TextType;
+
+use Symfony\Component\Form\FormEvent;
+use Symfony\Component\Form\FormEvents;
+
 class ONUType extends AbstractType
 {
+
+    protected $webservice = null;
+    public function setWebService($ws){
+	$this->webservice = $ws;
+    }
+
+    protected $em = null;
+    public function setEntityManager($em){
+	$this->em = $em;
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -16,13 +32,61 @@ class ONUType extends AbstractType
         $builder->add('ip')
                 ->add('mac')
                 ->add('serialNumber')
+                ->add('profile')
+                ->add('model')
+                ->add('nap')
                 ->add('ponSerialNumber')
                 ->add('clientId')
-                ->add('administrativeState')
-                ->add('currentState')
-                ->add('transitionState')
                 ->add('tenancyId')
                 ;
+
+	$builder->addEventListener(
+            FormEvents::PRE_SUBMIT,
+            function (FormEvent $event) {
+                $form = $event->getForm();
+
+                $data = $event->getData();
+
+		$clientID = $data['clientId'];
+
+		if(is_array($clientID) and $this->webservice){
+		$clientID["disableTenancy"] = 1;
+			$remote_data = $this->webservice->getData("client", $clientID);
+			if(count($remote_data) === 1){
+				$data["clientId"] = $remote_data[0]["id"];
+			}else{
+				unset($data["clientId"]);
+			}
+		}
+
+		if(isset($data["profile"]) and is_array($data["profile"]) and $this->em){
+			$profile = $this->em->getRepository("FTTHBundle\Entity\Profile")->findOneBy($data["profile"]);
+			unset($data["profile"]);
+			if($profile){
+				$data["profile"] = $profile->getId();
+			}
+		}
+
+		if(isset($data["model"]) and is_array($data["model"]) and $this->em){
+			$model = $this->em->getRepository("FTTHBundle\Entity\ONUModel")->findOneBy($data["model"]);
+			unset($data["model"]);
+			if($model){
+				$data["model"] = $model->getId();
+			}
+		}
+
+		if(isset($data["nap"]) and is_array($data["nap"]) and $this->em){
+			$nap= $this->em->getRepository("FTTHBundle\Entity\NAP")->findOneBy($data["nap"]);
+			unset($data["nap"]);
+			if($nap){
+				$data["nap"] = $nap->getId();
+			}
+		}
+
+		$event->setData($data);
+
+            }
+        );
     }
     
     /**
@@ -42,6 +106,4 @@ class ONUType extends AbstractType
     {
         return 'ftthbundle_onu';
     }
-
-
 }

+ 10 - 1
src/FTTHBundle/Resources/config/services.yml

@@ -50,4 +50,13 @@ services:
     ftth.onu_position.subscriber:
         class: FTTHBundle\EventListener\ONUPositionSubscriber
         tags:
-            - { name: doctrine.event_subscriber, connection: default }
+            - { name: doctrine.event_subscriber, connection: default }
+
+    ftth.onu.form:
+        class: FTTHBundle\Form\ONUType
+        calls:
+            - ["setWebService", ["@webservice"]]
+            - ["setEntityManager", ["@doctrine.orm.entity_manager"]]
+        tags:
+            - { name: form.type }
+