/// <summary>
        /// Retrieves all classes from database
        /// </summary>
        /// <returns>Collection of classes</returns>
        public List <Class> GetAllClasses()
        {
            List <Class> classes = new List <Class>();

            SkillsDAO     sDAO   = new SkillsDAO();
            List <Skills> skills = sDAO.GetAllSkills();

            SqlDataAdapter classAdapter = new SqlDataAdapter("SELECT id, name, description, hitdice FROM class;",
                                                             ConnectionFactory.GetConnection());
            SqlCommandBuilder commandBuilder = new SqlCommandBuilder(classAdapter);

            DataTable classTable = new DataTable();

            classAdapter.Fill(classTable);

            // Retrieve features for all rows
            foreach (DataRow row in classTable.Rows)
            {
                int    classID      = Convert.ToInt32(row.Field <int>(0));
                string name         = Convert.ToString(row.Field <string>(1));
                string description  = Convert.ToString(row.Field <string>(2));
                int    hitDiceValue = Convert.ToInt32(row.Field <int>(3));
                Dice   dice         = new Dice(hitDiceValue);

                FeatureDAO     fDAO     = new FeatureDAO();
                List <Feature> features = fDAO.GetClassFeatures(row.Field <int>(0)); // Retrieve features for specific class id

                classes.Add(new Class(classID, name, description, features, dice, skills));
            }

            classes.Sort();
            return(classes);
        }
        /// <summary>
        /// Get a Class from the database
        /// </summary>
        /// <param name="classID">The ID of the class record</param>
        /// <returns>The class record</returns>
        public Class GetClass(int classID)
        {
            Class  charClass;
            int    classId     = 0;
            string name        = "";
            string description = "";

            FeatureDAO     fDAO     = new FeatureDAO();
            List <Feature> features = fDAO.GetClassFeatures(classID);

            int  hitDiceValue;
            Dice dice = null;

            SkillsDAO     sDAO   = new SkillsDAO();
            List <Skills> skills = sDAO.GetAllSkills();

            using (conn = ConnectionFactory.GetConnection()) {
                conn.Open();

                SqlCommand cmd = new SqlCommand($"" +
                                                $"select Id, Name, Description, hitDice from class where Id = @cId;");
                cmd.Parameters.AddWithValue("@cId", classID);
                cmd.Connection = conn;

                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    classId      = Convert.ToInt32(reader["id"]);
                    name         = Convert.ToString(reader["name"]);
                    description  = Convert.ToString(reader["description"]);
                    hitDiceValue = Convert.ToInt32(reader["hitDice"]);
                    dice         = new Dice(hitDiceValue);
                }
                reader.Close();

                charClass = new Class(classId, name, description, features, dice, skills);

                return(charClass);
            }
        }