/// <summary> /// Get all possible apointments for a specific email for X days /// </summary> /// <param name="UserName"></param> /// <param name="Days"></param> /// <returns></returns> private List <OutlookCalendarItem> _GetAppointmentsInRange(string UserName, int Days) { List <OutlookCalendarItem> ret = new List <OutlookCalendarItem>(); if (ConnectToServer() == false) { return(ret); } Outlook.NameSpace oNS = outlookObj.GetNamespace("mapi"); oNS.Logon(Missing.Value, Missing.Value, true, true); Outlook.Recipient oRecip = (Outlook.Recipient)oNS.CreateRecipient(UserName); Outlook.Folder calFolder = null; try { calFolder = (Outlook.MAPIFolder)oNS.GetSharedDefaultFolder(oRecip, Outlook.OlDefaultFolders.olFolderCalendar) as Outlook.Folder; } catch { return(ret); } // Outlook.Folder calFolder = outlookObj.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar) as Outlook.Folder; DateTime start = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0, 0); DateTime end = start.AddDays(Days); Outlook.Items rangeAppts = GetAppointmentsInRange(calFolder, start, end); if (rangeAppts != null) { foreach (Outlook.AppointmentItem item in rangeAppts) { OutlookCalendarItem ci = new OutlookCalendarItem(); ci.Start = item.Start; ci.Duration = item.Duration; ci.ResponseType = (OutlookResponseStatus)item.ResponseStatus; ret.Add(ci); } } return(ret); }
public List <OutlookCalendarItem> GetAbsenceInfo(string TargetEmail, int NumDays) { ConnectToServer(); if (service == null) { return(new List <OutlookCalendarItem>()); } //start collecting from today DateTime StartDate = DateTime.Now; DateTime EndDate = StartDate.AddDays(NumDays); List <OutlookCalendarItem> ret = new List <OutlookCalendarItem>(); var options = new AvailabilityOptions { RequestedFreeBusyView = FreeBusyViewType.DetailedMerged }; var attendees = new List <AttendeeInfo>(); attendees.Add(new AttendeeInfo { SmtpAddress = TargetEmail, AttendeeType = MeetingAttendeeType.Required }); var results = service.GetUserAvailability(attendees, new TimeWindow(StartDate, EndDate), AvailabilityData.FreeBusy, options); foreach (AttendeeAvailability avail in results.AttendeesAvailability) { foreach (CalendarEvent item in avail.CalendarEvents) { OutlookCalendarItem ci = new OutlookCalendarItem(); ci.Start = item.StartTime; ci.Duration = (int)item.EndTime.Subtract(item.StartTime).TotalMinutes; ci.ResponseType = (OutlookResponseStatus)item.FreeBusyStatus; ret.Add(ci); } } return(ret); }
private void AddGridRow(OutlookCalendarItem item) { AddGridRow(item.Start.ToString(), item.Duration.ToString(), Enum.GetName(item.ResponseType.GetType(), item.ResponseType)); }