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)); }
// // 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 })); }