/// <summary> /// Gets all events for a calendar within the specified time range. /// </summary> /// <param name="calendar">Calendar containing events</param> /// <param name="start">Start of event range</param> /// <param name="end">End of event range</param> /// <returns>Calendar events</returns> /// <exception cref="System.ArgumentException">Calendar does not exist on device</exception> /// <exception cref="System.UnauthorizedAccessException">Calendar access denied</exception> /// <exception cref="Plugin.Calendars.Abstractions.PlatformException">Unexpected platform-specific error</exception> public async Task <IList <CalendarEvent> > GetEventsAsync(Calendar calendar, DateTime start, DateTime end) { await RequestCalendarAccess().ConfigureAwait(false); var deviceCalendar = _eventStore.GetCalendar(calendar.ExternalID); if (deviceCalendar == null) { throw new ArgumentException("Specified calendar not found on device"); } var query = _eventStore.PredicateForEvents(start.ToNSDate(), end.ToNSDate(), new EKCalendar[] { deviceCalendar }); var events = await Task.Run(() => { var iosEvents = _eventStore.EventsMatching(query); return(iosEvents == null ? new List <CalendarEvent>() : iosEvents.Select(e => e.ToCalendarEvent()).ToList()); }).ConfigureAwait(false); return(events); }
protected override List <CalendarDatum> GetCalendarEventsAsync() { List <CalendarDatum> datums = new List <CalendarDatum>(); EKEventStore store = new EKEventStore(); EKCalendar[] calendars = store.GetCalendars(EKEntityType.Event); NSDate last = (NSDate)LastPollTime; NSDate now = (NSDate)DateTime.Now; NSPredicate predicate = store.PredicateForEvents(last, now, calendars); EKEvent[] items = store.EventsMatching(predicate); foreach (EKEvent item in items) { CalendarDatum datum = new CalendarDatum(item.EventIdentifier, item.Title, (DateTime)item.StartDate, (DateTime)item.EndDate, ((DateTime)item.EndDate - (DateTime)item.StartDate).TotalMilliseconds, item.Description, item.Location, item.Organizer?.Name, item.Organizer == null || item.Organizer?.IsCurrentUser == true, DateTimeOffset.UtcNow); datums.Add(datum); } return(datums); }
public static EKEvent[] FetchEvents(DateTime startDate, DateTime endDate) { // Create the predicate. Pass it the default calendar. //Util.WriteLine ("Getting Calendars"); EKEventStore store = new EKEventStore(); store.RequestAccess(EKEntityType.Event, (bool granted, NSError e) => { if (granted) { #if DEBUG Console.WriteLine("Access Granted!"); #endif //Do add events calendars and any calendar stuff here } else { new UIAlertView("Access Denied", "User Denied Access to Calendar Data", null, "ok", null).Show(); } } ); var calendarArray = store.Calendars; //Util.WriteLine ("Predicate"); //Convert to NSDate NSDate nstartDate = Util.DateTimeToNSDate(startDate); NSDate nendDate = Util.DateTimeToNSDate(endDate); NSPredicate predicate = store.PredicateForEvents(nstartDate, nendDate, calendarArray); //Util.WriteLine ("Fetching Events"); // Fetch all events that match the predicate. var eventsArray = store.EventsMatching(predicate); //Util.WriteLine ("Returning results"); if (eventsArray == null) { eventsArray = new List <EKEvent> ().ToArray(); } return(eventsArray); }
public static EKEvent[] FetchEvents(DateTime startDate, DateTime endDate) { // Create the predicate. Pass it the default calendar. //Util.WriteLine ("Getting Calendars"); EKEventStore store = new EKEventStore (); store.RequestAccess (EKEntityType.Event, (bool granted, NSError e) => { if (granted) { #if DEBUG Console.WriteLine("Access Granted!"); #endif //Do add events calendars and any calendar stuff here } else new UIAlertView ( "Access Denied", "User Denied Access to Calendar Data", null, "ok", null).Show (); } ); var calendarArray = store.Calendars; //Util.WriteLine ("Predicate"); //Convert to NSDate NSDate nstartDate = startDate.DateTimeToNSDate(); NSDate nendDate = endDate.DateTimeToNSDate(); NSPredicate predicate = store.PredicateForEvents (nstartDate, nendDate, calendarArray); //Util.WriteLine ("Fetching Events"); // Fetch all events that match the predicate. var eventsArray = store.EventsMatching (predicate); //Util.WriteLine ("Returning results"); if (eventsArray == null) { eventsArray = new List<EKEvent> ().ToArray (); } return eventsArray; }
public async void AddEventToCalender(object sender, EventArgs e) { try { var store = new EKEventStore(); if (EKEventStore.GetAuthorizationStatus(EKEntityType.Reminder) == EKAuthorizationStatus.Authorized) { if (EKEventStore.GetAuthorizationStatus(EKEntityType.Event) == EKAuthorizationStatus.Authorized) { NSDate startDate = ConvertDateTimeToNSDate(BaseFunctions.GetDateTimeFull(App.reminderEvent.eventStartDate + " " + App.reminderEvent.eventStartTime)); NSDate endDate = ConvertDateTimeToNSDate(BaseFunctions.GetDateTimeFull(App.reminderEvent.eventEndDate + " " + App.reminderEvent.eventEndTime)); NSPredicate query = store.PredicateForEvents(startDate, endDate, null); EKCalendarItem[] events = store.EventsMatching(query); bool exists = false; for (int i = 0; i < events.Length; i++) { if (events[i].Title == App.reminderEvent.eventName) { exists = true; } } if (!exists) { EKEvent eEvent = EKEvent.FromStore(store); eEvent.AddAlarm(EKAlarm.FromDate(ConvertDateTimeToNSDate(BaseFunctions.GetDateTimeFull(App.reminderEvent.eventStartDate + " " + App.reminderEvent.eventStartTime)))); eEvent.StartDate = startDate; eEvent.EndDate = endDate; eEvent.Title = App.reminderEvent.eventName; eEvent.TimeZone = new NSTimeZone("UTC"); eEvent.Location = App.reminderEvent.eventAddress; eEvent.Notes = App.reminderEvent.eventDescription; eEvent.Calendar = store.DefaultCalendarForNewEvents; NSError eventError; store.SaveEvent(eEvent, EKSpan.ThisEvent, out eventError); EKReminder reminder = EKReminder.Create(store); reminder.Title = App.reminderEvent.eventName; reminder.AddAlarm(EKAlarm.FromDate(ConvertDateTimeToNSDate(BaseFunctions.GetDateTimeFull(App.reminderEvent.eventStartDate + " " + App.reminderEvent.eventStartTime)))); reminder.TimeZone = new NSTimeZone("UTC"); reminder.Calendar = store.DefaultCalendarForNewEvents; await App.Current.MainPage.DisplayAlert("Alert", "This event is added to your calender", "Ok"); } else { await App.Current.MainPage.DisplayAlert("Alert", "This event is already added to your calender", "Ok"); } } else { store.RequestAccess(EKEntityType.Event, StoreAcceptRequest); } } else { store.RequestAccess(EKEntityType.Reminder, StoreAcceptRequest); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } }
public static EKEvent[] FetchEvents(DateTime startDate, DateTime endDate) { // Create the predicate. Pass it the default calendar. //Util.WriteLine ("Getting Calendars"); EKEventStore store = new EKEventStore (); var calendarArray = store.Calendars; //Util.WriteLine ("Predicate"); //Convert to NSDate NSDate nstartDate = Util.DateTimeToNSDate (startDate); NSDate nendDate = Util.DateTimeToNSDate (endDate); NSPredicate predicate = store.PredicateForEvents (nstartDate, nendDate, calendarArray); //Util.WriteLine ("Fetching Events"); // Fetch all events that match the predicate. var eventsArray = store.EventsMatching (predicate); //Util.WriteLine ("Returning results"); if (eventsArray == null) { eventsArray = new List<EKEvent> ().ToArray (); } return eventsArray; }