public static AlbumViewModel FromObjects(IEnumerable<MetadataDto> objects) { if (objects.Any()) { var first = objects.First(); var album = new AlbumViewModel { Artist = first.AlbumArtist, Title = first.Album, Year = first.Year, Genre = first.Genre, Compilation = first.Compilation.HasValue && first.Compilation.Value == 1 }; foreach (var discWithTracks in objects.GroupBy(x => x.Disc).OrderBy(x => x.Key)) { var regexMatch = _regex.Match(discWithTracks.First().AccurateRipDiscId ?? string.Empty); var disc = new DiscViewModel { DiscNumber = Convert.ToInt32(discWithTracks.Key.Split('/')[0]), AccurateRipDiscId = regexMatch.Success ? regexMatch.Groups[1].Captures[0].Value : string.Empty }; foreach (var trackFromDisc in discWithTracks) { var track = new TrackViewModel { Id = trackFromDisc.Id, TrackNumber = Convert.ToInt32(trackFromDisc.Track.Split('/')[0]), Artist = trackFromDisc.Artist, Title = trackFromDisc.Title }; disc.Tracks.Add(track); } album.Discs.Add(disc); } return album; } else { return new AlbumViewModel(); } }
public static AlbumViewModel FromObjects(IEnumerable <MetadataDto> objects) { if (objects.Any()) { var first = objects.First(); var album = new AlbumViewModel { Artist = first.AlbumArtist, Title = first.Album, Year = first.Year, Genre = first.Genre, Compilation = first.Compilation.HasValue && first.Compilation.Value == 1 }; foreach (var discWithTracks in objects.GroupBy(x => x.Disc).OrderBy(x => x.Key)) { var regexMatch = _regex.Match(discWithTracks.First().AccurateRipDiscId ?? string.Empty); var disc = new DiscViewModel { DiscNumber = Convert.ToInt32(discWithTracks.Key.Split('/')[0]), AccurateRipDiscId = regexMatch.Success ? regexMatch.Groups[1].Captures[0].Value : string.Empty }; foreach (var trackFromDisc in discWithTracks) { var track = new TrackViewModel { Id = trackFromDisc.Id, TrackNumber = Convert.ToInt32(trackFromDisc.Track.Split('/')[0]), Artist = trackFromDisc.Artist, Title = trackFromDisc.Title }; disc.Tracks.Add(track); } album.Discs.Add(disc); } return(album); } else { return(new AlbumViewModel()); } }