diff --git a/RMuseum/Controllers/ContributionStatsController.cs b/RMuseum/Controllers/ContributionStatsController.cs new file mode 100644 index 00000000..49273555 --- /dev/null +++ b/RMuseum/Controllers/ContributionStatsController.cs @@ -0,0 +1,78 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +using RMuseum.Models.Generic.ViewModels; +using RMuseum.Services; +using RSecurityBackend.Models.Generic; +using System; +using System.Collections.Generic; +using System.Net; +using System.Threading.Tasks; + +namespace RMuseum.Controllers +{ + [Produces("application/json")] + [Route("api/contributions")] + public class ContributionStatsController : Controller + { + /// + /// approved edits daily + /// + /// + /// + /// + [HttpGet("poem/corrections/daily")] + [AllowAnonymous] + [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable))] + [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] + public async Task GetApprovedEditsGroupedByDateAsync([FromQuery] PagingParameterModel paging, Guid? userId = null) + { + var pagedResult = await _service.GetApprovedEditsGroupedByDateAsync(paging, userId); + if (!string.IsNullOrEmpty(pagedResult.ExceptionString)) + return BadRequest(pagedResult.ExceptionString); + + // Paging Header + HttpContext.Response.Headers.Append("paging-headers", JsonConvert.SerializeObject(pagedResult.Result.PagingMeta)); + + return Ok(pagedResult.Result.Tracks); + } + + /// + /// approved edits grouped by user + /// + /// + /// + /// + /// + [HttpGet("poem/corrections/by/user")] + [AllowAnonymous] + [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable))] + [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] + public async Task GetApprovedEditsGroupedByUserAsync([FromQuery] PagingParameterModel paging,DateTime? day, Guid? userId) + { + var pagedResult = await _service.GetApprovedEditsGroupedByUserAsync(paging, day, userId); + if (!string.IsNullOrEmpty(pagedResult.ExceptionString)) + return BadRequest(pagedResult.ExceptionString); + + // Paging Header + HttpContext.Response.Headers.Append("paging-headers", JsonConvert.SerializeObject(pagedResult.Result.PagingMeta)); + + return Ok(pagedResult.Result.Tracks); + } + + /// + /// service + /// + protected readonly IContributionStatsService _service; + + /// + /// constructor + /// + /// + public ContributionStatsController(IContributionStatsService service) + { + _service = service; + } + } +} diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index 6e4a720c..1663a20d 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -762,6 +762,34 @@ + + + approved edits daily + + + + + + + + approved edits grouped by user + + + + + + + + + service + + + + + constructor + + + returns all donations