2016-01-29 93 views
4

和遺憾,獲得真正的自由間爲問題如何從Exchange EWS

我正嘗試從我的Exchange服務器的所有免費客房(沒有預訂的)的一個貧窮的稱號。事情是這樣的我也得到我預訂的房間,但沒有人接受

我想在預訂房間後將它們從列表中排除。

這是我用來保存(後直預訂房間

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); 

要注意我試圖調用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中接受之前不同所以我不能區分它們,並拉出他們我不想要的。

我也真的認爲那些房間不應該是可用的,所以必須有一些enum/tick/mark我可以把它放在房間之前,但我完全錯過了它。

編輯

我真的不明白爲什麼沒有用於AvailabilityData別無選擇。 在GetUserAvailability方法枚舉免費(僅FreeBusy,FreeBusyAndSuggestions和建議,但沒有免費只!?)

回答

1

好的。這是相當愚蠢的...代碼(我繼承)不包括代碼實際上移除客房在哪裏(繁忙)。我只是剛剛注意到這一點......

解決這個問題的代碼只是這一個

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

很抱歉給您帶來不便:-)

+0

我知道這是一個古老的一個,但我掙扎與GetUserAvailability只返回繁忙的信息...我想建議(RoomFinder)。任何線索? –

+0

對不起我移動公司和不對EWS編程,所以我不幸沒有任何答案給你 – Sturla

相關問題