#70 get next unreviewed song API method

This commit is contained in:
Hamid Reza Mohammadi 2021-01-29 18:12:40 +03:30
parent a7727f3d43
commit dc990cea09
4 changed files with 50 additions and 5 deletions

View File

@ -304,6 +304,37 @@ namespace RMuseum.Controllers
return Ok(res.Result); return Ok(res.Result);
} }
/// <summary>
/// get next unreviewed song
/// </summary>
/// <param name="skip"></param>
/// <param name="onlyMine"></param>
/// <returns></returns>
[HttpGet]
[Route("song")]
[Authorize]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PoemMusicTrackViewModel))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
[ProducesResponseType((int)HttpStatusCode.Forbidden)]
public async Task<IActionResult> GetNextUnreviewedSong(int skip = 0, bool onlyMine = false)
{
Guid userId =
new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
Guid sessionId =
new Guid(User.Claims.FirstOrDefault(c => c.Type == "SessionId").Value);
RServiceResult<bool> sessionCheckResult = await _appUserService.SessionExists(userId, sessionId);
if (!string.IsNullOrEmpty(sessionCheckResult.ExceptionString))
{
return StatusCode((int)HttpStatusCode.Forbidden);
}
var res =
await _ganjoorService.GetNextUnreviewedSong(skip, onlyMine ? userId : Guid.Empty);
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok(res.Result);
}
/// <summary> /// <summary>
/// get a random poem from hafez /// get a random poem from hafez
/// </summary> /// </summary>

View File

@ -723,6 +723,14 @@
<param name="song"></param> <param name="song"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:RMuseum.Controllers.GanjoorController.GetNextUnreviewedSong(System.Int32,System.Boolean)">
<summary>
get next unreviewed song
</summary>
<param name="skip"></param>
<param name="onlyMine"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.GanjoorController.Faal"> <member name="M:RMuseum.Controllers.GanjoorController.Faal">
<summary> <summary>
get a random poem from hafez get a random poem from hafez
@ -5660,11 +5668,12 @@
<param name="trackType"></param> <param name="trackType"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:RMuseum.Services.IGanjoorService.GetNextUnreviewedSong(System.Int32)"> <member name="M:RMuseum.Services.IGanjoorService.GetNextUnreviewedSong(System.Int32,System.Guid)">
<summary> <summary>
next unreviewed track next unreviewed track
</summary> </summary>
<param name="skip"></param> <param name="skip"></param>
<param name="suggestedById"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:RMuseum.Services.IGanjoorService.SuggestSong(System.Guid,RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)"> <member name="M:RMuseum.Services.IGanjoorService.SuggestSong(System.Guid,RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)">
@ -6508,11 +6517,12 @@
<param name="song"></param> <param name="song"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetNextUnreviewedSong(System.Int32)"> <member name="M:RMuseum.Services.Implementation.GanjoorService.GetNextUnreviewedSong(System.Int32,System.Guid)">
<summary> <summary>
next unreviewed track next unreviewed track
</summary> </summary>
<param name="skip"></param> <param name="skip"></param>
<param name="suggestedById"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.Faal"> <member name="M:RMuseum.Services.Implementation.GanjoorService.Faal">

View File

@ -119,8 +119,9 @@ namespace RMuseum.Services
/// next unreviewed track /// next unreviewed track
/// </summary> /// </summary>
/// <param name="skip"></param> /// <param name="skip"></param>
/// <param name="suggestedById"></param>
/// <returns></returns> /// <returns></returns>
Task<RServiceResult<PoemMusicTrackViewModel>> GetNextUnreviewedSong(int skip); Task<RServiceResult<PoemMusicTrackViewModel>> GetNextUnreviewedSong(int skip, Guid suggestedById);
/// <summary> /// <summary>
/// suggest song /// suggest song

View File

@ -841,12 +841,15 @@ namespace RMuseum.Services.Implementation
/// next unreviewed track /// next unreviewed track
/// </summary> /// </summary>
/// <param name="skip"></param> /// <param name="skip"></param>
/// <param name="suggestedById"></param>
/// <returns></returns> /// <returns></returns>
public async Task<RServiceResult<PoemMusicTrackViewModel>> GetNextUnreviewedSong(int skip) public async Task<RServiceResult<PoemMusicTrackViewModel>> GetNextUnreviewedSong(int skip, Guid suggestedById)
{ {
try try
{ {
var song = await _context.GanjoorPoemMusicTracks.Where(p => p.Approved == false && p.Rejected == false).OrderBy(p => p.Id).Skip(skip).FirstOrDefaultAsync(); var song = await _context.GanjoorPoemMusicTracks
.Where(p => p.Approved == false && p.Rejected == false && (suggestedById == Guid.Empty || p.SuggestedById == suggestedById))
.OrderBy(p => p.Id).Skip(skip).FirstOrDefaultAsync();
if(song != null) if(song != null)
{ {
return new RServiceResult<PoemMusicTrackViewModel> return new RServiceResult<PoemMusicTrackViewModel>