structures/HomeworkSubmissionVersion.js

/**
 * Represents a homework submission version on SMHW.
 */
class HomeworkSubmissionVersion {
    /**
     * Instantiate a HomeworkSubmissionVersion 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;

        /**
         * An array of IDs to attachments attached to the homework submission version.
         * @type {Array<Number>}
         */
        this.attachment_ids = response.attachment_ids;

        /**
         * The text submitted through online.
         * @type {String}
         */
        this.complete_online_text = response.complete_online_text;

        /**
         * The timestamp of when the homework submission version was created.
         * @type {Number}
         */
        this.created_at = new Date(response.created_at).getTime();

        /**
         * The ID of the homework submission version.
         * @type {Number}
         */
        this.id = response.id;

        /**
         * The timestamp of when the homework submission version was last updated.
         * @type {Number}
         */
        this.updated_at = new Date(response.updated_at).getTime();

        /**
         * An array of IDs to attachments attached to the homework submission version.
         * @type {Array<Number>}
         */
        this.user_attachment_ids = response.user_attachment_ids;

        /**
         * The ID of the user who the version was created by.
         * @type {Number}
         */
        this.user_id = response.user_id;

        /**
         * The name of the user who the version was created by.
         * @type {String}
         */
        this.user_name = response.user_name;
    }
    
    /**
     * Get attachments attached to the homework submission version.
     * @param {Array<Number>} [ids] An array of IDs of attachments to retrieve.
     * @return {Promise<Array<Attachment>>}
     */
    getAttachments(ids) {
        return this._client.getAttachments(ids || this.attachment_ids);
    }

    /**
     * Get the user who created the homework submission version.
     * @return {Promise<User>}
     */
    getUser() {
        return this._client.getUser(this.user_id);
    }
}

module.exports = HomeworkSubmissionVersion;