Obter informações de disponibilidade do gerenciador de um usuário do Exchange
Este exemplo exibe o próximo intervalo de tempo de 60 minutos disponível no calendário para o gerente de um usuário.
Exemplo
Este exemplo de código verifica se o usuário atual é um usuário do Exchange. Em caso afirmativo e se o usuário tiver um gerente, o código obterá informações do gerente chamando o método GetExchangeUser do objeto AddressEntry e o método GetExchangeUserManager do objeto ExchangeUser. As informações do gerente estão contidas em um objeto ExchangeUser que inclui o cronograma de disponibilidade do gerente.
Se usar o Visual Studio para testar este exemplo de código, adicione primeiro uma referência ao componente da biblioteca de objetos do Microsoft Outlook 15.0 e especifique a variável do Outlook quando importar o namespace Microsoft.Office.Interop.Outlook. A instrução Imports ou using não deve vir diretamente antes de funções no exemplo de código, mas deve ser adicionada antes da declaração Class pública. The following lines of code show how to do the import and assignment in Visual Basic and C#.
Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub GetManagerOpenInterval()
Const slotLength As Integer = 60
Dim addrEntry As Outlook.AddressEntry = _
Application.Session.CurrentUser.AddressEntry
If addrEntry.Type = "EX" Then
Dim manager As Outlook.ExchangeUser = _
Application.Session.CurrentUser. _
AddressEntry.GetExchangeUser(). _
GetExchangeUserManager()
If Not (manager Is Nothing) Then
Dim freeBusy As String = _
manager.GetFreeBusy(DateTime.Now, slotLength, True)
For i As Integer = 1 To freeBusy.Length - 1
If (freeBusy.Substring(i, 1) = "0") Then
' Get number of minutes into
' the day for free interval
Dim busySlot As Double = (i - 1) * slotLength
' Get an actual date/time
Dim dateBusySlot As DateTime = _
DateTime.Now.Date.AddMinutes(busySlot)
If (dateBusySlot.TimeOfDay >= _
DateTime.Parse("8:00 AM").TimeOfDay And _
dateBusySlot.TimeOfDay <= _
DateTime.Parse("5:00 PM").TimeOfDay And _
Not (dateBusySlot.DayOfWeek = _
DayOfWeek.Saturday Or _
dateBusySlot.DayOfWeek = DayOfWeek.Sunday))Then
Dim sb As StringBuilder = New StringBuilder()
sb.AppendLine( _
manager.Name & " first open interval:")
sb.AppendLine(dateBusySlot.ToString("f"))
Debug.WriteLine(sb.ToString())
End If
End If
Next
End If
End If
End Sub
private void GetManagerOpenInterval()
{
const int slotLength = 60;
Outlook.AddressEntry addrEntry =
Application.Session.CurrentUser.AddressEntry;
if (addrEntry.Type == "EX")
{
Outlook.ExchangeUser manager =
Application.Session.CurrentUser.
AddressEntry.GetExchangeUser().GetExchangeUserManager();
if (manager != null)
{
string freeBusy = manager.GetFreeBusy(
DateTime.Now, slotLength, true);
for (int i = 1; i < freeBusy.Length; i++)
{
if (freeBusy.Substring(i, 1) == "0")
{
// Get number of minutes into
// the day for free interval
double busySlot = (i - 1) * slotLength;
// Get an actual date/time
DateTime dateBusySlot =
DateTime.Now.Date.AddMinutes(busySlot);
if (dateBusySlot.TimeOfDay >=
DateTime.Parse("8:00 AM").TimeOfDay &
dateBusySlot.TimeOfDay <=
DateTime.Parse("5:00 PM").TimeOfDay &
!(dateBusySlot.DayOfWeek ==
DayOfWeek.Saturday |
dateBusySlot.DayOfWeek == DayOfWeek.Sunday))
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(manager.Name
+ " first open interval:");
sb.AppendLine(dateBusySlot.ToString("f"));
Debug.WriteLine(sb.ToString());
}
}
}
}
}
}