/// <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; } } } } }
/// <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(); } }
/// <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); }