Files
mixtape/zero.Core/Localization/LanguageStore.cs
T

24 lines
1.3 KiB
C#
Raw Normal View History

2021-11-23 11:35:01 +01:00
using FluentValidation;
2021-11-24 13:56:08 +01:00
namespace zero.Localization;
2021-11-23 11:35:01 +01:00
2021-11-26 12:31:33 +01:00
public class LanguageStore : EntityStore<Language>, ILanguageStore
2021-11-23 11:35:01 +01:00
{
2021-11-26 12:31:33 +01:00
public LanguageStore(IStoreContext context) : base(context) { }
2021-11-23 11:35:01 +01:00
/// <inheritdoc />
protected override void ValidationRules(ZeroValidator<Language> validator)
{
validator.RuleFor(x => x.Name).Length(2, 60);
validator.RuleFor(x => x.Code).Length(2, 10).Culture();
validator.RuleFor(x => x.IsDefault).Unique(Context.Store).When(x => x.IsDefault).WithMessage("@language.errors.default_unique");
validator.RuleFor(x => x.IsDefault).ExpectAnyUnique(Context.Store, expectedValue: true).When(x => !x.IsDefault).WithMessage("@language.errors.needs_default");
validator.RuleFor(x => x.InheritedLanguageId).Must((entity, value) => !entity.Id.Equals(value, StringComparison.InvariantCultureIgnoreCase)).When(x => !x.Id.IsNullOrEmpty()).WithMessage("@language.errors.fallback_invalid");
validator.RuleFor(x => x.InheritedLanguageId).Equal((string)null).When(x => x.IsDefault).WithMessage("@language.errors.default_no_fallback");
validator.RuleFor(x => x.InheritedLanguageId).Exists(Context.Store);
validator.RuleFor(x => x.IsOptional).Equal(false).When(x => x.IsDefault).WithMessage("@language.errors.default_not_optional");
}
}
2021-11-26 12:31:33 +01:00
public interface ILanguageStore : IEntityStore<Language> { }