diff --git a/RMuseum/Controllers/ContributionStatsController.cs b/RMuseum/Controllers/ContributionStatsController.cs index 1b8997e1..8c2959c5 100644 --- a/RMuseum/Controllers/ContributionStatsController.cs +++ b/RMuseum/Controllers/ContributionStatsController.cs @@ -159,7 +159,7 @@ namespace RMuseum.Controllers { if (!_memoryCache.TryGetValue($"section/corrections/{DateTime.Now.Date}", out SummedUpViewModel result)) { - var res = await _service.GetApprrovedSedtionEditsSummedUpStatsAsync(); + var res = await _service.GetApprrovedSectionEditsSummedUpStatsAsync(); if (!string.IsNullOrEmpty(res.ExceptionString)) return BadRequest(res.ExceptionString); result = res.Result; diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index d79b4f99..5a664181 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -15970,9 +15970,32 @@ - + - summed up stats of approved secton corrections + summed up stats of approved section corrections + + + + + + approved cat edits daily + + + + + + + + approved cat edits grouped by user + + + + + + + + + summed up stats of approved cat corrections @@ -18922,9 +18945,32 @@ - + - summed up stats of approved secton corrections + summed up stats of approved section corrections + + + + + + approved cat edits daily + + + + + + + + approved cat edits grouped by user + + + + + + + + + summed up stats of approved cat corrections diff --git a/RMuseum/Services/IContributionStatsService.cs b/RMuseum/Services/IContributionStatsService.cs index d59285e0..7c067721 100644 --- a/RMuseum/Services/IContributionStatsService.cs +++ b/RMuseum/Services/IContributionStatsService.cs @@ -51,11 +51,33 @@ namespace RMuseum.Services Task> GetApprovedSectionEditsGroupedByUserAsync(PagingParameterModel paging, DateTime? day, Guid? userId); /// - /// summed up stats of approved secton corrections + /// summed up stats of approved section corrections /// /// - Task> GetApprrovedSedtionEditsSummedUpStatsAsync(); + Task> GetApprrovedSectionEditsSummedUpStatsAsync(); + /// + /// approved cat edits daily + /// + /// + /// + /// + Task> GetApprovedCatEditsGroupedByDateAsync(PagingParameterModel paging, Guid? userId); + + /// + /// approved cat edits grouped by user + /// + /// + /// + /// + /// + Task> GetApprovedCatEditsGroupedByUserAsync(PagingParameterModel paging, DateTime? day, Guid? userId); + + /// + /// summed up stats of approved cat corrections + /// + /// + Task> GetApprrovedCatEditsSummedUpStatsAsync(); } } diff --git a/RMuseum/Services/Implementation/ContributionStatsService.cs b/RMuseum/Services/Implementation/ContributionStatsService.cs index 0b918638..b8644e1f 100644 --- a/RMuseum/Services/Implementation/ContributionStatsService.cs +++ b/RMuseum/Services/Implementation/ContributionStatsService.cs @@ -206,10 +206,10 @@ namespace RMuseum.Services.Implementation } /// - /// summed up stats of approved secton corrections + /// summed up stats of approved section corrections /// /// - public async Task> GetApprrovedSedtionEditsSummedUpStatsAsync() + public async Task> GetApprrovedSectionEditsSummedUpStatsAsync() { try { @@ -241,6 +241,121 @@ namespace RMuseum.Services.Implementation } + /// + /// approved cat edits daily + /// + /// + /// + /// + public async Task> GetApprovedCatEditsGroupedByDateAsync(PagingParameterModel paging, Guid? userId) + { + try + { + return new RServiceResult<(PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks)>( + await QueryablePaginator.Paginate( + _context.GanjoorCatCorrections + .Where(c => + c.Result == Models.Ganjoor.CorrectionReviewResult.Approved + && + (userId == null || c.UserId == userId) + ) + .GroupBy(a => a.Date.Date) + .Select(a => new GroupedByDateViewModel() + { + Date = a.Key.Date.ToString(), + Number = a.Count(), + }).OrderByDescending(s => s.Date) + , paging)); + } + catch (Exception e) + { + return new RServiceResult<(PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks)>((null, null), e.ToString()); + } + } + + /// + /// approved cat edits grouped by user + /// + /// + /// + /// + /// + public async Task> GetApprovedCatEditsGroupedByUserAsync(PagingParameterModel paging, DateTime? day, Guid? userId) + { + try + { + return new RServiceResult<(PaginationMetadata PagingMeta, GroupedByUserViewModel[] Tracks)>( + await QueryablePaginator.Paginate( + _context.GanjoorCatCorrections + .Join + ( + _context.Users, + correction => correction.UserId, + user => user.Id, + (correction, user) => new + { + correction.Date, + UserId = user.Id, + UserName = user.NickName, + correction.Result, + } + ) + .Where(f => + f.Result == Models.Ganjoor.CorrectionReviewResult.Approved + && + (day == null || f.Date.Date == day) && (userId == null || f.UserId == userId)) + .GroupBy(a => new { a.UserId, a.UserName }).Select(a => new GroupedByUserViewModel() + { + UserId = a.Key.UserId, + UserName = a.Key.UserName, + Number = a.Count(), + }).OrderByDescending(s => s.Number) + , paging)); + + } + catch (Exception e) + { + return new RServiceResult<(PaginationMetadata PagingMeta, GroupedByUserViewModel[] Tracks)>((null, null), e.ToString()); + } + } + + /// + /// summed up stats of approved cat corrections + /// + /// + public async Task> GetApprrovedCatEditsSummedUpStatsAsync() + { + try + { + return new RServiceResult + ( + new SummedUpViewModel() + { + Days = await _context.GanjoorCatCorrections + .Where(f => f.Result == Models.Ganjoor.CorrectionReviewResult.Approved + ) + .GroupBy(f => f.Date.Date).CountAsync(), + TotalCount = await _context.GanjoorCatCorrections + + .Where(f => f.Result == Models.Ganjoor.CorrectionReviewResult.Approved + ) + .CountAsync(), + UserIds = await _context.GanjoorCatCorrections + .Where(f => f.Result == Models.Ganjoor.CorrectionReviewResult.Approved + ) + .GroupBy(f => f.UserId).CountAsync(), + } + ); + + } + catch (Exception e) + { + return new RServiceResult(null, e.ToString()); + } + } + + + /// /// Database Context ///