* rework television media * refactor poster saving * television and movie views are working again * remove dead code * use paper styling for all cards * add show poster, plot to seasons page * remove missing shows; cleanup interfaces * fix split show display (same show in different folders/sources) * add placeholder "add to schedule" button * no more duplicate television shows, even with the same show split across sources * stop releasing CLI for now * use season number as season placeholder * add television shows to collections * add television seasons to collections * add television episodes to collections * add movies to collections * remove movies, shows, seasons, episodes from collections * fix page width and menus * fix buffer size defaults * fix chronological episode ordering * allow deleting media collections * don't get stuck building a playout with an empty collection * schedule editing and playouts work again * minor cleanup * remove dead code * fix bugs with viewing movies as they are loading * add scanner tests; support nested movie folders * update collections docs * rearrange order of schedule items * add show and season to schedule * delete schedules that use legacy collections, reset all posters * move cleanup to new migration * load fallback metadata when nfo fails; don't require metadata in ui * update readme and screenshots
84 lines
4.1 KiB
C#
84 lines
4.1 KiB
C#
using System;
|
|
using ErsatzTV.Core.Domain;
|
|
|
|
namespace ErsatzTV.Application.ProgramSchedules
|
|
{
|
|
internal static class Mapper
|
|
{
|
|
internal static ProgramScheduleViewModel ProjectToViewModel(ProgramSchedule programSchedule) =>
|
|
new(programSchedule.Id, programSchedule.Name, programSchedule.MediaCollectionPlaybackOrder);
|
|
|
|
internal static ProgramScheduleItemViewModel ProjectToViewModel(ProgramScheduleItem programScheduleItem) =>
|
|
programScheduleItem switch
|
|
{
|
|
ProgramScheduleItemDuration duration =>
|
|
new ProgramScheduleItemDurationViewModel(
|
|
duration.Id,
|
|
duration.Index,
|
|
duration.StartType,
|
|
duration.StartTime,
|
|
duration.CollectionType,
|
|
duration.MediaCollection != null
|
|
? MediaCollections.Mapper.ProjectToViewModel(duration.MediaCollection)
|
|
: null,
|
|
duration.TelevisionShow != null
|
|
? Television.Mapper.ProjectToViewModel(duration.TelevisionShow)
|
|
: null,
|
|
duration.TelevisionSeason != null
|
|
? Television.Mapper.ProjectToViewModel(duration.TelevisionSeason)
|
|
: null,
|
|
duration.PlayoutDuration,
|
|
duration.OfflineTail),
|
|
ProgramScheduleItemFlood flood =>
|
|
new ProgramScheduleItemFloodViewModel(
|
|
flood.Id,
|
|
flood.Index,
|
|
flood.StartType,
|
|
flood.StartTime,
|
|
flood.CollectionType,
|
|
flood.MediaCollection != null
|
|
? MediaCollections.Mapper.ProjectToViewModel(flood.MediaCollection)
|
|
: null,
|
|
flood.TelevisionShow != null
|
|
? Television.Mapper.ProjectToViewModel(flood.TelevisionShow)
|
|
: null,
|
|
flood.TelevisionSeason != null
|
|
? Television.Mapper.ProjectToViewModel(flood.TelevisionSeason)
|
|
: null),
|
|
ProgramScheduleItemMultiple multiple =>
|
|
new ProgramScheduleItemMultipleViewModel(
|
|
multiple.Id,
|
|
multiple.Index,
|
|
multiple.StartType,
|
|
multiple.StartTime,
|
|
multiple.CollectionType,
|
|
multiple.MediaCollection != null
|
|
? MediaCollections.Mapper.ProjectToViewModel(multiple.MediaCollection)
|
|
: null,
|
|
multiple.TelevisionShow != null
|
|
? Television.Mapper.ProjectToViewModel(multiple.TelevisionShow)
|
|
: null,
|
|
multiple.TelevisionSeason != null
|
|
? Television.Mapper.ProjectToViewModel(multiple.TelevisionSeason)
|
|
: null,
|
|
multiple.Count),
|
|
ProgramScheduleItemOne one =>
|
|
new ProgramScheduleItemOneViewModel(
|
|
one.Id,
|
|
one.Index,
|
|
one.StartType,
|
|
one.StartTime,
|
|
one.CollectionType,
|
|
one.MediaCollection != null
|
|
? MediaCollections.Mapper.ProjectToViewModel(one.MediaCollection)
|
|
: null,
|
|
one.TelevisionShow != null ? Television.Mapper.ProjectToViewModel(one.TelevisionShow) : null,
|
|
one.TelevisionSeason != null
|
|
? Television.Mapper.ProjectToViewModel(one.TelevisionSeason)
|
|
: null),
|
|
_ => throw new NotSupportedException(
|
|
$"Unsupported program schedule item type {programScheduleItem.GetType().Name}")
|
|
};
|
|
}
|
|
}
|