Update ranking handling to store all entries and only return top for each user, update drone config to push to dockerhub
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -32,7 +32,7 @@ namespace TOOHUCardAPI.Data.Repositories
|
||||
|
||||
public async Task<RankEntry> GetRankEntry(long steamid, RankType rankType)
|
||||
{
|
||||
return await AllIncluded().Where(i => i.User.SteamId == steamid && i.RankType == rankType).FirstOrDefaultAsync();
|
||||
return await AllIncluded().Where(i => i.User.SteamId == steamid && i.RankType == rankType).OrderByDescending(i => i.Wave).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public async Task<RankEntry> InsertRankEntry(RankEntry entry)
|
||||
|
||||
@@ -57,9 +57,14 @@ namespace TOOHUCardAPI.Data.Services
|
||||
await _storeService.AwardPoints(steamid, bonus, $"reached rank index {index}");
|
||||
}
|
||||
|
||||
public async Task<List<RankEntryDTO>> GetRankEntries(RankType rankType)
|
||||
public async Task<List<RankEntryDTO>> GetRankEntries(RankType rankType, bool onlyTop = false)
|
||||
{
|
||||
var rankEntries = await _rankRepository.GetRankEntries(rankType);
|
||||
if (onlyTop)
|
||||
{
|
||||
rankEntries = rankEntries.GroupBy(i => i.User)
|
||||
.Select(i => i.OrderByDescending(e => e.Wave).FirstOrDefault());
|
||||
}
|
||||
_logger.LogInformation("Got rank entries for {RankType}", rankType.ToString());
|
||||
return rankEntries.Select(entry => entry.ToRankEntryDTO()).ToList();
|
||||
}
|
||||
@@ -81,27 +86,7 @@ namespace TOOHUCardAPI.Data.Services
|
||||
TowersUsed = towersUsed,
|
||||
UpdateTime = DateTime.Now
|
||||
};
|
||||
var previousEntry = await _rankRepository.GetRankEntry(toUpload.User.SteamId, toUpload.RankType);
|
||||
bool shouldPushNew = true;
|
||||
if (previousEntry != null)
|
||||
{
|
||||
if (previousEntry.Wave < toUpload.Wave)
|
||||
{
|
||||
await ResetRank(toUpload.User.SteamId, toUpload.RankType);
|
||||
}
|
||||
else if (previousEntry.Wave == toUpload.Wave && previousEntry.Damage < toUpload.Damage)
|
||||
{
|
||||
await ResetRank(toUpload.User.SteamId, toUpload.RankType);
|
||||
}
|
||||
else
|
||||
{
|
||||
shouldPushNew = false;
|
||||
}
|
||||
}
|
||||
if (shouldPushNew)
|
||||
{
|
||||
toUpload = await _rankRepository.InsertRankEntry(toUpload);
|
||||
}
|
||||
toUpload = await _rankRepository.InsertRankEntry(toUpload);
|
||||
List<RankEntry> allEntries = (await _rankRepository.GetRankEntries(toUpload.RankType)).ToList();
|
||||
await _userService.UpdateUserAccountDetails(entry.SteamId, entry.UserId, entry.Username);
|
||||
await _userService.UpdateUserMaxWave(entry.SteamId, entry.Wave, toUpload.RankType);
|
||||
|
||||
Reference in New Issue
Block a user