public BasicParticipation[] GetExpiringParticipations(IHasIdentity organization, DateTime lowerBound, DateTime upperBound, DatabaseCondition condition) { // Since I don't trust SQL Server to make correct date comparisons, especially given // that the dates are passed in text in SQL, we get ALL the memberships and do // the comparison in code instead. This is a run-seldom function, anyway, and getting // some 50k records with four short unlinked fields isn't that expensive. BasicParticipation[] participations = GetParticipations(organization, condition); DateTime minimumDateTime = lowerBound.Date; DateTime maximumDateTime = upperBound.Date.AddDays(1); List <BasicParticipation> result = new List <BasicParticipation>(); foreach (BasicParticipation participation in participations) { // It is important that the lower border is inclusive and the upper exclusive in this // comparison: if (participation.Expires >= minimumDateTime && participation.Expires < maximumDateTime) { result.Add(participation); } } return(result.ToArray()); }
public BasicMembership[] GetExpiringMemberships (IHasIdentity organization, DateTime lowerBound, DateTime upperBound, DatabaseCondition condition) { // Since I don't trust SQL Server to make correct date comparisons, especially given // that the dates are passed in text in SQL, we get ALL the memberships and do // the comparison in code instead. This is a run-seldom function, anyway, and getting // some 50k records with four short unlinked fields isn't that expensive. BasicMembership[] memberships = this.GetMemberships(organization, condition); DateTime minimumDateTime = lowerBound.Date; DateTime maximumDateTime = upperBound.Date.AddDays(1); List<BasicMembership> result = new List<BasicMembership>(); foreach (BasicMembership membership in memberships) { // It is important that the lower border is inclusive and the upper exclusive in this // comparison: if (membership.Expires >= minimumDateTime && membership.Expires < maximumDateTime) { result.Add(membership); } } return result.ToArray(); }
private static string GetWhereClauseForCondition (DatabaseCondition condition) { switch (condition) { case DatabaseCondition.OpenTrue: return "Open=1"; case DatabaseCondition.OpenFalse: return "Open=0"; case DatabaseCondition.AttestedFalse: return "Attested=0"; case DatabaseCondition.AttestedTrue: return "Attested=1"; case DatabaseCondition.ActiveFalse: return "Active=0"; case DatabaseCondition.ActiveTrue: return "Active=1"; default: throw new InvalidOperationException( "Undefined or unimplemented DatabaseCondition in GetWhereClauseForCondition: " + condition.ToString()); } }