C# 在crm 2013中查找工作时间中的休息时间(来自用户实体)
我已经在crm中设置了用户实体的工作时间,如thi 上午八时至下午一时 下午1时至2时休息时间 下午二时至五时 我使用了以下代码来确保用户是否可用C# 在crm 2013中查找工作时间中的休息时间(来自用户实体),c#,dynamics-crm-2011,crm,C#,Dynamics Crm 2011,Crm,我已经在crm中设置了用户实体的工作时间,如thi 上午八时至下午一时 下午1时至2时休息时间 下午二时至五时 我使用了以下代码来确保用户是否可用 QueryScheduleRequest scheduleRequest = new QueryScheduleRequest { ResourceId = Guid.Parse("E086A8A2-A741-4BB8-8BFC-61829949CBD9"), Start = DateTime.Now.ToUniversalTime(
QueryScheduleRequest scheduleRequest = new QueryScheduleRequest
{
ResourceId = Guid.Parse("E086A8A2-A741-4BB8-8BFC-61829949CBD9"),
Start = DateTime.Now.ToUniversalTime(),
End = DateTime.Now.AddMinutes(1).ToUniversalTime(),
TimeCodes = new TimeCode[] { TimeCode.Available }
};
QueryScheduleResponse scheduleResponse =
(QueryScheduleResponse)_serviceProxy.Execute(scheduleRequest);
if (scheduleResponse.TimeInfos.Length > 0)
{
// User is available
}
现在,如果我在下午1点到2点之间检查这个代码,它仍然显示我的用户是可用的,尽管它是休息时间。有没有办法让我们知道现在是休息时间。上面的代码的工作方式就像我在上午8点到下午5点之间签出一方,然后它并没有显示用户可用。我不想包括休息时间。答案是使用时间码。如下所示:
QueryScheduleRequest scheduleRequest = new QueryScheduleRequest
{
ResourceId = userResponse.UserId,
Start = DateTime.Now,
End = DateTime.Today.AddDays(7),
TimeCodes = new TimeCode[] { TimeCode.Unavailable }
};
QueryScheduleResponse scheduleResponse = (QueryScheduleResponse)_orgService.Execute(scheduleRequest);
你会得到休息时间的抱歉,如果这太晚了,但这对我来说很有效 在我的情况下,我只使用我需要的,但这可以相应地改变
WhoAmIResponse userResponse = (WhoAmIResponse)service.Execute(new WhoAmIRequest());
QueryScheduleRequest req = new QueryScheduleRequest
{
ResourceId = userResponse.UserId,
Start = DateTime.Today,
End = DateTime.Today.AddDays(1),
TimeCodes = new TimeCode[] { TimeCode.Available, TimeCode.Unavailable, TimeCode.Busy, TimeCode.Filter }
};
QueryScheduleResponse resp = service.Execute(req) as QueryScheduleResponse;
bool free = true;
foreach (TimeInfo timeInfo in resp.TimeInfos)
{
if (timeInfo.SubCode == SubCode.Break && DateTime.UtcNow > timeInfo.Start && DateTime.UtcNow < timeInfo.End)
{
free = false;
Console.WriteLine("on break");
}else if (timeInfo.SubCode == SubCode.Schedulable && DateTime.UtcNow < timeInfo.Start && DateTime.UtcNow > timeInfo.End)
{
free = false;
Console.WriteLine("out of work hours");
}
}
if (free)
{
Console.WriteLine("Free");
}
Console.ReadKey();
请让我知道这是否有帮助问题不在于Utc时间。问题在于如何找到当前是否为休息时间。对不起,我的意思是说这不会:这不会解决任何问题,但不要使用DateTime.Now.ToUniversalTime。只需使用DateTime.UtcNow。您找到解决方案了吗?没有,我仍在搜索解决方案。您确定该用户的计划已按您认为的方式设置吗?您能否确认,当您尝试在午休时间预订某个特定用户、技术人员、资源等的服务时,您会收到一条消息,您无法接受?