UNPKG

unserver-unify

Version:

158 lines (157 loc) 4.86 kB
'use strict'; 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('^'); }) } } }; })