# structures/Event.js

    /**
     * Represents an Event on SMHW.
     */
    class Event {
        /**
         * Instantiate an Event 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 assignment that the event refers to.
             * @type {Number}
             */
            this.assignment_id = response.assignment_id;

            /**
             * The title of the assignment that the event refers to.
             * @type {String}
             */
            this.assignment_title = response.assignment_title;

            /**
             * The type of the assignment that the event refers to.
             * @type {String}
             */
            this.assignment_type = response.assignment_type;

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

            /**
             * The type of event.
             * @type {String}
             */
            this.event_type = response.event_type;

            /**
             * Information for what the event refers to.
             * @type {Object}
             */
            this.eventable = response.eventable;

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

            /**
             * The forename of the parent who the event refers to.
             * @type {String}
             */
            this.parent_forename = response.parent_forename;

            /**
             * The surname of the parent who the event refers to.
             * @type {String}
             */
            this.parent_surname = response.parent_surname;

            /**
             * Whether or not the event has been read as of yet.
             * @type {Boolean}
             */
            this.read = response.read;

            /**
             * The recipient of the event.
             * @type {Number}
             */
            this.recipient_id = response.recipient_id;

            /**
             * The forename of the student who the event refers to.
             * @type {String}
             */
            this.student_forename = response.student_forename;

            /**
             * The ID of the submission that the event refers to.
             * @type {Number}
             */
            this.submission_id = response.submission_id;

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

            /**
             * The name of the user who created the event.
             * @type {String}
             */
            this.user_name = response.user_name;
        }

        /**
         * Clear the event.
         * @returns {Promise<Event>}
         */
        clear() {
            return new Promise((resolve, reject) => {
                this._client.make("DELETE", "/api/events/" + this.id).then(() => {
                    resolve(this);
                }).catch(reject);
            });
        }
    }

    module.exports = Event;