如何从Exchange EWS获得真正免费的房间

时间:2016-01-29 10:38:00

标签: c# exchangewebservices

抱歉问题标题不好

我试图从我的交换服务器获取所有免费房间(不是预订的房间)。问题是我也得到了我预订的房间,但没有人接受

我想在预订房间后将它们从列表中排除。

这是我用来预订房间

的代码
ExchangeService service;
//...code to new-up and config service

var request = new Appointment(service)
{
  Subject = booking.Subject,
  Start = booking.Start,
  End = booking.End,
  Location = booking.Room
};

request.RequiredAttendees.Add(booking.Person);
request.RequiredAttendees.Add(booking.Room);

request.Save(SendInvitationsMode.SendOnlyToAll);

要注意我已经尝试在Save()之后直接调用request.Accept()但没有那个“真正预订”房间。在Outlook中按“接受”是唯一的“修复”。不用说,我已经尝试了我能找到的关于这个问题的所有内容(我不定期与Exchange合作)。

然后代码获得免费房间

var rooms = service.GetRooms(locationAddress);

// all the meeting rooms at location
var rooms= rooms.Select(i => new AttendeeInfo { SmtpAddress = i.Address, AttendeeType = MeetingAttendeeType.Room });

// Get all availabilites from all rooms at given locations
var availability = service.GetUserAvailability(rooms, timeframe, AvailabilityData.FreeBusy);

foreach (var a in availability.AttendeesAvailability)
{
  // Here we always get all the free rooms
  // including the ones we booked earlier
  // UNTIL somebody clicks accept in Outlook and then it does not appear here!?
}

我无法看到房间在Outlook被接受之前有不同的标记,因此我无法区分它们并将它们拉出我不想要的。

我也真的认为那些房间不应该有空,所以我必须在预订前把它放在房间里,但是我完全错过了它。

修改

我真的不明白为什么在GetUserAvailability方法的枚举中没有OptionData。 Free 的选项(只有FreeBusy,FreeBusyAndSuggestions和Suggestions但是没有Free!?)

1 个答案:

答案 0 :(得分:2)

好的,这是相当愚蠢的...代码(我继承)没有包含实际删除房间的代码(忙碌)。我只是注意到了......

解决此问题的代码就是这个

  var busyRoomToRemove = a.CalendarEvents.ToList().Find(x => x.FreeBusyStatus == LegacyFreeBusyStatus.Busy);
  a.CalendarEvents.Remove(busyRoomToRemove); 

很抱歉给您带来不便:-)