我基本上想要使用 QueryScheduleRequest 检查特定用户在提供的时间范围内是否空闲。为此,我使用以下代码来检索用户在今天的日期的可用时间:
QueryScheduleRequest scheduleRequest = new QueryScheduleRequest
{
ResourceId = userResponse.UserId,
Start = DateTime.Today,
End = DateTime.Today,
TimeCodes = new TimeCode[] { TimeCode.Available}
};
QueryScheduleResponse scheduleResponse = (QueryScheduleResponse)serviceProxy.Execute(scheduleRequest);
但是,我在CRM服务日历中看不到scheduleResponse中的正确响应。响应中的开始日期和结束日期也会发生变化。例如,假设我在scheduleRequest中输入开始日期和结束日期为12,但在scheduleResponse中,它们分别变为第12和第13。我已经检查过我指的是正确的用户。
这就是用户在CRM中的日程安排(工作时间:上午10点到晚上7点):
这就是scheduleResponse的结果:
观察日期并安排更改。有没有其他方法可以实现此功能?
答案 0 :(得分:0)
Dynamics CRM基本上将数据库中的所有日期存储为 UTC时间 .Crm用户必须转换为用户LocalTime。
获得scheduleResponse后。您可以使用以下代码获取用户开始时间和结束时间。
QueryScheduleResponse scheduleResponse = (QueryScheduleResponse)service.Execute(scheduleRequest);
foreach (var getTimings in scheduleResponse.TimeInfos)
{
DateTime startTime =Convert.ToDateTime(getTimings.Start.Value.ToLocalTime());
DateTime endTime = Convert.ToDateTime(getTimings.Start.Value.ToLocalTime());
}
注意:我们还有 ExpandCalendarRequest 类来检索用户可用的时间