public override string Validate(string propertyName) { if (!DoValidation) { return(null); } switch (propertyName) { case nameof(ProjectName): if (ProjectName.IsNullOrWhiteSpace()) { return(string.Format(Constants.FieldMustBeFilledMessageFormat, nameof(ProjectName))); } else if (!ProjectName.IsLengthBetween(3, 100)) { return(string.Format(Constants.LengthErrorMessageFormat, nameof(ProjectName), 3, 100)); } break; case nameof(StartDate): if (StartDate.IsNullOrWhiteSpace()) { return(string.Format(Constants.FieldMustBeFilledMessageFormat, nameof(StartDate))); } else if (DateTime.Parse(StartDate) < new DateTime(2000, 1, 1)) { return(Constants.DateMustBeCorrectMessage); } else if (!StillGoes && !EndDate.IsNullOrWhiteSpace() && DateTime.Parse(StartDate) > DateTime.Parse(EndDate)) { return(string.Format(Constants.FieldMustBeLessThan, nameof(StartDate), nameof(EndDate))); } break; case nameof(EndDate): if (!StillGoes && EndDate.IsNullOrWhiteSpace()) { return(string.Format(Constants.FieldMustBeFilledMessageFormat, nameof(EndDate))); } else if (!StillGoes && DateTime.Parse(EndDate) < new DateTime(2000, 1, 1)) { return(Constants.DateMustBeCorrectMessage); } break; } return(null); }