view Source/Validation/MaxDateValueAttribute.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line source

using System;

namespace BLToolkit.Validation
{
	[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
	public class MaxDateValueAttribute : MaxValueAttribute
	{
		public MaxDateValueAttribute(int year, int month, int day)
			: base(new DateTime(year, month, day))
		{
		}

		public MaxDateValueAttribute(int year, int month, int day, string errorMessage)
			: this(year, month, day)
		{
			ErrorMessage = errorMessage;
		}

		public MaxDateValueAttribute(int year, int month, int day, bool isExclusive)
			: base(new DateTime(year, month, day), isExclusive)
		{
		}

		public MaxDateValueAttribute(int year, int month, int day, bool isExclusive, string errorMessage)
			: this(year, month, day, isExclusive)
		{
			ErrorMessage = errorMessage;
		}

		public override bool IsValid(ValidationContext context)
		{
			if (context.IsNull(context))
				return true;

			DateTime contextValue = Convert.ToDateTime(context.Value);
			DateTime testValue    = (DateTime)GetValue(context);

			return testValue > contextValue || !IsExclusive && testValue == contextValue;
		}
	}
}