From b7a49214c5edc5d9b8f8e39cab3bf5c4e87f008d Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Fri, 28 Mar 2025 12:50:42 +0330 Subject: [PATCH] #478 pinterest links --- RMuseum/RMuseum.xml | 23 ++++ RMuseum/Services/IContributionStatsService.cs | 22 ++++ .../ContributionStatsService.cs | 114 ++++++++++++++++++ 3 files changed, 159 insertions(+) diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index ca0f2bcd..a6e421e3 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -19214,6 +19214,29 @@ + + + approved pinterest links daily + + + + + + + + approved pinterest links grouped by user + + + + + + + + + summed up stats of approved pinterest links + + + Database Context diff --git a/RMuseum/Services/IContributionStatsService.cs b/RMuseum/Services/IContributionStatsService.cs index bc1eae28..293d41c6 100644 --- a/RMuseum/Services/IContributionStatsService.cs +++ b/RMuseum/Services/IContributionStatsService.cs @@ -195,5 +195,27 @@ namespace RMuseum.Services /// Task> GetApprovedMuseumLinksSummedUpStatsAsync(); + /// + /// approved pinterest links daily + /// + /// + /// + /// + Task> GetApprovedPinterestLinksGroupedByDateAsync(PagingParameterModel paging, Guid? userId); + + /// + /// approved pinterest links grouped by user + /// + /// + /// + /// + /// + Task> GetApprovedPinterestLinksGroupedByUserAsync(PagingParameterModel paging, DateTime? day, Guid? userId); + + /// + /// summed up stats of approved pinterest links + /// + /// + Task> GetApprovedPinterestLinksSummedUpStatsAsync(); } } diff --git a/RMuseum/Services/Implementation/ContributionStatsService.cs b/RMuseum/Services/Implementation/ContributionStatsService.cs index b6ca2f06..e228fd52 100644 --- a/RMuseum/Services/Implementation/ContributionStatsService.cs +++ b/RMuseum/Services/Implementation/ContributionStatsService.cs @@ -920,6 +920,120 @@ namespace RMuseum.Services.Implementation } } + /// + /// approved pinterest links daily + /// + /// + /// + /// + public async Task> GetApprovedPinterestLinksGroupedByDateAsync(PagingParameterModel paging, Guid? userId) + { + try + { + return new RServiceResult<(PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks)>( + await QueryablePaginator.Paginate( + _context.PinterestLinks + .Where(c => + c.ReviewResult == Models.GanjoorIntegration.ReviewResult.Approved + && + (userId == null || c.SuggestedById == userId) + ) + .GroupBy(a => a.SuggestionDate.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 pinterest links grouped by user + /// + /// + /// + /// + /// + public async Task> GetApprovedPinterestLinksGroupedByUserAsync(PagingParameterModel paging, DateTime? day, Guid? userId) + { + try + { + return new RServiceResult<(PaginationMetadata PagingMeta, GroupedByUserViewModel[] Tracks)>( + await QueryablePaginator.Paginate( + _context.PinterestLinks + .Join + ( + _context.Users, + correction => correction.SuggestedById, + user => user.Id, + (correction, user) => new + { + correction.SuggestionDate, + UserId = user.Id, + UserName = user.NickName, + correction.ReviewResult, + } + ) + .Where(f => + f.ReviewResult == Models.GanjoorIntegration.ReviewResult.Approved + && + (day == null || f.SuggestionDate.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 pinterest links + /// + /// + public async Task> GetApprovedPinterestLinksSummedUpStatsAsync() + { + try + { + return new RServiceResult + ( + new SummedUpViewModel() + { + Days = await _context.PinterestLinks + .Where(f => f.ReviewResult == Models.GanjoorIntegration.ReviewResult.Approved + ) + .GroupBy(f => f.SuggestionDate.Date).CountAsync(), + TotalCount = await _context.PinterestLinks + + .Where(f => f.ReviewResult == Models.GanjoorIntegration.ReviewResult.Approved + ) + .CountAsync(), + UserIds = await _context.PinterestLinks + .Where(f => f.ReviewResult == Models.GanjoorIntegration.ReviewResult.Approved + ) + .GroupBy(f => f.SuggestedById).CountAsync(), + } + ); + + } + catch (Exception e) + { + return new RServiceResult(null, e.ToString()); + } + } + + /// /// Database Context