unserver-unify
Version:
243 lines (238 loc) • 7.2 kB
JavaScript
;
angular.module('bamboo.course').service('CourseApi', function($state, $stateParams, $rootScope,$translate, ApiService, CommonService) {
this.mvid;
this.mvsubject;
this.course;
this.CoursewareIdx = 0; // init the idx to 0
this.mp4CurTime;
this.coursewareid;
this.videocoursewareid;
var self = this;
this.get = function(url, callback) {
ApiService.get(url).then(function(result) {
if (result.data.success) {
// console.log(result);
callback(result.data.data);
} else {
console.log(result.data);
$state.go('index.404');
}
});
};
this.post = function(url, info, callback) {
ApiService.post(url, info).then(function(result) {
if (result.data.success) {
if (callback) {
callback(result.data.data);
} else {
CommonService.showNoBlockInfo('Update Successful!');
$state.reload();
}
} else {
CommonService.showError('Update Fail!');
console.log(result.data);
}
});
};
this.put = function(url, info, callback) {
ApiService.put(url, info).then(function(result) {
if (result.data.success) {
if (callback) {
callback(result.data.data);
} else {
CommonService.showNoBlockInfo('Update Successful!');
$state.reload();
}
} else {
CommonService.showError('Update Fail!');
console.log(result.data);
}
});
};
this.mvApi = function(info, callback, flag) {
function handleData(data) {
if (!callback) {
CommonService.showNoBlockInfo('Update Successful!');
$state.reload();
} else {
callback(data);
}
}
ApiService.post('/mvsubjects', info).then(function(result) {
if (result.data.success) {
if (flag) {
self.getInfo(self.mvid, function() {
handleData(result.data);
}, true);
} else {
handleData(result.data);
}
} else {
CommonService.showError('Fail! :' + result.data.error);
console.log(result);
}
});
};
this.courseSurveyApi=function(info, callback) {
ApiService.post('/coursesurvey', info).then(function(result) {
console.log(result);
if (result.data.success) {
if (!callback) {
CommonService.showNoBlockSuccess($translate.instant('Update Successful!'));
$state.reload();
} else {
callback(result.data.data);
}
} else {
var error = result.data.error || '' + result.data.info || '';
CommonService.showError($translate.instant("Update failed:") + error);
}
});
};
this.lcApi = function(info, callback, tab) {
ApiService.post('/lcourses', info).then(function(result) {
// console.log(result);
if (result.data.success) {
if (!callback) {
CommonService.showNoBlockInfo('Update Successful!');
if (tab && tab > 0) {
$stateParams.ltab = tab;
} else {
$stateParams.ltab = 0;
}
$state.reload();
} else {
callback(result.data.data);
}
} else {
var error = result.data.error || '' + result.data.info || '';
CommonService.showNoBlockErr("Update failed: " + error);
}
});
};
function handleMvResult(result, callback) {
console.log("-- course api force update--");
console.log(self.mvid);
if (result.data.success) {
console.log(result.data);
self.mvsubject = result.data.data;
if(result.data.chapters){
self.mvsubject.contents = result.data.chapters;
}
$rootScope.subjectname = self.mvsubject.name;
if (callback) {
var data = result.data.data;
var chapters = result.data.chapters;
data.fullchapters = chapters;
callback(data);
}
if (!$rootScope.lcoursename && $stateParams.cid) {
var cid = $stateParams.cid;
ApiService.get('/course/' + cid).then(function(result) {
if (result.data.success) {
self.course = result.data.data;
// console.log(self.course);
$rootScope.lcoursename = self.course.name;
} else {
$state.go('index.404');
}
});
}
} else {
console.log(result.data);
$state.go('index.404');
}
}
this.getInfo = function(id, callback, flag) {
var cid = $stateParams.cid;
if (!self.mvid || id != self.mvid || flag || !self.mvsubject || self.mvsubject._id != id) {
var url = '/mvsubject/' + id;
if (cid) {
url += "/" + cid;
}
self.mvid = id;
ApiService.get(url).then(function(result) {
handleMvResult(result, callback);
});
} else if (callback) {
console.log("reasone for pass " + self.mvid + " id : " + id);
callback(self.mvsubject);
}
};
this.setCoursewareIdx = function(coursewareid, idx) {
self.coursewareid = coursewareid;
self.CoursewareIdx = idx;
};
this.getCoursewareIdx = function(coursewareid) {
if (coursewareid == self.coursewareid) {
return self.CoursewareIdx || 0;
} else {
return 0;
}
};
this.setMp4CurTime = function(coursewareid, sec) {
self.videocoursewareid = coursewareid;
self.mp4CurTime = sec;
};
this.getMp4CurTime = function(coursewareid) {
if (coursewareid == self.videocoursewareid) {
return self.mp4CurTime || 0;
} else {
return 0;
}
};
function compare(a, b) {
// console.log(a);
// console.log(b);
if (a.key < b.key) return -1;
if (a.key > b.key) return 1;
return 0;
}
function getKnowLedges(id, callback) {
var info = {
action: "getfullcoursescat",
lid: id,
};
console.log('--regen cat');
self.lcApi(info, function(result) {
console.log(result);
var category = {};
angular.forEach(result.courses, function(course, index) {
if (course.knowledgeCat) {
category = angular.merge({}, category, course.knowledgeCat);
}
})
if (result.cat) {
category = angular.merge({}, category, result.cat);
}
var catList = [];
CommonService.getArray(category, catList, 0, '');
callback(catList);
});
}
this.getKnowledges = function(id, callback) {
getKnowLedges(id, callback);
};
this.recordUsage = function(cid,rid,mvid,_lasttime,mp4time,pass){
var len = ((new Date()) - _lasttime)/1000;
var _historyDetail = {};
_historyDetail[rid] = {
len : len,
mp4time : mp4time,
pass : pass
};
var info = {
action: "resourceusage",
ids: [rid],
detail: _historyDetail,
total: len,
cid: cid,
rid: rid,
mvid: mvid,
};
console.log(info);
self.mvApi(info, function(data) {
console.log('progress updated');
});
}
});