Пример #1
0
        //id == page
        public ActionResult Users(int page = 1, string orderby = "", string option = "", int pageSize = 10, string search = "")
        {
            if (page < 1)
            {
                page = 1;
            }

            orderby = orderby.ToLower();
            option  = option.ToLower();

            ViewBag.FirstNameOption = (orderby == "firstname" && option == "asc") ? "desc" : "asc";
            ViewBag.LastNameOption  = (orderby == "lastname" && option == "asc") ? "desc" : "asc";
            ViewBag.UsernameOption  = (orderby == "username" && option == "asc") ? "desc" : "asc";

            ListUsersInput input = new ListUsersInput
            {
                page     = page,
                orderby  = orderby,
                option   = option,
                PageSize = pageSize,
                search   = search
            };

            var result   = _userService.GetAllUsers(input);
            int maxPages = result.TotalCount / pageSize;

            if (result.TotalCount % pageSize > 0)
            {
                maxPages++;
            }

            ViewBag.pages = maxPages;

            return(View(result));
        }
Пример #2
0
        public ListUsersDto GetAllUsers(ListUsersInput input)
        {
            var query = db.Users.AsQueryable();

            if (input.option == "asc")
            {
                if (input.orderby == "firstname")
                {
                    query = query.OrderBy(x => x.FirstName);
                }
                else if (input.orderby == "lastname")
                {
                    query = query.OrderBy(x => x.LastName);
                }
                else if (input.orderby == "username")
                {
                    query = query.OrderBy(x => x.UserName);
                }
                else
                {
                    query = query.OrderBy(x => x.LastName);
                }
            }
            else
            {
                if (input.orderby == "firstname")
                {
                    query = query.OrderByDescending(x => x.FirstName);
                }
                else if (input.orderby == "lastname")
                {
                    query = query.OrderByDescending(x => x.LastName);
                }
                else if (input.orderby == "username")
                {
                    query = query.OrderByDescending(x => x.UserName);
                }
                else
                {
                    query = query.OrderBy(x => x.LastName);
                }
            }

            if (!string.IsNullOrEmpty(input.search))
            {
                query = query.Where(x => x.FirstName.Contains(input.search) ||
                                    x.LastName.Contains(input.search) ||
                                    x.UserName.Contains(input.search));
            }

            var tempResult = query.Skip((input.page - 1) * input.PageSize).Take(input.PageSize).Select(x => new
            {
                x.Id,
                x.FirstName,
                x.LastName,
                x.UserName
            });

            ListUsersDto result = new ListUsersDto
            {
                TotalCount = query.Count(),
                Users      = tempResult.Select(x => new UserDto
                {
                    ID        = x.Id,
                    FirstName = x.FirstName,
                    LastName  = x.LastName,
                    Username  = x.UserName
                }).ToList()
            };

            return(result);
        }