public static void CaptureCostScheduleData(EventOccurrenceV2 source, EventOccurrence target) { Decimal? sourceEarlyCost = GetDecimalValue(source.EarlyCost); var sourceEarlyCostEndDate = GetDateTime(source.EarlyCostEndDate); var sourceEarlyCostEndDays = GetNullableInt(source.EarlyCostEndDays); var earlyScheduleHasNecessaryValues = sourceEarlyCost.HasValue && (sourceEarlyCostEndDate.HasValue || sourceEarlyCostEndDays.HasValue); if (earlyScheduleHasNecessaryValues) { var hasEarlyDateValue = sourceEarlyCostEndDate.HasValue; if (hasEarlyDateValue) { var EarlyCostPriceSchedule = new PricingSchedule(sourceEarlyCost.Value, sourceEarlyCostEndDate.Value); target.SetEarlyRegistrationPrice(EarlyCostPriceSchedule); } else { var EarlyCostPriceSchedule = new PricingSchedule(sourceEarlyCost.Value, sourceEarlyCostEndDays.Value); target.SetEarlyRegistrationPrice(EarlyCostPriceSchedule); } } else { target.SetEarlyRegistrationPrice(null); } Decimal? sourceLateCost = GetDecimalValue(source.LateCost); var sourceLateCostStartDate = GetDateTime(source.LateCostStartDate); var sourceLateCostStartDays = GetNullableInt(source.LateCostStartDays); var lateScheduleHasNecessaryValues = sourceLateCost.HasValue && (sourceLateCostStartDate.HasValue || sourceLateCostStartDays.HasValue); if (lateScheduleHasNecessaryValues) { var hasLateDateValue = sourceLateCostStartDate.HasValue; if (hasLateDateValue) { var LateCostPriceSchedule = new PricingSchedule(sourceLateCost.Value, sourceLateCostStartDate.Value); target.SetLateRegistrationPrice(LateCostPriceSchedule); } else { var LateCostPriceSchedule = new PricingSchedule(sourceLateCost.Value, sourceLateCostStartDays.Value); target.SetLateRegistrationPrice(LateCostPriceSchedule); } } else { target.SetLateRegistrationPrice(null); } }
public void TestAddDate_DisablePricingSchedule() { var occurrence = new EventOccurrence() { Event = new Event() }; occurrence.AddOccurrenceDate(new DateTime(2000, 1, 1), new DateTime(2000, 1, 2)); var earlySchedule = new PricingSchedule(10M, new DateTime(1999, 01, 01)); occurrence.SetEarlyRegistrationPrice(earlySchedule); var lateSchedule = new PricingSchedule(10M, new DateTime(1999, 12, 01)); occurrence.SetEarlyRegistrationPrice(earlySchedule); occurrence.EnablePricingSchedule(); occurrence.AddOccurrenceDate(new DateTime(1999, 12, 30), new DateTime(1999, 12, 31)); Assert.IsFalse(occurrence.IsPriceScheduleEnabled); }
public void TestCalculateCost_EarlyAbsolute() { var earlyCuttofDate = new DateTime(2000, 1, 1); var defaultCost = 10M; var earlyCost = 5M; var ev = new Event(); ev.Cost = defaultCost; var occurrence = new EventOccurrence() { Event = ev, Cost = defaultCost }; occurrence.AddOccurrenceDate(new DateTime(2000, 3, 1), new DateTime(2000, 3, 2)); var earlySchedule = new PricingSchedule(earlyCost, earlyCuttofDate); occurrence.SetEarlyRegistrationPrice(earlySchedule); occurrence.EnablePricingSchedule(); Assert.AreEqual(earlyCost, occurrence.CalculateCost(earlyCuttofDate.AddDays(-1))); Assert.AreEqual(earlyCost, occurrence.CalculateCost(earlyCuttofDate)); Assert.AreEqual(defaultCost, occurrence.CalculateCost(earlyCuttofDate.AddDays(1))); occurrence.DisablePricingSchedule(); Assert.AreEqual(defaultCost, occurrence.CalculateCost(earlyCuttofDate.AddDays(-1))); Assert.AreEqual(defaultCost, occurrence.CalculateCost(earlyCuttofDate)); Assert.AreEqual(defaultCost, occurrence.CalculateCost(earlyCuttofDate.AddDays(1))); }
public void TestIsEarlyAndLateAbsoluteMode_earlyRelative() { var ev = new Event(); var occurrence = new EventOccurrence() { Event = ev }; var earlySchedule = new PricingSchedule(10M, 30); occurrence.SetEarlyRegistrationPrice(earlySchedule); Assert.IsFalse(occurrence.IsEarlyAndLateAbsoluteMode); }
public void TestIsEarlyAndLateAbsoluteMode_earlyAbsoluteLateRelative() { var ev = new Event(); var occurrence = new EventOccurrence() { Event = ev }; var earlySchedule = new PricingSchedule(10M, new DateTime(1999, 01, 01)); occurrence.SetEarlyRegistrationPrice(earlySchedule); var lateSchedule = new PricingSchedule(10M, 10); occurrence.SetLateRegistrationPrice(lateSchedule); // this case shouldn't be allowed in the wild... // still though, this test should pass Assert.IsFalse(occurrence.IsEarlyAndLateAbsoluteMode); }
public void TestIsEarlyAndLateAbsoluteMode_earlyAbsoluteLateAbsolute() { var ev = new Event(); var occurrence = new EventOccurrence() { Event = ev }; var earlySchedule = new PricingSchedule(10M, new DateTime(1999, 01, 01)); occurrence.SetEarlyRegistrationPrice(earlySchedule); var lateSchedule = new PricingSchedule(10M, new DateTime(1999, 02, 01)); occurrence.SetLateRegistrationPrice(lateSchedule); Assert.IsTrue(occurrence.IsEarlyAndLateAbsoluteMode); }
public void TestEnablePricingSchedule_EarlySpecified() { var ev = new Event(); var occurrence = new EventOccurrence() { Event = ev }; var pricingSchedule = new PricingSchedule(10M, 30); occurrence.SetEarlyRegistrationPrice(pricingSchedule); occurrence.EnablePricingSchedule(); Assert.IsTrue(occurrence.IsPriceScheduleEnabled); }
public void TestCalculateCost_EarlyRelative() { var firstOccurrenceDate = new DateTime(2000, 1, 1); var defaultCost = 10M; var earlyCost = 5M; var earlyDays = 5; var ev = new Event(); var occurrence = new EventOccurrence() { Event = ev }; occurrence.AddOccurrenceDate(firstOccurrenceDate, firstOccurrenceDate.AddHours(1)); occurrence.Cost = defaultCost; var earlySchedule = new PricingSchedule(earlyCost, earlyDays); occurrence.SetEarlyRegistrationPrice(earlySchedule); occurrence.SetRegistrationDates(null, firstOccurrenceDate.AddDays(-1)); occurrence.EnablePricingSchedule(); Assert.AreEqual(earlyCost, occurrence.CalculateCost(firstOccurrenceDate.AddDays(-6))); Assert.AreEqual(earlyCost, occurrence.CalculateCost(firstOccurrenceDate.AddDays(-5))); Assert.AreEqual(defaultCost, occurrence.CalculateCost(firstOccurrenceDate.AddDays(-4))); occurrence.DisablePricingSchedule(); Assert.AreEqual(defaultCost, occurrence.CalculateCost(firstOccurrenceDate.AddDays(-6))); Assert.AreEqual(defaultCost, occurrence.CalculateCost(firstOccurrenceDate.AddDays(-5))); Assert.AreEqual(defaultCost, occurrence.CalculateCost(firstOccurrenceDate.AddDays(-4))); }
private static void CaptureCostScheduleData(EventOccurrence source, EventOccurrence target) { var earlyScheduleHasNecessaryValues = source.EarlyCost.HasValue && (source.EarlyCostEndDate.HasValue || source.EarlyCostEndDays.HasValue); if (earlyScheduleHasNecessaryValues) { var hasEarlyDateValue = source.EarlyCostEndDate.HasValue; if (hasEarlyDateValue) { var EarlyCostPriceSchedule = new PricingSchedule(source.EarlyCost.Value, source.EarlyCostEndDate.Value); target.SetEarlyRegistrationPrice(EarlyCostPriceSchedule); } else { var EarlyCostPriceSchedule = new PricingSchedule(source.EarlyCost.Value, source.EarlyCostEndDays.Value); target.SetEarlyRegistrationPrice(EarlyCostPriceSchedule); } } else { target.SetEarlyRegistrationPrice(null); } var lateScheduleHasNecessaryValues = source.LateCost.HasValue && (source.LateCostStartDate.HasValue || source.LateCostStartDays.HasValue); if (lateScheduleHasNecessaryValues) { var hasLateDateValue = source.LateCostStartDate.HasValue; if (hasLateDateValue) { var LateCostPriceSchedule = new PricingSchedule(source.LateCost.Value, source.LateCostStartDate.Value); target.SetLateRegistrationPrice(LateCostPriceSchedule); } else { var LateCostPriceSchedule = new PricingSchedule(source.LateCost.Value, source.LateCostStartDays.Value); target.SetLateRegistrationPrice(LateCostPriceSchedule); } } else { target.SetLateRegistrationPrice(null); } }