Pārlūkot izejas kodu

Refactory event suscriber

Guillermo Espinoza 8 gadi atpakaļ
vecāks
revīzija
59c62cbf57
3 mainītis faili ar 68 papildinājumiem un 15 dzēšanām
  1. 13 13
      Event/EventSubscriber.php
  2. 49 0
      README.md
  3. 6 2
      Repository/ActionRepository.php

+ 13 - 13
Event/EventSubscriber.php

@@ -85,26 +85,26 @@ class EventSubscriber implements EventSubscriberInterface
        //$event->setBlocked(true);
        //$event->setBlocked(true);
     }
     }
 
 
-    public function getActions($event, $eventType, $eventReference) {
+    /**
+     * @param Event $event
+     * @param string $eventName
+     * @param string $eventReference
+     * 
+     * @return array
+     */
+    public function getActions($event, $eventName, $eventReference)
+    {
         $logger = $this->container->get('logger');
         $logger = $this->container->get('logger');
 
 
         $em = $this->container->get("doctrine.orm.entity_manager");
         $em = $this->container->get("doctrine.orm.entity_manager");
         $object = $event->getSubject();
         $object = $event->getSubject();
-        $class = (string) get_class($object);
-    
-        $filter = array();
-        $filter['event'] = $eventType;
-        $filter['objectClass'] = $class;
-        $filter['workflowType'] = $object->getWorkflowType();
-        $filter['workflowName'] = $object->getWorkflowName();
-        $filter['eventReference'] = $eventReference;
-
-        $logger->info("EVENT {$eventType}:{$eventReference} => {$class}_id_{$object->getId()}");
+        $objectClass = (string) get_class($object);
+        $logger->info("EVENT {$eventName}:{$eventReference} => {$objectClass }_id_{$object->getId()}");
 
 
-        $actions = $em->getRepository("WorkflowBundle:Action")->findBy($filter);
+        $actions = $em->getRepository("WorkflowBundle:Action")
+                ->findAllByEventAndWorkflowName($eventName, $object->getWorkflowName(), $eventReference, $objectClass);
 
 
         return $actions;
         return $actions;
-
     }
     }
 
 
     public function completeAction($action, $params) {
     public function completeAction($action, $params) {

+ 49 - 0
README.md

@@ -0,0 +1,49 @@
+# WorkflowBundle
+
+- [Installation](#installation)
+
+## Installation
+
+**composer.json**:
+
+```javascript
+"repositories": [
+    {
+        "type": "vcs",
+        "url":  "ssh://git@200.50.168.30:222/VendorSoftwareFlowdat3/WorkflowBundle.git"
+    }
+],
+"require": {
+    "ik/workflow-bundle": "dev-master"
+},
+```
+
+**app/AppKernel.php**:
+
+```php
+public function registerBundles()
+{
+    $bundles = [
+        new WorkflowBundle\WorkflowBundle(),
+    ];
+    .
+    .
+}
+```
+
+**app/config/config.yml**:
+
+```yml
+imports:
+    - { resource: workflow.yml }
+    - { resource: "../Resources/workflows/workflow_list.yml", ignore_errors: true  }
+    - { resource: "@WorkflowBundle/Resources/config/services.yml" }
+```
+
+**app/config/routing.yml**:
+
+```yml
+workflow:
+    resource: "@WorkflowBundle/Resources/config/routing/admin.xml"
+    prefix:   /
+```

+ 6 - 2
Repository/ActionRepository.php

@@ -27,17 +27,21 @@ class ActionRepository extends EntityRepository
      * @param string $eventName
      * @param string $eventName
      * @param string $workflowName
      * @param string $workflowName
      * @param string $eventReference
      * @param string $eventReference
+     * @param string $objectClass
      * 
      * 
      * @return array
      * @return array
      */
      */
-    public function findAllByEventAndWorkflowName($eventName, $workflowName, $eventReference)
+    public function findAllByEventAndWorkflowName($eventName, $workflowName, $eventReference, $objectClass = null)
     {
     {
         $qb = $this->createQueryBuilder('Action')
         $qb = $this->createQueryBuilder('Action')
                    ->andWhere('Action.event LIKE :eventName')->setParameter('eventName', "%{$eventName}%")
                    ->andWhere('Action.event LIKE :eventName')->setParameter('eventName', "%{$eventName}%")
                    ->andWhere('Action.workflowName = :workflowName')->setParameter('workflowName', $workflowName)
                    ->andWhere('Action.workflowName = :workflowName')->setParameter('workflowName', $workflowName)
                    ->andWhere('Action.eventReference = :eventReference')->setParameter('eventReference', $eventReference)
                    ->andWhere('Action.eventReference = :eventReference')->setParameter('eventReference', $eventReference)
                 ;
                 ;
-        
+        if ($objectClass) {
+            $qb->andWhere('Action.objectClass = :objectClass')->setParameter('objectClass', $objectClass);
+        }
+                   
         return $qb->getQuery()->getResult();
         return $qb->getQuery()->getResult();
     }
     }