/* global _ angular store moment */ 'use strict'; angular.module('PromptSkill.services', []) .factory('member', function($q, $http, $window, $location, $cookies) { // var memberUrl = '//services.promptskill.com'; // return { enter: function(service) { if(!_.isUndefined(service)) return memberUrl+'/restful/'+service; return; }, clear: function() { store.set('token', {}); }, authorized: function() { var token = ''; var deferred = $q.defer(); token = $cookies.get('token'); if(token==undefined || token=='') { // deferred.resolve(false); token = $location.hash(); } $http.post(memberUrl + '/sso/authorize/token', {}, { headers: {"Authorization": 'Bearer ' + token} }).then(function(response) { // let expire = new Date(); const domain = $location.host().indexOf('promptskill.com')>-1 ? '.promptskill.com' : $location.host(); expire.setDate(expire.getDate() + 1); // $cookies.put('token', token, { domain: domain, expires: expire, path: '/', secure: true, samesite: 'None' }); // console.log(response.data); deferred.resolve(response.data); }, function errorCallback(response) { // console.log(response); if(token) { $cookies.remove('token', {domain: '.promptskill.com', path: "/"}); $window.location.reload(); } }); //} return deferred.promise; }, // activate: function(passkey) { // var deferred = $q.defer(); // // var pass = passkey.split('.')[0]; // console.log(passkey.split('.')[0]) // $http.post(memberUrl + '/sso/authorize/activate', {}, { // headers: { // "Authorization": 'Basic ' + btoa(passkey.split('.')[0]+':'+passkey.split('.')[1]) // } // }).then(function(response) { // // console.log(response.data); // deferred.resolve(response.data); // }); // //} // return deferred.promise; // }, signup: function(forminput, param) { var deferred = $q.defer(); var postdata = {}; angular.forEach(forminput, function(input) { var $input = angular.element(input); postdata[$input.attr('name')] = $input.val(); }); // console.log(postdata) var username = postdata['username']; delete postdata['username']; var password = postdata['password']; delete postdata['password']; if(password !==postdata['confirm_password']) { deferred.resolve( {err:'Password and Confirm Password do not match'} ) } else { delete postdata['confirm_password']; //console.log(postdata) $http.post(memberUrl + '/sso/authorize/signup' + param, postdata, { headers: { 'Authorization': 'Basic ' + btoa(username+':'+password), //"Content-Type": 'application/json', }, }).then(function(response) { console.log(response); deferred.resolve(response.data) }); } return deferred.promise; }, signin: function(forminput, param) { var deferred = $q.defer(); var postdata = {}; angular.forEach(forminput, function(input) { var $input = angular.element(input); //console.log($input.attr('name')) postdata[$input.attr('name')] = $input.val(); }); var username = postdata['username']; delete postdata['username']; var password = postdata['password']; delete postdata['password']; //console.log(postdata); $http.post(memberUrl + '/sso/authorize/signin' + param, postdata, { headers: { 'Authorization': 'Basic ' + btoa(username+':'+password), }, }).then(function(response) { // console.log(response.data) deferred.resolve(response.data) }); // return deferred.promise; }, // identity: function(token) { // var deferred = $q.defer(); // $http.get(memberUrl + '/sso/authorize/signin', { // headers: { // 'Authorization': 'Bearer ' + token, // }, // }).then(function(response) { // // console.log(response.data) // deferred.resolve(response.data) // }); // // // return deferred.promise; // }, firebase: function() { const deferred = $q.defer(); $http.get(memberUrl + '/sso/authorize/firebase', { headers: { 'Content-Type': 'application/json' } }).then(function(response) { deferred.resolve(response.data); }); return deferred.promise; }, authenticate: function(provider, token) { const deferred = $q.defer(); const formData = new FormData(); formData.append('provider', provider); formData.append('token', token); // $http.post(memberUrl + '/sso/authorize/authenticate', formData, { transformRequest: angular.identity, headers: { // 'Authorization': 'Bearer ' + token, 'Content-Type': undefined }, }).then(function(response) { // console.log(response.data) deferred.resolve(response.data) }); // return deferred.promise; }, // invite: function(token) { // var deferred = $q.defer(); // $http.get(userpath + '/invited', { // headers: { // 'Authorization': 'Bearer ' + token, // } // }).then(function(response) { // deferred.resolve(response.data); // }) // return deferred.promise; // }, password: function(email, param) { var deferred = $q.defer(); // //console.log(email) $http.get(memberUrl + '/sso/authorize/passwd' + param, { headers: { 'Authorization': 'Basic ' + btoa(email+':'+$location.host()) }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); // return deferred.promise; }, resetpassword: function(email, password) { var deferred = $q.defer(); //console.log(email) $http.get(memberUrl + '/sso/authorize/resetpasswd', { headers: { 'Authorization': 'Basic ' + btoa(email+':'+password), }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); // return deferred.promise; }, activate: function(otp) { var deferred = $q.defer(); // console.log(otp.code); // var postdata = {; // var ref = otp.ref; // var email = otp.email; // console.log(otp.email +" "+ otp.ref + " " + otp.otp_input); $http.post(memberUrl + '/sso/authorize/activate', {code:otp.code}, { headers: { 'Authorization': 'Basic ' + btoa(otp.email+':'+otp.ref), }, }).then(function(response) { // console.log(response.data) deferred.resolve(response.data) }); //} return deferred.promise; }, resend: function(otp, param){ var deferred = $q.defer(); // var ref = otp.ref; // var email = otp.email; $http.get(memberUrl + '/sso/authorize/resend' + param, { headers: { 'Authorization': 'Basic ' + btoa(otp.email+':'+otp.ref), }, }).then(function(response) { // console.log(response.data) deferred.resolve(response.data) }); //} return deferred.promise; }, /* photo: function(formdata) { var deferred = $q.defer(); //console.log(userpath + '/photo') $http.post(userpath + '/photo', formdata, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + this.token(), 'Content-Type': undefined } }).then(function(response) { console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; }, update: function(key, value) { var postdata = {}; postdata['key'] = key; postdata['value'] = value; $http.post(userpath + '/profile', postdata, { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { console.log(response.data); }); }, profile: function(academy) { var deferred = $q.defer(); var data = {}; data['aid'] = academy; $http.get(userpath + '/profile', { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { deferred.resolve(response.data); }) return deferred.promise; }, changePassword: function(passwd) { var deferred = $q.defer(); // $http.post(userpath + '/changepasswd', passwd, { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { console.log(response.data); }); // return deferred.promise; }, dashboard: function() { var deferred = $q.defer(); //console.log(userpath + '/dashboard') $http.get(userpath + '/dashboard', { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { deferred.resolve(response.data); }) return deferred.promise; }, enroll: function(code, academy) { var deferred = $q.defer(); var postdata = {}; postdata['aid'] = academy; //var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); //console.log(userpath + '/enroll/'+code) $http.post(userpath + '/enroll/' + code, postdata, { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { //console.log(response.data) //user.enroll = response.data.order_id; //store.set('user', user); deferred.resolve(response.data); }) return deferred.promise; }, info: function(type, academy) { var deferred = $q.defer(); var postdata = {}; postdata['aid'] = academy; //var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); $http.post(userpath + '/info/' + type, postdata, { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { deferred.resolve(response.data); }) return deferred.promise; }, confirm: function(enroll) { var deferred = $q.defer(); var postdata = {}; angular.forEach(['info','receipt','remark'], function(topic) { postdata[topic] = {}; angular.forEach(enroll[topic], function(value) { angular.forEach(value, function(data, name) { postdata[topic][name] = data; }); }); }); $http.post(userpath + '/confirm', {json: postdata, order_id: enroll.orderid, amount: enroll.course.price}, { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { deferred.resolve(response.data); }); // return deferred.promise; }, method: function(enroll, method) { $http.post(userpath + '/confirm', {order_id: enroll.orderid, payment: method}, { headers: { 'Authorization': 'Bearer ' + this.token(), } }); }, payment: function(order, academy) { var deferred = $q.defer(); var postdata = {}; postdata['aid'] = academy; postdata['orderid'] = order; //console.log(this.token()) //console.log(userpath + '/payment') $http.post(userpath + '/payment', postdata, { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); return deferred.promise }, confirmPayment: function(formdata) { var deferred = $q.defer(); $http.post(userpath + '/confirmPayment', formdata, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + this.token(), 'Content-Type': undefined } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); return deferred.promise }, paid: function(order) { var deferred = $q.defer(); var postdata = {}; //console.log(this.token()) postdata['orderid'] = order; $http.post(userpath + '/paid', postdata, { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); return deferred.promise }, cert: function(code) { var deferred = $q.defer(); //console.log(this.token()) $http.get(userpath + '/certificated/'+code, { headers: { 'Authorization': 'Bearer ' + this.token(), }, }).then(function(response) { deferred.resolve(response.data); }); return deferred.promise; }, */ /* course service */ /* enrollState: function(orderID, state) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); }, enrollUpdate: function(orderID) { var deferred = $q.defer(); var postdata = {}; }, stateCourse: function(code) { //var state = 'signin'; var deferred = $q.defer(); var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); //console.log(user.token) if (_.isUndefined(user.token)) { deferred.resolve({'state':'signin'}); } else { console.log($location.host()) $http.get(memberpath + '/user/course/'+code, { headers: { 'Authorization': 'Bearer ' + user.token, }, }).then(function(response) { deferred.resolve(response.data); }); } return deferred.promise; }, applyCourse: function(code, course) { //var deferred = $q.defer(); var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); //console.log(course.state) if (course.state === 'signin') { $window.location = '/signin'; } else { //console.log(course.state) if (course.state !== 'enroll') { var chapter = (course.chapter >0) ?course.chapter :'preamble'; //console.log('/course/'+code+'/'+chapter); $window.location = '/course/'+code+'/'+chapter; } else { //console.log(memberpath + '/course/'+course.state+'/'+code) /*$http.get(memberpath + '/course/'+course.state+'/'+code, { headers: { 'Authorization': 'Bearer ' + user.token, }, }).then(function(response) { $window.location = '/course/'+code; });*//* } } //$location.path('/course/'+code+'/0') // deferred.resolve(response.data) //}); //return deferred.promise; }, chapterCourse: function(code, chapter, module) { var deferred = $q.defer(); var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); if (module >0) chapter += '/' + module //console.log(user.token) //console.log(memberpath + '/user/course/' + code +'/'+chapter) //console.log(memberpath + '/user/course/' + code +'/'+chapter) $http.get(memberpath + '/user/course/' + code +'/'+chapter, { headers: { 'Authorization': 'Bearer ' + user.token, }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }) return deferred.promise; }, nextChapter: function(code, chapter, module) { var deferred = $q.defer(); var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); //console.log(memberpath + '/course/completion/' + code +'/' + chapter + '/' + module) $http.get(memberpath + '/course/completion/' + code +'/' + chapter + '/' + module, { headers: { 'Authorization': 'Bearer ' + user.token, }, }).then(function(response) { deferred.resolve(response.data) }); return deferred.promise; }, navigation: function(code) { var deferred = $q.defer(); var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); //console.log(user.token) $http.get(memberpath + '/user/navigation/' + code, { headers: { 'Authorization': 'Bearer ' + user.token, }, }).then(function(response) { deferred.resolve(response.data) }) return deferred.promise; }, updateCompletion: function(code) { //var deferred = $q.defer(); var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); // this.certificate(code); $http.get(memberpath + '/user/completion/'+code, { headers: { 'Authorization': 'Bearer ' + user.token, }, //}).then(function(response) { //deferred.resolve(response.data) }) //return deferred.promise; }, courseProgress: function(code) { var deferred = $q.defer(); var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); $http.get(memberpath + '/user/navigation/'+code, { headers: { 'Authorization': 'Bearer ' + user.token, }, }).then(function(response) { //console.log(response.data) var score = 0; var progress = 0; var scored = 0; angular.forEach(response.data, function(chapter) { //console.log(chapter) angular.forEach(chapter.contents, function(content) { //console.log(content) if(content.score >0) { if(content.completion >0) { scored += content.scored; progress += content.score; } score += content.score; } }); }); progress = Math.ceil(progress / score *100) ; scored = Math.ceil(scored / score *100) // deferred.resolve({progress:progress,scored:scored}); }) return deferred.promise; }, */ /*permissions: function(resource) { var deferred = $q.defer(); var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); $http.post('api/user/permissions', { token: user.token, resource: resource }).success(function(data) { if (data.status) { deferred.resolve(data.permissions); return; } deferred.reject(); }); return deferred.promise; }, loggedIn: function() { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); return !_.isEmpty(user) && !_.isEmpty(user.token) && !_.isUndefined(user.token); },*/ /* token: function() { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); return user.token; }, lastUrl: function(url) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); if (url==undefined) return user.lastUrl; // user.lastUrl = url; store.set('user', user); }, avatar: function(size, avatar) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); if(avatar!=undefined) { user.avatar = avatar; store.set('user', user); } if(size !=undefined) return user.avatar.replace('.jpg', '.jpg'); return user.avatar; }, name: function(name) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); if(name!=undefined) { user.name = name; } return user.name; }, uat: function() { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); return user.uat; }, logged: function(data) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); if(data ==undefined) { return !_.isEmpty(user) && !_.isEmpty(user.token) && !_.isUndefined(user.token); } user = data; store.set('user', user); }, lrs: function(data) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); if(data ==undefined) user.sesskey = null; else user.lrs = data // store.set('user', user); }, sesskey: function() { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); // return user.lrs.sesskey; }, certificate: function(course) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); if(course ==undefined) return user.certificate; // user.certificate = course; store.set('user', user); } */ /*setAvatar: function(avatar) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); user.avatar = avatar; store.set('user', user); }, setFullname: function(fullname) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); user.fullname = fullname; store.set('user', user); }, setToken: function(token, rToken) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); user.token = token; user.rtoken = rToken; store.set('user', user); }, lastUrl: function(url) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); user.lastUrl = url; store.set('user', user); },*/ }; }) .factory('user', function($q, $http, $window, $location, $cookies) { // var baseUrl = '//cms.promptskill.com/restapi/user'; var serviceUrl = '//services.promptskill.com'; return { clear: function() { $cookies.remove('token', {domain: '.promptskill.com', path: "/"}); }, token: function() { return _.isUndefined($cookies.get('token')) ?'' :$cookies.get('token'); }, sesskey: function(sees) { var user = _.isUndefined(store.get('user')) ? {} : store.get('user'); if(sess!=undefined) { user.sesskey = sess; store.set('user'); } return user.sesskey; }, enrol: function(course) { var deferred = $q.defer(); var postdata = {}; postdata['program'] = program.key(); //console.log(postdata) $http.post(baseUrl + '/enrol/' + course , postdata, { headers: { 'Authorization': 'Bearer ' + this.token(), }, }).then(function(response) { deferred.resolve(response.data) }); return deferred.promise; }, activity: function(course, outline, module) { var postdata = {}; // postdata['program'] = program.key(); postdata['outline'] = outline; postdata['module'] = module; //console.log(postdata) $http.post(baseUrl + '/activity/' + course , postdata, { headers: { 'Authorization': 'Bearer ' + this.token(), }, }).then(function(response) { }) }, // lrsConnect: function(code) { // var deferred = $q.defer(); // $http.get(baseUrl + '/lrs/' + code, { // headers: { // 'Authorization': 'Bearer ' + this.token(), // }, // }).then(function(response) { // var userdata = response.data; // // console.log(userdata) // var endpoint = userdata.lrs.url+'/login/token.php?'; // var params = 'username='+userdata.username+'&password='+userdata.password+'&service=moodle_mobile_app'; // var config = {withCredentials: true, origin:true}; // // console.log(endpoint + params) // deferred.resolve({lrsid:userdata.lrsid, lrs:userdata.lrs, sess:$http.get(endpoint + params, config)}); // }) // return deferred.promise; // }, // lrsDisconnect: function(lrs) { // var deferred = $q.defer(); // // console.log(lrs) // var endpoint = lrs.url+'/login/logout.php?'; // var params = 'sesskey='+lrs.token; // var config = {withCredentials: true, origin:true}; // // console.log(endpoint + params) // deferred.resolve($http.get(endpoint + params, config)); // return deferred.promise; // }, completion: function(course, activity) { var deferred = $q.defer(); // console.log(baseUrl+'/completion/'+course+'/'+activity) $http.get(baseUrl+'/completion/'+course+'/'+activity, { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { // console.log(response.data); deferred.resolve(response.data); }); return deferred.promise; }, progress: function(course) { var deferred = $q.defer(); $http.get(baseUrl+'/progress/'+course, { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { // console.log(response.data); deferred.resolve(response.data); }) return deferred.promise; }, certificate: function(code) { if(_.isUndefined(code)) return _.isUndefined(store.get('certificate')) ?'' :store.get('certificate'); // console.log(code) store.set('certificate', code); }, certificated: function(certcode) { var deferred = $q.defer(); $http.get(serviceUrl + '/certificate/issued/'+certcode).then(function(response) { // console.log(response.data); deferred.resolve(response.data); }); return deferred.promise; }, courses: function() { var deferred = $q.defer(); $http.get(baseUrl + '/courses', { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { // console.log(response.data); deferred.resolve(response.data); }) return deferred.promise; }, profile: function(postdata) { var deferred = $q.defer(); if(postdata) { $http.post(baseUrl + '/profile', postdata, { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { //console.log(response.data); deferred.resolve(response.data); }); } else { $http.get(baseUrl + '/profile', { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { //console.log(response.data); deferred.resolve(response.data); }); } return deferred.promise; }, avatar: function(formdata, type) { var deferred = $q.defer(); if(formdata) { $http.post(baseUrl + '/avatar', formdata, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + this.token(), 'Content-Type': undefined } }).then(function(response) { //console.log(response.data); deferred.resolve(response.data); }); } else { $http.get(baseUrl + '/avatar/' + type, { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { //console.log(response.data); deferred.resolve(response.data); }); } return deferred.promise; }, changepassword: function(password) { var deferred = $q.defer(); $http.get(serviceUrl + '/sso/authorize/changepasswd', { headers: { 'Authorization': 'Basic ' + btoa(this.token()+':'+password), }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); // return deferred.promise; } } }) .factory('course', function($q, $http, $window, $location, user) { // var baseUrl = '//cms.promptskill.com/restapi/course'; // var _baseUrl = '//lms.promptskill.com/restapi/course'; // return { state: function(code) { var deferred = $q.defer(); // var authorize = code; // console.log(user.token()) // console.log(baseUrl + '/state/'+code) $http.get(baseUrl + '/state/'+code, { headers: { 'Authorization': 'Bearer ' + user.token(), } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; }, apply: function(code, state) { //console.log(state) if(code !='') { if(state.code =='register') $window.location = '/register/'+code; else { // console.log(state) var activity = state.activity ? '/course/'+code+'/'+state.activity : '/course/'+code; if(state.learnerid==0) { if(state.code =='order') $window.location = '/enrol/'+code; else { user.enrol(code).then(function() { $window.location = activity; }); } } else { $window.location = activity; } } } } } }) .factory('promptskill', function($q, $http, $window, $location) { var baseUrl = '//lms.promptskill.com/restapi/promptskill'; const programUrl = '//lms.promptskill.com/restapi/program'; var key = $location.host().split('.')[0]; // return { info: function() { // console.log(key) var deferred = $q.defer(); $http.get(baseUrl + '/info', { headers: { "Authorization": 'Bearer ' } }).then(function(response) { program = response.data; // console.log(program) store.set('program', program); deferred.resolve(program); }); //} return deferred.promise; }, logo: function() { var program = _.isUndefined(store.get('program')) ? {} : store.get('program'); if(program !=undefined) return program.logo; }, page: function(name) { var deferred = $q.defer(); //console.log(this.key()) //console.log(baseUrl + '/page/'+name) $http.get(baseUrl + '/page/'+name, { // headers: { // "Authorization": 'Bearer ' // } }).then(function(response) { deferred.resolve(response.data) }); return deferred.promise; }, key: function() { if(key=='www'||key=='uat') return false; // var program = _.isUndefined(store.get('program')) ? {} : store.get('program'); if(program.program_id) return program.program_id // return key; }, language: function(locale) { var deferred = $q.defer(); $http.get(programUrl + '/language/' + locale, { headers: { 'Authorization': 'Bearer ' + this.key(), }, }).then(function(response) { // console.log(response.data) deferred.resolve(response.data) }); // return deferred.promise; } } }) .factory('program', function($q, $http, $window, $location) { // var baseUrl = '//lms.promptskill.com/restapi/program'; var moduleUrl = '//services.promptskill.com/app/program/module'; var key = $location.host().split('.')[0]; return { domain: function() { return $location.host(); }, module: function() { return moduleUrl; }, id: function() { var program = _.isUndefined(store.get('program')) ? {} : store.get('program'); if(program.program_id) return program.program_id; // return false; }, key: function() { if(key=='www'||key=='uat') return false; // var program = _.isUndefined(store.get('program')) ? {} : store.get('program'); if(program.program_id) return program.program_id // return key; }, info: function(key) { var program = _.isUndefined(store.get('program')) ? {} : store.get('program'); var deferred = $q.defer(); $http.get(baseUrl + '/info', { headers: { "Authorization": 'Bearer ' + key } }).then(function(response) { program = response.data; // console.log(program) store.set('program', program); deferred.resolve(program); }); return deferred.promise; }, logo: function() { var program = _.isUndefined(store.get('program')) ? {} : store.get('program'); if(program !=undefined) return program.logo; }, page: function(name) { var deferred = $q.defer(); //console.log(this.key()) //console.log(baseUrl + '/page/'+name) $http.get(baseUrl + '/page/'+name, { headers: { "Authorization": 'Bearer ' + this.key() } }).then(function(response) { deferred.resolve(response.data) }); return deferred.promise; }, state: function(type) { var deferred = $q.defer(); // var postdata = {}; // postdata['program'] = program.key(); // console.log(this.key()) $http.get(baseUrl + '/state/' + type, { headers: { 'Authorization': 'Bearer ' + this.key(), }, }).then(function(response) { deferred.resolve(response.data) }); // return deferred.promise; }, language: function(locale) { var deferred = $q.defer(); // var postdata = {}; // postdata['program'] = program.key(); // console.log(baseUrl + '/language/' + locale) $http.get(baseUrl + '/language/' + locale, { headers: { 'Authorization': 'Bearer ' + this.key(), }, }).then(function(response) { // console.log(response.data) deferred.resolve(response.data) }); // return deferred.promise; } } }) .factory('alerts', function($interval) { var alerts = undefined; if (!window.alertsInterval) { window.alertsInterval = $interval(function() { var alive = []; _.forEach(alerts, function(alert) { if (!moment().isAfter(moment(alert.timestamp).add(5, 'seconds'))) { alive.push(alert); } }); alerts = alive; store.set('alerts', alerts); }, 1000); } return { clear: function() { store.set('alerts', []); }, get: function() { if (_.isUndefined(alerts)) { alerts = store.get('alerts'); } if (_.isEmpty(alerts)) { alerts = []; } return alerts; }, set: function(val) { alerts = val; store.set('alerts', alerts); }, success: function(msg) { alerts.push({id: Math.random().toString(16), success: msg, timestamp: new Date().getTime()}); store.set('alerts', alerts); }, fail: function(msg) { alerts.push({id: Math.random().toString(16), danger: msg, timestamp: new Date().getTime()}); store.set('alerts', alerts); } }; }) .service("sqlDate", function() { // this.date = function(sqlDate) { // var datetime = sqlDate.replace(" ", "T").split("T") var dates = datetime[0].split("-") var times = datetime[1].substring(0, 8).split(":") // var date = new Date(dates[0], parseInt(dates[1])-1, dates[2]) var time = new Date(1970, 0, 1, times[0], times[1], times[2]) datetime[0] = date; datetime[1] = time; // return datetime } this.budha = function(year) { // return (year + 543) } }) .service('analyticsHandler', function ($rootScope, $window) { //console.log('analyticsHandler'); angular.element(document).ready(function () { console.log('element(document).ready'); (function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })($window, document, 'script', 'tm', 'GTM-5GH3ZM9'); //note: I've changed original code to use $window instead of window }); // set user details $rootScope.$on("analyticalDataRetrieved", function (userDetails) { console.log('analyticalDataRetrieved'); if ($window.tm) { $window.tm.push( { 'a': userDetails.Age, 'm': userDetails.MemberType }); } }); $rootScope.$on('$routeChangeSuccess', function (event) { //console.log('$routeChangeSuccess'); if ($window.tm) { // this is an example I found around there using Google Analytics (ga), need to find out how to do it with GTM: //$window.ga('send', 'pageview', { page: $window.location.pathname }); } }); // Note: event is used to trigger the GoogleTagManager tracker, but its value is not sent to the server. // rest of values are sent to server as category, action, label (there's also value if we need it) // ec -> category, ea -> action, el -> label $rootScope.$on('upgradeMembershipClicked', function (event, data) { //console.log('upgradeMembershipClicked'); if ($window.tm) { $window.tm.push({ event: 'Paywall', ec: 'Paywall', ea: 'Click', el: data.gtmLabel }); } }); })