diff --git a/RMuseum/Controllers/ContributionStatsController.cs b/RMuseum/Controllers/ContributionStatsController.cs index 99bc462f..0f0a98c0 100644 --- a/RMuseum/Controllers/ContributionStatsController.cs +++ b/RMuseum/Controllers/ContributionStatsController.cs @@ -19,24 +19,73 @@ namespace RMuseum.Controllers public class ContributionStatsController : Controller { /// - /// approved edits daily + /// daily stats /// + /// + /// poem/corrections + /// section/corrections + /// cat/corrections + /// cat/corrections + /// suggestedsongs + /// quoteds + /// /// /// /// - [HttpGet("poem/corrections/daily")] + [HttpGet("{dataType}/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) + public async Task GetApprovedEditsGroupedByDateAsync(string dataType, [FromQuery] PagingParameterModel paging, Guid? userId = null) { - var cacheKey = $"poem/corrections/daily/{DateTime.Now.Date}/{paging.PageSize}/{paging.PageNumber}/{userId ?? Guid.Empty}"; + var cacheKey = $"{dataType}/daily/{DateTime.Now.Date}/{paging.PageSize}/{paging.PageNumber}/{userId ?? Guid.Empty}"; if (!_memoryCache.TryGetValue(cacheKey, out (PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks) pagedResult)) { - var res = await _service.GetApprovedEditsGroupedByDateAsync(paging, userId); - if (!string.IsNullOrEmpty(res.ExceptionString)) - return BadRequest(res.ExceptionString); - pagedResult = res.Result; + switch (dataType) + { + case "poem/corrections": + { + var res = await _service.GetApprovedEditsGroupedByDateAsync(paging, userId); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + pagedResult = res.Result; + } + break; + case "section/corrections": + { + var res = await _service.GetApprovedSectionEditsGroupedByDateAsync(paging, userId); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + pagedResult = res.Result; + } + break; + case "cat/corrections": + { + var res = await _service.GetApprovedCatEditsGroupedByDateAsync(paging, userId); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + pagedResult = res.Result; + } + break; + case "suggestedsongs": + { + var res = await _service.GetApprovedRelatedSongsGroupedByDateAsync(paging, userId); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + pagedResult = res.Result; + } + break; + case "quoteds": + { + var res = await _service.GetApprovedQuotedPoemsGroupedByDateAsync(paging, userId); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + pagedResult = res.Result; + } + break; + default: + return BadRequest("invalid datatype!"); + } } // Paging Header HttpContext.Response.Headers.Append("paging-headers", JsonConvert.SerializeObject(pagedResult.PagingMeta)); @@ -93,31 +142,6 @@ namespace RMuseum.Controllers } - /// - /// approved section edits daily - /// - /// - /// - /// - [HttpGet("section/corrections/daily")] - [AllowAnonymous] - [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable))] - [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] - public async Task GetApprovedSectionEditsGroupedByDateAsync([FromQuery] PagingParameterModel paging, Guid? userId = null) - { - var cacheKey = $"section/corrections/daily/{DateTime.Now.Date}/{paging.PageSize}/{paging.PageNumber}/{userId ?? Guid.Empty}"; - if (!_memoryCache.TryGetValue(cacheKey, out (PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks) pagedResult)) - { - var res = await _service.GetApprovedSectionEditsGroupedByDateAsync(paging, userId); - if (!string.IsNullOrEmpty(res.ExceptionString)) - return BadRequest(res.ExceptionString); - pagedResult = res.Result; - } - // Paging Header - HttpContext.Response.Headers.Append("paging-headers", JsonConvert.SerializeObject(pagedResult.PagingMeta)); - - return Ok(pagedResult.Tracks); - } /// /// approved section edits grouped by user @@ -168,31 +192,7 @@ namespace RMuseum.Controllers } - /// - /// approved cat edits daily - /// - /// - /// - /// - [HttpGet("cat/corrections/daily")] - [AllowAnonymous] - [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable))] - [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] - public async Task GetApprovedCatEditsGroupedByDateAsync([FromQuery] PagingParameterModel paging, Guid? userId = null) - { - var cacheKey = $"cat/corrections/daily/{DateTime.Now.Date}/{paging.PageSize}/{paging.PageNumber}/{userId ?? Guid.Empty}"; - if (!_memoryCache.TryGetValue(cacheKey, out (PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks) pagedResult)) - { - var res = await _service.GetApprovedCatEditsGroupedByDateAsync(paging, userId); - if (!string.IsNullOrEmpty(res.ExceptionString)) - return BadRequest(res.ExceptionString); - pagedResult = res.Result; - } - // Paging Header - HttpContext.Response.Headers.Append("paging-headers", JsonConvert.SerializeObject(pagedResult.PagingMeta)); - - return Ok(pagedResult.Tracks); - } + /// /// approved cat edits grouped by user @@ -242,31 +242,7 @@ namespace RMuseum.Controllers return Ok(result); } - /// - /// approved related songs daily - /// - /// - /// - /// - [HttpGet("suggestedsongs/daily")] - [AllowAnonymous] - [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable))] - [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] - public async Task GetApprovedRelatedSongsGroupedByDateAsync([FromQuery] PagingParameterModel paging, Guid? userId = null) - { - var cacheKey = $"suggestedsongs/daily/{DateTime.Now.Date}/{paging.PageSize}/{paging.PageNumber}/{userId ?? Guid.Empty}"; - if (!_memoryCache.TryGetValue(cacheKey, out (PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks) pagedResult)) - { - var res = await _service.GetApprovedRelatedSongsGroupedByDateAsync(paging, userId); - if (!string.IsNullOrEmpty(res.ExceptionString)) - return BadRequest(res.ExceptionString); - pagedResult = res.Result; - } - // Paging Header - HttpContext.Response.Headers.Append("paging-headers", JsonConvert.SerializeObject(pagedResult.PagingMeta)); - - return Ok(pagedResult.Tracks); - } + /// /// approved related songs grouped by user @@ -316,31 +292,7 @@ namespace RMuseum.Controllers return Ok(result); } - /// - /// approved quoted poems daily - /// - /// - /// - /// - [HttpGet("quoteds/daily")] - [AllowAnonymous] - [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable))] - [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] - public async Task GetApprovedQuotedPoemsGroupedByDateAsync([FromQuery] PagingParameterModel paging, Guid? userId = null) - { - var cacheKey = $"quoteds/daily/{DateTime.Now.Date}/{paging.PageSize}/{paging.PageNumber}/{userId ?? Guid.Empty}"; - if (!_memoryCache.TryGetValue(cacheKey, out (PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks) pagedResult)) - { - var res = await _service.GetApprovedQuotedPoemsGroupedByDateAsync(paging, userId); - if (!string.IsNullOrEmpty(res.ExceptionString)) - return BadRequest(res.ExceptionString); - pagedResult = res.Result; - } - // Paging Header - HttpContext.Response.Headers.Append("paging-headers", JsonConvert.SerializeObject(pagedResult.PagingMeta)); - - return Ok(pagedResult.Tracks); - } + /// /// approved quoted poems grouped by user diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index d1b15970..fb0f298d 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -762,10 +762,18 @@ - + - approved edits daily + daily stats + + poem/corrections + section/corrections + cat/corrections + cat/corrections + suggestedsongs + quoteds + @@ -785,14 +793,6 @@ - - - approved section edits daily - - - - - approved section edits grouped by user @@ -808,14 +808,6 @@ - - - approved cat edits daily - - - - - approved cat edits grouped by user @@ -831,14 +823,6 @@ - - - approved related songs daily - - - - - approved related songs grouped by user @@ -854,14 +838,6 @@ - - - approved quoted poems daily - - - - - approved quoted poems grouped by user