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.
63 lines
2.8 KiB
63 lines
2.8 KiB
using ErsatzTV.Core.Domain; |
|
using ErsatzTV.Core.Domain.Scheduling; |
|
|
|
namespace ErsatzTV.Application.Scheduling; |
|
|
|
internal static class Mapper |
|
{ |
|
internal static BlockGroupViewModel ProjectToViewModel(BlockGroup blockGroup) => |
|
new(blockGroup.Id, blockGroup.Name, blockGroup.Blocks.Count); |
|
|
|
internal static BlockViewModel ProjectToViewModel(Block block) => |
|
new(block.Id, block.Name, block.Minutes, block.StopScheduling); |
|
|
|
internal static BlockItemViewModel ProjectToViewModel(BlockItem blockItem) => |
|
new( |
|
blockItem.Id, |
|
blockItem.Index, |
|
blockItem.CollectionType, |
|
blockItem.Collection is not null ? MediaCollections.Mapper.ProjectToViewModel(blockItem.Collection) : null, |
|
blockItem.MultiCollection is not null |
|
? MediaCollections.Mapper.ProjectToViewModel(blockItem.MultiCollection) |
|
: null, |
|
blockItem.SmartCollection is not null |
|
? MediaCollections.Mapper.ProjectToViewModel(blockItem.SmartCollection) |
|
: null, |
|
blockItem.MediaItem switch |
|
{ |
|
Show show => MediaItems.Mapper.ProjectToViewModel(show), |
|
Season season => MediaItems.Mapper.ProjectToViewModel(season), |
|
Artist artist => MediaItems.Mapper.ProjectToViewModel(artist), |
|
_ => null |
|
}, |
|
blockItem.PlaybackOrder); |
|
|
|
internal static TemplateGroupViewModel ProjectToViewModel(TemplateGroup templateGroup) => |
|
new(templateGroup.Id, templateGroup.Name, templateGroup.Templates.Count); |
|
|
|
internal static TemplateViewModel ProjectToViewModel(Template template) => |
|
new(template.Id, template.TemplateGroupId, template.Name); |
|
|
|
internal static TemplateItemViewModel ProjectToViewModel(TemplateItem templateItem) |
|
{ |
|
DateTime startTime = DateTime.Today.Add(templateItem.StartTime); |
|
DateTime endTime = startTime.AddMinutes(templateItem.Block.Minutes); |
|
return new TemplateItemViewModel(templateItem.BlockId, templateItem.Block.Name, startTime, endTime); |
|
} |
|
|
|
internal static PlayoutTemplateViewModel ProjectToViewModel(PlayoutTemplate playoutTemplate) => |
|
new( |
|
playoutTemplate.Id, |
|
ProjectToViewModel(playoutTemplate.Template), |
|
playoutTemplate.Index, |
|
playoutTemplate.DaysOfWeek, |
|
playoutTemplate.DaysOfMonth, |
|
playoutTemplate.MonthsOfYear); |
|
|
|
internal static PlayoutItemPreviewViewModel ProjectToViewModel(PlayoutItem playoutItem) => |
|
new( |
|
Playouts.Mapper.GetDisplayTitle(playoutItem), |
|
playoutItem.StartOffset.TimeOfDay, |
|
playoutItem.FinishOffset.TimeOfDay, |
|
Playouts.Mapper.GetDisplayDuration(playoutItem.FinishOffset - playoutItem.StartOffset)); |
|
}
|
|
|