public void UpdateAGT(XuFuEncounter xuFuEncounter) { _ = xuFuEncounter.ID <= 0 ? throw new ArgumentException("Should be greater than 0", nameof(xuFuEncounter.ID)) : ""; _ = xuFuEncounter.Name ?? throw new ArgumentNullException(nameof(xuFuEncounter.Name)); _ = xuFuEncounter.Section ?? throw new ArgumentNullException(nameof(xuFuEncounter.Section)); var cmd = connection.CreateCommand(); cmd.CommandText = @"INSERT OR REPLACE INTO XuFuEncounter_AGT VALUES (@ID, @Name, @PetFamilyID, @Section, CASE WHEN (SELECT COUNT(*) FROM XuFuEncounter_AGT WHERE ID = @ID) > 0 THEN (SELECT DateAdded FROM XuFuEncounter_AGT WHERE ID = @ID) ELSE DATETIME('now', 'localtime') END, CASE WHEN ((SELECT Name FROM XuFuEncounter_AGT WHERE ID = @ID) = @Name) AND ((SELECT PetFamilyID FROM XuFuEncounter_AGT WHERE ID = @ID) = @PetFamilyID) AND ((SELECT Section FROM XuFuEncounter_AGT WHERE ID = @ID) = @Section) THEN (SELECT DateChanged FROM XuFuEncounter_AGT WHERE ID = @ID) ELSE DATETIME('now', 'localtime') END, CASE WHEN (SELECT Name FROM XuFuEncounter_AGT WHERE ID = @ID) != @Name THEN (SELECT Name FROM XuFuEncounter_AGT WHERE ID = @ID) ELSE (SELECT OldName FROM XuFuEncounter_AGT WHERE ID = @ID) END, CASE WHEN (SELECT PetFamilyID FROM XuFuEncounter_AGT WHERE ID = @ID) != @PetFamilyID THEN (SELECT PetFamilyID FROM XuFuEncounter_AGT WHERE ID = @ID) ELSE (SELECT OldPetFamilyID FROM XuFuEncounter_AGT WHERE ID = @ID) END, CASE WHEN (SELECT Section FROM XuFuEncounter_AGT WHERE ID = @ID) != @Section THEN (SELECT Section FROM XuFuEncounter_AGT WHERE ID = @ID) ELSE (SELECT OldSection FROM XuFuEncounter_AGT WHERE ID = @ID) END);" ; cmd.Parameters.AddWithValue("@ID", xuFuEncounter.ID); cmd.Parameters.AddWithValue("@Name", xuFuEncounter.Name); cmd.Parameters.AddWithValue("@PetFamilyID", (int)xuFuEncounter.Family); cmd.Parameters.AddWithValue("@Section", xuFuEncounter.Section); cmd.ExecuteNonQuery(); }
public void SyncExternalLinking(Achievement achievement) { var petBattleLinks = dataManager.GetWithAchievementID(achievement.ID); petBattleLinks.AddRange(dataManager.GetWithParentID($"A{achievement.ID}")); foreach (var petBattleLink in petBattleLinks) { var xuFuEncounters = xuFuEncounterDataManager.GetMatches(petBattleLink); if (xuFuEncounters.Count == 0) { MessageBox.Show($"No match found (count 0) for {petBattleLink.Name}"); continue; } XuFuEncounter xuFuEncounter = null; if (xuFuEncounters.Count > 1) { WebClient x = new WebClient(); string source = x.DownloadString($"https://www.wowhead.com/achievement={achievement.ID}"); string name = Regex.Match(source, @"\<title\b[^>]*\>\s*(?<Title>[\s\S]*?) - Achievement - World of Warcraft\</title\>", RegexOptions.IgnoreCase).Groups["Title"].Value; string description = Regex.Match(source, "<meta name=\"description\" content=\"(?<Description>.*?)\">", RegexOptions.IgnoreCase).Groups["Description"].Value; var msBx = new CustomMessageBox($"Please select one of the following options for the achievement criteria that best matches this achievement{Environment.NewLine}{Environment.NewLine}{name}{Environment.NewLine}{Environment.NewLine}{description}{Environment.NewLine}{Environment.NewLine}{string.Join(Environment.NewLine, xuFuEncounters)}", xuFuEncounters.Select(x => x.ID.ToString()).ToList()); msBx.ShowDialog(); xuFuEncounter = xuFuEncounters.Single(x => x.ID == Convert.ToInt32(msBx.Selection)); } else { xuFuEncounter = xuFuEncounters[0]; } if (xuFuEncounter == null) { MessageBox.Show($"No match found (null) for {petBattleLink.Name}"); continue; } petBattleLink.ExternalLink = $"https://www.wow-petguide.com/Encounter/{xuFuEncounter.ID}"; dataManager.UpdateExternalLink(petBattleLink); } }