Example #1
0
        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();
        }
Example #2
0
        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);
            }
        }