diff --git a/RMuseum/Controllers/ContributionStatsController.cs b/RMuseum/Controllers/ContributionStatsController.cs index 8c2959c5..75fe0dc9 100644 --- a/RMuseum/Controllers/ContributionStatsController.cs +++ b/RMuseum/Controllers/ContributionStatsController.cs @@ -168,6 +168,82 @@ 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 + /// + /// + /// + /// + /// + [HttpGet("cat/corrections/by/user")] + [AllowAnonymous] + [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable))] + [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] + public async Task GetApprovedCatEditsGroupedByUserAsync([FromQuery] PagingParameterModel paging, DateTime? day, Guid? userId) + { + var cacheKey = $"cat/corrections/by/user/{(day ?? DateTime.Now).Date}/{paging.PageSize}/{paging.PageNumber}/{userId ?? Guid.Empty}"; + if (!_memoryCache.TryGetValue(cacheKey, out (PaginationMetadata PagingMeta, GroupedByUserViewModel[] Tracks) pagedResult)) + { + var res = await _service.GetApprovedCatEditsGroupedByUserAsync(paging, day, 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); + } + + /// + /// summed up stats of approved cat corrections + /// + /// + [HttpGet("cat/corrections")] + [AllowAnonymous] + [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(SummedUpViewModel))] + [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] + public async Task GetApprrovedCatEditsSummedUpStatsAsync() + { + if (!_memoryCache.TryGetValue($"cat/corrections/{DateTime.Now.Date}", out SummedUpViewModel result)) + { + var res = await _service.GetApprrovedCatEditsSummedUpStatsAsync(); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + result = res.Result; + } + return Ok(result); + } + + + /// /// service /// diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index 5a664181..e5662fa6 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -808,6 +808,29 @@ + + + approved cat edits daily + + + + + + + + approved cat edits grouped by user + + + + + + + + + summed up stats of approved cat corrections + + + service