Exemplo n.º 1
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);
                    }
                }
            }
        }