Sfoglia il codice sorgente

Mejoras workflow. Validaciones del workflow.

Maximiliano Schvindt 8 anni fa
parent
commit
35632aa5ce

+ 15 - 3
src/FTTHBundle/Controller/ONUController.php

@@ -14,9 +14,11 @@ class ONUController extends Controller
             $workflow = "{$onu->getWorkflowType()}.{$onu->getWorkflow()}";
         }
 
+        $em = $this->get('doctrine')->getManager();
         try {
             $this->get("{$workflow}")->apply($onu, $transition);
-            $this->get('doctrine')->getManager()->flush();
+            $em->persist($onu);
+            $em->flush();
         } catch (ExceptionInterface $e) {
             $this->get('session')->getFlashBag()->add('danger', $e->getMessage());
         }
@@ -31,8 +33,18 @@ class ONUController extends Controller
 
     public function resetStateAction(\FTTHBundle\Entity\ONU $onu)
     {
-        $onu->setCurrentState('active');
-        $this->get('doctrine')->getManager()->flush();
+        $workflow = $onu->getWorkflowObject();
+
+        if($workflow) {
+            $onu->setCurrentState($workflow->getInitialPlace($onu));
+        } else {
+            $onu->setCurrentState(null);
+        }
+
+        $em = $this->get('doctrine')->getManager();
+        $em->persist($onu);
+        $em->flush();
+
         return $this->redirect($this->generateUrl('admin_ftth_onu_list'));
     }
 }

+ 1 - 1
src/FTTHBundle/Entity/OLT.php

@@ -82,7 +82,7 @@ class OLT
     /**
      * @var boolean $execute_snmp
      * 
-     * @ORM\Column(type="boolean", nullable=true, columnDefinition="BOOLEAN DEFAULT TRUE")
+     * @ORM\Column(type="boolean", nullable=true, options={"default":true})
      */
     protected $execute_snmp = true;
     

+ 40 - 15
src/FTTHBundle/Entity/ONU.php

@@ -78,9 +78,9 @@ class ONU
     protected $updated;
 
     /**
-     * @ORM\Column(type="string", nullable=false, options={"default": "active"}) 
+     * @ORM\Column(type="string", nullable=true) 
      */
-    protected $currentState = 'active';
+    protected $currentState = null;
 
     /**
      * @ORM\Column(type="string", nullable=false, options={"default": "pending"}) 
@@ -415,26 +415,24 @@ class ONU
 
     public function getWorkflow() 
     {
-        if($this->model) {
-            $model = $this->model;
-            if($model->getWorkflow() && $model->getWorkflow()->getEnable()) {
-                return $model->getWorkflow()->getName();
-            }
+        $workflow = $this->getWorkflowObject();
+
+        if($workflow) {
+            return $workflow->getName();
         }
-        
-        return "onu_state";
+
+        return null;
     }
     
     public function getWorkflowType() 
     {
-        if($this->model) {
-            $model = $this->model;
-            if($model->getWorkflow() && $model->getWorkflow()->getEnable()) {
-                return $model->getWorkflow()->getType();
-            }
+        $workflow = $this->getWorkflowObject();
+
+        if($workflow) {
+            return $workflow->getType();
         }
         
-        return "state_machine";
+        return null;
     }
 
     public function getLog() 
@@ -444,4 +442,31 @@ class ONU
         return implode("\n",$out);
     }
 
+    public function getWorkflowObject() 
+    {
+        if($this->model) {
+            $model = $this->model;
+            if($model->getWorkflow()) {
+                return $model->getWorkflow();
+            }
+        }
+
+        return null;
+    }
+
+    /**  
+     *  @ORM\PrePersist 
+     */
+    public function prePersist(LifecycleEventArgs $event) 
+    {
+        $this->currentState = null;
+        
+        $workflow = $this->getWorkflowObject();
+
+        if($workflow) {
+            $this->currentState = $workflow->getInitialPlace($this);
+        }
+        
+    }
+
 }

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

@@ -139,4 +139,7 @@ show:
     label_download: Download
     label_workflow: Workflow
     label_log: Log
-    label_model_workflow: Workflow
+    label_model_workflow: Workflow
+Incorrect State: Estado erróneo
+Undefined State: Estado no definido
+Undefined Workflow: Workflow no definido

+ 19 - 9
src/FTTHBundle/Resources/views/ONU/onu_state.html.twig

@@ -3,12 +3,22 @@
     Workflow
 </a>        #}
 
-{% for transition in workflow_transitions(object, object.getWorkflow()) %}
-        <a  href="{{path('admin_ftth_onu_apply_transition',{id:object.getId(),transition:transition.name})}}" name="transition" value="{{ transition.name }}"
-    {% if workflow_can(object, transition.name, object.getWorkflow()) -%}
-        class="btn btn-sm btn-default view_link"
-    {%- else -%}
-        class="btn btn-sm btn-default view_link btn-danger" disabled="disabled"
-    {%- endif -%}
-    > {{ transition.name }}</a>
-{% endfor %}
+{% if object.getWorkflowObject() is null %}
+    <a  href="#" name="transition" value="" class="btn btn-sm view_link btn-danger" disabled="disabled">{{ "Undefined Workflow"|trans({},'FTTHBundle') }}</a>
+{% else %}
+    {% if workflow_correct_state(object, object.getWorkflow()) %}
+        {% for transition in workflow_transitions(object, object.getWorkflow()) %}
+            <a  href="{{path('admin_ftth_onu_apply_transition',{id:object.getId(),transition:transition.name})}}" name="transition" value="{{ transition.name }}"
+            {% if workflow_can(object, transition.name, object.getWorkflow()) -%}
+                class="btn btn-sm btn-default view_link"
+            {% else %}
+                class="btn btn-sm btn-default view_link btn-danger" disabled="disabled"
+            {% endif %}
+        > {{ transition.name }}</a>
+        {% endfor %}
+    {% elseif object.getCurrentState() is null %}
+        <a  href="{{ path('admin_ftth_onu_reset_state', {id: object.getId()}) }}" name="transition" value="" class="btn btn-sm view_link btn-danger">{{ "Undefined State"|trans({},'FTTHBundle') }}</a>
+    {% else %}
+        <a  href="{{ path('admin_ftth_onu_reset_state', {id: object.getId()}) }}" name="transition" value="" class="btn btn-sm view_link btn-danger">{{ "Incorrect State"|trans({},'FTTHBundle') }}</a>
+    {% endif %}
+{% endif %}

+ 2 - 2
src/FTTHBundle/Resources/views/ONU/show_workflow.html.twig

@@ -63,9 +63,9 @@
     </div>
     <div>
         <br />
-        <img src="http://200.50.175.17/ftth/workflows_png/{{onu.getWorkflow()}}.png" />
+        <img src="http://200.50.175.17/ftth/workflows_png/{{onu.getWorkflow()}}.png?nocache={{ date().timestamp }}" />
         <br />
-        <img src="http://200.50.175.17/ftth/workflows_png/transition_state.png" />
+        <img src="http://200.50.175.17/ftth/workflows_png/transition_state.png?nocache={{ date().timestamp }}" />
     </div>
     <br />
     <div>