/// <summary> /// Binds a data source to the invoked server control and all its child controls. /// </summary> public override void DataBind() { base.DataBind(); CalendarEventList.DataSource = this.UpcomingEvents; PageList.DataSource = this.UpcomingEvents; listPanel.Visible = CalendarEventList.DataCount != 0; PageList.DataBind(); CalendarEventList.DataBind(); PageList.DataBind(); }
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) { EventList = (CalendarEventList )ViewState["EventList"]; path = (string)ViewState["path"]; if (EventList == null) { EventList.LoadXML_months(path, DateTime.Now.Month, 1, DateTime.Now.Year); } DateTime t = e.Day.Date; e.Day.IsSelectable = false; foreach (CalendarEvent ev in EventList.EventList) { if ((ev.date.Day == t.Day) && (ev.date.Month == t.Month) && Display_CalendarItem(ev)) { string s = ev.title; if (s.Length > 14) { s = s.Substring(0, 14) + "..."; } e.Day.IsSelectable = true; e.Cell.ForeColor = System.Drawing.Color.Black; Label l1 = new Label(); l1.Text = "<BR>" + s; l1.Font.Size = FontUnit.XSmall; e.Cell.Controls.Add(l1); if (ev.Categories.Contains("Event")) { l1.ForeColor = System.Drawing.Color.Red; } if (ev.Categories.Contains("Meeting")) { l1.ForeColor = System.Drawing.Color.Green; } if (ev.Categories.Contains("Match")) { l1.ForeColor = System.Drawing.Color.Chocolate; } if (ev.Categories.Contains("Visit")) { l1.ForeColor = System.Drawing.Color.Blue; } } } }
public void GetComparingEventsTest() { List <string> s = new List <string>(); s.Add("*****@*****.**"); s.Add("*****@*****.**"); //CalendarEventList events = calendar.GetComparingEvents(DateTime.Today, DateTime.Today, s, "Free Busy View"); CalendarEventList events = service.GetComparingEvents(calendar, period.Today(), s, "Free Busy View", false); CalendarEvent ev = new CalendarEvent("", "all free until ", "", new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 9, 0, 0), new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 10, 0, 0)); CalendarEvent ev2 = new CalendarEvent("", "all free until ", "", new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 12, 30, 0), new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 2, 0, 0).AddHours(12)); CalendarEventList l = new CalendarEventList(); l.Add(ev); l.Add(ev2); Console.WriteLine("################################################################################"); Console.WriteLine("test result " + events.Count); //Assert.AreEqual(l, events, "Events are not equal " + events.Count); }
private void UpdateTable() { if (RadioButtonList2.Items.FindByText("Display").Selected) { List <CalendarEvent> EventFound = new List <CalendarEvent>(); DateTime t1 = Calendar1.SelectedDate; //Label_Heading.Text = "Events for " + t1.ToLongDateString(); EventList = (CalendarEventList)ViewState["EventList"]; foreach (CalendarEvent ev in EventList.EventList) { if ((ev.date.Month == t1.Month) && (ev.date.Day == t1.Day)) { if (Display_CalendarItem(ev)) { EventFound.Add(ev); } } } servercontent.InnerHtml = DisplayEventsAsTable(EventFound, false); } }
public CalendarEventList GetOthersEvents(IGoogleCalendar calendar, DateTime start, DateTime end , String CalendarIDs) { log.Debug("Select events, period=" + start + " - " + end); CalendarEventList selectedEvents = new CalendarEventList(); foreach (CalendarEvent ev in calendar.GetOthersEvents(start, end, CalendarIDs)) { try { if (MatchStartDate(ev.Start, start) && MatchEndDate(ev.End, end)) { selectedEvents.Add(ev); } } catch (Exception ex) { log.Error("Failed to get events for a specified period", ex); log.Info("Event info: " + ev.ToString()); } } log.Debug("Successfully selected events for a specified period"); return selectedEvents; }
public void GetComparingEventsTest() { List<string> s = new List<string>(); s.Add("*****@*****.**"); s.Add("*****@*****.**"); //CalendarEventList events = calendar.GetComparingEvents(DateTime.Today, DateTime.Today, s, "Free Busy View"); CalendarEventList events = service.GetComparingEvents(calendar, period.Today(), s, "Free Busy View",false); CalendarEvent ev = new CalendarEvent("", "all free until ", "", new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 9, 0, 0), new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 10, 0, 0)); CalendarEvent ev2 = new CalendarEvent("", "all free until ", "", new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 12, 30, 0), new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 2, 0, 0).AddHours(12)); CalendarEventList l = new CalendarEventList(); l.Add(ev); l.Add(ev2); Console.WriteLine("################################################################################"); Console.WriteLine("test result " + events.Count); //Assert.AreEqual(l, events, "Events are not equal " + events.Count); }
public CalendarEventList SearchEvents(CalendarEventList events, String keyword) { CalendarEventList selectedEvents = new CalendarEventList(); try { if (!String.IsNullOrEmpty(keyword)) { foreach (CalendarEvent ev in events) { if (!string.IsNullOrEmpty(ev.Title)) { if (ev.Title.ToLower().Contains(keyword.ToLower())) { selectedEvents.Add(ev); } } else if (!string.IsNullOrEmpty(ev.Location)) { if (ev.Location.ToLower().Contains(keyword.ToLower())) { selectedEvents.Add(ev); } } else if (!string.IsNullOrEmpty(ev.Location)) { if (ev.Content.ToLower().Contains(keyword.ToLower())) { selectedEvents.Add(ev); } } } } } catch(Exception ex) { log.Error("Failed to get events for a specified keyword \"" + keyword + "\"", ex); } return selectedEvents; }
public CalendarEventList Sort(CalendarEventList allEvents) { switch (SortParam) { case SortBy.start: { return allEvents.SortByStartDate(SortOrderAscending); } case SortBy.status: { return allEvents.SortByStatus(SortOrderAscending); } case SortBy.title: { return allEvents.SortByTitle(SortOrderAscending); } case SortBy.location: { return allEvents.SortByLocation(SortOrderAscending); } case SortBy.content: { return allEvents.SortByContent(SortOrderAscending); } case SortBy.end: { return allEvents.SortByEndDate(SortOrderAscending); } default: { return allEvents; } } }
public CalendarEventList GetComparingEvents(DateTime timeMin, DateTime timeMax, List<String> CalendarIDs, String ViewFormat,bool primaryEmail) { allFree = new List<FreeTime>(); finalFree = new List<FreeTime>(); FinalallFree= new Dictionary<FreeTime, int>(); FinalallFreeConnection = new Dictionary<FreeTime, String>(); FreeBusy = new Dictionary<FreeTime, string>(); FinalFreeBusy = new Dictionary<FreeTime, string>(); primary = primaryEmail; if(primary) firstEmail = CalendarIDs[0].Substring(0, CalendarIDs[0].IndexOf(".")); //Console.WriteLine("fffffffffffff "+ firstEmail); log.Debug("Try to compare events from other Google Calendars "); CalendarEventList calendarEvents = new CalendarEventList(); Dictionary<string, List<FreeTime>> personAndFreeTimes = new Dictionary<string, List<FreeTime>>(); List<String> noEvents = new List<string>(); try { foreach (String calendarID in CalendarIDs) { List<FreeTime> freeTimeList = new List<FreeTime>(); if (timeMax.DayOfWeek == 0) timeMax = timeMax.AddDays(-2); if (timeMax.DayOfWeek == DayOfWeek.Saturday) timeMax = timeMax.AddDays(-1); if (timeMin.DayOfWeek == DayOfWeek.Saturday) timeMax = timeMax.AddDays(+2); if (timeMin.DayOfWeek == DayOfWeek.Sunday) timeMax = timeMax.AddDays(+1); EventsResource.ListRequest events = service.Events.List(calendarID); events.SingleEvents = true; events.MaxResults = 2500; events.TimeMin = timeMin; events.TimeMax = timeMax; Events eventList = events.Execute(); FreeBusyRequest request = new FreeBusyRequest(); List<FreeBusyRequestItem> requestItems = new List<FreeBusyRequestItem>(); request.TimeMin = timeMin; request.TimeMax = timeMax; FreeBusyRequestItem r = new FreeBusyRequestItem(); r.Id = calendarID; request.Items = new List<FreeBusyRequestItem>(); request.Items.Add(r); FreebusyResource.QueryRequest TestRequest = service.Freebusy.Query(request); var responseOBJ = TestRequest.Execute(); int count = responseOBJ.Calendars[calendarID].Busy.Count; if (count == 0) { FreeTime free = new FreeTime(); free.setStart(new DateTime(timeMax.Year, timeMax.Month, timeMax.Day, 9, 0, 0)); free.setEnd(new DateTime(timeMax.Year, timeMax.Month, timeMax.Day, 5, 0, 0).AddHours(12)); free.setEmail(calendarID); freeTimeList.Add(free); //Console.WriteLine(calendarID + " " + free.Start + " " + free.End); } if (count != 0) { // Console.WriteLine(timeMax.Date + "date max "); //Console.WriteLine(timeMin.Date + "date min "); // Console.WriteLine(DateTime.Today + "fff"); DateTime d = timeMin.Date; Boolean found = false; if (d.DayOfWeek == DayOfWeek.Sunday) d = d.AddDays(1); // Console.WriteLine("first "+ d.Date); if (timeMax.Date.CompareTo(timeMin.Date) != 0 && d.DayOfWeek != DayOfWeek.Saturday && d.DayOfWeek != DayOfWeek.Sunday) { //Console.WriteLine("second " + d.Date); while (d <= timeMax) { found = false; foreach (TimePeriod n in responseOBJ.Calendars[calendarID].Busy) { //Console.WriteLine("third " + d.Date); //Console.WriteLine(d.CompareTo(n.Start.Value.Date) + " d: " + d.Date + "n : " + n.Start.Value.Date); if (d.CompareTo(n.Start.Value.Date) == 0) { found = true; break; } } // Console.WriteLine("fourth " + d.Date + " " + found); if (!found) { //Console.WriteLine("not found " + d.Date); FreeTime free = new FreeTime(); free.setStart(new DateTime(d.Year, d.Month, d.Day, 9, 0, 0)); free.setEnd(new DateTime(d.Year, d.Month, d.Day, 5, 0, 0).AddHours(12)); free.setEmail(calendarID); freeTimeList.Add(free); // Console.WriteLine("adding to list " + free.Start + " " + free.End); } d= d.AddDays(+1); if (d.DayOfWeek == DayOfWeek.Saturday) d = d.AddDays(+2); } } int i = 0; int j = 0; Boolean singleevent = false; // Console.WriteLine("the count " + count); if (count == 1) singleevent = true; while (i < count && count != 0) { FreeTime free = new FreeTime(); Boolean startatNine = false; Boolean endFive = false; DateTime starttime = (responseOBJ.Calendars[calendarID].Busy[i].Start).Value; DateTime endtime = (responseOBJ.Calendars[calendarID].Busy[i].End).Value; // Console.WriteLine(" lets see " + starttime + " " + endtime); DateTime startworkhours = new DateTime(starttime.Year, starttime.Month, starttime.Day, 9, 0, 0); DateTime endworkhours = new DateTime(starttime.Year, starttime.Month, starttime.Day, 5, 0, 0).AddHours(12); if (i == 0 && singleevent == false) { if (j == 0 && (DateTime.Compare(startworkhours, starttime) != 0)) { free = subtractFromNine(starttime, endtime, i); free.setEmail(calendarID); if ((DateTime.Compare(starttime.Date, ((DateTime)responseOBJ.Calendars[calendarID].Busy[i + 1].Start).Date) < 0)) { i--; j++; } } else if (startworkhours.Equals(starttime) || j > 0) { //Console.WriteLine("urghhhhh" + DateTime.Compare(starttime.Date, ((DateTime)responseOBJ.Calendars[calendarID].Busy[i + 1].Start).Date)); if (startworkhours.Equals(starttime) && j == 0) { // Console.WriteLine("inside second if "); startatNine = true; if (DateTime.Compare(starttime.Date, ((DateTime)responseOBJ.Calendars[calendarID].Busy[i + 1].Start).Date) < 0) { // Console.WriteLine("::::::::::::::::::::::::::::::::::::::::::::::::::::"); j++; i--; } } else if ((DateTime.Compare(starttime.Date, ((DateTime)responseOBJ.Calendars[calendarID].Busy[i + 1].Start).Date) < 0) && j > 0) { //Console.WriteLine("inside first if "); free = subtractFromFive(starttime, endtime, i); free.setEmail(calendarID); j = 0; } } } else if (i + 1 == count && singleevent == false) { if (j == 0) { //Console.WriteLine(" else if (i + 1 == count && !(endworkhours.equals(endtime)) && singleevent == false) j==0 "); DateTime tempstarttime = (responseOBJ.Calendars[calendarID].Busy[i - 1].Start).Value; DateTime tempendtime = (responseOBJ.Calendars[calendarID].Busy[i - 1].End).Value; if ((DateTime.Compare(starttime.Date, tempendtime.Date) == 0)) { //Console.WriteLine(" entered if "); TimeSpan interval = starttime - tempendtime; free.setStart(starttime - interval); //Console.WriteLine(free.Start); free.setEnd(starttime); free.setEmail(calendarID); } else { free = subtractFromNine(starttime, endtime, i); } if (!(endworkhours.Equals(endtime))) { j++; i--; } } else { if (!(endworkhours.Equals(endtime))) { free = subtractFromFive(starttime, endtime, i); j = 0; } else endFive = true; } } else if (singleevent) { //Console.WriteLine("inside single event " + j + " " + starttime + " " + startworkhours); if (j == 0 && !(DateTime.Compare(starttime, startworkhours) == 0)) { free = subtractFromNine(starttime, endtime, i); if (!(DateTime.Compare(endtime, endworkhours) == 0)) { j++; i--; } } else { if (!(DateTime.Compare(endtime, endworkhours) == 0)) { free = subtractFromFive(starttime, endtime, i); free.setEmail(calendarID); j = 0; } else endFive = true; } } else { //Console.WriteLine("yaaaaaaaaaaaaaaarab"); DateTime tempstarttime = (responseOBJ.Calendars[calendarID].Busy[i - 1].Start).Value; DateTime tempendtime = (responseOBJ.Calendars[calendarID].Busy[i - 1].End).Value; if (j == 0) { if ((DateTime.Compare(tempendtime.Date, starttime.Date) == 0)) { //Console.WriteLine("entered the first"); TimeSpan interval = starttime - tempendtime; free.setStart(starttime - interval); free.setEnd(starttime); free.setEmail(calendarID); } else { //Console.WriteLine("entered the second"); if (startworkhours.Equals(starttime)) { // Console.WriteLine("statrt at nine"); startatNine = true; } else { free = subtractFromNine(starttime, endtime, i); } } if ((DateTime.Compare(starttime.Date, ((DateTime)(responseOBJ.Calendars[calendarID].Busy[i + 1].Start).Value).Date) < 0)) { //Console.WriteLine("entered the comparason"); i--; j++; } } else { //Console.WriteLine("supposed " + endworkhours.Equals(endtime)); if (!(endworkhours.Equals(endtime))) { free = subtractFromFive(starttime, endtime, i); free.setEmail(calendarID); j = 0; } else { endFive = true; j = 0; } } } i++; if (!startatNine && !endFive) { //Console.WriteLine("befor adding " + free.Start + " " + free.End); freeTimeList.Add(free); // Console.WriteLine(calendarID + " " + free.Start + " " + free.End); } //Console.WriteLine("after adding to list"); }//end while }//end if (count !=0 ) personAndFreeTimes.Add(calendarID.Substring(0, calendarID.IndexOf(".")), freeTimeList); //foreach (String k in personAndFreeTimes.Keys) //{ // foreach (FreeTime f in personAndFreeTimes[k]) // //Console.WriteLine(k + " " + f.Start + " " + f.End); //} freeTimeList.Sort(); }//end foreach numberOfEmails = personAndFreeTimes.Count; Stack myStack = new Stack(); foreach (String key in personAndFreeTimes.Keys) { myStack.Push(personAndFreeTimes[key]); } // ----------------------------------- All People View -------------------------------------------------- // if (ViewFormat == "All People") { Stack s1 = new Stack(); Stack s2 = new Stack(); foreach (String key in personAndFreeTimes.Keys) { // string result = noEvents.Find(delegate(String i) { return i == key; }); // if(result!=null) KeyValuePair<List<FreeTime>, String> pair = new KeyValuePair<List<FreeTime>, String>(personAndFreeTimes[key], key); s1.Push(pair); s2.Push(pair); //Console.WriteLine("pair " + pair.Key.ToString() + " " + pair.Value); } while (s1.Count != 0) { KeyValuePair<List<FreeTime>, String> sp1 = (KeyValuePair<List<FreeTime>, String>)s1.Pop(); while (s2.Count != 0) { KeyValuePair<List<FreeTime>, String> sp2 = (KeyValuePair<List<FreeTime>, String>)s2.Pop(); if (!(sp1.Value.Equals(sp2.Value))) FindMutual2(sp1, sp2); } s2 = s1; } FinalMutual2(); if (personAndFreeTimes.Count > 2) { FinalMutual3(); FinalMutual3(); } //Console.WriteLine(" back to main"); // FinalMutual4(); calendarEvents = ConvertToMutualCalendarEvents(FinalFreeBusy); }//end if All People view // ----------------------------------- -------------------------------------------------- // // ----------------------------------- "Some People" View -------------------------------------------------- // if (ViewFormat == "Some People") { Stack s1 = new Stack(); Stack s2 = new Stack(); foreach (String key in personAndFreeTimes.Keys) { KeyValuePair<List<FreeTime>, String> pair = new KeyValuePair<List<FreeTime>, String>(personAndFreeTimes[key], key); s1.Push(pair); s2.Push(pair); //Console.WriteLine("pair " + pair.Key.ToString() + " " + pair.Value); } while (s1.Count != 0) { KeyValuePair<List<FreeTime>, String> sp1 = (KeyValuePair<List<FreeTime>, String>)s1.Pop(); while (s2.Count != 0) { KeyValuePair<List<FreeTime>, String> sp2 = (KeyValuePair<List<FreeTime>, String>)s2.Pop(); if (!(sp1.Value.Equals(sp2.Value))) FindMutual2(sp1, sp2); } s2 = s1; } FinalMutual2(); // if (personAndFreeTimes.Count > 2) int num = 1; while( num<personAndFreeTimes.Count) { FinalMutual3(); num++; } FinalMutual3(); calendarEvents = ConvertToFreeBusyCalendarEvents(FinalFreeBusy); } //end free busy view //Console.WriteLine("before sort"); calendarEvents.SortByDate(); log.Debug("Successfully compared events from other Google Calendars"); }// end try catch (Exception ex) { log.Error("Failed to compare events from other Google Calendars with error:", ex); } return calendarEvents; }
public void DeleteEvents(CalendarEventList evs) { foreach (CalendarEvent ev in evs) { DeleteEvent(ev, ActionType.single); } }
private static CalendarEventList ConvertToFreeBusyCalendarEvents(Dictionary<FreeTime, string> FreeBusy) { CalendarEventList calendarEvents = new CalendarEventList(); foreach (KeyValuePair<FreeTime, String> kv in FreeBusy) { if (primary) { if (kv.Value.IndexOf(firstEmail) != -1) calendarEvents.Add(ConvertFreeBusyGoogleEventToCalendarEvent(kv)); else continue; } else calendarEvents.Add(ConvertFreeBusyGoogleEventToCalendarEvent(kv)); } return calendarEvents; }
public CalendarEventList GetOthersEvents(DateTime timeMin, DateTime timeMax, String CalendarIDs) { log.Debug("Try to get events from other Google Calendar"); CalendarEventList calendarEvents = new CalendarEventList(); try { EventsResource.ListRequest events = service.Events.List(CalendarIDs); events.SingleEvents = true; events.MaxResults = 2500; events.TimeMin = timeMin; events.TimeMax = timeMax; Events eventList = events.Execute(); calendarEvents = ConvertToCalendarEvents(eventList.Items); calendarEvents.SortByDate(); log.Debug("Successfully got events from other Google Calendar"); } catch (Exception ex) { log.Error("Failed to get events from other Google Calendar with error:", ex); } return calendarEvents; }
private static CalendarEventList ConvertToCalendarEvents(IList<Event> googleEvents) { CalendarEventList calendarEvents = new CalendarEventList(); foreach (Event ev in googleEvents) { calendarEvents.Add(ConvertGoogleEventToCalendarEvent(ev)); } return calendarEvents; }
private static CalendarEventList ConvertToMutualCalendarEvents(Dictionary<FreeTime, string> FreeBusy) { CalendarEventList calendarEvents = new CalendarEventList(); foreach (KeyValuePair<FreeTime, String> kv in FreeBusy) { if (kv.Value.Count(Char.IsWhiteSpace) == numberOfEmails - 1) calendarEvents.Add(ConvertMutualGoogleEventToCalendarEvent(kv)); } return calendarEvents; }
public CalendarEventList FormatEventsDatesStringRepresentation(CalendarEventList allEvents, DateTimePreferences preferences) { CalendarEventList formatedEvents = new CalendarEventList(); bool multipleMonths; // Find if there are events from different month in the list by comparing years and month data of the first and last event in the list if (allEvents.Count > 1) { multipleMonths = allEvents[0].Start.Year != allEvents[allEvents.Count - 1].Start.Year ? true : allEvents[0].Start.Month != allEvents[allEvents.Count - 1].Start.Month; } else { multipleMonths = false; } try { int month = 0; foreach (CalendarEvent ev in allEvents) { if (preferences.GroupByMonth && multipleMonths && month != ev.Start.Month) { formatedEvents.Add(new CalendarEvent(months[ev.Start.Month])); month = ev.Start.Month; } ev.FormatedStartDate = preferences.StartDateTime(ev); ev.FormatedEndDate = preferences.EndDateTime(ev); formatedEvents.Add(ev); } return formatedEvents; } catch(Exception ex) { log.Error("Failed to format events dates", ex); return allEvents; } }
public CalendarEventList FilterByStatus(CalendarEventList allEvents, SortFilterPreferences preferences) { if (!preferences.EnableStatusFilter) { return allEvents; } CalendarEventList filteredEvents = new CalendarEventList(); foreach (CalendarEvent ev in allEvents) { if (ev.Status == (preferences.ShowConfirmedOnly ? CONFIRMED : TENTATIVE)) { filteredEvents.Add(ev); } } return filteredEvents; }
public CalendarEventList FilterByDayOfWeek(CalendarEventList allEvents, SortFilterPreferences preferences) { if (!preferences.EnableDayOfWeekFilter) { return allEvents; } CalendarEventList filteredEvents = new CalendarEventList(); foreach (CalendarEvent ev in allEvents) { if (ev.Start.DayOfWeek == DayOfWeek.Monday && preferences.Monday) { filteredEvents.Add(ev); } else if (ev.Start.DayOfWeek == DayOfWeek.Tuesday && preferences.Tuesday) { filteredEvents.Add(ev); } else if (ev.Start.DayOfWeek == DayOfWeek.Wednesday && preferences.Wednesday) { filteredEvents.Add(ev); } else if (ev.Start.DayOfWeek == DayOfWeek.Thursday && preferences.Thursday) { filteredEvents.Add(ev); } else if (ev.Start.DayOfWeek == DayOfWeek.Friday && preferences.Friday) { filteredEvents.Add(ev); } else if (ev.Start.DayOfWeek == DayOfWeek.Saturday && preferences.Saturday) { filteredEvents.Add(ev); } else if (ev.Start.DayOfWeek == DayOfWeek.Sunday && preferences.Sunday) { filteredEvents.Add(ev); } } return filteredEvents; }
public CalendarEventList FilterByStartTime(CalendarEventList allEvents, SortFilterPreferences preferences) { if (!preferences.EnableTimeFilter) { return allEvents; } CalendarEventList filteredEvents = new CalendarEventList(); foreach (CalendarEvent ev in allEvents) { int starTimeInMinutes = ev.Start.Hour * 60 + ev.Start.Minute; if (starTimeInMinutes >= preferences.TimeInMinutesMin && starTimeInMinutes <= preferences.TimeInMinutesMax) { filteredEvents.Add(ev); } } return filteredEvents; }
public CalendarEventList Sort(CalendarEventList allEvents, SortFilterPreferences preferences) { return preferences.Sort(allEvents); }