Пример #1
0
        /// <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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 private void AddGridRow(OutlookCalendarItem item)
 {
     AddGridRow(item.Start.ToString(), item.Duration.ToString(), Enum.GetName(item.ResponseType.GetType(), item.ResponseType));
 }