Esempio n. 1
0
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (!(value is PartialDate partialDate) || partialDate.IsEmpty())
            {
                return(null);
            }
            if (!string.IsNullOrEmpty(partialDate.Day))
            {
                if (string.IsNullOrEmpty(partialDate.Month) || string.IsNullOrEmpty(partialDate.Year))
                {
                    return(new ValidationResult(ValidationMessages.YearAndMonthRequired));
                }
            }
            if (!string.IsNullOrEmpty(partialDate.Month))
            {
                if (string.IsNullOrEmpty(partialDate.Year))
                {
                    return(new ValidationResult(ValidationMessages.YearRequired));
                }
            }

            if (Int32.Parse(partialDate.Year) < 1900)
            {
                return(new ValidationResult(ValidationMessages.YearAfter1900));
            }

            bool canConvert = partialDate.TryConvertToDateTimeRange(out _, out _);

            if (!canConvert)
            {
                return(new ValidationResult(ValidationMessages.InvalidDate(validationContext.DisplayName)));
            }
            return(null);
        }