@@ -25,11 +25,12 @@ public async Task<PaginatedResult<EmoteStats>> GetGuildEmoteStats(
2525 int perPage ,
2626 DateTime ? fromDate )
2727 {
28+ var emotesResult = new List < EmoteStats > ( ) ;
29+
2830 List < EmoteStats > emotes = await _dbContext . Emotes
2931 . AsQueryable ( )
30- . Where (
31- e => e . GuildId == guildId
32- && ( ! fromDate . HasValue || e . DateTime > fromDate . Value ) )
32+ . Where ( e => e . GuildId == guildId
33+ && ( ! fromDate . HasValue || e . DateTime > fromDate . Value ) )
3334 . GroupBy (
3435 e => new { e . EmoteId , e . EmoteAnimated } ,
3536 ( key , value ) => new EmoteStats
@@ -40,38 +41,32 @@ public async Task<PaginatedResult<EmoteStats>> GetGuildEmoteStats(
4041 } )
4142 . ToListAsync ( ) ;
4243
44+ emotesResult . AddRange ( emotes ) ;
45+
4346 IEnumerable < EmoteStats > placeholders = guildEmotes
4447 . Where ( a => ! emotes . Select ( e => e . EmoteId ) . Contains ( a . Id ) )
45- . Select (
46- e => new EmoteStats
47- {
48- EmoteId = e . Id ,
49- IsAnimated = e . Animated ,
50- Usage = 0 ,
51- } ) ;
48+ . Select ( e => new EmoteStats
49+ {
50+ EmoteId = e . Id ,
51+ IsAnimated = e . Animated ,
52+ Usage = 0 ,
53+ } ) ;
5254
53- emotes . AddRange ( placeholders ) ;
55+ emotesResult . AddRange ( placeholders ) ;
5456
55- if ( direction == SortDirection . ASC )
56- {
57- emotes = emotes . OrderBy ( u => u . Usage ) . ToList ( ) ;
58- }
59- else
60- {
61- emotes = emotes . OrderByDescending ( u => u . Usage ) . ToList ( ) ;
62- }
57+ emotesResult = direction == SortDirection . Asc
58+ ? emotesResult . OrderBy ( u => u . Usage ) . ToList ( )
59+ : emotesResult . OrderByDescending ( u => u . Usage ) . ToList ( ) ;
6360
64- int totalCount = emotes . Count ( ) ;
61+ var totalPages = ( int ) Math . Ceiling ( ( double ) emotesResult . Count / perPage ) ;
6562
66- var totalPages = ( int ) Math . Ceiling ( ( double ) totalCount / perPage ) ;
67-
68- int safePageOffset = Math . Max ( 0 , Math . Min ( pageOffset , totalPages - 1 ) ) ;
63+ int safePageOffset = Math . Max ( val1 : 0 , Math . Min ( pageOffset , totalPages - 1 ) ) ;
6964
7065 var items = new List < EmoteStats > ( ) ;
7166
7267 if ( totalPages > 0 )
7368 {
74- items = emotes
69+ items = emotesResult
7570 . Skip ( safePageOffset * perPage )
7671 . Take ( perPage )
7772 . ToList ( ) ;
@@ -82,7 +77,7 @@ public async Task<PaginatedResult<EmoteStats>> GetGuildEmoteStats(
8277 Items = items ,
8378 PageOffset = safePageOffset ,
8479 PageCount = totalPages ,
85- TotalCount = totalCount ,
80+ TotalCount = emotesResult . Count ,
8681 } ;
8782
8883 return result ;
@@ -97,10 +92,9 @@ public async Task<PaginatedResult<ExtendedStatsQueryResult>> GetBestEmotesForUse
9792 {
9893 IOrderedQueryable < EmoteStats > mainQuery = _dbContext . Emotes
9994 . AsQueryable ( )
100- . Where (
101- e => e . GuildId == guildId
102- && e . UserId == userId
103- && ( ! fromDate . HasValue || e . DateTime > fromDate . Value ) )
95+ . Where ( e => e . GuildId == guildId
96+ && e . UserId == userId
97+ && ( ! fromDate . HasValue || e . DateTime > fromDate . Value ) )
10498 . GroupBy (
10599 e => new { e . EmoteId , e . EmoteAnimated } ,
106100 ( key , value ) => new EmoteStats
@@ -117,26 +111,24 @@ public async Task<PaginatedResult<ExtendedStatsQueryResult>> GetBestEmotesForUse
117111
118112 var items = new List < ExtendedStatsQueryResult > ( ) ;
119113
120- int safePageOffset = Math . Max ( 0 , Math . Min ( pageOffset , totalPages - 1 ) ) ;
114+ int safePageOffset = Math . Max ( val1 : 0 , Math . Min ( pageOffset , totalPages - 1 ) ) ;
121115
122116 if ( totalPages > 0 )
123117 {
124118 items = await mainQuery
125119 . Skip ( safePageOffset * perPage )
126120 . Take ( perPage )
127- . Select (
128- e =>
129- new ExtendedStatsQueryResult
130- {
131- EmoteId = e . EmoteId ,
132- Usage = e . Usage ,
133- IsAnimated = e . IsAnimated ,
134- TotalUsage = _dbContext . Emotes
135- . Count (
136- inner => inner . GuildId == guildId
137- && inner . EmoteId == e . EmoteId
138- && ( ! fromDate . HasValue || inner . DateTime > fromDate . Value ) ) ,
139- } )
121+ . Select ( e =>
122+ new ExtendedStatsQueryResult
123+ {
124+ EmoteId = e . EmoteId ,
125+ Usage = e . Usage ,
126+ IsAnimated = e . IsAnimated ,
127+ TotalUsage = _dbContext . Emotes
128+ . Count ( inner => inner . GuildId == guildId
129+ && inner . EmoteId == e . EmoteId
130+ && ( ! fromDate . HasValue || inner . DateTime > fromDate . Value ) ) ,
131+ } )
140132 . ToListAsync ( ) ;
141133 }
142134
@@ -161,10 +153,9 @@ public async Task<EmoteUsageResult> GetSingleEmoteStats(
161153
162154 IQueryable < EmoteStats > query = _dbContext . Emotes
163155 . AsQueryable ( )
164- . Where (
165- e => e . GuildId == guildId
166- && e . EmoteId == emoteId
167- && ( ! fromDate . HasValue || e . DateTime > fromDate . Value ) )
156+ . Where ( e => e . GuildId == guildId
157+ && e . EmoteId == emoteId
158+ && ( ! fromDate . HasValue || e . DateTime > fromDate . Value ) )
168159 . GroupBy (
169160 e => new { e . EmoteId , e . EmoteAnimated } ,
170161 ( key , value ) => new EmoteStats
@@ -178,10 +169,9 @@ public async Task<EmoteUsageResult> GetSingleEmoteStats(
178169
179170 IQueryable < EmoteUser > usersQuery = _dbContext . Emotes
180171 . AsQueryable ( )
181- . Where (
182- e => e . GuildId == guildId
183- && e . EmoteId == emoteId
184- && ( ! fromDate . HasValue || e . DateTime > fromDate . Value ) )
172+ . Where ( e => e . GuildId == guildId
173+ && e . EmoteId == emoteId
174+ && ( ! fromDate . HasValue || e . DateTime > fromDate . Value ) )
185175 . GroupBy (
186176 e => new { e . UserId } ,
187177 ( key , value ) => new EmoteUser
@@ -206,6 +196,6 @@ public async Task<EmoteUsageResult> GetSingleEmoteStats(
206196
207197public enum SortDirection
208198{
209- ASC ,
210- DESC ,
199+ Asc ,
200+ Desc ,
211201}
0 commit comments