Использование обменных веб-сервисов для получения необходимых посетителей календаря? C # - PullRequest
3 голосов
/ 02 августа 2011

Я пытаюсь получить нужных участников собрания, которое я получил, используя веб-сервис обмена.Есть идеи?Я думаю, что мне нужно использовать CalendarItemType, но я не уверен, как это реализовать.Вот мой код:

        foreach (var wrk in Workers)
        {
            TimeWindow timeWindow = new TimeWindow(startDate, endDate);
            AvailabilityData requestedData = AvailabilityData.FreeBusy;
            List<AttendeeInfo> attendees = new List<AttendeeInfo>();
            attendees.Add(new AttendeeInfo(wrk.EmailAddress));
            GetUserAvailabilityResults ares = service.GetUserAvailability(attendees, timeWindow, requestedData);
            foreach (AttendeeAvailability av in ares.AttendeesAvailability)
            {
                foreach (CalendarEvent ev in av.CalendarEvents)
                {
                    //get info from each calendarevent
                    //Possibly use CalendarItemType here?
                 }
             }
         }

Где Workers - это класс, который я создал со списком имен и соответствующих адресов электронной почты.

1 Ответ

6 голосов
/ 03 августа 2011

Вы можете получить нужных участников, связавшись с собеседованием, используя Appointment.Bind:

foreach (CalendarEvent ev in av.CalendarEvents)
{
    var appointment = Appointment.Bind(service, new ItemId(ev.Details.StoreId));
    foreach (var requiredAttendee in appointment.RequiredAttendees)
    {
        Console.WriteLine(requiredAttendee.Address);
    }
}

Возможно, вам придется преобразовать CalendarEvent.Details.StoreId в другой формат перед вызовом Appointment.Bind (Я не уверен в этом), поэтому, если приведенный выше код не работает, вы можете попробовать добавить вызов к ExchangeService.ConvertId:

foreach (CalendarEvent ev in av.CalendarEvents)
{
    var convertedId = (AlternateId) service.ConvertId(new AlternateId(IdFormat.HexEntryId, ev.Details.StoreId, "someemail@domain.com"), IdFormat.EwsId);

    var appointment = Appointment.Bind(service, new ItemId(convertedId.UniqueId));
    foreach (var requiredAttendee in appointment.RequiredAttendees)
    {
        Console.WriteLine(requiredAttendee.Address);
    }
}
...