protected override Response Handle(Request message) { var query = this.userManager.Users .Include(t => t.Roles) .ThenInclude(t => t.Role) .AsNoTracking(); if (!string.IsNullOrEmpty(message.Email?.Value)) { query = query.Where(u => u.Email.Contains(message.Email.Value)); } if (!string.IsNullOrEmpty(message.Name)) { query = query.Where(u => u.UserName.Contains(message.Name)); } if (message.Id != null) { query = query.Where(u => u.Id.Equals(message.Id)); } if (message.Roles?.Items?.Count > 0) { query = query.Where(u => u.Roles.Any(t => message.Roles.Items.Contains(t.Role.Name))); } if (message.Activation != null) { query = message.Activation.Value == UserActivation.Active ? query.Where(u => u.DateActivated.HasValue) : query.Where(u => !u.DateActivated.HasValue); } var result = query .OrderBy(t => t.Id) .Paginate(t => new Item(t, this), message.Paginator); return(new Response { Users = result, Actions = this.permissionManager.CanAccess <AddUser>() ? new ActionList(AddUser.Button()) : null, ExportToExcel = UiFormConstants.ExportToExcelLink(typeof(ManageUsers).GetFormId(), nameof(Response.Users), message) }); }