public async Task AddAsync(RiftLeagueData data) { await DB.Users.EnsureExistsAsync(data.UserId); await using var context = new RiftContext(); await context.LeagueData.AddAsync(data); await context.SaveChangesAsync(); }
public async Task RemoveAsync(ulong userId) { var lolData = new RiftLeagueData { UserId = userId, }; await using var context = new RiftContext(); context.LeagueData.Remove(lolData); await context.SaveChangesAsync(); }
async Task UpdateRankRoleAsync(IGuildUser sgUser, RiftLeagueData leagueData) { (var rankResult, var rankData) = await GetLeaguePositionsByEncryptedSummonerIdAsync(leagueData.SummonerRegion, leagueData.SummonerId); if (rankResult != RequestResult.Success) { return; } var newRank = GetRankFromEntry(rankData.FirstOrDefault(x => x.QueueType == "RANKED_SOLO_5x5")); var currentRank = await GetCurrentRank(sgUser); if (currentRank == newRank) { RiftBot.Log.Information($"{sgUser.ToLogString()} Same rank, nothing to update."); return; } await RemoveRankedRole(sgUser, currentRank); var roleId = await GetRoleByLeagueRank(newRank); if (roleId is null || roleId.RoleId == 0ul) { return; } if (!IonicHelper.GetRole(Settings.App.MainGuildId, roleId.RoleId, out var role)) { return; } await messageService.SendMessageAsync("rank-updated", Settings.ChannelId.Chat, new FormatData(sgUser.Id) { RankData = new RankData { PreviousRank = GetStatStringFromRank(currentRank), CurrentRank = GetStatStringFromRank(newRank) } }); await sgUser.AddRoleAsync(role); }
public async Task UpdateAsync(ulong userId, string region, string playerUuid, string accountId, string summonerId, string summonerName) { var dbSummoner = await GetAsync(userId); var lolData = new RiftLeagueData { UserId = userId, SummonerRegion = region, PlayerUUID = playerUuid, SummonerId = summonerId, SummonerName = summonerName, }; await using var context = new RiftContext(); var entity = context.Attach(lolData); if (dbSummoner?.SummonerRegion != region) { entity.Property(x => x.SummonerRegion).IsModified = true; } if (dbSummoner?.PlayerUUID != playerUuid) { entity.Property(x => x.PlayerUUID).IsModified = true; } if (dbSummoner?.SummonerId != summonerId) { entity.Property(x => x.SummonerId).IsModified = true; } if (dbSummoner?.SummonerName != summonerName) { entity.Property(x => x.SummonerName).IsModified = true; } await context.SaveChangesAsync(); }
async Task CheckApproveAsync() { var pendingUsers = await DB.PendingUsers.GetAllAsync(); if (pendingUsers is null || !pendingUsers.Any()) { return; } RiftBot.Log.Debug($"Checking {pendingUsers.Count.ToString()} pending users..."); foreach (var user in pendingUsers) { var expired = DateTime.UtcNow > user.ExpirationTime; if (expired) { await DB.PendingUsers.RemoveAsync(user); await messageService.SendMessageAsync("register-pending-expired", Settings.ChannelId.Commands, new FormatData(user.UserId)); } } var usersValidated = 0; foreach (var user in pendingUsers) { RequestResult codeResult; string code; try { (codeResult, code) = await GetThirdPartyCodeByEncryptedSummonerIdAsync(user.Region, user.SummonedId); } catch (Exception) { continue; } if (code is null || codeResult != RequestResult.Success) { continue; } var sanitizedCode = new string(code.Where(char.IsLetterOrDigit).ToArray()); if (sanitizedCode != user.ConfirmationCode) { continue; } (var requestResult, var summoner) = await GetSummonerByEncryptedUuidAsync(user.Region, user.PlayerUUID); if (requestResult != RequestResult.Success) { await DB.PendingUsers.RemoveAsync(user); continue; } OnLolDataCreated?.Invoke(null, new LolDataCreatedEventArgs(user.UserId)); var lolData = new RiftLeagueData { UserId = user.UserId, SummonerRegion = user.Region, PlayerUUID = user.PlayerUUID, AccountId = user.AccountId, SummonerId = user.SummonedId, SummonerName = summoner.Name }; await DB.LeagueData.AddAsync(lolData); usersValidated++; await PostValidateAsync(user); } RiftBot.Log.Information($"{usersValidated.ToString()} users validated."); }