示例#1
0
        /// <summary>
        /// Deletes the event.
        /// </summary>
        /// <remarks>Add except date in recurrence for this event</remarks>
        /// <param name="eventInfo"></param>
        public void DeleteEvent(ulong eventId)
        {
            if (EventProviderHelper.CheckEventBelong(GetEventType(), eventId))
            {
                DateTime      recurDate;
                CalendarEvent calEvent;

                ulong eventKey = EventProviderHelper.GetEventKey(eventId);

                if (DecryptId(eventKey, out recurDate, out calEvent))
                {
                    CalendarEventRecurrence[] eventRecurrs = CalendarEventRecurrence.List(new FilterElement("EventId",
                                                                                                            FilterElementType.Equal, calEvent.PrimaryKeyId.Value));

                    foreach (CalendarEventRecurrence eventRecurr in eventRecurrs)
                    {
                        // Add exception date
                        if (recurDate <= eventRecurr.DtEnd &&
                            recurDate >= eventRecurr.DtStart)
                        {
                            eventRecurr.Exdate = eventRecurr.Exdate + ";" + recurDate.ToString();
                            eventRecurr.Save();
                            break;
                        }
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// Events the delete handler.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="Mediachase.Ibn.Calendar.CalendarEventArgs"/> instance containing the event data.</param>
        private void PrimaryEventDeleteHandler(object sender, CalendarEventArgs args)
        {
            CalendarEventRecurrence[] eventRecurrs =
                CalendarEventRecurrence.List(new FilterElement("EventId",
                                                               FilterElementType.Equal,
                                                               args.CalEvent.PrimaryKeyId.Value));

            foreach (CalendarEventRecurrence eventRecurr in eventRecurrs)
            {
                eventRecurr.Delete();
            }
        }
示例#3
0
        /// <summary>
        /// Gets the event info collection.
        /// </summary>
        /// <param name="dtStart">The dt start.</param>
        /// <param name="dtEnd">The dt end.</param>
        /// <returns></returns>
        public EventInfoCollections GetEventInfoCollection(DateTime dtStart,
                                                           DateTime dtEnd)
        {
            EventInfoCollections retVal = new EventInfoCollections();

            if (_calendarId == -1)
            {
                throw new NullReferenceException("calendarId");
            }

            //querying non virtual events
            if (dtStart == DateTime.MinValue && dtEnd == DateTime.MaxValue)
            {
                return(retVal);
            }

            CalendarEvent[] calEvents = CalendarEvent.List(new FilterElement("PrimaryCalendarId",
                                                                             FilterElementType.Equal, _calendarId));

            foreach (CalendarEvent calEvent in calEvents)
            {
                CalendarEventRecurrence[] eventRecurrs = CalendarEventRecurrence.List(new FilterElement("EventId",
                                                                                                        FilterElementType.Equal, calEvent.PrimaryKeyId.Value));

                List <DateTime> eventRecurrResult = new List <DateTime>();

                foreach (CalendarEventRecurrence eventRecurr in eventRecurrs)
                {
                    List <DateTime> recurrList = GetRecurrence(eventRecurr.Rrule,
                                                               eventRecurr.Exrule,
                                                               eventRecurr.Exdate,
                                                               calEvent.DtStart, dtEnd);

                    //skip recurrence equals beginning owner calendar event
                    recurrList.Remove(calEvent.DtStart);

                    eventRecurrResult = (JoinList(eventRecurrResult, recurrList, false));
                }

                //Begin create virtual events
                foreach (DateTime eventDate in eventRecurrResult)
                {
                    retVal.Add(MakeEventInfo(eventDate, calEvent));
                }
            }

            return(retVal);
        }