#255 API method for getting list of reported errors for recitations

This commit is contained in:
Hamid Reza Mohammadi 2021-12-09 21:22:46 +03:30
parent d2fbfdf95c
commit 0bc721dec2
5 changed files with 101 additions and 1 deletions

View File

@ -819,6 +819,29 @@ namespace RMuseum.Controllers
return Ok(res.Result);
}
/// <summary>
/// get errors reported for recitations
/// </summary>
/// <param name="paging"></param>
/// <returns></returns>
[HttpGet("errors/report")]
[Authorize(Policy = RMuseumSecurableItem.AudioRecitationEntityShortName + ":" + RMuseumSecurableItem.PublishOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<RecitationErrorReportViewModel>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> GetReportedErrorsAsync([FromQuery] PagingParameterModel paging)
{
var reports = await _audioService.GetReportedErrorsAsync(paging);
if (!string.IsNullOrEmpty(reports.ExceptionString))
{
return BadRequest(reports.ExceptionString);
}
// Paging Header
HttpContext.Response.Headers.Add("paging-headers", JsonConvert.SerializeObject(reports.Result.PagingMeta));
return Ok(reports.Result.Items);
}
/// <summary>
/// constructor

View File

@ -1,4 +1,6 @@
namespace RMuseum.Models.GanjoorAudio.ViewModels
using System;
namespace RMuseum.Models.GanjoorAudio.ViewModels
{
/// <summary>
/// Post Error Report for recitations
@ -18,5 +20,15 @@
/// Reason Text
/// </summary>
public string ReasonText { get; set; }
/// <summary>
/// recitation
/// </summary>
public RecitationViewModel Recitation { get; set; }
/// <summary>
/// DateTime
/// </summary>
public DateTime DateTime { get; set; }
}
}

View File

@ -1806,6 +1806,13 @@
<param name="report"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.RecitationController.GetReportedErrorsAsync(RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
get errors reported for recitations
</summary>
<param name="paging"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.RecitationController.#ctor(RMuseum.Services.IRecitationService,RSecurityBackend.Services.IUserPermissionChecker,RSecurityBackend.Services.IAppUserService)">
<summary>
constructor
@ -3904,6 +3911,16 @@
Reason Text
</summary>
</member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.RecitationErrorReportViewModel.Recitation">
<summary>
recitation
</summary>
</member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.RecitationErrorReportViewModel.DateTime">
<summary>
DateTime
</summary>
</member>
<member name="T:RMuseum.Models.GanjoorAudio.ViewModels.RecitationModerateViewModel">
<summary>
Poem Narration Moderation View Model
@ -12391,6 +12408,13 @@
<param name="report"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementationa.RecitationService.GetReportedErrorsAsync(RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
get errors reported for recitations
</summary>
<param name="paging"></param>
<returns></returns>
</member>
<member name="P:RMuseum.Services.Implementationa.RecitationService.UploadEnabled">
<summary>
Upload Enabled (temporary switch off/on for upload)
@ -12742,6 +12766,13 @@
<param name="report"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IRecitationService.GetReportedErrorsAsync(RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
get errors reported for recitations
</summary>
<param name="paging"></param>
<returns></returns>
</member>
<member name="P:RMuseum.Services.IRecitationService.UploadEnabled">
<summary>
Upload Enabled (temporary switch off/on for upload)

View File

@ -209,6 +209,13 @@ namespace RMuseum.Services
/// <returns></returns>
Task<RServiceResult<RecitationErrorReportViewModel>> ReportErrorAsync(Guid userId, RecitationErrorReportViewModel report);
/// <summary>
/// get errors reported for recitations
/// </summary>
/// <param name="paging"></param>
/// <returns></returns>
Task<RServiceResult<(PaginationMetadata PagingMeta, RecitationErrorReportViewModel[] Items)>> GetReportedErrorsAsync(PagingParameterModel paging);
/// <summary>
/// Upload Enabled (temporary switch off/on for upload)
/// </summary>

View File

@ -1741,6 +1741,7 @@ namespace RMuseum.Services.Implementationa
await _context.SaveChangesAsync();
report.Id = dbModel.Id;
report.DateTime = dbModel.DateTime;
return new RServiceResult<RecitationErrorReportViewModel>(report);
}
@ -1750,6 +1751,32 @@ namespace RMuseum.Services.Implementationa
}
}
/// <summary>
/// get errors reported for recitations
/// </summary>
/// <param name="paging"></param>
/// <returns></returns>
public async Task<RServiceResult<(PaginationMetadata PagingMeta, RecitationErrorReportViewModel[] Items)>> GetReportedErrorsAsync(PagingParameterModel paging)
{
var source =
from report in _context.RecitationErrorReports.Include(r => r.Recitation).Include(r => r.Reporter)
join poem in _context.GanjoorPoems
on report.Recitation.GanjoorPostId equals poem.Id
select
new RecitationErrorReportViewModel()
{
Id = report.Id,
ReasonText = report.ReasonText,
RecitationId = report.RecitationId,
Recitation = new RecitationViewModel(report.Recitation, report.Recitation.Owner, poem),
DateTime = report.DateTime
};
(PaginationMetadata PagingMeta, RecitationErrorReportViewModel[] Items) paginatedResult =
await QueryablePaginator<RecitationErrorReportViewModel>.Paginate(source, paging);
return new RServiceResult<(PaginationMetadata PagingMeta, RecitationErrorReportViewModel[] Items)>(paginatedResult);
}
/// <summary>
/// Upload Enabled (temporary switch off/on for upload)
/// </summary>