Browse Source

CmsKit: order by desc bugfix

pull/5216/head
EngincanV 6 years ago
parent
commit
3cc99ecd30
  1. 20
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs
  2. 15
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs

20
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs

@ -18,7 +18,8 @@ namespace Volo.CmsKit.Ratings
{ {
} }
public async Task<List<Rating>> GetListAsync(string entityType, string entityId, CancellationToken cancellationToken = default) public async Task<List<Rating>> GetListAsync(string entityType, string entityId,
CancellationToken cancellationToken = default)
{ {
Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); Check.NotNullOrWhiteSpace(entityType, nameof(entityType));
Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); Check.NotNullOrWhiteSpace(entityId, nameof(entityId));
@ -29,31 +30,36 @@ namespace Volo.CmsKit.Ratings
return ratings; return ratings;
} }
public async Task<Rating> GetCurrentUserRatingAsync(string entityType, string entityId, Guid userId, CancellationToken cancellationToken = default) public async Task<Rating> GetCurrentUserRatingAsync(string entityType, string entityId, Guid userId,
CancellationToken cancellationToken = default)
{ {
Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); Check.NotNullOrWhiteSpace(entityType, nameof(entityType));
Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); Check.NotNullOrWhiteSpace(entityId, nameof(entityId));
var rating = await DbSet.FirstOrDefaultAsync(r => r.EntityType == entityType && r.EntityId == entityId && r.CreatorId == userId, GetCancellationToken(cancellationToken)); var rating = await DbSet.FirstOrDefaultAsync(
r => r.EntityType == entityType && r.EntityId == entityId && r.CreatorId == userId,
GetCancellationToken(cancellationToken));
return rating; return rating;
} }
public async Task<List<RatingWithStarCountQueryResultItem>> GetGroupedStarCountsAsync(string entityType, string entityId, CancellationToken cancellationToken = default) public async Task<List<RatingWithStarCountQueryResultItem>> GetGroupedStarCountsAsync(string entityType,
string entityId, CancellationToken cancellationToken = default)
{ {
Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); Check.NotNullOrWhiteSpace(entityType, nameof(entityType));
Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); Check.NotNullOrWhiteSpace(entityId, nameof(entityId));
var query = from rating in DbSet var query = (
from rating in DbSet
where rating.EntityType == entityType && rating.EntityId == entityId where rating.EntityType == entityType && rating.EntityId == entityId
orderby rating.StarCount descending
group rating by rating.StarCount group rating by rating.StarCount
into g into g
select new RatingWithStarCountQueryResultItem select new RatingWithStarCountQueryResultItem
{ {
StarCount = g.Key, StarCount = g.Key,
Count = g.Count() Count = g.Count()
}; }
).OrderByDescending(r => r.StarCount);
var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken)); var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken));

15
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs

@ -14,11 +14,13 @@ namespace Volo.CmsKit.MongoDB.Ratings
{ {
public class MongoRatingRepository : MongoDbRepository<ICmsKitMongoDbContext, Rating, Guid>, IRatingRepository public class MongoRatingRepository : MongoDbRepository<ICmsKitMongoDbContext, Rating, Guid>, IRatingRepository
{ {
public MongoRatingRepository(IMongoDbContextProvider<ICmsKitMongoDbContext> dbContextProvider) : base(dbContextProvider) public MongoRatingRepository(IMongoDbContextProvider<ICmsKitMongoDbContext> dbContextProvider) : base(
dbContextProvider)
{ {
} }
public async Task<List<Rating>> GetListAsync(string entityType, string entityId, CancellationToken cancellationToken = default) public async Task<List<Rating>> GetListAsync(string entityType, string entityId,
CancellationToken cancellationToken = default)
{ {
Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); Check.NotNullOrWhiteSpace(entityType, nameof(entityType));
Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); Check.NotNullOrWhiteSpace(entityId, nameof(entityId));
@ -38,7 +40,7 @@ namespace Volo.CmsKit.MongoDB.Ratings
var rating = await GetMongoQueryable() var rating = await GetMongoQueryable()
.FirstOrDefaultAsync(r => r.EntityType == entityType && r.EntityId == entityId && r.CreatorId == userId, .FirstOrDefaultAsync(r => r.EntityType == entityType && r.EntityId == entityId && r.CreatorId == userId,
GetCancellationToken(cancellationToken)); GetCancellationToken(cancellationToken));
return rating; return rating;
} }
@ -48,16 +50,17 @@ namespace Volo.CmsKit.MongoDB.Ratings
Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); Check.NotNullOrWhiteSpace(entityType, nameof(entityType));
Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); Check.NotNullOrWhiteSpace(entityId, nameof(entityId));
var query = from rating in GetMongoQueryable() var query = (
from rating in GetMongoQueryable()
where rating.EntityType == entityType && rating.EntityId == entityId where rating.EntityType == entityType && rating.EntityId == entityId
orderby rating.StarCount descending
group rating by rating.StarCount group rating by rating.StarCount
into g into g
select new RatingWithStarCountQueryResultItem select new RatingWithStarCountQueryResultItem
{ {
StarCount = g.Key, StarCount = g.Key,
Count = g.Count() Count = g.Count()
}; }
).OrderByDescending(r => r.StarCount);
var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken)); var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken));

Loading…
Cancel
Save