2020-05-04 16:00:39 +02:00
|
|
|
using FluentValidation;
|
2020-09-09 11:55:09 +02:00
|
|
|
using System;
|
|
|
|
|
using zero.Core.Api;
|
2020-05-04 16:00:39 +02:00
|
|
|
using zero.Core.Entities;
|
|
|
|
|
using zero.Core.Extensions;
|
|
|
|
|
|
|
|
|
|
namespace zero.Core.Validation
|
|
|
|
|
{
|
2020-09-09 13:08:47 +02:00
|
|
|
public class LanguageValidator : ZeroValidator<ILanguage>
|
2020-05-04 16:00:39 +02:00
|
|
|
{
|
2020-09-09 11:55:09 +02:00
|
|
|
public LanguageValidator(IBackofficeStore store)
|
2020-05-04 16:00:39 +02:00
|
|
|
{
|
2020-09-09 11:55:09 +02:00
|
|
|
RuleFor(x => x.Name).Length(2, 60);
|
|
|
|
|
RuleFor(x => x.Code).Length(2, 10).Culture();
|
|
|
|
|
RuleFor(x => x.IsDefault).Unique(store).When(x => x.IsDefault).WithMessage("@language.errors.default_unique");
|
|
|
|
|
RuleFor(x => x.IsDefault).ExpectAnyUnique(store, 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-09-09 11:55:09 +02:00
|
|
|
RuleFor(x => x.InheritedLanguageId).Equal((string)null).When(x => x.IsDefault).WithMessage("@language.errors.default_no_fallback");
|
2020-09-09 13:08:47 +02:00
|
|
|
RuleFor(x => x.InheritedLanguageId).Exists(store);
|
2020-09-09 11:55:09 +02:00
|
|
|
RuleFor(x => x.IsOptional).Equal(false).When(x => x.IsDefault).WithMessage("@language.errors.default_not_optional");
|
2020-05-04 16:00:39 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|