public async Task <ActionResult <AlbumGetResponse> > CreateAlbum([FromBody] AlbumPostRequest albumPostRequest) { if (albumPostRequest.ArtistId == Guid.Empty || albumPostRequest.GenreId == Guid.Empty) { throw new ArgumentNullException(nameof(albumPostRequest)); } var albumToAdd = _mapper.Map <Album>(albumPostRequest); albumToAdd.Id = Guid.NewGuid(); _albumRepository.AddAlbum(albumToAdd); await _albumRepository.SaveAsync(); if (albumPostRequest.Tracks.Any()) { foreach (var track in albumPostRequest.Tracks) { var trackToAdd = _mapper.Map <Track>(track); trackToAdd.Id = Guid.NewGuid(); trackToAdd.AlbumId = albumToAdd.Id; _albumRepository.AddTrackToAlbum(trackToAdd); } await _albumRepository.SaveAsync(); } var albumResponse = _mapper.Map <AlbumGetResponse>(albumToAdd); return(CreatedAtRoute( "GetAlbum", new { version = HttpContext.GetRequestedApiVersion().ToString(), albumId = albumToAdd.Id }, albumResponse)); }