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));
        }
Example #2
0
        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);
        }