Ejemplo n.º 1
0
        public async Task <ActionResult> Index([FromQuery] UsersListRequestVM vm)
        {
            var users = await _users.GetUsersAsync(vm);

            ViewBag.AllowPasswordAuth = _config.GetStaticConfig().Auth.AllowPasswordAuth;
            return(View(users));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Returns the request with default/valid values.
        /// </summary>
        private UsersListRequestVM NormalizeListRequest(UsersListRequestVM vm)
        {
            if (vm == null)
            {
                vm = new UsersListRequestVM();
            }

            var orderableFields = new[] { nameof(UserTitleVM.FullName), nameof(UserTitleVM.Email) };

            if (!orderableFields.Contains(vm.OrderBy))
            {
                vm.OrderBy = orderableFields[0];
            }

            if (vm.Page < 0)
            {
                vm.Page = 0;
            }

            if (vm.OrderDescending == null)
            {
                vm.OrderDescending = false;
            }

            return(vm);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Returns the list of all registered users.
        /// </summary>
        public async Task <UsersListVM> GetUsersAsync(UsersListRequestVM request)
        {
            const int PageSize = 20;

            request = NormalizeListRequest(request);

            var query = await LoadUsersAsync();

            if (!string.IsNullOrEmpty(request.SearchQuery))
            {
                var nq = request.SearchQuery.ToLower();
                query = query.Where(x => x.FullName.ToLower().Contains(nq) ||
                                    x.Email.ToLower().Contains(nq));
            }

            if (request.Roles?.Length > 0)
            {
                query = query.Where(x => request.Roles.Contains(x.Role));
            }

            var totalCount = query.Count();
            var items      = query.OrderBy(request.OrderBy, request.OrderDescending)
                             .Skip(PageSize * request.Page)
                             .Take(PageSize)
                             .ToList();

            return(new UsersListVM
            {
                Items = items,
                PageCount = (int)Math.Ceiling((double)totalCount / PageSize),
                Request = request
            });
        }
Ejemplo n.º 4
0
        public async Task <ActionResult> Index([FromQuery] UsersListRequestVM vm)
        {
            var users = await _users.GetUsersAsync(vm);

            return(View(users));
        }