Example #1
0
        /// <summary>
        ///     Método que obtiene las canciones pertenecientes a las listas de reproducción del usuario
        /// </summary>
        /// <returns></returns>
        private async Task ObtenerCancionesDeListasReproduccion()
        {
            if (_listasReproduccion != null)
            {
                var ocurrioExcepcion = false;
                ListaReproduccionListView.Visibility = Visibility.Visible;
                foreach (var playlist in _listasReproduccion)
                {
                    try
                    {
                        SinConexionGrid.Visibility           = Visibility.Hidden;
                        ListaReproduccionListView.Visibility = Visibility.Visible;
                        AgregarPlaylistButton.Visibility     = Visibility.Visible;
                        playlist.canciones = await CancionClient.GetSongsFromPlaylist(playlist.id);

                        ListaReproduccionListView.ItemsSource = null;
                        ListaReproduccionListView.ItemsSource = _listasReproduccion;
                    }
                    catch (HttpRequestException)
                    {
                        SinConexionGrid.Visibility           = Visibility.Visible;
                        ListaReproduccionListView.Visibility = Visibility.Hidden;
                        AgregarPlaylistButton.Visibility     = Visibility.Hidden;
                        break;
                    }
                }
        /// <summary>
        ///     Método que recupera las canciones que pertenecen a una determinada ListaReproduccion
        /// </summary>
        /// <param name="idListaReproduccion">Identificador de lista de reproducción seleccionada</param>
        /// <returns></returns>
        private async Task ObtenerCancionesDeListasReproduccion(int idListaReproduccion)
        {
            var ocurrioExcepcion = false;

            try
            {
                SinConexionGrid.Visibility   = Visibility.Hidden;
                CancionesListView.Visibility = Visibility.Visible;
                _listaReproduccion.canciones = await CancionClient.GetSongsFromPlaylist(idListaReproduccion);

                CancionesListView.ItemsSource = _listaReproduccion.canciones;
            }
            catch (HttpRequestException)
            {
                SinConexionGrid.Visibility   = Visibility.Visible;
                CancionesListView.Visibility = Visibility.Hidden;
            }
            catch (Exception ex)
            {
                ocurrioExcepcion = true;
                new MensajeEmergente().MostrarMensajeError(ex.Message);
            }

            if (ocurrioExcepcion)
            {
                new MensajeEmergente().MostrarMensajeAdvertencia("No se pudieron recuperar algunas canciones");
            }
        }
        /// <summary>
        ///     Manda a reproducir la radio de la cancion seleccionada
        /// </summary>
        /// <param name="sender">El objeto que invoco el eventp</param>
        /// <param name="e">El evento invocado</param>
        private async void OnClickEmpezarRadio(object sender, RoutedEventArgs e)
        {
            var            idCancion = (int)((Button)sender).Tag;
            List <Cancion> radio;

            try
            {
                radio = await CancionClient.GetRadioFromSong(idCancion);

                SinConexionGrid.Visibility = Visibility.Hidden;
                AlbumsListView.Visibility  = Visibility.Visible;
                Player.Player.GetPlayer().AñadirRadioAListaDeReproduccion(radio);
            }
            catch (HttpRequestException)
            {
                SinConexionGrid.Visibility = Visibility.Visible;
                AlbumsListView.Visibility  = Visibility.Hidden;
            }
            catch (Exception ex)
            {
                if (ex.Message == "AuntenticacionFallida")
                {
                    new MensajeEmergente().MostrarMensajeError("No se puede autentican con las credenciales " +
                                                               "proporcionadas, se cerra la sesion");
                    MainWindow.OcultarMenu();
                    MainWindow.OcultarReproductor();
                    NavigationService?.Navigate(new IniciarSesion());
                }
                else
                {
                    new MensajeEmergente().MostrarMensajeError(ex.Message);
                }
            }
        }
        private async void OnClickIniciarRadio(object sender, RoutedEventArgs e)
        {
            if (_cancionActual != null)
            {
                List <Cancion> radio;
                try
                {
                    MostrarElementosSinConexion();
                    radio = await CancionClient.GetRadioFromSong(_cancionActual.id);

                    Player.Player.GetPlayer().AñadirRadioAListaDeReproduccion(radio);
                }
                catch (HttpRequestException)
                {
                    OcultarElementosSinConexion();
                }
                catch (Exception ex)
                {
                    if (ex.Message == "AuntenticacionFallida")
                    {
                        new MensajeEmergente().MostrarMensajeError("No se puede autentican con las credenciales " +
                                                                   "proporcionadas, se cerra la sesion");
                        OnClickCerrarSesion(null, null);
                        PantallaFrame.Navigate(new IniciarSesion());
                    }
                    else
                    {
                        new MensajeEmergente().MostrarMensajeError("Ocurrio un error y no se puede iniciar la radio");
                    }
                }
            }
        }
        /// <summary>
        ///     Registra la informacion de una cancion y sube la cancion al servidor
        /// </summary>
        private async void RegistrarNuevaCancion()
        {
            if (ValidarNombre() && ValidarGeneroSeleccionado() && ValidarCancionSeleccionada())
            {
                DeshabilitarElementosPantalla();
                var cancionARegistrar = CrearCancion();
                try
                {
                    _cancionRegistrada = await CancionClient.RegisterSong(_idAlbum, cancionARegistrar);

                    try
                    {
                        var clienteCanciones = new SongsClient();
                        clienteCanciones.OnPorcentageUp     += SubirPorcentajeAvanza;
                        clienteCanciones.OnUploadTerminated += TerminarSubirCancion;
                        await clienteCanciones.UploadSong(ArchivoSeleccionadoText.Text, _cancionRegistrada.id, false);
                    }
                    catch (RpcException)
                    {
                        new MensajeEmergente().MostrarMensajeError("No se pudo subir la cancion, la puede volver a " +
                                                                   "subir mas adelante");
                        Close();
                    }
                    catch (Exception ex)
                    {
                        if (ex.Message == "AuntenticacionFallida")
                        {
                            new MensajeEmergente().MostrarMensajeError("No se pudo autenticar con el usuario con el " +
                                                                       "cual inicio sesión, se guardo la informacion de la " +
                                                                       "cancion pero no el archivo");
                        }
                        else
                        {
                            new MensajeEmergente().MostrarMensajeError(ex.Message);
                        }
                        Close();
                    }
                }
                catch (HttpRequestException)
                {
                    new MensajeEmergente().MostrarMensajeError("No se puede conectar al servidor, porfavor verifique " +
                                                               "su conexión a internet");
                }
                catch (Exception ex)
                {
                    if (ex.Message == "AuntenticacionFallida")
                    {
                        new MensajeEmergente().MostrarMensajeError("No se pudo autenticar con el usuario con el " +
                                                                   "cual inicio sesión, no se ha guardado la canción");
                        Close();
                    }
                    else
                    {
                        new MensajeEmergente().MostrarMensajeError(ex.Message);
                    }
                }

                HabilitarElementosPantalla();
            }
        }
        /// <summary>
        ///     Recupera los generos de la cancion y marca como seleccionadas los generos que tenga la cancion
        /// </summary>
        private async Task <List <Genero> > InicializarEstadoCheckBox(List <Genero> generos)
        {
            _cancionAEditar.generos = await CancionClient.GetGenerosFromCancion(_cancionAEditar.id, _idAlbum);

            foreach (var genero in _cancionAEditar.generos)
            {
                var index = generos?.FindIndex(g => g.id == genero.id);
                if (index != null)
                {
                    generos[(int)index].seleccionado = true;
                    _listaGeneros.Add(generos[(int)index]);
                }
            }

            return(generos);
        }
        /// <summary>
        ///     Busca las canciones que coincide con el texto introducido en el TextBox Buscar
        /// </summary>
        /// <param name="sender">El objeto que invoco el evento</param>
        /// <param name="e">El evento invocado</param>
        private async void BuscarCancionTextBox(object sender, KeyEventArgs e)
        {
            var cadenaBusqueda = buscarTextBox.Text;

            if (cadenaBusqueda != "")
            {
                try
                {
                    _canciones = await CancionClient.SearchCanciones(cadenaBusqueda);

                    CancionesListView.ItemsSource = _canciones;
                    SinConexionGrid.Visibility    = Visibility.Hidden;
                    CancionesListView.Visibility  = Visibility.Visible;
                    ColocarImagenesCanciones();
                }
                catch (HttpRequestException)
                {
                    CancionesListView.Visibility = Visibility.Hidden;
                    SinConexionGrid.Visibility   = Visibility.Visible;
                }
            }