SIL.FieldWorks.Filters.DateTimeMatcher.GenDateIsBeforeDate C# (CSharp) Method

GenDateIsBeforeDate() private method

private GenDateIsBeforeDate ( GenDate gen, System.DateTime date, bool fAD ) : bool
gen GenDate
date System.DateTime
fAD bool
return bool
		private bool GenDateIsBeforeDate(GenDate gen, DateTime date, bool fAD)
		{
			if (UnspecificMatching)
				return GenDateMightBeBeforeDate(gen, date, fAD);

			if (gen.IsAD && !fAD)		// AD > BC
				return false;
			if (!gen.IsAD && fAD)		// BC < AD
				return gen.Precision != GenDate.PrecisionType.After;
			if (!gen.IsAD && !fAD)		// Both BC
			{
				if (gen.Year > date.Year)
					return gen.Precision != GenDate.PrecisionType.After;
				else if (gen.Year < date.Year)
					return false;
			}
			if (gen.IsAD && fAD)		// Both AD
			{
				if (gen.Year < date.Year)
					return gen.Precision != GenDate.PrecisionType.After;
				else if (gen.Year > date.Year)
					return false;
			}
			if (gen.Month < date.Month)
			{
				return gen.Month != GenDate.UnknownMonth ||
					gen.Precision == GenDate.PrecisionType.Before;
			}
			else if (gen.Month > date.Month)
			{
				return false;
			}
			if (gen.Day == GenDate.UnknownDay)
				return gen.Precision == GenDate.PrecisionType.Before;
			return gen.Day <= date.Day && gen.Precision != GenDate.PrecisionType.After;
		}