public static async Task <Album> IndexNewAlbumAsync( string albumIdentifier, IRepositoryManager repositoryManager, IMapper mapper, SpotifyAPICredentials spotifyAPICredentials) { try { var spotifyAlbumDownloadModel = await FetchAlbumForIndexAsync(albumIdentifier, spotifyAPICredentials).ConfigureAwait(false); var artists = await ArtistModel.CreateOrFetchArtistAsync(spotifyAlbumDownloadModel.Artists, repositoryManager, mapper); var albumArtists = artists.Select(a => a.Id); var releaseDate = ReleaseDateParsingHelper.ParseReleaseDateToDateTime( spotifyAlbumDownloadModel.Album.ReleaseDate, spotifyAlbumDownloadModel.Album.ReleaseDatePrecision); var newAlbum = new Album { SpotifyId = spotifyAlbumDownloadModel.Album.Id, Name = spotifyAlbumDownloadModel.Album.Name, ReleaseDate = releaseDate, Type = (byte)MapAlbumTypeToEnum(spotifyAlbumDownloadModel.Album.Type), CreatedOn = DateTime.Now, LastUpdatedOn = DateTime.Now }; newAlbum.AlbumArtists = MapArtistsToAlbumArtists(albumArtists); newAlbum.AlbumImages = mapper.Map <List <AlbumImage> >(spotifyAlbumDownloadModel.Album.Images); await repositoryManager.AlbumRepository.AddAsync(newAlbum); /*var newAlbumTracks = await TrackModel.IndexNewAlbumTracksAsync( * newAlbum.Id, * spotifyAlbumDownloadModel.Album, * artists, * repositoryManager, * mapper, * spotifyAPICredentials); * * await repositoryManager.TrackRepository.AddRangeAsync(newAlbumTracks);*/ return(newAlbum); } catch (Exception) { throw; } }
public SpotifyApiModelToEntityProfile() { CreateMap <FullArtist, ArtistDownloadModel>() .ForMember(dest => dest.Id, src => src.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, src => src.MapFrom(src => src.Name)) .ForMember(dest => dest.Followers, src => src.MapFrom(src => src.Followers.Total)) .ForMember(dest => dest.ArtistImages, src => src.MapFrom(src => src.Images)) .ForMember(dest => dest.ArtistGenres, opt => opt.ConvertUsing(new GenreConverter(), src => src.Genres)); CreateMap <SimpleArtist, ArtistDownloadModel>() .ForMember(dest => dest.Id, src => src.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, src => src.MapFrom(src => src.Name)); CreateMap <FullAlbum, AlbumDownloadModel>() .ForMember(dest => dest.Id, src => src.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, src => src.MapFrom(src => src.Name)) .ForMember(dest => dest.ReleaseDate, src => src.MapFrom(src => ReleaseDateParsingHelper.ParseReleaseDateToDateTime(src.ReleaseDate, src.ReleaseDatePrecision))) .ForMember(dest => dest.AlbumImages, src => src.MapFrom(src => src.Images)) .ForMember(dest => dest.Artists, src => src.MapFrom(src => src.Artists)) .ForMember(dest => dest.Tracks, src => src.MapFrom(src => src.Tracks.Items)); CreateMap <AlbumResponseModel, AlbumDownloadModel>() .ForMember(dest => dest.Id, src => src.MapFrom(src => src.Album.Id)) .ForMember(dest => dest.Name, src => src.MapFrom(src => src.Album.Name)) .ForMember(dest => dest.ReleaseDate, src => src.MapFrom(src => ReleaseDateParsingHelper.ParseReleaseDateToDateTime(src.Album.ReleaseDate, src.Album.ReleaseDatePrecision))) .ForMember(dest => dest.AlbumImages, src => src.MapFrom(src => src.Album.Images)) .ForMember(dest => dest.Artists, src => src.MapFrom(src => src.Artists)) .ForMember(dest => dest.Tracks, src => src.MapFrom(src => src.Album.Tracks.Items)); CreateMap <SimpleAlbum, AlbumDownloadModel>() .ForMember(dest => dest.Id, src => src.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, src => src.MapFrom(src => src.Name)) .ForMember(dest => dest.ReleaseDate, src => src.MapFrom(src => ReleaseDateParsingHelper.ParseReleaseDateToDateTime(src.ReleaseDate, src.ReleaseDatePrecision))) .ForMember(dest => dest.AlbumImages, src => src.MapFrom(src => src.Images)) .ForMember(dest => dest.Artists, src => src.MapFrom(src => src.Artists)); CreateMap <FullTrack, TrackDownloadModel>() .ForMember(dest => dest.Id, src => src.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, src => src.MapFrom(src => src.Name)) .ForMember(dest => dest.TrackNumber, src => src.MapFrom(src => src.TrackNumber)) .ForMember(dest => dest.Duration, src => src.MapFrom(src => src.DurationMs)) .ForMember(dest => dest.Artists, src => src.MapFrom(src => src.Artists)); CreateMap <SimpleTrack, TrackDownloadModel>() .ForMember(dest => dest.Id, src => src.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, src => src.MapFrom(src => src.Name)) .ForMember(dest => dest.TrackNumber, src => src.MapFrom(src => src.TrackNumber)) .ForMember(dest => dest.Duration, src => src.MapFrom(src => src.DurationMs)) .ForMember(dest => dest.Artists, src => src.MapFrom(src => src.Artists)); CreateMap <SimplePlaylist, PlaylistDownloadModel>() .ForMember(dest => dest.Id, src => src.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, src => src.MapFrom(src => src.Name)) .ForMember(dest => dest.PlaylistImages, src => src.MapFrom(src => src.Images)); CreateMap <Image, ImageDownloadModel>() .ForMember(dest => dest.Uri, src => src.ConvertUsing(new ImageUrlConverter(), src => src.Url)) .ForMember(dest => dest.Width, src => src.MapFrom(src => src.Width)) .ForMember(dest => dest.Height, src => src.MapFrom(src => src.Height)); CreateMap <Image, ArtistImage>() .ForMember(dest => dest.Uri, src => src.ConvertUsing(new ImageUrlConverter(), src => src.Url)) .ForMember(dest => dest.Width, src => src.MapFrom(src => src.Width)) .ForMember(dest => dest.Height, src => src.MapFrom(src => src.Height)); CreateMap <Image, AlbumImage>() .ForMember(dest => dest.Uri, src => src.ConvertUsing(new ImageUrlConverter(), src => src.Url)) .ForMember(dest => dest.Width, src => src.MapFrom(src => src.Width)) .ForMember(dest => dest.Height, src => src.MapFrom(src => src.Height)); CreateMap <Image, PlaylistImage>() .ForMember(dest => dest.Url, src => src.MapFrom(src => src.Url)) .ForMember(dest => dest.Width, src => src.MapFrom(src => src.Width)) .ForMember(dest => dest.Height, src => src.MapFrom(src => src.Height)); }