Пример #1
0
        public List <XuFuEncounter> GetMatches(PetBattleLink petBattleLink)
        {
            _ = petBattleLink ?? throw new ArgumentNullException(nameof(petBattleLink));

            var cmd = connection.CreateCommand();

            cmd.CommandText = "SELECT ID, Name, PetFamilyID, Section FROM XuFuEncounter_AGT WHERE Name = @Name and PetFamilyID = @PetFamilyID";
            cmd.Parameters.AddWithValue("@Name", petBattleLink.Name);
            cmd.Parameters.AddWithValue("@PetFamilyID", (int)petBattleLink.Family);

            List <XuFuEncounter> output = new List <XuFuEncounter>();

            using (var reader = cmd.ExecuteReader())
                while (reader.Read())
                {
                    output.Add(new XuFuEncounter()
                    {
                        ID      = reader.GetInt32(0),
                        Name    = reader.GetString(1),
                        Family  = (PetFamily)reader.GetInt32(2),
                        Section = reader.GetString(3)
                    });
                }

            return(output);
        }
Пример #2
0
        public void ImportFromText(string records)
        {
            if (string.IsNullOrEmpty(records))
            {
                MessageBox.Show("Nothing to add");
            }

            var matches = Regex.Matches(records, @"(?<ID>(?:A|)\d{1,})\t(?<AchievementID>\d{1,}|nil)\t(?<CriteriaNumber>\d{1,})\t(?<Name>.*?)\t(?<ParentID>(?:(?:A|)\d{1,}|nil))\t(?<PetFamily>(?:.*?|nil))""");

            foreach (Match match in matches)
            {
                PetBattleLink parent = null;
                if (!string.IsNullOrEmpty(match.Groups["ParentID"].Value) && match.Groups["ParentID"].Value != "nil")
                {
                    parent = dataManager.GetWithID(match.Groups["ParentID"].Value);
                    if (parent == null)
                    {
                        MessageBox.Show($"{match.Groups["ParentID"].Value} not found");
                        return;
                    }
                }
                Enum.TryParse(match.Groups["PetFamily"].Value, out PetFamily family);
                var         petBattleLink = new PetBattleLink(match.Groups["ID"].Value, int.Parse(match.Groups["CriteriaNumber"].Value), match.Groups["Name"].Value, parent, null, family);
                Achievement achievement   = null;
                if (match.Groups["AchievementID"].Value != "nil")
                {
                    achievement = achievementDataManager.GetWithID(int.Parse(match.Groups["AchievementID"].Value));
                }

                dataManager.Update(petBattleLink, achievement);
            }
        }
Пример #3
0
 public PetBattleLink(string iD, int criteriaNumber, string name, PetBattleLink parent, string externalLink, PetFamily family)
 {
     ID             = iD;
     CriteriaNumber = criteriaNumber;
     Name           = name;
     Parent         = parent;
     ExternalLink   = externalLink;
     Family         = family;
 }
        public PetBattleLink GetWithID(string ID)
        {
            var cmd = connection.CreateCommand();

            cmd.CommandText = "SELECT ID, CriteriaNum, Name, ParentID, ExternalLink, PetFamilyID FROM PetBattleLinks WHERE ID = @ID ORDER BY CriteriaNum";
            cmd.Parameters.AddWithValue("@ID", ID);

            PetBattleLink output = null;

            using (var reader = cmd.ExecuteReader())
                while (reader.Read())
                {
                    output = new PetBattleLink(reader.GetString(0), reader.GetInt32(1), reader.GetString(2), reader.IsDBNull(3) ? null : GetWithID(reader.GetString(3)), reader.IsDBNull(4) ? null : reader.GetString(4), reader.IsDBNull(5) ? PetFamily.Undefined : (PetFamily)reader.GetInt32(5));
                }

            return(output);
        }
