public function executeCreateIndicadorOnline(sfWebRequest $request) { $request->setRequestFormat('json'); $titulo = $request->getParameter('title'); $responsableId = $request->getParameter('resposableId'); $responsableEmail = $request->getParameter('responsableEmail'); $valorMinimo = $request->getParameter('valorMinimo'); $valorDeseado = $request->getParameter('valorDeseado'); $valorOptimo = $request->getParameter('valorOptimo'); $previousId = $request->getParameter('previous'); $tree = explode("-", $request->getParameter('tree')); $treeId = $tree[1]; $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null); if ($user != null) { try { $conn = Propel::getConnection(); $conn->beginTransaction(); /*Primero creo en indicador*/ $indicator_bean = new IndicatorsSc(); $indicator_bean->setTitulo($titulo); $indicator_bean->setDescripcion(''); $indicator_bean->setTreeId($tree[1]); $indicator_bean->setPreviousId($previousId); $indicator_bean->setValorMinimo($valorMinimo); $indicator_bean->setValorDeseado($valorDeseado); $indicator_bean->setValorOptimo($valorOptimo); $indicator_bean->setResponsableId($responsableId); $indicator_bean->setConectoresConfigure(0); $indicator_bean->setEmailResponsable($responsableEmail); $indicator_bean->setFlag('habilitado'); $indicator_bean->save(); /*Segundo genero la data de Proyeccion de ese indicador con los valores ingresados*/ $serviceDataIndicador = new ProjectionsService(); $serviceDataIndicador->generateDataIndicadorOnline($treeId, $indicator_bean); /*Tercero genero data indicadores */ $serviceDataImplementation = new dataIndicadoresImplementation(); $serviceDataImplementation->addDataIndicatores($indicator_bean); //si no es el primer nodo a patir de arbol if ($indicator_bean->getPreviousId() != 0) { //obtengo el ultimo para sacar su configuracion antigua $pre_indicador = IndicatorsScPeer::retrieveByPK($previousId); $pre_indicador->setUltimoNodo(false); $pre_indicador->setValorOptimo(100); $pre_indicador->save(); $indicator_bean->setParents($pre_indicador->getParents() . 'p' . $pre_indicador->getId() . 's-'); $indicator_bean->setUltimoNodo(true); $indicator_bean->save(); } else { $indicator_bean->setUltimoNodo(true); $indicator_bean->save(); } /*actualizo la informacion de la tabla dataIndicadores*/ $serviceDataImplementation->updateDataIndicadores($tree[1]); $conn->commit(); $this->message = 'success'; $this->indicator = $indicator_bean->getId(); $this->title = $indicator_bean->getTitulo(); $this->lastNode = $indicator_bean->getUltimoNodo(); return sfView::SUCCESS; } catch (Exception $e) { $this->message = $e->getMessage(); return sfView::ERROR; } } else { $this->message = 'session expired'; return sfView::ERROR; } }