#179 api implemented

This commit is contained in:
Hamid Reza Mohammadi 2021-07-15 11:14:00 +04:30
parent 996f5ba902
commit 034f64ad8e
4 changed files with 46 additions and 37 deletions

View File

@ -169,14 +169,15 @@ namespace RSecurityBackend.Controllers
/// <summary>
/// All Users Information (if user does not have user:view permission list only contains him/her information)
/// Paginated Users Information (if user does not have user:view permission list only contains him/her information)
/// </summary>
/// <param name="paging"></param>
/// <returns>All Users Information</returns>
[HttpGet]
[Authorize]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<PublicRAppUser>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> Get()
public async Task<IActionResult> Get([FromQuery] PagingParameterModel paging)
{
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
@ -192,12 +193,16 @@ namespace RSecurityBackend.Controllers
return BadRequest(canViewAllUsersInformation.ExceptionString);
if (canViewAllUsersInformation.Result)
{
RServiceResult<PublicRAppUser[]> usersInfo = await _appUserService.GetAllUsersInformation();
if (usersInfo.Result == null)
RServiceResult<(PaginationMetadata PagingMeta, PublicRAppUser[] Items)> usersInfo
= await _appUserService.GetAllUsersInformation(paging);
if (!string.IsNullOrEmpty(usersInfo.ExceptionString))
{
return BadRequest(usersInfo.ExceptionString);
}
return Ok(usersInfo.Result);
// Paging Header
HttpContext.Response.Headers.Add("paging-headers", JsonConvert.SerializeObject(usersInfo.Result.PagingMeta));
return Ok(usersInfo.Result.Items);
}
else
{
@ -208,6 +213,16 @@ namespace RSecurityBackend.Controllers
return NotFound();
return BadRequest(userInfo.ExceptionString);
}
HttpContext.Response.Headers.Add("paging-headers", JsonConvert.SerializeObject(new PaginationMetadata()
{
currentPage = 1,
hasNextPage = false,
hasPreviousPage = false,
pageSize = 1,
totalCount = 1,
totalPages = 1
}));
return Ok(new PublicRAppUser[] { userInfo.Result });
}
}

View File

@ -103,10 +103,11 @@
</summary>
<returns></returns>
</member>
<member name="M:RSecurityBackend.Controllers.AppUserControllerBase.Get">
<member name="M:RSecurityBackend.Controllers.AppUserControllerBase.Get(RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
All Users Information (if user does not have user:view permission list only contains him/her information)
Paginated Users Information (if user does not have user:view permission list only contains him/her information)
</summary>
<param name="paging"></param>
<returns>All Users Information</returns>
</member>
<member name="M:RSecurityBackend.Controllers.AppUserControllerBase.Get(System.Guid)">
@ -2176,7 +2177,7 @@
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RSecurityBackend.Services.IAppUserService.GetAllUsersInformation">
<member name="M:RSecurityBackend.Services.IAppUserService.GetAllUsersInformation(RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
all users informations
</summary>
@ -2570,7 +2571,7 @@
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RSecurityBackend.Services.Implementation.AppUserService.GetAllUsersInformation">
<member name="M:RSecurityBackend.Services.Implementation.AppUserService.GetAllUsersInformation(RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
all users informations
</summary>

View File

@ -119,7 +119,7 @@ namespace RSecurityBackend.Services
/// all users informations
/// </summary>
/// <returns></returns>
Task<RServiceResult<PublicRAppUser[]>> GetAllUsersInformation();
Task<RServiceResult<(PaginationMetadata PagingMeta, PublicRAppUser[] Items)>> GetAllUsersInformation(PagingParameterModel paging);
/// <summary>
/// all users having a certain permission

View File

@ -375,40 +375,33 @@ namespace RSecurityBackend.Services.Implementation
/// all users informations
/// </summary>
/// <returns></returns>
public virtual async Task<RServiceResult<PublicRAppUser[]>> GetAllUsersInformation()
public virtual async Task<RServiceResult<(PaginationMetadata PagingMeta, PublicRAppUser[] Items)>> GetAllUsersInformation(PagingParameterModel paging)
{
try
{
RAppUser[] appUsers = await _userManager.Users.ToArrayAsync();
List<PublicRAppUser> lstPublicUsersInfo = new List<PublicRAppUser>();
foreach(RAppUser appUser in appUsers)
var source = _userManager.Users.Select(appUser => new PublicRAppUser()
{
lstPublicUsersInfo.Add(
new PublicRAppUser()
{
Id = appUser.Id,
Username = appUser.UserName,
Email = appUser.Email,
FirstName = appUser.FirstName,
SureName = appUser.SureName,
PhoneNumber = appUser.PhoneNumber,
RImageId = appUser.RImageId,
Status = appUser.Status,
NickName = appUser.NickName,
Website = appUser.Website,
Bio = appUser.Bio,
EmailConfirmed = appUser.EmailConfirmed
});
}
return new RServiceResult<PublicRAppUser[]>(lstPublicUsersInfo.ToArray());
Id = appUser.Id,
Username = appUser.UserName,
Email = appUser.Email,
FirstName = appUser.FirstName,
SureName = appUser.SureName,
PhoneNumber = appUser.PhoneNumber,
RImageId = appUser.RImageId,
Status = appUser.Status,
NickName = appUser.NickName,
Website = appUser.Website,
Bio = appUser.Bio,
EmailConfirmed = appUser.EmailConfirmed
});
return new RServiceResult<(PaginationMetadata PagingMeta, PublicRAppUser[] Items)>(
await QueryablePaginator<PublicRAppUser>.Paginate(source, paging));
}
catch (Exception exp)
{
return new RServiceResult<PublicRAppUser[]>(null, exp.ToString());
return new RServiceResult<(PaginationMetadata PagingMeta, PublicRAppUser[] Items)>((PagingMeta: null, Items: null), exp.ToString());
}
}