/// <summary>
        ///     Registra una cancion personal en el servidor
        /// </summary>
        /// <param name="cancionPersonal">La cancion personal a registrar</param>
        /// <returns>La cancion personal registrada</returns>
        /// <exception cref="Exception">Alguna excepcion que pueda ocurrir al guardar la cancion</exception>
        public static async Task <CancionPersonal> RegisterSong(CancionPersonal cancionPersonal)
        {
            var path = "/v1/biblioteca-personal/canciones";

            for (var i = 1; i <= CantidadIntentos; i++)
            {
                using (var response = await ApiClient.GetApiClient().PostAsJsonAsync(path, cancionPersonal))
                {
                    if (response.StatusCode == HttpStatusCode.Created)
                    {
                        var cancionRegistered = await response.Content.ReadAsAsync <CancionPersonal>();

                        return(cancionRegistered);
                    }

                    if (response.StatusCode == HttpStatusCode.Unauthorized)
                    {
                        await ApiServiceLogin.GetServiceLogin().ReLogin();
                    }
                    else
                    {
                        ErrorGeneral error;
                        error = await response.Content.ReadAsAsync <ErrorGeneral>();

                        throw new Exception(error.mensaje);
                    }
                }
            }

            throw new Exception("AuntenticacionFallida");
        }
示例#2
0
        /// <summary>
        ///     Regresa la cancion personal en la cola de reproduccion
        /// </summary>
        /// <param name="anterior">
        ///     Inidica si la cancion personal a recuperar es la anterior en la cola de
        ///     reproduccion o es la siguiente
        /// </param>
        /// <returns>Una CancionPersonal</returns>
        public CancionPersonal ObtenerCancionPersonal(bool anterior)
        {
            CancionPersonal cancionPersonal = null;

            if (anterior)
            {
                _posicionReproduccion -= 1;
                var cancionAnterior = _colaReproduccion.Find(ec => ec.Posicion == _posicionReproduccion);
                if (cancionAnterior != null && cancionAnterior.CancionPersonal != null)
                {
                    cancionPersonal = cancionAnterior.CancionPersonal;
                }
            }
            else
            {
                _posicionReproduccion += 1;
                var proximaCancion = _colaReproduccion.Find(ec => ec.Posicion == _posicionReproduccion);
                if (proximaCancion != null && proximaCancion.CancionPersonal != null)
                {
                    cancionPersonal = proximaCancion.CancionPersonal;
                }
            }

            return(cancionPersonal);
        }
示例#3
0
 /// <summary>
 ///     Empieza la reproduccion de una cancion personal sin afectar la cola de reproduccion
 /// </summary>
 /// <param name="cancionPersonal">La cancion personal a reproducir</param>
 public void EmpezarAReproducirCancionPersonal(CancionPersonal cancionPersonal)
 {
     OnActualizacionCola?.Invoke(_colaDeReproduccion.ObtenerProximosElementosEnCola());
     OnIniciaReproduccionCancionPersonal?.Invoke(cancionPersonal);
     OnCambioEstadoReproduccion?.Invoke(true);
     _estadoReproductor = EstadoReproductor.Reproduciendo;
     _duracionTotalDeCancionEnReproduccion = cancionPersonal.duracion;
     ReproducirCancion(cancionPersonal.id, true);
 }
        /// <summary>
        ///     Crea una cancion personal a partir de los elementos de la pantalla
        /// </summary>
        /// <returns>La CancionPersonal creada</returns>
        private CancionPersonal CrearCancionPersonal()
        {
            var cancion = new CancionPersonal
            {
                nombre   = nombreCancionTextbox.Text,
                album    = albumCancionTextbox.Text,
                artistas = artistasCancionTextbox.Text
            };

            return(cancion);
        }
示例#5
0
 /// <summary>
 ///     Agrega una cancion personal a la cola de reproducción
 /// </summary>
 /// <param name="cancionPersonal">La cancion perosnal a agregar</param>
 public void AgregarCancionPersonalACola(CancionPersonal cancionPersonal)
 {
     if (!ValidarLaCancionPersonalSeEncuentraEnCola(cancionPersonal.id))
     {
         _posicionCola += 1;
         var elementoCola = new ElementoCola
         {
             CancionPersonal = cancionPersonal,
             YaSeReproducio  = false,
             Posicion        = _posicionCola
         };
         _colaReproduccion.Add(elementoCola);
     }
 }
 /// <summary>
 ///     Coloca la informacion de una cancion personal en los elementos del reproductor
 /// </summary>
 /// <param name="cancionPersonal">La cancion personal a colocar su informacion</param>
 private void ColocarElementosCancionPersonal(CancionPersonal cancionPersonal)
 {
     if (cancionPersonal != null)
     {
         _cancionActual   = null;
         _idCancionActual = 0;
         OcultarElementosSinConexion();
         tiempoActualTextBlock.Text  = "00:00";
         duracionSlider.Value        = 0;
         duracionSlider.Maximum      = cancionPersonal.duracion;
         nombreCancionTextBlock.Text = cancionPersonal.nombre;
         artistaCacionTextBlock.Text = cancionPersonal.artistas;
         coverImage.Source           = (BitmapImage)FindResource("CancionPersonal");
         tiempoTotalTextBlock.Text   = cancionPersonal.duracion_string;
     }
 }
示例#7
0
 /// <summary>
 ///     Añade una cancion personal a la cola de reproduccion
 /// </summary>
 /// <param name="cancionPersonal">La cancion perosnal a agregar</param>
 public void AñadirCancionPersonalAColaDeReproduccion(CancionPersonal cancionPersonal)
 {
     _colaDeReproduccion.AgregarCancionPersonalACola(cancionPersonal);
 }
        /// <summary>
        ///     Registra la informacion de una cancion personal y sube la cancion al servidor
        /// </summary>
        private async void RegistrarNuevaCancion()
        {
            if (ValidarNombre() && ValidarArtistas() && ValidarAlbum() && ValidarCancionSeleccionada())
            {
                DeshabilitarElementosPantalla();
                var cancionARegistrar = CrearCancionPersonal();
                try
                {
                    _cancionRegistrada = await BibliotecaPersonalClient.RegisterSong(cancionARegistrar);

                    try
                    {
                        var clienteCanciones = new SongsClient();
                        clienteCanciones.OnPorcentageUp     += SubirPorcentajeAvanza;
                        clienteCanciones.OnUploadTerminated += TerminarSubirCancion;
                        await clienteCanciones.UploadSong(ArchivoSeleccionadoText.Text, _cancionRegistrada.id, true);
                    }
                    catch (RpcException)
                    {
                        new MensajeEmergente().MostrarMensajeError(
                            "No se pudo subir la cancion personal, 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();
            }
        }