Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        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.");
        }