소스 검색

Ref #44 and #45. Exception when you try to delete NAP with ONUs. Now, NAP
field in ONU form is required.

Maximiliano Schvindt 5 년 전
부모
커밋
767bc15ddb

+ 1 - 0
src/FTTHBundle/Admin/ONUAdmin.php

@@ -224,6 +224,7 @@ class ONUAdmin extends WorkflowBaseAdmin
                                 'disabled' => $disabled,
                                 'attr' => [
                                     'readonly' => $readonly,
+                                    'required' => 'required'
                                 ],
                                 ))
                     ->add('model', null, [

+ 44 - 0
src/FTTHBundle/EventListener/NAPAddressSubscriber.php

@@ -5,9 +5,30 @@ namespace FTTHBundle\EventListener;
 use Doctrine\Common\EventSubscriber;
 use Doctrine\ORM\Event\LifecycleEventArgs;
 use FTTHBundle\Entity\NAP;
+use Symfony\Component\Translation\TranslatorInterface;
 
 class NAPAddressSubscriber implements EventSubscriber
 {
+    /**
+     * @var TranslatorInterface
+     */
+    private $translator;
+
+    /**
+     * @return TranslatorInterface
+     */
+    public function getTranslator()
+    {
+        return $this->translator;
+    }
+
+    /**
+     * @param TranslatorInterface $translator
+     */
+    public function setTranslator($translator)
+    {
+        $this->translator = $translator;
+    }
 
     /**
      * @return array
@@ -17,6 +38,7 @@ class NAPAddressSubscriber implements EventSubscriber
         return array(
             'prePersist',
             'preUpdate',
+            'preRemove'
         );
     }
 
@@ -56,4 +78,26 @@ class NAPAddressSubscriber implements EventSubscriber
         }
     }
 
+    /**
+     * @param LifecycleEventArgs $args
+     */
+    public function preRemove(LifecycleEventArgs $args)
+    {
+
+        $entity = $args->getEntity();
+        if ($entity instanceof NAP) {
+
+            $em = $args->getEntityManager();
+            $translator = $this->getTranslator();
+
+            $onus = $em->getRepository('FTTHBundle\Entity\ONU')->findByNap($entity);
+            
+            $message = $translator->trans('Nap_Delete_Deneid', [], "FTTHBundle");
+            
+            if($onus) {
+                throw new \Exception($message);
+            }
+        }
+    }    
+
 }

+ 2 - 0
src/FTTHBundle/Resources/config/services.yml

@@ -79,6 +79,8 @@ services:
         class: FTTHBundle\EventListener\NAPAddressSubscriber
         tags:
             - { name: doctrine.event_subscriber, connection: default }
+        calls:
+            - [setTranslator, ['@translator']]
 
     sonata.admin.TContProfile:
         class: FTTHBundle\Admin\TContProfileAdmin

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

@@ -415,4 +415,5 @@ Show stats: Mostrar detalle
 Set 0 to disable autodiscovery or set a x number to scan each x minutes the ONUs connected but without configuration: Seleccione 0 para deshabilitar la función 'Autodiscovery' o seleccione un valor x para escanear cada x minutos las ONUs conectadas pero sin configurar. 
 Profile to set the ONUs by autodiscovery: Perfíl con el cual se configurarán las ONUs mediante Autodiscovery.
 errors.duplicate_mac_key: La MAC se encuentra asignada a otra ONU
-warning.disabled.fields: Para evitar problemas en la configuración, algunos campos fueron deshabilitados
+warning.disabled.fields: Para evitar problemas en la configuración, algunos campos fueron deshabilitados
+Nap_Delete_Deneid: No puede eliminar un NAP que tiene ONUs asociadas