#420 GetUserQuotedSuggestionsAsync

This commit is contained in:
Hamid Reza Mohammadi 2024-01-18 19:34:58 +03:30
parent 14cd871870
commit e4e05c022a
4 changed files with 88 additions and 0 deletions

View File

@ -3863,6 +3863,32 @@ namespace RMuseum.Controllers
return Ok(res.Result);
}
/// <summary>
/// get list of user suggested corrections
/// </summary>
/// <param name="paging"></param>
/// <returns></returns>
[HttpGet]
[Route("quoted/suggest")]
[Authorize]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<GanjoorQuotedPoemViewModel>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> GetUserQuotedSuggestionsAsync([FromQuery] PagingParameterModel paging)
{
Guid userId =
new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
var res =
await _ganjoorService.GetUserQuotedSuggestionsAsync(userId, paging);
// Paging Header
HttpContext.Response.Headers.Append("paging-headers", JsonConvert.SerializeObject(res.Result.PagingMeta));
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok(res.Result.Items);
}
/// <summary>
/// next unmoderated quoted poem
/// </summary>

View File

@ -2099,6 +2099,13 @@
<param name="quoted"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.GanjoorController.GetUserQuotedSuggestionsAsync(RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
get list of user suggested corrections
</summary>
<param name="paging"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.GanjoorController.GetNextUnmoderatedGanjoorQuotedPoemAsync(System.Int32)">
<summary>
next unmoderated quoted poem
@ -15938,6 +15945,14 @@
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IGanjoorService.GetUserQuotedSuggestionsAsync(System.Guid,RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
get user or all quoted suggestions
</summary>
<param name="userId">if sent empty returns all suggestions</param>
<param name="paging"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IGanjoorService.GetNextUnmoderatedGanjoorQuotedPoemAsync(System.Int32)">
<summary>
next unmoderated quoted poem
@ -17951,6 +17966,14 @@
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetUserQuotedSuggestionsAsync(System.Guid,RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
get user or all quoted suggestions
</summary>
<param name="userId">if sent empty returns all suggestions</param>
<param name="paging"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetNextUnmoderatedGanjoorQuotedPoemAsync(System.Int32)">
<summary>
next unmoderated quoted poem

View File

@ -1308,6 +1308,14 @@ namespace RMuseum.Services
/// <returns></returns>
Task<RServiceResult<GanjoorQuotedPoemViewModel>> SuggestGanjoorQuotedPoemAsync(GanjoorQuotedPoemViewModel quoted, Guid userId);
/// <summary>
/// get user or all quoted suggestions
/// </summary>
/// <param name="userId">if sent empty returns all suggestions</param>
/// <param name="paging"></param>
/// <returns></returns>
Task<RServiceResult<(PaginationMetadata PagingMeta, GanjoorQuotedPoemViewModel[] Items)>> GetUserQuotedSuggestionsAsync(Guid userId, PagingParameterModel paging);
/// <summary>
/// next unmoderated quoted poem
/// </summary>

View File

@ -156,6 +156,37 @@ namespace RMuseum.Services.Implementation
}
}
/// <summary>
/// get user or all quoted suggestions
/// </summary>
/// <param name="userId">if sent empty returns all suggestions</param>
/// <param name="paging"></param>
/// <returns></returns>
public async Task<RServiceResult<(PaginationMetadata PagingMeta, GanjoorQuotedPoemViewModel[] Items)>> GetUserQuotedSuggestionsAsync(Guid userId, PagingParameterModel paging)
{
var source = from dbSuggestion in
_context.GanjoorQuotedPoems.AsNoTracking()
where userId == Guid.Empty || dbSuggestion.SuggestedById == userId
orderby dbSuggestion.Id descending
select
dbSuggestion;
(PaginationMetadata PagingMeta, GanjoorQuotedPoem[] Items) dbPaginatedResult =
await QueryablePaginator<GanjoorQuotedPoem>.Paginate(source, paging);
List<GanjoorQuotedPoemViewModel> list = new List<GanjoorQuotedPoemViewModel>();
foreach (var dbCorrection in dbPaginatedResult.Items)
{
list.Add
(
new GanjoorQuotedPoemViewModel(dbCorrection)
);
}
return new RServiceResult<(PaginationMetadata, GanjoorQuotedPoemViewModel[])>
((dbPaginatedResult.PagingMeta, list.ToArray()));
}
/// <summary>
/// next unmoderated quoted poem
/// </summary>