#264 GET api method for a user upvoted recitations
This commit is contained in:
parent
5da2219664
commit
c5bb6a1612
@ -948,6 +948,30 @@ namespace RMuseum.Controllers
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get user upvoted recitations
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("votes")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<PublicRecitationViewModel>))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public async Task<IActionResult> GetUserUpvotedRecitationsAsync([FromQuery] PagingParameterModel paging)
|
||||
{
|
||||
if (paging.PageSize == -1 || paging.PageSize > 1000)
|
||||
paging.PageSize = 1000;
|
||||
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
var res = await _audioService.GetUserUpvotedRecitationsAsync(paging, loggedOnUserId);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
|
||||
// Paging Header
|
||||
HttpContext.Response.Headers.Add("paging-headers", JsonConvert.SerializeObject(res.Result.PagingMeta));
|
||||
|
||||
return Ok(res.Result.Items);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// readonly mode
|
||||
/// </summary>
|
||||
|
||||
@ -1852,6 +1852,20 @@
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.RecitationController.SwitchRecitationUpVoteAsync(System.Int32)">
|
||||
<summary>
|
||||
revoke recitaion up vote
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.RecitationController.GetUserUpvotedRecitationsAsync(RSecurityBackend.Models.Generic.PagingParameterModel)">
|
||||
<summary>
|
||||
get user upvoted recitations
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="P:RMuseum.Controllers.RecitationController.ReadOnlyMode">
|
||||
<summary>
|
||||
readonly mode
|
||||
@ -12584,6 +12598,22 @@
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementationa.RecitationService.SwitchRecitationUpVoteAsync(System.Int32,System.Guid)">
|
||||
<summary>
|
||||
switches recitation upvote
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="userId"></param>
|
||||
<returns>upvote status</returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementationa.RecitationService.GetUserUpvotedRecitationsAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Guid)">
|
||||
<summary>
|
||||
get user upvoted recitations
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="P:RMuseum.Services.Implementationa.RecitationService.UploadEnabled">
|
||||
<summary>
|
||||
Upload Enabled (temporary switch off/on for upload)
|
||||
@ -12980,6 +13010,22 @@
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IRecitationService.SwitchRecitationUpVoteAsync(System.Int32,System.Guid)">
|
||||
<summary>
|
||||
switches recitation upvote
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="userId"></param>
|
||||
<returns>upvote status</returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IRecitationService.GetUserUpvotedRecitationsAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Guid)">
|
||||
<summary>
|
||||
get user upvoted recitations
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="P:RMuseum.Services.IRecitationService.UploadEnabled">
|
||||
<summary>
|
||||
Upload Enabled (temporary switch off/on for upload)
|
||||
|
||||
@ -262,6 +262,14 @@ namespace RMuseum.Services
|
||||
/// <returns>upvote status</returns>
|
||||
Task<RServiceResult<bool>> SwitchRecitationUpVoteAsync(int id, Guid userId);
|
||||
|
||||
/// <summary>
|
||||
/// get user upvoted recitations
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<(PaginationMetadata PagingMeta, PublicRecitationViewModel[] Items)>> GetUserUpvotedRecitationsAsync(PagingParameterModel paging, Guid userId);
|
||||
|
||||
/// <summary>
|
||||
/// Upload Enabled (temporary switch off/on for upload)
|
||||
/// </summary>
|
||||
|
||||
@ -2021,6 +2021,49 @@ namespace RMuseum.Services.Implementationa
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get user upvoted recitations
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<(PaginationMetadata PagingMeta, PublicRecitationViewModel[] Items)>> GetUserUpvotedRecitationsAsync(PagingParameterModel paging, Guid userId)
|
||||
{
|
||||
var source =
|
||||
from upvote in _context.RecitationUserUpVotes.AsNoTracking().Include(u => u.Recitation)
|
||||
join poem in _context.GanjoorPoems
|
||||
on upvote.Recitation.GanjoorPostId equals poem.Id
|
||||
where
|
||||
upvote.UserId == userId
|
||||
orderby upvote.DateTime descending
|
||||
select new PublicRecitationViewModel()
|
||||
{
|
||||
Id = upvote.Recitation.Id,
|
||||
PoemId = poem.Id,
|
||||
PoemFullTitle = poem.FullTitle,
|
||||
PoemFullUrl = poem.FullUrl,
|
||||
AudioTitle = upvote.Recitation.AudioTitle,
|
||||
AudioArtist = upvote.Recitation.AudioArtist,
|
||||
AudioArtistUrl = upvote.Recitation.AudioArtistUrl,
|
||||
AudioSrc = upvote.Recitation.AudioSrc,
|
||||
AudioSrcUrl = upvote.Recitation.AudioSrcUrl,
|
||||
LegacyAudioGuid = upvote.Recitation.LegacyAudioGuid,
|
||||
Mp3FileCheckSum = upvote.Recitation.Mp3FileCheckSum,
|
||||
Mp3SizeInBytes = upvote.Recitation.Mp3SizeInBytes,
|
||||
PublishDate = upvote.Recitation.ReviewDate,
|
||||
FileLastUpdated = upvote.Recitation.FileLastUpdated,
|
||||
Mp3Url = $"{WebServiceUrl.Url}/api/audio/file/{upvote.Recitation.Id}.mp3",
|
||||
XmlText = $"{WebServiceUrl.Url}/api/audio/xml/{upvote.Recitation.Id}",
|
||||
PlainText = poem.PlainText,
|
||||
HtmlText = poem.HtmlText
|
||||
};
|
||||
|
||||
(PaginationMetadata PagingMeta, PublicRecitationViewModel[] Items) paginatedResult =
|
||||
await QueryablePaginator<PublicRecitationViewModel>.Paginate(source, paging);
|
||||
|
||||
return new RServiceResult<(PaginationMetadata PagingMeta, PublicRecitationViewModel[] Items)>(paginatedResult);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Upload Enabled (temporary switch off/on for upload)
|
||||
/// </summary>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user