improvements and consistencies to the top stats, most played and top players commands

This commit is contained in:
RaidMax 2021-06-29 15:35:56 -05:00
parent 42979dc5ae
commit 16cfb33109
2 changed files with 26 additions and 23 deletions

View File

@ -2,7 +2,6 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using SharedLibraryCore; using SharedLibraryCore;
using System.Collections.Generic; using System.Collections.Generic;
using Data.Abstractions; using Data.Abstractions;
@ -16,11 +15,12 @@ namespace IW4MAdmin.Plugins.Stats.Commands
{ {
class MostPlayedCommand : Command class MostPlayedCommand : Command
{ {
public static async Task<List<string>> GetMostPlayed(Server s, ITranslationLookup translationLookup, IDatabaseContextFactory contextFactory) public static async Task<List<string>> GetMostPlayed(Server s, ITranslationLookup translationLookup,
IDatabaseContextFactory contextFactory)
{ {
long serverId = StatManager.GetIdForServer(s); var serverId = StatManager.GetIdForServer(s);
List<string> mostPlayed = new List<string>() var mostPlayed = new List<string>()
{ {
$"^5--{translationLookup["PLUGINS_STATS_COMMANDS_MOSTPLAYED_TEXT"]}--" $"^5--{translationLookup["PLUGINS_STATS_COMMANDS_MOSTPLAYED_TEXT"]}--"
}; };
@ -29,25 +29,28 @@ namespace IW4MAdmin.Plugins.Stats.Commands
var thirtyDaysAgo = DateTime.UtcNow.AddMonths(-1); var thirtyDaysAgo = DateTime.UtcNow.AddMonths(-1);
var iqStats = (from stats in context.Set<EFClientStatistics>() var iqStats = (from stats in context.Set<EFClientStatistics>()
join client in context.Clients join client in context.Clients
on stats.ClientId equals client.ClientId on stats.ClientId equals client.ClientId
join alias in context.Aliases join alias in context.Aliases
on client.CurrentAliasId equals alias.AliasId on client.CurrentAliasId equals alias.AliasId
where stats.ServerId == serverId where stats.ServerId == serverId
where client.Level != EFClient.Permission.Banned where client.Level != EFClient.Permission.Banned
where client.LastConnection >= thirtyDaysAgo where client.LastConnection >= thirtyDaysAgo
orderby stats.TimePlayed descending orderby stats.TimePlayed descending
select new select new
{ {
alias.Name, alias.Name,
client.TotalConnectionTime, stats.TimePlayed,
stats.Kills stats.Kills
}) })
.Take(5); .Take(5);
var iqList = await iqStats.ToListAsync(); var iqList = await iqStats.ToListAsync();
mostPlayed.AddRange(iqList.Select(stats => translationLookup["COMMANDS_MOST_PLAYED_FORMAT"].FormatExt(stats.Name, stats.Kills, (DateTime.UtcNow - DateTime.UtcNow.AddSeconds(-stats.TotalConnectionTime)).HumanizeForCurrentCulture()))); mostPlayed.AddRange(iqList.Select((stats, index) =>
$"#{index + 1} " + translationLookup["COMMANDS_MOST_PLAYED_FORMAT"].FormatExt(stats.Name, stats.Kills,
(DateTime.UtcNow - DateTime.UtcNow.AddSeconds(-stats.TimePlayed))
.HumanizeForCurrentCulture())));
return mostPlayed; return mostPlayed;

View File

@ -25,7 +25,7 @@ namespace IW4MAdmin.Plugins.Stats.Commands
}; };
var stats = await Plugin.Manager.GetTopStats(0, 5, serverId); var stats = await Plugin.Manager.GetTopStats(0, 5, serverId);
var statsList = stats.Select(stats => $"^3{stats.Name}^7 - ^5{stats.KDR} ^7{translationLookup["PLUGINS_STATS_TEXT_KDR"]} | ^5{stats.Performance} ^7{translationLookup["PLUGINS_STATS_COMMANDS_PERFORMANCE"]}"); var statsList = stats.Select((stats, index) => $"#{index + 1} ^3{stats.Name}^7 - ^5{stats.KDR} ^7{translationLookup["PLUGINS_STATS_TEXT_KDR"]} | ^5{stats.Performance} ^7{translationLookup["PLUGINS_STATS_COMMANDS_PERFORMANCE"]}");
topStatsText.AddRange(statsList); topStatsText.AddRange(statsList);