public IEnumerable <AttendanceGroupViewModel> AttendanceMonthlyGroup(AttendanceSearchModel search)
        {
            var query = Context.Attendances.Include(t => t.CreatedBy).Where(t =>
                                                                            (String.IsNullOrEmpty(search.keyWord) || t.CreatedBy.UserName.Contains(search.keyWord) || t.CreatedBy.Email.Contains(search.keyWord)) &&
                                                                            (t.Approved == true) && (t.EndWorkDate != null) &&
                                                                            (search.ResourceIds == null || search.ResourceIds.Count == 0 || search.ResourceIds.Contains(t.CreatedById.Value)) &&
                                                                            (search.attendanceIds == null || search.attendanceIds.Count == 0 || search.attendanceIds.Contains(t.Id)) &&
                                                                            (search.startDate == null || t.StartWorkDate.Date >= search.startDate.Value.Date) &&
                                                                            (search.endDate == null || t.EndWorkDate.Value.Date <= search.endDate.Value.Date))
                        .Select(t => new AttendanceViewModel
            {
                Id              = t.Id,
                ResourceId      = t.CreatedById.Value,
                ResourceName    = t.CreatedBy.UserName,
                Start           = t.StartWorkDate,
                End             = t.EndWorkDate.Value,
                WorkedHours     = (t.WorkedHours > 8) ? 8 : t.WorkedHours,
                OverTime        = (t.WorkedHours - 8) > 0 ? t.WorkedHours - 8 : 0,
                OverTimePayment = ((t.WorkedHours - 8) > 0 ? t.WorkedHours - 8 : 0) * (t.CreatedBy.CostPerHour * 2),
                NetPayment      = ((t.WorkedHours > 8) ? 8 : t.WorkedHours) * (t.CreatedBy.CostPerHour),
            });;
            var dataGroupped = query.ToList().GroupBy(g => new { g.Start.Date.Year, g.Start.Date.Month }).Select(s => new AttendanceGroupViewModel
            {
                Start            = s.First().Start.Date,
                Month            = s.First().Start.Month,
                Year             = s.First().Start.Year,
                TotalAttendances = s.Count(),
                WorkedHours      = s.Sum(wh => wh.WorkedHours) + s.Sum(wh => wh.OverTime),
                NetPayment       = s.Sum(wh => wh.NetPayment) + s.Sum(wh => wh.OverTimePayment),
            }).OrderBy(or => or.Year).ThenBy(or => or.Month);

            return(dataGroupped);
        }
        public (IEnumerable <AttendanceViewModel>, int) AttendanceFilter(AttendanceSearchModel search)
        {
            var query = Context.Attendances.Include(t => t.CreatedBy).Where(t =>
                                                                            (String.IsNullOrEmpty(search.keyWord) || t.CreatedBy.UserName.Contains(search.keyWord) || t.CreatedBy.Email.Contains(search.keyWord)) &&
                                                                            (t.Approved == search.Approved) &&
                                                                            (search.ResourceIds == null || search.ResourceIds.Count == 0 || search.ResourceIds.Contains(t.CreatedById.Value)) &&
                                                                            (search.attendanceIds == null || search.attendanceIds.Count == 0 || search.attendanceIds.Contains(t.Id)) &&
                                                                            (search.startDate == null || t.StartWorkDate.Date >= search.startDate.Value.Date) &&
                                                                            (search.endDate == null || t.EndWorkDate.Value.Date <= search.endDate.Value.Date))
                        .Select(t => new AttendanceViewModel
            {
                Id              = t.Id,
                ResourceId      = t.CreatedById.Value,
                ResourceName    = t.CreatedBy.UserName,
                Start           = t.StartWorkDate,
                End             = t.EndWorkDate.Value,
                WorkedHours     = (t.WorkedHours > 8) ? 8 : t.WorkedHours,
                ExceptionHours  = t.ExceptionHours,
                OverTime        = (t.WorkedHours - 8) > 0 ? t.WorkedHours - 8 : 0,
                Comment         = t.Comment,
                OverTimePayment = ((t.WorkedHours - 8) > 0 ? t.WorkedHours - 8 : 0) * (t.CreatedBy.CostPerHour * 2),
                NetPayment      = ((t.WorkedHours > 8) ? 8 : t.WorkedHours) * (t.CreatedBy.CostPerHour)
                                  + ((t.WorkedHours - 8) > 0 ? t.WorkedHours - 8 : 0) * (t.CreatedBy.CostPerHour * 2),
            });
            var count = query.Count();
            var data  = query.OrderBy(t => t.Id).Skip((search.pageNumber - 1) * search.pageSize).Take(search.pageSize);

            return(data, count);
        }
        public IResponse GetAll(AttendanceSearchModel search)
        {
            var(result, totalRows)  = UOW.Attendances.AttendanceFilter(search);
            response.pagesTotalRows = totalRows;
            float all_pages = (float)totalRows / search.pageSize;

            response.pagesTotalNumber = (int)Math.Ceiling(all_pages);
            response.pageSize         = search.pageSize;
            response.pageNumber       = search.pageNumber;
            response.data             = result;
            return(response);
        }
