/* global _ angular store moment */ 'use strict'; angular.module('DinsorApp.services', []) .factory('member', function($q, $http, $window, $location) { // //var memberUrl = '//services.promptskill.com'; var memberUrl = '/sso'; return { clear: function() { store.set('token', ''); }, token: function() { return !_.isUndefined(store.get('token')) ?store.get('token') :''; }, sso: function() { return !_.isUndefined(store.get('sso')) ?store.get('sso') :''; }, authorized: function() { var token = (_.isUndefined(store.get('token'))||_.isEmpty(store.get('token'))) ?$location.hash() :store.get('token'); var deferred = $q.defer(); //console.log(token) if(token) { $http.post(memberUrl + '/authorize/token', {}, { headers: {"Authorization": 'Bearer ' + token} }).then(function(response) { store.set('token', token); //console.log(response.data) deferred.resolve(response.data); }); } else deferred.resolve(false); // 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(memberUrl + '/authorize/signup', postdata, { headers: { 'Authorization': 'Basic ' + btoa(username+':'+password), }, }).then(function(response) { //console.log(response); 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')) postdata[$input.attr('name')] = $input.val(); }); //console.log(postdata); var username = postdata['username']; delete postdata['username']; var password = postdata['password']; delete postdata['password']; console.log(postdata); $http.post(memberUrl + '/authorize/signin', postdata, { headers: { 'Authorization': 'Basic ' + btoa(username+':'+password), }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); // return deferred.promise; }, passwd: function(passwd, change) { var deferred = $q.defer(); if(change) { $http.post(memberUrl + '/sso/authorize/passwd', {}, { headers: { 'Authorization': 'Basic ' + btoa(this.token()+':'+passwd), }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); } else { $http.get(memberUrl + '/sso/authorize/passwd', { headers: { 'Authorization': 'Basic ' + btoa(this.token()+':'+passwd), }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); } // return deferred.promise; }, password: function(email) { var deferred = $q.defer(); //console.log(email) //console.log(program.key()) $http.get(memberUrl + '/sso/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(memberUrl + '/sso/authorize/resetpasswd', { headers: { 'Authorization': 'Basic ' + btoa(email+':'+password), }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); // return deferred.promise; }, /* registration: function(formregister, uuid) { var deferred = $q.defer(); var postdata = {}; angular.forEach(formregister, function(input) { var $input = angular.element(input); //console.log($input.attr('name')) if($input.attr('name')!=undefined) { switch($input.attr('type')) { case 'radio': if($input.is(':checked')) { postdata[$input.attr('name')] = $input.val(); } break; default: postdata[$input.attr('name')] = $input.val(); } } }); delete postdata['file']; //console.log(postdata) // $http.post(memberUrl + '/restapi/registration/program', postdata, { headers: { //'Authorization': 'Basic ' + btoa(program.key()+':'+uuid), }, }).then(function(response) { //console.log(response.data) deferred.resolve(response.data) }); return deferred.promise; }, */ photo: function(formdata, id) { var deferred = $q.defer(); //console.log(userpath + '/photo') $http.post(memberUrl + '/restapi/registration/upload/'+id, formdata, { transformRequest: angular.identity, headers: { //'Authorization': 'Basic ' + btoa(program.key()+':'), 'Content-Type': undefined } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; } } }) .factory('user', function($q, $http, $window, $location) { // var apikey = 'RSlFKu7tArWPu1eSru6yKebBsFdQB1Baef28bmBGoNxvFiAcN9'; var baseApi = '/admin/api'; var buyerUrl = '/admin/api/buyer'; //var serviceUrl = '//services.promptskill.com/restapi'; return { clear: function() { store.set('user', {}); store.set('token', ''); //store.destroy(); }, token: function() { return _.isUndefined(store.get('token')) ?null :store.get('token'); }, profile: function(uuid, profile) { var deferred = $q.defer(); if(profile) { var postdata = {}; postdata['profile'] = profile; $http.post(buyerUrl + '/profile/'+uuid, postdata, { //transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + apikey, //'Content-Type': 'application/json' } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); } else { $http.get(buyerUrl + '/profile/'+uuid, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + apikey, 'Content-Type': 'application/json' } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); } return deferred.promise; }, inquiry: function(uuid) { var deferred = $q.defer(); $http.get(buyerUrl + '/enquiry/'+uuid, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + apikey, 'Content-Type': 'application/json' } }).then(function(response) { console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; }, enquiry: function(formdata, id) { var deferred = $q.defer(); var postdata = {}; postdata['enquiry'] = formdata; $http.post(buyerUrl + '/enquiry/'+id, postdata, { //transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + apikey, //'Content-Type': 'application/json' } }).then(function(response) { console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; } } }) .factory('app', function($q, $http, $window, $location) { // var apikey = 'RSlFKu7tArWPu1eSru6yKebBsFdQB1Baef28bmBGoNxvFiAcN9'; var baseApi = '/admin/api'; var serviceApi = '/service'; var language = 'th'; return { mockup: function() { var deferred = $q.defer(); var resourceUrl = '/resource/mockup.json' $http.get(resourceUrl, { headers: { } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; }, form: function(id) { var deferred = $q.defer(); $http.get(serviceApi + '/forms/'+id, { /* transformRequest: angular.identity, headers: { //'Authorization': 'Basic ' + btoa(program.key()+':'), 'Content-Type': undefined } */ }).then(function(response) { console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; }, form_apply: function(id, formdata) { var deferred = $q.defer(); var postdata = {}; postdata['form_fields'] = formdata; console.log(postdata) $http.post(serviceApi + '/forms/'+id, postdata, { /* transformRequest: angular.identity, headers: { //'Authorization': 'Basic ' + btoa(program.key()+':'), 'Content-Type': undefined } */ }).then(function(response) { console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; }, country: function() { var deferred = $q.defer(); var resourceUrl = '/resource/countries.json' $http.get(resourceUrl, { headers: { } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; }, provinces: function() { var deferred = $q.defer(); var resourceUrl = '/resource/provinces.json' $http.get(resourceUrl, { headers: { } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); return deferred.promise; }, feature: function() { var deferred = $q.defer(); // $http.get(baseApi + '/feature', { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + apikey, 'Content-Type': 'application/json' } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); // return deferred.promise; }, creative: function() { var deferred = $q.defer(); // $http.get(baseApi + '/creative', { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + apikey, 'Content-Type': 'application/json' } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); // return deferred.promise; }, seller: function(id) { var deferred = $q.defer(); // $http.get(baseApi + '/creative/seller/'+id, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + apikey, 'Content-Type': 'application/json' } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); // return deferred.promise; }, creator: function(id) { var deferred = $q.defer(); // var uri = '/creators'; if(id) uri = '/creator/' + id; $http.get(baseApi + uri, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + apikey, 'Content-Type': 'application/json' } }).then(function(response) { console.log(response.data) deferred.resolve(response.data); }); // return deferred.promise; }, article: function(id) { var deferred = $q.defer(); // var uri = '/articles'; if(id) uri = '/article/' + id; $http.get(baseApi + uri, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + apikey, 'Content-Type': 'application/json' } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); // return deferred.promise; }, happening: function(id) { var deferred = $q.defer(); // var uri = '/happenings'; if(id) uri = '/happening/' + id; $http.get(baseApi + uri, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + apikey, 'Content-Type': 'application/json' } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); // return deferred.promise; }, enquiry: function(id) { var deferred = $q.defer(); // var uri = '/enquiries'; if(id) uri = '/enquiry/' + id; $http.get(baseApi + uri, { transformRequest: angular.identity, headers: { 'Authorization': 'Bearer ' + apikey, 'Content-Type': 'application/json' } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); // return deferred.promise; } } }) .factory('seller', function($q, $http, $window, $location) { var apikey = 'RSlFKu7tArWPu1eSru6yKebBsFdQB1Baef28bmBGoNxvFiAcN9'; var baseApi = '/service/seller'; var language = 'th'; return { clear: function() { var deferred = $q.defer(); $http.get(baseApi + '/unauthorize', { transformRequest: angular.identity, headers: { 'Content-Type': 'application/json' } }).then(function(response) { //console.log(response.data) // if(response.data.user_id !=undefined) store.set('seller', {}); deferred.resolve(response.data); //deferred.resolve(user) }); return deferred.promise; }, logout: function() { var deferred = $q.defer(); deferred.resolve('clear'); return deferred.promise; }, authorized: function() { var deferred = $q.defer(); $http.get(baseApi + '/authorized', { transformRequest: angular.identity, headers: { 'Content-Type': 'application/json' } }).then(function(response) { // console.log(response.data) if(response.data !=undefined) store.set('seller', response.data); deferred.resolve(response.data); //deferred.resolve(user) }); return deferred.promise; }, info: function(id) { var deferred = $q.defer(); // $http.get(baseApi + '/info/' + id, { transformRequest: angular.identity, headers: { // 'Authorization': 'Bearer ' + apikey, 'Content-Type': 'application/json' } }).then(function(response) { //console.log(response.data) deferred.resolve(response.data); }); // return deferred.promise; }, company: function(formdata) { var deferred = $q.defer(); $http.post(baseApi + '/create', formdata, { transformRequest: angular.identity, headers: { 'Content-Type': undefined } }).then(function(response) { // console.log(response.data) // if(response.data.user_id !=undefined) // store.set('seller', response.data); deferred.resolve(response.data); //deferred.resolve(user) }); return deferred.promise; }, update: function(formdata) { var deferred = $q.defer(); $http.post(baseApi + '/update', formdata, { transformRequest: angular.identity, headers: { 'Content-Type': undefined } }).then(function(response) { // console.log(response.data) // if(response.data.user_id !=undefined) // store.set('seller', response.data); deferred.resolve(response.data); //deferred.resolve(user) }); return deferred.promise; }, portfolio_delete: function(id) { var deferred = $q.defer(); // $http.get(baseApi + '/port_delete/' + id, { transformRequest: angular.identity, headers: { // 'Authorization': 'Bearer ' + apikey, 'Content-Type': 'application/json' } }).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) { 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 }); } }); })