unserver-unify
Version:
158 lines (157 loc) • 4.86 kB
JavaScript
;
angular.module('bamboo.comadmin').controller('GroupEvaluationCtrl', function($rootScope, ApiService, $sce, $state, EvaluationApi, $stateParams, CommonService) {
var self = this;
this.eid = $stateParams.eid;
this.gid = $stateParams.gid;
this.jid = $stateParams.jid;
this.record = {};
function getInfo() {
ApiService.get('/class/' + self.gid + '/students').then(function(result) {
if (result.data.success) {
console.log(result.data);
var data = result.data.data;
self.class = data._class;
self.users = data.users;
angular.forEach(self.users, function(user) {
user.avatar = CommonService.getAvatarSrc(user);
})
}
})
var info = {
action: "get",
id: self.eid,
}
ApiService.post('/evaluation', info).then(function(result) {
if (result.data.success) {
self.evaluation = result.data.data;
var groupQs = [];
var singleqs = [];
angular.forEach(result.data.data.questions, function(q) {
if (q.group) {
groupQs.push(q);
} else {
singleqs.push(q);
}
});
self.questions = groupQs;
self.singleqs = singleqs;
console.log(self.questions);
var info1 = {
classId: self.gid,
refId: self.jid,
eid: self.eid,
action: 'recallGroupRecord',
}
console.log(info1);
EvaluationApi.api(info1, function(record) {
console.log(record);
if (record) {
self.record = record;
var result = record.result;
angular.forEach(self.questions, function(q) {
if (result[q.index] || result[q.index] == 0) {
switch (q.type) {
case 'rating':
case 'single':
case 'fill':
q.selection = result[q.index];
break;
}
}
})
self.rated();
}
});
} else {
var error = result.data.error || '' + result.data.info || '';
CommonService.showError("Update failed: " + error);
}
});
}
getInfo();
this.rated = function() {
console.log(self.questions);
var totalScores = 0;
self.questions.forEach(function(item) {
if (item.type == 'rating' && item.weightage && item.selection) {
totalScores += item.weightage * item.selection / 5;
}
})
self.totalScore = totalScores;
}
this.submit = function() {
var allanswered = true;
var lastunanswered = [];
console.log("------------submit----------------");
var result = {};
var _index = 0;
//result.username = self.item.username;
angular.forEach(self.questions, function(val, index) {
console.log(val);
if (val.type != 'heading') {
_index++;
var key = val.index;
var ans = val.selection;
if (val.type && val.type == 'multiple') {
var ans = [];
angular.forEach(val.options, function(opt, index) {
if (opt.selection) {
ans.push(opt.text);
}
})
result[key] = ans;
} else {
result[key] = ans;
if (typeof val.selection == 'undefined') {
lastunanswered.push(_index);
allanswered = false;
}
}
console.log(val.selection);
}
});
if (!allanswered) {
CommonService.showNoBlockErr('Not all question answered!, Please check No .' + lastunanswered.toString() + "!");
} else {
if (!self.record._id) {
var info = {
id: self.eid,
action: 'addGroupRecord',
object: {
result: result,
// eid: self.eid,
classId: self.gid,
className: self.class.name,
name: self.evaluation.loginname,
scores: self.totalScore,
}
};
if (self.jid) {
info.object.refId = self.jid;
}
console.log(info);
EvaluationApi.api(info, function(result) {
$state.go('^');
})
} else {
var info = {
id: self.record._id,
action: 'updateGroupRecord',
object: {
result: result,
className: self.class.name,
name: self.evaluation.loginname,
scores: self.totalScore,
}
};
if (self.jid) {
info.object.refId = self.jid;
}
console.log(info);
EvaluationApi.api(info, function(result) {
$state.go('^');
})
}
}
};
})