structures/User.js

/**
 * Represents a user on SMHW.
 */
class User {
    /**
     * Instantiate a User 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;

        /**
         * Whether or not the user is anonymous.
         * @type {Boolean}
         */
        this.anonymous = response.anonymous;

        /**
         * The Avatar URL of the user.
         * @type {String}
         */
        this.avatar = response.avatar;

        /**
         * The large avatar URL of the user.
         * @type {String}
         */
        this.avatar_large_thumb = response.avatar_large_thumb;

        /**
         * The small avatar URL of the user.
         * @type {String}
         */
        this.avatar_small_thumb = response.avatar_small_thumb;

        /**
         * The type of user that the user is on the back-end.
         * @type {String}
         */
        this.backend_type = response.backend_type;

        /**
         * The bio of the user.
         * @type {String}
         */
        this.bio = response.bio;

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

        /**
         * Whether or not the user is disabled.
         * @type {Boolean}
         */
        this.disabled = response.disabled;

        /**
         * The facebook account of the user.
         * @type {String}
         */
        this.facebook = response.facebook;

        /**
         * The forename of the user.
         * @type {String}
         */
        this.forename = response.forename;

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

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

        /**
         * The LinkedIn account of the user.
         * @type {String}
         */
        this.linked_in = response.linked_in;

        /**
         * Whether or not the user is a mobile beta user.
         * @type {Boolean}
         */
        this.mobile_beta_user = response.mobile_beta_user;

        /**
         * The Pintrest account of the user.
         * @type {String}
         */
        this.pintrest = response.pintrest;

        /**
         * Whether or not the user has push notifications enabled.
         * @type {Boolean}
         */
        this.push_notifications_enabled = response.push_notifications_enabled;

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

        /**
         * The ID of the user on SIMS.
         * @type {String}
         */
        this.sims_id = response.sims_id;

        /**
         * @type {Boolean}
         */
        this.student_friday_summary = response.student_friday_summary;

        /**
         * @type {Boolean}
         */
        this.student_marked_homework = response.student_marked_homework;
        
        /**
         * @type {Boolean}
         */
        this.student_overdue_summary = response.student_overdue_summary;

        /**
         * The surname of the user.
         * @type {String}
         */
        this.surname = response.surname;

        /**
         * @type {Boolean}
         */
        this.teacher_stats = response.teacher_stats;

        /**
         * @type {Boolean}
         */
        this.teacher_summary = response.teacher_summary;

        /**
         * The title of the user.
         * @type {String}
         */
        this.title = response.title;

        /**
         * The twitter account of the user.
         * @type {String}
         */
        this.twitter = response.twitter;

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

        /**
         * The ID of the user's private information.
         * @type {Number}
         */
        this.user_identity_id = response.user_identity_id;
        
        /**
         * The ID of the user's private information.
         * @type {Number}
         */
        this.user_private_info_id = response.user_private_info_id;
    }
}

module.exports = User;