예제 #1
0
        /// <summary>
        /// 获得与fromDate-toDate事件上有交集的请假信息
        /// </summary>
        /// <param name="accountID"></param>
        /// <param name="fromDate"></param>
        /// <param name="toDate"></param>
        /// <returns></returns>
        public List <LeaveRequest> GetLeaveRequestByAccountAndRelatedDate(int accountID, DateTime fromDate, DateTime toDate)
        {
            #region 找出所有符合条件的请假单及其符合条件的子项

            //0 新增;1 提交;2 审核不通过;3 审核通过;4 取消请假;5 拒绝取消假期;6 批准取消假期;7 审核中;8 审核取消中
            //根据账号找出所有审核通过、取消请假、拒绝取消假期、审核取消中的请假单
            List <LeaveRequest> LeaveRequest = _DalLeaveRequest.GetAllLeaveRequestByAccountIDForCalendar(accountID);

            for (int i = 0; i < LeaveRequest.Count; i++)
            {
                DateTime fromDt = Convert.ToDateTime("1900-1-1");
                if (LeaveRequest[i].FromDate != null)
                {
                    fromDt = Convert.ToDateTime(LeaveRequest[i].FromDate);
                }
                DateTime toDt = Convert.ToDateTime("2999-12-31");
                if (LeaveRequest[i].FromDate != null)
                {
                    toDt = Convert.ToDateTime(LeaveRequest[i].ToDate);
                }
                //判断这张请假单是否在时间范围内
                if (AdjustTime(fromDt, toDt, fromDate, toDate))
                {
                    List <LeaveRequestItem> leaveRequestItemList = new List <LeaveRequestItem>();
                    foreach (LeaveRequestItem item in LeaveRequest[i].LeaveRequestItems)
                    {
                        //判断子项是否在时间范围内
                        if (AdjustTime(item.FromDate, item.ToDate, fromDate, toDate))
                        {
                            leaveRequestItemList.Add(item);
                        }
                    }
                    LeaveRequest[i].LeaveRequestItems = leaveRequestItemList;
                }
                else
                {
                    LeaveRequest.RemoveAt(i);
                    i--;
                }
            }

            #endregion
            return(LeaveRequest);
        }