/** * Se encarga de actualizar los datos del usuario que recibe, en la * base de datos. */ void Servicio::administrarPerfil() { string nombreUsuario = this->getParametro(keyNombre, keyDefault); string estadoDeConexion = this->getParametro(keyEstadoDeConexion, keyDefault); string fotoDePerfil = this->getParametro(keyFotoDePerfil, keyDefault); bool estado = StringUtil::toBoolean(estadoDeConexion); string localizacion = this->getParametro(keyLocalizacion, keyDefault); string password = this->getParametro(keyPassword, keyDefault); Usuario* user = this->obtenerUsuario(); string token = this->getParametro(keyTokenSesion, keyDefault); if (user->getId() != keyIdUsuarioNoEncontrado) { if (user->getToken() == token) { user->setNombre(nombreUsuario); user->setEstadoConexion(estado); user->setFotoDePerfil(fotoDePerfil); user->setLocalizacion(localizacion); user->setPassword(password); user->persistir(); Loger::getLoger()->info( "Se modificaron los datos del usuario " + user->getNombre() + " correctamente."); this->responder( "Se modificaron los datos del usuario " + user->getNombre() + " correctamente. Token:" + user->getToken(), true); } else { Loger::getLoger()->warn( "El usuario " + user->getNombre() + " no posee un token de session correcto"); this->responder( "El usuario " + user->getNombre() + " no posee un token de session correcto", false); } } else { Loger::getLoger()->warn( "El usuario " + user->getNombre() + " no se encuentra registrado en el sistema"); this->responder( "El usuario " + user->getNombre() + " no se encuentra registrado en el sistema", false); } Loger::getLoger()->guardarEstado(); delete user; }
/** * Se encarga de calcular en que lugar se encuentra el cliente * en base a sus coordenadas geográficas y los lugares precargados. * */ void Servicio::checkIn() { Json::Value coordenadas; string latitud = this->getParametro(keyLatitud, keyDefault); string longitud = this->getParametro(keyLongitud, keyDefault); coordenadas["latitud"] = atof(latitud.c_str()); coordenadas["longitud"] = atof(longitud.c_str()); Usuario* usuario = this->obtenerUsuario(); if (usuario->getId() != keyIdUsuarioNoEncontrado) { string localizacion = Localizacion::calcularUbicacion(coordenadas)+" "+fechaYhoraActual(); usuario->setLocalizacion(localizacion); usuario->persistir(); this->responder(localizacion, true); } else { this->responder("el usuario no existe.", false); } }
/** * Devuelve los datos correspondientes al usuario con telefono igual al * recibido. */ void Servicio::consultarUsuarioOnline() { string telefono = this->getParametroIdMetodoGET(urlBaseUsuario); Usuario* user = Usuario::obtenerPorTelefono(telefono); string renovarToken = this->getParametro(keyRenovarToken, keyDefault); bool renovar = StringUtil::toBoolean(renovarToken); if (user->getId() != keyIdUsuarioNoEncontrado) { user->registrarUltimaConexion(); Json::Value respuesta; respuesta[keyNombre] = user->getNombre(); respuesta[keyPassword] = user->getPassword(); if(renovar){ respuesta[keyTokenSesion] = user->calcularTokenDeSesion(); }else{ respuesta[keyTokenSesion] = user->getToken(); } respuesta[keyEstadoDeConexion] = StringUtil::toString( user->getEstadoConexion()); respuesta[keyFotoDePerfil] = user->getFotoDePerfil(); respuesta["idUsuario"] = user->getId(); respuesta[keyLocalizacion] = user->getLocalizacion(); user->persistir(); this->responder(respuesta.toStyledString(), true); Loger::getLoger()->info( "Consulta del usuario " + user->getNombre() + " exitosa."); } else { string msj = "No se pudo obtener el estado del usuario con numero: " + this->getParametro(keyTelefono, keyDefault) + " ya que no se encuentra registrado en el sistema."; Loger::getLoger()->warn(msj); this->responder(msj, false); } Loger::getLoger()->guardarEstado(); delete user; }
/** * Registra un usuario en el sistema * */ void Servicio::registrarUsuario() { Usuario* user = this->obtenerUsuario(); if (user->getId() != keyIdUsuarioNoEncontrado) { //El usuario ya existe. Devuelvo error Loger::getLoger()->warn( "Se intento registrar un usuario ya existente. Id: " + user->getId()); this->responder("El usuario ya existe", false); } else { string nombre = this->getParametro(keyNombre, keyDefault); string fotoPerfil = this->getParametro(keyFotoDePerfil, keyDefault); string telefono = this->getParametro(keyTelefono, keyDefault); string password = this->getParametro(keyPassword, keyDefault); Usuario* user = new Usuario(nombre, telefono, password); user->persistir(); this->responder("Usuario registrado correctamente", true); Loger::getLoger()->info( "Se registro el usuario con Id: " + user->getId()); delete user; } }