using System.Diagnostics; using ErsatzTV.Core.Domain; namespace ErsatzTV.Core.Scheduling; [DebuggerDisplay("{" + nameof(First) + "}")] public class GroupedMediaItem { public GroupedMediaItem() { } public GroupedMediaItem(MediaItem first, List additional) { First = first; Additional = additional ?? new List(); } public MediaItem First { get; set; } public List Additional { get; set; } public static IList FlattenGroups(GroupedMediaItem[] copy, int mediaItemCount) { var result = new MediaItem[mediaItemCount]; var i = 0; foreach (GroupedMediaItem group in copy) { result[i++] = group.First; foreach (MediaItem additional in Optional(group.Additional).Flatten()) { result[i++] = additional; } } return result; } }