示例#4
0
        public ActionResult GetMyAttendance([FromQuery] AttendanceSearchModel search)
        {
            search.ResourceIds = new List <int> {
                User.GetUserId()
            };
            var Rs = service.GetAll(search);

            if (Rs.status == false)
            {
                return(BadRequest());
            }
            return(Ok(Rs));
        }
示例#5
0
        /// <summary>
        /// 学员考勤-列表查询
        /// </summary>
        /// <param name="search"></param>
        /// <returns></returns>
        public static PagedList <vw_ClassAttendanceList> GetClassAttendanceList(AttendanceSearchModel search)
        {
            string table = string.Empty, fields = string.Empty, orderby = string.Empty, where = string.Empty; //定义结构

            fields  = @"  * ";                                                                                //输出字段
            table   = @" vw_ClassAttendanceList ";                                                            //表或者视图
            orderby = "ClassDate";                                                                            //排序信息
            StringBuilder sb = new StringBuilder();                                                           //构建where条件

            sb.Append(" 1=1 ");



            if (!string.IsNullOrWhiteSpace(search.ComCode))//校区
            {
                sb.AppendFormat(" and [ComCode] = '{0}' ", search.ComCode);
            }

            if (!string.IsNullOrWhiteSpace(search.className))//按钮中文名称
            {
                sb.AppendFormat(" and ClassName like '%{0}%' ", search.className);
            }
            //if (search.timeStart != null && search.timeEnd != null)//时间
            //    sb.AppendFormat(" and ClassDate between '{0}'  and  '{1}'", search.timeStart, search.timeEnd);

            if (!string.IsNullOrWhiteSpace(search.timeStart))//开班时间
            {
                sb.AppendFormat(" and ClassDate > = '{0}' ", search.timeStart);
            }
            if (!string.IsNullOrWhiteSpace(search.timeEnd))//结束时间
            {
                sb.AppendFormat(" and ClassDate <= '{0}' ", search.timeEnd);
            }

            where = sb.ToString();
            int allcount = 0;
            var list     = CommonPage <vw_ClassAttendanceList> .GetPageList(
                out allcount, table, fields : fields, where : where.Trim(),
                orderby : orderby, pageindex : search.CurrentPage, pagesize : search.PageSize, connect : DBKeys.PRX);

            return(new PagedList <vw_ClassAttendanceList>(list, search.CurrentPage, search.PageSize, allcount));
        }
示例#6
0
        //
        // GET: /AttendanceList/

        public ActionResult AttendanceList(AttendanceSearchModel search)
        {
            AttendanceListViewModel model = new AttendanceListViewModel();

            model.search             = search;                                                                                 //页面的搜索模型
            model.search.PageSize    = 15;                                                                                     //每页显示
            model.search.CurrentPage = Convert.ToInt32(Request["pageindex"]) <= 0 ? 1 : Convert.ToInt32(Request["pageindex"]); //当前页


            //分校下拉项
            List <CommonEntity> ComCodeIL = CommonData.Get_SYS_Company_COMP_Code(UserSession.comcode);//分校

            model.ComCodeIL        = CommonData.Instance.GetBropDownListData_Choice(ComCodeIL);
            model.search.ComCodeIL = CommonData.Instance.GetBropDownListData_Choice(ComCodeIL);


            if (UserSession.comcode != null && UserSession.comcode != "1")
            {
                search.ComCode = UserSession.comcode;//默认查询当前分校的人员
            }

            model.buttonlist = AttendaceData.GetClassAttendanceList(search);
            return(View(model));
        }
 public IResponse GetGrouped(AttendanceSearchModel search)
 {
     response.data = UOW.Attendances.AttendanceMonthlyGroup(search);
     return(response);
 }
示例#8
0
        public ActionResult GetGrouped([FromQuery] AttendanceSearchModel search)
        {
            var Rs = service.GetGrouped(search);

            return(Ok(Rs));
        }
示例#9
0
        public ActionResult AttendanceFilter([FromQuery] AttendanceSearchModel search)
        {
            var Rs = service.GetAll(search);

            return(Ok(Rs));
        }