define("pages/open-course/common/models/membership",["require","exports","module","backbone-associations","q","underscore","bundles/common/constants/CourseRoles","bundles/phoenix/template/models/userIdentity","pages/open-course/common/constants","pages/open-course/common/membershipApi"],function(require,exports,module){var Backbone=require("backbone-associations"),s=require("q"),_=require("underscore"),e=require("bundles/common/constants/CourseRoles"),t=require("bundles/phoenix/template/models/userIdentity"),o=require("pages/open-course/common/constants"),n=require("pages/open-course/common/membershipApi"),r=Backbone.AssociatedModel.extend({api:n,defaults:function defaults(){return{timestamp:Date.now()}},initialize:function initialize(e){if(!_(e).has("courseId"))throw new Error("You must instantiate a Membership with a courseId");this.get("userId")||this.set("userId",e.userId||t.get("id")),_(e).has("id")||this.set("id",this.get("userId")+"~"+this.get("courseId"),{silent:!0})},hasTeachingRole:function hasTeachingRole(){return _(o.courseRolesWithTeachAccess).contains(this.get("courseRole").toUpperCase())},hasModerationRole:function hasModerationRole(){return _(o.courseRolesWithModeratorAccess).contains(this.get("courseRole").toUpperCase())},hasEnrolledRole:function hasEnrolledRole(){return!_([e.BROWSER,e.NOT_ENROLLED,e.PRE_ENROLLED_LEARNER]).contains(this.get("courseRole"))},hasPreEnrolled:function hasPreEnrolled(){return this.get("courseRole")===e.PRE_ENROLLED_LEARNER},enroll:function enroll(o){this.set("courseRole",o||e.LEARNER);var t={data:this.toJSON()};return s(this.api.post("",t))},unenroll:function unenroll(){return this.set("courseRole",e.NOT_ENROLLED),s(this.api["delete"](this.get("id")))}},e);module.exports=r});
define("bundles/common/constants/CourseRoles",["require","exports","module","js/lib/keysToConstants"],function(require,exports,module){var s=require("js/lib/keysToConstants");module.exports=s(["BROWSER","NOT_ENROLLED","PRE_ENROLLED_LEARNER","LEARNER","MENTOR","TEACHING_STAFF","UNIVERSITY_ADMIN","INSTRUCTOR","DATA_COORDINATOR"])});