internal static void AddVacancySummaryViewModelDatesServerCommonRules(this AbstractValidator <FurtherVacancyDetailsViewModel> validator, string parentPropertyName) { validator.Custom(x => { if (x.Wage.Classification == WageClassification.Custom && x.Wage.CustomType == CustomWageType.Fixed) { return(x.HaveAValidHourRate(x.Wage.Amount, parentPropertyName, "Wage.Amount")); } return(null); }); validator.Custom( x => { if (x.Wage.Classification == WageClassification.Custom && x.Wage.CustomType == CustomWageType.Ranged) { return(x.HaveAValidHourRate(x.Wage.AmountLowerBound, parentPropertyName, "Wage.AmountLowerBound")); } return(null); }); validator.RuleFor(x => x.VacancyDatesViewModel).SetValidator(new VacancyDatesViewModelServerCommonValidator()); }
internal static void AddVacancySummaryViewModelDatesServerWarningRules(this AbstractValidator <FurtherVacancyDetailsViewModel> validator, string parentPropertyName) { validator.Custom(x => x.ExpectedDurationGreaterThanOrEqualToMinimumDuration(x.Duration, parentPropertyName)); var parentPropertyNameToUse = string.IsNullOrWhiteSpace(parentPropertyName) ? "VacancyDatesViewModel" : parentPropertyName + ".VacancyDatesViewModel"; validator.RuleFor(x => x.VacancyDatesViewModel) .SetValidator(new VacancyDatesViewModelServerWarningValidator(parentPropertyNameToUse)); }
public static void ObjectRule <T>(this AbstractValidator <T> validator, Func <T, string> customValidation) { validator.Custom( x => { string error = customValidation(x); if (string.IsNullOrEmpty(error)) { return(null); } return(new ValidationFailure(string.Empty, error, x)); }); }
internal static void AddServerWarningRules(this AbstractValidator <VacancyDatesViewModel> validator, string parentPropertyName) { validator.RuleFor(x => x.ClosingDate) .Must(Common.BeTwoWeeksInTheFuture) .WithMessage(VacancyViewModelMessages.ClosingDate.TooSoonErrorText) .WithState(s => ValidationType.Warning) .When(IsNewVacancy); validator.RuleFor(x => x.PossibleStartDate) .Must(Common.BeTwoWeeksInTheFuture) .WithMessage(VacancyViewModelMessages.PossibleStartDate.TooSoonErrorText) .WithState(s => ValidationType.Warning) .When(x => x.ClosingDate == null || !x.ClosingDate.HasValue); validator.Custom(x => x.PossibleStartDateShouldBeAfterClosingDate(x.ClosingDate, parentPropertyName)); }