MCPcopy Create free account
hub / github.com/codecombat/codecombat / removeCourse

Method removeCourse

app/views/courses/TeacherClassView.js:889–926  ·  view source on GitHub ↗
(courseID, members)

Source from the content-addressed store, hash-verified

887 }
888
889 removeCourse (courseID, members) {
890 if (!this.classroom.hasWritePermission({ showNoty: true })) { return } // May be viewing page as admin
891 let courseInstance = null
892 let membersBefore = 0
893
894 return Promise.resolve()
895 // Find the necessary course instance
896 .then(() => {
897 courseInstance = this.courseInstances.findWhere({ courseID, classroomID: this.classroom.id })
898 if (courseInstance) {
899 membersBefore = courseInstance.get('members').length
900 }
901 // if not courseInstance
902 // TODO: show some message if no courseInstance?
903 return courseInstance
904 }).then(() => {
905 this.fetchStudents()
906
907 this.trigger('begin-remove-course') // Only used for test automation
908 if (members.length) {
909 noty({ text: $.i18n.t('teacher.removing_course'), layout: 'center', type: 'information', killer: true })
910 return (courseInstance != null ? courseInstance.removeMembers(members) : undefined)
911 }
912 }).then(res => {
913 const membersAfter = (courseInstance != null ? courseInstance.get('members').length : undefined) || 0
914 const numberRemoved = membersBefore - membersAfter
915 const course = this.courses.get(courseID)
916 const lines = [
917 $.i18n.t('teacher.removed_course_msg')
918 .replace('{{numberRemoved}}', numberRemoved)
919 .replace('{{courseName}}', course.get('name'))
920 ]
921 noty({ text: lines.join('<br />'), layout: 'center', type: 'information', killer: true, timeout: 5000 })
922
923 this.calculateProgressAndLevels()
924 return this.classroom.fetch()
925 })
926 }
927
928 onClickRevokeAllStudentsButton () {
929 const s = $.i18n.t('teacher.revoke_all_confirm')

Callers 1

Calls 5

fetchStudentsMethod · 0.95
hasWritePermissionMethod · 0.80
removeMembersMethod · 0.80
getMethod · 0.45
fetchMethod · 0.45

Tested by

no test coverage detected