Пример #5
0
        public void UpdateAGT(PetBattleLink petBattleLink, Achievement achievement)
        {
            _ = petBattleLink ?? throw new ArgumentNullException(nameof(petBattleLink));

            var cmd = connection.CreateCommand();

            cmd.CommandText = @"INSERT OR REPLACE INTO PetBattleLinks VALUES (@ID, @AchievementID, @CriteriaNum, @Name, @ParentID, @PetFamilyID,
		                            (SELECT ExternalLink FROM PetBattleLinks WHERE ID = @ID),
	                                CASE WHEN (SELECT COUNT(*) FROM PetBattleLinks WHERE ID = @ID) > 0 THEN
		                                (SELECT DateAdded FROM PetBattleLinks WHERE ID = @ID) ELSE DATETIME('now', 'localtime')
	                                END,
	                                CASE WHEN ((SELECT AchievementID FROM PetBattleLinks WHERE ID = @ID) = @AchievementID)
		                                        AND ((SELECT CriteriaNum FROM PetBattleLinks WHERE ID = @ID) = @CriteriaNum)
		                                        AND ((SELECT Name FROM PetBattleLinks WHERE ID = @ID) = @Name)
		                                        AND ((SELECT ParentID FROM PetBattleLinks WHERE ID = @ID) = @ParentID)
		                                        AND ((SELECT PetFamilyID FROM PetBattleLinks WHERE ID = @ID) = @PetFamilyID) THEN
		                                (SELECT DateChanged FROM PetBattleLinks WHERE ID = @ID) ELSE DATETIME('now', 'localtime')
	                                END,
	                                CASE WHEN (SELECT AchievementID FROM PetBattleLinks WHERE ID = @ID) != @AchievementID THEN
		                                (SELECT AchievementID FROM PetBattleLinks WHERE ID = @ID) ELSE (SELECT OldAchievementID FROM PetBattleLinks WHERE ID = @ID)
	                                END,
	                                CASE WHEN (SELECT CriteriaNum FROM PetBattleLinks WHERE ID = @ID) != @CriteriaNum THEN
		                                (SELECT CriteriaNum FROM PetBattleLinks WHERE ID = @ID) ELSE (SELECT OldCriteriaNum FROM PetBattleLinks WHERE ID = @ID)
	                                END,
	                                CASE WHEN (SELECT Name FROM PetBattleLinks WHERE ID = @ID) != @Name THEN
		                                (SELECT Name FROM PetBattleLinks WHERE ID = @ID) ELSE (SELECT OldName FROM PetBattleLinks WHERE ID = @ID)
	                                END,
	                                CASE WHEN (SELECT ParentID FROM PetBattleLinks WHERE ID = @ID) != @ParentID THEN
		                                (SELECT ParentID FROM PetBattleLinks WHERE ID = @ID) ELSE (SELECT OldParentID FROM PetBattleLinks WHERE ID = @ID)
	                                END,
	                                CASE WHEN (SELECT PetFamilyID FROM PetBattleLinks WHERE ID = @ID) != @PetFamilyID THEN
		                                (SELECT PetFamilyID FROM PetBattleLinks WHERE ID = @ID) ELSE (SELECT OldPetFamilyID FROM PetBattleLinks WHERE ID = @ID)
	                                END,
                                    (SELECT OldExternalLink FROM PetBattleLinks WHERE ID = @ID));";
            cmd.Parameters.AddWithValue("@ID", petBattleLink.ID);
            cmd.Parameters.AddWithValue("@AchievementID", achievement == null ? DBNull.Value : achievement.ID);
            cmd.Parameters.AddWithValue("@CriteriaNum", petBattleLink.CriteriaNumber);
            cmd.Parameters.AddWithValue("@Name", petBattleLink.Name);
            cmd.Parameters.AddWithValue("@ParentID", petBattleLink.Parent == null ? DBNull.Value : petBattleLink.Parent.ID);
            cmd.Parameters.AddWithValue("@PetFamilyID", (int)petBattleLink.Family);

            cmd.ExecuteNonQuery();
        }
Пример #6
0
        public void UpdateExternalLink(PetBattleLink petBattleLink)
        {
            _ = petBattleLink ?? throw new ArgumentNullException(nameof(petBattleLink));

            var cmd = connection.CreateCommand();

            cmd.CommandText = @"UPDATE PetBattleLinks
                                SET
                                    ExternalLink = @ExternalLink
                                    DateChanged = CASE WHEN (SELECT ExternalLink FROM PetBattleLinks WHERE ID = @ID) = @ExternalLink THEN
                                            (SELECT DateChanged FROM PetBattleLinks WHERE ID = @ID) ELSE DATETIME('now', 'localtime')
	                                    END,
	                                OldExternalLink = CASE WHEN (SELECT ExternalLink FROM PetBattleLinks WHERE ID = @ID) != @ExternalLink THEN
		                                    (SELECT ExternalLink FROM PetBattleLinks WHERE ID = @ID) ELSE (SELECT OldExternalLink FROM PetBattleLinks WHERE ID = @ID)
	                                    END,
                                WHERE
                                    ID = @ID;";
            cmd.Parameters.AddWithValue("@ID", petBattleLink.ID);
            cmd.Parameters.AddWithValue("@ExternalLink", string.IsNullOrEmpty(petBattleLink.ExternalLink) ? DBNull.Value : petBattleLink.ExternalLink);

            cmd.ExecuteNonQuery();
        }