Espinoza Guillermo преди 7 години
родител
ревизия
4ded1339fc

+ 10 - 3
src/HostBundle/Admin/HostAdmin.php

@@ -110,10 +110,10 @@ class HostAdmin extends BaseAdmin
     function prePersist($object)
     {
         $object->setOptions(json_encode($object->getDHCPOption()));
-
+    
         return parent::preUpdate($object);
     }
-
+    
     /**
      * @param $object
      *
@@ -121,8 +121,15 @@ class HostAdmin extends BaseAdmin
      */
     function preUpdate($object)
     {
+        if ($object->getFixedAddress() && $object->getFixedIP() == false) {
+            $object->setFixedIP(true);
+        }
+        if (!$object->getFixedAddress() && $object->getFixedIP() == true) {
+            $object->setFixedIP(false);
+        }
+        
         $object->setOptions(json_encode($object->getDHCPOption()));
-
+    
         return parent::preUpdate($object);
     }
 }

+ 6 - 1
src/HostBundle/EventListener/AdminDHCPOption.php

@@ -48,7 +48,12 @@ class AdminDHCPOption
             foreach (DHCPOptions::getConstants() as $opt) {
                 
                 if ($opt == 'fixed_address') {
-                    $freeIP = $this->hostService->getFreeFixedIP(false);
+                    $freeIP = $this->hostService->getFreeFixedIP();
+                    $fixedAddress = $subject->getFixedAddress();
+                    if ($fixedAddress) {
+                        $freeIP[] = $fixedAddress;
+                        sort($freeIP);
+                    }
                     $fieldOptions['choices'] = array_combine($freeIP, $freeIP);
                     $mapper->add($opt, ChoiceType::class, $fieldOptions);
                     unset($fieldOptions['choices']);

+ 1 - 1
src/HostBundle/EventListener/AssignHostFixedAddressSubscriber.php

@@ -65,7 +65,7 @@ class AssignHostFixedAddressSubscriber implements EventSubscriber
                 $ip = $this->serviceContainer->get('dhcp.host_service')->getFirstFreeFixedIP();
                 $entity->setFixedAddress($ip);
             }
-            
+                        
             // Se debe des-asignar una IP fija
             if ($entity->getFixedIP() == false) {
                 $entity->setFixedAddress(null);

+ 3 - 2
src/HostBundle/Form/HostType.php

@@ -6,6 +6,7 @@ use HostBundle\Utils\DHCPOptions;
 use Symfony\Component\Form\AbstractType;
 use Symfony\Component\Form\FormBuilderInterface;
 use Symfony\Component\OptionsResolver\OptionsResolver;
+use Symfony\Component\Form\Extension\Core\Type\TextType;
 
 class HostType extends AbstractType
 {
@@ -18,12 +19,12 @@ class HostType extends AbstractType
             ->add('mac')
             ->add('hostType')
             ->add('state')
-            ->add('fixedIP', null, [
+            ->add('fixedIP', TextType::class, [
                 'required' => false,
             ])
             ;
         foreach (DHCPOptions::getConstants() as $opt) {
-            $builder->add($opt, 'text', array(
+            $builder->add($opt, TextType::class, array(
                 'required'=> false,
             ));
         }

+ 0 - 1
src/IPv4Bundle/Services/PoolService.php

@@ -6,7 +6,6 @@ use Doctrine\ORM\EntityManager;
 use Doctrine\ORM\EntityRepository;
 use IPv4Bundle\Entity\Pool;
 use KeaBundle\Entity\Lease4;
-use Symfony\Bridge\Doctrine\RegistryInterface;
 
 class PoolService
 {