public void TestAddDate_Multiple() { var occurrence = new EventOccurrence() { Event = new Event() }; occurrence.AddOccurrenceDate(new DateTime(2000, 1, 1), null); occurrence.AddOccurrenceDate(new DateTime(2000, 1, 2), null); occurrence.AddOccurrenceDate(new DateTime(2000, 1, 3), null); Assert.AreEqual(3, occurrence.EventOccurrenceDates.Count); }
public void FilterByOccurrenceDates_excludes_where_occurrence_has_all_future_dates_but_is_disabled() { //setup //event with one disabled occurrence with all dates in future (should not be in search results) var theEvent = new Event { Id = 1 }; var occurence = new EventOccurrence { IsEnabled = false }; occurence.AddOccurrenceDate(_clock.Now.AddDays(1), null); occurence.AddOccurrenceDate(_clock.Now.AddDays(2), null); theEvent.EventOccurrences.Add(occurence); _objectSet.Add(theEvent); //act var result = _objectSet.AsQueryable().FilterByOccurrenceDates(null, null, _clock); //assert AssertExcluded(result, 1); }
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 FilterByOccurrenceDates_excludes_where_occurrence_has_all_future_dates_but_out_of_range_end() { //setup var searchEndDate = _clock.Now.AddDays(10); //event with one occurrence with all dates in future (should not be in search results that specify an earlier date range) var theEvent = new Event { Id = 1 }; var occurence = new EventOccurrence { IsEnabled = true }; occurence.AddOccurrenceDate(_clock.Now.AddDays(11), null); occurence.AddOccurrenceDate(_clock.Now.AddDays(12), null); theEvent.EventOccurrences.Add(occurence); _objectSet.Add(theEvent); //act var result = _objectSet.AsQueryable().FilterByOccurrenceDates(null, searchEndDate, _clock); //assert AssertExcluded(result, 1); }
public void TestAddDate() { var occurrence = new EventOccurrence() { Event = new Event() }; var start = new DateTime(2000, 1, 1); var end = new DateTime(2000, 1, 2); occurrence.AddOccurrenceDate(start, end); Assert.AreEqual(1, occurrence.EventOccurrenceDates.Count); Assert.AreEqual(start, occurrence.EventOccurrenceDates.ElementAt(0).StartDate); Assert.AreEqual(end, occurrence.EventOccurrenceDates.ElementAt(0).EndDate); Assert.Greater(occurrence.LastUpdated, DateTime.MinValue); }
public static IEnumerable<EventOccurrence> GenerateOccurrences(IEnumerable<ScheduleEntry> scheduleEntries) { List<EventOccurrence> series = new List<EventOccurrence>(); foreach (var scheduleEntry in scheduleEntries) { var occurence = new EventOccurrence(); var dateRange = scheduleEntry.AsDateRange(); occurence.AddOccurrenceDate(dateRange.Start, dateRange.End); SetDefaultRegistrationDates(occurence, dateRange); series.Add(occurence); } return series; }
public void filter_removes_occurrences_with_dates_in_past() { var objectSet = new List<EventOccurrence>(); //occurrence with dates in past, present, future (should not be included in result) var occurence = new EventOccurrence { Id = 1 }; occurence.AddOccurrenceDate(_clock.Now.AddDays(-2), null); occurence.AddOccurrenceDate(_clock.Now.AddDays(-1), null); occurence.AddOccurrenceDate(_clock.Now, null); occurence.AddOccurrenceDate(_clock.Now.AddDays(1), null); occurence.AddOccurrenceDate(_clock.Now.AddDays(2), null); objectSet.Add(occurence); //occurrence with dates all in future (should be included in result) occurence = new EventOccurrence { Id = 2 }; occurence.AddOccurrenceDate(_clock.Now.AddDays(1), null); occurence.AddOccurrenceDate(_clock.Now.AddDays(2), null); objectSet.Add(occurence); var result = objectSet.AsQueryable().FilterByOccurrenceDates(null, null, _clock); Assert.AreEqual(1, result.Count()); Assert.AreEqual(2, result.ElementAt(0).Id); }
public static void SetOccurrenceDates(ObjectContext context, EventOccurrenceV2 source, EventOccurrence target) { if (source.EventOccurrenceDates == null) return; try { //remove all dates, we add all dates in source below var existingDates = target.EventOccurrenceDates.ToArray(); foreach (var item in existingDates) context.DeleteObject(item); //Add occurrence date to the target foreach (var item in source.EventOccurrenceDates) { target.AddOccurrenceDate(GetDateTime(item.StartDate).Value, GetDateTime(item.EndDate)); } } catch (Exception ex) { throw new BusinessException("Error processing event occurrence dates - " + ex.Message, ex); } }
public static EventOccurrence BuildNewOccurrence(ObjectContext objectContext, int newEventId, EventOccurrence item) { var newOccurrence = new EventOccurrence { ContactName = item.ContactName, ContactEmail = item.ContactEmail, ContactPhone = item.ContactPhone, ContactPhoneExtension = item.ContactPhoneExtension, Cost = item.Cost, CostCenter = item.CostCenter, OrgUnitId = item.OrgUnitId, MaximumAttendees = item.MaximumAttendees, LastUpdated = System.DateTime.UtcNow, PaymentProcessorConfigurationId = item.PaymentProcessorConfigurationId, IsRegistrationEnabled = item.IsRegistrationEnabled, IsNotificationListEnabled = item.IsNotificationListEnabled, IsNotifyContactEnabled = item.IsNotifyContactEnabled, SpecialInstructions = item.SpecialInstructions, LocationOrgUnitId = item.LocationOrgUnitId, LocationName = item.LocationName, Address1 = item.Address1, Address2 = item.Address2, City = item.City, PostalCode = item.PostalCode, StateId = item.StateId, CountryId = item.CountryId, Latitude = item.Latitude, Longitude = item.Longitude, IsGuestDemographicInfoRequired = item.IsGuestDemographicInfoRequired }; newOccurrence.SetPresenter(item.Presenter); newOccurrence.SetIsEnabled(item.IsEnabled); newOccurrence.SetEventId(newEventId); newOccurrence.SetAddress1(item.Address1); newOccurrence.SetAddress2(item.Address2); newOccurrence.SetRegistrationDates(item.RegistrationStartDate, item.RegistrationEndDate); if (item.IsPriceScheduleEnabled) newOccurrence.EnablePricingSchedule(); else newOccurrence.DisablePricingSchedule(); CaptureCostScheduleData(item, newOccurrence); objectContext.AddObject("EventOccurrences", newOccurrence); objectContext.SaveChanges(); //event occurrence documents foreach (var doc in item.EventOccurrencesDocuments) { var newDoc = new EventOccurrencesDocument() { DocumentPath = doc.DocumentPath, EventOccurrence = newOccurrence }; newOccurrence.EventOccurrencesDocuments.Add(newDoc); } //event occurrence dates foreach (var dateItem in item.EventOccurrenceDates) { newOccurrence.AddOccurrenceDate(dateItem.StartDate, dateItem.EndDate); } objectContext.SaveChanges(); return newOccurrence; }
public void TestSetIsEnabled_withFutureEventOccurrenceEnabled() { var anEvent = new Event(); anEvent.Id = 1; anEvent.IsEnabled = true; var occurrence = new EventOccurrence(); occurrence.IsEnabled = true; occurrence.AddOccurrenceDate(DateTime.Now.AddDays(5), DateTime.Now.AddDays(6)); anEvent.EventOccurrences.Add(occurrence); var disabled = false; anEvent.SetIsEnabled(disabled); }
public static void SetFirstOccurrenceDates(EventOccurrenceV2 source, EventOccurrence target) { if (string.IsNullOrEmpty(source.FirstOccurrenceDateStart)) return; var start = GetDateTime(source.FirstOccurrenceDateStart); var end = GetDateTime(source.FirstOccurrenceDateEnd); if (start.HasValue) target.AddOccurrenceDate(start.Value, end); }
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 FilterByOccurrenceDates_includes_where_occurrence_has_all_future_dates_within_90_days() { //setup //event with one occurrence with all dates in future within 90 days (should be in search results that do not specify a date range) var theEvent = new Event { Id = 1 }; var occurence = new EventOccurrence { IsEnabled = true }; occurence.AddOccurrenceDate(_clock.Now.Date.AddDays(89), null); occurence.AddOccurrenceDate(_clock.Now.Date.AddDays(90), null); theEvent.EventOccurrences.Add(occurence); _objectSet.Add(theEvent); //act var result = _objectSet.AsQueryable().FilterByOccurrenceDates(null, null, _clock); //assert AssertIncluded(result, 1); }
public void TestStartDate() { var occurrence = new EventOccurrence(); Assert.IsNull(occurrence.StartDate); occurrence.AddOccurrenceDate(new DateTime(2000, 1, 1), new DateTime(2000, 1, 2)); Assert.AreEqual(new DateTime(2000, 1, 1), occurrence.StartDate); occurrence.AddOccurrenceDate(new DateTime(2000, 1, 3), new DateTime(2000, 1, 4)); Assert.AreEqual(new DateTime(2000, 1, 1), occurrence.StartDate); }
public void FilterByOccurrenceDates_with_start_and_end_date_of_today_includes_where_occurrence_has_date_of_today() { //setup var searchStartDate = _clock.Now.Date; var searchEndDate = _clock.Now.Date; //event with one occurrence with all dates in future (should be in search results that specify a containing date range) var theEvent = new Event { Id = 1 }; var occurence = new EventOccurrence { IsEnabled = true }; occurence.AddOccurrenceDate(_clock.Now.Date, null); theEvent.EventOccurrences.Add(occurence); _objectSet.Add(theEvent); //act var result = _objectSet.AsQueryable().FilterByOccurrenceDates(searchStartDate, searchEndDate, _clock); //assert AssertIncluded(result, 1); }
public void TestRemoveDate() { var occurrence = new EventOccurrence() { Event = new Event() }; occurrence.AddOccurrenceDate(new DateTime(2000, 1, 1), null); occurrence.RemoveOccurrenceDate(0); Assert.AreEqual(0, occurrence.EventOccurrenceDates.Count); Assert.Greater(occurrence.LastUpdated, DateTime.MinValue); }
public void FilterByOccurrenceDates_includes_where_occurrence_has_all_future_dates_and_other_occurrence_has_past_dates() { //setup //event with an occurence with all dates in future, and an occurrence with dates in past, present and future (should be in search results) var theEvent = new Event { Id = 1 }; var occurence = new EventOccurrence { IsEnabled = true }; occurence.AddOccurrenceDate(_clock.Now.AddDays(-2), null); occurence.AddOccurrenceDate(_clock.Now.AddDays(-1), null); occurence.AddOccurrenceDate(_clock.Now, null); occurence.AddOccurrenceDate(_clock.Now.AddDays(1), null); occurence.AddOccurrenceDate(_clock.Now.AddDays(2), null); theEvent.EventOccurrences.Add(occurence); occurence = new EventOccurrence { IsEnabled = true }; occurence.AddOccurrenceDate(_clock.Now.AddDays(1), null); occurence.AddOccurrenceDate(_clock.Now.AddDays(2), null); theEvent.EventOccurrences.Add(occurence); _objectSet.Add(theEvent); //act var result = _objectSet.AsQueryable().FilterByOccurrenceDates(null, null, _clock); //assert AssertIncluded(result, 1); }
public void TestCalculateCost_LateAbsolute() { var lateDate = new DateTime(2000, 1, 1); var defaultCost = 10M; var lateCost = 15M; var ev = new Event(); var occurrence = new EventOccurrence() { Event = ev }; occurrence.AddOccurrenceDate(lateDate.AddDays(30), lateDate.AddDays(31)); occurrence.Cost = defaultCost; var lateSchedule = new PricingSchedule(lateCost, lateDate); occurrence.SetLateRegistrationPrice(lateSchedule); occurrence.EnablePricingSchedule(); Assert.AreEqual(defaultCost, occurrence.CalculateCost(lateDate.AddDays(-1))); Assert.AreEqual(lateCost, occurrence.CalculateCost(lateDate)); Assert.AreEqual(lateCost, occurrence.CalculateCost(lateDate.AddDays(1))); occurrence.DisablePricingSchedule(); Assert.AreEqual(defaultCost, occurrence.CalculateCost(lateDate.AddDays(-1))); Assert.AreEqual(defaultCost, occurrence.CalculateCost(lateDate)); Assert.AreEqual(defaultCost, occurrence.CalculateCost(lateDate.AddDays(1))); }
public void TestEffectiveRegistrationEndDate() { var ev = new Event(); var occurrence = new EventOccurrence() { Event = ev }; occurrence.AddOccurrenceDate(new DateTime(2000, 1, 1), new DateTime(2000, 1, 2)); occurrence.AddOccurrenceDate(new DateTime(1999, 12, 30), new DateTime(1999, 12, 31)); var expectedEffectiveRegistrationEndDate = new DateTime(1999, 12, 29); //day before start date Assert.AreEqual(expectedEffectiveRegistrationEndDate, occurrence.EffectiveRegistrationEndDate); occurrence.SetRegistrationDates(null, new DateTime(1999, 12, 15)); expectedEffectiveRegistrationEndDate = new DateTime(1999, 12, 15); Assert.AreEqual(expectedEffectiveRegistrationEndDate, occurrence.EffectiveRegistrationEndDate); }
public void TestCalculateCost_LateRelative() { var firstOccurrenceDate = new DateTime(2000, 1, 1); var lateDays = 5; var defaultCost = 10M; var lateCost = 15M; var ev = new Event(); var occurrence = new EventOccurrence() { Event = ev }; occurrence.AddOccurrenceDate(firstOccurrenceDate, firstOccurrenceDate.AddHours(1)); occurrence.Cost = defaultCost; var lateSchedule = new PricingSchedule(lateCost, lateDays); occurrence.SetLateRegistrationPrice(lateSchedule); occurrence.SetRegistrationDates(null, firstOccurrenceDate.AddDays(-1)); occurrence.EnablePricingSchedule(); Assert.AreEqual(defaultCost, occurrence.CalculateCost(firstOccurrenceDate.AddDays(-6))); Assert.AreEqual(lateCost, occurrence.CalculateCost(firstOccurrenceDate.AddDays(-5))); Assert.AreEqual(lateCost, 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))); }