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); }
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); } }
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); }
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(); }
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(); }