public function generateDataIndicadorOnline($treeId, $indicadorParametro) { $criteria = new Criteria(); $criteria->add(IndicatorsScPeer::TREE_ID, $treeId); $criteria->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); /*obtengo el cualquier nodo habilitado de la estrategia * para obtener la cantidad de proyecciones que tenia y asi asignarles la * misma cantidad de proyecciones para el nuevo indicador. */ $indicador = IndicatorsScPeer::doSelectOne($criteria); if (is_object($indicador)) { $criteria->clear(); $criteria->add(ProjectionsIndicatorsCsPeer::INDICADOR_ID, $indicador->getId()); $countProjection = ProjectionsIndicatorsCsPeer::doCount($criteria); $listProjection = ProjectionsIndicatorsCsPeer::doSelect($criteria); if ($countProjection > 0) { /*Asigno la misma cantidad de proyecciones al nuevo indicador*/ foreach ($listProjection as $row) { $proyection = new ProjectionsIndicatorsCs(); $proyection->setIndicadorId($indicadorParametro->getId()); $proyection->setFecha($row->getFecha()); $proyection->setValorMinimo($indicadorParametro->getValorMinimo()); $proyection->setValorDeseado($indicadorParametro->getValorDeseado()); $proyection->setValorOptimo($indicadorParametro->getValorOptimo()); $proyection->setFlag('{}'); $proyection->save(); } return array("success" => true, "message" => "exito"); } else { return array("success" => false, "message" => "count 0 list"); } } else { return array("success" => false, "message" => "not object found"); } }
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 executeAjax_show_records_indicators(sfWebRequest $request) { //recojo el id del indicador para este caso es ultimo de lo contrario arrojara un mensaje de error $id_indicators = $request->getParameter('id_indicators'); //Se elimina todos los registros de las dos tablas temporales. TmpDataReportsPeer::doDeleteAll(); TmpTreeScPeer::doDeleteAll(); //verifico es ultimo nodo $criteria = new Criteria(); $criteria->add(IndicatorsScPeer::ID, $id_indicators); $indicators = IndicatorsScPeer::doSelectOne($criteria); $criteria->clear(); if (is_object($indicators)) { $this->indicator = $indicators; //obtengo los indicadores que son los ultimos nodos $criteria->add(IndicatorsScPeer::TREE_ID, $indicators->getTreeId()); $criteria->add(IndicatorsScPeer::ULTIMO_NODO, '1', Criteria::LIKE); $list_last_indicators = IndicatorsScPeer::doSelect($criteria); $criteria->clear(); $this->list_last_indicators = $list_last_indicators; //----------> lista de los indicadores que son ultimos nodos // obtengo la cantidad de registros que tiene en la tabla 'data_indicadores' //verifico si el indicador es ultimo nodo foreach ($list_last_indicators as $obj_id_indicators) { if ($obj_id_indicators->getId() == $id_indicators) { //si el id del indicador que estoy buscando es igual a uno de los ultimos nodos $id = $obj_id_indicators->getId(); break; } $id = null; } if ($id != null) { // si es ultimo nodo //Verifico la cantidad de rows que tiene $criteria->add(DataIndicadoresPeer::INDICADOR_ID, $id); $rows_in_data_indicadores = DataIndicadoresPeer::doCount($criteria); if ($rows_in_data_indicadores > 0) { $object_rows = DataIndicadoresPeer::doSelect($criteria); $this->indicator = $indicators; $this->object_rows = $object_rows; $criteria->clear(); } } else { // si el indicador no es ultimo nodo //obtengo el numero de registros que tiene la tabla 'data_indicadores' foreach ($list_last_indicators as $obj_last_indicators) { $obj_evaluado = $obj_last_indicators; //---> solo me hace falta obtener un indicador de esa lista para saber la cantidad de registros break; } //verifico los registros ingresados por ese indicador $criteria->add(DataIndicadoresPeer::INDICADOR_ID, $obj_evaluado->getId()); // $rows_in_data_indicadores = DataIndicadoresPeer::doCount($criteria); //1) saco la informacion de los registros //2) $obj_evaluado->getId() ----->este ID esta en muchos registros $rows_in_data_indicadores = DataIndicadoresPeer::doCount($criteria); //------>numero de registros $data_indicators = DataIndicadoresPeer::doSelect($criteria); //---> obtengo los registros por cada ID // efectuo el for para replicar el arbol y llenar los valores de cada indicador if ($rows_in_data_indicadores > 0) { //realizo el for con el numero de registros // for($i=0; $i<$rows_in_data_indicadores ; $i++){ $data_list_grafico = null; foreach ($data_indicators as $reg_indicators) { $criteria->clear(); $criteria->add(DataIndicadoresPeer::GROUP_DATA, $reg_indicators->getGroupData()); //---> BUSCO EL PRIMER GRUPO DE DATOS $data_util_graficos = DataIndicadoresPeer::doSelect($criteria); $lista_relaciones = null; //obtengo el id del arbol creado en temporal $array_result = $this->executeEspejo_reportes($indicators->getTreeId(), $data_util_graficos, $reg_indicators->getUpdateAt()); $id_tmp_creado = $array_result['array']; $lista_relaciones = $array_result['lista']; //obtengo los ultmimos nodos pero de los indicadores que estan creados en la tabla temporal $criteria->add(TmpDataReportsPeer::TREE_ID, $id_tmp_creado); $criteria->add(TmpDataReportsPeer::ULTIMO_NODO, '1', Criteria::LIKE); $list_tmp_last_indicators = TmpDataReportsPeer::doSelect($criteria); //----> lista de los ultimos nodos de la tabla tmp //$list_relation = null; foreach ($list_tmp_last_indicators as $ob) { $this->recalculate_tree($ob); } //obtengo el id del indicador relacionado $id_relation = $this->return_relation_id($lista_relaciones, $indicators->getId()); //busco en la tabla temporal por el id $data_list_grafico[] = $id_relation; } //envio datos para el grafico $criteria->clear(); $criteria->add(TmpDataReportsPeer::INDICADOR_ID, $indicators->getId()); $list_indicators_reports = TmpDataReportsPeer::doSelect($criteria); // } } $this->indicator = $indicators; $this->object_rows = $list_indicators_reports; } } else { // $this->indicators = null; $this->list_last_indicators = null; $this->object_rows = null; } }
private function verificar_insert_data($tree) { $tree = new TreeSc(); $tree->getPeriodoId(); //cada 15 dias $criterio = new Criteria(); $criterio->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); $criterio->add(IndicatorsScPeer::TREE_ID, $tree->getId()); $indicador = IndicatorsScPeer::doSelectOne($criterio); $criterio->clear(); $criterio->add(DataIndicadoresPeer::INDICADOR_ID, $indicador->getId()); $criterio->addDescendingOrderByColumn(DataIndicadoresPeer::CREATE_AT); $data = DataIndicadoresPeer::doSelectOne($criterio); $criterio = new Criteria(); $criterio->add(DataIndicadoresPeer::INDICADOR_ID, 24); $criterio->addDescendingOrderByColumn(DataIndicadoresPeer::CREATE_AT); $data = DataIndicadoresPeer::doSelectOne($criterio); $ultima_de_fecha_registro = new DateTime($data->getCreateAt()); $ultima_de_fecha_registro = $ultima_de_fecha_registro->format('Y-m-d'); $array = explode('-', $ultima_de_fecha_registro); $fecha_actual = mktime(0, 0, 0, date('m'), date("d"), date('Y')); $fecha_actual = date('Y-m-d', $fecha_actual); /* if($fecha_proyectada<=$fecha_actual){}*/ //semanal if ($tree->getPeriodoId() == 1) { $fecha_proyectada = mktime(0, 0, 0, $array[1], $array[2] + 7, $array[0]); $fecha_proyectada = date('Y-m-d', $fecha_proyectada); //cada quincena } elseif ($tree->getPeriodoId() == 2) { //si el dia de ultimo registro en menos a quince //busco el 15 de ese mes if ($array[2] < 15) { //la fecha programada es: $fecha_proyectada = $this->obtener_fecha_por_dia(15); } else { $fecha_proyectada = $this->obtener_fecha_por_dia(1); } //cada bimestre } elseif ($tree->getPeriodoId() == 3) { $fecha_proyectada = mktime(0, 0, 0, $array[1], $array[2] + 0, $array[0]); $fecha_proyectada = date('Y-m-d', $fecha_proyectada); //cada trimestre } else { $fecha_proyectada = mktime(0, 0, 0, $array[1], $array[2] + 0, $array[0]); $fecha_proyectada = date('Y-m-d', $fecha_proyectada); } }