* starting database redesign * set season and episode numbers * use datetimes in db (utc); update movie metadata * get movie cards from new table * copy show/episode metadata * remove old movie metadata type * rename new movie metadata type * code cleanup * start to remove old television classes * remove old television tables from database * fix playout building * fix collection views * fix show/season views * clean up movie metadata table * fix scanner tests * add libraries ui * code cleanup * fix movie scanning/metadata * add library scan button to ui * delete library path from ui * temp disable movie scanning * remove orphan media items and prevent duplicate paths * attach artwork to metadata * fix split show/season display * fix television artwork * store year distinct from release date * fix collections ui * code cleanup * add library paths from ui * fix adding to collections from ui * fix schedule items loading * schedule editing works again * remove some todos * more cleanup * fix unit tests * fix episode sorting * fix deleting show library paths * remove unused class * fix playout list in ui * fix log viewer * start to use version/file instead of statistics * clean up old columns * fix playout display (time zone) * fix playback * fix channel guide time zone * cascade more deletes * fix compiler warnings * fix adding new seasons * use artwork for channel logo * clean cache folder on startup (move channel logos, delete everything else) * log database migration * update homepage docs for libraries * fix adding new channel with logo * fix episode numbers in epg
86 lines
4.0 KiB
C#
86 lines
4.0 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.Collection != null
|
|
? MediaCollections.Mapper.ProjectToViewModel(duration.Collection)
|
|
: null,
|
|
duration.MediaItem switch
|
|
{
|
|
Show show => MediaItems.Mapper.ProjectToViewModel(show),
|
|
Season season => MediaItems.Mapper.ProjectToViewModel(season),
|
|
_ => null
|
|
},
|
|
duration.PlayoutDuration,
|
|
duration.OfflineTail),
|
|
ProgramScheduleItemFlood flood =>
|
|
new ProgramScheduleItemFloodViewModel(
|
|
flood.Id,
|
|
flood.Index,
|
|
flood.StartType,
|
|
flood.StartTime,
|
|
flood.CollectionType,
|
|
flood.Collection != null
|
|
? MediaCollections.Mapper.ProjectToViewModel(flood.Collection)
|
|
: null,
|
|
flood.MediaItem switch
|
|
{
|
|
Show show => MediaItems.Mapper.ProjectToViewModel(show),
|
|
Season season => MediaItems.Mapper.ProjectToViewModel(season),
|
|
_ => null
|
|
}),
|
|
ProgramScheduleItemMultiple multiple =>
|
|
new ProgramScheduleItemMultipleViewModel(
|
|
multiple.Id,
|
|
multiple.Index,
|
|
multiple.StartType,
|
|
multiple.StartTime,
|
|
multiple.CollectionType,
|
|
multiple.Collection != null
|
|
? MediaCollections.Mapper.ProjectToViewModel(multiple.Collection)
|
|
: null,
|
|
multiple.MediaItem switch
|
|
{
|
|
Show show => MediaItems.Mapper.ProjectToViewModel(show),
|
|
Season season => MediaItems.Mapper.ProjectToViewModel(season),
|
|
_ => null
|
|
},
|
|
multiple.Count),
|
|
ProgramScheduleItemOne one =>
|
|
new ProgramScheduleItemOneViewModel(
|
|
one.Id,
|
|
one.Index,
|
|
one.StartType,
|
|
one.StartTime,
|
|
one.CollectionType,
|
|
one.Collection != null
|
|
? MediaCollections.Mapper.ProjectToViewModel(one.Collection)
|
|
: null,
|
|
one.MediaItem switch
|
|
{
|
|
Show show => MediaItems.Mapper.ProjectToViewModel(show),
|
|
Season season => MediaItems.Mapper.ProjectToViewModel(season),
|
|
_ => null
|
|
}),
|
|
_ => throw new NotSupportedException(
|
|
$"Unsupported program schedule item type {programScheduleItem.GetType().Name}")
|
|
};
|
|
}
|
|
}
|