Esempio n. 1
0
        public async Task <AlbumDTO> AddAlbum(AlbumDTO album)
        {
            try
            {
                Album newAlbum = _mapper.Map <Album>(album);
                newAlbum.AlbumId = Guid.NewGuid();
                newAlbum.Songs   = new List <Song>();
                newAlbum.Artist  = new Artist();

                foreach (var songId in album.SongIds)
                {
                    Song song = await GetSongBySongId(songId);

                    if (song != null)
                    {
                        await _albumRepository.AddAlbumSong(new AlbumSong()
                        {
                            AlbumSongId = Guid.NewGuid(),
                            SongId      = songId,
                            AlbumId     = newAlbum.AlbumId,
                        });
                    }
                }

                Artist artist = await GetArtistByArtistId(album.ArtistId);

                if (artist != null)
                {
                    newAlbum.ArtistId = artist.ArtistId;
                }

                await _albumRepository.AddAlbum(newAlbum);

                return(album);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }