mirror of https://github.com/ErsatzTV/ErsatzTV.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.7 KiB
47 lines
1.7 KiB
using ErsatzTV.Core.Domain; |
|
|
|
namespace ErsatzTV.Core.Scheduling; |
|
|
|
public class MultiCollectionGroup : GroupedMediaItem |
|
{ |
|
public MultiCollectionGroup(CollectionWithItems collectionWithItems) |
|
{ |
|
if (collectionWithItems.UseCustomOrder) |
|
{ |
|
if (collectionWithItems.MediaItems.Count > 0) |
|
{ |
|
First = collectionWithItems.MediaItems.Head(); |
|
Additional = collectionWithItems.MediaItems.Tail().ToList(); |
|
} |
|
else |
|
{ |
|
throw new InvalidOperationException("Collection has no items"); |
|
} |
|
} |
|
else |
|
{ |
|
switch (collectionWithItems.PlaybackOrder) |
|
{ |
|
case PlaybackOrder.Chronological: |
|
{ |
|
var sortedItems = collectionWithItems.MediaItems.OrderBy(identity, new ChronologicalMediaComparer()) |
|
.ToList(); |
|
First = sortedItems.Head(); |
|
Additional = sortedItems.Tail().ToList(); |
|
} |
|
break; |
|
case PlaybackOrder.SeasonEpisode: |
|
{ |
|
var sortedItems = collectionWithItems.MediaItems.OrderBy(identity, new SeasonEpisodeMediaComparer()) |
|
.ToList(); |
|
First = sortedItems.Head(); |
|
Additional = sortedItems.Tail().ToList(); |
|
} |
|
break; |
|
default: |
|
throw new NotSupportedException( |
|
$"Unsupported MultiCollection PlaybackOrder: {collectionWithItems.PlaybackOrder}"); |
|
} |
|
} |
|
} |
|
}
|
|
|