From 5918115c2350c4acaaba369190e5fc0e1ed42c77 Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Thu, 27 Mar 2025 15:27:18 +0330 Subject: [PATCH] #478 refactoring --- .../ContributionStatsController.cs | 170 ++++++------------ RMuseum/RMuseum.xml | 39 +--- 2 files changed, 54 insertions(+), 155 deletions(-) diff --git a/RMuseum/Controllers/ContributionStatsController.cs b/RMuseum/Controllers/ContributionStatsController.cs index 0f0a98c0..ab406eb4 100644 --- a/RMuseum/Controllers/ContributionStatsController.cs +++ b/RMuseum/Controllers/ContributionStatsController.cs @@ -84,7 +84,7 @@ namespace RMuseum.Controllers } break; default: - return BadRequest("invalid datatype!"); + return BadRequest("invalid value for the paramater: dataType"); } } // Paging Header @@ -96,23 +96,65 @@ namespace RMuseum.Controllers /// /// approved edits grouped by user /// + /// /// /// /// /// - [HttpGet("poem/corrections/by/user")] + [HttpGet("{dataType}/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) + public async Task GetApprovedEditsGroupedByUserAsync(string dataType, [FromQuery] PagingParameterModel paging, DateTime? day, Guid? userId) { - var cacheKey = $"poem/corrections/by/user/{(day ?? DateTime.Now).Date}/{paging.PageSize}/{paging.PageNumber}/{userId ?? Guid.Empty}"; + var cacheKey = $"{dataType}/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.GetApprovedEditsGroupedByUserAsync(paging, day, userId); - if (!string.IsNullOrEmpty(res.ExceptionString)) - return BadRequest(res.ExceptionString); - pagedResult = res.Result; + switch(dataType) + { + case "poem/corrections": + { + var res = await _service.GetApprovedEditsGroupedByUserAsync(paging, day, userId); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + pagedResult = res.Result; + } + break; + case "section/corrections": + { + var res = await _service.GetApprovedSectionEditsGroupedByUserAsync(paging, day, userId); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + pagedResult = res.Result; + } + break; + case "cat/corrections": + { + var res = await _service.GetApprovedCatEditsGroupedByUserAsync(paging, day, userId); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + pagedResult = res.Result; + } + break; + case "suggestedsongs": + { + var res = await _service.GetApprovedRelatedSongsGroupedByUserAsync(paging, day, userId); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + pagedResult = res.Result; + } + break; + case "quoteds": + { + var res = await _service.GetApprovedQuotedPoemsGroupedByUserAsync(paging, day, userId); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + pagedResult = res.Result; + } + break; + default: + return BadRequest("invalid value for the paramater: dataType"); + } } // Paging Header @@ -143,33 +185,6 @@ namespace RMuseum.Controllers - /// - /// approved section edits grouped by user - /// - /// - /// - /// - /// - [HttpGet("section/corrections/by/user")] - [AllowAnonymous] - [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable))] - [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] - public async Task GetApprovedSectionEditsGroupedByUserAsync([FromQuery] PagingParameterModel paging, DateTime? day, Guid? userId) - { - var cacheKey = $"section/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.GetApprovedSectionEditsGroupedByUserAsync(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 section corrections @@ -194,33 +209,7 @@ namespace RMuseum.Controllers - /// - /// 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 @@ -242,35 +231,6 @@ namespace RMuseum.Controllers return Ok(result); } - - - /// - /// approved related songs grouped by user - /// - /// - /// - /// - /// - [HttpGet("suggestedsongs/by/user")] - [AllowAnonymous] - [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable))] - [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] - public async Task GetApprovedRelatedSongsGroupedByUserAsync([FromQuery] PagingParameterModel paging, DateTime? day, Guid? userId) - { - var cacheKey = $"suggestedsongs/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.GetApprovedRelatedSongsGroupedByUserAsync(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 related songs @@ -294,33 +254,7 @@ namespace RMuseum.Controllers - /// - /// approved quoted poems grouped by user - /// - /// - /// - /// - /// - [HttpGet("quoteds/by/user")] - [AllowAnonymous] - [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable))] - [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] - public async Task GetApprovedQuotedPoemsGroupedByUserAsync([FromQuery] PagingParameterModel paging, DateTime? day, Guid? userId) - { - var cacheKey = $"quoteds/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.GetApprovedQuotedPoemsGroupedByUserAsync(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 quoted poems diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index fb0f298d..25149e16 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -778,10 +778,11 @@ - + approved edits grouped by user + @@ -793,60 +794,24 @@ - - - approved section edits grouped by user - - - - - - summed up stats of approved section corrections - - - approved cat edits grouped by user - - - - - - summed up stats of approved cat corrections - - - approved related songs grouped by user - - - - - - summed up stats of approved related songs - - - approved quoted poems grouped by user - - - - - - summed up stats of quoted poems