UNPKG

unserver-unify

Version:

227 lines (218 loc) 7.35 kB
'use strict'; angular.module('bamboo.course').controller("OFCourseCtrl", function($scope, $rootScope, $state, loginService, $compile, $window, $stateParams, ApiService, calendarEventService, UserService, $location, CommonService, fullWidthService, $document) { this.id = $stateParams.cid; console.log($stateParams); var self = this; this.item = {}; this.teacherPicUrl = ApiService.SHOST + "/photo/" + ApiService.RES + "/teachers/"; $scope.timeUp = false; $scope.fundingResult = false; this.defaultPhotoUrl = "assets/images/course_no-image.jpg"; this.newsPicUrl = ApiService.SHOST + "/ofcourses/"; this.promise = {}; self.currency = (loginService.school.currency&&loginService.school.currency.sign)?loginService.school.currency.sign:'$'; if (loginService.subDomain == 'gsx') { $rootScope.fullwidthflag = true; } $scope.$on("$destroy", function() { console.log('-- destroy --'); fullWidthService.listen(); }); ApiService.get("/ofcourse/" + self.id).then(function(result) { // console.log( '-Starting auth session result: '); if (result.data.success) { console.log(result.data.data); self.item = result.data.data || {}; if (self.item.photo) { self.imageUrl = self.newsPicUrl + self.item.photo; } if (self.item.editors) { getEditorInfo(self.item.editors); } //self.promise = $interval(isTimeUp, 1000); } }); this.editors = []; $scope.scrollTo = function(id) { var duration = 1000; //milliseconds var offset = 100; //pixels; adjust for floating menu, context etc //Scroll to #some-id with 30 px "padding" //Note: Use this in a directive, not with document.getElementById var someElement = angular.element(document.getElementById(id)); $document.scrollToElement(someElement, offset, duration); }; function getEditorInfo(names) { // get teacher info for all editors UserService.getTeachersInfoByLoginnames(names, function(data) { var teacherinfos = {}; self.editors = []; angular.forEach(data, function(teacher, index) { if (teacher.photo && !teacher.avatarflag) { teacher.photourl = self.teacherPicUrl + teacher._id + "/" + teacher.photo; } else if (teacher.avatar) { var user = { id: teacher.userid, avatar: teacher.avatar, } teacher.photourl = CommonService.getAvatarSrc(user); } else { teacher.photourl = self.defaultPersonPhotoUrl; } self.editors.push(teacher); }) }); } this.eventSources = []; var info = { action: 'getcoursesessions', lid: self.id, } if (loginService.user) { info.action = "getmycoursesessions"; } var eventdata = []; ApiService.post('/ofcourse', info).then(function(result) { if (result.data.success) { var resourceItems = result.data.data.items; console.log(resourceItems); var apps = result.data.data.apps || []; self.apps = apps; var appInfo = {}; angular.forEach(apps, function(app, index) { // console.log(app); var key = app.sessionId + app.time; appInfo[key] = true; }) // console.log(appInfo); angular.forEach(resourceItems, function(item, idx) { //item.end = timeHelper.calEndTime(item.start, item.len); for (var i = 0; i < item.repeatCounter; i++) { var time = item.start; switch (item.repeatType) { case 'week': time = moment(item.start).add(i, 'weeks').toDate(); break; case 'month': time = moment(item.start).add(i, 'months').toDate(); break; case 'day': time = moment(item.start).add(i, 'days').toDate(); break; } var info = { title: item.name, start: time, stick: true, id: item._id, address: item.address, } var key = item._id + time.toISOString(); // console.log(key); if (appInfo[key]) { info.selected = true; } eventdata.push(info); } }); //console.log(resourceItems); self.eventData = eventdata; self.eventSources = [eventdata]; console.log(self.eventData); self.eventsready = true; } }); this.time = new Date(); function enroll(data) { if (self.item.price) { var info = { action: "paypalbuyoffsession", cid: self.id, sid: data.id, time: data.start.toDate(), url: $location.absUrl(), } ApiService.post('/payment', info).then(function(result) { console.log(result); if (result.data.success) { console.log(result.data.data); if (result.data.data.redirectUrl) { CommonService.showInfo('Redirect to Payment Page , Please wait ...'); $window.location.href = result.data.data.redirectUrl; } else if (result.data.data.enrolled) { /* $state.go("index.courses.course", { cid: _self.id, cs:ApiService.getCheckSum(_self.id) }); */ } } }); } else { var info = { action: 'applysession', time: data.start.toDate(), id: data.id, } ApiService.post('/ofcourse', info).then(function(result) { console.log('result'); $state.reload(); }); } } this.book = function(data) { var string; if (!loginService.user) { $rootScope.showCourseLoginDialog(); return; } if (self.item.price) { string = "Do you really want to book the session ?"; } else { string = "Do you really want to book the session , The payment will be made on Site?"; } CommonService.showConfirm(string, function() { data.start = moment(data.start); enroll(data); }) } this.eventClick = function(data, jsEvent, view) { if (!loginService.user) { $rootScope.showCourseLoginDialog(); return; } if (data.selected) { CommonService.showInfo('Already Booked!'); return; } console.log(data); console.log(data.start.toDate()); var string; if (self.item.price) { string = "Do you really want to book the session ?"; } else { string = "Do you really want to book the session , The payment will be made on Site?"; } CommonService.showConfirm(string, function() { enroll(data); }) } this.eventRender = function(event, element, view) { if (!event.selected) { element.append(calendarEventService.checkEvent(event)); $compile(element)($scope); } } this.calendar = { height: 600, // editable: true, // editable: true, header: { left: 'title', center: '', /*TODO: make these work*/ right: 'today prev,next' }, eventClick: self.eventClick, eventRender: self.eventRender, // eventDrop: self.alertOnDrop, } });