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); }
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)); }
/// <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)); }
// // 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); }
public ActionResult GetGrouped([FromQuery] AttendanceSearchModel search) { var Rs = service.GetGrouped(search); return(Ok(Rs)); }
public ActionResult AttendanceFilter([FromQuery] AttendanceSearchModel search) { var Rs = service.GetAll(search); return(Ok(Rs)); }