private function return_array_children($id) { $indicadorBean = IndicatorsScPeer::retrieveByPK($id); if (is_object($indicadorBean)) { $criterio_indicadores = new Criteria(); $criterio_indicadores->add(IndicatorsScPeer::FLAG, '%habilitado%', Criteria::LIKE); $criterio_indicadores->add(IndicatorsScPeer::PARENTS, '%p' . $indicadorBean->getId() . 's%', Criteria::LIKE); $lista_indicadores = IndicatorsScPeer::doSelect($criterio_indicadores); if (count($lista_indicadores) > 0) { return $lista_indicadores; } else { return null; } } else { return null; } }
public function return_name_indicators_by_id($id) { $indicators = IndicatorsScPeer::retrieveByPK($id); if ($indicators > 0) { return $indicators->getName(); } else { return "Desconocido"; } }
public function executeSave_indicator(sfWebRequest $request) { $request->setRequestFormat('json'); $indicadorId = $request->getParameter('indicatorId'); $titulo = $request->getParameter('title'); $descripcion = $request->getParameter('description'); $valor_minimo = $request->getParameter('valueMin'); $valor_deseado = $request->getParameter('valueDes'); $valor_optimo = $request->getParameter('valueOpt'); $responsable_id = $request->getParameter('responsableId'); $responsable_email = $request->getParameter('responsableEmail'); $grupo_trabajo_id = $request->getParameter('workGroup'); $json_children = $request->getParameter('indicatorChildren'); $json = json_decode($json_children); if (count($json) > 0) { foreach ($json as $row) { $indicador_children = IndicatorsScPeer::retrieveByPK($row->{'pk'}); $indicador_children->setConectoresConfigure($row->{'values'}); $indicador_children->save(); } } //primero validamos y esta logeado //segundo validamos si el idicador existe //tercero verificamos si se asigno un usuario //(si se le asigno un usuario)cuarto vamos a revisar si el usuario que es asignado esta en e grupo de trabajo /*si no esta en grupo de trabajo envio una solictud ( antes verifico si no le mande una solicitud antes) * por que no se va estar mandando varias solicitudes al mismo usuario * en este caso las solicitudes son 1 vez por grupo de trabajo y no por indicador */ //despues de vefiricar grabamos la primera vesion del indicador con los datos secundarios $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null); if ($user != null) { $indicador = IndicatorsScPeer::retrieveByPK($indicadorId); if (is_object($indicador)) { if ($responsable_email != "") { /* aca vamos crear el registro de asignaciones, esta tabla me permite manejar un historial de las asignacion de resposanble x indicador asi podre ver todas los responsables de un determinado indicador.*/ $asignacion_indicador = new AsignacionSc(); $asignacion_indicador->setGrupoId($grupo_trabajo_id); $asignacion_indicador->setEmail($responsable_email); $asignacion_indicador->setTreeId($indicador->getTreeId()); $asignacion_indicador->setIndicadorId($indicador->getId()); $asignacion_indicador->setCreateAt(time()); $asignacion_indicador->setUpdateAt(time()); /**********************************************************************/ if ($responsable_id != "") { $asignacion_indicador->setFlag(json_encode(array("estado" => true, "owner_id" => $user->getId()))); $asignacion_indicador->setUserId($responsable_id); $indicador->setResponsableId($responsable_id); $indicador->setEmailResponsable($responsable_email); } else { //envio solicitud //antes verificar si no le enviando una solicitud antes $rsp = $this->evaluar_solicitud($responsable_email, $grupo_trabajo_id, $user); if ($rsp['success']) { $indicador->setEmailResponsable($responsable_email); $indicador->setResponsableId(null); $asignacion_indicador->setFlag(json_encode(array("estado" => false, "owner_id" => $user->getId()))); } else { $this->message = $rsp['message']; return sfView::ERROR; } } $asignacion_indicador->save(); } else { $indicador->setResponsableId(null); $indicador->setEmailResponsable(''); } if ($descripcion != "") { $indicador->setDescripcion($descripcion); } if ($valor_minimo != "") { $indicador->setValorMinimo($valor_minimo); } if ($valor_deseado != "") { $indicador->setValorDeseado($valor_deseado); } if ($valor_optimo != "") { $indicador->setValorOptimo($valor_optimo); } if ($titulo != "") { $indicador->setTitulo($titulo); } $indicador->save(); } else { $this->message = 'not found indicator'; return sfView::ERROR; } } else { $this->message = 'session expired'; return sfView::ERROR; } }
public function executeAjax_show_gauge_indicators(sfWebRequest $request) { $id = $request->getParameter('id_indicators'); //busco el id del indicador $indicador = IndicatorsScPeer::retrieveByPK($id); $this->nombre = $indicador->getTitulo(); $minimo = $indicador->getValorMinimo(); $optimo = $indicador->getValorOptimo(); $deseado = $indicador->getValorDeseado(); $valor_actual = $indicador->getValorActualEntregado(); if ($valor_actual != null) { $divisor = $optimo - $minimo; if ($valor_actual <= $minimo) { $valor_porcentaje = 0; } else { $dividendo = $valor_actual - $minimo; $valor_porcentaje = $dividendo * 100 / $divisor; } $this->valor_porcentaje = $valor_porcentaje; //para mostrar $this->minimo = $minimo; $this->optimo = $optimo; $this->deseado = $deseado; $this->actual = $valor_actual; } else { $this->valor_porcentaje = null; //para mostrar $this->minimo = $minimo; $this->optimo = $optimo; $this->deseado = $deseado; $this->actual = null; } }
public function getTipoConector($nodo_id) { $indicador = IndicatorsScPeer::retrieveByPK($nodo_id); if ($indicador->getDetNetworkAttributeId() != null) { $resp = $indicador->getDetNetworkAttribute()->getNetwork()->getName(); } else { $resp = "Manual"; } return $resp; }
public function executeOauthcallback(sfWebRequest $request) { $code = $request->getParameter('code'); $state = $request->getParameter('state'); /* indicador_id */ $handle_error = $request->getParameter('error'); $indicator = IndicatorsScPeer::retrieveByPK($state); $id_tree = $indicator->getTreeId(); $current_user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user')); $c = new Criteria(); $c->add(UserGoogleConfigurationPeer::USER_ID, $current_user->getId()); $google_configuration = UserGoogleConfigurationPeer::doSelectOne($c); if (!is_object($google_configuration)) { $this->getUser()->setFlash('msg', 'Primero debes configurar los datos de tu cuenta Google'); $this->redirect('@configuration'); } $google_client_id = $google_configuration->getGoogleClientId(); $google_client_secret = $google_configuration->getGoogleClientSecret(); if ($handle_error == 'access_denied') { //$this->getUser()->setFlash('message','Oops, ha ocurrido un error. Intenta nuevamente.'); return $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=error&from=g'); } else { if ($code != '' && $state != '') { $postdata = http_build_query(array('code' => $code, 'client_id' => $google_client_id, 'client_secret' => $google_client_secret, 'redirect_uri' => $this->getController()->genUrl('@oauthcallback', true), 'grant_type' => 'authorization_code')); $opts = array('http' => array('method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'content' => $postdata)); $context = stream_context_create($opts); $result = @file_get_contents('https://accounts.google.com/o/oauth2/token', false, $context); if ($result === FALSE) { $this->getUser()->setFlash('msg', 'Configurar correctamente'); $this->redirect('@configuration'); } else { $json = json_decode($result); //consultamos el email del usuario, para adjuntarlo al registro $userinfo = @file_get_contents('https://www.googleapis.com/oauth2/v1/userinfo?access_token=' . $json->{'access_token'}); $json_userinfo = json_decode($userinfo); if ($userinfo === FALSE) { $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=error&from=g'); } else { /* si $json->{'refresh_token'} devuelve nada, es porque anteriormente ya permitió el acceso */ if (isset($json->{'refresh_token'})) { //primera vez que pide permiso de acceso //si existe el refresh_token, se reemplaza, ya que es porque anteriormente ha revocado el permiso de acceso $c = new Criteria(); $c->add(IndicadoresScGoogleAnalyticsPeer::GOOGLE_USER_EMAIL, $json_userinfo->{'email'}); $c->add(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, $indicator->getId()); $indicadores_sc_google_analytics_object = IndicadoresScGoogleAnalyticsPeer::doSelectOne($c); if (is_object($indicadores_sc_google_analytics_object)) { //obtener nodos "del arbol $id_tree" del mismo google_user_email $c = new Criteria(); //$c->add(IndicatorsScPeer::TREE_ID, $id_tree); $c->add(IndicatorsScPeer::FLAG, 'habilitado'); $c->add(IndicatorsScPeer::ULTIMO_NODO, 1); $c->add(IndicatorsScPeer::DET_NETWORK_ATTRIBUTE_ID, null, Criteria::NOT_EQUAL); $c->add(IndicadoresScGoogleAnalyticsPeer::GOOGLE_USER_EMAIL, $json_userinfo->{'email'}); $c->addJoin(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, IndicatorsScPeer::ID); $lista_nodos = IndicatorsScPeer::doSelect($c); //obtener nodos con conector exterior pertenecientes al usuario $json_userinfo->{'email'} foreach ($lista_nodos as $row) { //actualizar su refresh_token $c = new Criteria(); $c->add(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, $row->getId()); $temp = IndicadoresScGoogleAnalyticsPeer::doSelectOne($c); $temp->setRefreshToken($json->{'refresh_token'}); $temp->save(); } } else { //sino, se crea $indicadores_sc_google_analytics = new IndicadoresScGoogleAnalytics(); $indicadores_sc_google_analytics->setRefreshToken($json->{'refresh_token'}); $indicadores_sc_google_analytics->setGoogleUserEmail($json_userinfo->{'email'}); $indicadores_sc_google_analytics->setIndicadorId($indicator->getId()); $indicadores_sc_google_analytics->save(); } $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=success&from=g'); } else { //buscar los nodos del mismo arbol $c = new Criteria(); $c->add(IndicadoresScGoogleAnalyticsPeer::GOOGLE_USER_EMAIL, $json_userinfo->{'email'}); //$c->add(IndicatorsScPeer::TREE_ID, $indicator->getTreeId());//puede ser del mismo arbol u otro $c->add(IndicatorsScPeer::FLAG, 'habilitado'); $c->addJoin(IndicadoresScGoogleAnalyticsPeer::INDICADOR_ID, IndicatorsScPeer::ID); $object = IndicadoresScGoogleAnalyticsPeer::doSelectOne($c); if (is_object($object)) { $indicadores_sc_google_analytics = new IndicadoresScGoogleAnalytics(); $indicadores_sc_google_analytics->setRefreshToken($object->getRefreshToken()); $indicadores_sc_google_analytics->setGoogleUserEmail($json_userinfo->{'email'}); $indicadores_sc_google_analytics->setIndicadorId($indicator->getId()); $indicadores_sc_google_analytics->save(); } $this->redirect('@edit_strategy?id_tree=' . $id_tree . '&node_id=' . $indicator->getId() . '&response=success&from=g'); } } } } } }
private function recalcular($nodo) { $suma_hijos = 0; $hijos_del_padre = $this->get_hijos($nodo->getPreviousId()); if ($hijos_del_padre != null) { foreach ($hijos_del_padre as $row) { $valor_actual = $row->getValorActualEntregado(); $valor_porcentual = $row->getConectoresConfigure(); $valor_minimo = $row->getValorMinimo(); $valor_maximo = $row->getValorOptimo(); $division = $valor_actual / $valor_maximo; if ($this->soy_padre($row)) { $valor_minimo = 0; } if ($valor_actual <= $valor_minimo) { $division = 0; } else { if ($division >= 1) { $suma_hijos = $suma_hijos + $valor_porcentual / 100; } else { $suma_hijos = $suma_hijos + $valor_actual * ($valor_porcentual / 100) / $valor_maximo; } } } $padre = IndicatorsScPeer::retrieveByPK($nodo->getPreviousId()); $valor_final = $suma_hijos * 100; $padre->setValorActualEntregado($valor_final); $padre->save(); $this->validar_si_tiene_padre($padre); } }
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; } }
public function current_color_production($indicator_id, $array_color) { $indicator = IndicatorsScPeer::retrieveByPK($indicator_id); $valor_minimo = $indicator->getValorMinimo(); $valor_desaado = $indicator->getValorDeseado(); $valor_optimo = $indicator->getValorOptimo(); $valor_actual = $indicator->getValorActualEntregado(); if ($valor_actual >= $valor_desaado) { return $array_color[0]; } elseif ($valor_actual >= $valor_minimo) { return $array_color[1]; } else { return $array_color[2]; } }