/* global _ angular store moment */ 'use strict'; angular.module('Client.services', []) .factory('member', function($q, $http, $window, $location, $cookies, client, user) { // var memberUrl = '/restful/member'; var serviceUrl = '/service'; // return { center: function(service) { if(!_.isUndefined(service)) return serviceUrl+'/'+service; return; }, clear: function(reload) { store.set('token', ''); store.remove('rtoken'); store.remove('user'); store.remove('avatar'); // if(reload) $window.location.reload(); }, /* token: function() { return _.isUndefined(store.get('token')) ?null :store.get('token'); }, */ authorized: function() { var token = (_.isUndefined(store.get('token'))||_.isEmpty(store.get('token'))) ?$location.hash() :store.get('token'); var deferred = $q.defer(); //console.log(serviceUrl + '/authorize/token') if(token =='') { deferred.resolve(false); } // console.log($cookies.get('PHPSESSID')) $http.post(serviceUrl + '/authorize/token', {sessid: $cookies.get('PHPSESSID')}, { headers: { "Authorization": 'Bearer ' + token } }).then(function(response) { if(response.data) { store.set('token', token); // console.log(response.data) if(response.data.permission==undefined) { if(!response.data.session) { user.clear(); // $window.location.reload(); $window.location.href = '/signin'; } } if(response.data.err) { user.clear(); } } deferred.resolve(response.data); }); //} return deferred.promise; }, signup: function(postdata) { var deferred = $q.defer(); //console.log(postdata) var username = postdata['username']; //delete postdata['username']; var password = postdata['password']; delete postdata['password']; delete postdata['confirm_password']; // $http.post(serviceUrl + '/authorize/signup', postdata, { headers: { 'Authorization': 'Basic ' + btoa(username+':'+password), }, }).then(function(response) { //console.log(response); deferred.resolve(response.data) }); // return deferred.promise; }, getemail: function(id_card, passwd) { var deferred = $q.defer(); $http.get(serviceUrl + '/authorize/get_email', { headers: { 'Authorization': 'Basic ' + btoa(id_card+':'+passwd), }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); return deferred.promise; }, valid: function(email) { var deferred = $q.defer(); $http.get(serviceUrl + '/authorize/valid', { headers: { 'Authorization': 'Basic ' + btoa(email+':'), }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); return deferred.promise; }, signin: function(forminput) { var deferred = $q.defer(); var postdata = {}; angular.forEach(forminput, function(input) { var $input = angular.element(input); //console.log($input.attr('name')) console.log($input.val()); postdata[$input.attr('name')] = $input.val(); }); postdata['sessid'] = $cookies.get('PHPSESSID'); // console.log(postdata) var username = postdata['username']; delete postdata['username']; var password = postdata['password']; delete postdata['password']; // $http.post(serviceUrl + '/authorize/signin', postdata, { headers: { 'Authorization': 'Basic ' + btoa(username+':'+password), }, }).then(function(response) { // client.logged(); // console.log(response.data) //store.set('member', response.data); store.set('rtoken', response.data.rtoken); deferred.resolve(response.data) }); // return deferred.promise; }, password: function(email) { var deferred = $q.defer(); //console.log(email) //console.log(program.key()) $http.get(serviceUrl + '/authorize/passwd', { 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(serviceUrl + '/authorize/resetpasswd', { headers: { 'Authorization': 'Basic ' + btoa(email+':'+password), }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); // return deferred.promise; }, changepassword: function(password) { var deferred = $q.defer(); //console.log(email) $http.get(serviceUrl + '/authorize/changepasswd', { headers: { 'Authorization': 'Basic ' + btoa(email+':'+password), }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); // return deferred.promise; }, 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); }, address: function() { var deferred = $q.defer(); var serviceUrl = '/resource/thai_address.json' $http.get(serviceUrl, { headers: { "Authorization": 'Bearer ' + client.key() } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; } } }) .factory('client', function($q, $http, $window, $location, $cookies) { // var baseUrl = '/restful/client'; var key = '21a77491-a187-47f8-bede-9524cd50d2b8'; return { domain: function() { return $location.host(); }, key: function() { if(key=='www'||key=='uat') return false; // var client = _.isUndefined(store.get('client')) ? {} : store.get('client'); if(client.client_id) return client.client_id // return key; }, info: function(type) { var client = _.isUndefined(store.get('client')) ? {} : store.get('client'); var deferred = $q.defer(); // $http.get(baseUrl + '/info', { headers: { "Authorization": 'Bearer ' + key } }).then(function(response) { client = response.data; //console.log(client) store.set('client', client); deferred.resolve(client); }); // return deferred.promise; }, logo: function() { var client = _.isUndefined(store.get('client')) ? {} : store.get('client'); if(client !=undefined) return client.logo; }, resource: function() { var client = _.isUndefined(store.get('client')) ? {} : store.get('client'); if(client !=undefined) return client.resource; }, banner: function() { var deferred = $q.defer(); var uri = '/banner'; $http.get(baseUrl + uri, { headers: { "Authorization": 'Bearer ' + this.key() } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); return deferred.promise; }, highlight: function() { var deferred = $q.defer(); var uri = '/highlight'; $http.get(baseUrl + uri, { headers: { "Authorization": 'Bearer ' + this.key() } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); return deferred.promise; }, recommend: function() { var deferred = $q.defer(); var uri = '/recommend'; $http.get(baseUrl + uri, { headers: { "Authorization": 'Bearer ' + this.key() } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); return deferred.promise; }, category: function(name) { var deferred = $q.defer(); //console.log(this.key()) var uri = '/category'; if(!_.isUndefined(name)) uri += '/' + name; $http.get(baseUrl + uri, { headers: { "Authorization": 'Bearer ' + this.key() } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }) return deferred.promise; }, faq: function() { var deferred = $q.defer(); var uri = '/faq'; $http.get(baseUrl + uri, { headers: { "Authorization": 'Bearer ' + this.key() } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); return deferred.promise; }, learn: function() { var deferred = $q.defer(); var uri = '/learn'; $http.get(baseUrl + uri, { headers: { "Authorization": 'Bearer ' + this.key() } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); return deferred.promise; }, news: function(news_id) { var deferred = $q.defer(); //console.log(this.key()) var uri = '/news'; var query = {} if(!_.isUndefined(news_id)) query['news_id'] = news_id; $http.get(baseUrl + uri, { headers: { "Authorization": 'Bearer ' + this.key() }, params: query }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }) return deferred.promise; }, page: function(name) { var deferred = $q.defer(); //console.log(this.key()) var page = '/page'; if(!_.isUndefined(name)) page +=name; //console.log(page) /* $http.get(baseUrl + page, { headers: { "Authorization": 'Bearer ' + this.key() } }).then(function(response) { deferred.resolve(response.data) }); */ return deferred.promise; }, video: function(video_id) { var deferred = $q.defer(); //console.log(this.key()) var uri = '/dbdvideo'; var query = {} if(!_.isUndefined(video_id)) query['video_id'] = video_id; $http.get(baseUrl + uri, { headers: { "Authorization": 'Bearer ' + this.key() }, params: query }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }) return deferred.promise; }, tip: function(tip_id) { var deferred = $q.defer(); //console.log(this.key()) var uri = '/tip'; var query = {} if(!_.isUndefined(tip_id)) query['tip_id'] = tip_id; $http.get(baseUrl + uri, { headers: { "Authorization": 'Bearer ' + this.key() }, params: query }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }) return deferred.promise; }, instructor: function(instructor_id) { var deferred = $q.defer(); //console.log(this.key()) var uri = '/instructor'; var query = {} if(!_.isUndefined(instructor_id)) query['instructor_id'] = instructor_id; $http.get(baseUrl + uri, { headers: { "Authorization": 'Bearer ' + this.key() }, params: query }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }) return deferred.promise; }, logged: function() { $http.get("https://api.ipify.org?format=json").then(function (response) { // console.log($cookies.get('PHPSESSID')) var logged = {}; var token = !_.isUndefined(store.get('token')) ?store.get('token') :''; //response.data.ip; // if($window.navigator.userAgent !='GuzzleHttp/7') { // logged['sessionid'] = $cookies.get('PHPSESSID'); logged['ip'] = response.data.ip; logged['agent'] = $window.navigator.appVersion; logged['referrer'] = $window.location.pathname; // logged['device'] = $window.navigator.platform; // update logged // console.log(logged) $http.post(baseUrl + '/logged', logged, { headers: { "Authorization": 'Bearer ' + token } }).then(function(response) { console.log(response.data) }); // } }); } } }) .factory('program', function($q, $http, $window, $location) { // var baseUrl = '//lms.promptskill.com/restapi/program'; var key = $location.host().split('.')[0]; return { domain: function() { return $location.host(); }, key: function() { if(key=='www'||key=='uat') return false; // var info = _.isUndefined(store.get('program')) ? {} : store.get('program'); if(info.program_id) return info.program_id // return key; }, info: function(course) { var program = _.isUndefined(store.get('program')) ? {} : store.get('program'); var deferred = $q.defer(); //if(program !=undefined) { //console.log(program) //if(program.domain ===key) { // deferred.resolve(program); //} //} else deferred.resolve(key); //console.log(program.program_id); //if(_.isUndefined(program.program_id)) { $http.get(baseUrl + '/course', { headers: { "Authorization": 'Bearer ' + course.code } }).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; } } }) .factory('course', function($q, $http, $window, $location, client, user) { // var baseUrl = '/restful/course'; return { // info: function(code) { var deferred = $q.defer(); // $http.get(baseUrl + '/info/' + code, { "Authorization": 'Bearer ' + client.key() }).then(function(response) { deferred.resolve(response.data) }) return deferred.promise; }, content: function(course) { //console.log(course) var deferred = $q.defer(); $http.post(baseUrl + '/content/' + course.code, course, { headers: { "Authorization": 'Bearer ' + user.token() } }).then(function(response) { if(course.outline =='review') { // console.log(response.data) $location.path(response.data); } //console.log(response.data) deferred.resolve(response.data) }).catch(function(response) { //console.log(response) $location.path(response.data); }); return deferred.promise; }, outline: function(code) { var deferred = $q.defer(); //console.log(baseUrl + '/outline/' + code) $http.get(baseUrl + '/outline/' + code, { headers: { "Authorization": 'Bearer ' + user.token() } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); return deferred.promise; }, state: function(code) { var deferred = $q.defer(); var authorize = code; //console.log(user.token()) $http.get(baseUrl + '/state/'+code, { headers: { 'Authorization': 'Bearer ' + user.token(), } }).then(function(response) { console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; }, navigator: function(activity) { var deferred = $q.defer(); // console.log(baseUrl + '/navigation') $http.post(baseUrl + '/navigation', activity, { headers: { 'Authorization': 'Bearer ' + user.token(), } }).then(function(response) { // console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; }, apply: function(code, state) { if(code !='') { //console.log(state) //if(state.code =='register') $window.location = '/register/'+code; //else { var activity = '/course/'+code;//+'/'+state.activity; //if(state.activity !=undefined) activity += '/'+state.activity; console.log(activity) if(state.learnerid==0) { if(state.code =='enrol') { user.enrol(code).then(function() { console.log(activity) $window.location = activity; }); } $location.path(activity); } else { $window.location = activity + '/' + state.activity; } //} } }, completion: function(code) { var deferred = $q.defer(); //console.log(baseUrl+'/completion/'+course+'/'+activity) $http.get(baseUrl+'/completion/'+code, { headers: { 'Authorization': 'Bearer ' + user.token(), } }).then(function(response) { // deferred.resolve(response.data); }); return deferred.promise; }, certificate: function(code) { var deferred = $q.defer(); //console.log(user.token()); //console.log(baseUrl+'/certificate/'+code) $http.get(baseUrl+'/certificate/'+code, { headers: { 'Authorization': 'Bearer ' + user.token(), } }).then(function(response) { // console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; }, certificated: function(code, certificated) { var deferred = $q.defer(); if(_.isUndefined(certificated)) { $http.get(baseUrl+'/certificated/'+code, { headers: { 'Authorization': 'Bearer ' + user.token(), } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); } else { //console.log(certificated) $http.post(baseUrl+'/certificated/'+code, certificated, { headers: { 'Authorization': 'Bearer ' + user.token(), } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); } return deferred.promise; } } }) .factory('learner', function($q, $http, $window, $location, client, $cookies) { // var baseUrl = '/restful/learner'; var serviceUrl = '/service'; return { token: function() { return _.isUndefined(store.get('token')) ?'' :store.get('token'); }, activity: function(course, outline, module) { var postdata = {}; postdata['program'] = client.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(); //console.log(this.token()) $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}; // deferred.resolve({lrs:userdata.lrs, sess:$http.get(endpoint + params, config)}); }) return deferred.promise; }, lrsDisconnect: function() { var deferred = $q.defer(); var endpoint = 'https://dbd-lrs.promptskill.com/logout.php?'; var params = 'sesskey='+user.sesskey(); var config = {withCredentials: true}; 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; }, completed: function(course, activity) { var deferred = $q.defer(); // console.log(baseUrl+'/completed/'+course+'/'+activity) $http.get(baseUrl+'/completed/'+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) { var deferred = $q.defer(); if(_.isUndefined(code)) return _.isUndefined(store.get('certificate')) ?'' :store.get('certificate'); //console.log(code) store.set('certificate', code); return deferred.promise; }, */ certificated: function(code) { var deferred = $q.defer(); // $http.post(serviceUrl + '/certificate/info/'+code, {}, { headers: { 'Authorization': 'Bearer ' + client.key(), }, }).then(function(response) { //console.log(response.data); deferred.resolve(response.data); }); return deferred.promise; }, videolog: function(id){ var deferred = $q.defer(); // $http.post(baseUrl + '/videolog/' + id, {ip: $cookies.get('ip')}, { headers: { 'Authorization': 'Bearer ' + this.token(), }, }).then(function(response) { // console.log(response.data); deferred.resolve(response.data); }); return deferred.promise; } } }) .factory('user', function($q, $http, $window, $location, client) { // //var baseUrl = '//cms.promptskill.com/restapi/user'; var baseUrl = '/restful/user'; var serviceUrl = '/service'; return { clear: function() { store.set('user', {}); store.set('token', ''); // //store.remove('rtoken'); //store.remove('user'); //store.remove('avatar'); // //$window.location.reload(); //store.destroy(); }, token: function() { return _.isUndefined(store.get('token')) ?'' :store.get('token'); }, avatar: function(type) { var deferred = $q.defer(); // var avatar = _.isUndefined(store.get('avatar')) ?'' :store.get('avatar') //if(avatar && _.isUndefined(type)) { //deferred.resolve(avatar); //} else { var uri = '/avatar'; if(type) uri += '/' + type; //console.log(baseUrl + uri) // console.log(this.token()) $http.get(baseUrl + uri, { headers: { "Authorization": 'Bearer ' + this.token() } }).then(function(response) { //if(_.isUndefined(type)) //store.set('avatar', response.data); // deferred.resolve(response.data); }); //} return deferred.promise; }, signout: function() { var deferred = $q.defer(); // $http.get(serviceUrl + '/authorize/signout', { headers: { 'Authorization': 'Basic ' + btoa(this.token()+':'), }, }).then(function(response) { //console.log(response.data) this.clear(); $window.location.href = '/'; deferred.resolve(response.data) }); // return deferred.promise; }, changepassword: function(password) { var deferred = $q.defer(); // $http.get(serviceUrl + '/authorize/changepasswd', { headers: { 'Authorization': 'Basic ' + btoa(this.token()+':'+password), }, }).then(function(response) { // console.log(response.data) store.set('user', {}); store.set('token', ''); $window.location.href = '/'; deferred.resolve(response.data) }); // return deferred.promise; }, enrol: function(course) { var deferred = $q.defer(); var postdata = {}; postdata['program'] = client.key(); //console.log(baseUrl + '/enrol/' + course); console.log(postdata) $http.post(baseUrl + '/enrol/' + course , postdata, { headers: { 'Authorization': 'Bearer ' + this.token(), }, }).then(function(response) { deferred.resolve(null) }); return deferred.promise; }, activity: function(course, outline, module) { var postdata = {}; postdata['program'] = client.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(); //console.log(this.token()) $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}; // deferred.resolve({lrs:userdata.lrs, sess:$http.get(endpoint + params, config)}); }) return deferred.promise; }, */ lrsDisconnect: function() { var deferred = $q.defer(); var endpoint = 'https://dbd-lrs.promptskill.com/logout.php?'; var params = 'sesskey='+user.sesskey(); var config = {withCredentials: true}; 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; }, /* user dashboard */ courses: function() { var deferred = $q.defer(); //console.log(this.token()) $http.get(baseUrl+'/courses', { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { // console.log(response.data); deferred.resolve(response.data); }) return deferred.promise; }, learner: function() { var deferred = $q.defer(); //console.log(this.token()) $http.get(baseUrl+'/learner', { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { // console.log(response.data); deferred.resolve(response.data); }) return deferred.promise; }, completed: function() { var deferred = $q.defer(); //console.log(this.token()) $http.get(baseUrl+'/completed', { headers: { 'Authorization': 'Bearer ' + this.token(), } }).then(function(response) { //console.log(response.data); deferred.resolve(response.data); }) return deferred.promise; }, podclass: function() { var deferred = $q.defer(); //console.log(this.token()) $http.get(baseUrl+'/podclass', { 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(); //console.log(this.token()) 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; }, photo: function(formdata) { var deferred = $q.defer(); //console.log(this.token()) // $http.post(baseUrl + '/photo', formdata, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + this.token(), 'Content-Type': undefined } }).then(function(response) { //console.log(response.data) store.set('avatar', response.data.avatar); deferred.resolve(response.data); }); return deferred.promise; }, changeInfo: function(data, formdata) { var deferred = $q.defer(); var token = this.token(); //console.log(this.token()) // $http.post(baseUrl + '/file', formdata, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + token, 'Content-Type': undefined } }).then(function(response) { //console.log(token) if(response.data) { data['file'] = response.data.file; //console.log(baseUrl + '/changeInfo') //console.log(data) $http.post(baseUrl + '/changeInfo', data, { headers: { 'Authorization': 'Bearer ' + token } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); } else { deferred.resolve(response.data); } //store.set('avatar', response.data.avatar); }); 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) { 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) { 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) { if ($window.tm) { $window.tm.push({ event: 'Paywall', ec: 'Paywall', ea: 'Click', el: data.gtmLabel }); } }); })