/// <summary> /// Retrieves all user characters from the database /// </summary> /// <param name="userId">User whose characters must be retrieved</param> /// <returns>Collection of characters</returns> public List <Character> GetUserCharacters(int userId) { List <Character> characters = new List <Character>(); List <int> characterIds = new List <int>(); CharacterDAO cDAO = new CharacterDAO(); using (conn = ConnectionFactory.GetConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand($"" + $"select charId from userCharacter where userId = @uId"); cmd.Parameters.AddWithValue("@uId", userId); cmd.Connection = conn; SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { characterIds.Add(Convert.ToInt32(reader["charId"])); } reader.Close(); } foreach (int id in characterIds) { characters.Add(cDAO.GetCharacter(id)); } return(characters); }
/// <summary> /// Retrieves campaign record from database /// </summary> /// <param name="campaignId">Campaign to be retrieved</param> /// <returns>Campaign</returns> public Campaign GetCampaign(int campaignId) { List <int> userIds = new List <int>(); List <int> characterIds = new List <int>(); string name; string description; int dungeonMasterID; using (conn = ConnectionFactory.GetConnection()) { conn.Open(); // Get the campaign SqlCommand cmd = new SqlCommand($"" + $"select * from campaign where Id = @cId;"); cmd.Parameters.AddWithValue("@cId", campaignId); cmd.Connection = conn; SqlDataReader reader = cmd.ExecuteReader(); if (reader.Read()) { name = Convert.ToString(reader["Name"]); description = Convert.ToString(reader["Description"]); dungeonMasterID = Convert.ToInt32(reader["dungeonMasterId"]); } else { return(null); } reader.Close(); // Get ids for users in campaign cmd = new SqlCommand($"" + $"select userId from userCampaign where campaignId = @cId;"); cmd.Parameters.AddWithValue("@cId", campaignId); cmd.Connection = conn; reader = cmd.ExecuteReader(); while (reader.Read()) { userIds.Add(Convert.ToInt32(reader["userId"])); } reader.Close(); // Get ids for characters in campaign cmd = new SqlCommand($"" + $"select CharId from characterCampaign where campaignId = @cId;"); cmd.Parameters.AddWithValue("@cId", campaignId); cmd.Connection = conn; reader = cmd.ExecuteReader(); while (reader.Read()) { characterIds.Add(Convert.ToInt32(reader["charId"])); } reader.Close(); } // Populate list with users List <User> users = new List <User>(); UserDAO uDAO = new UserDAO(); foreach (int id in userIds) { users.Add(uDAO.GetUser(id)); } User dungeonMaster = uDAO.GetUser(dungeonMasterID); // Populate list with characters List <Character> characters = new List <Character>(); CharacterDAO cDAO = new CharacterDAO(); foreach (int id in characterIds) { characters.Add(cDAO.GetCharacter(id)); } // Instantiate campaign Campaign campaign = new Campaign( campaignId, name, description, users, characters, dungeonMaster ); return(campaign); }