Excinge를 쿼리하여 현재 시간으로 미리 알림을 설정 한 앱 약속을 가져 오려고합니다.
나는 가까운 미래에 시작 하나의 약속을 반환하는 간단한 방법 만들었습니다EWS가 알림 <= 현재 시간으로 약속 가져 오기
:이 날 최고 한 약속을 반환
public Appointment getMyAppointments()
{
try
{
CalendarFolder cfolder = CalendarFolder.Bind(service, WellKnownFolderName.Calendar);
CalendarView calendarView = new CalendarView(DateTime.Now, DateTime.Now.AddHours(1));every appointment in one hour
calendarView.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Subject, ItemSchema.Categories);
FindItemsResults<Appointment> findResults = cfolder.FindAppointments(calendarView);
List<Item> items = new List<Item>();
if (findResults.Items.Count > 0) // Prevent the exception
{
items.AddRange(findResults.Cast<Item>());
}
else
{
return null;
}
service.LoadPropertiesForItems(items, new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Subject, ItemSchema.Categories, ItemSchema.Body));
return findResults.Items[0];
}
catch (Exception e)
{
return null;
}
}
현재 시간에서 활동한다는 점에서 가까운 미래를 시작합니다 광고 14시 시작하여 14시 30 분에 끝나는 약속을 계획하면 13시 1 분에 시작하면 약속이 반환되지만 14시 22 분에 시작하면 약속이 반환됩니다.
나는 그것이 현재 시간 전에 알림을 설정하고 시작하지 않은 모든 회의 반환 있도록 그 방법을 변경하려면 :
을 그래서 15시에 약속을 계획하는 경우에 15 분에 알림을 설정하고 나는 나의 방법을 14시 45 분에 호출한다. 약속을 잡을 것이다.
내 생각은 모든 약속을 얻는 것이 8 시간이라고 말하고, 그 다음에 반복하여 IsReminderSet
이 있는지 확인하고 Start
- ReminderMinutesBeforeStart
이 현재 시간보다 작은 지 확인합니다.
편집 -이 내 임시 방편
public OWAAppointment GetMyAppointments(int minutes)
{
try
{
CalendarFolder cfolder = CalendarFolder.Bind(service, WellKnownFolderName.Calendar);
CalendarView calendarView = new CalendarView(DateTime.Now, DateTime.Now.AddHours(10));
calendarView.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Subject, ItemSchema.Categories);
FindItemsResults<Appointment> findResults = cfolder.FindAppointments(calendarView);
List<Item> items = new List<Item>();
if (findResults.Items.Count > 0)
{
items.AddRange(findResults.Cast<Item>());
}
else
{
return null;
}
service.LoadPropertiesForItems(items, new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Subject, ItemSchema.Categories, ItemSchema.Body, ItemSchema.ReminderDueBy, ItemSchema.ReminderMinutesBeforeStart));
var appointment = findResults.Items
.Where(item => item.Start >= DateTime.Now)
.FirstOrDefault(item => item.Start.AddMinutes(-1*minutes) < DateTime.Now);
return appointment // this will return appointment or null
}
catch (Exception e)
{
return null;
}
}
입니다하지만 어쩌면이 쉽게 EWS 수행 할 수 있습니다?
답장을 보내 주셔서 감사합니다.하지만 유감스럽게도 Exchange 2013에서는 테스트 할 수 없습니다. 테스트 환경을 갖자 마자이 페이지로 돌아 오겠습니다. – Misiu