Exemplo n.º 1
0
        /// <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);
        }