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 } } } } }