|
|
@ -1,5 +1,4 @@ |
|
|
|
using System.Globalization; |
|
|
|
using System.Text.RegularExpressions; |
|
|
|
using System.Text.RegularExpressions; |
|
|
|
|
|
|
|
using System.Threading.Channels; |
|
|
|
using System.Threading.Channels; |
|
|
|
using ErsatzTV.Core; |
|
|
|
using ErsatzTV.Core; |
|
|
|
using ErsatzTV.Core.Domain; |
|
|
|
using ErsatzTV.Core.Domain; |
|
|
@ -39,7 +38,6 @@ public class CreateChannelHandler( |
|
|
|
private static async Task<Validation<BaseError, Channel>> Validate(TvContext dbContext, CreateChannel request) => |
|
|
|
private static async Task<Validation<BaseError, Channel>> Validate(TvContext dbContext, CreateChannel request) => |
|
|
|
(ValidateName(request), await ValidateNumber(dbContext, request), |
|
|
|
(ValidateName(request), await ValidateNumber(dbContext, request), |
|
|
|
await FFmpegProfileMustExist(dbContext, request), |
|
|
|
await FFmpegProfileMustExist(dbContext, request), |
|
|
|
ValidatePreferredSubtitleLanguage(request), |
|
|
|
|
|
|
|
await WatermarkMustExist(dbContext, request), |
|
|
|
await WatermarkMustExist(dbContext, request), |
|
|
|
await FillerPresetMustExist(dbContext, request)) |
|
|
|
await FillerPresetMustExist(dbContext, request)) |
|
|
|
.Apply( |
|
|
|
.Apply( |
|
|
@ -47,7 +45,6 @@ public class CreateChannelHandler( |
|
|
|
name, |
|
|
|
name, |
|
|
|
number, |
|
|
|
number, |
|
|
|
ffmpegProfileId, |
|
|
|
ffmpegProfileId, |
|
|
|
preferredSubtitleLanguageCode, |
|
|
|
|
|
|
|
watermarkId, |
|
|
|
watermarkId, |
|
|
|
fillerPresetId) => |
|
|
|
fillerPresetId) => |
|
|
|
{ |
|
|
|
{ |
|
|
@ -76,7 +73,7 @@ public class CreateChannelHandler( |
|
|
|
Artwork = artwork, |
|
|
|
Artwork = artwork, |
|
|
|
PreferredAudioLanguageCode = request.PreferredAudioLanguageCode, |
|
|
|
PreferredAudioLanguageCode = request.PreferredAudioLanguageCode, |
|
|
|
PreferredAudioTitle = request.PreferredAudioTitle, |
|
|
|
PreferredAudioTitle = request.PreferredAudioTitle, |
|
|
|
PreferredSubtitleLanguageCode = preferredSubtitleLanguageCode, |
|
|
|
PreferredSubtitleLanguageCode = request.PreferredSubtitleLanguageCode, |
|
|
|
SubtitleMode = request.SubtitleMode, |
|
|
|
SubtitleMode = request.SubtitleMode, |
|
|
|
MusicVideoCreditsMode = request.MusicVideoCreditsMode, |
|
|
|
MusicVideoCreditsMode = request.MusicVideoCreditsMode, |
|
|
|
MusicVideoCreditsTemplate = request.MusicVideoCreditsTemplate |
|
|
|
MusicVideoCreditsTemplate = request.MusicVideoCreditsTemplate |
|
|
@ -99,13 +96,6 @@ public class CreateChannelHandler( |
|
|
|
createChannel.NotEmpty(c => c.Name) |
|
|
|
createChannel.NotEmpty(c => c.Name) |
|
|
|
.Bind(_ => createChannel.NotLongerThan(50)(c => c.Name)); |
|
|
|
.Bind(_ => createChannel.NotLongerThan(50)(c => c.Name)); |
|
|
|
|
|
|
|
|
|
|
|
private static Validation<BaseError, string> ValidatePreferredSubtitleLanguage(CreateChannel createChannel) => |
|
|
|
|
|
|
|
Optional(createChannel.PreferredSubtitleLanguageCode ?? string.Empty) |
|
|
|
|
|
|
|
.Filter( |
|
|
|
|
|
|
|
lc => string.IsNullOrWhiteSpace(lc) || CultureInfo.GetCultures(CultureTypes.NeutralCultures).Any( |
|
|
|
|
|
|
|
ci => string.Equals(ci.ThreeLetterISOLanguageName, lc, StringComparison.OrdinalIgnoreCase))) |
|
|
|
|
|
|
|
.ToValidation<BaseError>("Preferred subtitle language code is invalid"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static async Task<Validation<BaseError, string>> ValidateNumber( |
|
|
|
private static async Task<Validation<BaseError, string>> ValidateNumber( |
|
|
|
TvContext dbContext, |
|
|
|
TvContext dbContext, |
|
|
|
CreateChannel createChannel) |
|
|
|
CreateChannel createChannel) |
|
|
|