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.
23 lines
749 B
23 lines
749 B
using System; |
|
using System.Linq; |
|
using System.Threading.Tasks; |
|
using ErsatzTV.Core.Domain; |
|
using LanguageExt; |
|
using Microsoft.EntityFrameworkCore; |
|
using static LanguageExt.Prelude; |
|
|
|
namespace ErsatzTV.Infrastructure.Extensions |
|
{ |
|
public static class PlayoutItemQueryableExtensions |
|
{ |
|
public static Task<Option<PlayoutItem>> ForChannelAndTime( |
|
this IQueryable<PlayoutItem> dbSet, |
|
int channelId, |
|
DateTimeOffset time) => |
|
dbSet.Filter(pi => pi.Playout.ChannelId == channelId) |
|
.Filter(pi => pi.Start <= time.UtcDateTime && pi.Finish > time.UtcDateTime) |
|
.OrderBy(pi => pi.Start) |
|
.FirstOrDefaultAsync() |
|
.Map(Optional); |
|
} |
|
}
|
|
|