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