public function iniciar($proceso_id) { $proceso = Doctrine::getTable('Proceso')->find($proceso_id); $this->proceso_id = $proceso->id; $this->pendiente = 1; $etapa = new Etapa(); $etapa->tarea_id = $proceso->getTareaInicial(UsuarioSesion::usuario()->id)->id; $etapa->pendiente = 1; $this->Etapas[] = $etapa; $this->save(); $etapa->asignar(UsuarioSesion::usuario()->id); }
public function iniciar($proceso_id) { // Aumentar el contador de Proceso Doctrine_Query::create()->update('Proceso p')->set("proc_cont", "proc_cont + 1")->where("p.id = ?", $proceso_id)->execute(); $proceso = Doctrine::getTable('Proceso')->find($proceso_id); $this->proceso_id = $proceso->id; $this->pendiente = 1; $this->tramite_proc_cont = $proceso->proc_cont; $etapa = new Etapa(); $etapa->tarea_id = $proceso->getTareaInicial(UsuarioSesion::usuario()->id)->id; $etapa->pendiente = 1; $this->Etapas[] = $etapa; $this->save(); $etapa->asignar(UsuarioSesion::usuario()->id); }
public function avanzar($usuarios_a_asignar = null) { Doctrine_Manager::connection()->beginTransaction(); //Cerramos esta etapa $this->cerrar(); $tp = $this->getTareasProximas(); if ($tp->estado != 'sincontinuacion') { if ($tp->estado == 'completado') { if ($this->Tramite->getEtapasActuales()->count() == 0) { $this->Tramite->cerrar(); } } else { if ($tp->estado == 'pendiente') { $tareas_proximas = $tp->tareas; foreach ($tareas_proximas as $tarea_proxima) { $etapa = new Etapa(); $etapa->tramite_id = $this->Tramite->id; $etapa->tarea_id = $tarea_proxima->id; $etapa->pendiente = 1; $etapa->save(); $usuario_asignado_id = NULL; if ($tarea_proxima->asignacion == 'ciclica') { $usuarios_asignables = $etapa->getUsuarios(); $usuario_asignado_id = $usuarios_asignables[0]->id; $ultimo_usuario = $tarea_proxima->getUltimoUsuarioAsignado($this->Tramite->Proceso->id); if ($ultimo_usuario) { foreach ($usuarios_asignables as $key => $u) { if ($u->id == $ultimo_usuario->id) { $usuario_asignado_id = $usuarios_asignables[($key + 1) % $usuarios_asignables->count()]->id; break; } } } } else { if ($tarea_proxima->asignacion == 'manual') { $usuario_asignado_id = $usuarios_a_asignar[$tarea_proxima->id]; } else { if ($tarea_proxima->asignacion == 'usuario') { $regla = new Regla($tarea_proxima->asignacion_usuario); $u = $regla->evaluar($this->id); $usuario_asignado_id = $u; } } } //Para mas adelante poder calcular como hacer las uniones if ($tp->conexion == 'union') { $etapa->etapa_ancestro_split_id = null; } else { if ($tp->conexion == 'paralelo' || $tp->conexion == 'paralelo_evaluacion') { $etapa->etapa_ancestro_split_id = $this->id; } else { $etapa->etapa_ancestro_split_id = $this->etapa_ancestro_split_id; } } $etapa->save(); $etapa->vencimiento_at = $etapa->calcularVencimiento(); $etapa->save(); if ($usuario_asignado_id) { $etapa->asignar($usuario_asignado_id); } else { $etapa->notificarTareaPendiente(); } } $this->Tramite->updated_at = date("Y-m-d H:i:s"); $this->Tramite->save(); } } } Doctrine_Manager::connection()->commit(); }