/// <summary> /// Inicia sesion con las credenciales indicadas /// </summary> /// <param name="login">El objeto que contiene las credenciales del usuario</param> /// <param name="desdeLocal"> /// Inidica si se iniciara sesion con las credenciales proporcionadas por el usuario /// o con credenciales almacenadas /// </param> /// <returns>Task</returns> private async Task InciarSesion(Login login, bool desdeLocal) { try { await ApiServiceLogin.GetServiceLogin().Login(login); var usuario = await UsuarioClient.GetUser(); usuario.login = login; ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().InicioSesionUsuario(usuario); NavigationService?.Navigate(new Canciones()); } catch (HttpRequestException) { if (!desdeLocal) { new MensajeEmergente().MostrarMensajeError("No se puede conectar al servidor"); } else { NavigationService?.Navigate(new Canciones()); } } catch (Exception exception) { if (exception.Message == "AuntenticacionFallida") { new MensajeEmergente().MostrarMensajeError("No se pudo iniciar sesión, intentelo nuevamente"); } new MensajeEmergente().MostrarMensajeAdvertencia(exception.Message); } }
/// <summary> /// Actualiza la lista de canciones pendientes por descargar del usuario /// </summary> private void ActualizarCancionesPendientesDeUsuario() { var usuario = ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado(); usuario.canciones_pendientes_descarga = _colaCancionesSinConexion.ToList(); OnActualizacionElementosCola?.Invoke(); }
/// <summary> /// Se encarga de almacenar la cancion cuando ya se termino de descargar y de agregarla a la lista de canciones /// descargadas /// </summary> private void TerminarDeRecibirCancion() { _songsClient.OnInitialRecivedSong -= RecibirCancion; _songsClient.OnSongChunkRived -= RecibirChunk; _songsClient.OnTerminatedRecivedSong -= TerminarDeRecibirCancion; _estadoManjadorDeCanciones = EstadoManjadorDeCanciones.Guardando; var usuarioActual = ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado(); var ruta = CrearRutaParaGuardarCancion(usuarioActual.nombre_usuario, _seEncuentraDescargando.id, _extensionCancion); var seGuardo = GuardarCancion(_bufferCancion, ruta); _bufferCancion.Dispose(); if (seGuardo) { _seEncuentraDescargando.ruta_cancion = ruta; _seEncuentraDescargando.estado_descarga = CancionSinConexion.EstadoDescarga.Descargado; usuarioActual.canciones_sin_conexion.Add(_seEncuentraDescargando); } else { _colaCancionesSinConexion.Enqueue(_seEncuentraDescargando); _seEncuentraDescargando.estado_descarga = CancionSinConexion.EstadoDescarga.Error; } _seEncuentraDescargando = null; ActualizarCancionesPendientesDeUsuario(); IniciarDescarga(); }
/// <summary> /// Revisa si el manejador de archivos no esta almancenando una cancion y guarda la informacion de los usuarios /// </summary> /// <param name="sender">El objeto que invoco el evento</param> /// <param name="e">El evento invocado</param> private void OnClose(object sender, EventArgs e) { while (!ManejadorCancionesSinConexion.GetManejadorDeCancionesSinConexion().SePuedeCerrarLaApp()) { Thread.Sleep(1000); } ManejadorCancionesSinConexion.GetManejadorDeCancionesSinConexion().TerminarDeDescargarCanciones(); ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().GuardarInformacionUsuarios(); }
/// <summary> /// Obtiene el usuario que tiene la sesion inciada /// </summary> /// <returns>El objeto para logearse con el usuario que tiene la sesion iniciada</returns> private Login ObtenerUsuarioLogeado() { Login loginUsuario = null; var usuarioLogeado = ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado(); if (usuarioLogeado != null) { loginUsuario = usuarioLogeado.login; } return(loginUsuario); }
/// <summary> /// Muestra el item de mi perfil /// </summary> public static void MostrarElementoMiPerfil() { if (_mainWindow != null) { if (ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado() != null) { if (ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado() .tipo_usuario == TipoUsuario.CreadorDeContenido) { _mainWindow.MiPerfilItem.Visibility = Visibility.Visible; } } } }
public void OnClickCerrarSesion(object sender, RoutedEventArgs routedEventArgs) { LimpiarReproductor(); LimpiarElementosReproductor(); while (!ManejadorCancionesSinConexion.GetManejadorDeCancionesSinConexion().SePuedeCerrarLaApp()) { Thread.Sleep(1000); } ManejadorCancionesSinConexion.GetManejadorDeCancionesSinConexion().TerminarDeDescargarCanciones(); ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().CerrarSesionUsuario(); OcultarMenu(); OcultarReproductor(); PantallaFrame.Navigate(new IniciarSesion()); }
/// <summary> /// Recupera el creador de contenido del usuario logeado /// </summary> /// <returns>Task</returns> private async Task RecuperarCreadorDeContenido() { if (ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado() != null) { try { _creadorContenido = await CreadorContenidoClient.GetCreadorContenidoFromActualUser(); DesactivarModoSinConexion(); } catch (HttpRequestException) { ActivarModoSinConexion(); } }
/// <summary> /// Elimina la cancion de las canciones sin conexion /// </summary> /// <param name="sender">El objeto que invoco el evento</param> /// <param name="e">El evento invocado</param> private void OnClickEliminarCancion(object sender, RoutedEventArgs e) { var idCancion = (int)((Button)sender).Tag; var cancion = BuscarCancionSinConexion(idCancion); if (cancion != null) { if (File.Exists(cancion.ruta_cancion)) { File.Delete(cancion.ruta_cancion); } var usuario = ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado(); usuario.canciones_sin_conexion.Remove(cancion); ObtenerCancionesSinConexion(); } }
private ManejadorCancionesSinConexion() { var usuario = ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado(); if (usuario != null) { var cancionesPendientes = usuario.canciones_pendientes_descarga; foreach (var cancionSinConexion in cancionesPendientes) { _colaCancionesSinConexion.Enqueue(cancionSinConexion); } if (_colaCancionesSinConexion.Count > 0) { IniciarDescarga(); } } }
/// <summary> /// Valida si ya existe en las canciones sin conexion alguna cancion con el mismo id /// </summary> /// <param name="idCancion">El id de la cancion a validar si existe</param> /// <returns>True si ya se encuentra en la lista de las canciones sin conexion, False si no</returns> private bool SeEncuentraEnCancionesSinConexion(int idCancion) { var seEncuentra = false; var usuario = ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado(); if (usuario.canciones_sin_conexion != null) { foreach (var cancionSinConexion in usuario.canciones_sin_conexion) { if (cancionSinConexion.id == idCancion) { seEncuentra = true; break; } } } return(seEncuentra); }
/// <summary> /// Recupera las canciones sin conexion del usuario y las pendientes de descarga y las coloca en los text view /// </summary> private void ObtenerCancionesSinConexion() { var usuarioActual = ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado(); var cancionDescargando = ManejadorCancionesSinConexion.GetManejadorDeCancionesSinConexion() .GetCancionDescargando(); _cancionesPendientes = new List <CancionSinConexion>(); if (cancionDescargando != null) { _cancionesPendientes.Add(cancionDescargando); } _cancionesPendientes.AddRange(usuarioActual.canciones_pendientes_descarga); _cancionesDescargadas = usuarioActual.canciones_sin_conexion; ListViewCancionesDescargadas.ItemsSource = null; ListViewCancionesDescargadas.ItemsSource = _cancionesDescargadas; ListViewCancionesSinConexionPendientes.ItemsSource = null; ListViewCancionesSinConexionPendientes.ItemsSource = _cancionesPendientes; ColocarInformacionCanciones(); }
/// <summary> /// Coloca todas las canciones pendientes de descarga o descargando en la lista de canciones pendientes del usuario /// </summary> public void TerminarDeDescargarCanciones() { var usuario = ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado(); if (usuario != null) { if (_seEncuentraDescargando != null) { _colaCancionesSinConexion.Enqueue(_seEncuentraDescargando); } usuario.canciones_pendientes_descarga = _colaCancionesSinConexion.ToList(); if (_songsClient != null) { _songsClient.OnInitialRecivedSong -= RecibirCancion; _songsClient.OnSongChunkRived -= RecibirChunk; _songsClient.OnTerminatedRecivedSong -= TerminarDeRecibirCancion; _songsClient = new SongsClient(); } _extensionCancion = ""; _estadoManjadorDeCanciones = EstadoManjadorDeCanciones.Detenido; _colaCancionesSinConexion.Clear(); _seEncuentraDescargando = null; } }
/// <summary> /// Registra un nuevo usuario /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void OnClickRegistrarButton(object sender, RoutedEventArgs e) { if (ValidarTextBoxNombre() && ValidarTextBoxCorreo() && ValidarTextBoxNombreUsuario() && ValidarTextBoxContraseña()) { cancelarButton.IsEnabled = false; registrarUsuarioButton.IsEnabled = false; var usuario = CrearUsuario(); var usuarioRegistrado = false; try { await UsuarioClient.RegisterUsuario(usuario); usuarioRegistrado = true; var usuarioLogin = new Login { Password = usuario.contrasena, User = usuario.nombre_usuario }; await ApiServiceLogin.GetServiceLogin().Login(usuarioLogin); var usuarioLogeado = await UsuarioClient.GetUser(); usuarioLogeado.login = usuarioLogin; ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().InicioSesionUsuario(usuarioLogeado); if (_rutaImagen != "") { var clientePortadas = new CoversClient(); clientePortadas.UploadUserCover(_rutaImagen); } } catch (HttpRequestException) { new MensajeEmergente().MostrarMensajeError("No se puede conectar al servidor"); } catch (RpcException) { new MensajeEmergente().MostrarMensajeError( "No se pudo guardar la imagen de portada, puede subirla " + "mas adelante"); } catch (Exception exception) { new MensajeEmergente().MostrarMensajeAdvertencia(exception.Message); } if (usuarioRegistrado) { if (usuario.tipo_usuario == TipoUsuario.CreadorDeContenido) { NavigationService?.Navigate(new RegistrarCreadorContenido()); } else { NavigationService?.Navigate(new Canciones()); } } cancelarButton.IsEnabled = true; registrarUsuarioButton.IsEnabled = true; } }