2013-05-08 5 views
2

Я использую EWS Managed API 2.0. Я использую Каленуюся часть, где вы можете заказать назначения следующим образом:EWS Managed API: проверка ответов

Appointment appointment = new Appointment(service); 

//Set properties on the appointment. 
appointment.Subject = "Dentist Appointment"; 
appointment.Body = "The appointment is with Dr. Smith."; 
appointment.Start = new DateTime(2009, 3, 1, 9, 0, 0); 
appointment.End = appointment.Start.AddHours(2); 

//Save the appointment. 
appointment.Save(SendInvitationsMode.SendToNone); 

Как я могу с помощью API проверить статус заказа и является ли она была заказана или нет из-за конфликт в дате (Success/Error/Конфликт)? прямо сейчас я могу проверить это через внешний вид, но я хотел бы знать эту информацию из API. Я просмотрел документацию по API, но ничего не нашел.

Цените свою помощь/руководство.

+0

Почему 50 баллов выделены, но ответ не одобрен и принят? (Я удалил мой и поддержал его.) –

ответ

2

Прежде чем сохранять свое назначение, вы должны сначала проверить доступность всех участников. AvailabilityData вернет вам Result (ServiceResult.Success, ServiceResult.Warning или ServiceResult.Error), а затем вы можете проверить свойство ErrorMessage, чтобы найти правильное сообщение возврата для каждой конфликтной доступности. Если доступность не конфликтует ни с одним из участников, вы можете сохранить свой объект Назначения.

AvailabilityOptions availabilityOptions = new AvailabilityOptions(); 
availabilityOptions.MeetingDuration = 60; 
availabilityOptions.MaximumNonWorkHoursSuggestionsPerDay = 4; 
availabilityOptions.MinimumSuggestionQuality = SuggestionQuality.Good; 
availabilityOptions.RequestedFreeBusyView = FreeBusyViewType.FreeBusy; 

List<AttendeeInfo> attendees = new List<AttendeeInfo>(); 
attendees.Add(
    new AttendeeInfo() 
    { 
     SmtpAddress = "[email protected]", 
     AttendeeType = MeetingAttendeeType.Organizer 
    }); 

attendees.Add(
    new AttendeeInfo() 
    { 
     SmtpAddress = "[email protected]", 
     AttendeeType = MeetingAttendeeType.Required 
    }); 

attendees.Add(
    new AttendeeInfo() 
    { 
     SmtpAddress = "[email protected]", 
     AttendeeType = MeetingAttendeeType.Room 
    }); 

GetUserAvailabilityResults availabilityResults = 
     service.GetUserAvailability(
      attendees, 
      new TimeWindow(DateTime.Now, DateTime.Now.AddDays(1)), 
      AvailabilityData.FreeBusyAndSuggestions, 
      availabilityOptions 
     ); 

// Here check the availability Result and ErrorMessage of each attendees 
// availabilityResults.AttendeesAvailability[0].Result 
// availabilityResults.AttendeesAvailability[0].ErrorMessage 
// ServiceResult.Success 
// ServiceResult.Warning 
// ServiceResult.Error 
+0

Спасибо, это было очень полезно. но мне не хватает чего-то, что я признателен, если вы поможете мне разобраться. Какова связь между AvailabilityData & availabilityOptions? AvialbilityData не дает мне ответа на время встречи, которое я установил в availabilityOptions. Это дает мне список всех календаря в комнате, а затем я должен пройти через них 1 к 1, чтобы увидеть, есть ли конфликт. Разве нет 1 метода/параметра, который говорит мне, связано ли время собрания, которое я выбрал в наличии? Оповещения конфликтуют с комнатой, которую я ввел в список участников? – Morano88

Смежные вопросы