# structures/ClassGroup.js

    /**
     * Represents a class group on SMHW.
     */
    class ClassGroup {
        /**
         * Instantiate a ClassGroup object.
         * @param {Client} client The client that is instantiating the object.
         * @param {Object} response The data for the object.
         */
        constructor(client, response) {
            /**
             * The client that instantiated this object.
             * @type {Client}
             * @private
             */
            this._client = client;

            /**
             * The ID of the academic year that the class group is in.
             * @type {Number}
             */
            this.academic_year_id = response.academic_year_id;

            /**
             * The class year that the class group is in.
             * @type {String}
             */
            this.class_year = response.class_year;

            /**
             * The ID of the class group
             * @type {Number}
             */
            this.id = response.id;

            /**
             * Whether or not the class group has been imported via sims.
             * @type {Boolean}
             */
            this.imported_via_sims = response.imported_via_sims;

            /**
             * Whether or not the class group is a registration group.
             * @type {Boolean}
             */
            this.is_registration_group = response.is_registration_group;

            /**
             * The timestamp of when the class group left. (?)
             * @type {Number}
             */
            this.left_at = new Date(response.left_at).getTime();

            /**
             * Links for API resources for the class group.
             * @type {Object}
             */
            this.links = {
                /**
                 * A link to the class group's assignments.
                 * @type {String}
                 */
                assignments: response.links.assignments
            };

            /**
             * The name of the class group.
             * @type {String}
             */
            this.name = response.name;

            /**
             * The ID of the school that the class group belongs to.
             * @type {Number}
             */
            this.school_id = response.school_id;

            /**
             * An array of IDs for students in the class group.
             * @type {Array<Number>}
             */
            this.student_ids = response.student_ids;

            /**
             * An array of IDs for teachers in the class group.
             * @type {Array<Number>}
             */
            this.teacher_ids = response.teacher_ids;
        }

        /**
         * Get the school that the class group belongs to.
         * @returns {Promise<School>}
         */
        getSchool() {
            return this._client.getSchool(this.school_id);
        }

        /**
         * Get students in the class group.
         * @param {Array<Number>} [ids] An array of student IDs to retrieve.
         * @returns {Promise<Array<Student>>}
         */
        getStudents(ids) {
            this._client.getStudents(ids || this.student_ids);
        }

        /**
         * Get teachers in the class group.
         * @param {Array<Number>} [ids] An array of teacher IDs to retrieve.
         * @returns {Promise<Array<Employee>>}
         */
        getTeachers(ids) {
            return this._client.getEmployees(ids || this.teacher_ids);
        }
    }

    module.exports = ClassGroup;