Fix up AchievementController (#389)

* Stop blacklisted achievement profiles from counting up to total profile count

* Properly calculate percentage of profiles having achievements
This commit is contained in:
Jesse
2025-06-10 21:36:13 +02:00
committed by GitHub
parent e8b938faab
commit 83f629b407
@@ -37,19 +37,16 @@ public class AchievementController(
public virtual CompletedAchievementsResponse GetAchievementStatics(string sessionId)
{
var stats = new Dictionary<string, int>();
var profiles = profileHelper.GetProfiles();
var profiles = profileHelper.GetProfiles()
.Where(kvp => !coreConfig.Features.AchievementProfileIdBlacklist.Contains(kvp.Value.ProfileInfo.ProfileId))
.ToDictionary();
var achievements = databaseService.GetAchievements();
foreach (var achievementId in achievements.Select(achievement => achievement.Id).Where(achievementId => !string.IsNullOrEmpty(achievementId)))
{
var percentage = 0;
var profilesHaveAchievement = 0;
foreach (var (profileId, profile) in profiles)
{
if (coreConfig.Features.AchievementProfileIdBlacklist.Contains(profileId))
{
continue;
}
if (profile.CharacterData?.PmcData?.Achievements is null)
{
continue;
@@ -60,10 +57,15 @@ public class AchievementController(
continue;
}
percentage++;
profilesHaveAchievement++;
}
var percentage = 0;
if (profiles.Count > 0)
{
percentage = (int)Math.Round((double)profilesHaveAchievement / profiles.Count * 100);
}
percentage = percentage / profiles.Count * 100;
stats.Add(achievementId, percentage);
}