示例#1
0
 public function evaluarRegla($etapa_id)
 {
     if ($this->tipo == 'secuencial' || $this->tipo == 'paralelo' || $this->tipo == 'union') {
         return true;
     }
     $regla = new Regla($this->regla);
     return $regla->evaluar($etapa_id);
 }
示例#2
0
 public function ejecutar(Etapa $etapa)
 {
     $regla = new Regla($this->extra->expresion);
     $valor = $regla->evaluar($etapa->id);
     $dato = Doctrine::getTable('DatoSeguimiento')->findOneByNombreAndEtapaId($this->extra->variable, $etapa->id);
     if (!$dato) {
         $dato = new DatoSeguimiento();
     }
     $dato->nombre = $this->extra->variable;
     $dato->valor = $valor;
     $dato->etapa_id = $etapa->id;
     $dato->save();
 }
示例#3
0
 public function finalizarPaso(Paso $paso)
 {
     //Ejecutamos los eventos finales
     $eventos = Doctrine_Query::create()->from('Evento e')->where('e.paso_id = ? AND e.instante = ?', array($paso->id, 'despues'))->execute();
     foreach ($eventos as $e) {
         $r = new Regla($e->regla);
         if ($r->evaluar($this->id)) {
             $e->Accion->ejecutar($this);
         }
     }
 }
示例#4
0
 public function getUsuariosFromGruposDeUsuarioDeCuenta($etapa_id)
 {
     $query = Doctrine_Query::create()->from('Usuario u, u.GruposUsuarios g, g.Cuenta c')->where('u.vacaciones = 0')->andWhere('c.id = ?', $this->Proceso->Cuenta->id);
     if ($this->acceso_modo == 'publico') {
     } else {
         if ($this->acceso_modo == 'registrados') {
             $query->andWhere('u.registrado = 1');
         } else {
             if ($this->acceso_modo == 'claveunica') {
                 $query->andWhere('u.open_id = 1');
             } else {
                 //Convertimos las variables e ids, separados por coma, en una arreglo de grupos de usuarios.
                 $grupos_arr = array(-1);
                 $grupos = explode(',', $this->grupos_usuarios);
                 foreach ($grupos as $key => $g) {
                     $r = new Regla($g);
                     $var = $r->evaluar($etapa_id);
                     if (is_numeric($var)) {
                         $grupos_arr[] = $var;
                     } else {
                         if (is_array($var)) {
                             foreach ($var as $v) {
                                 if (is_numeric($v)) {
                                     $grupos_arr[] = $v;
                                 }
                             }
                         }
                     }
                 }
                 $query->andWhereIn('g.id', $grupos_arr);
             }
         }
     }
     return $query->execute();
 }