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