public HttpResponseMessage GetUsers([FromUri] PagedUsersRequest request) { if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } HttpStatusCode code = HttpStatusCode.OK; ItemResponse <PagedList <User> > response = new ItemResponse <PagedList <User> >(); response.Item = _dashboardService.GetPaginatedUsers(request); if (response.Item == null) { code = HttpStatusCode.NotFound; response.IsSuccessful = false; } return(Request.CreateResponse(code, response)); }
public PagedList <User> GetPaginatedUsers(PagedUsersRequest request) { int totalCount = 0; PagedList <User> pagedContent = null; List <User> pagedUsers = null; Dictionary <int, List <string> > userRolesDict = null; Action <SqlParameterCollection> inputParamDelegate = delegate(SqlParameterCollection paramCollection) { paramCollection.AddWithValue("@PageIndex", request.PageIndex); paramCollection.AddWithValue("@PageSize", request.PageSize); paramCollection.AddWithValue("@SortTypeId", request.SortTypeId); paramCollection.AddWithValue("@SearchTerm", request.SearchTerm); paramCollection.AddWithValue("@RoleId", request.RoleId); }; Action <IDataReader, short> singleRecMapper = delegate(IDataReader reader, short set) { if (set == 0) { int startingIndex = 0; int userId = reader.GetSafeInt32(startingIndex++); int roleId = reader.GetSafeInt32(startingIndex++); if (userRolesDict == null) { totalCount = reader.GetSafeInt32(startingIndex++); userRolesDict = new Dictionary <int, List <string> >(); } if (!userRolesDict.ContainsKey(userId)) { userRolesDict.Add(userId, new List <string>()); } userRolesDict[userId].Add(rolesConstant[roleId]); } if (set == 1) { User user = UserMapper(reader); if (pagedUsers == null) { pagedUsers = new List <User>(); } pagedUsers.Add(user); } }; _dataProvider.ExecuteCmd("dbo.Users_Pagination", inputParamDelegate, singleRecMapper); if (pagedUsers != null && userRolesDict != null) { foreach (User currentUser in pagedUsers) { if (userRolesDict.ContainsKey(currentUser.Id)) { currentUser.Roles = userRolesDict[currentUser.Id]; } } } if (pagedContent == null) { pagedContent = new PagedList <User>(pagedUsers, request.PageIndex, request.PageSize, totalCount); } if (pagedContent != null && pagedContent.TotalCount == 0) { return(null); } return(pagedContent); }