public function executeAjax_show_records_indicators(sfWebRequest $request) { $request->setRequestFormat('json'); /*recojo el id del indicador para este caso es ultimo de lo contrario arrojara un mensaje de error*/ $id_indicators = $request->getParameter('id_indicators'); $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null); /*Se elimina todos los registros de las dos tablas temporales.*/ $new_criteria = new Criteria(); $new_criteria->add(TmpDataReportsPeer::FLAG, $user->getId()); TmpDataReportsPeer::doDelete($new_criteria); $new_criteria->clear(); $new_criteria->add(TmpTreeScPeer::FLAG, $user->getId()); TmpTreeScPeer::doDelete($new_criteria); /*************************************************************/ /*obetengo el nodo para asi obtener a que arbol pertenece y asi sacar todos los ultimos nodos */ $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(); //----------> lista de los indicadores que son ultimos nodos $this->list_last_indicators = $list_last_indicators; /*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; $this->object_rows_2 = $object_rows; $this->type_rpt = 'node'; $criteria->clear(); } } else { // si el indicador no es ultimo nodo /* obtengo el numero de registros que tiene la tabla 'data_indicadores' * solo me hace falta obtener un indicador de esa lista para saber la cantidad de registros*/ $obj_evaluado = $list_last_indicators[0]; //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 // $criteria->addDescendingOrderByColumn(DataIndicadoresPeer::GROUP_DATA); $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, $reg_indicators->getUpdateAt()); } //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; $this->object_rows_2 = $list_indicators_reports; $this->type_rpt = 'tmp'; } } else { // $this->indicators = null; $this->list_last_indicators = null; $this->object_rows = null; } }
/** * Removes this object from datastore and sets delete attribute. * * @param PropelPDO $con * @return void * @throws PropelException * @see BaseObject::setDeleted() * @see BaseObject::isDeleted() */ public function delete(PropelPDO $con = null) { if ($this->isDeleted()) { throw new PropelException("This object has already been deleted."); } if ($con === null) { $con = Propel::getConnection(TmpDataReportsPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); } $con->beginTransaction(); try { $ret = $this->preDelete($con); // symfony_behaviors behavior foreach (sfMixer::getCallables('BaseTmpDataReports:delete:pre') as $callable) { if (call_user_func($callable, $this, $con)) { $con->commit(); return; } } if ($ret) { TmpDataReportsPeer::doDelete($this, $con); $this->postDelete($con); // symfony_behaviors behavior foreach (sfMixer::getCallables('BaseTmpDataReports:delete:post') as $callable) { call_user_func($callable, $this, $con); } $this->setDeleted(true); $con->commit(); } else { $con->commit(); } } catch (PropelException $e) { $con->rollBack(); throw $e; } }