From 5a79e7fe665de0755d82fff18f80d907932dde97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 19 May 2020 22:15:21 +0300 Subject: [PATCH] Make user search parameters nullable and support paging. --- .../Abp/Identity/UserLookupSearchInputDto.cs | 2 +- .../Identity/IdentityUserLookupAppService.cs | 3 +- ...sitoryExternalUserLookupServiceProvider.cs | 8 +++-- .../HttpClientIdentityUserLookupService.cs | 11 +++--- .../IExternalUserLookupServiceProvider.cs | 7 ++-- .../Volo/Abp/Users/IUserLookupService.cs | 7 ++-- .../Volo/Abp/Users/UserLookupService.cs | 34 +++++++++++++++---- .../Users/MongoDB/MongoUserRepositoryBase.cs | 2 +- 8 files changed, 52 insertions(+), 22 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/UserLookupSearchInputDto.cs b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/UserLookupSearchInputDto.cs index a2413e64ea..b48e526576 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/UserLookupSearchInputDto.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/UserLookupSearchInputDto.cs @@ -2,7 +2,7 @@ namespace Volo.Abp.Identity { - public class UserLookupSearchInputDto : LimitedResultRequestDto, ISortedResultRequest + public class UserLookupSearchInputDto : PagedResultRequestDto, ISortedResultRequest { public string Sorting { get; set; } diff --git a/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityUserLookupAppService.cs b/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityUserLookupAppService.cs index 696ce864ce..4c1ee1ffba 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityUserLookupAppService.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityUserLookupAppService.cs @@ -45,7 +45,8 @@ namespace Volo.Abp.Identity var users = await UserLookupServiceProvider.SearchAsync( input.Sorting, input.Filter, - input.MaxResultCount + input.MaxResultCount, + input.SkipCount ); return new ListResultDto( diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserRepositoryExternalUserLookupServiceProvider.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserRepositoryExternalUserLookupServiceProvider.cs index 9d8cd1dab4..c3c73db342 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserRepositoryExternalUserLookupServiceProvider.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserRepositoryExternalUserLookupServiceProvider.cs @@ -49,14 +49,16 @@ namespace Volo.Abp.Identity } public virtual async Task> SearchAsync( - string sorting, - string filter, - int maxResultCount, + string sorting = null, + string filter = null, + int maxResultCount = int.MaxValue, + int skipCount = 0, CancellationToken cancellationToken = default) { var users = await UserRepository.GetListAsync( sorting: sorting, maxResultCount: maxResultCount, + skipCount: skipCount, filter: filter, includeDetails: false, cancellationToken: cancellationToken diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientIdentityUserLookupService.cs b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientIdentityUserLookupService.cs index 6d5fdd0f92..3a14cb2b10 100644 --- a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientIdentityUserLookupService.cs +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientIdentityUserLookupService.cs @@ -29,16 +29,19 @@ namespace Volo.Abp.Identity } public async Task> SearchAsync( - string sorting, - string filter, - int maxResultCount, + string sorting = null, + string filter = null, + int maxResultCount = int.MaxValue, + int skipCount = 0, CancellationToken cancellationToken = default) { var result = await UserLookupAppService.SearchAsync( new UserLookupSearchInputDto { Filter = filter, - MaxResultCount = maxResultCount + MaxResultCount = maxResultCount, + SkipCount = skipCount, + Sorting = sorting } ); diff --git a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/IExternalUserLookupServiceProvider.cs b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/IExternalUserLookupServiceProvider.cs index b973033be6..67c9964d95 100644 --- a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/IExternalUserLookupServiceProvider.cs +++ b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/IExternalUserLookupServiceProvider.cs @@ -12,9 +12,10 @@ namespace Volo.Abp.Users Task FindByUserNameAsync(string userName, CancellationToken cancellationToken = default); Task> SearchAsync( - string sorting, - string filter, - int maxResultCount, + string sorting = null, + string filter = null, + int maxResultCount = int.MaxValue, + int skipCount = 0, CancellationToken cancellationToken = default); } } \ No newline at end of file diff --git a/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/IUserLookupService.cs b/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/IUserLookupService.cs index 44e84eb350..d07eb82b9e 100644 --- a/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/IUserLookupService.cs +++ b/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/IUserLookupService.cs @@ -13,9 +13,10 @@ namespace Volo.Abp.Users Task FindByUserNameAsync(string userName, CancellationToken cancellationToken = default); Task> SearchAsync( - string sorting, - string filter, - int maxResultCount, + string sorting = null, + string filter = null, + int maxResultCount = int.MaxValue, + int skipCount = 0, CancellationToken cancellationToken = default); } } diff --git a/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/UserLookupService.cs b/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/UserLookupService.cs index 7621f3f63e..20c6193a25 100644 --- a/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/UserLookupService.cs +++ b/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/UserLookupService.cs @@ -140,15 +140,37 @@ namespace Volo.Abp.Users return await _userRepository.FindAsync(externalUser.Id, cancellationToken: cancellationToken); } - public async Task> SearchAsync(string sorting, string filter, int maxResultCount, CancellationToken cancellationToken = default) + public async Task> SearchAsync( + string sorting = null, + string filter = null, + int maxResultCount = int.MaxValue, + int skipCount = 0, + CancellationToken cancellationToken = default) { if (ExternalUserLookupServiceProvider != null) { - return await ExternalUserLookupServiceProvider.SearchAsync(sorting, filter, maxResultCount, cancellationToken); - } - - var localUsers = await _userRepository.SearchAsync(sorting, maxResultCount, 0, filter, cancellationToken); - return localUsers.Cast().ToList(); + return await ExternalUserLookupServiceProvider + .SearchAsync( + sorting, + filter, + maxResultCount, + skipCount, + cancellationToken + ); + } + + var localUsers = await _userRepository + .SearchAsync( + sorting, + maxResultCount, + skipCount, + filter, + cancellationToken + ); + + return localUsers + .Cast() + .ToList(); } protected abstract TUser CreateUser(IUserData externalUser); diff --git a/modules/users/src/Volo.Abp.Users.MongoDB/Volo/Abp/Users/MongoDB/MongoUserRepositoryBase.cs b/modules/users/src/Volo.Abp.Users.MongoDB/Volo/Abp/Users/MongoDB/MongoUserRepositoryBase.cs index 4a5eed6a8a..abb9a6c58e 100644 --- a/modules/users/src/Volo.Abp.Users.MongoDB/Volo/Abp/Users/MongoDB/MongoUserRepositoryBase.cs +++ b/modules/users/src/Volo.Abp.Users.MongoDB/Volo/Abp/Users/MongoDB/MongoUserRepositoryBase.cs @@ -33,7 +33,7 @@ namespace Volo.Abp.Users.MongoDB public async Task> SearchAsync( string sorting = null, - int maxResultCount = int.MaxValue, + int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, CancellationToken cancellationToken = default)