unserver-unify
Version:
83 lines • 2.97 kB
JavaScript
;
angular.module('bamboo.course').service('userBizModel', function(ApiService, $q, schoolModel) {
var self = this;
self.getProfileById = function(id) {
if (!id) return;
var deferred = $q.defer();
ApiService.get('/profile/' + id).then(function(res) {
deferred.resolve(res.data.data);
}, function(error) {
deferred.reject(error);
});
return deferred.promise;
};
self.getProfile = function() {
var deferred = $q.defer();
ApiService.get('/profile/').then(function(res) {
deferred.resolve(res.data.data);
}, function(error) {
deferred.reject(error);
});
return deferred.promise;
};
//var _rule,ruledoc;
var loadSchool = function() {
return schoolModel.getSchool().then(function(school) {
//_rule = school.gameruledoc;
return school.gameruledoc;
})
}
var loadSchoolDoc = function(_rule) {
return schoolModel.getSchoolDoc(_rule).then(function(_ruledoc) {
console.log(_ruledoc);
//ruledoc = _ruledoc;
return _ruledoc;
});
}
var calculateScore = function(ruledoc) {
var deferred = $q.defer();
self.getProfile().then(function(result) {
console.log(result);
result = result || {};
var loginDayCounter = result.loginDayCounter || 0;
var totaltime = (result.totaltime || 0) / 3600;
var summary = result.summary || {};
var exp = (ruledoc.assignment * summary.assignmentrecords) || 0 + (ruledoc.cert * summary.cert) || 0 + (ruledoc.attendance * summary.courseclass) || 0 + (ruledoc.login * loginDayCounter) + (ruledoc.usage * totaltime);
var mastery = (ruledoc.gradeA * summary.exam.AF) || 0 + (ruledoc.gradeB * summary.exam.AP) || 0 + (ruledoc.gradeC * summary.exam.A) || 0 + (ruledoc.gradeD * summary.exam.B) || 0 + (sruledoc.gradeE * summary.exam.F) || 0 + (ruledoc.topuser * summary.topusser) || 0;
var ctizship = (ruledoc.reply * summary.reply) || 0 + (ruledoc.topic * summary.topic) || 0;
var score = exp + mastery + ctizship;
var scoreObj = {
_exp: exp,
_mastery: mastery,
_ctizship: ctizship,
_score: score
};
deferred.resolve(scoreObj);
}, function(error) {
deferred.reject(error);
});
return deferred.promise;
}
self.getMyScore = function() {
return loadSchool().then(loadSchoolDoc).then(calculateScore);
}
self.getLearningRecordByUserId = function(userId) {
var info = {
start: 0,
limit: Number.MAX_SAFE_INTEGER,
action: "getuserprogress",
id: userId,
};
console.log(info);
var deferred = $q.defer();
var promise = deferred.promise;
ApiService.post('/lcourses',info).then(function(res){
if(res.data.success){
deferred.resolve(res.data.data);
}else{
deferred.reject();
}
});
return promise;
}
});