From ae70fba0759e0f7e417d1c46d8017e31bdb8f1bd Mon Sep 17 00:00:00 2001 From: Sean Stoves Date: Thu, 6 Aug 2020 23:28:34 -0400 Subject: [PATCH] Updating RankCheck to utilize either Web API discord Linking or Discord App Linking --- ChaosBot/Discord/Modules/Admin/RankCheck.cs | 51 ++++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/ChaosBot/Discord/Modules/Admin/RankCheck.cs b/ChaosBot/Discord/Modules/Admin/RankCheck.cs index dd69bb8..9b7c3b2 100644 --- a/ChaosBot/Discord/Modules/Admin/RankCheck.cs +++ b/ChaosBot/Discord/Modules/Admin/RankCheck.cs @@ -11,6 +11,7 @@ using System.Text; using Antlr4.Runtime.Misc; using ChaosBot.Discord.PreConditions; using ChaosBot.Lodestone; +using ChaosBot.Models; using Microsoft.AspNetCore.Http; using Newtonsoft.Json; using NLog; @@ -46,7 +47,30 @@ namespace ChaosBot.Discord.Modules.Admin foreach (var lsID in ranks.FindAll(x => x.IngameRole == ERole.Recruit)) { if ((lsID.ShouldBeRole != lsID.IngameRole) && (lsID.ShouldBeRole != null)) - sb.AppendLine(string.Format("{0} {1}", lsID.DisplayName, (lsID.DiscordId != null ? $"linked to <@{lsID.DiscordId}>)" : ""))); + { + if(lsID.DiscordId != null) + sb.AppendLine(string.Format("{0}{1}", lsID.DisplayName, (lsID.DiscordId != null ? $", linked to <@{lsID.DiscordId}>)" : ""))); + else + { + ulong lodeId = Convert.ToUInt64(lsID.LodestoneId); + using (ChaosbotContext dbContext = new ChaosbotContext()) + { + IQueryable ctxlsChars = dbContext.LodestoneCharacter; + List lsChar = ctxlsChars + .Where(x => x.DiscordGuildId.Equals(Context.Guild.Id)) + .Where(x => x.LodestoneId.Equals(lodeId)).ToList(); + + if (lsChar.Any()) + { + sb.AppendLine(string.Format("{0}{1}", lsID.DisplayName, $", linked to <@{lsChar.First().DiscordUserId.ToString()}>")); + } + else + { + sb.AppendLine(string.Format("{0}", lsID.DisplayName)); + } + } + } + } } } else @@ -59,7 +83,30 @@ namespace ChaosBot.Discord.Modules.Admin foreach (var lsID in ranks.FindAll(x => x.IngameRole == ERole.Initiate)) { if ((lsID.ShouldBeRole != lsID.IngameRole) && (lsID.ShouldBeRole != null)) - sb.AppendLine(string.Format("{0} {1}", lsID.DisplayName, (lsID.DiscordId != null ? $"linked to <@{lsID.DiscordId}>)" : ""))); + { + if(lsID.DiscordId != null) + sb.AppendLine(string.Format("{0}{1}", lsID.DisplayName, (lsID.DiscordId != null ? $", linked to <@{lsID.DiscordId}>)" : ""))); + else + { + ulong lodeId = Convert.ToUInt64(lsID.LodestoneId); + using (ChaosbotContext dbContext = new ChaosbotContext()) + { + IQueryable ctxlsChars = dbContext.LodestoneCharacter; + List lsChar = ctxlsChars + .Where(x => x.DiscordGuildId.Equals(Context.Guild.Id)) + .Where(x => x.LodestoneId.Equals(lodeId)).ToList(); + + if (lsChar.Any()) + { + sb.AppendLine(string.Format("{0}{1}", lsID.DisplayName, $", linked to <@{lsChar.First().DiscordUserId.ToString()}>")); + } + else + { + sb.AppendLine(string.Format("{0}", lsID.DisplayName)); + } + } + } + } } } else