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 {
                 $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null);
                 $conn = Propel::getConnection();
                 $conn->beginTransaction();
                 $tree_bean = new TmpTreeSc();
                 $tree_bean->setConfigureFlag($tree_espejo->getConfigureFlag());
                 $tree_bean->setFlag($user->getId());
                 $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($user->getId());
                     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;
                 }
                 $lib = new my_lib();
                 ///$list_data_indicador es el tipo DataIndicadores
                 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);
                     $respuesta = $lib->getTipoConector($obj_data->getIndicadorId());
                     $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;
     }
 }
 public function executeSave(sfWebRequest $request)
 {
     $lib = new my_lib();
     for ($i = 1; $i < 10; $i++) {
         $id_data = $request->getParameter('idfecha' . $i);
         if ($id_data != "") {
             $data = DataIndicadoresPeer::retrieveByPK($id_data);
             if ($data->getData() != $request->getParameter('f' . $i)) {
                 $data->setData($request->getParameter('f' . $i));
                 $data->save();
                 /*
                  * aca verificamos si el ultimo registo (de la tabla group_data)
                  * 
                  */
                 $rpt = $this->is_the_last_record($data);
                 if ($rpt) {
                     $indicador = IndicatorsScPeer::retrieveByPK($data->getIndicadorId());
                     if (is_object($indicador)) {
                         $respuesta = $lib->getTipoConector($data->getIndicadorId());
                         $indicador->setValorActualEntregado($request->getParameter('f' . $i));
                         $indicador->save();
                     }
                     /*
                      * 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, $indicador->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, $data->getCreateAt());
                         }
                     }
                     //set a los valores de actuales de los indicadores
                 }
             }
         }
     }
 }