Ejemplo n.º 1
0
        public RelacionarInterpretesAAlbumSalida RelacionarInterpretesAAlbum(RelacionarInterpretesAAlbumEntrada entrada)
        {
            var salida = new RelacionarInterpretesAAlbumSalida();

            var album = _gestorPersistencia.TraerAlbum(entrada.AlbumId);

            if (album == null)
            {
                return(SalidaBase.Fallo(salida, string.Format(Cadenas.album_id_no_encontrado, entrada.AlbumId)));
            }

            if (entrada.Interpretes == null || entrada.Interpretes.Count == 0)
            {
                return(SalidaBase.Fallo(salida, Cadenas.album_falta_interprete));
            }

            int interpreteError = int.MinValue;
            var interpretes     = TraerInterpretes(entrada.Interpretes, (noEncontrado => interpreteError = noEncontrado));

            if (interpreteError != int.MinValue)
            {
                return(SalidaBase.Fallo(salida, string.Format(Cadenas.interprete_id_no_encontrado, interpreteError)));
            }

            if (entrada.Accion == RelacionarInterpretesAAlbumEntrada.Acciones.Agregar)
            {
                var relaciones =
                    interpretes.Select(i => _gestorPersistencia.TraerAlbumInterprete(album.Id, i.Id)).ToList();
                foreach (var relacion in relaciones)
                {
                    _gestorPersistencia.Guardar(relacion);
                }
            }
            else if (entrada.Accion == RelacionarInterpretesAAlbumEntrada.Acciones.Eliminar)
            {
                var relaciones = interpretes.Select(i => _gestorPersistencia.TraerAlbumInterprete(album.Id, i.Id));
                foreach (var relacion in relaciones)
                {
                    _gestorPersistencia.EliminarAlbumInterprete(relacion.InterpreteId, relacion.AlbumId);
                }
            }

            return(SalidaBase.Exito(salida));
        }
Ejemplo n.º 2
0
        //
        // POST: /Albumes/DesasociarInterprete
        public ActionResult DesasociarInterprete(int albumId, int interpreteId)
        {
            var entrada = new RelacionarInterpretesAAlbumEntrada
            {
                Accion      = RelacionarInterpretesAAlbumEntrada.Acciones.Eliminar,
                AlbumId     = albumId,
                Interpretes = new List <int> {
                    interpreteId
                }
            };
            RelacionarInterpretesAAlbumSalida salida = _gestorDominio.RelacionarInterpretesAAlbum(entrada);

            if (salida != SalidaBase.Resultados.Exito)
            {
                PasarMensaje(salida.Mensaje, "msj-error");
            }

            return(RedirectToAction("Editar", "Albumes", new { id = albumId }));
        }