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;
        }
Example #10
0
        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)));
        }