public function executeAccept_group(sfWebRequest $request)
 {
     $invitacion_id = $request->getParameter('invitacion');
     $token_seguridad = $request->getParameter('token');
     $email_token = $request->getParameter('email');
     $user_token = $request->getParameter('account');
     /*vamos a aceptar permanecer a un grupo
        aca realizo validacion en 5 capas
           1 reviso que la session de usuario exista
           2 que la el valor obtenido en la consulta sea un object(que la consulta sql resulte con el registro solicitado)
           3 el token de la solicitud sea correcto
           4 el email sea correcto
           5 que el usuario id sea correcto (este es id del usuario que envio la solicitud en md5)
       */
     $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null);
     if ($user != null) {
         $solicitud = SolicitudGrupoTrabajoScPeer::retrieveByPK($invitacion_id);
         if (is_object($solicitud)) {
             if ($token_seguridad == $solicitud->getToken()) {
                 if ($email_token == md5($user->getEmail())) {
                     if ($user_token == md5($solicitud->getUserId())) {
                         $solicitud->setRespondido(1);
                         $solicitud->setFlag(json_encode(array("estado" => false, "respuesta" => true)));
                         $solicitud->setUpdateAt(time());
                         $solicitud->save();
                         //falta cambiar los indicadores que esten relacionados al grupo
                         /*vamos a obtener todos los arboles que esten relacionados con el grupo
                           depues vamos a obtener todos los indicadores donde el usuario se encuentre
                           asignado y vamos a aumetar el ID en cada registro que encontremos*/
                         //admemas vamos hacer lo mismo en las asignaciones para tener un mejor indexacion
                         //a la hora de hacer las consultas.
                         $criterio_tree = new Criteria();
                         $criterio_tree->add(TreeScPeer::GRUPO_TRABAJO_ID, $solicitud->getGrupoId());
                         $list_tree = TreeScPeer::doSelect($criterio_tree);
                         foreach ($list_tree as $row) {
                             $con = Propel::getConnection();
                             $criterio_busqueda = new Criteria();
                             $criterio_busqueda->add(IndicatorsScPeer::EMAIL_RESPONSABLE, '%' . $solicitud->getEmail() . '%', Criteria::LIKE);
                             $criterio_busqueda->add(IndicatorsScPeer::TREE_ID, $row->getId());
                             $criterio_update = new Criteria();
                             $criterio_update->add(IndicatorsScPeer::RESPONSABLE_ID, $user->getId());
                             BasePeer::doUpdate($criterio_busqueda, $criterio_update, $con);
                             $con = Propel::close();
                         }
                         $con = Propel::getConnection();
                         $criterio_asignaciones = new Criteria();
                         $criterio_asignaciones->add(AsignacionScPeer::GRUPO_ID, $solicitud->getGrupoId());
                         $criterio_asignaciones->add(AsignacionScPeer::EMAIL, '%' . $user->getEmail() . '%', Criteria::LIKE);
                         $criterio_update = new Criteria();
                         $criterio_update->add(AsignacionScPeer::USER_ID, $user->getId());
                         BasePeer::doUpdate($criterio_asignaciones, $criterio_update, $con);
                         $con = Propel::close();
                         $grupo_trabajo = new DetalleGrupoTrabajoSc();
                         $grupo_trabajo->setEmail($user->getEmail());
                         $grupo_trabajo->setUserId($user->getId());
                         $grupo_trabajo->setGrupoId($solicitud->getGrupoId());
                         $grupo_trabajo->save();
                         $this->redirect('@list_working_groups');
                     } else {
                         return sfView::ERROR;
                     }
                 } else {
                     return sfView::ERROR;
                 }
             } else {
                 return sfView::ERROR;
             }
         } else {
             return sfView::ERROR;
         }
     } else {
         return sfView::ERROR;
     }
 }
 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');
     $conector_id = $request->getParameter('conectorId');
     /* Google, Facebook, Twitter */
     $attribute_id = $request->getParameter('attributeId');
     $tableId = $request->getParameter('tableId');
     $facebook_username = $request->getParameter('facebook_username');
     $twitter_username = $request->getParameter('twitter_username');
     $fec_ini = $request->getParameter('fec_ini');
     $fec_fin = $request->getParameter('fec_fin');
     $json_children = $request->getParameter('indicatorChildren');
     $oaux_manejo_data = $request->getParameter('oaux_manejo_data');
     $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 != "") {
                     /*
                      *
                      */
                     if ($responsable_id != $indicador->getResponsableId()) {
                         $serviceDataIndicadores = new dataIndicadoresImplementation();
                         $serviceDataIndicadores->changeOwnerIndicadores($indicador, $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']) {
                         $criterio = new Criteria();
                         $criterio->add(DetalleGrupoTrabajoScPeer::EMAIL, '%' . $responsable_email . '%', Criteria::LIKE);
                         $criterio->add(DetalleGrupoTrabajoScPeer::GRUPO_ID, $grupo_trabajo_id);
                         $cantidad = DetalleGrupoTrabajoScPeer::doCount($criterio);
                         if ($cantidad <= 0) {
                             $newDetalle = new DetalleGrupoTrabajoSc();
                             $newDetalle->setEmail($responsable_email);
                             $newDetalle->setGrupoId($grupo_trabajo_id);
                             $newDetalle->save();
                         }
                         $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);
             }
             if ($oaux_manejo_data == '1') {
                 /* ingreso manual */
                 $indicador->setDetNetworkAttributeId(null);
                 $indicador->setUsernameInNetwork(null);
                 $indicador->setValorActualEntregado(0);
                 $indicador->setGaFecIni(null);
                 $indicador->setGaFecFin(null);
             } elseif ($oaux_manejo_data == '2') {
                 /* ingreso automatico */
                 if ($conector_id != '' && $attribute_id != '') {
                     $c = new Criteria();
                     $c->add(NetworkPeer::NAME, $conector_id);
                     $c->add(DetNetworkAttributePeer::ATTRIBUTE_ID, $attribute_id);
                     $c->addJoin(NetworkPeer::ID, DetNetworkAttributePeer::NETWORK_ID);
                     $det_network_attribute = DetNetworkAttributePeer::doSelectOne($c);
                     if ($conector_id == 'Facebook') {
                         if ($facebook_username != '') {
                             $indicador->setDetNetworkAttributeId($det_network_attribute->getId());
                             $indicador->setUsernameInNetwork($facebook_username);
                             /* se extrae valor de la consulta */
                             $data = $this->privateFunctionGetFacebookData($facebook_username, $det_network_attribute->getId());
                             if ($data != null) {
                                 $indicador->setValorActualEntregado($data);
                             } else {
                                 $indicador->setValorActualEntregado(0);
                             }
                         } else {
                             $indicador->setDetNetworkAttributeId(null);
                             $indicador->setUsernameInNetwork(null);
                             $indicador->setValorActualEntregado(0);
                             $indicador->setGaFecIni(null);
                             $indicador->setGaFecFin(null);
                         }
                     } elseif ($conector_id == 'Twitter') {
                         if ($twitter_username != '') {
                             $indicador->setDetNetworkAttributeId($det_network_attribute->getId());
                             $indicador->setUsernameInNetwork($twitter_username);
                             /* se extrae valor de la consulta */
                             $data = $this->privateFunctionGetTwitterData($twitter_username, $det_network_attribute->getId());
                             $indicador->setValorActualEntregado($data);
                         } else {
                             $indicador->setDetNetworkAttributeId(null);
                             $indicador->setUsernameInNetwork(null);
                             $indicador->setValorActualEntregado(0);
                             $indicador->setGaFecIni(null);
                             $indicador->setGaFecFin(null);
                         }
                     } elseif ($conector_id == 'Google Analytics') {
                         if ($tableId != '' && $tableId != 'null') {
                             $indicador->setDetNetworkAttributeId($det_network_attribute->getId());
                             $indicador->setUsernameInNetwork($tableId);
                             /* se extrae valor de la consulta */
                             $data = $this->privateFunctionGetGoogleAnalyticsData($indicador->getId(), $tableId, $fec_ini, $fec_fin, $det_network_attribute->getId());
                             $indicador->setGaFecIni($fec_ini);
                             $indicador->setGaFecFin($fec_fin);
                             $indicador->setValorActualEntregado($data);
                         } else {
                             if (is_object($det_network_attribute)) {
                                 $indicador->setDetNetworkAttributeId($det_network_attribute->getId());
                             } else {
                                 $indicador->setDetNetworkAttributeId(null);
                             }
                             $indicador->setUsernameInNetwork(null);
                             $indicador->setValorActualEntregado(0);
                             $indicador->setGaFecIni(null);
                             $indicador->setGaFecFin(null);
                         }
                     }
                 } else {
                     $indicador->setDetNetworkAttributeId(null);
                     $indicador->setUsernameInNetwork(null);
                     $indicador->setValorActualEntregado(0);
                     $indicador->setGaFecIni(null);
                     $indicador->setGaFecFin(null);
                 }
             }
             $indicador->save();
         } else {
             $this->message = 'not found indicator';
             return sfView::ERROR;
         }
     } else {
         $this->message = 'session expired';
         return sfView::ERROR;
     }
 }
 public function executeCreate_tree(sfWebRequest $request)
 {
     $request->setRequestFormat('json');
     $title = $request->getParameter('item_title');
     $grupo = $request->getParameter('grupo');
     $periodo = $request->getParameter('periodo');
     $typeSave = $request->getParameter('typeSave');
     $nameGroup = $request->getParameter('newgrupo');
     $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null);
     if ($user != null) {
         try {
             $conn = Propel::getConnection();
             $conn->beginTransaction();
             $tree_bean = new TreeSc();
             $tree_bean->setName($title);
             $tree_bean->setUserId($user->getId());
             $tree_bean->setConfigureFlag('');
             $tree_bean->setConfigureDesign('');
             $tree_bean->setCreateAt(time());
             $tree_bean->setUpdateAt(time());
             $tree_bean->setPeriodoId($periodo);
             /*voy verificar si esta enviando un grupo para grabar*/
             $grupoBean = null;
             if ($typeSave == "true") {
                 $grupoBean = new GrupoTrabajoSc();
                 $grupoBean->setName($nameGroup);
                 $grupoBean->setOwnerId($user->getId());
                 $grupoBean->setFlag(1);
                 $grupoBean->setCreateAt(time());
                 $grupoBean->setUpdateAt(time());
                 $grupoBean->setHumanFlag(1);
                 $grupoBean->setHumanHigher('off');
                 $grupoBean->setHumanLower('on');
                 $grupoBean->setHumanMe('off');
                 $grupoBean->save();
                 $newDetalle = new DetalleGrupoTrabajoSc();
                 $newDetalle->setEmail($user->getEmail());
                 $newDetalle->setUserId($user->getId());
                 $newDetalle->setGrupoId($grupoBean->getId());
                 $newDetalle->save();
                 $tree_bean->setGrupoTrabajoId($grupoBean->getId());
             } else {
                 $tree_bean->setGrupoTrabajoId($grupo);
             }
             $tree_bean->setFlag(1);
             $tree_bean->setValorDeseado(0);
             $tree_bean->setValorMinimo(0);
             $tree_bean->setResponsableId($user->getId());
             $tree_bean->setEmailResponsable($user->getEmail());
             $tree_bean->setProduccion('not');
             $tree_bean->save();
             $tree_user_bean = new TreeUser();
             $tree_user_bean->setUserId($tree_bean->getUserId());
             $tree_user_bean->setTreeId($tree_bean->getId());
             $tree_user_bean->save();
             $conn->commit();
             $this->message = 'success';
             $this->treepk = 't-' . $tree_bean->getId();
             $this->treeId = $tree_bean->getId();
             $this->title = $tree_bean->getName();
             $this->type = $typeSave;
             $this->group = $grupoBean;
             return sfView::SUCCESS;
         } catch (Exception $e) {
             $this->message = $e->getMessage();
             $conn->rollBack();
             return sfView::ERROR;
         }
     } else {
         $this->message = 'session expired';
         return sfView::ERROR;
     }
 }
 public function executeNew_contact_group(sfWebRequest $request)
 {
     $request->setRequestFormat('json');
     $id_group = $request->getParameter('groupId');
     $email = $request->getParameter('email');
     $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null);
     if ($user != null) {
         $rsp = $this->evaluar_solicitud($email, $id_group, $user);
         if ($rsp['success']) {
             $criterio = new Criteria();
             $criterio->add(DetalleGrupoTrabajoScPeer::EMAIL, $email);
             $criterio->add(DetalleGrupoTrabajoScPeer::GRUPO_ID, $id_group);
             $cantidad = DetalleGrupoTrabajoScPeer::doCount($criterio);
             if ($cantidad <= 0) {
                 $newDetalle = new DetalleGrupoTrabajoSc();
                 $newDetalle->setEmail($email);
                 $newDetalle->setGrupoId($id_group);
                 //si ya esta en otro de mis grupos grupo
                 // autocritica...si ya esta en otro grupo no interesa
                 // se le tiene que mandar otra solicitud!
                 /* $criteria_b = new Criteria();
                    $criteria_b->add(DetalleGrupoTrabajoScPeer::EMAIL,$email);
                    $criteria_b->add(GrupoTrabajoScPeer::OWNER_ID,$user->getId());
                    $criteria_b->addJoin(GrupoTrabajoScPeer::ID, DetalleGrupoTrabajoScPeer::GRUPO_ID);
                    $count =  DetalleGrupoTrabajoScPeer::doCount($criteria_b);
                    
                    if($count>0){
                       $obj = DetalleGrupoTrabajoScPeer::doSelectOne($criteria_b);
                       if($obj->getUserId()!=null){
                         $newDetalle->setUserId($obj->getUserId());
                       }
                    }*/
                 $newDetalle->save();
                 return sfView::SUCCESS;
             } else {
                 $this->message = 'cantidad';
                 return sfView::ERROR;
             }
         } else {
             $this->message = '$rsp->false';
             return sfView::ERROR;
         }
     } else {
         $this->message = 'session';
         return sfView::ERROR;
     }
 }
 /**
  * Adds an object to the instance pool.
  *
  * Propel keeps cached copies of objects in an instance pool when they are retrieved
  * from the database.  In some cases -- especially when you override doSelect*()
  * methods in your stub classes -- you may need to explicitly add objects
  * to the cache in order to ensure that the same objects are always returned by doSelect*()
  * and retrieveByPK*() calls.
  *
  * @param      DetalleGrupoTrabajoSc $value A DetalleGrupoTrabajoSc object.
  * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
  */
 public static function addInstanceToPool(DetalleGrupoTrabajoSc $obj, $key = null)
 {
     if (Propel::isInstancePoolingEnabled()) {
         if ($key === null) {
             $key = (string) $obj->getId();
         }
         // if key === null
         self::$instances[$key] = $obj;
     }
 }