#186 obtain next unreviewed poem correction for review (api)

This commit is contained in:
Hamid Reza Mohammadi 2021-07-30 18:09:37 +04:30
parent f363fd4f4e
commit 6d664ea63a
3 changed files with 66 additions and 2 deletions

View File

@ -854,6 +854,26 @@ namespace RMuseum.Controllers
return Ok(res.Result);//might be null
}
/// <summary>
/// get next unreviewed correction
/// </summary>
/// <param name="skip"></param>
/// <returns></returns>
[HttpGet]
[Route("poem/correction/next")]
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + SecurableItem.ModifyOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorPoemCorrectionViewModel))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
[ProducesResponseType((int)HttpStatusCode.NotFound)]
public async Task<IActionResult> GetNextUnreviewedCorrection(int skip = 0)
{
RServiceResult<GanjoorPoemCorrectionViewModel> res =
await _ganjoorService.GetNextUnreviewedCorrection(skip);
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok(res.Result);//might be null
}
/// <summary>
/// suggest song for poem
/// </summary>

View File

@ -160,6 +160,13 @@ namespace RMuseum.Services
/// <returns></returns>
Task<RServiceResult<bool>> DeletePoemCorrections(Guid userId, int poemId);
/// <summary>
/// get next unreviewed correction
/// </summary>
/// <param name="skip"></param>
/// <returns></returns>
Task<RServiceResult<GanjoorPoemCorrectionViewModel>> GetNextUnreviewedCorrection(int skip);
/// <summary>
/// next unreviewed track
/// </summary>

View File

@ -1376,7 +1376,7 @@ namespace RMuseum.Services.Implementation
/// <returns></returns>
public async Task<RServiceResult<GanjoorPoemCorrectionViewModel>> GetLastUnreviewedUserCorrectionForPoem(Guid userId, int poemId)
{
var dbCorrection = await _context.GanjoorPoemCorrections.AsNoTracking().Include(c => c.VerseOrderText)
var dbCorrection = await _context.GanjoorPoemCorrections.AsNoTracking().Include(c => c.VerseOrderText).Include(c => c.User)
.Where(c => c.UserId == userId && c.PoemId == poemId && c.Result == CorrectionReviewResult.NotReviewed)
.OrderByDescending(c => c.Id)
.FirstOrDefaultAsync();
@ -1398,7 +1398,44 @@ namespace RMuseum.Services.Implementation
Note = dbCorrection.Note,
Date = dbCorrection.Date,
Reviewed = dbCorrection.Reviewed,
Result = dbCorrection.Result
Result = dbCorrection.Result,
UserNickname = string.IsNullOrEmpty(dbCorrection.User.NickName) ? dbCorrection.User.Id.ToString() : dbCorrection.User.NickName
}
);
}
/// <summary>
/// get next unreviewed correction
/// </summary>
/// <param name="skip"></param>
/// <returns></returns>
public async Task<RServiceResult<GanjoorPoemCorrectionViewModel>> GetNextUnreviewedCorrection(int skip)
{
var dbCorrection = await _context.GanjoorPoemCorrections.AsNoTracking().Include(c => c.VerseOrderText)
.Where(c => c.Result == CorrectionReviewResult.NotReviewed)
.OrderBy(c => c.Id)
.Skip(skip)
.FirstOrDefaultAsync();
if (dbCorrection == null)
return new RServiceResult<GanjoorPoemCorrectionViewModel>(null);
return new RServiceResult<GanjoorPoemCorrectionViewModel>
(
new GanjoorPoemCorrectionViewModel()
{
PoemId = dbCorrection.PoemId,
UserId = dbCorrection.UserId,
VerseOrderText = dbCorrection.VerseOrderText == null ? null : dbCorrection.VerseOrderText.ToArray(),
Title = dbCorrection.Title,
OriginalTitle = dbCorrection.OriginalTitle,
Rhythm = dbCorrection.Rhythm,
OriginalRhythm = dbCorrection.OriginalRhythm,
Note = dbCorrection.Note,
Date = dbCorrection.Date,
Reviewed = dbCorrection.Reviewed,
Result = dbCorrection.Result,
UserNickname = string.IsNullOrEmpty(dbCorrection.User.NickName) ? dbCorrection.User.Id.ToString() : dbCorrection.User.NickName
}
);
}