fixes and changes on narration moderation

This commit is contained in:
Hamid Reza Mohammadi 2020-11-12 14:28:57 +03:30
parent ac77196997
commit fe1fdaee77
3 changed files with 18 additions and 13 deletions

View File

@ -179,10 +179,7 @@ namespace RMuseum.Controllers
[ProducesResponseType((int)HttpStatusCode.Forbidden, Type = typeof(string))] [ProducesResponseType((int)HttpStatusCode.Forbidden, Type = typeof(string))]
public async Task<IActionResult> UpdatePoemNarration(int id, [FromBody] PoemNarrationViewModel metadata) public async Task<IActionResult> UpdatePoemNarration(int id, [FromBody] PoemNarrationViewModel metadata)
{ {
if (metadata.ReviewStatus == AudioReviewStatus.Approved || metadata.ReviewStatus == AudioReviewStatus.Rejected)
{
return StatusCode((int)HttpStatusCode.Forbidden);
}
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value); Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
@ -215,6 +212,14 @@ namespace RMuseum.Controllers
} }
if(narration.Result.ReviewStatus != metadata.ReviewStatus)
{
if (metadata.ReviewStatus == AudioReviewStatus.Approved || metadata.ReviewStatus == AudioReviewStatus.Rejected)
{
return StatusCode((int)HttpStatusCode.Forbidden);
}
}
var res = await _audioService.UpdatePoemNarration(id, metadata); var res = await _audioService.UpdatePoemNarration(id, metadata);
if (!string.IsNullOrEmpty(res.ExceptionString)) if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString); return BadRequest(res.ExceptionString);
@ -230,7 +235,7 @@ namespace RMuseum.Controllers
/// <returns></returns> /// <returns></returns>
[HttpPut("moderate/{id}")] [HttpPut("moderate/{id}")]
[Authorize(Policy = RMuseumSecurableItem.AudioNarrationEntityShortName + ":" + RMuseumSecurableItem.ModerateOperationShortName)] [Authorize(Policy = RMuseumSecurableItem.AudioNarrationEntityShortName + ":" + RMuseumSecurableItem.ModerateOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(bool))] [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PoemNarrationViewModel))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
[ProducesResponseType((int)HttpStatusCode.Forbidden, Type = typeof(string))] [ProducesResponseType((int)HttpStatusCode.Forbidden, Type = typeof(string))]
public async Task<IActionResult> ModeratePoemNarration(int id, [FromBody] PoemNarrationModerateViewModel model) public async Task<IActionResult> ModeratePoemNarration(int id, [FromBody] PoemNarrationModerateViewModel model)

View File

@ -88,7 +88,7 @@ namespace RMuseum.Services
/// <param name="moderatorId"></param> /// <param name="moderatorId"></param>
/// <param name="model"></param> /// <param name="model"></param>
/// <returns></returns> /// <returns></returns>
Task<RServiceResult<bool>> ModeratePoemNarration(int id, Guid moderatorId, PoemNarrationModerateViewModel model); Task<RServiceResult<PoemNarrationViewModel>> ModeratePoemNarration(int id, Guid moderatorId, PoemNarrationModerateViewModel model);
/// <summary> /// <summary>
/// Get Upload Session (including files) /// Get Upload Session (including files)

View File

@ -717,15 +717,15 @@ namespace RMuseum.Services.Implementation
/// <param name="moderatorId"></param> /// <param name="moderatorId"></param>
/// <param name="model"></param> /// <param name="model"></param>
/// <returns></returns> /// <returns></returns>
public async Task<RServiceResult<bool>> ModeratePoemNarration(int id, Guid moderatorId, PoemNarrationModerateViewModel model) public async Task<RServiceResult<PoemNarrationViewModel>> ModeratePoemNarration(int id, Guid moderatorId, PoemNarrationModerateViewModel model)
{ {
try try
{ {
PoemNarration narration = await _context.AudioFiles.Where(a => a.Id == id).SingleOrDefaultAsync(); PoemNarration narration = await _context.AudioFiles.Include(a => a.Owner).Where(a => a.Id == id).SingleOrDefaultAsync();
if (narration == null) if (narration == null)
return new RServiceResult<bool>(false, "404"); return new RServiceResult<PoemNarrationViewModel>(null, "404");
if (narration.ReviewStatus != AudioReviewStatus.Pending) if (narration.ReviewStatus != AudioReviewStatus.Draft || narration.ReviewStatus != AudioReviewStatus.Pending)
return new RServiceResult<bool>(false, "خوانش می‌بایست در وضعیت در انتظار بازبینی باشد."); return new RServiceResult<PoemNarrationViewModel>(null, "خوانش می‌بایست در وضعیت پیش‌نویس یا در انتظار بازبینی باشد.");
narration.ReviewDate = DateTime.Now; narration.ReviewDate = DateTime.Now;
narration.ReviewerId = moderatorId; narration.ReviewerId = moderatorId;
if(model.Result != PoemNarrationModerationResult.MetadataNeedsFixation) if(model.Result != PoemNarrationModerationResult.MetadataNeedsFixation)
@ -778,11 +778,11 @@ namespace RMuseum.Services.Implementation
return new RServiceResult<bool>(true); return new RServiceResult<PoemNarrationViewModel>(new PoemNarrationViewModel(narration, narration.Owner, await _context.GanjoorPoems.Where(p => p.Id == narration.GanjoorPostId).SingleOrDefaultAsync()));
} }
catch (Exception exp) catch (Exception exp)
{ {
return new RServiceResult<bool>(false, exp.ToString()); return new RServiceResult<PoemNarrationViewModel>(null, exp.ToString());
} }
} }