Files
mixtape/zero.Core/Collections/Languages/LanguageValidator.cs
T

25 lines
1.2 KiB
C#
Raw Normal View History

2020-05-04 16:00:39 +02:00
using FluentValidation;
using System;
2021-10-11 15:15:55 +02:00
using zero.Core.Database;
2020-05-04 16:00:39 +02:00
using zero.Core.Entities;
using zero.Core.Extensions;
using zero.Core.Validation;
2020-05-04 16:00:39 +02:00
namespace zero.Core.Collections
2020-05-04 16:00:39 +02:00
{
2021-05-04 17:23:52 +02:00
public class LanguageValidator : ZeroValidator<Language>
2020-05-04 16:00:39 +02:00
{
2021-10-11 15:15:55 +02:00
public LanguageValidator(IZeroDocumentSession session)
2020-05-04 16:00:39 +02:00
{
RuleFor(x => x.Name).Length(2, 60);
RuleFor(x => x.Code).Length(2, 10).Culture();
2021-10-11 15:15:55 +02:00
RuleFor(x => x.IsDefault).Unique(session).When(x => x.IsDefault).WithMessage("@language.errors.default_unique");
RuleFor(x => x.IsDefault).ExpectAnyUnique(session, expectedValue: true).When(x => !x.IsDefault).WithMessage("@language.errors.needs_default");
2020-09-11 16:36:36 +02:00
RuleFor(x => x.InheritedLanguageId).Must((entity, value) => !entity.Id.Equals(value, StringComparison.InvariantCultureIgnoreCase)).When(x => !x.Id.IsNullOrEmpty()).WithMessage("@language.errors.fallback_invalid");
2020-10-12 13:14:23 +02:00
RuleFor(x => x.InheritedLanguageId).Equal((string)null).When(x => x.IsDefault).WithMessage("@language.errors.default_no_fallback");
2021-10-11 15:15:55 +02:00
RuleFor(x => x.InheritedLanguageId).Exists(session);
RuleFor(x => x.IsOptional).Equal(false).When(x => x.IsDefault).WithMessage("@language.errors.default_not_optional");
2020-05-04 16:00:39 +02:00
}
}
}