Files
ersatztv/ErsatzTV/Validators/ChannelEditViewModelValidator.cs
T
Jason DoveandGitHub 0365d4c8f8 add channel watermark (#254)
* wip

* wip

* implement watermark settings

* code cleanup

* update changelog
2021-06-11 21:42:06 -05:00

55 lines
2.1 KiB
C#

using System;
using System.Globalization;
using System.Linq;
using ErsatzTV.Core.Domain;
using ErsatzTV.ViewModels;
using FluentValidation;
namespace ErsatzTV.Validators
{
public class ChannelEditViewModelValidator : AbstractValidator<ChannelEditViewModel>
{
public ChannelEditViewModelValidator()
{
RuleFor(x => x.Number).Matches(Channel.NumberValidator)
.WithMessage("Invalid channel number; one decimal is allowed for subchannels");
RuleFor(x => x.Name).NotEmpty();
RuleFor(x => x.FFmpegProfileId).GreaterThan(0);
RuleFor(x => x.PreferredLanguageCode)
.Must(
languageCode => CultureInfo.GetCultures(CultureTypes.NeutralCultures)
.Any(
ci => string.Equals(
ci.ThreeLetterISOLanguageName,
languageCode,
StringComparison.OrdinalIgnoreCase)))
.When(vm => !string.IsNullOrWhiteSpace(vm.PreferredLanguageCode))
.WithMessage("Preferred language code is invalid");
RuleFor(x => x.WatermarkWidth)
.GreaterThan(0)
.LessThanOrEqualTo(100)
.When(
vm => vm.WatermarkMode != ChannelWatermarkMode.None &&
vm.WatermarkSize == ChannelWatermarkSize.Scaled);
RuleFor(x => x.WatermarkHorizontalMargin)
.GreaterThanOrEqualTo(0)
.LessThanOrEqualTo(50)
.When(vm => vm.WatermarkMode != ChannelWatermarkMode.None);
RuleFor(x => x.WatermarkVerticalMargin)
.GreaterThanOrEqualTo(0)
.LessThanOrEqualTo(50)
.When(vm => vm.WatermarkMode != ChannelWatermarkMode.None);
RuleFor(x => x.WatermarkDurationSeconds)
.GreaterThan(0)
.LessThan(c => c.WatermarkFrequencyMinutes * 60)
.When(vm => vm.WatermarkMode != ChannelWatermarkMode.None);
}
}
}