C 试图根据人员轮班模式计算休假天数

C 试图根据人员轮班模式计算休假天数,c,telerik,C,Telerik,我正在尝试为生病或休假的人寻找时间段,并在telerik调度程序组件中屏蔽时间。我遇到的问题是多个资源,而不是仅仅为所有人从一个人的高度照明 /// <summary> /// Handles the TimeSlotCreated event of the apertureAppointments control. /// </summary> /// <param name="sender">The source of th

我正在尝试为生病或休假的人寻找时间段,并在telerik调度程序组件中屏蔽时间。我遇到的问题是多个资源,而不是仅仅为所有人从一个人的高度照明

    /// <summary>
    /// Handles the TimeSlotCreated event of the apertureAppointments control.
    /// </summary>
    /// <param name="sender">The source of the event.</param>
    /// <param name="e">The <see cref="TimeSlotCreatedEventArgs"/> instance containing the event data.</param>
 protected void apertureAppointments_TimeSlotCreated(object sender, TimeSlotCreatedEventArgs e)
 {
        int i = 0;
        bool isFound = false;
        List<tblApertureNetShiftPattern> _list = new List<tblApertureNetShiftPattern>();
        _list = _dal.getHolidays();
        List<Resource> resources = new List<Resource>(apertureAppointments.Resources.GetResourcesByType("Managers"));
        Resource res = resources[5];

        foreach (tblApertureNetShiftPattern sp in _list)
        {
            if (_list.Count > 1)
                i++;
            else
                i = 0;

            DateTime? dt1 = _list[i].startdate;
            DateTime? dt2 = _list[i].endDate;
            if (sp.manager_name == "Adam Adair" && res.Text == "Adam Adair")
            {
                isFound = true;
                if (DoDateRangesOverlap(e.TimeSlot.Start, e.TimeSlot.End, dt1, dt2) && isFound == true)
                {
                    e.TimeSlot.CssClass = "UnavailableCssStyle";
                    dt1 = null;
                    dt2 = null;
                    isFound = false;
                }
            }
            else if (sp.manager_name == "Clare Coyle" && res.Text == "Clare Coyle")
            {
                if (DoDateRangesOverlap(e.TimeSlot.Start, e.TimeSlot.End, dt1, dt2) && isFound == false)
                {
                    e.TimeSlot.CssClass = "UnavailableCssStyle";
                }
            }
            else if (sp.manager_name == "Christine Clarke" && res.Text == "Christine Clarke")
            {
                if (DoDateRangesOverlap(e.TimeSlot.Start, e.TimeSlot.End, dt1, dt2) && isFound == false)
                {
                    e.TimeSlot.CssClass = "UnavailableCssStyle";
                }
            }
            else if (sp.manager_name == "Conan Keenan" && res.Text == "Conan Keenan" && isFound == false)
            {
                if (DoDateRangesOverlap(e.TimeSlot.Start, e.TimeSlot.End, dt1, dt2) && isFound == false)
                {
                    e.TimeSlot.CssClass = "UnavailableCssStyle";
                }
            }
            else if (sp.manager_name == "Susie McCormick" && res.Text == "Susie McCormick")
            {
                if (DoDateRangesOverlap(e.TimeSlot.Start, e.TimeSlot.End, dt1, dt2) && isFound == false)
                {
                    e.TimeSlot.CssClass = "UnavailableCssStyle";
                }
            }
        }
 }
//
///处理ApertureAppointment控件的TimeSlotCreated事件。
/// 
///事件的来源。
///包含事件数据的实例。
受保护的空光圈已创建(对象发送方,TimeSlotCreatedEventArgs e)
{
int i=0;
bool isFound=false;
列表_List=新列表();
_list=_dal.getHolidays();
列表资源=新列表(apertureappointment.resources.GetResourcesByType(“经理”);
资源储量=资源[5];
foreach(列表中的TBLApertureNetShift模式sp)
{
如果(_list.Count>1)
i++;
其他的
i=0;
日期时间?dt1=_列表[i]。开始日期;
DateTime?dt2=_列表[i]。结束日期;
如果(sp.manager_name==“Adam Adair”和&res.Text==“Adam Adair”)
{
isFound=true;
if(doDaterRangeSoverLap(e.TimeSlot.Start,e.TimeSlot.End,dt1,dt2)和&isFound==true)
{
e、 TimeSlot.CssClass=“不可用csssstyle”;
dt1=null;
dt2=null;
isFound=false;
}
}
else if(sp.manager_name==“Clare Coyle”和&res.Text==“Clare Coyle”)
{
if(doDaterRangeSoverLap(e.TimeSlot.Start,e.TimeSlot.End,dt1,dt2)和&isFound==false)
{
e、 TimeSlot.CssClass=“不可用csssstyle”;
}
}
else if(sp.manager_name==“Christine Clarke”和&res.Text==“Christine Clarke”)
{
if(doDaterRangeSoverLap(e.TimeSlot.Start,e.TimeSlot.End,dt1,dt2)和&isFound==false)
{
e、 TimeSlot.CssClass=“不可用csssstyle”;
}
}
else if(sp.manager_name==“柯南·基南”&&res.Text==“柯南·基南”&&isFound==false)
{
if(doDaterRangeSoverLap(e.TimeSlot.Start,e.TimeSlot.End,dt1,dt2)和&isFound==false)
{
e、 TimeSlot.CssClass=“不可用csssstyle”;
}
}
else if(sp.manager_name==“Susie McCormick”和&res.Text==“Susie McCormick”)
{
if(doDaterRangeSoverLap(e.TimeSlot.Start,e.TimeSlot.End,dt1,dt2)和&isFound==false)
{
e、 TimeSlot.CssClass=“不可用csssstyle”;
}
}
}
}
因为只有一个条目亚当·阿代尔,但是它却为离开的人高举了所有的单元格

Get holidays只返回一个项目列表

 public List<tblApertureNetShiftPattern> getHolidays()
 {
        List<tblApertureNetShiftPattern> list = new List<tblApertureNetShiftPattern>();

        var q = from _holidays in apertureNetEntities.tblApertureNetShiftPatterns.Where(w => w.isDeleted == false && w.isOff == true)
                select _holidays;

        list = q.ToList();

        return list;
 }
public List getHolidays()
{
列表=新列表();
var q=来自apertureNetEntities.tblapertureNetShift模式中的_holidays,其中(w=>w.isDeleted==false和&w.isOff==true)
选择"假日",;
list=q.ToList();
退货清单;
}

只有一条记录,admam adair将关闭

我自己解决了这个问题,没有社区的帮助,结果很简单,我没有检查timeslot created语句中的人物文本

if (res.Text == "Adam Adair" && e.TimeSlot.Start == dt1 && e.TimeSlot.Resource.Text == "Adam Adair")

这里重要的补充是e.TimeSlot.Resource.Text==“Adam Adair”

不要只是否决投票,请解释一下原因!我已经说明了问题所在,以及我到目前为止所做的尝试,到底错在哪里!你需要在meta上解释一下