public function executeAjax_reports(sfWebRequest $request)
 {
     //obtengo el id del arbol
     $tree_id = $request->getParameter('id_tree');
     $criterio = new Criteria();
     $criterio->add(TreeScPeer::ID, $tree_id);
     $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();
         $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;
     }
 }
 /**
  * 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;
     }
 }
 public function returnCol_model($user, $indicator)
 {
     $criterio_busqueda = new Criteria();
     $criterio_busqueda->add(TreeScPeer::ID, $indicator[1]);
     $tree = TreeScPeer::doSelectOne($criterio_busqueda);
     $criterio_busqueda->clear();
     $criterio_busqueda->add(DataIndicadoresPeer::USER_ID, $user->getId());
     //    $criterio_busqueda->add(DataIndicadoresPeer::PERIODO_ID,$tree->getPeriodoId());
     $criterio_busqueda->add(DataIndicadoresPeer::INDICADOR_ID, $indicator[0]);
     $list = DataIndicadoresPeer::doSelect($criterio_busqueda);
     $var = "[";
     $var = $var . "{name:'name',index:'name', width:180, sorttype:'text',editable: false},{";
     $cantidad = 1;
     foreach ($list as $data) {
         $var = $var . "name:'f" . $cantidad . "',index:'f" . $cantidad . "',width:100,editable: true , editrules:{required:true,number:true} },";
         $var = $var . "{name:'idfecha" . $cantidad . "',index:'idfecha" . $cantidad . "',width:100,editable: true,hidden:true },{";
         $cantidad++;
     }
     $var = substr($var, 0, strlen($var) - 2) . ']';
     return $var;
 }
 public function executeAjax_mostrar_indicators(sfWebRequest $request)
 {
     $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null);
     $id_indicators = $request->getParameter('indicators_id');
     if ($user != null) {
         //busco el la cabecera desde donde se armara el arbol
         $criterio = new Criteria();
         $criterio->add(IndicatorsScPeer::ID, $id_indicators);
         $obj_indicators = IndicatorsScPeer::doSelectOne($criterio);
         $id_tree = $obj_indicators->getTreeId();
         // saco el id del arbol
         $id_indicators = $obj_indicators->getId();
         //saco el id del indicador
         $criterio->clear();
         $criterio->add(IndicatorsScPeer::TREE_ID, $id_tree);
         $list_indicators_by_tree = IndicatorsScPeer::doSelect($criterio);
         // obtengo la lista de indicadores por arbol
         $criterio->clear();
         //obtengo el arbol
         $criterio->add(TreeScPeer::ID, $id_tree);
         $tree = TreeScPeer::doSelectOne($criterio);
         $criterio->clear();
         //realizo el metodo
         $this->tree = $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);
         $this->lista_indicadores = $list_indicadores;
         //variables
         $cont = 0;
         $indice;
         $recurso = new practil_lib();
         $array = array();
         $array_general = array();
         //recorro la lista de los indicadores
         foreach ($list_indicadores as $obj) {
             if ($cont == 0) {
                 $indice = $id_indicators;
             }
             if ($obj->getPreviousId() == $indice) {
                 //obtengo el codigo del previuos
                 $array_general[] = $obj->getId();
             }
         }
         // $array = $recurso->add_ids_indicators_to_array($array_general, $array);
         $flat = true;
         while ($flat) {
             foreach ($list_indicadores as $obj2) {
                 for ($j = 0; $j < count($array_general); $j++) {
                     $indice = $array_general[$j];
                     print_r($obj2->getPreviousId());
                     if ($obj2->getPreviousId() == $indice) {
                         //obtengo el codigo del previuos
                         print_r("entro");
                         $array_general[] = $obj->getId();
                     }
                 }
             }
             $flat = false;
         }
         print_r("salio");
         $this->arreglo = $array_general;
         return sfView::SUCCESS;
     } else {
         return sfView::ERROR;
     }
 }
 public function executeDelete_indicador(sfWebRequest $request)
 {
     $indicator = $request->getParameter('indicator');
     $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null);
     if ($user != null) {
         try {
             $conn = Propel::getConnection();
             $conn->beginTransaction();
             $indicadorBean = IndicatorsScPeer::retrieveByPK($indicator);
             if (is_object($indicadorBean)) {
                 $id_tree = $indicadorBean->getTreeId();
                 $criterio_indicadores = new Criteria();
                 $criterio_indicadores->add(IndicatorsScPeer::PARENTS, '%p' . $indicadorBean->getId() . 's%', Criteria::LIKE);
                 $criterio_update = new Criteria();
                 $criterio_update->add(IndicatorsScPeer::FLAG, 'eliminado');
                 BasePeer::doUpdate($criterio_indicadores, $criterio_update, $conn);
                 //antes de eliminar el indicador vamos a revisar si el indicador antesesor
                 //seria el ultimo nodo y asi cambiarle su estado de ultimo_nodo a true
                 /*aca reviso si hay indicadores que todovia dependan del anterior indicador*/
                 $criterio_set_estado = new Criteria();
                 $criterio_set_estado->add(IndicatorsScPeer::PREVIOUS_ID, $indicadorBean->getPreviousId());
                 /*si es asi entonces no cambio nada encambio si no hay ninguno entonces quiere decir
                  * que ese indicador quedaria como ultimo y entonces tendria que cambiarle el estado */
                 $cantidad_de_registros = IndicatorsScPeer::doCount($criterio_set_estado);
                 /* menor igual 1 por que por logica por lo menos me va botar 1 resultado esta
                  * consulta (por el indicador actual)
                  */
                 if ($cantidad_de_registros <= 1) {
                     $indicador_update = IndicatorsScPeer::retrieveByPK($indicadorBean->getPreviousId());
                     $indicador_update->setUltimoNodo(true);
                     $indicador_update->save();
                 }
                 $indicadorBean->setFlag('eliminado');
                 $indicadorBean->save();
                 $conn->commit();
                 /*Despues de eliminar el o los nodos vamos a enviar nuevamente el arbol y
                  * sus indicadores (nodos) para que se arme nuevamente.
                  */
                 $criterio = new Criteria();
                 $criterio->add(TreeScPeer::USER_ID, $user->getId());
                 $criterio->add(TreeScPeer::ID, $id_tree);
                 $tree = TreeScPeer::doSelectOne($criterio);
                 $criterio->clear();
                 if (is_object($tree)) {
                     $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE);
                     $criterio->add(IndicatorsScPeer::TREE_ID, $tree->getId());
                     $criterio->addAscendingOrderByColumn(IndicatorsScPeer::PREVIOUS_ID);
                     $list_indicadores_send = IndicatorsScPeer::doSelect($criterio);
                     $this->lista_indicadores = $list_indicadores_send;
                     $this->tree = $tree;
                 }
                 $conn = Propel::close();
                 return sfView::SUCCESS;
             } else {
                 $this->message = 'el indicador no existe';
                 $conn = Propel::close();
                 return sfView::ERROR;
             }
         } catch (Exception $e) {
             $conn = Propel::close();
             return sfView::ERROR;
         }
     } else {
         $this->message = 'session expired';
         $conn = Propel::close();
         return sfView::ERROR;
     }
 }