public AttendanceResponse GetAllAttendances(AttendanceSearchRequest attendanceSearchRequest) { int fromRow = (attendanceSearchRequest.PageNo - 1) * attendanceSearchRequest.PageSize; int toRow = attendanceSearchRequest.PageSize; Expression <Func <Attendance, bool> > query = s => ( (attendanceSearchRequest.EmployeeId == 0 || attendanceSearchRequest.EmployeeId.Equals(s.EmployeeId)) && (attendanceSearchRequest.Date.Year == 1 || (attendanceSearchRequest.Date.Month.Equals(s.CheckInTime.Month) && (attendanceSearchRequest.Date.Year.Equals(s.CheckInTime.Year)))) ); IEnumerable <Attendance> attendances = attendanceSearchRequest.IsAsc ? DbSet .Where(query) .OrderBy(orderClause[attendanceSearchRequest.OrderByColumn]) .Skip(fromRow) .Take(toRow) .ToList() : DbSet .Where(query) .OrderByDescending(orderClause[attendanceSearchRequest.OrderByColumn]) .Skip(fromRow) .Take(toRow) .ToList(); return(new AttendanceResponse { Attendances = attendances, TotalCount = DbSet.Count(query), FilteredCount = DbSet.Count(query) }); }
public ActionResult Index(AttendanceSearchRequest searchRequest) { var GMT = Convert.ToInt32(Session["ClientGMT"]); string[] userPermissionsSet = (string[])System.Web.HttpContext.Current.Session["UserPermissionSet"]; if (!userPermissionsSet.Contains("ViewAllEmployeeAttendance")) { searchRequest.EmployeeId = (int)Session["EmployeeID"]; } var attendanceresponse = attendanceService.GetAllAttendances(searchRequest); var attendanceList = attendanceresponse.Attendances.ToList().Select(x => x.MapAttendanceResponseFromServerToClient(GMT)).ToList(); var model = new AttendanceWebViewModel { data = attendanceList, recordsFiltered = attendanceresponse.FilteredCount, recordsTotal = attendanceresponse.TotalCount }; if (searchRequest.Date.Year != 1) { TimeSpan totalWorkingHoursTimeSpan = attendanceList.Select(x => TimeSpan.Parse(x.WorkingHours)).Aggregate(TimeSpan.Zero, (subtotal, t) => subtotal.Add(t)); model.TotalWorkingHours = Math.Round(totalWorkingHoursTimeSpan.TotalHours, 2); double avg = Math.Round(totalWorkingHoursTimeSpan.TotalHours / Convert.ToDouble(model.data.Count), 2); model.AvgWorkingHours = Double.IsNaN(avg) ? 0 : avg; model.TotalWorkingDays = model.data.Count; } else { model.TotalWorkingHours = 0; } return(Json(model, JsonRequestBehavior.AllowGet)); }
public AttendanceResponse GetAllAttendances(AttendanceSearchRequest attendanceSearchRequest) { return(attendanceRepository.GetAllAttendances(attendanceSearchRequest)); }
public AttendanceWebViewModel() { data = new List <AttendanceWebModel>(); AttendanceSearchRequest = new AttendanceSearchRequest(); Employees = new List <EmployeeModel>(); }