/** * Executes index action * * @param sfRequest $request A request object */ public function executeStrategy(sfWebRequest $request) { $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null); $id_tree = $request->getParameter('id_tree'); if ($user != null) { $criterio = new Criteria(); $criterio->add(TreeScPeer::USER_ID, $user->getId()); $criterio->add(TreeScPeer::ID, $id_tree); $criterio->add(TreeScPeer::FLAG, 1); $tree = TreeScPeer::doSelectOne($criterio); $criterio->clear(); if (is_object($tree)) { $criterio->add(IndicatorsScPeer::TREE_ID, $tree->getId()); $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); $criterio->addAscendingOrderByColumn(IndicatorsScPeer::PREVIOUS_ID); $list_indicadores = IndicatorsScPeer::doSelect($criterio); $criterio->clear(); $criterio->add(GrupoTrabajoScPeer::OWNER_ID, $user->getId()); $list_grupos = GrupoTrabajoScPeer::doSelect($criterio); $criterio->clear(); $criterio->add(PeriodoScPeer::FLAG, '%activo%', Criteria::LIKE); $list_periodo = PeriodoScPeer::doSelect($criterio); $this->lista_indicadores = $list_indicadores; $this->lista_grupos = $list_grupos; $this->lista_periodos = $list_periodo; $this->tree = $tree; } else { return sfView::ERROR; } return sfView::SUCCESS; } else { return sfView::ERROR; } }
/** * Executes index action * * @param sfRequest $request A request object */ public function executeIndex(sfWebRequest $request) { $selector = $request->getParameter('select'); $selector = $selector == "" ? 'execution' : $selector; $user = $this->getUser()->getAttribute('s_current_user', null); if ($user != null) { $this->selector = $selector; $criterio = new Criteria(); $criterio->add(TreeScPeer::USER_ID, $user->getId()); $criterio->add(TreeScPeer::FLAG, 1); $list_tree = TreeScPeer::doSelect($criterio); $this->list = $list_tree; $criteria = new Criteria(); $criteria->add(TreeScPeer::USER_ID, $user->getId()); $criteria->add(TreeScPeer::PRODUCCION, '%production%', Criteria::LIKE); $criteria->add(TreeScPeer::FLAG, 1); $user_tree = TreeScPeer::doSelect($criteria); $this->lista_tree_user = $user_tree; $criteria->clear(); // indicadores a los cuales este usuario esta com responsables $criteria->add(IndicatorsScPeer::RESPONSABLE_ID, $user->getId()); $criteria->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); $criteria->add(TreeScPeer::FLAG, 1); $criteria->add(TreeScPeer::PRODUCCION, '%production%', Criteria::LIKE); $criteria->addJoin(TreeScPeer::ID, IndicatorsScPeer::TREE_ID); $criteria->addGroupByColumn(IndicatorsScPeer::TREE_ID); $user_indicators = IndicatorsScPeer::doSelect($criteria); $criteria->clear(); $this->lista_indicators_user = $user_indicators; return sfView::SUCCESS; } else { return sfView::ERROR; } }
public function updateDataIndicadores($idTree) { $criterio = new Criteria(); $criterio->add(IndicatorsScPeer::TREE_ID, $idTree); $criterio->add(IndicatorsScPeer::ULTIMO_NODO, 1, Criteria::NOT_EQUAL); $listIndicadores = IndicatorsScPeer::doSelect($criterio); $countListIndicadores = IndicatorsScPeer::doCount($criterio); if ($countListIndicadores > 0) { foreach ($listIndicadores as $row) { $criteria = new Criteria(); $criteria->add(DataIndicadoresPeer::INDICADOR_ID, $row->getId()); DataIndicadoresPeer::doDelete($criteria); } } return array("success" => true, "message" => "exito"); }
public function haveChildren($treeBean = null) { if ($treeBean != null && is_object($treeBean)) { $criterio_busqueda = new Criteria(); $criterio_busqueda->add(IndicatorsScPeer::TREE_ID, $treeBean->getId()); $criterio_busqueda->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); $listIndicator = IndicatorsScPeer::doSelect($criterio_busqueda); $countIndicator = IndicatorsScPeer::doCount($criterio_busqueda); if ($countIndicator > 0) { return array("success" => true, "message" => "{haveChildren}-success", "object" => $listIndicator); } else { return array("success" => false, "message" => "{haveChildren}-objeto no encontrado"); } } else { return array("success" => false, "message" => "{haveChildren}-parametro invalido"); } }
private function fn_EliminarIndicadores($treeId) { /*Para eliminar indicadores por cada indicador*/ $criteria = new Criteria(); $criteria->add(IndicatorsScPeer::TREE_ID, $treeId); $listaIndicadores = IndicatorsScPeer::doSelect($criteria); if (count($listaIndicadores) > 0) { foreach ($listaIndicadores as $indicador) { //hay que buscar la dataIndicadores y eliminarlas $criteriaDataIndicadores = new Criteria(); $criteriaDataIndicadores->add(DataIndicadoresPeer::INDICADOR_ID, $indicador->getId()); DataIndicadoresPeer::doDelete($criteriaDataIndicadores); //hay que buscar las proyecciones y eliminarlas $criteriaProyecciones = new Criteria(); $criteriaProyecciones->add(ProjectionsIndicatorsCsPeer::INDICADOR_ID, $indicador->getId()); ProjectionsIndicatorsCsPeer::doDelete($criteriaProyecciones); } //acabado la eliminacion se procede a eliminar los indicadores IndicatorsScPeer::doDelete($criteria); } }
private function return_array_children($id) { $indicadorBean = IndicatorsScPeer::retrieveByPK($id); if (is_object($indicadorBean)) { $criterio_indicadores = new Criteria(); $criterio_indicadores->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); $criterio_indicadores->add(IndicatorsScPeer::PARENTS, '%p' . $indicadorBean->getId() . 's%', Criteria::LIKE); $lista_indicadores = IndicatorsScPeer::doSelect($criterio_indicadores); if (count($lista_indicadores) > 0) { return $lista_indicadores; } else { return null; } } else { return null; } }
public function executeEspejo_reportes($tree_id, $list_data_indicador, $fecha_update) { // $tree_id = $request->getParameter('idTree'); // $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'),null); if ($tree_id != 0) { $tree_espejo = TreeScPeer::retrieveByPK($tree_id); if (is_object($tree_espejo)) { try { $conn = Propel::getConnection(); $conn->beginTransaction(); $tree_bean = new TmpTreeSc(); $tree_bean->setConfigureFlag($tree_espejo->getConfigureFlag()); $tree_bean->setFlag("ok"); $tree_bean->save(); $criterio = new Criteria(); $criterio->add(IndicatorsScPeer::TREE_ID, $tree_espejo->getId()); $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); $criterio->addAscendingOrderByColumn(IndicatorsScPeer::ID); $list_indicadores = IndicatorsScPeer::doSelect($criterio); $list_relation = null; foreach ($list_indicadores as $row) { $indicator_bean = new TmpDataReports(); $indicator_bean->setIndicadorId($row->getId()); $indicator_bean->setValorMinimo($row->getValorMinimo()); $indicator_bean->setValorDeseado($row->getValorDeseado()); $indicator_bean->setValorOptimo($row->getValorOptimo()); $indicator_bean->setTreeId($tree_bean->getId()); $indicator_bean->setUltimoNodo($row->getUltimoNodo()); $indicator_bean->setUpdateAt($fecha_update); $indicator_bean->setFlag("ok"); if ($row->getPreviousId() == 0) { $indicator_bean->setPreviousId(0); } else { $id_relation = $this->return_relation_id($list_relation, $row->getPreviousId()); $indicator_bean->setPreviousId($id_relation); } if ($row->getParents() != "") { $parents = $this->return_parent_relation($list_relation, $row->getParents()); $indicator_bean->setParents($parents); } //preguntar si es ultmo idicador //->getUltimoNodo() //si es ultimo nodo tengo que pasar la data actual //a data que se esta creando -> $indicator_bean->setConectoresConfigure($row->getConectoresConfigure()); $indicator_bean->save(); //actualizo el valor actual entregado $relation = array('array' => '' . $row->getId() . '-' . $indicator_bean->getId() . ''); $list_relation[] = $relation; } foreach ($list_data_indicador as $obj_data) { $criteria = new Criteria(); $id = $this->return_relation_id($list_relation, $obj_data->getIndicadorId()); $criteria->add(TmpDataReportsPeer::ID, $id); $obj_update_tmp = TmpDataReportsPeer::doSelectOne($criteria); $obj_update_tmp->setData($obj_data->getData()); $obj_update_tmp->save(); } $conn->commit(); $conn = Propel::close(); // VOY A DEVOLVER UN ARREGLO CON DOS VALORES 1) ID DEL TREE TEMPORAL, 2) LA LISTA DE LA RELACION $result = array('array' => $tree_bean->getId(), "lista" => $list_relation); return $result; //$this->list_relation = $list_relation; //$this->redirect('@edit_strategy?id_tree='.$tree_bean->getId()); } catch (Exception $e) { $conn->rollBack(); // $this->message = $e->getMessage(); $conn = Propel::close(); return sfView::ERROR; } } else { // $this->message = 'tree not definitive'; $conn = Propel::close(); return sfView::ERROR; } } else { // $this->message = 'session expired'; $conn = Propel::close(); return sfView::ERROR; } }
/** * Gets an array of IndicatorsSc objects which contain a foreign key that references this object. * * If this collection has already been initialized with an identical Criteria, it returns the collection. * Otherwise if this UserSc has previously been saved, it will retrieve * related IndicatorsScs from storage. If this UserSc is new, it will return * an empty collection or the current collection, the criteria is ignored on a new object. * * @param PropelPDO $con * @param Criteria $criteria * @return array IndicatorsSc[] * @throws PropelException */ public function getIndicatorsScs($criteria = null, PropelPDO $con = null) { if ($criteria === null) { $criteria = new Criteria(UserScPeer::DATABASE_NAME); } elseif ($criteria instanceof Criteria) { $criteria = clone $criteria; } if ($this->collIndicatorsScs === null) { if ($this->isNew()) { $this->collIndicatorsScs = array(); } else { $criteria->add(IndicatorsScPeer::RESPONSABLE_ID, $this->id); IndicatorsScPeer::addSelectColumns($criteria); $this->collIndicatorsScs = IndicatorsScPeer::doSelect($criteria, $con); } } else { // criteria has no effect for a new object if (!$this->isNew()) { // the following code is to determine if a new query is // called for. If the criteria is the same as the last // one, just return the collection. $criteria->add(IndicatorsScPeer::RESPONSABLE_ID, $this->id); IndicatorsScPeer::addSelectColumns($criteria); if (!isset($this->lastIndicatorsScCriteria) || !$this->lastIndicatorsScCriteria->equals($criteria)) { $this->collIndicatorsScs = IndicatorsScPeer::doSelect($criteria, $con); } } } $this->lastIndicatorsScCriteria = $criteria; return $this->collIndicatorsScs; }
public function assessNode($indicador_id) { //el orden de las validacion sera por criterio de validaciones o errores comunes $indicador = IndicatorsScPeer::retrieveByPK($indicador_id); if (is_object($indicador)) { if ($indicador->getResponsableId() != "") { if ($indicador->getValorMinimo() != "") { if ($indicador->getValorDeseado() != "") { if ($indicador->getUltimoNodo() != "") { //es ultimo nodo (validamos la ultima opcion de Valor Optimo) if ($indicador->getValorOptimo() != "") { // validamos "lo demas" if ($indicador->getTitulo() != "") { //llegada A ==> INDICADOR OPTIMO return array('resp' => true, 'code' => '1'); } else { // no tiene titulo return array('resp' => false, 'code' => 'e-005'); } } else { // no tiene responsable Valor Optimo return array('resp' => false, 'code' => 'e-004'); } } else { //no es ultimo nodo (validamos los nodos hijos y despues "lo demas") //obtener los nodos hijos: //aca retorno lista de indicadores inferiores //primero valido si tiene conectores inferiores //si tiene concetores inferiores envio la lista de conectores inferiores //en la consuta solo necesito id-configuracion(valor asignado por padre)-titulo $criterio_busqueda = new Criteria(); $criterio_busqueda->add(IndicatorsScPeer::PREVIOUS_ID, $indicador->getId()); $criterio_busqueda->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); $lista_indicadores_hijos = IndicatorsScPeer::doSelect($criterio_busqueda); //ahora valido que todos tengan su porcentaje. foreach ($lista_indicadores_hijos as $row) { if ($row->getConectoresConfigure() == "") { return array('resp' => false, 'code' => $row->getId()); } } // si todos tienen un valor entonces valido lo mismo de arriba ..."lo demas" if ($indicador->getTitulo() != "") { //llegada B ==> INDICADOR OPTIMO return array('resp' => true, 'code' => '1'); } else { // no tiene titulo return array('resp' => false, 'code' => 'e-005'); } } } else { // no tiene responsable Valor Deseado return array('resp' => false, 'code' => 'e-003'); } } else { // no tiene responsable Valor Minimo return array('resp' => false, 'code' => 'e-002'); } } else { // no tiene responsable ID return array('resp' => false, 'code' => 'e-001'); } } else { return array('resp' => false, 'code' => 'e-666'); } }
public function executeOauthcallback(sfWebRequest $request) { $code = $request->getParameter('code'); $state = $request->getParameter('state'); /* indicador_id */ $handle_error = $request->getParameter('error'); $indicator = IndicatorsScPeer::retrieveByPK($state); $id_tree = $indicator->getTreeId(); $current_user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user')); $c = new Criteria(); $c->add(UserGoogleConfigurationPeer::USER_ID, $current_user->getId()); $google_configuration = UserGoogleConfigurationPeer::doSelectOne($c); if (!is_object($google_configuration)) { $this->getUser()->setFlash('msg', 'Primero debes configurar los datos de tu cuenta Google'); $this->redirect('@configuration'); } $google_client_id = $google_configuration->getGoogleClientId(); $google_client_secret = $google_configuration->getGoogleClientSecret(); if ($handle_error == 'access_denied') { //$this->getUser()->setFlash('message','Oops, ha ocurrido un error. Intenta nuevamente.'); return $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=error&from=g'); } else { if ($code != '' && $state != '') { $postdata = http_build_query(array('code' => $code, 'client_id' => $google_client_id, 'client_secret' => $google_client_secret, 'redirect_uri' => $this->getController()->genUrl('@oauthcallback', true), 'grant_type' => 'authorization_code')); $opts = array('http' => array('method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'content' => $postdata)); $context = stream_context_create($opts); $result = @file_get_contents('https://accounts.google.com/o/oauth2/token', false, $context); if ($result === FALSE) { $this->getUser()->setFlash('msg', 'Configurar correctamente'); $this->redirect('@configuration'); } else { $json = json_decode($result); //consultamos el email del usuario, para adjuntarlo al registro $userinfo = @file_get_contents('https://www.googleapis.com/oauth2/v1/userinfo?access_token=' . $json->{'access_token'}); $json_userinfo = json_decode($userinfo); if ($userinfo === FALSE) { $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=error&from=g'); } else { /* si $json->{'refresh_token'} devuelve nada, es porque anteriormente ya permitió el acceso */ if (isset($json->{'refresh_token'})) { //primera vez que pide permiso de acceso //si existe el refresh_token, se reemplaza, ya que es porque anteriormente ha revocado el permiso de acceso $c = new Criteria(); $c->add(IndicadoresScGoogleAnalyticsPeer::GOOGLE_USER_EMAIL, $json_userinfo->{'email'}); $c->add(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, $indicator->getId()); $indicadores_sc_google_analytics_object = IndicadoresScGoogleAnalyticsPeer::doSelectOne($c); if (is_object($indicadores_sc_google_analytics_object)) { //obtener nodos "del arbol $id_tree" del mismo google_user_email $c = new Criteria(); //$c->add(IndicatorsScPeer::TREE_ID, $id_tree); $c->add(IndicatorsScPeer::FLAG, 'habilitado'); $c->add(IndicatorsScPeer::ULTIMO_NODO, 1); $c->add(IndicatorsScPeer::DET_NETWORK_ATTRIBUTE_ID, null, Criteria::NOT_EQUAL); $c->add(IndicadoresScGoogleAnalyticsPeer::GOOGLE_USER_EMAIL, $json_userinfo->{'email'}); $c->addJoin(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, IndicatorsScPeer::ID); $lista_nodos = IndicatorsScPeer::doSelect($c); //obtener nodos con conector exterior pertenecientes al usuario $json_userinfo->{'email'} foreach ($lista_nodos as $row) { //actualizar su refresh_token $c = new Criteria(); $c->add(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, $row->getId()); $temp = IndicadoresScGoogleAnalyticsPeer::doSelectOne($c); $temp->setRefreshToken($json->{'refresh_token'}); $temp->save(); } } else { //sino, se crea $indicadores_sc_google_analytics = new IndicadoresScGoogleAnalytics(); $indicadores_sc_google_analytics->setRefreshToken($json->{'refresh_token'}); $indicadores_sc_google_analytics->setGoogleUserEmail($json_userinfo->{'email'}); $indicadores_sc_google_analytics->setIndicadorId($indicator->getId()); $indicadores_sc_google_analytics->save(); } $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=success&from=g'); } else { //buscar los nodos del mismo arbol $c = new Criteria(); $c->add(IndicadoresScGoogleAnalyticsPeer::GOOGLE_USER_EMAIL, $json_userinfo->{'email'}); //$c->add(IndicatorsScPeer::TREE_ID, $indicator->getTreeId());//puede ser del mismo arbol u otro $c->add(IndicatorsScPeer::FLAG, 'habilitado'); $c->addJoin(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, IndicatorsScPeer::ID); $object = IndicadoresScGoogleAnalyticsPeer::doSelectOne($c); if (is_object($object)) { $indicadores_sc_google_analytics = new IndicadoresScGoogleAnalytics(); $indicadores_sc_google_analytics->setRefreshToken($object->getRefreshToken()); $indicadores_sc_google_analytics->setGoogleUserEmail($json_userinfo->{'email'}); $indicadores_sc_google_analytics->setIndicadorId($indicator->getId()); $indicadores_sc_google_analytics->save(); } $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=success&from=g'); } } } } } }
private function get_hijos($padre_id) { if ($padre_id != 0) { $criterio = new Criteria(); $criterio->add(IndicatorsScPeer::PREVIOUS_ID, $padre_id); $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); $list = IndicatorsScPeer::doSelect($criterio); if (count($list) > 0) { return $list; } else { return null; } } else { return null; } }
/** * Retrieve multiple objects by pkey. * * @param array $pks List of primary keys * @param PropelPDO $con the connection to use * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function retrieveByPKs($pks, PropelPDO $con = null) { if ($con === null) { $con = Propel::getConnection(IndicatorsScPeer::DATABASE_NAME, Propel::CONNECTION_READ); } $objs = null; if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(IndicatorsScPeer::DATABASE_NAME); $criteria->add(IndicatorsScPeer::ID, $pks, Criteria::IN); $objs = IndicatorsScPeer::doSelect($criteria, $con); } return $objs; }
public function executeCreate_mirror_tree(sfWebRequest $request) { $tree_id = $request->getParameter('idTree'); $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null); if ($user != null) { $tree_current = TreeScPeer::retrieveByPK($tree_id); if (is_object($tree_current)) { try { $conn = Propel::getConnection(); $conn->beginTransaction(); $tree_bean = new TreeSc(); $tree_bean->setName($tree_current->getName()); $tree_bean->setUserId($tree_current->getUserId()); $tree_bean->setConfigureFlag($tree_current->getConfigureFlag()); $tree_bean->setConfigureDesign($tree_current->getConfigureDesign()); $tree_bean->setCreateAt(time()); $tree_bean->setUpdateAt(time()); $tree_bean->setFlag($tree_current->getFlag()); $tree_bean->setProduccion('not'); $tree_bean->setGrupoTrabajoId($tree_current->getGrupoTrabajoId()); $tree_bean->setPeriodoId($tree_current->getPeriodoId()); $tree_bean->save(); $tree_user_bean = new TreeUser(); $tree_user_bean->setUserId($tree_bean->getUserId()); $tree_user_bean->setTreeId($tree_bean->getId()); $tree_user_bean->save(); $criterio = new Criteria(); $criterio->add(IndicatorsScPeer::TREE_ID, $tree_current->getId()); $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); $criterio->addAscendingOrderByColumn(IndicatorsScPeer::ID); $list_indicadores = IndicatorsScPeer::doSelect($criterio); $list_relation = null; foreach ($list_indicadores as $row) { $indicator_bean = new IndicatorsSc(); $indicator_bean->setTitulo($row->getTitulo()); $indicator_bean->setDescripcion($row->getDescripcion()); $indicator_bean->setValorMinimo($row->getValorMinimo()); $indicator_bean->setValorDeseado($row->getValorDeseado()); $indicator_bean->setValorOptimo($row->getValorOptimo()); $indicator_bean->setResponsableId($row->getResponsableId()); $indicator_bean->setTreeId($tree_bean->getId()); $indicator_bean->setEmailResponsable($row->getEmailResponsable()); $indicator_bean->setUltimoNodo($row->getUltimoNodo()); if ($row->getPreviousId() == 0) { $indicator_bean->setPreviousId(0); } else { $id_relation = $this->return_relation_id($list_relation, $row->getPreviousId()); $indicator_bean->setPreviousId($id_relation); } if ($row->getParents() != "") { $parents = $this->return_parent_relation($list_relation, $row->getParents()); $indicator_bean->setParents($parents); } $indicator_bean->setFlag($row->getFlag()); $indicator_bean->setConectoresConfigure($row->getConectoresConfigure()); $indicator_bean->save(); $relation = array('array' => '' . $row->getId() . '-' . $indicator_bean->getId() . ''); $list_relation[] = $relation; } // $conn->rollBack(); $tree_current->setFlag(2); $tree_current->save(); $conn->commit(); $conn = Propel::close(); $this->list_relation = $list_relation; $this->redirect('@edit_strategy?id_tree=' . $tree_bean->getId()); } catch (Exception $e) { $conn->rollBack(); $this->message = $e->getMessage(); $conn = Propel::close(); return sfView::ERROR; } } else { $this->message = 'tree not definitive'; $conn = Propel::close(); return sfView::ERROR; } } else { $this->message = 'session expired'; $conn = Propel::close(); return sfView::ERROR; } }
private function actualizarNodosPorPeriodo($periodo_id) { $c = new Criteria(); $c->add(TreeScPeer::PERIODO_ID, $periodo_id); $c->add(TreeScPeer::PRODUCCION, 'production'); $c->add(IndicatorsScPeer::ULTIMO_NODO, 1); $c->add(IndicatorsScPeer::FLAG, 'habilitado'); $c->addJoin(TreeScPeer::ID, IndicatorsScPeer::TREE_ID); $nodos = IndicatorsScPeer::doSelect($c); if (count($nodos) > 0) { $group_data_indicadores = new GroupDataIndicadores(); $group_data_indicadores->setCreateAt(time()); $group_data_indicadores->setTreeId($nodos[0]->getTreeId()); $group_data_indicadores->save(); //$nodos es sòlo los ultimos nodos de un arbol foreach ($nodos as $row) { $data_indicadores = new DataIndicadores(); $data_indicadores->setIndicadorId($row->getId()); $data_indicadores->setUserId($row->getResponsableId()); $c = new Criteria(); $c->add(DataIndicadoresPeer::INDICADOR_ID, $row->getId()); $c->addDescendingOrderByColumn(DataIndicadoresPeer::CREATE_AT); $c->setLimit(1); $data_anterior_indicador = DataIndicadoresPeer::doSelectOne($c); if ($row->getDetNetworkAttributeId() == null) { /* si es null, es conector interno (manualmente) */ $data_indicadores->setData(0); $row->setValorActualEntregado(0); $row->save(); } else { $data_indicadores->setData($this->getIndicatorScData($row->getId())); $row->setValorActualEntregado($this->getIndicatorScData($row->getId())); $row->save(); } $data_indicadores->setGroupData($group_data_indicadores->getId()); $data_indicadores->setCreateAt(time()); $data_indicadores->setUpdateAt(time()); $data_indicadores->save(); } $ultima_fecha_del_array = $data_indicadores->getCreateAt(); if (count($nodos) > 0) { /* * Obtengo los indicadores que tienen indicadores hijos ( ultimos indicadores ) * o comienzo a recacular todos los valores Actuales de todos los indicadores */ $criterio = new Criteria(); $criterio->add(IndicatorsScPeer::TREE_ID, $nodos[0]->getTreeId()); $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); $criterio->add(IndicatorsScPeer::ULTIMO_NODO, 1); $criterio->addAscendingOrderByColumn(IndicatorsScPeer::PREVIOUS_ID); $list_indicadores = IndicatorsScPeer::doSelect($criterio); foreach ($list_indicadores as $row) { if ($row->getPreviousId() != 0) { $var = $this->recalcular($row, $ultima_fecha_del_array); } } } } }