Criar eventos de todos os dias usando o EWS no Exchange
Saiba como criar eventos durante todo o dia usando a API Gerenciada do EWS ou o EWS no Exchange.
Eventos durante todo o dia fornecem uma maneira de representar algo que acontece por um dia inteiro ou vários dias , por exemplo, um feriado ou dias de férias. Criar eventos durante todo o dia com a API Gerenciada do EWS ou o EWS é um snap. É como criar compromissos, mas com algumas pequenas alterações.
Configurando horários de início e término
Por definição, os eventos durante todo o dia começam à meia-noite em um dia específico e terminam 24 horas (ou várias 24 horas) depois. No entanto, a API Gerenciada do EWS e o EWS permitem especificar horários diferentes da meia-noite ao criar eventos do dia todo. Isso pode levar a um comportamento não intencional se você não estiver ciente de como essas vezes são traduzidas no servidor.
Quando uma solicitação é recebida para criar um novo evento durante todo o dia com não-meia-noite (no fuso horário da solicitação ou compromisso) horários de início e/ou término, essas horas são ajustadas à meia-noite no fuso horário apropriado de acordo com as seguintes regras:
- Os horários de início fora da meia-noite são ajustados para a meia-noite antes da hora especificada. Por exemplo, 13:00 em 6 de junho é ajustado para 12:00 em 6 de junho.
- Os horários de término fora da meia-noite são ajustados para a meia-noite após a hora especificada. Por exemplo, 13:00 em 6 de junho é ajustado para 12:00 em 7 de junho.
Portanto, o evento durante todo o dia que você cria é sempre inclusivo da hora de início e término que você especifica, mas pode reivindicar tempo adicional no calendário do usuário devido à mudança para meia-noite. Como o servidor ajustará a hora de início e término à meia-noite, recomendamos que você especifique sua hora de início e término à meia-noite para evitar alterações não intencionais nos horários.
Também é importante considerar fusos horários ao criar eventos durante todo o dia. Como o servidor exchange impõe um horário de início e término da meia-noite no fuso horário da solicitação ou compromisso, exibir esse evento durante todo o dia em um cliente configurado para um fuso horário diferente pode gerar resultados inesperados. Dependendo do cliente, ele pode aparecer como um evento durante todo o dia com dias extras que você não pretendia incluir, ou pode não aparecer como um evento durante todo o dia. Por causa disso, recomendamos que você use o fuso horário preferido do usuário sempre que possível ao criar eventos durante todo o dia.
Criar um evento durante todo o dia usando a API Gerenciada do EWS
O exemplo a seguir mostra como usar a API Gerenciada do EWS para criar um evento durante todo o dia, começando na data especificada pelo parâmetro startDate e com duração para o número de dias especificado pelo parâmetro numDays . Observe que o compromisso será criado no fuso horário especificado pela propriedade ExchangeService.TimeZone . Este exemplo pressupõe que o objeto ExchangeService passado no parâmetro de serviço foi inicializado com valores válidos para as propriedades Credenciais e Url .
static void CreateAllDayAppointment(ExchangeService service, DateTime startDate, int numDays)
{
// Best practice is to set the start date to midnight
// on the first day of the all-day event.
DateTime startDateMidnight = startDate.Date;
// The end date should be midnight on the first day
// after the event.
DateTime endDateMidnight = startDateMidnight.AddDays(numDays);
Appointment allDayEvent = new Appointment(service);
// Set IsAllDayEvent to true.
allDayEvent.IsAllDayEvent = true;
// Set other properties.
allDayEvent.Subject = "Vacation";
allDayEvent.LegacyFreeBusyStatus = LegacyFreeBusyStatus.OOF;
allDayEvent.Start = startDateMidnight;
allDayEvent.End = endDateMidnight;
// Save the appointment.
try
{
allDayEvent.Save(WellKnownFolderName.Calendar, SendInvitationsMode.SendToNone);
Console.WriteLine("All day event created.");
}
catch (Exception ex)
{
Console.WriteLine("Error saving all day event: {0}", ex.Message);
}
}
Criar um evento durante todo o dia usando o EWS
O exemplo a seguir mostra uma solicitação de operação CreateItem do EWS para criar um evento durante todo o dia. O compromisso é criado no fuso horário oriental, conforme indicado pelo elemento TimeZoneContext . Observe que a parte de hora dos valores dos elementos Start e End é 04:00Z, que se converte em meia-noite no fuso horário leste durante o horário de verão.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2007_SP1" />
<t:TimeZoneContext>
<t:TimeZoneDefinition Id="Eastern Standard Time" />
</t:TimeZoneContext>
</soap:Header>
<soap:Body>
<m:CreateItem SendMeetingInvitations="SendToNone">
<m:SavedItemFolderId>
<t:DistinguishedFolderId Id="calendar" />
</m:SavedItemFolderId>
<m:Items>
<t:CalendarItem>
<t:Subject>Vacation</t:Subject>
<t:Start>2014-06-09T04:00:00.000Z</t:Start>
<t:End>2014-06-10T04:00:00.000Z</t:End>
<t:IsAllDayEvent>true</t:IsAllDayEvent>
<t:LegacyFreeBusyStatus>OOF</t:LegacyFreeBusyStatus>
</t:CalendarItem>
</m:Items>
</m:CreateItem>
</soap:Body>
</soap:Envelope>