UNPKG

unserver-unify

Version:

243 lines (238 loc) 7.2 kB
'use strict'; 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'); }); } });