Пример #1
0
        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;
            }
        }
Пример #2
0
        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));
        }