/// <summary> /// Validate date against validation period. /// </summary> /// <param name="validationType">Validation type.</param> /// <param name="validationPeriod">Validation period.</param> /// <param name="startDate">Pricing start date.</param> /// <param name="endDate">Pricing end date.</param> /// <param name="dateToCheck">Date to check.</param> /// <returns>True if it's valid.</returns> public static bool ValidateDateAgainstValidationPeriod(DateValidationType validationType, ValidationPeriod validationPeriod, DateTimeOffset startDate, DateTimeOffset endDate, DateTimeOffset dateToCheck) { InternalValidationPeriod validation; bool promoPeriodValid = false; switch (validationType) { case DateValidationType.Advanced: validation = InternalValidationPeriod.CreateAdvanced(validationPeriod); promoPeriodValid = validation.IsActive(dateToCheck); break; case DateValidationType.Standard: validation = InternalValidationPeriod.CreateStandard(startDate: startDate, endDate: endDate); promoPeriodValid = validation.IsActive(dateToCheck); break; default: throw new ArgumentOutOfRangeException("validationType", "Invalid Discount Validation Type: " + validationType); } return(promoPeriodValid); }
private Boolean CanAddElement(CompensationProvision element, DateValidationType dateValidationType) { Boolean isValid = false; switch (dateValidationType) { case DateValidationType.ALL: isValid = true; break; case DateValidationType.HISTORICAL: if (DateTime.Compare(element.ValidTo, DateTime.Now) < 0) { isValid = true; } break; case DateValidationType.ACTIVE: if (!element.IsClosed && DateTime.Compare(element.ValidFrom, DateTime.Now) < 0 && DateTime.Compare(element.ValidTo, DateTime.Now) > 0) { isValid = true; } break; case DateValidationType.ACTIVE_AND_FUTURE: if (!element.IsClosed) { if (DateTime.Compare(element.ValidFrom, DateTime.Now) < 0 && DateTime.Compare(element.ValidTo, DateTime.Now) > 0) //Active { isValid = true; } if (DateTime.Compare(element.ValidFrom, DateTime.Now) > 0) //Future { isValid = true; } } break; case DateValidationType.FUTURE: if (!element.IsClosed && DateTime.Compare(element.ValidFrom, DateTime.Now) > 0) { isValid = true; } break; default: isValid = false; break; } return isValid; }
public IEnumerable<CompensationProvision> MatchingOffers(Somebody offeror, Something persistentObject, DateValidationType dateValidationType) { if (offeror == null || persistentObject == null) { throw new ArgumentException("Missing offeror or object in price evaluation."); } List<CompensationProvision> validElements = new List<CompensationProvision>(); IEnumerable<CompensationProvision> offerCandidates = GetOffers(persistentObject); foreach (CompensationProvision cod in offerCandidates) { //Validate participating parts if (!cod.AgreedCompensation.IsSomebodyAValidOfferor(offeror)) { continue; //No match, check next offer. } if (CanAddElement(cod, dateValidationType)) { validElements.Add(cod); } } return validElements; }