private static void AddEventToCalendar( ObservableCollection <CalendarDayModel> calendarGroup, EventItemModel newEvent, DateTime firstDayOfMonth, DateTime lastDayOfMonth, int offset) { int start; if (newEvent.EventBegin < firstDayOfMonth) { start = 1; } else { start = newEvent.EventBegin.Day; } int end; if (newEvent.EventEnd > lastDayOfMonth) { end = lastDayOfMonth.Day; } else { end = newEvent.EventEnd.Day; } if (start == end) { calendarGroup[start + offset]. DayEvents. Add(new DayEvent(newEvent, EventDurationType.None)); } else { for (var day = start; day <= end; day++) { DayEvent dayEvent; if (day == start) { dayEvent = new DayEvent(newEvent, EventDurationType.BeginMultiday); } else if (day == end) { dayEvent = new DayEvent(newEvent, EventDurationType.EndMultiday); } else { dayEvent = new DayEvent(newEvent, EventDurationType.MiddleMultiday); } calendarGroup[day + offset].DayEvents.Add(dayEvent); } } }
/// <summary> /// Add event to calendar for display /// </summary> public void AddOrUpdateEvent(BaseEventItemModel theEventItemModel) { EventItemModel eventItemModel; if (theEventItemModel is NewEventItemModel) { SqLiteManager.SaveNewEvent(theEventItemModel as NewEventItemModel); eventItemModel = ConvertEvent(theEventItemModel as NewEventItemModel); } else { SqLiteManager.UpdateExistingEvent(theEventItemModel as EventItemModel); eventItemModel = theEventItemModel as EventItemModel; HideEvent(eventItemModel as EventItemModel); } if (!(eventItemModel.EventBegin < FirstDayOfMonth || eventItemModel.EventEnd > LastDayOfMonth.AddDays(1))) { int offset = SqLiteManager.GetCalendarMonthOffset(CurrentDate.Month, CurrentDate.Year); int start; if (eventItemModel.EventBegin < FirstDayOfMonth) { start = 1; } else { start = eventItemModel.EventBegin.Day; } int end; if (eventItemModel.EventEnd > LastDayOfMonth) { end = LastDayOfMonth.Day; } else { end = eventItemModel.EventEnd.Day; } if (start == end) { CalendarDays[start + offset - 1]. DayEvents. Add(new DayEvent(eventItemModel, EventDurationType.None)); } else { for (var day = start; day <= end; day++) { DayEvent dayEvent; if (day == start) { dayEvent = new DayEvent(eventItemModel, EventDurationType.BeginMultiday); } else if (day == end) { dayEvent = new DayEvent(eventItemModel, EventDurationType.EndMultiday); } else { dayEvent = new DayEvent(eventItemModel, EventDurationType.MiddleMultiday); } CalendarDays[day + offset].DayEvents.Add(dayEvent); } } } }