From 4c430b4648f5dc74294ae3e21448ada58790fd91 Mon Sep 17 00:00:00 2001 From: Salih Date: Thu, 13 Jul 2023 15:35:08 +0300 Subject: [PATCH] Update MongoTagRepository.cs --- .../CmsKit/MongoDB/Tags/MongoTagRepository.cs | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs index 49bf7fad14..de1dde3181 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs @@ -3,6 +3,7 @@ using MongoDB.Driver; using MongoDB.Driver.Linq; using System; using System.Collections.Generic; +using System.Linq; using System.Threading; using System.Threading.Tasks; using Volo.Abp; @@ -84,8 +85,25 @@ public class MongoTagRepository : MongoDbRepository> GetPopularTagsAsync(string entityType, int maxCount, CancellationToken cancellationToken = default) { - //TODO: Implement this method - throw new NotImplementedException(); + var tags = await (await GetMongoQueryableAsync(cancellationToken)) + .Where(x => x.EntityType == entityType) + .Select(x => new { x.Id, x.Name }) + .ToListAsync(cancellationToken: GetCancellationToken(cancellationToken)); + + var tagIds = tags.Select(x => x.Id); + + var entityTagCounts = await (await GetMongoQueryableAsync(cancellationToken)) + .Where(q => tagIds.Contains(q.TagId)) + .GroupBy(q => q.TagId) + .Select(q => new { TagId = q.Key, Count = q.Count() }) + .OrderByDescending(q => q.Count) + .Take(maxCount) + .ToListAsync(cancellationToken: GetCancellationToken(cancellationToken)); + + return (from entityTagId in entityTagCounts + let tag = tags.FirstOrDefault(x => x.Id == entityTagId.TagId) + where tag != null + select new PopularTag(tag.Id, tag.Name, entityTagId.Count)).ToList(); }