{"version":3,"sources":["build/build.js"],"names":[],"mappings":"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","sourcesContent":["(function () {\r\n \"use strict\";\r\n\r\n //$.ajax({\r\n // url: 'settings.json', dataType: 'json', async: false, success: function (settings) {\r\n // window._settings = settings;\r\n // }\r\n //});\r\n\r\n\r\n\r\n\r\n window._base = {\r\n extendDeep: function extendDeep(dst) {\r\n angular.forEach(arguments, function (obj) {\r\n if (obj !== dst) {\r\n angular.forEach(obj, function (value, key) {\r\n if (dst[key] && dst[key].constructor && dst[key].constructor === Object) {\r\n extendDeep(dst[key], value);\r\n } else {\r\n dst[key] = value;\r\n }\r\n });\r\n }\r\n });\r\n return dst;\r\n },\r\n mobileAndTabletcheck: function () {\r\n var check = false;\r\n (\r\n function (a) {\r\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))\r\n || (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)) check = true\r\n })(navigator.userAgent || navigator.vendor || window.opera);\r\n return check;\r\n }\r\n }\r\n})();\r\n\nvar _gaq = _gaq || [];\r\n\r\n(function (window, angular) {\r\n 'use strict';\r\n\r\n var underscore = angular.module('underscore', []);\r\n underscore.factory('_', function () {\r\n return window._; // assumes underscore has already been loaded on the page\r\n });\r\n\r\n\r\n\r\n angular.\r\n module(\"digitalWallet\", ['ionic', 'ngRoute', 'serverConnection', 'underscore', 'jmdobry.angular-cache', 'ngPostMessage', 'Cal4U', 'calshtifomat', 'calceleb', 'calP2P', 'calFollowApp', 'digitalVouchers', 'calmail', 'blockCard', 'angucomplete-alt', 'onlineForms', 'paymentSpread', 'transferOrders', 'ngAnimate', 'toastr']);\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module('digitalWallet')\r\n .config(mainRoute)\r\n .run(mainConfig);\r\n\r\n mainRoute.$inject = ['$stateProvider', '$urlRouterProvider', '$httpProvider', '$angularCacheFactoryProvider', '$ionicConfigProvider', '$locationProvider', '$provide', 'WorkerProvider', 'toastrGlobalProvider'];\r\n\r\n function mainRoute($stateProvider, $urlRouterProvider, $httpProvider, $angularCacheFactoryProvider, $ionicConfigProvider, $locationProvider, $provide, WorkerProvider, toastrGlobalProvider) {\r\n\r\n toastrGlobalProvider.init();\r\n WorkerProvider.register();\r\n\r\n $locationProvider.hashPrefix('!');\r\n //$locationProvider.html5Mode(true);\r\n delete $httpProvider.defaults.headers.common[\"X-Requested-With\"];\r\n\r\n $angularCacheFactoryProvider.setCacheDefaults({\r\n capacity: 1000,\r\n storageMode: 'sessionStorage'\r\n });\r\n\r\n $ionicConfigProvider.views.swipeBackEnabled(false);\r\n\r\n //$httpProvider.interceptors.push('httpInterseptorService');\r\n\r\n $stateProvider\r\n .state('dw', {\r\n url: \"/digital\",\r\n abstract: true,\r\n templateUrl: \"cal-digital.html\",\r\n resolve: {\r\n sso: function ($q, accountService, lobbyUiService) {\r\n var defer = $q.defer();\r\n lobbyUiService.loader.show();\r\n accountService.loginSso().finally(function () {\r\n lobbyUiService.loader.hide();\r\n defer.resolve({ result: true });\r\n });\r\n\r\n return defer.promise;\r\n },\r\n multitab: function ($q, connection, appData, accountService, $timeout) {\r\n var defer = $q.defer();\r\n if (!connection.isLoggedIn() && !appData.BankAccounts) {\r\n accountService.login().finally(function () {\r\n defer.resolve();\r\n });\r\n }\r\n else {\r\n $timeout(function () {\r\n defer.resolve();\r\n })\r\n }\r\n\r\n return defer.promise;\r\n }\r\n }\r\n })\r\n .state('dw.lobby', {\r\n url: \"/lobby\",\r\n views: {\r\n 'contentBody': {\r\n controller: \"lobbyCtrl\",\r\n templateUrl: \"app/main/templates/envelope.html\"\r\n }\r\n },\r\n data: {\r\n module: 0,\r\n lobby: true\r\n }\r\n })\r\n // ***** authentication module pages\r\n // ****************************************************************\r\n .state('dw.login', {\r\n cache: false,\r\n url: \"/login/:nextPage/:type/:sso/:restricted/:takanonTouch/:command/:isOtpData/:query/:step/:fromCallVU\"/* touch: /:restricted/:takanonTouch */,\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/connect.html\",\r\n controller: \"connectCtrl\"\r\n }\r\n }\r\n })\r\n // *****\r\n // account module pages\r\n // ****************************************************************\r\n .state('dw.account-home', {\r\n url: \"/account\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/accountHome.html\",\r\n controller: \"lobbyCtrl\"\r\n }\r\n },\r\n data: {\r\n module: 1\r\n }\r\n })\r\n // *****\r\n // wallet module pages\r\n // ****************************************************************\r\n .state('dw.wallet-home', {\r\n url: \"/wallet\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/walletHome.html\",\r\n controller: \"lobbyCtrl\"\r\n }\r\n },\r\n data: {\r\n module: 4\r\n }\r\n })\r\n // *****\r\n // benefits module pages\r\n // ****************************************************************\r\n .state('dw.benefits-home', {\r\n url: \"/benefits\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/benefitsHome.html\",\r\n controller: \"lobbyCtrl\"\r\n }\r\n },\r\n data: {\r\n module: 3\r\n }\r\n })\r\n // *****\r\n // service module pages\r\n // ****************************************************************\r\n .state('dw.service-home', {\r\n url: \"/service\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/serviceHome.html\",\r\n controller: \"lobbyCtrl\"\r\n }\r\n },\r\n data: {\r\n module: 5\r\n }\r\n })\r\n .state('dw.generalActions-home', {\r\n url: \"/generalActions\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/generalActions.html\",\r\n controller: \"lobbyCtrl\"\r\n }\r\n },\r\n data: {\r\n module: 8\r\n }\r\n })\r\n .state('dw.contact-cal', {\r\n url: \"/contactcal\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/contactCalDetails.html\",\r\n controller: \"serviceCtrl\"\r\n }\r\n },\r\n data: {\r\n module: 5\r\n }\r\n })\r\n\r\n .state('dw.calhull-home', {\r\n url: \"/calhull\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/calHullHome.html\",\r\n controller: \"lobbyCtrl\"\r\n }\r\n },\r\n data: {\r\n module: 6\r\n }\r\n })\r\n .state('dw.block-card-home', {\r\n url: \"/blockhome\",\r\n analyticsUrl: '/vp/managecards/',\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/block-card-home.html\",\r\n controller: \"lobbyCtrl\"\r\n }\r\n },\r\n data: {\r\n module: 7\r\n }\r\n })\r\n // *****\r\n // envelope pages\r\n // ****************************************************************\r\n .state('dw.legal-terms', {\r\n url: \"/terms\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/legal-terms.html\",\r\n controller: \"lobbyCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.data-security', {\r\n url: \"/secured\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/data-security.html\",\r\n controller: \"lobbyCtrl\"\r\n }\r\n }\r\n }).state('dw.register357', {\r\n url: \"/account/register357/:nextPage/:type/:sso/:command\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/register357.html\",\r\n controller: \"register357Controller\"\r\n }\r\n },\r\n data: {\r\n isHideNavicon: true\r\n }\r\n })/* touch: route */\r\n .state('dw.touch-taknon', {\r\n url: \"/touch-taknon\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/touch-taknon.html\",\r\n controller: \"touchTaknonCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.loanFrame', {\r\n cache: false,\r\n url: \"/loanFrame/\",\r\n params: {\r\n path: { value: '', squash: true }\r\n },\r\n views: {\r\n 'contentBody': {\r\n controller: \"loanCtrl\"\r\n }\r\n },\r\n resolve: {\r\n loan: function (sso) {\r\n return sso;\r\n }\r\n }\r\n })\r\n .state('dw.openBanking', {\r\n url: \"/openBanking\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/openBanking.html\",\r\n controller: \"openBankingCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.updateAddress', {\r\n url: \"/updateAddress\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/account/templates/updateAddress.html\",\r\n controller: \"updateAddressController\"\r\n }\r\n }\r\n })\r\n .state('dw.insightsFrame', {\r\n cache: false,\r\n url: \"/insightsFrame\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/insightsFrame.html\",\r\n controller: \"insightsFrameCtrl\"\r\n }\r\n },\r\n resolve: {\r\n loan: function (sso) {\r\n return sso;\r\n }\r\n }\r\n })\r\n .state('dw.touch-legal-terms', {\r\n url: \"/touch-terms\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/touch-legal-terms.html\"\r\n }\r\n }\r\n })\r\n // *****\r\n // Payment Spread\r\n // ****************************************************************\r\n .state('dw.payment-spread-form', {\r\n url: \"/paymentSpread\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/paymentSpread/templates/paymentSpreadForm.html\",\r\n controller: \"paymentSpreadCtrl as vm\"\r\n }\r\n }\r\n })\r\n // *****\r\n // New Chat Iframe\r\n // ****************************************************************\r\n .state('dw.new-chat-frame', {\r\n url: \"/newChatFrame\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/main/templates/newChatFrame.html\",\r\n controller: \"newChatCtrl as vm\"\r\n }\r\n },\r\n resolve: {\r\n auth: function ($q, connection, $timeout, lobbyUiService) {\r\n var defer = $q.defer();\r\n if (!connection.isLoggedIn()) {\r\n $timeout(function () {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.new-chat-frame' });\r\n defer.reject();\r\n return;\r\n });\r\n }\r\n\r\n $timeout(function () {\r\n defer.resolve(true);\r\n });\r\n\r\n return defer.promise;\r\n }\r\n }\r\n })\r\n .state('dw.updateMail',\r\n {\r\n url: \"/updateMail\",\r\n cache: false,\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/updateMail/updateMail.html\",\r\n controller: \"updateMailCtrl as vm\"\r\n }\r\n }\r\n })\r\n .state('dw.internetId',\r\n {\r\n url: \"/internetId\",\r\n cache: false,\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/internetId/internetId.html\",\r\n controller: \"internetIdCtrl as vm\"\r\n }\r\n }\r\n })\r\n \r\n \r\n $urlRouterProvider.otherwise(\"/digital/lobby\");\r\n }\r\n\r\n mainConfig.$inject = ['$rootScope', 'lobbyStateService', 'lobbyUiService', '$q', 'backService', 'lobbyDataService', '$ionicPlatform',\r\n 'errorService', 'dataService', 'googleAnalyticsService', 'appSettings', 'appData', 'restrictService',\r\n '$timeout', '$injector', '$location', 'connection', 'tokenService', 'register357Service', '$state', '$stateParams',\r\n 'nativeAppBannerService', 'sessionStorageTransferService'];\r\n\r\n function mainConfig($rootScope, lobbyStateService, lobbyUiService, $q, backService, lobbyDataService, $ionicPlatform, errorService,\r\n dataService, googleAnalyticsService, appSettings, appData, restrictService, $timeout, $injector, $location, connection,\r\n tokenService, register357Service, $state, $stateParams, nativeAppBannerService, sessionStorageTransferService) {\r\n\r\n if (appSettings.env === \"PROD\") {\r\n if (!window._base.mobileAndTabletcheck()) location.href = \"https://www.cal-online.co.il/\";\r\n document.domain = \"cal-online.co.il\";\r\n }\r\n\r\n var queryString = $location.search();\r\n var token = queryString.token;\r\n var hideNavBar = (queryString.hidenavbar && queryString.hidenavbar == \"true\") ? true : null;\r\n console.log(\"hideNavBar: \", hideNavBar);\r\n dataService.sessionManager.clearAndSave(\"hidenavbar\", hideNavBar);\r\n \r\n var campaignParams = {\r\n utm_source: queryString.utm_source,\r\n utm_medium: queryString.utm_medium,\r\n utm_campaign: queryString.utm_campaign\r\n /*utm_campaign: queryString.utm_term,\r\n utm_campaign: queryString.utm_content*/\r\n };\r\n\r\n if (token && token.length && token.length > 0) {\r\n $rootScope.getOtpDataByToken = token;\r\n }\r\n\r\n function filterAccountByIsEffective(accounts) {\r\n var copyAccounts = angular.copy(accounts);\r\n\r\n var filterAccounts = [];\r\n\r\n _.each(copyAccounts, function (account) {\r\n var filterCards = _.filter(account.Cards, function (card) {\r\n return card.IsEffectiveInd == true;\r\n });\r\n\r\n if (filterCards.length > 0) {\r\n account.Cards = filterCards;\r\n filterAccounts.push(account);\r\n }\r\n });\r\n\r\n return filterAccounts;\r\n }\r\n\r\n $rootScope.$on('$stateChangeStart', function (event, toState/*, toParams, fromState, fromParams*/) {\r\n /* touch: restirctedRoute */\r\n restrictService.restirctedRoute(event, toState).then(function (status) {\r\n if (status) {\r\n lobbyUiService.navigate(\"dw.login\", {}, {\r\n nextPage: toState.name,\r\n restricted: true\r\n });\r\n }\r\n });\r\n /* touch: end restirctedRoute */\r\n $rootScope.$broadcast('lobbyEvent::StateChanging', { targetState: toState, targetEvent: event });\r\n });\r\n $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState/*, fromParams*/) {\r\n\r\n var token = $rootScope.getOtpDataByToken;\r\n $rootScope.getOtpDataByToken = null;\r\n if (token && token.length && token.length > 0) {\r\n tokenService.getOtpDataByToken(token);\r\n }\r\n //if (toState && toState.name) {\r\n // $rootScope.state = toState.name;\r\n //}\r\n\r\n //$rootScope.$broadcast('lobbyEvent::StateChanged', { targetState: toState, srcState: fromState });\r\n //googleAnalyticsService.trackPage(toState.url);\r\n //conversionService.fireRemarketingPixels();\r\n $rootScope.$broadcast('lobbyEvent::StateChanged', { targetState: toState, srcState: fromState });\r\n var page = toState.analyticsUrl || toState.url;\r\n if (toState.analyticsUrl && toState.paramsService) {\r\n var paramsService = $injector.get(toState.paramsService);\r\n if (paramsService) {\r\n page += paramsService[toState.paramMethod]();\r\n }\r\n }\r\n\r\n if (campaignParams.utm_source || campaignParams.utm_medium || campaignParams.utm_campaign)\r\n $location.search(campaignParams)\r\n\r\n googleAnalyticsService.trackPage(page);\r\n \r\n });\r\n\r\n\r\n if (navigator.platform == 'iPad' || navigator.platform == 'iPhone') {\r\n window.ontouchstart = function () {\r\n $timeout(function () {\r\n if (angular.element(\".expander.fix-bottom\").length > 0) {\r\n $(\".expander.fix-bottom\").css(\"display\", \"none\");\r\n }\r\n });\r\n\r\n }\r\n\r\n window.onscroll = function () {\r\n var iPadPosition = window.innerHeight + window.pageYOffset - 58.5; // 45 is the height of the Footer\r\n var element = $(\".expander.fix-bottom\");\r\n element.css(\"position\", \"absolute\");\r\n element.css(\"top\", iPadPosition);\r\n element.css(\"display\", \"block\");\r\n }\r\n }\r\n\r\n ionic.Platform.ready(function () {\r\n\r\n ionic.Platform.fullScreen(true, false);\r\n\r\n /* Google Analytics */\r\n if (window.analytics) {\r\n window.analytics.startTrackerWithId(appSettings.environment.current.gaAccount);\r\n } else {\r\n window.ga = window.ga || function () { (ga.q = ga.q || []).push(arguments) }; ga.l = +new Date;\r\n ga('create', appSettings.gaAccount, 'auto');\r\n ga(function (tracker) {\r\n var gId = tracker.get('clientId');\r\n if (gId && gId.length > 0) {\r\n ga('set', 'dimension2', gid);\r\n }\r\n ga('send', 'pageview');\r\n });\r\n\r\n }\r\n\r\n /* End Google Analytics */\r\n\r\n nativeAppBannerService.init();\r\n sessionStorageTransferService.init();\r\n });\r\n }\r\n\r\n})(window, window.angular);\n//(function (window, angular) {\r\n// 'use strict';\r\n\r\n// angular.module(\"digitalWallet\")\r\n// .constant('appSettings', {\r\n// version: \"100.0.0\",\r\n// os: \"04\",\r\n// environment: (function () {\r\n// var current = 'PROD',\r\n// options = [];\r\n\r\n// if (location.origin == \"http://localhost\") { current = 'DEV' };\r\n\r\n// options['DEV'] = {\r\n// base: 'http://localhost/',\r\n// server: 'http://localhost/Cal4U-Dev/',\r\n// mobile: true,\r\n// env: 'DEV',\r\n// commonServer: 'http://localhost/CommonServices/',\r\n// cellebServer: 'http://54.93.62.32:10080/ws_api/main.py/celleb/celleb',\r\n// gaAccount: 'UA-34396915-2'\r\n// },\r\n// options['TEST'] = {\r\n// base: 'http://test.cal-online.co.il/',\r\n// server: 'http://test.cal-online.co.il/Cal4U-Test/',\r\n// mobile: true,\r\n// env: 'TEST',\r\n// commonServer: 'http://test.cal-online.co.il/Cal4U-Test/CommonServices/',\r\n// cellebServer: 'http://54.93.62.32:10080/ws_api/main.py/celleb/celleb',\r\n// gaAccount: 'UA-34396915-2'\r\n// },\r\n// options['STAGE'] = {\r\n// base: 'https://stage-restservices.cal-online.co.il/',\r\n// server: 'https://stage-restservices.cal-online.co.il/Cal4U-Test/',\r\n// mobile: true,\r\n// env: 'STAGE',\r\n// commonServer: 'https://stage-restservices.cal-online.co.il/CommonServices/',\r\n// cellebServer: 'https://celleb.co.il:10443/ws_api/main.py/celleb/celleb',\r\n// //http://54.93.62.32:10080/ws_api/main.py/celleb/celleb\r\n// gaAccount: 'UA-34396915-2'\r\n// },\r\n// options['PROD'] = {\r\n// base: 'https://www.cal-online.co.il/',\r\n// server: 'https://restservices.cal-online.co.il/Cal4Uecredit/',\r\n// mobile: true,\r\n// env: 'PROD',\r\n// commonServer: 'https://restservices.cal-online.co.il/CommonServices/',\r\n// cellebServer: 'https://celleb.co.il:10443/ws_api/main.py/celleb/celleb',\r\n// gaAccount: 'UA-632119-27'\r\n// }\r\n\r\n// return {\r\n// current: options[current]\r\n// }\r\n// })()\r\n// });\r\n\r\n//})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('sessionStorageTransferService', sessionStorageTransferService);\r\n\r\n sessionStorageTransferService.$inject = ['$rootScope'];\r\n\r\n function sessionStorageTransferService($rootScope) {\r\n\r\n // transfers sessionStorage from one tab to another\r\n function _sessionStorage_transfer(event) {\r\n if (!event) { event = window.event; } // ie suq\r\n if (!event.newValue) return; // do nothing if no value to work with\r\n if (event.key == 'getSessionStorage') {\r\n // another tab asked for the sessionStorage -> send it\r\n localStorage.setItem('sessionStorage', JSON.stringify(sessionStorage));\r\n // the other tab should now have it, so we're done with it.\r\n localStorage.removeItem('sessionStorage'); // <- could do short timeout as well.\r\n } else if (event.key == 'sessionStorage' && !sessionStorage.length) {\r\n // another tab sent data <- get it\r\n var data = JSON.parse(event.newValue);\r\n for (var key in data) {\r\n sessionStorage.setItem(key, data[key]);\r\n }\r\n $rootScope.$broadcast('sessionStorageUpdated', null);\r\n }\r\n };\r\n\r\n function init() {\r\n window.addEventListener(\"storage\", _sessionStorage_transfer, false);\r\n\r\n // Ask other tabs for session storage (this is ONLY to trigger event)\r\n if (!sessionStorage.length) {\r\n localStorage.setItem('getSessionStorage', 'foobar');\r\n localStorage.removeItem('getSessionStorage');\r\n };\r\n\r\n }\r\n\r\n return {\r\n init: init\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('speachRecognition', speachRecognition);\r\n\r\n speachRecognition.$inject = ['$q', '$timeout'];\r\n\r\n function speachRecognition($q, $timeout) {\r\n /**\r\n * Initialzie speachRecognition service.\r\n *\r\n * @param args\r\n */\r\n function init(args) {\r\n // If carolina as global variable not exist defined a default empty object.\r\n if (!Carolina) {\r\n return Carolina = {};\r\n }\r\n\r\n // Init the core of the voice recognition 3rd party library.\r\n Carolina.init({\r\n lang: 'he-IL',\r\n logLevel: 1, // 0 is NO_LOGS , 1 INFO_MODE, 2 DEBUG_MODE, 3 ULTRA_DEBUG_MODE.\r\n quality: 1, // 0 is BAD QUALITY result capture and 1 is GOOD QUALITY result capture.\r\n maxAlternatives: 1,\r\n continuous: false,\r\n interimResults: false,\r\n callbacks: args.callbacks\r\n });\r\n }\r\n\r\n\r\n function isSupportVoiceRecognition() {\r\n return Carolina.isSupportVoiceRecognition();\r\n }\r\n\r\n\r\n function isListening() {\r\n return Carolina.isListening();\r\n }\r\n\r\n\r\n function start() {\r\n Carolina.start();\r\n }\r\n\r\n\r\n function stop() {\r\n Carolina.stop();\r\n }\r\n\r\n\r\n function abort() {\r\n Carolina.abort();\r\n }\r\n\r\n return {\r\n isSupportVoiceRecognition: isSupportVoiceRecognition,\r\n init: init,\r\n start: start,\r\n isListening: isListening,\r\n stop: stop\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('webpushNotfication', webpushNotfication);\r\n\r\n webpushNotfication.$inject = ['$state'];\r\n\r\n function webpushNotfication($state) {\r\n var notficationSupported = false;\r\n\r\n\r\n /**\r\n * Initialzie speachRecognition service.\r\n *\r\n * @param args\r\n */\r\n function init(args) {\r\n if (ionic.Platform.isWebView() && cordova.plugins.notification) {\r\n // Notification plugin installed.\r\n notficationSupported = true;\r\n\r\n // Attach handler when user click on notification.\r\n cordova.plugins.notification.local.on(\"click\", function (notification) {\r\n $state.go(notification.data.link);\r\n });\r\n\r\n notify = nativeNotify;\r\n }\r\n else {\r\n\r\n if (!window.Notification) {\r\n console.error('Desktop notifications not available in your browser. Try Chromium.');\r\n return;\r\n }\r\n\r\n\r\n // Desktop notfication is available in the browser.\r\n notficationSupported = true;\r\n\r\n notify = browserNotify;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Send web push notification.\r\n *\r\n * @param notificationOptions\r\n * @returns {{init: init, notify: notify}}\r\n */\r\n function browserNotify(notificationOptions) {\r\n // If the notfication feature is not supported end execution.\r\n if (!notficationSupported)\r\n return;\r\n\r\n // If the user not have granted permission end execution.\r\n if (window.Notification.permission !== \"granted\")\r\n window.Notification.requestPermission();\r\n\r\n if (!navigator.serviceWorker)\r\n return;\r\n\r\n navigator.serviceWorker.ready.then(function (registration) {\r\n registration.showNotification(notificationOptions.title, {\r\n body: notificationOptions.body,\r\n icon: notificationOptions.icon || 'icon.png',\r\n vibrate: [200, 100, 200, 100, 200, 100, 200],\r\n tag: ''\r\n });\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Send native push notification.\r\n *\r\n * @param notificationOptions\r\n * @returns {Function}\r\n */\r\n function nativeNotify(notificationOptions) {\r\n // If the notfication feature is not supported end execution.\r\n if (!notficationSupported)\r\n return;\r\n\r\n\r\n var currMessageID = 1,\r\n nativePushNotification = function(notificationOptions) {\r\n\r\n console.log('Sending native notification => ', notificationOptions);\r\n\r\n cordova.plugins.notification.local.schedule({\r\n id: 1,\r\n title: notificationOptions.title || '',\r\n text: notificationOptions.body || '',\r\n icon: notificationOptions.icon || '',\r\n data: {link: notificationOptions.link}\r\n });\r\n };\r\n\r\n return (function() {\r\n cordova.plugins.notification.local.hasPermission(function (granted) {\r\n console.log('Permission has been granted: ' + granted);\r\n\r\n if (granted) {\r\n nativePushNotification(notificationOptions);\r\n currMessageID++;\r\n } else {\r\n cordova.plugins.notification.local.registerPermission(function (granted) {\r\n console.log('Permission has been granted: ' + granted);\r\n\r\n if (granted) {\r\n nativePushNotification(notificationOptions);\r\n currMessageID++;\r\n }\r\n });\r\n }\r\n });\r\n }());\r\n }\r\n\r\n\r\n function notify() {}\r\n\r\n\r\n init();\r\n\r\n\r\n return {\r\n notify: notify\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('serverConnection', []);\r\n\r\n angular.module('serverConnection').config(serverConnectionConfig);\r\n\r\n serverConnectionConfig.$inject = ['$httpProvider'];\r\n\r\n function serverConnectionConfig($httpProvider) {\r\n\r\n $httpProvider.defaults.useXDomain = true;\r\n\r\n delete $httpProvider.defaults.headers.common[\"X-Requested-With\"];\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module(\"digitalWallet\")\r\n .directive('focusOnShow', focusOnShow);\r\n\r\n focusOnShow.$inject = ['$timeout'];\r\n\r\n function focusOnShow($timeout) {\r\n return {\r\n restrict: \"A\",\r\n link: function ($scope, $element, $attr) {\r\n if ($attr.ngShow) {\r\n $scope.$watch($attr.ngShow, function (newValue) {\r\n if (newValue) {\r\n $timeout(function () {\r\n $element[0].focus();\r\n }, 0);\r\n }\r\n })\r\n }\r\n if ($attr.ngHide) {\r\n $scope.$watch($attr.ngHide, function (newValue) {\r\n if (!newValue) {\r\n $timeout(function () {\r\n $element[0].focus();\r\n }, 0);\r\n }\r\n })\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .controller(\"homeCtrl\", homeCtrl);\r\n\r\n homeCtrl.$inject = [\r\n '$scope', '$ionicSideMenuDelegate', '$ionicPlatform', '$http', '$sce', '$log', 'lobbyUiService', 'lobbyDataService',\r\n 'connection', '$window', 'appData', '$rootScope', '$route', '$routeParams', '$timeout', '$ionicScrollDelegate', 'errorService', 'backService',\r\n 'googleAnalyticsService', 'lobbyStorageService', 'appSettings', 'webpushNotfication', 'dataService','customerIndication'\r\n ];\r\n\r\n function homeCtrl($scope, $ionicSideMenuDelegate, $ionicPlatform, $http, $sce, $log, lobbyUiService, lobbyDataService,\r\n connection, $window, appData, $rootScope, $route, $routeParams, $timeout, $ionicScrollDelegate, errorService, \r\n backService, googleAnalyticsService, lobbyStorageService, appSettings, webpushNotfication, dataService,customerIndication) {\r\n\r\n $rootScope.members =\r\n {\r\n IS_NEW_VERSION: \"IS_NEW_VERSION\",\r\n ionSideMenuExpand: false\r\n };\r\n //webpushNotfication.notify({title: 'כ.א.ל', body: 'רוצה לקחת הלוואה?'});\r\n //customerIndication.getIndicationForCustomer();\r\n $scope.appData = appData;\r\n\r\n $scope.appData.backOverrideFN = null; \r\n\r\n $scope.appData.noConnection = false;\r\n\r\n\r\n /**\r\n * Indicate flag that represent the state of the search bar if is currently active or inactive.\r\n * \r\n * @property\r\n * @type boolean\r\n */\r\n $scope.isSearchBarActive = false;\r\n\r\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState) {\r\n $scope.isSearchBarActive = false;\r\n });\r\n\r\n\r\n $scope.noHistory = !backService.hasHistory();\r\n\r\n $scope.reportAppLaunched = function (url) {\r\n\r\n //console.log(\"App Launched Via Custom URL: \" + url);\r\n\r\n var pageId = url.substring(url.indexOf('pageId=') + 7);\r\n\r\n if (pageId && pageId != 'undefined') {\r\n lobbyDataService.getAppPageRoute(pageId).then(function (startRoute) {\r\n if (startRoute) {\r\n lobbyUiService.navigate(startRoute);\r\n }\r\n });\r\n }\r\n }\r\n\r\n $scope.hideLeftArrow = function (bankAccounts, bankIndex) {\r\n\r\n var currentIndex = $scope.appData.selectedBankAccountIndex;\r\n\r\n if (typeof bankIndex != 'undefined') {\r\n currentIndex = bankIndex;\r\n }\r\n\r\n if (bankAccounts) {\r\n return bankAccounts.length <= 1 || currentIndex == 0;\r\n } else {\r\n return !$scope.appData.BankAccounts || $scope.appData.BankAccounts.length <= 1 || currentIndex == 0;\r\n }\r\n }\r\n\r\n $scope.hideRightArrow = function (bankAccounts, bankIndex) {\r\n\r\n var currentIndex = $scope.appData.selectedBankAccountIndex;\r\n\r\n if (typeof bankIndex != 'undefined') {\r\n\r\n currentIndex = bankIndex;\r\n }\r\n\r\n if (bankAccounts) {\r\n return bankAccounts.length <= 1 || currentIndex == bankAccounts.length - 1;\r\n } else {\r\n return !$scope.appData.BankAccounts || $scope.appData.BankAccounts.length <= 1 || currentIndex == $scope.appData.BankAccounts.length - 1;\r\n }\r\n }\r\n\r\n $scope.toggleRightSideMenu = function () {\r\n $ionicSideMenuDelegate.toggleRight();\r\n };\r\n\r\n $scope.toggleLeftSideMenu = function () {\r\n $ionicSideMenuDelegate.toggleRight();\r\n };\r\n\r\n $scope.goBack = function () {\r\n backService.back();\r\n }\r\n\r\n\r\n /**\r\n * Open the main search bar over the lobby,\r\n * Should replace the static header view with a custom search bar.\r\n * \r\n * @function\r\n * @returns undefined\r\n */\r\n $scope.openSearchBar = function ($event) { \r\n $event.preventDefault();\r\n $scope.isSearchBarActive = true;\r\n\r\n console.log('Opening the search bar component => ', $scope.isSearchBarActive);\r\n }\r\n\r\n\r\n /**\r\n * Close the main search bar over the lobby,\r\n *\r\n * @function\r\n * @returns undefined\r\n */\r\n $scope.closeSearchBar = function () {\r\n $scope.isSearchBarActive = false;\r\n\r\n console.log('Closing the search bar component => ', $scope.isSearchBarActive);\r\n }\r\n\r\n\r\n $scope.callService = function () {\r\n googleAnalyticsService.insertEvent({ page: 'Customer service', eventName: 'Call now - customer service', action: 'Call' });\r\n }\r\n\r\n $scope.goHome = function () {\r\n lobbyUiService.navigate('dw.lobby');\r\n };\r\n\r\n $scope.simulateLogin = function () {\r\n $ionicSideMenuDelegate.toggleRight();\r\n\r\n setTimeout(function () {\r\n $rootScope.$broadcast('accountLoggedIn', null);\r\n }, 1000);\r\n\r\n }\r\n\r\n $scope.toggleRight = function () {\r\n $rootScope.members.ionSideMenuExpand = !$rootScope.members.ionSideMenuExpand;\r\n $ionicSideMenuDelegate.toggleRight();\r\n }\r\n // abandon modal message\r\n $scope.openLeadModal = function () {\r\n lobbyUiService.modalDialog.create('app/main/templates/loan-lead.html').show(\r\n {\r\n ok: function () { lobbyUiService.popup.alert('אישור', 'ארעה שגיאה בלתי צפויה'); },\r\n cancel: function () { lobbyUiService.popup.alert('סגור', 'ארעה שגיאה בלתי צפויה'); }\r\n });\r\n }\r\n\r\n // process loading animation\r\n $scope.showLoading = function () {\r\n lobbyUiService.loader.show();\r\n }\r\n // global navigation method\r\n $scope.navigate = function (url, options, page) {\r\n\r\n //console.log(options.id, options.state);\r\n\r\n googleAnalyticsService.insertEvent({ page: page, id: options.id });\r\n\r\n lobbyUiService.navigate(url, options);\r\n }\r\n $scope.captionize = function (item) {\r\n return lobbyUiService.captionize(item);\r\n }\r\n \r\n $scope.getCalChoiceAccount = function () {\r\n\r\n var calChoiceAccounts = [];\r\n\r\n for (var i = 0; i < $scope.appData.BankAccounts.length; i++) {\r\n var cardsToDisplay = [];\r\n for (var j = 0; j < $scope.appData.BankAccounts[i].Cards.length; j++) {\r\n if ($scope.appData.BankAccounts[i].Cards[j].IsCalChoiceCard) {\r\n $scope.appData.BankAccounts[i].Cards[j].CardIndex = j;\r\n cardsToDisplay.push($scope.appData.BankAccounts[i].Cards[j]);\r\n }\r\n }\r\n if (cardsToDisplay.length > 0) {\r\n $scope.appData.BankAccounts[i].calChoiceCards = cardsToDisplay;\r\n $scope.appData.BankAccounts[i].AccountIndex = i;\r\n $scope.appData.BankAccounts[i].CalChoiceAccountIndex = calChoiceAccounts.length;\r\n calChoiceAccounts.push($scope.appData.BankAccounts[i]);\r\n }\r\n }\r\n\r\n return calChoiceAccounts;\r\n }\r\n\r\n $scope.logout = function () {\r\n lobbyUiService.loader.show();\r\n $scope.appData.showSpinner = true;\r\n\r\n\r\n connection.logout($scope.appData.token);\r\n };\r\n\r\n $scope.back = function () {\r\n\r\n window.history.back();\r\n };\r\n $scope.$on(\r\n \"$destroy\",\r\n function () {\r\n $timeout.cancel($scope.appData.sessionTimeout);\r\n\r\n }\r\n );\r\n $scope.$on('loggedOut', function () {\r\n\r\n lobbyStorageService.clearAppData();\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('sideScroll').scrollTop();\r\n }, 0);\r\n\r\n connection.token = null;\r\n\r\n $scope.appData.showSpinner = false;\r\n\r\n $scope.appData.inProcess = false;\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n lobbyUiService.go(\"dw.lobby\");\r\n\r\n\r\n });\r\n\r\n $scope.$on('bannersLoaded', function () {\r\n\r\n $ionicPlatform.ready(function () {\r\n if (!navigator.splashscreen)\r\n return;\r\n if (ionic.Platform.isAndroid()) {\r\n navigator && navigator.splashscreen.hide();\r\n $scope.navigateFromPush();\r\n }\r\n });\r\n });\r\n\r\n $scope.messages = [];\r\n\r\n /*$scope.$on('sessionStorageUpdated', function () {\r\n var token = dataService.sessionManager.read('authToken') || null;\r\n token && login(token, null, false);\r\n });*/\r\n\r\n $scope.$root.$on('$messageIncoming', function (event, data) {\r\n var _data = angular.fromJson(data);\r\n\r\n //$scope.messages.push(angular.fromJson(data));\r\n //var _data = $scope.messages[0];\r\n\r\n if (_data) {\r\n\r\n if (_data.event == \"login\") {\r\n login(_data.token, _data.url, true);\r\n }\r\n }\r\n });\r\n\r\n function login(token, url, redirect) {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n if (token) connection.setToken(token);\r\n\r\n if (!$scope.appData.metaData) {\r\n // cal4u\r\n connection.getMetaData().then(function (response) {\r\n\r\n $scope.appData.metaData = response;\r\n\r\n $scope.initAccount().then(function () {\r\n\r\n if (redirect) {\r\n if (url && url.toLocaleLowerCase().indexOf(\"http\") === 0) {\r\n window.location.href = url; //$window.open(url);\r\n\r\n url = \"dw.lobby\";\r\n }\r\n\r\n lobbyUiService.go(url);\r\n } \r\n });\r\n\r\n }, function (error) {\r\n errorService.handleError(error, $scope.init);\r\n });\r\n }\r\n else {\r\n $scope.initAccount().then(function () {\r\n\r\n if (redirect) {\r\n if (url && url.toLocaleLowerCase().indexOf(\"http\") === 0) {\r\n window.location.href = _data.url; // $window.open(url);\r\n url = \"dw.lobby\";\r\n }\r\n\r\n lobbyUiService.go(url);\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n $scope.initAccount = function (isOtp) {\r\n\r\n var accountPromise = connection.getAccount();\r\n\r\n return accountPromise.then(function (response) {\r\n\r\n $scope.appData.CustomerInfo = response.CustomerInfo;\r\n\r\n if (isOtp) {\r\n $scope.appData.BankAccounts = $scope.filterAccountByIsEffective(response.BankAccounts);\r\n } else {\r\n $scope.appData.BankAccounts = response.BankAccounts;\r\n }\r\n\r\n if (!$scope.appData.BankAccounts || $scope.appData.BankAccounts.length == 0) {\r\n errorService.handleError([\r\n {\r\n response: {\r\n Response: {\r\n Status: {\r\n SeverityCode: 'E',\r\n SeverityNumber: '001'\r\n },\r\n DialogBox: {\r\n Content: 'לא ניתן לקבל מידע אודות הכרטיסים שברשותך. באפשרותך לפנות לאתר Cal-Online.',\r\n Title: '',\r\n OKButtonText: 'סגור'\r\n }\r\n }\r\n },\r\n action: \"noCards\"\r\n }\r\n ], $scope.getAccount);\r\n\r\n return;\r\n }\r\n\r\n $scope.appData.needRefreshAccount = false;\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n $rootScope.$broadcast('accountLoggedIn', response);\r\n }, function (error) {\r\n errorService.handleError(error, $scope.getAccount);\r\n });\r\n }\r\n\r\n\r\n $scope.navigateFromPush = function () {\r\n if ($scope.appData.fromPush) {\r\n lobbyUiService.navigate($scope.appData.fromPush);\r\n $scope.appData.fromPush = null;\r\n }\r\n }\r\n\r\n $scope.$on('noConnection', function () {\r\n if ($scope.appData.noConnection == false) {\r\n var _promise = lobbyUiService.popup.noConnection();\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n $scope.appData.noConnection = true;\r\n }\r\n });\r\n\r\n $scope.openExternal = function (url, action) {\r\n\r\n if (action) {\r\n switch (action) {\r\n case 1: // password recovery\r\n googleAnalyticsService.insertEvent({ page: 'Login', eventName: 'Password recovery', action: 'Click' });\r\n break;\r\n case 2: // joining\r\n googleAnalyticsService.insertEvent({ page: 'Login', eventName: 'Joining cal-online', action: 'Click' });\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n lobbyUiService.openExternal(url);\r\n };\r\n\r\n $scope.reload = function () {\r\n $window.location.reload();\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .controller(\"connectCtrl\", connectCtrl);\r\n\r\n connectCtrl.$inject = [\r\n '$scope', '$rootScope', 'lobbyUiService', 'connection', '$stateParams', 'errorService', 'googleAnalyticsService', '$timeout', '$state', 'appData', 'appSettings', 'backService',\r\n \"$ionicHistory\", \"dataService\", '$sce', 'lobbyDataService', 'tokenService', 'customerIndication'];\r\n\r\n function connectCtrl($scope, $rootScope, lobbyUiService, connection, $stateParams, errorService, googleAnalyticsService, $timeout, $state, appData, appSettings, backService,\r\n $ionicHistory, dataService, $sce, lobbyDataService, tokenService, customerIndication) {\r\n\r\n if (connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.lobby');\r\n }\r\n\r\n\r\n //get user details from token\r\n var isOtpData = lobbyUiService.getParams('isOtpData');\r\n var otpData = {};\r\n if (isOtpData) {\r\n otpData = tokenService.getData();\r\n }\r\n\r\n var loginType = !lobbyUiService.getParams('type') || lobbyUiService.getParams('type') > 2 ? 0 : lobbyUiService.getParams('type');\r\n\r\n var clientParams = {\r\n guid: appSettings.siteId,\r\n logo: true,\r\n modal: false,\r\n logintype: loginType,\r\n styletype: \"1\",\r\n title:\"כניסה ללקוחות כאל\",\r\n userId: otpData.idNumber,\r\n last4Digits: otpData.last4Digits\r\n }\r\n\r\n $scope.connectUrl = function () {\r\n return $sce.trustAsResourceUrl(appSettings.connect);\r\n };\r\n\r\n\r\n\r\n\r\n //reset account\r\n if (typeof ($scope.appData.token) === 'undefined' || $scope.appData.token === null) {\r\n $scope.appData.BankAccounts = {};\r\n $scope.appData.selectedBankAccountIndex = 0;\r\n $scope.appData.shownCardIndex = 0;\r\n\r\n if ($scope.appData.myAccount)\r\n $scope.appData.myAccount.status = 0;\r\n $scope.appData.token = null;\r\n }\r\n\r\n\r\n var command = lobbyUiService.getParams('command') || '';\r\n //handle chat\r\n if (command === 'open-chat') {\r\n window.loginChatWindow = lobbyUiService.openExternal('', '', true);\r\n }\r\n\r\n\r\n //handle session\r\n if (appData.sessionTimeout)\r\n $timeout.cancel(appData.sessionTimeout);\r\n\r\n if (appData.metaData) {\r\n var tOut = appData.metaData.SessionTimeout * 1000;\r\n appData.sessionTimeout = $timeout(function () {\r\n errorService.handleError(sessionErrorObject);\r\n }, tOut, false);\r\n }\r\n\r\n function handleLogin(result) {\r\n\r\n var token = result.token;\r\n var loginType = 0;\r\n if (typeof result.innerLoginType !== 'undefined') {\r\n loginType = result.innerLoginType;\r\n } else {\r\n loginType = result.loginType;\r\n }\r\n\r\n var loginTypeDescription = '';\r\n var loginEnum = { userName: 0, otp: 1 }\r\n if (loginType == loginEnum.userName)\r\n loginTypeDescription = 'userName';\r\n else\r\n loginTypeDescription = 'otp';\r\n var loginTypeObject = { description: loginTypeDescription, value: loginType };\r\n $ionicHistory.clearCache();\r\n dataService.sessionManager.save('loginType', loginTypeObject);\r\n dataService.sessionManager.save('authToken', token);\r\n dataService.sessionManager.save('siteId', appSettings.siteId);\r\n $scope.appData.token = token;\r\n //$stateParams.type = $stateParams.nextPage == \"dw.margarita\" ? \"\" : $stateParams.type; // maybe: $stateParams.type = $stateParams.type == \"2\" ? \"\" : $stateParams.type;\r\n $stateParams.type = $stateParams.type == \"2\" ? \"\" : $stateParams.type;\r\n connection.setToken(token);\r\n\r\n if (!$scope.appData.metaData) {\r\n // cal4u \r\n connection.getMetaData().then(function (response) {\r\n $scope.appData.metaData = response;\r\n initCallCenter();\r\n }, function (error) {\r\n errorService.handleError(error, $scope.init);\r\n });\r\n } else {\r\n initCallCenter();\r\n }\r\n\r\n\r\n\r\n\r\n\r\n var accountPromise = connection.getAccount();\r\n accountPromise.then(function (response) {\r\n $scope.appData.CustomerInfo = response.CustomerInfo;\r\n $scope.appData.BankAccounts = filterEffectiveCards(response.BankAccounts);\r\n if (!$scope.appData.BankAccounts || $scope.appData.BankAccounts.length == 0) {\r\n errorService.handleError([\r\n {\r\n response: {\r\n Response: {\r\n Status: {\r\n SeverityCode: 'E',\r\n SeverityNumber: '001'\r\n },\r\n DialogBox: {\r\n Content: 'לא ניתן לקבל מידע אודות הכרטיסים שברשותך. באפשרותך לפנות לאתר Cal-Online.',\r\n Title: '',\r\n OKButtonText: 'סגור'\r\n }\r\n }\r\n },\r\n action: \"noCards\"\r\n }\r\n ], $scope.getAccount);\r\n\r\n dataService.sessionManager.save('appData', $scope.appData);\r\n return;\r\n }\r\n\r\n dataService.sessionManager.save('appData', $scope.appData);\r\n $scope.appData.needRefreshAccount = false;\r\n $scope.routeParams = {};\r\n $scope.routeParams.nextPage = lobbyUiService.getParams('nextPage') || 'dw.myaccount';\r\n $scope.routeParams.command = lobbyUiService.getParams('command') || '';\r\n $scope.routeParams.type = lobbyUiService.getParams('type') || '1';\r\n $scope.routeParams.sso = lobbyUiService.getParams('sso') || false;\r\n $scope.routeParams.query = $stateParams.query;\r\n\r\n\r\n $rootScope.$broadcast('accountLoggedIn', response);\r\n\r\n /*check if user has debt. if not, check if user needs to refresh details\r\n if (!appData.CustomerInfo.isCustDebt)*/\r\n if ($scope.routeParams.nextPage != \"dw.openBanking\") {\r\n customerIndication.getIndicationForCustomer();\r\n }\r\n\r\n\r\n lobbyUiService.navigate($scope.routeParams.nextPage,\r\n { type: $scope.routeParams.type, sso: $scope.routeParams.sso, command: $scope.routeParams.command, location: 'replace', query: $scope.routeParams.query },\r\n { location: 'replace' });\r\n\r\n }, function (error) {\r\n if (error[0].response.Response.Status.SeverityCode.toLocaleLowerCase() == 'w' && error[0].response.Response.Status.SeverityNumber == '003') {\r\n ga('set', 'page', '/vp/connect/step2/account-login-unavailable');\r\n ga('send', 'pageview');\r\n }\r\n\r\n errorService.handleError(error, $scope.handleLogin);\r\n });\r\n\r\n\r\n\r\n }\r\n function filterEffectiveCards(accounts) {\r\n var copyAccounts = angular.copy(accounts);\r\n\r\n var filterAccounts = [];\r\n\r\n _.each(copyAccounts, function (account) {\r\n var filterCards = _.filter(account.Cards, function (card) {\r\n return card.IsEffectiveInd == true;\r\n });\r\n\r\n if (filterCards.length > 0) {\r\n account.Cards = filterCards;\r\n filterAccounts.push(account);\r\n }\r\n });\r\n\r\n return filterAccounts;\r\n }\r\n function initCallCenter() {\r\n lobbyDataService.getCallCenters().then(function (callCenter) {\r\n $scope.callCentersPhoneNumber = callCenter[0].phoneNumber[0].number;\r\n });\r\n }\r\n\r\n\r\n var messageHandler = function (e) {\r\n console.info('child said:', e.data);\r\n var messageData = e.data;\r\n if (typeof e.data === 'string' && (/^[\\],:{}\\s]*$/.test(e.data.replace(/\\\\[\"\\\\\\/bfnrtu]/g, '@')\r\n .replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']')\r\n .replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))))\r\n messageData = JSON.parse(e.data)\r\n\r\n var connectWindow = angular.element('#connectIframe')[0];\r\n\r\n switch (messageData.operation) {\r\n case 'connectReady':\r\n //clear appData obj before login \r\n var hidenavbar = dataService.sessionManager.read('hidenavbar');\r\n dataService.sessionManager.clear();\r\n dataService.sessionManager.save('hidenavbar', hidenavbar);\r\n connectWindow.contentWindow.postMessage({ operation: 'params', params: clientParams }, '*');\r\n break;\r\n case 'token': //get access token to cal rest \r\n handleLogin(messageData);\r\n break;\r\n case 'close':\r\n lobbyUiService.go('dw.lobby');\r\n break;\r\n }\r\n }\r\n\r\n window.addEventListener(\"message\", messageHandler);\r\n\r\n\r\n $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {\r\n var from = fromState.name;\r\n if (from === 'dw.login') {\r\n window.removeEventListener(\"message\", messageHandler);\r\n }\r\n });\r\n\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .controller(\"lobbyCtrl\", lobbyCtrl);\r\n\r\n lobbyCtrl.$inject = [\r\n '$scope', '$rootScope', 'lobbyUiService', 'appData', '$stateParams', '$state'\r\n ];\r\n\r\n function lobbyCtrl($scope, $rootScope, lobbyUiService, appData, $stateParams, $state) {\r\n lobbyUiService.loader.hide();\r\n $scope.appData = appData;\r\n $scope.appData.isHideNavicon = false;\r\n \r\n $rootScope.params = $stateParams.path;\r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n viewData.enableBack = true;\r\n });\r\n $scope.bannersShowPager = true;\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .controller('loginController', loginController);\r\n\r\n loginController.$inject = [\r\n '$scope', '$rootScope', 'connection', 'appData', 'lobbyUiService', 'errorService', '$timeout', 'googleAnalyticsService',\r\n '_', '$ionicScrollDelegate', 'lobbyDataService', 'register357Service', 'SmsService',\r\n /* touch: dep */ 'EncryptionService', 'isTouchIDAvailable', 'touchKeyStore', 'dataService', '$stateParams', 'tokenService', 'kycRefreshCustomerService'\r\n ];\r\n\r\n function loginController($scope, $rootScope, connection, appData, lobbyUiService, errorService, $timeout, googleAnalyticsService,\r\n _, $ionicScrollDelegate, lobbyDataService, register357Service, SmsService, /* touch: dep */EncryptionService, isTouchIDAvailable, touchKeyStore, dataService, $stateParams, tokenService, kycRefreshCustomerService) {\r\n\r\n $scope.appData = appData;\r\n\r\n var fromVouchers = $stateParams.nextPage.indexOf('vouchers') > -1;\r\n if (fromVouchers)\r\n googleAnalyticsService.trackPage('/vp/digital-voucher/otp/popup-screen/');\r\n\r\n var isOtpData = lobbyUiService.getParams('isOtpData');\r\n var otpData = {};\r\n if (isOtpData) {\r\n otpData = tokenService.getData();\r\n }\r\n\r\n $scope.loginDetails = {\r\n user: '',\r\n pass: '',\r\n otpPass: '',\r\n /* touch: */\r\n touchFlag: false,\r\n uuid: ''\r\n };\r\n\r\n $scope.routeParams = {};\r\n\r\n $scope.callCenters = [];\r\n\r\n $scope.CustomerInfo = {\r\n idNum: otpData.idNumber || '',\r\n last4Digits: otpData.last4Digits || ''\r\n };\r\n\r\n if ($scope.CustomerInfo.idNum && $scope.CustomerInfo.last4Digits) {\r\n $timeout(function () {\r\n $scope.sendOtp();\r\n });\r\n }\r\n\r\n $scope.forms = {\r\n\r\n }\r\n\r\n $scope.slider = {\r\n animate: false,\r\n sliderTransitionEnd: false,\r\n notFinish: false,\r\n expanded: false\r\n }\r\n\r\n $scope.initCallCenter = function () {\r\n\r\n lobbyDataService.getCallCenters().then(function (callCenter) {\r\n $scope.callCentersPhoneNumber = callCenter[0].phoneNumber[0].number;\r\n });\r\n };\r\n\r\n $scope.init = function () {\r\n \r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('loginScroll').scrollTop();\r\n }, 0);\r\n\r\n googleAnalyticsService.insertEvent({ page: 'login', id: 1 });\r\n\r\n if (!$scope.appData.metaData) {\r\n // cal4u\r\n \r\n connection.getMetaData().then(function (response) {\r\n\r\n $scope.appData.metaData = response;\r\n\r\n $scope.initCallCenter();\r\n\r\n }, function (error) {\r\n errorService.handleError(error, $scope.init);\r\n });\r\n } else {\r\n $scope.initCallCenter();\r\n }\r\n\r\n $scope.stage = 0;\r\n \r\n $scope.resetLogin();\r\n \r\n $scope.animate = true;\r\n\r\n $scope.title = 'התחברות';\r\n \r\n /* touch: if (typeof($scope.appData.token) === 'undefined' || $scope.appData.token === null) {*/\r\n if (typeof ($scope.appData.token) === 'undefined' || $scope.appData.token === null) {\r\n $scope.appData.BankAccounts = {};\r\n $scope.appData.selectedBankAccountIndex = 0;\r\n $scope.appData.shownCardIndex = 0;\r\n\r\n if ($scope.appData.myAccount)\r\n $scope.appData.myAccount.status = 0;\r\n $scope.appData.token = null;\r\n }\r\n $scope.appData.showSpinner = false;\r\n\r\n lobbyUiService.loader.hide();\r\n };\r\n\r\n $scope.isTouchIDSupported = false;\r\n //isTouchIDAvailable.isAvailable().then(\r\n //function () {\r\n // $scope.isTouchIDSupported = true;\r\n //},\r\n //function (error) {\r\n // $scope.isTouchIDSupported = false;\r\n // console.log(error);\r\n //});\r\n\r\n\r\n $scope.routeTouchChecked = lobbyUiService.getParams('takanonTouch') || false;\r\n $scope.isTouchIDChecked = Boolean($scope.routeTouchChecked) == true ? true : EncryptionService.getTouchTakanon();\r\n $scope.isTouchReq = EncryptionService.getIsTouchReq();\r\n $scope.restrictedArea = false;\r\n $scope.restrictedArea = lobbyUiService.getParams('restricted') || false;\r\n $scope.touchNotLogin = false;\r\n if (EncryptionService.getTouchLogin()) {\r\n $scope.touchNotLogin = true;\r\n }\r\n\r\n $scope.showTouchResBtn = function () {\r\n if ($scope.isTouchIDSupported) {\r\n if ($scope.isTouchReq) {\r\n return false;\r\n } else if ($scope.isTouchIDChecked) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // invoke the touch popup\r\n if ($scope.isTouchReq && !$scope.restrictedArea) {\r\n touchKeyStore.getKey().then(\r\n function (result) {\r\n $scope.touchGuid = result;\r\n $scope.isTouchReq = true;\r\n EncryptionService.setIsTouchReq(true);\r\n\r\n lobbyUiService.loader.show();\r\n var promise = connection.postTouchLogin($scope.touchGuid);\r\n promise.then(function (response) {\r\n\r\n if (response.Response.Status.SeverityCode == \"I\" && response.Response.Status.SeverityNumber == \"001\") {\r\n lobbyUiService.loader.hide();\r\n lobbyUiService.popup.expertionTouchTime(response.Response.Status.Message);\r\n }\r\n else {\r\n\r\n $scope.appData.token = response.AuthenticationToken;\r\n connection.token = response.AuthenticationToken;\r\n dataService.sessionManager.save('authToken', connection.token);\r\n\r\n var isNotRegistered357 = register357Service.isNotRegistered357(response.Response);\r\n //set keyChain\r\n touchKeyStore.setKey(EncryptionService.setHash(response.TouchGuid));\r\n EncryptionService.setTouchLogin(true);\r\n\r\n $scope.getAccount(response.Response.Custom == \"otp\", isNotRegistered357);\r\n }\r\n\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error, $scope.init);\r\n });\r\n },\r\n function (result) {\r\n console.log(result);\r\n });\r\n }\r\n\r\n var showTouchReqOk = function () {\r\n\r\n $('body').append('
' +\r\n '
' +\r\n '
' +\r\n '

הצטרפותך לשירות

' +\r\n '

כניסה באמצעות טביעת אצבע

' +\r\n '

אושרה בהצלחה

' +\r\n '
' +\r\n '
');\r\n\r\n setTimeout(function () {\r\n $('#touchOverlay').remove();\r\n }, 3000);\r\n }\r\n\r\n /** Touch Id functionality end **/\r\n\r\n $scope.goButtonPressed = function () {\r\n $scope.login();\r\n };\r\n\r\n $scope.login = function () {\r\n \r\n /* touch: isTouchIDChecked*/\r\n if ($scope.isTouchIDChecked) {\r\n $scope.loginDetails.touchFlag = true;\r\n $scope.loginDetails.uuid = EncryptionService.getUuid();\r\n } else {\r\n $scope.loginDetails.touchFlag = false;\r\n }\r\n\r\n /* touch: end isTouchIDChecked*/\r\n\r\n var command = lobbyUiService.getParams('command') || '';\r\n if (command === 'open-chat') {\r\n window.loginChatWindow = lobbyUiService.openExternal('', '', true);\r\n }\r\n\r\n var promise = connection.login($scope.loginDetails);\r\n\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n\r\n promise.then(function (response) {\r\n $scope.appData.token = response.AuthenticationToken;\r\n\r\n /* touch: call EncryptionService*/\r\n EncryptionService.setTouchLogin(false);\r\n if (response.TouchGuid != '') {\r\n showTouchReqOk();\r\n //notify callVU\r\n //set keyChain\r\n touchKeyStore.setKey(EncryptionService.setHash(response.TouchGuid));\r\n EncryptionService.setIsTouchReq(true);\r\n }\r\n\r\n /* touch: call EncryptionService*/\r\n\r\n //if come from ivr and touchFlag=true and login succeed than notify callvu\r\n\r\n var isNotRegistered357 = register357Service.isNotRegistered357(response.Response);\r\n\r\n $scope.getAccount(false, isNotRegistered357);\r\n\r\n }, function (error) {\r\n window.loginChatWindow && window.loginChatWindow.close();\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error, $scope.login);\r\n });\r\n };\r\n\r\n $scope.getAccount = function (isOtp, isNotRegistered357) {\r\n var accountPromise = connection.getAccount();\r\n accountPromise.then(function (response) {\r\n\r\n $scope.appData.CustomerInfo = response.CustomerInfo;\r\n\r\n $scope.appData.BankAccounts = $scope.filterAccountByIsEffective(response.BankAccounts);\r\n \r\n\r\n if (!$scope.appData.BankAccounts || $scope.appData.BankAccounts.length == 0) {\r\n errorService.handleError([\r\n {\r\n response: {\r\n Response: {\r\n Status: {\r\n SeverityCode: 'E',\r\n SeverityNumber: '001'\r\n },\r\n DialogBox: {\r\n Content: 'לא ניתן לקבל מידע אודות הכרטיסים שברשותך. באפשרותך לפנות לאתר Cal-Online.',\r\n Title: '',\r\n OKButtonText: 'סגור'\r\n }\r\n }\r\n },\r\n action: \"noCards\"\r\n }\r\n ], $scope.getAccount);\r\n\r\n dataService.sessionManager.save('appData', $scope.appData);\r\n return;\r\n }\r\n\r\n dataService.sessionManager.save('appData', $scope.appData);\r\n\r\n $scope.appData.needRefreshAccount = false;\r\n\r\n $scope.routeParams.nextPage = lobbyUiService.getParams('nextPage') || 'dw.myaccount';\r\n $scope.routeParams.command = lobbyUiService.getParams('command') || '';\r\n \r\n $scope.routeParams.type = lobbyUiService.getParams('type') || '1';\r\n\r\n $scope.routeParams.sso = lobbyUiService.getParams('sso') || false;\r\n\r\n $scope.routeParams.query = $stateParams.query;\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n $rootScope.$broadcast('accountLoggedIn', response);\r\n\r\n var query = $scope.routeParams.query;\r\n try {\r\n query = JSON.parse($scope.routeParams.query);\r\n }\r\n catch(e) {}\r\n\r\n var nextpageParams = angular.extend({\r\n location: 'replace'\r\n }, query);\r\n\r\n if (isNotRegistered357) {\r\n register357Service.setOtp(isOtp);\r\n\r\n lobbyUiService.navigate('dw.register357', { nextPage: $scope.routeParams.nextPage, type: $scope.routeParams.type, sso: $scope.routeParams.sso, command: $scope.routeParams.command, location: 'replace', query: $scope.routeParams.query },\r\n {\r\n location: 'replace'\r\n });\r\n\r\n return;\r\n } else {\r\n lobbyUiService.navigate($scope.routeParams.nextPage, { type: $scope.routeParams.type, sso: $scope.routeParams.sso, command: $scope.routeParams.command, location: 'replace', query: $scope.routeParams.query },\r\n query);\r\n //debtInfoService.getCustDebtInfo($scope);\r\n kycRefreshCustomerService.refreshCustomerDetails($scope);\r\n return;\r\n } \r\n\r\n }, function (error) {\r\n\r\n errorService.handleError(error, $scope.getAccount);\r\n });\r\n\r\n }\r\n\r\n $scope.toggleTitle = 'לכניסה באמצעות שם משתמש';\r\n\r\n $scope.toggleLogin = function () {\r\n \r\n if ($scope.slider.notFinish)\r\n return;\r\n\r\n var tempStage;\r\n\r\n $scope.slider.notFinish = true;\r\n\r\n if ($scope.slider.expanded) {\r\n //console.log('OTP');\r\n $scope.title = 'התחבר';\r\n tempStage = 0;\r\n googleAnalyticsService.insertEvent({ page: 'login', id: 2 });\r\n $scope.toggleTitle = 'לכניסה באמצעות שם משתמש';\r\n\r\n } else {\r\n $scope.title = 'התחבר';\r\n tempStage = 1;\r\n //console.log('login');\r\n googleAnalyticsService.insertEvent({ page: 'login', id: 1 });\r\n $scope.toggleTitle = 'לכניסה באמצעות ת.ז';\r\n }\r\n $timeout(function () {\r\n $scope.slider.expanded = !$scope.slider.expanded;\r\n $scope.stage = tempStage;\r\n }, 0);\r\n }\r\n\r\n $scope.filterAccountByIsEffective = function (accounts) {\r\n var copyAccounts = angular.copy(accounts);\r\n\r\n var filterAccounts = [];\r\n\r\n _.each(copyAccounts, function (account) {\r\n var filterCards = _.filter(account.Cards, function (card) {\r\n return card.IsEffectiveInd == true;\r\n });\r\n\r\n if (filterCards.length > 0) {\r\n account.Cards = filterCards;\r\n filterAccounts.push(account);\r\n }\r\n });\r\n\r\n return filterAccounts;\r\n }\r\n\r\n $scope.resetLogin = function () {\r\n $scope.title = 'התחברות';\r\n $timeout(function () {\r\n $scope.$apply(function () {\r\n //var obj1 = $('.slideable');\r\n //obj1[0].style.position = 'fixed';\r\n var obj2 = $('#otp0');\r\n obj2[0].style.display = 'block';\r\n $scope.stage = 0;\r\n });\r\n }, 500);\r\n\r\n }\r\n\r\n $scope.logCall = function () {\r\n googleAnalyticsService.insertEvent({ page: 'login', id: 5 });\r\n }\r\n\r\n $scope.sendOtp = function () {\r\n if (fromVouchers) {\r\n googleAnalyticsService.trackPage('/vp/digital-voucher/otp/form-submit/');\r\n }\r\n if (!$scope.validateOtp()) return;\r\n googleAnalyticsService.insertEvent({ page: 'login', id: 3 });\r\n\r\n if (ionic.Platform.isAndroid()) {\r\n SmsService.getOtpPassword().then(function (code) {\r\n $timeout(function () {\r\n if (code && code[0])\r\n $scope.loginDetails.otpPass = code[0];\r\n }, 0);\r\n\r\n }, function (data) {\r\n //console.log(data);\r\n });\r\n }\r\n\r\n $scope.stage = 0;\r\n var promise = connection.postCalWalletSendOTP($scope.CustomerInfo.idNum, $scope.CustomerInfo.last4Digits);\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n\r\n promise.then(function (response) {\r\n\r\n $scope.tempToken = response.Token;\r\n $scope.phoneNumber = response.PhoneNumber;\r\n $scope.stage = 2;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n \r\n if (response.OTP) {\r\n $scope.loginDetails.otpPass = response.OTP;\r\n $scope.verifyOtp();\r\n }\r\n else {\r\n $scope.loginDetails.otpPass = '';\r\n }\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('loginScroll').scrollTop();\r\n }, 0);\r\n\r\n }, function (error) {\r\n errorService.handleError(error, $scope.sendOtp);\r\n });\r\n };\r\n\r\n $scope.verifyOtp = function () {\r\n if (fromVouchers) {\r\n googleAnalyticsService.trackPage('/vp/digital-voucher/otp/code-entered/');\r\n }\r\n\r\n if ($scope.loginDetails.otpPass.toString().length == 0) {\r\n $scope.alert('יש למלא סיסמה', 'אישור');\r\n return;\r\n }\r\n\r\n if ($scope.loginDetails.otpPass.toString().length < 6) {\r\n $scope.alert('הסיסמה שהוזנה אינה תקינה', 'אישור');\r\n return;\r\n }\r\n\r\n googleAnalyticsService.insertEvent({ page: 'login', id: 4 });\r\n\r\n /* touch: EncryptionService.getUuid */\r\n $scope.loginDetails.uuid = EncryptionService.getUuid();\r\n /* touch: end EncryptionService.getUuid */\r\n\r\n var command = lobbyUiService.getParams('command') || '';\r\n if (command === 'open-chat') {\r\n window.loginChatWindow = lobbyUiService.openExternal('', '', true);\r\n }\r\n\r\n var promise = connection.postCalWalletVerifyOTP($scope.tempToken, $scope.loginDetails.otpPass, $scope.isTouchIDChecked, $scope.loginDetails.uuid);\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n promise.then(function (response) {\r\n\r\n $scope.appData.token = response.AuthenticationToken;\r\n connection.token = response.AuthenticationToken;\r\n errorService.token = response.AuthenticationToken;\r\n dataService.sessionManager.save('authToken', connection.token);\r\n\r\n /* touch: setTouchLogin */\r\n\r\n EncryptionService.setTouchLogin(false);\r\n if (response.TouchGuid != '') {\r\n showTouchReqOk();\r\n //set keyChain\r\n touchKeyStore.setKey(EncryptionService.setHash(response.TouchGuid));\r\n EncryptionService.setIsTouchReq(true);\r\n }\r\n /* touch: end setTouchLogin */\r\n\r\n $scope.nextPage = lobbyUiService.getParams('nextPage');\r\n $scope.command = lobbyUiService.getParams('command');\r\n if (!$scope.nextPage)\r\n $scope.nextPage = 'dw.lobby';\r\n\r\n var isNotRegistered357 = register357Service.isNotRegistered357(response.Response);\r\n\r\n $scope.getAccount(true, isNotRegistered357);\r\n\r\n }, function (error) {\r\n errorService.handleError(error, $scope.verifyOtp);\r\n window.loginChatWindow && window.loginChatWindow.close();\r\n });\r\n };\r\n\r\n $scope.validateOtp = function () {\r\n //padding for phone number\r\n var errMsg = '';\r\n if (!$scope.CustomerInfo) {\r\n errMsg = 'יש למלא ת.ז.';\r\n } else {\r\n var id = $scope.CustomerInfo.idNum;\r\n //padding for id\r\n if (id && id.length > 4) {\r\n var padding = '';\r\n for (var i = 9 - id.length; i > 0; i--) {\r\n padding += '0';\r\n }\r\n id = padding + id;\r\n }\r\n\r\n if ($scope.forms.otpForm.$valid) {\r\n if ($scope.CustomerInfo.last4Digits.length > 3) {\r\n if ($scope.validateId(id)) {\r\n $scope.CustomerInfo.idNum = id;\r\n return true;\r\n } else {\r\n errMsg = 'מספר ת.ז. שהוזן אינו תקין.';\r\n }\r\n } else if (!$scope.validateId(id)) {\r\n errMsg = 'אחד מהנתונים שהוזנו אינו תקין';\r\n } else {\r\n errMsg = '4 ספרות אחרונות של כרטיס אשראי אינן תקינות.';\r\n }\r\n } else { //if the form is not valid\r\n if ($scope.forms.otpForm.$error.required.length > 1) {\r\n errMsg = 'יש למלא ת.ז.';\r\n } else if ($('#idNum').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ת.ז.';\r\n else if ($('#4Digits').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא 4 ספרות אחרונות של כרטיס אשראי.';\r\n else if ($('#idNum').val().length < 5) {\r\n errMsg = 'יש למלא מספר ת.ז. בן 9 ספרות.';\r\n if ($('#4Digits').val().length < 4 || !$scope.validateId(id)) {\r\n errMsg = 'אחד מהנתונים שהוזנו אינו תקין';\r\n }\r\n } else if ($('#4Digits').val().length < 4) {\r\n errMsg = '4 ספרות אחרונות של כרטיס אשראי אינן תקינות.';\r\n if (!$scope.validateId(id)) {\r\n errMsg = 'אחד מהנתונים שהוזנו אינו תקין';\r\n }\r\n } else if (!$scope.validateId(id)) {\r\n errMsg = 'מספר ת.ז. שהוזן אינו תקין.';\r\n }\r\n }\r\n }\r\n\r\n $scope.alert(errMsg, 'סגור');\r\n\r\n return false;\r\n };\r\n\r\n $scope.alert = function (errMsg, btnTxt) {\r\n if (navigator.notification)\r\n navigator.notification.alert(\r\n errMsg,\r\n function () {\r\n /*Do Nothing*/\r\n },\r\n ' ',\r\n btnTxt\r\n );\r\n else {\r\n lobbyUiService.popup.alert(errMsg, 'נא לשים לב');\r\n }\r\n }\r\n\r\n $scope.validateId = function (id) {\r\n var idnum = id;\r\n\r\n var idnum1 = idnum.substr(0, 1) * 1;\r\n var idnum2 = idnum.substr(1, 1) * 2;\r\n var idnum3 = idnum.substr(2, 1) * 1;\r\n var idnum4 = idnum.substr(3, 1) * 2;\r\n var idnum5 = idnum.substr(4, 1) * 1;\r\n var idnum6 = idnum.substr(5, 1) * 2;\r\n var idnum7 = idnum.substr(6, 1) * 1;\r\n var idnum8 = idnum.substr(7, 1) * 2;\r\n var idnum9 = idnum.substr(8, 1) * 1;\r\n\r\n if (idnum1 > 9)\r\n idnum1 = (idnum1 % 10) + 1;\r\n if (idnum2 > 9)\r\n idnum2 = (idnum2 % 10) + 1;\r\n if (idnum3 > 9)\r\n idnum3 = (idnum3 % 10) + 1;\r\n if (idnum4 > 9)\r\n idnum4 = (idnum4 % 10) + 1;\r\n if (idnum5 > 9)\r\n idnum5 = (idnum5 % 10) + 1;\r\n if (idnum6 > 9)\r\n idnum6 = (idnum6 % 10) + 1;\r\n if (idnum7 > 9)\r\n idnum7 = (idnum7 % 10) + 1;\r\n if (idnum8 > 9)\r\n idnum8 = (idnum8 % 10) + 1;\r\n if (idnum9 > 9)\r\n idnum9 = (idnum9 % 10) + 1;\r\n\r\n var sumval = idnum1 + idnum2 + idnum3 + idnum4 + idnum5 + idnum6 + idnum7 + idnum8 + idnum9;\r\n\r\n sumval = sumval % 10;\r\n if (sumval > 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n $scope.analytics4NonCustomer = function(){ \r\n googleAnalyticsService.trackPage('/vp/click/not-cal-customer');\r\n }\r\n\r\n //add blue bg after slider is up\r\n //console.log('on transitionend');\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n angular.module('digitalWallet')\r\n .controller('register357Controller', register357Controller);\r\n\r\n register357Controller.$inject = [\r\n '$scope', '$rootScope', 'connection', 'appData', '$sce', 'lobbyUiService', 'register357Service', '$ionicScrollDelegate', '$state',\r\n '$timeout', '$ionicSideMenuDelegate', '$ionicNavBarDelegate', 'lobbyStorageService', 'errorService'\r\n ];\r\n\r\n function register357Controller($scope, $rootScope, connection, appData, $sce, lobbyUiService, register357Service, $ionicScrollDelegate, $state, $timeout, $ionicSideMenuDelegate, $ionicNavBarDelegate, lobbyStorageService, errorService) {\r\n var internetChannelIndex = 3;\r\n var cellularChannelIndex = 2;\r\n var successMessage = 'תודה שהגדרת את ערוצי המידע והתקשורת שלך עכשיו תוכל לעשות מה שטוב בשבילך בכל הערוצים המקוונים של חברת Cal';\r\n\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n $scope.appData.isHideNavicon = $state.current.data.isHideNavicon;\r\n\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.bankCharges' }, { location: 'replace' });\r\n return;\r\n } else if (register357Service.is357Done()) {\r\n lobbyUiService.go('dw.lobby');\r\n return;\r\n }\r\n\r\n $ionicSideMenuDelegate.canDragContent(false);\r\n\r\n $timeout(function () {\r\n $scope.appData.backOverrideFN = $scope.goBackAndKillSession;\r\n }, 100);\r\n\r\n $scope.title = \"הגדרות ערוצי השירות והמידע\";\r\n\r\n $scope.register357Form = new Object();\r\n $scope.register357Form.isShowList = true;\r\n $scope.register357Form.agreeToTerms = true;\r\n $scope.register357Form.switchButton = { isChecked: true };\r\n $scope.register357Form.channels = register357Service.getInitData();\r\n\r\n $scope.setSelectedItem = function (item, index) {\r\n $scope.register357Form.channels[index].selected.channelId = index + 1;\r\n $scope.register357Form.channels[index].selected.levelId = item.id;\r\n };\r\n\r\n $scope.register357Form.update = function () {\r\n if (isDataValid()) {\r\n if ($scope.register357Form.agreeToTerms) {\r\n lobbyUiService.loader.show();\r\n\r\n register357Service.update($scope.register357Form.channels).then(function (data) {\r\n lobbyUiService.loader.hide();\r\n\r\n if (data.Response.Status.SeverityCode == 'W' && data.Response.Status.SeverityNumber == '003') {\r\n register357Service.getMessage('יש לבצע הזדהות על מנת לבצע פעולה זו.', function () {\r\n lobbyUiService.go('dw.login', { nextPage: 'register357' });\r\n return;\r\n });\r\n } else if (data.Response.Status.SeverityCode != 'S') {\r\n register357Service.getMessage('לא ניתן לבצע את הפעולה אנא נסה שוב במועד מאוחר יותר.', function () {\r\n lobbyUiService.go('dw.login', { nextPage: 'register357' });\r\n return;\r\n });\r\n } else {\r\n\r\n register357Service.getMessage(successMessage, function () {\r\n\r\n var nextPage = lobbyUiService.getParams('nextPage');\r\n\r\n var type = lobbyUiService.getParams('type') != '' ? lobbyUiService.getParams('type') : '1';\r\n\r\n var sso = lobbyUiService.getParams('sso');\r\n\r\n var command = lobbyUiService.getParams('command') || '';\r\n\r\n register357Service.set357Done();\r\n $scope.appData.isHideNavicon = false;\r\n $scope.appData.backOverrideFN = null;\r\n\r\n $ionicSideMenuDelegate.canDragContent(true);\r\n\r\n lobbyUiService.navigate(nextPage, { type: type, sso: sso, command: command }, { location: 'replace' });\r\n });\r\n }\r\n\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n\r\n errorService.handleError(error);\r\n //register357Service.getMessage('שגיאת מערכת');\r\n });\r\n } else {\r\n lobbyUiService.popup.alert('יש לאשר תנאים משפטיים');\r\n }\r\n }\r\n };\r\n\r\n var isDataValid = function () {\r\n var isOtp = register357Service.getIsOtp();\r\n\r\n if (isOtp && !register357Service.isInternetAndCellularChecked($scope.register357Form.channels,\r\n internetChannelIndex,\r\n cellularChannelIndex)) {\r\n register357Service.getMessage('יש לאשר ביצוע פעולות וקבלת מידע בערוצים אינטרנט וסלולר בכדי ליהנות משירות זה.', function () {\r\n $scope.register357Form.channels[internetChannelIndex].selected.levelId = 3;\r\n $scope.register357Form.channels[cellularChannelIndex].selected.levelId = 3;\r\n });\r\n\r\n // remove after modal test\r\n $scope.register357Form.channels[internetChannelIndex].selected.levelId = 3;\r\n $scope.register357Form.channels[cellularChannelIndex].selected.levelId = 3;\r\n\r\n return false;\r\n } else if (!isOtp && !register357Service.isInternetChecked($scope.register357Form.channels, internetChannelIndex)) {\r\n register357Service.getMessage('יש לאשר ביצוע פעולות וקבלת מידע בערוץ אינטרנט בכדי ליהנות משירות זה.', function () {\r\n $scope.register357Form.channels[internetChannelIndex].selected.levelId = 3;\r\n });\r\n\r\n // remove after modal test\r\n $scope.register357Form.channels[internetChannelIndex].selected.levelId = 3;\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n $scope.register357Form.doc = {\r\n url: 'CalDocs?id=Register357.html'\r\n }\r\n\r\n $scope.register357Form.goToInfo = function () {\r\n $scope.title = 'תקנון התכנית';\r\n $scope.register357Form.showTerms = true;\r\n $scope.appData.backOverrideFN = $scope.goBack;\r\n };\r\n\r\n $scope.goBack = function () {\r\n if ($scope.register357Form.showTerms) {\r\n $scope.title = 'הגדרות ערוצי השירות והמידע';\r\n $scope.register357Form.showTerms = false;\r\n\r\n $timeout(function () {\r\n $scope.appData.backOverrideFN = $scope.goBackAndKillSession;\r\n }, 100);\r\n }\r\n\r\n return;\r\n }\r\n\r\n $scope.goBackAndKillSession = function () {\r\n //console.log('$scope.goBackAndKillSession');\r\n\r\n lobbyStorageService.clearAppData();\r\n connection.logout($scope.appData.token);\r\n\r\n $ionicSideMenuDelegate.canDragContent(true);\r\n $scope.appData.isHideNavicon = false;\r\n lobbyUiService.go('dw.login', { nextPage: 'register357' });\r\n\r\n $scope.appData.backOverrideFN = null;\r\n\r\n return;\r\n };\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $scope.appData.backOverrideFN = null;\r\n $scope.appData.isHideNavicon = false;\r\n $ionicSideMenuDelegate.canDragContent(true);\r\n });\r\n\r\n $ionicScrollDelegate.$getByHandle('reg357Scroll').scrollTop();\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .controller(\"serviceCtrl\", serviceCtrl);\r\n\r\n serviceCtrl.$inject = [\r\n '$scope', '$rootScope', 'lobbyDataService'\r\n ];\r\n\r\n function serviceCtrl($scope, $rootScope, lobbyDataService) {\r\n $scope.callCenters = [];\r\n\r\n lobbyDataService.getCallCenters().then(function (callCenter) {\r\n $scope.callCenters = callCenter;\r\n });\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n \r\n /* touch: touchTaknonCtrl*/\r\n angular.module(\"digitalWallet\")\r\n .controller(\"touchTaknonCtrl\", touchTaknonCtrl);\r\n\r\n touchTaknonCtrl.$inject = ['$scope', '$state', 'EncryptionService', 'lobbyUiService'];\r\n\r\n function touchTaknonCtrl($scope, $state, EncryptionService, lobbyUiService) {\r\n\r\n $scope.ckTouchAgree1 = false;\r\n $scope.ckTouchAgree2 = false;\r\n\r\n $scope.move2login = function () {\r\n // EncryptionService.setTouchTakanon(true);\r\n lobbyUiService.navigate(\"dw.login\", { location: 'replace' }, { takanonTouch: true });\r\n }\r\n\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"iframeOnload\", iframeOnload);\r\n\r\n function iframeOnload() {\r\n return {\r\n restrict: 'A',\r\n scope: { \r\n callback: '&iframeOnload', \r\n },\r\n link: function (scope, element, attrs) { \r\n element.on('load', function () {\r\n return scope.callback();\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"customInput\", customInput);\r\n\r\n function customInput() {\r\n return {\r\n restrict: \"A\",\r\n link: function (scope, element) {\r\n element.attr({ autocomplete: 'off', autocapitalize: 'off', spellcheck: 'false', autocorrect: 'off' });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"dwAppBanners\", dwAppBanners);\r\n\r\n dwAppBanners.$inject = [\r\n '$rootScope', '$timeout', '$ionicSlideBoxDelegate', '$ionicScrollDelegate', 'lobbyUiService', 'lobbyDataService',\r\n 'lobbyStateService', 'appData'\r\n ];\r\n\r\n function dwAppBanners($rootScope, $timeout, $ionicSlideBoxDelegate, $ionicScrollDelegate, lobbyUiService, lobbyDataService,\r\n lobbyStateService, appData) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n controller: [\r\n '$scope', function ($scope) {\r\n $scope.banners = [];\r\n $scope.openExternalLink = function (url) {\r\n lobbyUiService.openExternal(url);\r\n }\r\n }\r\n ],\r\n templateUrl: 'app/main/templates/banners.html',\r\n link: function ($scope, element, attrs) {\r\n\r\n var initializeSlider = function (banners, shouldUpdate) {\r\n var module = lobbyDataService.getModule();\r\n if (!module)\r\n return;\r\n\r\n var moduleBanners = module.banners;\r\n\r\n\r\n moduleBanners = moduleBanners.filter(function (item) { return banners.indexOf(item.image) != -1 });\r\n $scope.banners = moduleBanners;\r\n if ($scope.banners.length == 1) {\r\n $scope.bannersShowPager = false;\r\n }\r\n else {\r\n $scope.bannersShowPager = true;\r\n }\r\n $timeout(function () {\r\n if (shouldUpdate) {\r\n $ionicSlideBoxDelegate.$getByHandle('bannersHandler').update();\r\n }\r\n if (!appData.bannersLoaded) {\r\n appData.bannersLoaded = true;\r\n $rootScope.$broadcast('bannersLoaded');\r\n }\r\n }, 200);\r\n }\r\n\r\n lobbyDataService.loadMetaData().then(function () {\r\n\r\n // try get all banners\r\n var banners = lobbyUiService.bannersArchive.getAll();\r\n if (!banners)\r\n return;\r\n\r\n if (banners.length == 0) {\r\n banners = lobbyUiService.bannersArchive.create(lobbyDataService.modules()).getAll();\r\n lobbyUiService.preloadImages(banners).then(function (data) {\r\n banners = $.map(data, function (img) { return img.image; });\r\n lobbyUiService.bannersArchive.fill(banners);\r\n initializeSlider(banners, true);\r\n });\r\n }\r\n else {\r\n initializeSlider(banners, false);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive('dwHeaderLogo', dwHeaderLogo);\r\n\r\n dwHeaderLogo.$inject = ['$q', '$timeout', 'lobbyStateService'];\r\n\r\n function dwHeaderLogo($q, $timeout, lobbyStateService) {\r\n return {\r\n restrict: \"EA\",\r\n replace: true,\r\n controller: [\r\n '$scope', function ($scope) {\r\n $scope.hasHistory = false;\r\n $scope.$on('lobbyEvent::ContentReady', function () {\r\n $timeout(function () {\r\n $scope.hasHistory = !lobbyStateService.current.resolve().isLobbyView();\r\n }, 100);\r\n });\r\n\r\n $scope.$on('lobbyEvent::StateChanged', function () {\r\n $timeout(function () {\r\n $scope.hasHistory = !lobbyStateService.current.resolve().isLobbyView();\r\n }, 100);\r\n });\r\n }\r\n ],\r\n template: '
',\r\n link: function ($scope) {\r\n $timeout(function () {\r\n $scope.hasHistory = !lobbyStateService.current.resolve().isLobbyView();\r\n }, 100);\r\n\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"dwHtmlContent\", dwHtmlContent);\r\n\r\n dwHtmlContent.$inject = ['$http', 'lobbyUiService', 'lobbyDataService'];\r\n\r\n function dwHtmlContent($http, lobbyUiService, lobbyDataService) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n scope: {\r\n source: '@'\r\n },\r\n controller: [\r\n '$scope', function ($scope) {\r\n lobbyUiService.loader.show();\r\n lobbyDataService.loadHtmlDocument($scope.source).then(\r\n function (data) {\r\n $scope.content = $.parseHTML(data);\r\n lobbyUiService.loader.hide();\r\n },\r\n function () {\r\n lobbyUiService.loader.hide();\r\n }\r\n );\r\n }\r\n ],\r\n template: '
',\r\n link: function ($scope, element) {\r\n $scope.$watch('content', function (newvalue) {\r\n lobbyUiService.loader.show();\r\n if (newvalue) {\r\n var current;\r\n for (var i = 0; i < newvalue.length; i++) {\r\n current = $(newvalue[i]).html();\r\n if (current && current.length > 0) {\r\n element.append($.trim($(newvalue[i]).html()));\r\n }\r\n }\r\n setTimeout(function () {\r\n element.addClass('active');\r\n lobbyUiService.loader.hide();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"dwMenuContent\", dwMenuContent);\r\n\r\n dwMenuContent.$inject = ['$rootScope', '$ionicSideMenuDelegate', '$ionicPlatform', '$timeout', 'lobbyUiService', 'lobbyDataService', 'errorService'];\r\n\r\n function dwMenuContent($rootScope, $ionicSideMenuDelegate, $ionicPlatform, $timeout, lobbyUiService, lobbyDataService, errorService) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n templateUrl: 'app/main/templates/slide-menu.html',\r\n controller: [\r\n '$scope', function ($scope) {\r\n $scope.menuItems = [];\r\n }\r\n ],\r\n link: function ($scope, element, attrs) {\r\n var bind = function () {\r\n $('a.item', element).on('click', function () {\r\n $ionicSideMenuDelegate.toggleRight();\r\n });\r\n }\r\n var initialize = function () {\r\n var menuItems = lobbyUiService.clearDependencies(lobbyDataService.sideMenuItems());\r\n $scope.menuItems = menuItems.map(function (parentItem) {\r\n parentItem.items = _.filter(parentItem.items, function (_item) {\r\n return !_item.hideType || _item.hideType != 2;\r\n });\r\n\r\n return parentItem;\r\n });\r\n }\r\n\r\n $scope.$on('accountLoggedIn', function (source, accountData) {\r\n $timeout(function () {\r\n initialize();\r\n }, 500);\r\n });\r\n\r\n $scope.$on('loggedOut', function (event, response) {\r\n $timeout(function () {\r\n initialize();\r\n }, 550);\r\n });\r\n\r\n /* touch: */\r\n $scope.$on('logoutTouch', function (event, response) {\r\n $timeout(function () {\r\n initialize();\r\n }, 550);\r\n });\r\n /* touch: */\r\n\r\n //$scope.$on('lobbyEvent::ContentReady', function(source, data) {\r\n // initialize();\r\n //});\r\n\r\n //lobbyDataService.waitForMetaData().then(function() { initialize(); });\r\n\r\n lobbyDataService.loadMetaData().then(function () {\r\n initialize();\r\n }, function (error) {\r\n errorService.handleError(error);\r\n });\r\n\r\n $timeout(bind, 0);\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"dwMenuFooter\", dwMenuFooter);\r\n\r\n dwMenuFooter.$inject = ['$timeout', 'lobbyDataService', 'lobbyUiService'];\r\n\r\n function dwMenuFooter($timeout, lobbyDataService, lobbyUiService) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n controller: [\r\n '$scope', function ($scope) {\r\n $scope.footerData = {\r\n version: null,\r\n lastEntry: null\r\n };\r\n }\r\n ],\r\n template: '
תאריך כניסה אחרון: {{footerData.lastEntry}}
גרסה: {{footerData.version}}
',\r\n link: function ($scope) {\r\n var initialize = function (accountData) {\r\n $scope.footerData = {\r\n version: lobbyDataService.getVersion()\r\n };\r\n\r\n if (accountData && lobbyUiService.connection.isLoggedIn()) {\r\n $scope.footerData.lastEntry = accountData.CustomerInfo.LastEntryDate;\r\n }\r\n }\r\n\r\n $scope.$on('accountLoggedIn', function (source, accountData) {\r\n $timeout(function () {\r\n initialize(accountData);\r\n }, 550);\r\n });\r\n\r\n $scope.$on('loggedOut', function () {\r\n $scope.footerData.lastEntry = null;\r\n });\r\n\r\n lobbyDataService.loadMetaData().then(function () {\r\n initialize();\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"dwModuleMenu\", dwModuleMenu);\r\n\r\n dwModuleMenu.$inject = ['$q', '$timeout', 'lobbyUiService', 'lobbyDataService', 'lobbyStateService', '$window'];\r\n\r\n function dwModuleMenu($q, $timeout, lobbyUiService, lobbyDataService, lobbyStateService, $window) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n templateUrl: 'app/main/templates/module-menu.html',\r\n controller: [\r\n '$scope', function ($scope) {\r\n $scope.items = [];\r\n $scope.filteredItems = [];\r\n $scope.alignedMenuItems = \"\";\r\n $scope.alignedMenuItemsContainer = \"\";\r\n $scope.alignedMenusContainer = \"\";\r\n }\r\n ],\r\n link: function (scope, element) {\r\n\r\n var MAX_MODULES = 4; // num of items to fit without scroll\r\n\r\n //scope.setMenuHeight = function () {\r\n // var navContent = $('ion-nav-view.content-body');\r\n\r\n // var targetView = $('> ion-view.module-view:nth-child(2)', navContent);\r\n\r\n // var navHeight = parseFloat(angular.element('ion-nav-bar.content-header').outerHeight());\r\n\r\n // var deviceHeight = parseFloat(angular.element($window).height());\r\n\r\n // if (targetView.length == 0) {\r\n // // animation is done, there is only one instance\r\n // targetView = $('> ion-view.module-view:first-child', navContent);\r\n // }\r\n\r\n // var content = targetView.find('ion-content').first();\r\n\r\n // if (targetView.hasClass('content-view')) {\r\n // // content is textual, set default height\r\n // content.css('height', '45%');\r\n\r\n // element.css('height', deviceHeight - content.height() - navHeight);\r\n // } else {\r\n\r\n // var deviceWidth = parseFloat(angular.element($window).width());\r\n\r\n // var n = deviceHeight - navHeight - (deviceWidth * 0.625);\r\n\r\n // element.css('height', n);\r\n // }\r\n //}\r\n\r\n // create & attach menu elements to list \r\n scope.initialize = function () {\r\n var module = lobbyDataService.moduleMenuItems();\r\n \r\n if (module.parent) {\r\n \r\n element.attr('module', module.parent.index);\r\n element.attr('lobby', lobbyStateService.current.resolve().isLobbyView());\r\n }\r\n\r\n $timeout(function () {\r\n var newItems = lobbyUiService.clearDependencies(module.items);\r\n\r\n if (scope.items.compare(newItems) == false) {\r\n\r\n newItems = _.filter(newItems, function (_item) {\r\n return !_item.hideType || _item.hideType != 1;\r\n });\r\n \r\n //if display equals 2 display menus side by side\r\n scope.items = newItems; \r\n \r\n var display = 0;\r\n\r\n if (module != null)\r\n display = module.display; \r\n if (display == 2) { \r\n scope.alignedMenuItems = \"new-menu-display-item\";\r\n scope.alignedMenuItemsContainer = \"new-menu-display\";\r\n console.log(\"aligned menus\");\r\n scope.alignedMenusContainer = \"aligned-menus-container\";\r\n }\r\n else {\r\n console.log(\"regular menus\");\r\n scope.alignedMenuItems = \"\";\r\n scope.alignedMenuItemsContainer = \"\";\r\n scope.alignedMenusContainer = \"\";\r\n }\r\n\r\n if (scope.items.length == MAX_MODULES) {\r\n // fit exactly N items (without scrolling)\r\n element.addClass('fit');\r\n } else if (scope.items.length > MAX_MODULES) {\r\n // overflow N items, with scroll\r\n element.addClass('overflow');\r\n }\r\n };\r\n }, 0);\r\n }\r\n\r\n lobbyDataService.loadMetaData().then(function () {\r\n scope.initialize();\r\n // scope.setMenuHeight();\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"dwSphereMenu\", dwSphereMenu);\r\n\r\n dwSphereMenu.$inject = ['lobbyDataService', 'lobbyUiService', 'lobbyStateService', '$ionicSideMenuDelegate', 'googleAnalyticsService'];\r\n\r\n function dwSphereMenu(lobbyDataService, lobbyUiService, lobbyStateService, $ionicSideMenuDelegate, googleAnalyticsService) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n template: '
',\r\n link: function ($scope) {\r\n var autoBehavior = {\r\n count: 0,\r\n duration: 5000,\r\n suspended: false,\r\n tick: function () {\r\n this.count += 1000;\r\n },\r\n timeout: function () {\r\n return this.count > this.duration && this.suspended == false;\r\n },\r\n reset: function () {\r\n this.suspended = false;\r\n this.count = 0;\r\n },\r\n suspend: function () {\r\n this.suspended = true;\r\n }\r\n }\r\n\r\n var spheres = [], backdrop = null, menu = null;\r\n\r\n /***\r\n /* show/hide menu & backdrop\r\n /*************************************/\r\n var toggle = function () {\r\n if ($('li:first-child', menu).position().top == 0) {\r\n expand();\r\n } else {\r\n collapse();\r\n }\r\n }\r\n\r\n var expand = function () {\r\n autoBehavior.suspend();\r\n\r\n // show the backdrop & attach click behavior\r\n //backdrop.css({ 'bottom': '0', opacity: '.4' });\r\n backdrop.addClass('pull-down-backdrop').removeClass('push-up-backdrop');\r\n // wait a bit for backdrop animation to progress, then expand menu items\r\n setTimeout(function () {\r\n for (var i = 0; i < spheres.length - 1; i++) {\r\n $(spheres[i]).css({ 'top': (menu.outerHeight() + 6) * (i + 1) * -1, 'opacity': 1 });\r\n }\r\n }, 100);\r\n }\r\n\r\n var collapse = function () {\r\n // hide the side menu\r\n if ($ionicSideMenuDelegate.isOpen()) {\r\n $ionicSideMenuDelegate.toggleRight();\r\n }\r\n backdrop.addClass('push-up-backdrop').removeClass('pull-down-backdrop');\r\n setTimeout(function () {\r\n for (var i = 0; i < spheres.length - 1; i++) {\r\n $(spheres[i]).css({ 'top': '0', 'opacity': '0' });\r\n }\r\n }, 10);\r\n\r\n autoBehavior.reset();\r\n autoHide();\r\n }\r\n\r\n var created = function () {\r\n return !($('.sphere-menu', $('body')).length == 0 && $('.sphere-backdrop', $('body')).length == 0);\r\n }\r\n\r\n var hide = function () {\r\n if (menu)\r\n menu.switchClass('visible', 'hidden');\r\n }\r\n\r\n var show = function () {\r\n if (menu)\r\n menu.switchClass('hidden', 'visible');\r\n }\r\n\r\n var autoHide = function () {\r\n autoBehavior.tick();\r\n //console.log('auto hide :: count: ' + autoBehavior.count + ' :: timeout: ' + autoBehavior.timeout());\r\n if (autoBehavior.timeout()) {\r\n //console.log('auto hide timouet occured!');\r\n autoBehavior.reset();\r\n hide();\r\n } else {\r\n setTimeout(function () { autoHide(); }, 1000);\r\n }\r\n }\r\n\r\n lobbyUiService.notify.verticalSwipe(function () {\r\n //console.log('content has been vertically swiped!')\r\n if (canShow()) {\r\n show();\r\n autoBehavior.reset();\r\n autoHide();\r\n }\r\n });\r\n\r\n var canShow = function () {\r\n var state = lobbyStateService.current.resolve();\r\n return !state.isLobbyView() && !lobbyUiService.sphereMenu.excluded(state);\r\n }\r\n\r\n var initialize = function () {\r\n\r\n var data = lobbyDataService.sphereMenuItems();\r\n\r\n data.push({ caption: '', icon: 'ico-logo', url: '', index: 0.5 }); // home page button \r\n\r\n // create & append ui backdrop to DOM\r\n backdrop = $('
')\r\n .appendTo('BODY')\r\n .on('click', function () {\r\n collapse();\r\n });\r\n\r\n // create & append ui menu elements to DOM\r\n menu = $('
').appendTo('BODY');\r\n\r\n var elements = $('
    ').appendTo(menu);\r\n\r\n // create & attach menu node elements to list \r\n for (var i = 0; i < data.length; i++) {\r\n\r\n //var onclick = data[i].url ? 'click=\"lobbyUiService.navigate(\\'' + data[i].url + '\\')\"' : '';\r\n spheres.push($('
  • ')\r\n .appendTo(elements)\r\n .addClass('sphere-node')\r\n .append($('').\r\n on('click', function () {\r\n\r\n var index = parseInt($(this).attr('id').replace('spr', ''), 10);\r\n\r\n var menue = lobbyDataService.sphereMenuItems();\r\n\r\n if (menue[index]) {\r\n {\r\n var pageId = (menue[index].id) ? parseInt(menue[index].id, 10) : 0;\r\n\r\n googleAnalyticsService.insertEvent({ page: 'all pages', id: pageId });\r\n\r\n lobbyUiService.navigate(menue[index].url, menue[index]);\r\n }\r\n }\r\n }).addClass(data[i].icon)));\r\n }\r\n // attach collalpse behavior to each element\r\n $('li:not(:last-child)', elements).on('click',\r\n function () {\r\n collapse();\r\n }\r\n );\r\n // attach toggle behavior to trigger button\r\n $('li:last-child', menu).on('click', function () {\r\n toggle();\r\n });\r\n }\r\n\r\n $scope.$on('lobbyEvent::ContentReady', function () {\r\n if (!created()) {\r\n initialize();\r\n }\r\n });\r\n\r\n lobbyDataService.loadMetaData().then(function () {\r\n initialize();\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"dwSplash\", dwSplash);\r\n\r\n function dwSplash() {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n templateUrl: 'app/main/templates/splash.html',\r\n controller: [\r\n '$scope', function ($scope) {\r\n $scope.$watch('appData.bannersLoaded', function (newVal) {\r\n if (newVal == true) {\r\n angular.element('ion-view.module-view').removeClass(\"overlay-z\");\r\n }\r\n });\r\n }\r\n ]\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"loginSlider\", loginSlider);\r\n\r\n loginSlider.$inject = ['$timeout'];\r\n\r\n function loginSlider($timeout) {\r\n return function ($scope, $element) {\r\n $element.off('transitionend webkitTransitionEnd oTransitionEnd');\r\n $element.on('transitionend webkitTransitionEnd oTransitionEnd', function () {\r\n $timeout(function () {\r\n $scope.slider.sliderTransitionEnd = !$scope.slider.sliderTransitionEnd && $scope.slider.expanded;\r\n $scope.slider.notFinish = false;\r\n //console.log('end: ' + $scope.slider.sliderTransitionEnd);\r\n }, 0);\r\n\r\n });\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalWallet')\r\n .directive(\"cardsSlider\", cardsSlider);\r\n\r\n cardsSlider.$inject = ['$timeout', '$ionicSlideBoxDelegate'];\r\n\r\n function cardsSlider($timeout, $ionicSlideBoxDelegate) {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n templateUrl: 'app/main/templates/cardsslider.html',\r\n scope: {\r\n account: '=',\r\n hideAccount: '@',\r\n onAccountChange: '&',\r\n onCardChange: '&',\r\n title: '@'\r\n },\r\n link: function (scope, iElement, iAttrs) {\r\n\r\n scope.init = function () {\r\n\r\n scope.initAccountSlider(0).then(function () {\r\n scope.updateCardSlider(0);\r\n });\r\n }\r\n\r\n scope.hasAccount = function () {\r\n return scope.account.bankAccounts && scope.account.bankAccounts.length > 0;\r\n }\r\n\r\n scope.accountNext = function () {\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').next();\r\n\r\n }, 500);\r\n\r\n scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n }\r\n\r\n scope.cardSlideChange = function (index) {\r\n scope.account.currentCardIndex = index;\r\n scope.onCardChange({arg1: index});\r\n }\r\n\r\n scope.accountPrev = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').previous();\r\n\r\n }, 500);\r\n\r\n scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n }\r\n\r\n scope.accountSlideChange = function (index) {\r\n\r\n scope.account.showSlider = false;\r\n\r\n scope.account.currentAccountIndex = index;\r\n\r\n scope.onAccountChange({arg1:index});\r\n\r\n scope.updateCardSlider(0);\r\n }\r\n\r\n scope.initAccountSlider = function (index) {\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').update();\r\n }, 200).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').slide(index);\r\n scope.account.showSlider = true;\r\n });\r\n\r\n scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n scope.updateCardSlider = function (index) {\r\n var _promise = $timeout(function () {\r\n\r\n $ionicSlideBoxDelegate.$getByHandle('cardsHandler').update();\r\n\r\n }, 500).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('cardsHandler').slide(index);\r\n scope.account.showSlider = true;\r\n }).finally(function () {\r\n scope.slideBoxReady = true;\r\n lobbyUiService.loader.hide();\r\n });\r\n\r\n scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n scope.to = function (index) {\r\n $ionicSlideBoxDelegate.$getByHandle('cardsHandler').slide(index);\r\n }\r\n\r\n scope.hideLeftArrow = function (bankAccounts, bankIndex) {\r\n if (scope.account) {\r\n\r\n var currentIndex = scope.account.currentAccountIndex;\r\n\r\n if (typeof bankIndex != 'undefined') {\r\n currentIndex = bankIndex;\r\n }\r\n\r\n return bankAccounts.length <= 1 || currentIndex == 0;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n scope.hideRightArrow = function (bankAccounts, bankIndex) {\r\n\r\n if (scope.account) {\r\n\r\n var currentIndex = scope.account.currentAccountIndex;\r\n\r\n if (typeof bankIndex != 'undefined') {\r\n\r\n currentIndex = bankIndex;\r\n }\r\n\r\n return bankAccounts.length <= 1 || currentIndex == bankAccounts.length - 1;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n scope.init();\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"moduleNode\", moduleNode);\r\n\r\n moduleNode.$inject = ['$q', '$timeout', 'lobbyUiService', 'lobbyDataService', 'lobbyStateService', '$window', '$rootScope'];\r\n\r\n function moduleNode($q, $timeout, lobbyUiService, lobbyDataService, lobbyStateService, $window, $rootScope) {\r\n return {\r\n restrict: 'C',\r\n link: function (scope, element, attrs) {\r\n if (!scope.$last) return;\r\n\r\n var w = angular.element($window);\r\n\r\n w.bind('resize', function () {\r\n scope.setMenuHeight();\r\n });\r\n\r\n var MAX_MODULES = 4; // num of items to fit without scroll\r\n\r\n scope.setMenuHeight = function () {\r\n var modulesList = element.parent();\r\n\r\n var w = angular.element($window);\r\n\r\n\r\n\r\n var o = $('#page-wrapper').width() * 0.625;\r\n\r\n //console.log(modulesList.prev());\r\n\r\n var wrapHomeMenu = modulesList.prev();\r\n if (wrapHomeMenu && wrapHomeMenu.hasClass('contact-section')) {\r\n var h = wrapHomeMenu.outerHeight(true);\r\n if (h > 10) {\r\n o = h;\r\n }\r\n }\r\n\r\n var heightBanner = o;//modulesList.prev().height();\r\n\r\n var heightContainer = modulesList.closest('ion-content').outerHeight(true);\r\n\r\n\r\n var x = Math.ceil(heightContainer - heightBanner) + 1;\r\n\r\n //console.log(\"modulesList.parent()\", modulesList.parent());\r\n //var heightContainer = modulesList.parent().height();\r\n\r\n //if (heightContainer < 260) {\r\n\r\n // heightContainer = modulesList.parent().parent().height();\r\n //}\r\n\r\n //var x = heightContainer - heightBanner;\r\n\r\n //console.log('heightContainer: ', heightContainer);\r\n //console.log('heightBanner: ', heightBanner);\r\n\r\n //console.log('x: ', x);\r\n\r\n if (x <= 220) {\r\n x = 220;\r\n modulesList.parent().css('overflow-y', 'auto');\r\n }\r\n\r\n modulesList.height(x);\r\n\r\n if (modulesList.children().length < MAX_MODULES) {\r\n var y = modulesList.children().length;\r\n modulesList.children().height((100 / y )+ \"%\");\r\n }\r\n }\r\n\r\n //console.log(element.parent().is(':visible'));\r\n // var container = element.parent();\r\n //if (!container.is(':animated')) {\r\n element.parent().slideDown('fast', function () {\r\n // console.log('here');\r\n scope.setMenuHeight();\r\n });\r\n //}\r\n }\r\n\r\n }\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"cal4uIframe\", cal4uIframe);\r\n\r\n cal4uIframe.$inject = ['appSettings', '$rootScope'];\r\n\r\n function cal4uIframe(appSettings, $rootScope) {\r\n return {\r\n replace: true,\r\n template: '',\r\n restrict: \"E\",\r\n scope: {\r\n source: '@src'\r\n },\r\n link: function (scope, element) {\r\n\r\n var params = $rootScope.params;\r\n $rootScope.params = '';\r\n if (!params) params = ''; else params = '#' + params;\r\n\r\n element.attr({ src: appSettings.base + scope.source + params });\r\n }\r\n }\r\n }\r\n\r\n window.addEventListener(\"scroll\", function () {\r\n try {\r\n if (elem[0].style.display != 'none') {\r\n var top = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\r\n console.log(top);\r\n if (top >= elemOffset) {\r\n elem.css('position', 'fixed');\r\n elem.css('top', '80px');\r\n } else {\r\n elem.css('position', 'absolute');\r\n elem.css('top', '200px');\r\n }\r\n }\r\n } catch (e) {\r\n\r\n }\r\n\r\n });\r\n\r\n window.addEventListener('message', function (event) {\r\n try {\r\n var data = JSON.parse(event.data);\r\n if (data.type == 'showSticky') {\r\n if (data.show == 'true') {\r\n elem.css('display', 'block');\r\n } else {\r\n elem.css('display', 'none');\r\n }\r\n }\r\n\r\n if (data.type == 'scroll2Top') {\r\n if (window.pageYOffset > 100) {\r\n $('body').animate({\r\n scrollTop: 0\r\n }, 400);\r\n }\r\n }\r\n\r\n if (data.type == 'changeTitle') {\r\n document.title = data.title;\r\n var metas = document.getElementsByTagName(\"meta\");\r\n for (var i = 0; i < metas.length; i++) {\r\n if (metas[i].name.toLowerCase() == \"description\") {\r\n metas[i].content = data.description;\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n\r\n }\r\n\r\n\r\n });\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"dwModuleHomePageButtons\", dwModuleHomePageButtons);\r\n\r\n dwModuleHomePageButtons.$inject = ['$q', '$timeout', 'lobbyUiService', 'lobbyDataService', 'lobbyStateService', '$window', '_', 'appSettings'];\r\n\r\n function dwModuleHomePageButtons($q, $timeout, lobbyUiService, lobbyDataService, lobbyStateService, $window, _, appSettings) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n templateUrl: 'app/main/templates/home-page-buttons.html',\r\n link: function (scope, element) {\r\n // var md = new MobileDetect($window.navigator.userAgent);\r\n // if (!md.phone() && !md.tablet()) {\r\n // window.location.replace(appSettings.desktopSite);\r\n // }\r\n\r\n if (!window._base.mobileAndTabletcheck()) {\r\n window.location.replace(appSettings.desktopSite);\r\n\r\n }\r\n\r\n var MAX_MODULES = 5; // num of items to fit without scroll\r\n\r\n scope.isHomePageButtons = true;\r\n\r\n scope.setMenuHeight2 = function () {\r\n\r\n var navContent = $('ion-nav-view.content-body');\r\n\r\n var targetView = $('> ion-view.module-view:nth-child(2)', navContent);\r\n\r\n var navHeight = parseFloat(angular.element('ion-nav-bar.content-header').outerHeight());\r\n\r\n var deviceHeight = parseFloat(angular.element($window).height());\r\n\r\n if (targetView.length == 0) {\r\n // animation is done, there is only one instance\r\n targetView = $('> ion-view.module-view:first-child', navContent);\r\n }\r\n\r\n var content = targetView.find('ion-content').first();\r\n\r\n if (targetView.hasClass('content-view')) {\r\n // content is textual, set default height\r\n content.css('height', '45%');\r\n\r\n element.css('height', deviceHeight - content.height() - navHeight);\r\n } else {\r\n\r\n var deviceWidth = parseFloat(angular.element($window).width());\r\n\r\n element.css('height', deviceHeight - navHeight - (deviceWidth * 0.625));\r\n }\r\n\r\n }\r\n\r\n // create & attach menu elements to list \r\n scope.initialize2 = function (metaData) {\r\n scope.homePageButtons = metaData.homePageButton;\r\n\r\n var itemsLength = _.filter(scope.homePageButtons, function (_item) {\r\n return !_item.hideType || _item.hideType != 1;\r\n }).length;\r\n\r\n $timeout(function () {\r\n\r\n if (itemsLength == MAX_MODULES) {\r\n // fit exactly N items (without scrolling)\r\n element.addClass('fit');\r\n } else if (itemsLength > MAX_MODULES) {\r\n // overflow N items, with scroll\r\n element.addClass('overflow');\r\n }\r\n }, 0);\r\n }\r\n\r\n lobbyDataService.loadMetaData().then(function (metaData) {\r\n if (metaData) {\r\n scope.initialize2(metaData);\r\n // scope.setMenuHeight2();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module(\"digitalWallet\")\r\n .directive('searchBarComponent', SearchBarComponent);\r\n\r\n SearchBarComponent.$inject = ['$q', '$timeout', 'lobbyDataService', 'lobbyUiService', 'speachRecognition', 'googleAnalyticsService', '$filter'];\r\n\r\n function SearchBarComponent($q, $timeout, lobbyDataService, lobbyUiService, speachRecognition, googleAnalyticsService, $filter) {\r\n return {\r\n restrict: \"E\",\r\n replace: true,\r\n controller: [\r\n '$scope', function ($scope) {\r\n var searchBy;\r\n\r\n $scope.navigateQueryResult = function (url, item) {\r\n googleAnalyticsService.insertEvent({ page: url, eventName: searchBy, action: 'Click' });\r\n // Navigating to specifec url with his item data.\r\n lobbyUiService.navigate(url, item);\r\n\r\n // When navigating to new page we close the search bar.\r\n $scope.onClose();\r\n }\r\n\r\n $scope.onChange = function () {\r\n searchBy = 'type search';\r\n $scope.filteredItems = $filter('calSearch')($scope.menuItems, $scope.query);\r\n }\r\n\r\n $scope.clearQueryStatment = function () {\r\n googleAnalyticsService.insertEvent({ page: $scope.query, eventName: searchBy, action: 'Click' });\r\n $scope.query = '';\r\n }\r\n\r\n $scope.isListening = false;\r\n\r\n $scope.speechEnd = false;\r\n\r\n $scope.isSupportSR = false;\r\n\r\n\r\n /**\r\n * On user click on the mic icon to activate carolina js listening lifecycle of getting\r\n * User voice as string to our client.\r\n */\r\n $scope.onMicTouch = function () {\r\n $scope.isListening = !speachRecognition.isListening();\r\n\r\n return speachRecognition.isListening() ? speachRecognition.stop() : speachRecognition.start();\r\n };\r\n\r\n\r\n /**\r\n * Closing the navbar component and clearing the query.\r\n */\r\n $scope.onClose = function () {\r\n $scope.clearQueryStatment();\r\n $scope.closeSearchBar();\r\n };\r\n\r\n\r\n /**\r\n * Do manually render trigger the digest cycle.\r\n */\r\n function ngManuallyRender() {\r\n console.log('Try to manually trigger the digest cycle.');\r\n\r\n if (!$scope.$$phase) {\r\n console.log('Start new digest');\r\n $scope.$digest();\r\n }\r\n }\r\n\r\n /**\r\n * Lifecycle of carolina js on start user talking.\r\n */\r\n function onStart(args) {\r\n console.log('ON_START:: Callback => ', args);\r\n }\r\n\r\n\r\n /**\r\n * Lifecycle of carolina js on end user talking.\r\n */\r\n function onEnd(args) {\r\n console.log('ON_END:: Callback => ', args);\r\n\r\n $timeout(function () {\r\n $scope.speechEnd = false;\r\n $scope.isListening = speachRecognition.isListening();\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Lifecycle of carolina js on error.\r\n */\r\n function onError(args) {\r\n console.log('ON_ERROR:: Callback => ', args);\r\n\r\n $scope.isListening = speachRecognition.isListening();\r\n\r\n ngManuallyRender();\r\n }\r\n\r\n\r\n /**\r\n * Lifecycle of carolina js getting notify about chunk user input voice as string text.\r\n */\r\n function onChunkStream(chunk) {\r\n console.log('ON_CHUNK_STREAM:: Callback => ', chunk);\r\n\r\n // Empty could not catch any speaking chunk.\r\n if (!chunk) {\r\n return;\r\n }\r\n\r\n searchBy = 'voice search';\r\n $timeout(function () {\r\n $scope.query = chunk;\r\n $scope.filteredItems = $filter('calSearch')($scope.menuItems, $scope.query);\r\n })\r\n\r\n //ngManuallyRender();\r\n }\r\n\r\n /**\r\n * This function will invoke when the user not have the right permission.\r\n */\r\n function onNoPermission() {\r\n if (ionic.Platform.isIOS()) {\r\n lobbyUiService.popup.alert('יש להיכנס להגדרות הטלפון ולאפשר הרשאת מיקרופון וזיהוי קולי באפליקציית ארנק Cal4U', '', 'סגור');\r\n } else {\r\n lobbyUiService.popup.alert('יש להיכנס להגדרות הטלפון ולאפשר הרשאת מיקרופון באפליקציית ארנק Cal4U', '', 'סגור');\r\n }\r\n }\r\n\r\n\r\n /**\r\n * This function will be invoke when we receive from the carolina lib that the recognition is avilable.\r\n */\r\n function onDevicePlatformSupport(isSupported) {\r\n $timeout(function () {\r\n $scope.isSupportSR = isSupported;\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Event when user speech end.\r\n */\r\n function onSpeechEnd() {\r\n console.log('ON_SPEECH_END:: Callback');\r\n\r\n $timeout(function () {\r\n $scope.speechEnd = true;\r\n });\r\n }\r\n\r\n\r\n function init() {\r\n console.info('Initializing search bar component.');\r\n\r\n $scope.menuItems = [];\r\n\r\n $scope.queryResults = [];\r\n\r\n $scope.query = '';\r\n\r\n lobbyDataService.loadMetaData().then(function (metadata) {\r\n if (!metadata.menu) {\r\n console.error('There is no menu item from metadata.');\r\n return;\r\n }\r\n\r\n metadata.menu.forEach(function (menuElement) {\r\n $scope.menuItems = $scope.menuItems.concat(menuElement);\r\n var mItem = $.extend({}, menuElement);\r\n if (mItem.hide) {\r\n mItem.items = null;\r\n }\r\n\r\n if (mItem.items) {\r\n mItem.items = mItem.items.map(function (item) {\r\n item.parentCaption = item.caption;\r\n\r\n return item;\r\n });\r\n\r\n $scope.menuItems = $scope.menuItems.concat(mItem.items);\r\n }\r\n });\r\n metadata.homePageButton.forEach(function (menuElement) {\r\n $scope.menuItems = $scope.menuItems.concat(menuElement);\r\n });\r\n });\r\n\r\n // Intialize voice recognition library.\r\n speachRecognition.init(\r\n {\r\n callbacks: {\r\n context: this,\r\n onStart: onStart,\r\n onError: onError,\r\n onEnd: onEnd,\r\n onChunkStream: onChunkStream,\r\n onNoPermission: onNoPermission,\r\n onDevicePlatformSupport: onDevicePlatformSupport,\r\n onSpeechEnd: onSpeechEnd\r\n }\r\n });\r\n\r\n $scope.isSupportSR = speachRecognition.isSupportVoiceRecognition();\r\n }\r\n\r\n init();\r\n }\r\n ],\r\n scope: {\r\n /*\r\n * Pass close search bar callback.\r\n */\r\n closeSearchBar: '&',\r\n focusOn: '='\r\n },\r\n templateUrl: 'app/main/templates/search-bar.component.html',\r\n link: function ($scope, $element, $attr) {\r\n\r\n }\r\n\r\n };\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"dwFirstTimeBanners\", dwFirstTimeBanners);\r\n\r\n dwFirstTimeBanners.$inject = [\r\n '$rootScope', '$timeout', '$ionicSlideBoxDelegate', '$ionicScrollDelegate', 'lobbyUiService', 'lobbyDataService',\r\n 'lobbyStateService', 'appData', 'appSettings'\r\n ];\r\n\r\n function dwFirstTimeBanners($rootScope, $timeout, $ionicSlideBoxDelegate, $ionicScrollDelegate, lobbyUiService, lobbyDataService,\r\n lobbyStateService, appData, appSettings) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n templateUrl: 'app/main/templates/first-time-banners.html',\r\n controller: function () {\r\n\r\n var vm = this;\r\n vm.showFirstTimeBanners = false;\r\n vm.firstTimeBanners = {};\r\n vm.buttonFadeIn = \"\";\r\n vm.bannersfirsttimehandler = $ionicSlideBoxDelegate.$getByHandle('bannersfirsttimehandler');\r\n\r\n vm.firstTimeBannersArrowLeft = function () {\r\n vm.bannersfirsttimehandler.previous();\r\n }\r\n\r\n vm.firstTimeBannersArrowRight = function () {\r\n vm.bannersfirsttimehandler.next();\r\n }\r\n\r\n vm.firstTimeBannersShowLeftArrow = function (banner) {\r\n if (vm.bannersfirsttimehandler.currentIndex() == 0) \r\n return false;\r\n vm.buttonFadeIn = \"\";\r\n return true;\r\n }\r\n\r\n vm.firstTimeBannersShowRightArrow = function (banner) {\r\n if (vm.bannersfirsttimehandler.currentIndex() == (vm.bannersCount - 1)) {\r\n vm.buttonFadeIn = \"fadein-button\";\r\n return false;\r\n }\r\n vm.buttonFadeIn = \"\";\r\n return true;\r\n }\r\n\r\n vm.firstTimeBannersShowCloseMenu = function (banner) {\r\n if (vm.firstTimeBanners[vm.bannersCount - 1] == banner) { \r\n return true\r\n }\r\n return false;\r\n }\r\n\r\n vm.closeFirstTimeBanners = function () {\r\n vm.showFirstTimeBanners = false;\r\n var wasFirstTimeBannersDisplayed = window.localStorage.getItem($rootScope.members.IS_NEW_VERSION);\r\n if (wasFirstTimeBannersDisplayed == 'undefined' || wasFirstTimeBannersDisplayed == null) {\r\n window.localStorage.setItem($rootScope.members.IS_NEW_VERSION, appSettings.version);\r\n }\r\n else if (wasFirstTimeBannersDisplayed != appSettings.version) {\r\n window.localStorage.setItem($rootScope.members.IS_NEW_VERSION, appSettings.version);\r\n }\r\n console.log('first time banners were closed');\r\n }\r\n\r\n vm.firsTimeBannersDisplayContentTitle = function (banner) {\r\n if ((banner.Content != null && banner.Title != null) && (banner.Content != \"\" && banner.Title != \"\"))\r\n return true;\r\n return false;\r\n }\r\n\r\n vm.firstTimeBannersImageDiv = function (banner) {\r\n if ((banner.Content != null && banner.Title != null) && (banner.Content != \"\" && banner.Title != \"\"))\r\n return \"first-time-banner-img-div\";\r\n return \"\";\r\n }\r\n\r\n vm.firstTimeBannersFullImage = function (banner) {\r\n if ((banner.Content != null && banner.Title != null) && (banner.Content != \"\" && banner.Title != \"\")) {\r\n //console.log(\"small image, banner.Title= \" + banner.Title + \" banner.Content= \" +banner.Content);\r\n return \"img-first-time\";\r\n }\r\n //console.log(\"full image\");\r\n return \"first-time-banner-full-img\";\r\n }\r\n\r\n var initializeSlider = function (banners, shouldUpdate) {\r\n vm.firstTimeBanners = banners;\r\n vm.bannersCount = vm.firstTimeBanners.length;\r\n $timeout(function () {\r\n if (shouldUpdate) {\r\n var bannersfirsttimehandler = $ionicSlideBoxDelegate.$getByHandle('bannersfirsttimehandler');\r\n console.log('initialize');\r\n bannersfirsttimehandler.update();\r\n }\r\n }, 200);\r\n }\r\n\r\n lobbyDataService.loadMetaData().then(function () {\r\n vm.isFirstTimeBannersLoaded = true;\r\n var wasFirstTimeBannersDisplayed = window.localStorage.getItem($rootScope.members.IS_NEW_VERSION);\r\n console.log('wasFirstTimeBannersDisplayed = ' + wasFirstTimeBannersDisplayed)\r\n if (null === wasFirstTimeBannersDisplayed || wasFirstTimeBannersDisplayed != appSettings.version) {\r\n var banners = lobbyDataService.firstTimeBanners();\r\n if (banners != null && banners.length > 0) {\r\n initializeSlider(banners, true);\r\n vm.showFirstTimeBanners = true;\r\n console.log('first time banners loaded');\r\n }\r\n else {\r\n vm.showFirstTimeBanners = false;\r\n console.log('first time banners is false');\r\n }\r\n }\r\n else {\r\n vm.showFirstTimeBanners = false;\r\n console.log('first time banners were loaded already');\r\n }\r\n });\r\n },\r\n controllerAs: 'vm',\r\n bindToController: true\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n\t'use strict';\r\n\r\n\tangular.module(\"digitalWallet\")\r\n .directive('offlineComponent', OfflineComponent);\r\n\r\n\tOfflineComponent.$inject = [];\r\n\r\n\tfunction OfflineComponent($q, lobbyDataService, lobbyUiService, speachRecognition) {\r\n\t\treturn {\r\n\t\t\trestrict: \"E\",\r\n\t\t\treplace: true,\r\n\t\t\tcontroller: [\r\n '$scope', function ($scope) {\r\n \t$scope.isOffline = false;\r\n \r\n \tfunction init() {\r\n \t\tif (!navigator.onLine) {\r\n \t\t\t$scope.isOffline = true;\r\n \t\t}\r\n\r\n \t\tconsole.log('Initialized offline component');\r\n \t}\r\n\r\n \tinit();\r\n }\r\n\t\t\t],\r\n\t\t\tscope: {\r\n\r\n\t\t\t},\r\n\t\t\ttemplateUrl: 'app/main/templates/offline.component.html'\r\n\t\t};\r\n\t}\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\n angular.module(\"digitalWallet\")\n .provider('Worker', WorkerProvider);\n\n WorkerProvider.$inject = [];\n\n function WorkerProvider() {\n // Parameters to first register the worker service.\n var _settings = {};\n\n this.register = function () {\r\n console.info('Registering worker service!');\n\n // If the browser is not support service worker kill this as soon as possible.\n if (!navigator.serviceWorker) {\r\n console.error('This browser not support service workers');\n return;\r\n }\n\n //POC\n /*return navigator.serviceWorker.register('./sw.js').then(function (r) {\r\n console.log('SW Registered => ', r); \r\n\r\n }).catch(function (error) {\r\n console.error('Could not register service worker => ', error);\r\n })*/\r\n }\n\n this.$get = function () {\r\n return {\r\n register : this.register\r\n }\r\n };\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('webpushNotfication', webpushNotfication);\r\n\r\n webpushNotfication.$inject = ['$state'];\r\n\r\n function webpushNotfication($state) {\r\n var notficationSupported = false;\r\n\r\n\r\n /**\r\n * Initialzie speachRecognition service.\r\n *\r\n * @param args\r\n */\r\n function init(args) {\r\n if (ionic.Platform.isWebView() && cordova.plugins.notification) {\r\n // Notification plugin installed.\r\n notficationSupported = true;\r\n\r\n // Attach handler when user click on notification.\r\n cordova.plugins.notification.local.on(\"click\", function (notification) {\r\n $state.go(notification.data.link);\r\n });\r\n\r\n notify = nativeNotify;\r\n }\r\n else {\r\n\r\n if (!window.Notification) {\r\n console.error('Desktop notifications not available in your browser. Try Chromium.');\r\n return;\r\n }\r\n\r\n\r\n // Desktop notfication is available in the browser.\r\n notficationSupported = true;\r\n\r\n notify = browserNotify;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Send web push notification.\r\n *\r\n * @param notificationOptions\r\n * @returns {{init: init, notify: notify}}\r\n */\r\n function browserNotify(notificationOptions) {\r\n // If the notfication feature is not supported end execution.\r\n if (!notficationSupported)\r\n return;\r\n\r\n // If the user not have granted permission end execution.\r\n if (window.Notification.permission !== \"granted\")\r\n window.Notification.requestPermission();\r\n\r\n if (!navigator.serviceWorker)\r\n return;\r\n\r\n navigator.serviceWorker.ready.then(function (registration) {\r\n registration.showNotification(notificationOptions.title, {\r\n body: notificationOptions.body,\r\n icon: notificationOptions.icon || 'icon.png',\r\n vibrate: [200, 100, 200, 100, 200, 100, 200],\r\n tag: ''\r\n });\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Send native push notification.\r\n *\r\n * @param notificationOptions\r\n * @returns {Function}\r\n */\r\n function nativeNotify(notificationOptions) {\r\n // If the notfication feature is not supported end execution.\r\n if (!notficationSupported)\r\n return;\r\n\r\n\r\n var currMessageID = 1,\r\n nativePushNotification = function(notificationOptions) {\r\n\r\n console.log('Sending native notification => ', notificationOptions);\r\n\r\n cordova.plugins.notification.local.schedule({\r\n id: 1,\r\n title: notificationOptions.title || '',\r\n text: notificationOptions.body || '',\r\n icon: notificationOptions.icon || '',\r\n data: {link: notificationOptions.link}\r\n });\r\n };\r\n\r\n return (function() {\r\n cordova.plugins.notification.local.hasPermission(function (granted) {\r\n console.log('Permission has been granted: ' + granted);\r\n\r\n if (granted) {\r\n nativePushNotification(notificationOptions);\r\n currMessageID++;\r\n } else {\r\n cordova.plugins.notification.local.registerPermission(function (granted) {\r\n console.log('Permission has been granted: ' + granted);\r\n\r\n if (granted) {\r\n nativePushNotification(notificationOptions);\r\n currMessageID++;\r\n }\r\n });\r\n }\r\n });\r\n }());\r\n }\r\n\r\n\r\n function notify() {}\r\n\r\n\r\n init();\r\n\r\n\r\n return {\r\n notify: notify\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('dataService', dataService);\r\n\r\n dataService.$inject = [];\r\n\r\n function dataService($q, appSettings, $interval) {\r\n\r\n var sessionManager = (function () {\r\n return {\r\n read: function (key) {\r\n var jsonObj = sessionStorage.getItem(key);\r\n if (jsonObj) {\r\n return angular.fromJson(jsonObj);\r\n }\r\n return null;\r\n },\r\n save: function (key, value) {\r\n if (value && key) {\r\n sessionStorage.setItem(key, angular.toJson(value));\r\n }\r\n return value;\r\n },\r\n clear: function (key) {\r\n if (key) {\r\n sessionStorage.removeItem(key);\r\n } else {\r\n sessionStorage.clear();\r\n }\r\n },\r\n clearAndSave: function (key, value) {\r\n if (key) {\r\n sessionManager.clear(key);\r\n }\r\n if (value && key) {\r\n sessionManager.save(key,value);\r\n }\r\n }\r\n };\r\n })();\r\n\r\n var cacheManager = (function () {\r\n return {\r\n read: function (key) {\r\n var jsonObj = localStorage.getItem(key);\r\n if (jsonObj) {\r\n return angular.fromJson(jsonObj);\r\n }\r\n return null;\r\n },\r\n save: function (key, value) {\r\n if (value && key) {\r\n localStorage.setItem(key, angular.toJson(value));\r\n }\r\n return value;\r\n },\r\n clear: function (key) {\r\n if (key) {\r\n localStorage.removeItem(key);\r\n } else {\r\n localStorage.clear();\r\n }\r\n }\r\n };\r\n })();\r\n\r\n return {\r\n sessionManager: sessionManager,\r\n cacheManager: cacheManager\r\n }\r\n }\r\n\r\n\r\n})(window, window.angular);\r\n\n(function(window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('appData', appData);\r\n\r\n appData.$inject = ['dataService'];\r\n\r\n function appData(dataService) {\r\n return dataService.sessionManager.read('appData') || {};\r\n }\r\n\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('backService', backService);\r\n\r\n backService.$inject = ['$rootScope', 'appData', 'lobbyStateService', '$window', '$timeout'];\r\n\r\n function backService($rootScope, appData, lobbyStateService, $window, $timeout) {\r\n\r\n return {\r\n back: function () {\r\n //console.log('going back from service');\r\n if (angular.isFunction(appData.backOverrideFN)) {\r\n\r\n appData.backOverrideFN();\r\n\r\n //console.log('custom back');\r\n } else {\r\n //console.log('window back');\r\n\r\n if (typeof device != \"undefined\" && device.platform == \"Android\") {\r\n\r\n var currentPage = lobbyStateService.current.resolve();\r\n\r\n if (currentPage.data && currentPage.data.lobby && currentPage.data.lobby == true) {\r\n navigator.app && navigator.app.exitApp && navigator.app.exitApp();\r\n }\r\n }\r\n if ($rootScope.filteredTransactionResultsVisible) {\r\n $rootScope.filteredTransactionResultsVisible = false;\r\n $rootScope.$broadcast(\"filteredTransactionResultsVisibleChanged\");\r\n }\r\n else if ($rootScope.stopStandingOrder)\r\n {\r\n console.log(\"*****$rootScope.stopSatndingOrder is true******\");\r\n $rootScope.$broadcast(\"stopStandingOrderVisibleChanged\");\r\n }\r\n else {\r\n $window.history.back();\r\n } \r\n }\r\n },\r\n goBack: function (howManySteps) {\r\n if (howManySteps && howManySteps > 0) {\r\n window.history.go(howManySteps * -1);\r\n\r\n } else {\r\n //console.log('window back');\r\n window.history.back();\r\n }\r\n },\r\n forward: function (howManySteps) {\r\n if (howManySteps) {\r\n window.history.go(howManySteps);\r\n\r\n } else {\r\n window.history.forward();\r\n }\r\n },\r\n pushState: function (state) {\r\n $timeout(function () {\r\n window.history.pushState(state.obj, state.title, state.url);\r\n }, 0);\r\n },\r\n replaceState: function (state) {\r\n window.history.replaceState(state.obj, state.title, state.url);\r\n },\r\n hasHistory: function () {\r\n return lobbyStateService.current.resolve().isLobbyView() == false;\r\n }\r\n }\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('lobbyUiService', lobbyUiService);\r\n\r\n lobbyUiService.$inject = [\r\n '$rootScope', '$q', '$location', '$ionicLoading', '$ionicModal', '$ionicPopup', '$ionicSideMenuDelegate', '$ionicGesture', '$timeout',\r\n 'lobbyStateService', 'lobbyDataService', 'appData', '$window', 'googleAnalyticsService', 'chatService', 'ssoService', '$interval'\r\n /* touch: */, 'touchKeyStore', 'EncryptionService', 'restrictService', '$injector', '$state', 'dataService', 'appSettings'];\r\n\r\n function lobbyUiService($rootScope, $q, $location, $ionicLoading, $ionicModal, $ionicPopup, $ionicSideMenuDelegate, $ionicGesture, $timeout,\r\n lobbyStateService, lobbyDataService, appData, $window, googleAnalyticsService, chatService, ssoService, $interval\r\n /* touch: */, touchKeyStore, EncryptionService, restrictService, $injector, $state, dataService, appSettings) {\r\n var _api = null;\r\n\r\n return _api = {\r\n connection: {\r\n\r\n },\r\n clearDependencies: function (nodes) {\r\n // recursively iterate menu nodes and filter dependencies rules.\r\n // exmp: add/remove login-dependant nodes according to login state.\r\n var iterate = function (_nodes) {\r\n var cleared = $.grep(_nodes, function (n) {\r\n\r\n if (n.hide) {\r\n return null;\r\n } else if (n.items) {\r\n n.items = _api.clearDependencies(n.items);\r\n return n.items;\r\n } else if (n.dependency === \"login\") {\r\n if (_api.connection.isLoggedIn()) {\r\n return n;\r\n }\r\n return null;\r\n }/* touch: */\r\n else if (n.dependency === \"login-touch\") {\r\n if (EncryptionService.getIsTouchReq() && _api.connection.isLoggedIn()) {\r\n return n;\r\n }\r\n return null;\r\n }\r\n else {\r\n return n;\r\n }\r\n });\r\n\r\n return cleared;\r\n };\r\n\r\n return iterate(angular.copy(nodes)); // send a copy to preserve original data\r\n },\r\n bannersArchive: (function () {\r\n var _apiBanners = [];\r\n var _banners = [];\r\n return _apiBanners = {\r\n create: function (modules) {\r\n $.map(modules, function (module) {\r\n $.each(module.banners, function (i, banner) {\r\n if (!_banners.contains(banner.image)) {\r\n return _banners.push(banner.image);\r\n }\r\n });\r\n return null;\r\n });\r\n return _apiBanners;\r\n },\r\n fill: function (images) {\r\n _banners = images;\r\n },\r\n getAll: function () {\r\n return _banners;\r\n },\r\n hasData: function () {\r\n return _banners.length > 0;\r\n },\r\n contains: function (bannerImage) {\r\n return _banners.contains(bannerImage);\r\n },\r\n push: function (bannerImage) {\r\n if (!_banners.contains(bannerImage)) {\r\n _banners.push(bannerImage);\r\n }\r\n }\r\n }\r\n })(),\r\n moduleArchive: (function () {\r\n var _modules = [];\r\n return {\r\n hasData: function () {\r\n return _modules.length > 0;\r\n },\r\n contains: function (moduleId) {\r\n return _modules.contains(moduleId);\r\n },\r\n push: function (moduleId) {\r\n if (!_modules.contains(moduleId)) {\r\n _modules.push(moduleId);\r\n //console.log('%%%%%%%%% modules archive ' + _modules);\r\n }\r\n }\r\n }\r\n })(),\r\n listenTo: (function () {\r\n // ****\r\n // an interface to implement common event handling ('swipe' / 'swiperight' / 'swipeleft' / 'doubletap' / 'tap' / 'scroll')\r\n // ********\r\n return {\r\n swipe: function (element, callback) {\r\n $ionicGesture.on('swipe', callback, element);\r\n }\r\n }\r\n })(),\r\n\r\n\r\n notify: (function () {\r\n // ****\r\n // an interface to brodcast event firing\r\n // ********\r\n return {\r\n verticalSwipe: function (callback) {\r\n $ionicGesture.on('swipeup', callback, $('body'));\r\n $ionicGesture.on('swipedown', callback, $('body'));\r\n },\r\n contentSwipe: function (callback) {\r\n $ionicGesture.on('swipeup', callback, $('body'));\r\n },\r\n contentReady: function () {\r\n $rootScope.$broadcast('lobbyEvent::ContentReady');\r\n },\r\n metaDataLoaded: function (data) {\r\n $rootScope.$broadcast('lobbyEvent::MetaDataLoaded', data);\r\n },\r\n bannersLoaded: function () {\r\n $rootScope.$broadcast('lobbyEvent::BannersLoaded');\r\n },\r\n metaDataFailed: function () {\r\n $rootScope.$broadcast('lobbyEvent::MetaDataFailed');\r\n }\r\n }\r\n })(),\r\n sphereMenu: (function () {\r\n // ****\r\n // sphere menu logic\r\n // ********\r\n\r\n // the sphere will show only on none-module views. in addition,\r\n // this is an array of urls in which also NOT to display the sphere menu\r\n var excludedViews = ['/digital/splash', '/digital/lobby'];\r\n\r\n return {\r\n excluded: function (state) {\r\n return ($.inArray(state.path(), excludedViews) >= 0);\r\n }\r\n }\r\n })(),\r\n captionize: function (item) {\r\n if (item.devices) {\r\n return 'multi..';\r\n }\r\n return item.caption;\r\n },\r\n getParams: function (key) {\r\n return lobbyStateService.current.resolve().getParams(key);\r\n },\r\n go: function (url, routeParams, stateParams) {\r\n\r\n if ($ionicSideMenuDelegate.isOpen()) {\r\n $ionicSideMenuDelegate.toggleRight();\r\n }\r\n\r\n lobbyStateService.current.goToState(url, routeParams, stateParams);\r\n },\r\n navigate: function (url, options, routeParams) {\r\n\r\n if (url) {\r\n\r\n if (appData.inProcess === true) {\r\n\r\n _api.popup.abandon(url, options);\r\n return null;\r\n }\r\n\r\n if (!_api.connection.isLoggedIn()) {\r\n if (url.indexOf('expressLoan') > -1) {\r\n\r\n var popup = _api.popup.loanLead();\r\n $rootScope.loanLeadClosePopup = function () {\r\n popup.close();\r\n }\r\n return null;\r\n\r\n } else if (url.indexOf('fixedPayout') > -1) {\r\n _api.popup.fixedDebit();\r\n return null;\r\n\r\n } else if (url.indexOf('calchoicePayout') > -1) {\r\n _api.popup.calChoice();\r\n return null;\r\n }\r\n } else {\r\n\r\n if (url.indexOf('calchoicePayout') > -1) {\r\n\r\n var calChoiceAccounts = [];\r\n\r\n for (var i = 0; i < appData.BankAccounts.length; i++) {\r\n var cardsToDisplay = [];\r\n for (var j = 0; j < appData.BankAccounts[i].Cards.length; j++) {\r\n if (appData.BankAccounts[i].Cards[j].IsCalChoiceCard) {\r\n appData.BankAccounts[i].Cards[j].CardIndex = j;\r\n cardsToDisplay.push(appData.BankAccounts[i].Cards[j]);\r\n }\r\n }\r\n if (cardsToDisplay.length > 0) {\r\n appData.BankAccounts[i].calChoiceCards = cardsToDisplay;\r\n appData.BankAccounts[i].AccountIndex = i;\r\n appData.BankAccounts[i].CalChoiceAccountIndex = calChoiceAccounts.length;\r\n calChoiceAccounts.push(appData.BankAccounts[i]);\r\n }\r\n }\r\n\r\n appData.calChoiceAccounts = calChoiceAccounts;;\r\n\r\n if (!appData.calChoiceAccounts || appData.calChoiceAccounts === 0) {\r\n _api.popup.calchoiceLead();\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n if (url.indexOf('service-and-support/whatsapp') > -1 || url.indexOf(appSettings.whatsappLink) > -1) {\r\n _api.connection.identificationServiceRequest().then(function () { }, function () { });\r\n }\r\n }\r\n\r\n var target = {\r\n navigation: '1',\r\n window: '2',\r\n command: '3',\r\n inApp: '4'\r\n }\r\n\r\n var defaults = {\r\n abandonBehavior: false,\r\n type: target.navigation\r\n }\r\n\r\n options = angular.extend(defaults, options);\r\n\r\n // close after clicking\r\n if ($ionicSideMenuDelegate.isOpen()) {\r\n $rootScope.members.ionSideMenuExpand = false;\r\n $ionicSideMenuDelegate.toggleRight();\r\n }\r\n\r\n if (!options.state && url) {\r\n options.state = url;\r\n }\r\n\r\n // check if target view is restricted to authenticated users only\r\n var isLoginPage = lobbyStateService.current.resolve().isLoginView();\r\n\r\n //isLoginPage === false \r\n\r\n var navOptions = { notify: true };\r\n\r\n if (isLoginPage === true) {\r\n navOptions.location = 'replace';\r\n } else if (options.location)\r\n navOptions.location = options.location;\r\n\r\n if (options.nextPage && options.type != target.navigation) {\r\n routeParams.type = options.type;\r\n routeParams.command = options.command;\r\n options.type = target.navigation;\r\n }\r\n\r\n switch (options.type) {\r\n case target.command:\r\n {\r\n // handle special commands (not urls)\r\n switch (options.command) {\r\n case 'redirect-to-ecredit-product':\r\n case 'redirect-to-ecredit-products':\r\n case 'redirect-to-ecredit': {\r\n _api.go('dw.loanFrame');\r\n break;\r\n }\r\n case 'logout':\r\n {\r\n if (!options.abandonBehavior) {\r\n _api.popup.abandon(url, options);\r\n } else {\r\n _api.connection.logout();\r\n }\r\n\r\n options.abandonBehavior = !options.abandonBehavior;\r\n\r\n break;\r\n }\r\n case 'logout-touch':\r\n {\r\n _api.popup.abandonTouch();\r\n break;\r\n }\r\n case 'open-chat':\r\n case 'open-chat-bot':\r\n {\r\n if (!_api.connection.isLoggedIn()) {\r\n // set target view as nextpage value, update url, \r\n // cancel view transition if current view is already login\r\n //navOptions.notify = isLoginPage === false;\r\n\r\n var _routeParams = {\r\n nextPage: options.state,\r\n type: options.type,\r\n command: options.command\r\n };\r\n\r\n var _self = this;\r\n\r\n var go = function () {\r\n _self.go('dw.login', _routeParams, navOptions);\r\n return;\r\n };\r\n\r\n go();\r\n }\r\n else {\r\n if (options.command != 'open-chat-bot') {\r\n var chatWindow = window.loginChatWindow || _api.openExternal('', options.devices, true);\r\n }\r\n chatService.inserNewChatDetails().then(function (res) {\r\n var chatUrl = res.guid ? url + '?' + 'profile=' + res.profile + '&lang=' + res.language + '&t=' + res.guid + '&' + options.query : url + '?' + options.query;\r\n //_api.openExternal(chatUrl, options.devices, true);\r\n if (options.command == 'open-chat-bot') {\r\n //location.href = chatUrl\r\n window.open(chatUrl);\r\n _api.navigate(null, { state: 'dw.lobby' }, {});\r\n }\r\n else {\r\n chatWindow.location.href = chatUrl;\r\n window.loginChatWindow = null;\r\n if ($state.current.name === 'dw.login') {\r\n _api.navigate(null, { state: 'dw.account-home' }, {});\r\n }\r\n }\r\n });\r\n }\r\n break;\r\n }\r\n case 'open-popup-calmail':\r\n {\r\n var extOptions =\r\n {\r\n cssClass: 'dw-popup-cover',\r\n title: '',\r\n templateUrl: 'app/main/templates/calMail4U.html',\r\n buttons: [\r\n {\r\n text: '',\r\n type: 'button-positive',\r\n onTap: function () {\r\n _api.navigate(url, {\r\n type: '2',\r\n sso: true\r\n }, {});\r\n\r\n return true;\r\n }\r\n }\r\n ]\r\n };\r\n\r\n googleAnalyticsService.insertEvent({ page: 'mobical info page', eventName: 'show help - enter', action: 'enter' });\r\n\r\n var stop = null;\r\n\r\n var cancelInterval = function (event) {\r\n $interval.cancel(event);\r\n }\r\n\r\n return $timeout(function () {\r\n\r\n var _popupCalMail = $ionicPopup.show(extOptions);\r\n\r\n angular.element('.dw-popup-cover .close-btn').ready(function () {\r\n\r\n stop = $interval(function () {\r\n if (angular.element('.dw-popup-cover .close-btn')) {\r\n\r\n angular.element('.dw-popup-cover .close-btn').on('click', function () {\r\n _popupCalMail.close();\r\n });\r\n\r\n cancelInterval(stop);\r\n }\r\n\r\n }, 100);\r\n });\r\n\r\n return _popupCalMail;\r\n\r\n }, 400);\r\n }\r\n case 'refresh-user-details': // .../#!/digital/login//3//true//refresh-user-details///\r\n {\r\n var connectSrv = $injector.get('connection');\r\n\r\n var bpm051SuccessFunc = function (response) {\r\n var status = response.ReturnedSeverityCode.toLowerCase();\r\n if (status == \"s\") {\r\n if (typeof (Storage) !== \"undefined\") {\r\n localStorage.setItem(\"KycLastTimeShown\", \"route from sms\");\r\n }\r\n _api.openExternal(response.UrlFormes, \"\", true);\r\n console.log(\"bpm051 returned status s\");\r\n }\r\n else if (status == \"i\") {\r\n var dialogBoxText = \"לא נדרש רענון לקוח, הנך מועבר להמשך פעילות\";\r\n showPopup(dialogBoxText);\r\n console.log(\"bpm051 returned status i\");\r\n }\r\n else {\r\n var dialogBoxText = \"לא ניתן להשלים את הפעולה כרגע, אנא נסה שנית מאוחר יותר.\";\r\n showPopup(dialogBoxText);\r\n console.log(\"bpm051 returned status different than s or i\");\r\n }\r\n\r\n function showPopup(dialogbox) {\r\n var popup = {};\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"אישור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n return;\r\n }\r\n });\r\n _api.popup.alert(dialogbox, null, null, null, popup.btns, true, null);\r\n }\r\n\r\n }\r\n\r\n var bpm051ErrorFunc = function (error) {\r\n var dialogBoxText = \"לא ניתן להשלים את הפעולה כרגע, אנא נסה שנית מאוחר יותר.\";\r\n showPopup(dialogBoxText);\r\n console.log(\"Refresh customer details from sms: connection.executeBpm051() failed. response: \" + error);\r\n }\r\n\r\n connectSrv.executeBpm051().then(bpm051SuccessFunc, bpm051ErrorFunc);\r\n }\r\n }\r\n\r\n }\r\n case target.navigation:\r\n {\r\n if (options.restrictedExplicitly || lobbyDataService.getNavRestriction(options.state, options.items)) {\r\n // check current login state\r\n\r\n if (!_api.connection.isLoggedIn()) {\r\n // set target view as nextpage value, update url, \r\n // cancel view transition if current view is already login\r\n //navOptions.notify = isLoginPage === false;\r\n\r\n var _routeParams = {\r\n nextPage: options.state\r\n };\r\n\r\n var _self = this;\r\n\r\n var go = function () {\r\n _self.go('dw.login', _routeParams, navOptions);\r\n return;\r\n };\r\n\r\n restrictService.checkIsRestricted(options.state).then(function (status) {\r\n if (status) {\r\n _routeParams.restricted = true;\r\n }\r\n go();\r\n }, function () {\r\n go();\r\n });\r\n }\r\n }\r\n\r\n if (options.nextPage) {\r\n routeParams.nextPage = options.nextPage;\r\n }\r\n\r\n this.go(options.state, routeParams, navOptions);\r\n break;\r\n }\r\n case target.window:\r\n {\r\n var query = '';\r\n\r\n if (options.sso) {\r\n // check current login state\r\n\r\n if (!_api.connection.isLoggedIn()) {\r\n\r\n _api.go('dw.login',\r\n {\r\n nextPage: options.state,\r\n type: 2,\r\n sso: true\r\n }, navOptions\r\n );\r\n } else {\r\n ssoService.insertSsoDetails().then(function (res) {\r\n\r\n var sep = url.indexOf(\"?\") > 0 ? \"&\" : \"?\";\r\n query = sep + 'sid=' + res.Token;\r\n _api.openExternal(url + query, options.devices, true);\r\n\r\n if (isLoginPage || lobbyStateService.current.resolve().is357View()) {\r\n _api.go('dw.lobby');\r\n }\r\n });\r\n }\r\n } else {\r\n _api.openExternal(url, options.devices, true);\r\n }\r\n\r\n break;\r\n }\r\n case target.inApp:\r\n {\r\n this.openExternal(url, options.devices);\r\n break;\r\n }\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return null;\r\n },\r\n popup: (function () {\r\n /***\r\n /* handling abandon behavior via popup element\r\n /******/\r\n var settings = {\r\n title: '',\r\n template: '

    ',\r\n cssClass: null,\r\n };\r\n return {\r\n calchoiceLead: function (cancelCallBack) {\r\n var extOptions = angular.extend(settings,\r\n {\r\n cssClass: 'stacked-buttons',\r\n title: 'פירעון CalChoice',\r\n template: '
    לא נמצא כרטיס CalChoice המשוייך למנוי זה.
    CalChoice - הכרטיס היחיד המאפשר לך לבחור כמה לשלם בכל חודש.
    ',\r\n buttons: [\r\n {\r\n text: 'להזמנת כרטיס',\r\n type: 'button-positive',\r\n onTap: function () {\r\n _api.navigate(null, { state: 'dw.wantCard' }, { code: '2204' });\r\n }\r\n },\r\n {\r\n text: 'ביטול',\r\n type: 'button-negative',\r\n onTap: (cancelCallBack) ? cancelCallBack : function () {\r\n _api.navigate(null, { state: 'dw.account-home' }, {});\r\n }\r\n }\r\n ],\r\n });\r\n\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n calChoice: function () {\r\n var extOptions = angular.extend(settings,\r\n {\r\n title: 'פירעון CalChoice',\r\n btnClose: true,\r\n template: '
    כרטיס CalChoice מאפשר לכם לבחור בכל חודש מחדש את גובה סכום החיוב החודשי
    ',\r\n buttons: [\r\n {\r\n text: 'לביצוע פירעון',\r\n type: 'button-positive',\r\n onTap: function () {\r\n _api.navigate(null, { state: 'dw.calchoicePayout' });\r\n\r\n }\r\n },\r\n {\r\n text: 'להזמנת כרטיס',\r\n type: 'button-positive',\r\n onTap: function () {\r\n _api.navigate(null, { state: 'dw.wantCard' }, { code: '2204' });\r\n }\r\n }\r\n ],\r\n });\r\n\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n fixedDebit: function () {\r\n\r\n var extOptions = angular.extend(settings,\r\n {\r\n cssClass: null,\r\n title: 'חיוב חודשי קבוע',\r\n template: '
    קובעים מראש גובה חיוב חודשי קבוע בכרטיס, ואין הפתעות בסוף החודש!
    ',\r\n buttons: [\r\n {\r\n text: 'לבחירת סכום',\r\n type: 'button-positive',\r\n onTap: function () {\r\n _api.navigate(null, { state: 'dw.fixedPayout' });\r\n }\r\n },\r\n {\r\n text: 'בפעם אחרת',\r\n type: 'button-negative',\r\n onTap: function () {\r\n return;\r\n }\r\n }\r\n ],\r\n });\r\n\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n digitalVouchers: function (ctrlScope, title, body, url, urlParams, buttons, hideXBtn, buttonsLables, analyticsContent) {\r\n var closeBtn = '';\r\n if (!hideXBtn) {\r\n var closeBtn = '';\r\n }\r\n\r\n buttonsLables = buttonsLables || {};\r\n\r\n var extOptions = angular.extend(settings,\r\n {\r\n /*scope: ctrlScope,*/\r\n title: '',\r\n cssClass: 'vouchers-popup',\r\n template: '
    ' + title + '
    ' + body + closeBtn + '
    ',\r\n buttons: buttons || [\r\n {\r\n text: buttonsLables.OK || 'כן',\r\n type: 'button-positive',\r\n onTap: function () {\r\n if (analyticsContent) {\r\n googleAnalyticsService.trackPage(analyticsContent);\r\n }\r\n $rootScope.$broadcast('voucherSkipValidation');\r\n _api.navigate(null, { state: url }, urlParams);\r\n }\r\n },\r\n {\r\n text: buttonsLables.Cancel || 'לא',\r\n type: 'button-negative',\r\n onTap: function () {\r\n return;\r\n }\r\n }\r\n ],\r\n });\r\n\r\n return $ionicPopup.show(extOptions);\r\n },\r\n loanLead: function () {\r\n\r\n var extOptions = angular.extend(settings,\r\n {\r\n cssClass: 'loan-buttons',\r\n template: '
    הלוואה בהתאמה אישית ישירות לחשבון הבנק שלך
    ',\r\n buttons: [\r\n {\r\n text: 'לקבלת הלוואה',\r\n type: 'button-positive',\r\n onTap: function () {\r\n _api.navigate(null, { state: 'dw.loanframe' });\r\n }\r\n },\r\n {\r\n text: 'מעדיף שתחזרו אליי',\r\n type: 'button-regular',\r\n onTap: function () {\r\n _api.navigate(null, { state: 'dw.wantLoan' });\r\n }\r\n }\r\n ]\r\n });\r\n\r\n return $ionicPopup.show(extOptions);\r\n },\r\n noConnection: function () {\r\n var extOptions = angular.extend(settings,\r\n {\r\n cssClass: null,\r\n title: 'שגיאה קישורית',\r\n template: '
    אין חיבור לרשת.
    בדוק את החיבור ונסה שנית.
    ',\r\n buttons: [\r\n {\r\n text: 'המשך',\r\n type: 'button-positive',\r\n onTap: function () {\r\n $window.location.reload();\r\n appData.noConnection = false;\r\n //_api.navigate('dw.lobby');\r\n }\r\n }\r\n ],\r\n });\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n alert: function (text, title, buttonText, callback, buttons, isClose, cssClass) {\r\n\r\n var extOptions = angular.extend({}, settings,\r\n {\r\n\r\n cssClass: (cssClass) ? cssClass : null,\r\n title: (title) ? title : '',\r\n template: '
    ' + text + '
    ',\r\n btnClose: isClose,\r\n buttons: (buttons) ? buttons : [\r\n {\r\n text: (buttonText) ? buttonText : 'סגור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n if (callback && angular.isFunction(callback)) {\r\n return callback();\r\n }\r\n }\r\n }\r\n ],\r\n\r\n });\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n message: function (template, text, title, css, buttonText, callback, buttons, isClose) {\r\n\r\n var extOptions = angular.extend({}, settings,\r\n {\r\n cssClass: css,\r\n title: (title) ? title : '',\r\n templateUrl: template,\r\n btnClose: isClose,\r\n buttons: (buttons) ? buttons : [\r\n {\r\n text: (buttonText) ? buttonText : 'סגור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n if (callback && angular.isFunction(callback)) {\r\n return callback();\r\n }\r\n }\r\n }\r\n ],\r\n });\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n indicationMessage: function (templateText, subHeader, title, css, buttonText, callback, buttons, isClose) {\r\n var extOptions = angular.extend({}, settings,\r\n {\r\n cssClass: css,\r\n title: (title) ? (subHeader != null ? title + '
    ' + subHeader : title) : '',\r\n template: `\r\n
    \r\n
    `+ templateText + `
    \r\n
    \r\n `,\r\n btnClose: isClose,\r\n buttons: (buttons) ? buttons : [\r\n {\r\n text: (buttonText) ? buttonText : 'סגור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n if (callback && angular.isFunction(callback)) {\r\n return callback();\r\n }\r\n }\r\n }\r\n ],\r\n });\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n marketingMessage: function (template, cssClass, isClose,buttons) {\r\n var extOptions = angular.extend({}, settings,\r\n {\r\n cssClass: cssClass,\r\n templateUrl: template,\r\n btnClose: false,\r\n buttons: buttons,\r\n });\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n messageText: function (template, text, title, css, buttonText, callback, buttons, isClose) {\r\n var extOptions = angular.extend({}, settings,\r\n {\r\n cssClass: css,\r\n title: (title) ? title : '',\r\n template: (template) ? '' : '
    ' + text + '
    ',\r\n templateUrl: template,\r\n btnClose: isClose,\r\n buttons: (buttons) ? buttons : [\r\n {\r\n text: (buttonText) ? buttonText : 'סגור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n if (callback && angular.isFunction(callback)) {\r\n return callback();\r\n }\r\n }\r\n }\r\n ],\r\n });\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n messageWithScope: function (template, text, title, css, buttonText, callback, buttons, isClose, scope) {\r\n\r\n\r\n var extOptions = angular.extend({}, settings,\r\n {\r\n cssClass: css,\r\n title: (title) ? title : '',\r\n templateUrl: template,\r\n scope: scope,\r\n btnClose: isClose,\r\n buttons: (buttons) ? buttons : [\r\n {\r\n text: (buttonText) ? buttonText : 'סגור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n if (callback && angular.isFunction(callback)) {\r\n return callback();\r\n }\r\n }\r\n }\r\n ],\r\n });\r\n return $timeout(function () {\r\n var ionicPop = $ionicPopup.show(extOptions);\r\n angular.extend(scope, {\r\n ionicPop\r\n });\r\n }, 200);\r\n },\r\n /* touch: */\r\n alreadyTouchDelete: function (title) {\r\n var extOptions = angular.extend(settings,\r\n {\r\n cssClass: null,\r\n title: '',\r\n template: '

    ' + title + '

    ',\r\n buttons: [\r\n {\r\n text: 'סגור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n touchKeyStore.removeKey();\r\n EncryptionService.setIsTouchReq(false);\r\n EncryptionService.setTouchTakanon(false);\r\n }\r\n }\r\n ],\r\n });\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n expertionTouchTime: function (title) {\r\n var extOptions = angular.extend(settings,\r\n {\r\n cssClass: null,\r\n title: '',\r\n template: '

    ' + title + '

    ',\r\n buttons: [\r\n {\r\n text: 'הצטרפות',\r\n type: 'button-positive',\r\n onTap: function () {\r\n touchKeyStore.removeKey();\r\n EncryptionService.setIsTouchReq(false);\r\n EncryptionService.setTouchTakanon(false);\r\n $rootScope.$broadcast('logoutTouch');\r\n _api.navigate(\"dw.touch-taknon\");\r\n }\r\n },\r\n {\r\n text: 'לא עכשיו',\r\n type: 'button-negative',\r\n onTap: function () {\r\n touchKeyStore.removeKey();\r\n EncryptionService.setIsTouchReq(false);\r\n EncryptionService.setTouchTakanon(false);\r\n $rootScope.$broadcast('logoutTouch');\r\n }\r\n }\r\n ],\r\n });\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n abandonTouch: function (url, options) {\r\n var extOptions = angular.extend(settings,\r\n {\r\n cssClass: null,\r\n title: '',\r\n template: '

    האם אתה בטוח שברצונך לבטל את שירות זיהוי בטביעת אצבע?

    ',\r\n buttons: [\r\n {\r\n text: 'אישור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n _api.connection.deleteTouch().then(function (res) {\r\n console.log(\"deleteTouch\");\r\n touchKeyStore.removeKey();\r\n EncryptionService.setIsTouchReq(false);\r\n EncryptionService.setTouchTakanon(false);\r\n $rootScope.$broadcast('logoutTouch');\r\n $('body').append('
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    הסרת שירות טביעת

    ' +\r\n '

    אצבע באפליקציה

    ' +\r\n '

    בוצעה בהצלחה

    ' +\r\n '
    ' +\r\n '
    ');\r\n\r\n setTimeout(function () {\r\n $('#touchOverlay').remove();\r\n }, 3000);\r\n\r\n }, function (res) {\r\n console.log(\"deleteTouch error:\", res);\r\n if (res[0].response.Response.Status.SeverityCode === \"W\" && res[0].response.Response.Status.SeverityNumber === \"001\") {\r\n _api.popup.alreadyTouchDelete(res[0].response.Response.Status.Message);\r\n } else {\r\n var errorService = $injector.get(\"errorService\");\r\n errorService.handleError(res, function () { }).then(function () { });\r\n }\r\n });\r\n }\r\n },\r\n {\r\n text: 'ביטול',\r\n type: 'button-negative',\r\n onTap: function () {\r\n\r\n }\r\n }\r\n ],\r\n });\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n /* end touch: */\r\n abandon: function (url, options) {\r\n var extOptions = angular.extend(settings,\r\n {\r\n cssClass: null,\r\n title: '',\r\n template: '

    האם אתה בטוח שברצונך לצאת מעמוד זה?

    לתשומת לבך, פרטיך לא ישמרו.

    ',\r\n buttons: [\r\n {\r\n text: 'אישור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n appData.inProcess = false;\r\n try {\r\n switch (lobbyStateService.current.resolve().name()) {\r\n case 'dw.calchoicePayout':\r\n googleAnalyticsService.insertEvent({ page: 'Calchoice payment', eventName: 'Leave CalChoice Payment - Confirm', action: 'Click' });\r\n break;\r\n case 'dw.expressLoan':\r\n googleAnalyticsService.insertEvent({ page: 'Credit Solutions', eventName: 'Leave Loan Request - Confirm', action: 'Click' });\r\n break;\r\n case 'dw.fixedPayout':\r\n googleAnalyticsService.insertEvent({ page: 'Credit Solutions', eventName: 'Leave Monthly Payments - Confirm', action: 'Click' });\r\n break;\r\n default:\r\n }\r\n } catch (e) {\r\n\r\n }\r\n\r\n _api.navigate(url, options);\r\n }\r\n },\r\n {\r\n text: 'ביטול',\r\n type: 'button-negative',\r\n onTap: function () {\r\n //appData.inProcess = true;\r\n try {\r\n switch (lobbyStateService.current.resolve().name()) {\r\n case 'dw.calchoicePayout':\r\n googleAnalyticsService.insertEvent({ page: 'Calchoice payment', eventName: 'Leave CalChoice Payment - Cancel', action: 'Click' });\r\n break;\r\n case 'dw.expressLoan':\r\n googleAnalyticsService.insertEvent({ page: 'Credit Solutions', eventName: 'Leave Loan Request - Cancel', action: 'Enter' });\r\n break;\r\n case 'dw.fixedPayout':\r\n googleAnalyticsService.insertEvent({ page: 'Credit Solutions', eventName: 'Leave Monthly Payments - Cancel', action: 'Enter' });\r\n break;\r\n default:\r\n }\r\n } catch (e) {\r\n\r\n }\r\n return;\r\n }\r\n }\r\n ],\r\n });\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n }\r\n }\r\n })(),\r\n\r\n modalDialog: (function () {\r\n _api = null;\r\n /***\r\n /* handling abandon behavior via modal dialog element\r\n /******/\r\n return _api = {\r\n create: function (template) {\r\n $ionicModal.fromTemplateUrl(template, {\r\n scope: $rootScope,\r\n animation: 'slide-in-up'\r\n }).then(function (modal) {\r\n $rootScope.modal = modal;\r\n });\r\n return _api;\r\n },\r\n show: function () {\r\n $rootScope.$on('$destroy', function () {\r\n $rootScope.modal.remove();\r\n });\r\n // Execute action on hide modal\r\n $rootScope.$on('modal.hide', function () {\r\n // Execute action\r\n });\r\n // Execute action on remove modal\r\n $rootScope.$on('modal.removed', function () {\r\n // Execute action\r\n });\r\n\r\n // return a promise to ve resolved when show animation ends\r\n $timeout(function () { $rootScope.modal.show(); }, 100);\r\n },\r\n hide: function () {\r\n // return a promise to ve resolved when hide animation ends\r\n return $rootScope.modal.hide();\r\n }\r\n }\r\n })(),\r\n preloadImages: function (images) {\r\n /***\r\n /* handling pre loading of images \r\n /******/\r\n\r\n var dfdAll = $q.defer();\r\n\r\n // handle each image loading, track success | failure indication for each one\r\n var loadOne = function (item) {\r\n $('').attr('src', item.path)\r\n .on('load', function () {\r\n item.success = true;\r\n item.dfd.resolve();\r\n })\r\n .on('error', function () {\r\n item.success = false;\r\n item.dfd.resolve();\r\n });\r\n }\r\n\r\n // create & save an array of loading promisses, one for each image \r\n var promisses = [];\r\n for (var i = 0; i < images.length; i++) {\r\n promisses.push($.extend({}, { id: i, path: images[i], dfd: $q.defer(), success: false }));\r\n }\r\n\r\n // wait for all loading promisses to be completed\r\n $q.all($.map(promisses, function (item) {\r\n return item.dfd.promise;\r\n })).then(function () {\r\n // create a collection of successfuly loaded urls \r\n var loaded = $.map(promisses, function (item) {\r\n if (item.success) {\r\n return { id: ++i, image: item.path }\r\n }\r\n\r\n return null;\r\n });\r\n // resolve all promisses, return to caller\r\n dfdAll.resolve(loaded);\r\n });\r\n\r\n // try load each image\r\n for (var j = 0; j < promisses.length; j++) {\r\n loadOne(promisses[j]);\r\n }\r\n\r\n return dfdAll.promise;\r\n },\r\n loader: {\r\n hide: function () {\r\n $ionicLoading.hide();\r\n },\r\n show: function () {\r\n\r\n var _template = '
    טוען נתונים...
    ';\r\n\r\n $ionicLoading.show({\r\n template: _template\r\n });\r\n }\r\n },\r\n openExternal: function (url, platforms, isExternal) {\r\n if (isExternal) {\r\n var target = url;\r\n var ua = navigator.userAgent.toLowerCase();\r\n\r\n if (ua.indexOf(\"android\") > -1) {\r\n return window.open(target, '_blank', 'location=yes');\r\n } else {\r\n return window.open(target, '_blank', 'location=yes,enableViewportScale=yes,closebuttoncaption=סגור');\r\n }\r\n }\r\n else {\r\n window.location.href = url;\r\n }\r\n\r\n return false;\r\n }, openInNewTabAndGoBack: function (url) {\r\n window.open(url, '_blank');\r\n window.history.back();\r\n },\r\n setWindowHeight: function (offsetSub) {\r\n if (!offsetSub) {\r\n offsetSub = 32;\r\n }\r\n var contentHeight = parseInt(screen.height - offsetSub);\r\n if (parseInt(contentHeight) < 528)\r\n contentHeight = 528;\r\n angular.element(\".scroll\").css('min-height', contentHeight + \"px\");\r\n },\r\n hideNavBar: function () {\r\n try {\r\n return dataService.sessionManager.read('hidenavbar') || false;\r\n\r\n } catch (ex) {\r\n console.log(ex);\r\n return false;\r\n\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n})(window, window.angular, _);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('lobbyStateService', lobbyStateService);\r\n\r\n lobbyStateService.$inject = ['$state', '$rootScope', '$stateParams', '$location'];\r\n\r\n function lobbyStateService($state, $rootScope, $stateParams, $location) {\r\n // ****\r\n // wrap, manage, parse & query the current state (from ui state router)\r\n // all methods under 'current' api element referes to the current ui state\r\n // ********\r\n var _api;\r\n var resolveState = function(target) {\r\n\r\n var _current = target || $state.current;\r\n return $.extend({}, _current,\r\n {\r\n getData: function() {\r\n if (this.hasData()) {\r\n return _current.data;\r\n }\r\n return undefined;\r\n },\r\n getParams: function(key) {\r\n if (!key) {\r\n return $state.params;\r\n } else {\r\n return $state.params[key];\r\n }\r\n },\r\n name: function() {\r\n // get the current path (location)\r\n return _current.name;\r\n },\r\n path: function() {\r\n // get the current path (location)\r\n return _current.url.source;\r\n },\r\n hasData: function() {\r\n // parse the data attached to the current state\r\n return typeof (_current.data) != 'undefined';\r\n },\r\n isModuleView: function() {\r\n if (this.hasData()) {\r\n // parse the 'module' parameter on the data object attached to the current state\r\n return typeof (_current.data.module) == 'number';\r\n }\r\n return false;\r\n },\r\n isLobbyView: function() {\r\n if (this.hasData()) {\r\n return typeof (_current.data.lobby) != 'undefined';\r\n }\r\n return false;\r\n },\r\n isLoginView: function() {\r\n return $state.is('dw.login');\r\n },\r\n is357View: function() {\r\n return $state.is('dw.register357');\r\n }\r\n });\r\n };\r\n\r\n var _goToState = function(url, routeParams, stateParams) {\r\n //console.log('going to ' + url + ' :: route params: ' + JSON.stringify(routeParams) + ' :: state params: ' + JSON.stringify(stateParams)); \r\n\r\n /*if (url === 'dw.login') {\r\n if (!stateParams) {\r\n stateParams = {};\r\n }\r\n\r\n stateParams.location = 'replace';\r\n }*/\r\n $state.go(url, routeParams, stateParams);\r\n };\r\n\r\n var goToLocation = function(url) {\r\n $location.path(url.replace('#', ''));\r\n };\r\n\r\n var _checkConnection = function() {\r\n\r\n if (!navigator || !navigator.connection)\r\n return true;\r\n\r\n var networkState = navigator.connection.type;\r\n\r\n return networkState != navigator.connection.NONE;\r\n\r\n /*var states = {};\r\n states[Connection.UNKNOWN] = 'Unknown connection';\r\n states[Connection.ETHERNET] = 'Ethernet connection';\r\n states[Connection.WIFI] = 'WiFi connection';\r\n states[Connection.CELL_2G] = 'Cell 2G connection';\r\n states[Connection.CELL_3G] = 'Cell 3G connection';\r\n states[Connection.CELL_4G] = 'Cell 4G connection';\r\n states[Connection.CELL] = 'Cell generic connection';\r\n states[Connection.NONE] = 'No network connection';\r\n\r\n return states[Connection.NONE];*/\r\n }\r\n\r\n _api = {\r\n current: {\r\n resolve: resolveState,\r\n goToState: _goToState,\r\n goToLocation: goToLocation,\r\n checkConnection: _checkConnection\r\n }\r\n };\r\n\r\n return _api;\r\n }\r\n})(window, window.angular);\n(function (window, angular, _) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('httpInterseptorService', httpInterseptorService);\r\n\r\n httpInterseptorService.$inject = ['$rootScope', '$q'];\r\n\r\n function httpInterseptorService($rootScope, $q) {\r\n\r\n return {\r\n request: function (config) {\r\n\r\n var canceler = $q.defer();\r\n\r\n config.timeout = canceler.timeout;\r\n if (config.url.indexOf('.html') > -1) {\r\n } else {\r\n if (!navigator || !navigator.connection) {\r\n } else {\r\n var networkState = navigator.connection.type;\r\n\r\n if (networkState == navigator.connection.NONE) {\r\n $rootScope.$broadcast('noConnection');\r\n canceler.resolve();\r\n }\r\n }\r\n }\r\n\r\n return config || $q.when(config);\r\n }\r\n };\r\n\r\n\r\n }\r\n})(window, window.angular, _);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('lobbyCommService', lobbyCommService);\r\n\r\n lobbyCommService.$inject = ['appSettings'];\r\n\r\n function lobbyCommService(appSettings) {\r\n // ****\r\n // wraps & handles the communication actions\r\n // ********\r\n return {\r\n connection: {},\r\n getMetaData: function () {\r\n var versionWasNotDisplayed = false;\r\n var isNewVersion = window.localStorage.getItem(\"IS_NEW_VERSION\");\r\n if (isNewVersion == 'undefined' || isNewVersion === null) {\r\n versionWasNotDisplayed = true;\r\n }\r\n else if (isNewVersion != 'undefined' && isNewVersion != appSettings.version)\r\n versionWasNotDisplayed = true;\r\n return this.connection.genericConnection('GET', 'CalWalletMetaData?', 'IsNewVersion=' + versionWasNotDisplayed + '&CurrentVersion=' + appSettings.version + '&OperatingSystem=' + appSettings.os);\r\n },\r\n getDocument: function (docName) {\r\n return this.connection.genericConnection('GET', 'caldocs?', 'CurrentVersion=' + appSettings.version + '&OperatingSystem=' + appSettings.os + '&id=' + docName);\r\n },\r\n insertSsoDetails: function (cardId) {\r\n return this.connection.genericConnection('POST', 'CalSso/', cardId + '?' + 'CurrentVersion=' + appSettings.version + '&OperatingSystem=' + appSettings.os);\r\n },\r\n inserNewChatDetails: function (pageUrl) {\r\n return this.connection.genericConnection('PUT', 'Chat/InserNewChatDetails', '?' + 'CurrentVersion=' + appSettings.version + '&OperatingSystem=' + appSettings.os, '{\"pageUrl\":\"' + pageUrl + '\"}');\r\n },\r\n insertOnlineFormsDetails: function () {\r\n return this.connection.genericConnection('POST', 'OnlineForms', '?' + 'CurrentVersion=' + appSettings.version + '&OperatingSystem=' + appSettings.os);\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular, _) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('lobbyDataService', lobbyDataService);\r\n\r\n lobbyDataService.$inject = ['$state', '$rootScope', '$http', '$q', 'lobbyStateService', 'lobbyCommService', 'appSettings'];\r\n\r\n function lobbyDataService($state, $rootScope, $http, $q, lobbyStateService, lobbyCommService, appSettings) {\r\n // ****\r\n // handles data (mainly metameta) manipulation & process\r\n // ********\r\n var _api;\r\n var _metaData = null;\r\n var _restricted = {};\r\n\r\n var assertMetaData = function(data) {\r\n\r\n for (var i = 0; i < data.menu.length; i++) {\r\n var items = data.menu[i].items;\r\n if (items) {\r\n for (var j = 0; j < items.length; j++) {\r\n if (items[j].state) {\r\n _restricted[items[j].state] = items[j].restricted;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n var metadataPromise;\r\n var loadMetaData = function () {\r\n if (metadataPromise) {\r\n return metadataPromise;\r\n }\r\n\r\n metadataPromise = lobbyCommService.getMetaData()\r\n .then(function (response) {\r\n console.info(\"load metadata\");\r\n _metaData = response.ResponseMetaDataEntity;\r\n assertMetaData(_metaData);\r\n $rootScope.$broadcast('lobbyEvent::MetaDataLoaded', _metaData);\r\n return _metaData;\r\n }, function (error) {\r\n throw error;\r\n });\r\n\r\n return metadataPromise;\r\n }\r\n\r\n var loadHtmlDocument = function(docName) {\r\n var q = $q.defer();\r\n lobbyCommService.getDocument(docName + '.html')\r\n .then(function(response) {\r\n return q.resolve(response);\r\n }, function(error) {\r\n return q.reject(error);\r\n }\r\n );\r\n\r\n return q.promise;\r\n }\r\n\r\n\r\n // parse side menu items, sort both top level & sub level items\r\n var getMenuItems = function() {\r\n return _metaData.menu.sort(function(a, b) {\r\n if (a.items) {\r\n a.items.sort(function(a1, a2) {\r\n return parseFloat(a1.index) - parseFloat(a2.index);\r\n });\r\n }\r\n return parseFloat(a.index) - parseFloat(b.index);\r\n });\r\n }\r\n\r\n // parse module items, sort both modules & each module's banners\r\n var getModuleItems = function() {\r\n if (_metaData) {\r\n return _metaData.modules.sort(function(a, b) {\r\n if (a.banners) {\r\n a.banners.sort(function(a1, a2) {\r\n return parseFloat(a1.index) - parseFloat(a2.index);\r\n });\r\n }\r\n return parseFloat(a.index) - parseFloat(b.index);\r\n });\r\n }\r\n return [];\r\n }\r\n\r\n var getFirstTimeBannersItems = function () {\r\n if (_metaData) {\r\n //console.log('_metaData = ' + JSON.stringify(_metaData));\r\n return _metaData.FirstTimeBanners; \r\n }\r\n return [];\r\n }\r\n\r\n // select a menu node by id (see utils.js for 'normalize()' method)\r\n var selectMenuNode = function(nodeId) {\r\n var menuItems = getMenuItems();\r\n return $.grep(menuItems, function(menuItem) {\r\n return (nodeId == menuItem.id);\r\n }).normalize();\r\n }\r\n\r\n // get the menu node for each module\r\n var modulesMenuItems = function() {\r\n // gets the default level: top (envelope) view\r\n var moduleItems = getModuleItems();\r\n return $.map(moduleItems, function(module) {\r\n if (module.menuId) {\r\n return selectMenuNode(module.menuId);\r\n }\r\n return undefined;\r\n }).sort(function(a, b) {\r\n return parseFloat(a.index) - parseFloat(b.index);\r\n });\r\n }\r\n\r\n // get the sphere menu nodes\r\n var sphereMenuItems = function() {\r\n var sphereItems = modulesMenuItems();\r\n // manualy add a 'home' button (TODO: replace this with home button from metadata)\r\n sphereItems.unshift({ caption: '', icon: 'ico-home', url: '#/', index: 1, state: 'dw.lobby' });\r\n return sphereItems;\r\n }\r\n\r\n // construct the lobby modules menu\r\n var lobbyMenuItems = function() {\r\n \r\n var display = 0;\r\n var items = [],\r\n module = undefined,\r\n state = lobbyStateService.current.resolve();\r\n\r\n // get the current module id from state object\r\n if (state.hasData() && !state.isLobbyView()) {\r\n var moduleItems = getModuleItems();\r\n // get the module data object from local collection\r\n module = $.grep(moduleItems, function(n) {\r\n return (state.data.module == n.id);\r\n }).normalize();\r\n\r\n if (module) {\r\n // get the specified module menu data nodes\r\n var nodes = selectMenuNode(module.menuId);\r\n if (nodes) {\r\n items = nodes.items;\r\n display = nodes.display;\r\n }\r\n }\r\n }\r\n // fall back to default top most level menu\r\n if (items && items.length == 0) {\r\n // gets the default level: top (envelope) view\r\n items = modulesMenuItems();\r\n // make sure items are sorted\r\n items.sort(function (a, b) {\r\n return parseFloat(a.moduleIndex) - parseFloat(b.moduleIndex);\r\n });\r\n }\r\n \r\n return {\r\n parent: module,\r\n items: items,\r\n display: display\r\n }\r\n }\r\n\r\n var getModule = function(targetState) {\r\n var state = lobbyStateService.current.resolve(targetState);\r\n\r\n if (state.hasData()) {\r\n // get the module data object from local collection\r\n var moduleItems = getModuleItems();\r\n\r\n return $.grep(moduleItems, function(n) {\r\n return (state.data.module == n.id);\r\n }).normalize();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // get the banners for the active module\r\n var getModuleBanners = function() {\r\n var module = getModule();\r\n\r\n if (module) {\r\n return module.banners.sort(function(a, b) {\r\n return parseFloat(a.moduleIndex) - parseFloat(b.moduleIndex);\r\n });\r\n }\r\n return [];\r\n }\r\n\r\n var getCallCenters = function() {\r\n\r\n var deffered = $q.defer();\r\n\r\n if (_metaData)\r\n deffered.resolve(_metaData.callCenters);\r\n else {\r\n loadMetaData().then(function(res) {\r\n deffered.resolve(res.callCenters);\r\n });\r\n }\r\n return deffered.promise;\r\n }\r\n\r\n var getVersion = function() {\r\n //return _metaData.application.version;\r\n return appSettings.version;\r\n }\r\n var getLastEntryDate = function() {\r\n return _metaData.application.lastEntry;\r\n }\r\n\r\n //var getMetaDataTimeout = function() {\r\n // return MetaDataTimeout;\r\n //}\r\n //var MetaDataTimeout = 30000;\r\n //var isMetaDataReady = function(counter, deffered) {\r\n // var ellapsed = MetaDataTimeout - counter;\r\n // //console.log('----- waiting for meta data ' + ellapsed / 1000 + ' seconds ellapsed..');\r\n // if (typeof _metaData != 'undefined' && _metaData != null) {\r\n // //console.log('----- meta data ready after ' + ellapsed / 1000 + ' seconds ..');\r\n // deffered.resolve();\r\n // } else if (counter > 1000) {\r\n // counter -= 1000;\r\n\r\n // setTimeout(function() {\r\n // isMetaDataReady(counter, deffered);\r\n // }, 1000);\r\n // } else {\r\n // deffered.reject();\r\n // }\r\n //}\r\n\r\n //var waitForMetaData = function() {\r\n // var q = $q.defer();\r\n // isMetaDataReady(MetaDataTimeout, q);\r\n // return q.promise;\r\n //}\r\n\r\n var dataReady = function() {\r\n return typeof _metaData != 'undefined' && _metaData != null;\r\n }\r\n\r\n var getAppPageRoute = function(apppageid) {\r\n var deferMetaData = $q.defer();\r\n\r\n if (!apppageid) {\r\n deferMetaData.reject(null);\r\n } else {\r\n loadMetaData().then(function() {\r\n\r\n var pageid = parseInt(apppageid, 10);\r\n\r\n var selectedItem;\r\n\r\n _.each(_metaData.menu, function(menu) {\r\n if (menu.id == pageid) {\r\n selectedItem = menu;\r\n return;\r\n }\r\n\r\n var itms = _.findWhere(menu.items, { id: pageid });\r\n\r\n if (itms) {\r\n selectedItem = itms;\r\n return;\r\n }\r\n });\r\n\r\n deferMetaData.resolve(selectedItem ? selectedItem.state : null);\r\n\r\n return deferMetaData.promise;\r\n });\r\n }\r\n\r\n return deferMetaData.promise;\r\n }\r\n\r\n var getMetaData = function(section) {\r\n for (var node in _metaData) {\r\n if (_metaData[node] != null && section == node) {\r\n return _metaData[node];\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n // determin if navigation url requires authorization before executing\r\n // menu item is checked, then its parent (can hold global restriction for all children)\r\n var getNavRestriction = function(state) {\r\n return _restricted[state] == true;\r\n }\r\n\r\n var getMenuNode = function() {\r\n return $.grep(_metaData.menu, function(n) {\r\n if (n.menuId == id) {\r\n return n;\r\n }\r\n if (n.items) {\r\n return $.grep(n.items, function(n1) {\r\n if (n1.menuId == id) {\r\n return n1;\r\n }\r\n\r\n return null;\r\n }\r\n );\r\n }\r\n return undefined;\r\n });\r\n }\r\n\r\n // parse & process metadata\r\n _api = {\r\n getModule: getModule,\r\n getMenuNode: getMenuNode,\r\n getNavRestriction: getNavRestriction,\r\n //getMetaDataTimeout: getMetaDataTimeout,\r\n dataReady: dataReady,\r\n //waitForMetaData: waitForMetaData,\r\n loadHtmlDocument: loadHtmlDocument,\r\n loadMetaData: loadMetaData,\r\n sideMenuItems: getMenuItems,\r\n moduleMenuItems: lobbyMenuItems,\r\n sphereMenuItems: sphereMenuItems,\r\n modules: getModuleItems,\r\n firstTimeBanners: getFirstTimeBannersItems,\r\n moduleBanners: getModuleBanners,\r\n metaData: getMetaData,\r\n getAppPageRoute: getAppPageRoute,\r\n getCallCenters: getCallCenters,\r\n getVersion: getVersion,\r\n getLastEntryDate: getLastEntryDate\r\n }\r\n\r\n return _api;\r\n }\r\n})(window, window.angular, _);\n(function (window, angular, _) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('googleAnalyticsService', googleAnalyticsService);\r\n\r\n googleAnalyticsService.$inject = ['$location', 'appData'];\r\n\r\n function googleAnalyticsService($location, appData) {\r\n var _isDebug = false;\r\n var actionDictionary =\r\n {\r\n 'all pages': {\r\n //sphere\r\n 0: 'loby-home',\r\n 10: 'account-home',\r\n 20: 'benefits-home',\r\n 30: 'wallet-home',\r\n 40: 'customerService-home',\r\n 50: 'calhull',\r\n 60: 'generalActions'\r\n },\r\n 'lobby': {\r\n // cal4u \r\n 11: 'myaccount',\r\n 12: 'loans',\r\n 13: 'fixedPayout',\r\n 14: 'calchoicePayout',\r\n 15: 'debitSpread',\r\n 16: 'paymentSpread',\r\n 17: 'enlargecreditframe',\r\n 18: 'calmail-list',\r\n 19: 'Bank-Charges',\r\n\r\n // benefits\r\n 21: 'cal-store',\r\n 22: 'diners-store',\r\n 23: 'benefitaround',\r\n 24: 'cinemaDiners',\r\n 25: 'calpreflight',\r\n 26: 'dinerspreflight',\r\n 27: 'search-transaction',\r\n 28: 'new1',\r\n\r\n // my wallet\r\n 31: 'vouchers',\r\n 32: 'cashback',\r\n 33: 'p2p',\r\n 34: 'designedcards',\r\n 35: 'roundedforgood',\r\n 36: 'blockhome',\r\n 37: 'blockCard',\r\n 38: 'activateCard',\r\n 39: 'defectiveCard',\r\n\r\n // customer service\r\n 41: 'contactcal',\r\n 42: 'chat',\r\n 43: 'myReferrals',\r\n 44: 'internetCode',\r\n 45: 'emailUpdate',\r\n 46: 'wantCard',\r\n 47: 'trackmycard',\r\n 48: 'wa-chat',\r\n 49: 'insights',\r\n\r\n //calhull\r\n 51: 'mycode',\r\n 52: 'insurance',\r\n 53: 'abroadbenefits',\r\n 54: 'sixt',\r\n 55: 'shicor',\r\n 56: 'arkia',\r\n 57: 'simterra',\r\n 58: 'lupa',\r\n 59: 'traklin',\r\n\r\n 61: 'lobby-hok',\r\n 62: 'new2',\r\n 63: 'new3',\r\n 64: 'new4',\r\n 65: 'new5'\r\n\r\n },\r\n\r\n 'hamburger': {\r\n\r\n 10: 'account-home-Hamburger',\r\n 11: 'myaccount-Hamburger',\r\n 12: 'loans-Hamburger',\r\n 13: 'fixedPayout-Hamburger',\r\n 14: 'calchoicePayout-Hamburger',\r\n 15: 'debitSpread-Hamburger',\r\n 16: 'paymentSpread-Hamburger',\r\n 17: 'enlargecreditframe-Hamburger',\r\n 18: 'calmail-list-Hamburger',\r\n 19: 'Bank Charges-Hamburger',\r\n 20: 'benefits-home-Hamburger',\r\n 21: 'cal-store-Hamburger',\r\n 22: 'diners-store-Hamburger',\r\n 23: 'benefitaround-Hamburger',\r\n 24: 'cinemaDiners-Hamburger',\r\n 25: 'calpreflight-Hamburger',\r\n 26: 'dinerspreflight-Hamburger',\r\n 27: 'search-transaction-Hamburger',\r\n 28: 'new1-Hamburger',\r\n 30: 'wallet-home-Hamburger',\r\n 31: 'vouchers-Hamburger',\r\n 32: 'cashback-Hamburger',\r\n 33: 'p2p-Hamburger',\r\n 34: 'designedcards-Hamburger',\r\n 35: 'roundedforgood-Hamburger',\r\n 36: 'blockhome-Hamburger',\r\n 37: 'blockCard-Hamburger',\r\n 38: 'activateCard-Hamburger',\r\n 39: 'defectiveCard-Hamburger',\r\n 40: 'customerService-home-Hamburger',\r\n 41: 'contactcal-Hamburger',\r\n 42: 'chat-Hamburger',\r\n 43: 'myReferrals-Hamburger',\r\n 44: 'internetCode-Hamburger',\r\n 45: 'emailUpdate-Hamburger',\r\n 46: 'wantCard-Hamburger',\r\n 47: 'rackmycard-Hamburger',\r\n 48: 'wa-chat-Hamburger',\r\n 49: 'insights-Hamburger',\r\n 50: 'calhull-Hamburger',\r\n 51: 'mycode-Hamburger',\r\n 52: 'insurance-Hamburger',\r\n 53: 'abroadbenefits-Hamburger',\r\n 54: 'sixt-Hamburger',\r\n 55: 'shicor-Hamburger',\r\n 56: 'arkia-Hamburger',\r\n 57: 'simterra-Hamburger',\r\n 58: 'lupa-Hamburger',\r\n 59: 'traklin-Hamburger',\r\n 61: 'lobby-hok',\r\n 62: 'new2-Hamburger',\r\n 63: 'new3-Hamburger',\r\n 64: 'new4-Hamburger',\r\n 65: 'new5-Hamburger',\r\n 90: 'Legal-terms-Hamburger',\r\n 91: 'amlot-Hamburger',\r\n 92: 'Information-security-Hamburger',\r\n 93: 'logout-touch-Hamburger',\r\n 94: 'logout-info-Hamburger',\r\n 95: 'Logout-Hamburger'\r\n },\r\n\r\n 'login': {\r\n 1: 'Login - Entrance',\r\n 2: 'Login - ID',\r\n 3: 'Login - ID - continue',\r\n 4: 'Login - ID - send',\r\n 5: 'Login - Click 2 Call'\r\n },\r\n 'shtifomat': {\r\n 1: 'Car type - entrance',\r\n 2: 'Car type continue - entrance',\r\n 3: 'Shtifomat - correction',\r\n 4: 'Shtifomat - confirmation',\r\n 5: 'Shtifomat - remove',\r\n 6: 'Shtifomat - Thank you',\r\n }\r\n }\r\n\r\n\r\n \r\n\r\n\r\n\r\n var getEvent = function (key, id) {\r\n return actionDictionary[key][id];\r\n };\r\n\r\n var _trackPage = function (pageName) {\r\n\r\n if(_isDebug){\r\n console.log('ga: track page', pageName);\r\n return;\r\n }\r\n\r\n try {\r\n\r\n if (ga) {\r\n pageName += getPageSuffix(pageName);\r\n //window.analytics.trackView(pageName);\r\n ga('send', 'pageview', pageName);\r\n }\r\n } catch (ex) {\r\n }\r\n }\r\n\r\n var _insertEvent = function (option) {\r\n if (_isDebug) {\r\n console.log('ga: track event', option);\r\n return;\r\n }\r\n try {\r\n\r\n if (ga) {\r\n\r\n var pageName;\r\n var eventName;\r\n var action;\r\n\r\n if (option.action) {\r\n action = option.action;\r\n } else {\r\n action = 'Click';\r\n }\r\n\r\n\r\n if (option.eventName) {\r\n eventName = option.eventName;\r\n } else {\r\n eventName = getEvent(option.page, option.id);\r\n }\r\n\r\n\r\n if (!option.page) {\r\n pageName = $location.path().substring($location.path().lastIndexOf('#/') + 2);\r\n } else {\r\n pageName = option.page;\r\n }\r\n \r\n pageName += getPageSuffix(eventName);\r\n\r\n\r\n ga('send', 'event', pageName, action, eventName, 1);\r\n //window.analytics.trackEvent(pageName, action, eventName, 1);\r\n }\r\n } catch (ex) {\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n var getPageSuffix = function (eventName) {\r\n var suffix = '';\r\n var regEx = new RegExp('calchoice|loan');\r\n if (appData.BankAccounts && eventName &&\r\n regEx.test(eventName.toLowerCase())) { \r\n var currentBankAccountIndex = appData.selectedBankAccountIndex || 0;\r\n suffix = '?manpik=';\r\n suffix += appData.BankAccounts[currentBankAccountIndex].Cards[appData.shownCardIndex || 0].IsIssuedByCalInd ? 'Regular' : 'External';\r\n }\r\n\r\n return suffix;\r\n }\r\n \r\n\r\n\r\n\r\n var _api = {\r\n insertEvent: _insertEvent,\r\n trackPage: _trackPage,\r\n isDebug: _isDebug\r\n }\r\n\r\n return _api;\r\n }\r\n})(window, window.angular, _);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('nativeAppBannerService', nativeAppBannerService);\r\n\r\n nativeAppBannerService.$inject = ['googleAnalyticsService'];\r\n\r\n function nativeAppBannerService(googleAnalyticsService) {\r\n\r\n function init() {\r\n window.addEventListener('beforeinstallprompt', function () {\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', eventName: 'הופעה', action: 'באנר התקנת אפליקציה' });\r\n });\r\n\r\n window.addEventListener('appinstalled', function () {\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', eventName: 'התקנה', action: 'באנר התקנת אפליקציה' });\r\n });\r\n }\r\n\r\n return {\r\n init: init\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('lobbyStorageService', lobbyStorageService);\r\n\r\n lobbyStorageService.$inject = ['$angularCacheFactory', 'appData', '$timeout'];\r\n\r\n function lobbyStorageService($angularCacheFactory, appData, $timeout) {\r\n\r\n var cache = $angularCacheFactory('dwLobbyCache');\r\n return {\r\n metaData: function (data) {\r\n if (data) {\r\n cache.put('LobbyMetaData', data);\r\n }\r\n return cache.get('LobbyMetaData');\r\n },\r\n clearAppData: function () {\r\n\r\n $angularCacheFactory.clearAll();\r\n\r\n $timeout.cancel(appData.sessionTimeout);\r\n appData.BankAccounts = {};\r\n appData.selectedBankAccountIndex = 0;\r\n appData.shownCardIndex = 0;\r\n\r\n if (appData.myAccount)\r\n appData.myAccount.status = 0;\r\n\r\n appData.token = null;\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .service('register357Service', register357Service);\r\n\r\n register357Service.$inject = ['connection', '$ionicPopup'];\r\n\r\n function register357Service(connection, $ionicPopup) {\r\n var _initData = [\r\n {\r\n channel: {\r\n id: 1,\r\n name: 'דואר'\r\n },\r\n levels: [\r\n { id: 1, name: 'לא מעוניין' },\r\n { id: 2, name: 'מעוניין בקבלת מידע' },\r\n { id: 3, name: 'מעוניין בביצוע פעולות וקבלת מידע' }\r\n ],\r\n selected: {\r\n channelId: 1,\r\n levelId: 3\r\n }\r\n },\r\n {\r\n channel: {\r\n id: 2,\r\n name: 'מענה קולי'\r\n },\r\n levels: [\r\n { id: 1, name: 'לא מעוניין' },\r\n { id: 2, name: 'מעוניין בקבלת מידע' },\r\n { id: 3, name: 'מעוניין בביצוע פעולות וקבלת מידע' }\r\n ],\r\n selected: {\r\n channelId: 2,\r\n levelId: 3\r\n }\r\n },\r\n {\r\n channel: {\r\n id: 3,\r\n name: 'sms'\r\n },\r\n levels: [\r\n { id: 1, name: 'לא מעוניין' },\r\n { id: 2, name: 'מעוניין בקבלת מידע' },\r\n { id: 3, name: 'מעוניין בביצוע פעולות וקבלת מידע' }\r\n ],\r\n selected: {\r\n channelId: 3,\r\n levelId: 3\r\n }\r\n },\r\n {\r\n channel: {\r\n id: 4,\r\n name: 'אתר אינטרנט'\r\n },\r\n levels: [\r\n { id: 1, name: 'לא מעוניין' },\r\n { id: 3, name: 'מעוניין בביצוע פעולות וקבלת מידע' }\r\n ],\r\n selected: {\r\n channelId: 4,\r\n levelId: 3\r\n }\r\n }\r\n ];\r\n\r\n var _isOtp = null;\r\n var _is357Done = null;\r\n\r\n return {\r\n getInitData: function () {\r\n return _initData;\r\n },\r\n update: function (data) {\r\n\r\n var request = {};\r\n request.channelsDefConstant = 21;\r\n request.channels = new Array();\r\n\r\n for (var i = 0, length = data.length; i < length; i++) {\r\n request.channels[i] = {};\r\n request.channels[i].channelID = data[i].selected.channelId;\r\n request.channels[i].levelID = data[i].selected.levelId;\r\n }\r\n\r\n return connection.genericConnection('POST', 'CustDetails357/update?', connection.versionAndOSParams, request);\r\n },\r\n getMessage: function (message, callback) {\r\n var popupWindow = $ionicPopup.show({\r\n title: message,\r\n buttons: [\r\n { text: 'סגור', type: 'button-positive' }\r\n ]\r\n });\r\n\r\n popupWindow.then(function (res) {\r\n callback(res);\r\n });\r\n },\r\n isNotRegistered357: function (response) {\r\n return response.Status.SeverityCode == 'S' && response.Status.SeverityNumber == '002';\r\n },\r\n setOtp: function (isOtp) {\r\n _isOtp = isOtp;\r\n },\r\n getIsOtp: function () {\r\n return _isOtp;\r\n },\r\n set357Done: function () {\r\n _is357Done = true;\r\n },\r\n is357Done: function () {\r\n return _is357Done != null ? _is357Done : false;\r\n },\r\n isInternetAndCellularChecked: function (channels, internetIndex, cellularIndex) {\r\n return channels[internetIndex].selected.levelId == 3 &&\r\n channels[cellularIndex].selected.levelId == 3;\r\n },\r\n isInternetChecked: function (channels, internetIndex) {\r\n return channels[internetIndex].selected.levelId == 3;\r\n }\r\n };\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('SmsService', SmsService);\r\n\r\n SmsService.$inject = ['$q'];\r\n\r\n function SmsService($q) {\r\n\r\n var _deffered;\r\n\r\n var smsplugin;\r\n\r\n ionic.Platform.ready(function () {\r\n if (window.plugins && ionic.Platform.isAndroid())\r\n smsplugin = cordova.require(\"info.asankan.phonegap.smsplugin.smsplugin\");\r\n\r\n });\r\n\r\n var options = {\r\n sourcePhoneNumber: 'Cal2Login',\r\n regexPattern: new RegExp(/\\d+/)\r\n };\r\n\r\n var _isPhoneNumberExists = function (phoneNumber, sourcePhoneNumber) {\r\n if (sourcePhoneNumber[0] == '0') {\r\n sourcePhoneNumber = sourcePhoneNumber.substring(1, sourcePhoneNumber.length - 1);\r\n }\r\n\r\n return phoneNumber.indexOf(sourcePhoneNumber) != -1;\r\n }\r\n\r\n var _parseData = function (message, regexPattern) {\r\n return regexPattern.exec(message);\r\n }\r\n\r\n var _start = function () {\r\n _deffered = $q.defer();\r\n if (smsplugin) {\r\n smsplugin.startReception(function (data) {\r\n if (data === undefined || data === null) return;\r\n\r\n var result = data.split(/>/);\r\n\r\n var phoneNumber = result[0];\r\n var message = result[1];\r\n var code;\r\n\r\n if (_isPhoneNumberExists(phoneNumber, options.sourcePhoneNumber)) {\r\n\r\n code = _parseData(message, options.regexPattern);\r\n\r\n _deffered.resolve(code);\r\n\r\n smsplugin.stopReception();\r\n }\r\n }, function () {\r\n _deffered.reject(data);\r\n smsplugin.stopReception();\r\n });\r\n } else {\r\n _deffered.reject('not supported');\r\n }\r\n\r\n return _deffered.promise;\r\n }\r\n\r\n return {\r\n getOtpPassword: _start\r\n }\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('accountService', accountService);\r\n\r\n accountService.$inject = ['appData', 'connection', 'lobbyUiService', '$location', '$timeout', '$q', 'dataService', '$rootScope', 'errorService'];\r\n\r\n function accountService(appData, connection, lobbyUiService, $location, $timeout, $q, dataService, $rootScope, errorService) {\r\n var _self;\r\n\r\n function loginSso() {\r\n _self = this;\r\n var defer = $q.defer();\r\n\r\n var queryString = $location.search();\r\n var sid = queryString.sid;\r\n var bsid = queryString.bsid;\r\n var OTPToken = queryString.OTPToken;\r\n var sessionID = queryString.sessionID;\r\n var ssoPromise;\r\n var isSSO;\r\n if (OTPToken && OTPToken.length && OTPToken.length > 0 && sessionID && sessionID.length && sessionID.length > 0) {\r\n isSSO = true;\r\n if (!appData.metaData) {\r\n ssoPromise = {};\r\n connection.getMetaData().then(function (resMetadata) {\r\n appData.metaData = resMetadata;\r\n ssoPromise = execSsoFromExternalSys(OTPToken, sessionID)\r\n .then(function (result) {\r\n sid = result;\r\n });\r\n\r\n $q.all([ssoPromise]).then(function () {\r\n defer.resolve(ssoGuid(sid));\r\n }, function () {\r\n defer.reject();\r\n });\r\n });\r\n }\r\n else {\r\n ssoPromise = execSsoFromExternalSys(OTPToken, sessionID)\r\n .then(function (result) {\r\n sid = result;\r\n defer.resolve(ssoGuid(sid));\r\n }, function () {\r\n defer.reject();\r\n });\r\n }\r\n }\r\n\r\n /*isSSO && $q.all([ssoPromise]).then(function () {\r\n defer.resolve(ssoGuid(defer, sid));\r\n })*/\r\n\r\n if (!isSSO) {\r\n //if bank replace sid val with bsid val.\r\n if (bsid) {\r\n sid = bsid;\r\n }\r\n $timeout(function () {\r\n defer.resolve(ssoGuid(sid));\r\n }, function () {\r\n defer.reject();\r\n });\r\n }\r\n\r\n return defer.promise;\r\n }\r\n\r\n function ssoGuid(sid) {\r\n var defer = $q.defer();\r\n if (sid && sid.length && sid.length > 0) {\r\n\r\n var ssoRequest = buildSsoRequest(sid);\r\n $location.search().sid = null;\r\n\r\n if (!appData.metaData) {\r\n connection.getMetaData().then(function (resMetadata) {\r\n appData.metaData = resMetadata;\r\n return execSso(ssoRequest, defer);\r\n });\r\n }\r\n else {\r\n $timeout(function () {\r\n return execSso(ssoRequest, defer);\r\n });\r\n }\r\n }\r\n else {\r\n $timeout(function () {\r\n defer.resolve();\r\n })\r\n }\r\n\r\n return defer.promise;\r\n }\r\n\r\n function execSso(ssoRequest, defer) {\r\n //var defer = $q.defer();\r\n connection.ssoLogin(ssoRequest)\r\n .then(function (response) {\r\n if (response) {\r\n return _self.getAccount(response, defer);\r\n }\r\n }, function () {\r\n defer.reject();\r\n });\r\n\r\n return defer.promise;\r\n }\r\n\r\n function execSsoFromExternalSys(OTPToken, SessionID) {\r\n var defer = $q.defer();\r\n connection.ssoLoginFromExternalSystem(OTPToken, SessionID)\r\n .then(function (response) {\r\n if (response) {\r\n defer.resolve(response.Guid);\r\n }\r\n }, function () {\r\n defer.reject();\r\n });\r\n return defer.promise;\r\n }\r\n\r\n function buildSsoRequest(sid) {\r\n return {\r\n hash: sid,\r\n type: 1 //SSO\r\n };\r\n }\r\n\r\n function filterAccountByIsEffective(accounts) {\r\n var copyAccounts = angular.copy(accounts);\r\n\r\n var filterAccounts = [];\r\n\r\n _.each(copyAccounts, function (account) {\r\n var filterCards = _.filter(account.Cards, function (card) {\r\n return card.IsEffectiveInd == true;\r\n });\r\n\r\n if (filterCards.length > 0) {\r\n account.Cards = filterCards;\r\n filterAccounts.push(account);\r\n }\r\n });\r\n\r\n return filterAccounts;\r\n }\r\n\r\n function getAccount(loginRes, defer) {\r\n //var defer = $q.defer();\r\n if (loginRes) {\r\n connection.setToken(loginRes.calConnectToken);\r\n }\r\n var accountPromise = connection.getAccount();\r\n accountPromise.then(function (response) {\r\n appData.CustomerInfo = response.CustomerInfo;\r\n appData.BankAccounts = filterAccountByIsEffective(response.BankAccounts);\r\n lobbyUiService.loader.hide();\r\n if (!appData.BankAccounts || appData.BankAccounts.length == 0) {\r\n errorService.handleError([\r\n {\r\n response: {\r\n Response: {\r\n Status: {\r\n SeverityCode: 'E',\r\n SeverityNumber: '001'\r\n },\r\n DialogBox: {\r\n Content: 'לא ניתן לקבל מידע אודות הכרטיסים שברשותך. באפשרותך לפנות לאתר Cal-Online.',\r\n Title: '',\r\n OKButtonText: 'סגור'\r\n }\r\n }\r\n },\r\n action: \"noCards\"\r\n }\r\n ], getAccount);\r\n\r\n dataService.sessionManager.save('appData', appData);\r\n return;\r\n }\r\n\r\n dataService.sessionManager.save('appData', appData);\r\n appData.needRefreshAccount = false;\r\n\r\n var routeParams = {};\r\n routeParams.nextPage = lobbyUiService.getParams('nextPage'); // || 'dw.myaccount';\r\n routeParams.command = lobbyUiService.getParams('command') || '';\r\n routeParams.type = lobbyUiService.getParams('type') || '1';\r\n routeParams.sso = lobbyUiService.getParams('sso') || false;\r\n lobbyUiService.loader.hide();\r\n\r\n $rootScope.$broadcast('accountLoggedIn', response);\r\n if (routeParams.nextPage) {\r\n lobbyUiService.navigate(routeParams.nextPage, { type: routeParams.type, sso: routeParams.sso, command: routeParams.command, location: 'replace' },\r\n {\r\n location: 'replace'\r\n });\r\n }\r\n\r\n defer.resolve();\r\n\r\n }, function () {\r\n lobbyUiService.loader.hide();\r\n defer.resolve();\r\n });\r\n\r\n return defer.promise;\r\n }\r\n\r\n function login() {\r\n _self = this;\r\n var defer = $q.defer();\r\n if (!appData.metaData) {\r\n $timeout(function () {\r\n var token = dataService.sessionManager.read('authToken');\r\n var data = dataService.sessionManager.read('appData');\r\n if (token && data) {\r\n connection.setToken(token);\r\n appData.metaData = data.metaData;\r\n appData.CustomerInfo = data.CustomerInfo;\r\n appData.BankAccounts = data.BankAccounts;\r\n $timeout(function () {\r\n defer.resolve();\r\n });\r\n }\r\n else {\r\n connection.getMetaData().then(function (resMetadata) {\r\n appData.metaData = resMetadata;\r\n if (token) {\r\n return _self.getAccount({ calConnectToken: token }, defer);\r\n }\r\n else {\r\n $timeout(function () {\r\n defer.resolve();\r\n });\r\n }\r\n }, function () {\r\n defer.resolve();\r\n });\r\n }\r\n }, 300);\r\n }\r\n return defer.promise;\r\n }\r\n\r\n return {\r\n getAccount: getAccount,\r\n loginSso: loginSso,\r\n login: login\r\n }\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('ssoService', ssoService);\r\n\r\n ssoService.$inject = ['lobbyCommService', 'appData'];\r\n\r\n function ssoService(lobbyCommService, appData) {\r\n\r\n function insertSsoDetails() {\r\n var cardId = appData.BankAccounts[appData.selectedBankAccountIndex || 0].Cards[appData.shownCardIndex || 0].Id;\r\n\r\n return lobbyCommService.insertSsoDetails(cardId);\r\n }\r\n\r\n return {\r\n insertSsoDetails: insertSsoDetails,\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('chatService', chatService);\r\n\r\n chatService.$inject = ['lobbyCommService', 'lobbyDataService', 'appData','appSettings'];\r\n\r\n function chatService(lobbyCommService, lobbyDataService, appData, appSettings) {\r\n var pageUrl = '';\r\n return {\r\n inserNewChatDetails: function () {\r\n var metadata = lobbyDataService.loadMetaData();\r\n // pageUrl = metadata.$$state.value.application.chat.split('-')[0];\r\n pageUrl = appSettings.chatUrl;\r\n return lobbyCommService.inserNewChatDetails(pageUrl);\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module(\"digitalWallet\")\r\n .factory('EncryptionService', EncryptionService);\r\n\r\n EncryptionService.$inject = ['HashCreactor'];\r\n\r\n function EncryptionService(HashCreactor) {\r\n\r\n var _isTouchLogin = false;\r\n\r\n var getUuid = function () {\r\n var uuid = typeof device === 'undefined' ? 'RaNdOmStRiNg' : device.uuid;\r\n return uuid;\r\n }\r\n\r\n var setHash = function (myGuid) {\r\n var guid = myGuid;\r\n var uuid = this.getUuid();\r\n guid = guid.toUpperCase();\r\n return HashCreactor.createHash(guid + uuid);\r\n }\r\n\r\n var takanonStatus = false;\r\n var isTouchReq = false;\r\n\r\n var setTouchTakanon = function (read) {\r\n takanonStatus = read;\r\n return takanonStatus;\r\n };\r\n var getTouchTakanon = function () {\r\n return takanonStatus;\r\n };\r\n\r\n var setIsTouchReq = function (flag) {\r\n window.localStorage[\"isTouchReq\"] = flag;\r\n };\r\n var getIsTouchReq = function () {\r\n return JSON.parse(window.localStorage[\"isTouchReq\"] || false);\r\n };\r\n\r\n var getTouchLogin = function () {\r\n return _isTouchLogin;\r\n }\r\n\r\n var setTouchLogin = function (flag) {\r\n _isTouchLogin = flag;\r\n }\r\n\r\n var api = {\r\n setHash: setHash,\r\n getUuid: getUuid,\r\n setTouchTakanon: setTouchTakanon,\r\n getTouchTakanon: getTouchTakanon,\r\n setIsTouchReq: setIsTouchReq,\r\n getIsTouchReq: getIsTouchReq,\r\n getTouchLogin: getTouchLogin,\r\n setTouchLogin: setTouchLogin\r\n }\r\n\r\n return api;\r\n }\r\n\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module(\"digitalWallet\")\r\n .factory('HashCreactor', HashCreactor);\r\n\r\n function HashCreactor() {\r\n var createHash = function (valueToHash) {\r\n var sha512 = CryptoJS.SHA512(valueToHash).toString(CryptoJS.enc.Base64);\r\n return sha512;\r\n }\r\n var api = {\r\n createHash: createHash\r\n }\r\n return api;\r\n }\r\n\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module(\"digitalWallet\")\r\n .factory('isTouchIDAvailable', isTouchIDAvailable);\r\n\r\n isTouchIDAvailable.$inject = ['$ionicPlatform', '$q'];\r\n\r\n function isTouchIDAvailable($ionicPlatform, $q) {\r\n\r\n var deferred = $q.defer();\r\n var isSupport = null;\r\n\r\n var isAvailable = function () {\r\n\r\n if (navigator.credentials.create) \r\n setTimeout(function () { deferred.resolve(); }, 10);\r\n else\r\n setTimeout(function () { deferred.reject({ error: \"touch not support.\" }); }, 10);\r\n \r\n return deferred.promise;\r\n }\r\n\r\n var api = {\r\n isAvailable: isAvailable\r\n };\r\n\r\n return api;\r\n }\r\n\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\").\r\n factory(\"restrictService\", restrictService);\r\n\r\n restrictService.$inject = ['$rootScope', 'lobbyDataService', 'EncryptionService', '$q'];\r\n\r\n function restrictService($rootScope, lobbyDataService, EncryptionService, $q) {\r\n\r\n var checkIsRestricted = function (state) {\r\n var deferred = $q.defer();\r\n\r\n lobbyDataService.loadMetaData().then(function (metadata) {\r\n\r\n var routesDetails;\r\n\r\n if (metadata.routes)\r\n {\r\n routesDetails = metadata.routes.filter(function (routeDetails) {\r\n return state.indexOf(routeDetails.routePath) > -1;\r\n });\r\n }\r\n\r\n if (routesDetails && routesDetails.length === 1) {\r\n var currentRouteDetails = routesDetails[0];\r\n deferred.resolve(currentRouteDetails.isTouchForbidden);\r\n }\r\n deferred.resolve(false);\r\n }, function (error) {\r\n deferred.reject();\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n var restirctedRoute = function (event, state) {\r\n var deferred = $q.defer();\r\n\r\n if (EncryptionService.getTouchLogin()) {\r\n\r\n checkIsRestricted(state.name).then(function (isTouchForbidden) {\r\n if (isTouchForbidden) {\r\n event.preventDefault();\r\n deferred.resolve(true);\r\n }\r\n }, function () {\r\n deferred.reject();\r\n });\r\n }\r\n\r\n return deferred.promise;\r\n };\r\n\r\n return {\r\n restirctedRoute: restirctedRoute,\r\n checkIsRestricted: checkIsRestricted\r\n }\r\n }\r\n\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module(\"digitalWallet\")\r\n .factory('touchKeyStore', touchKeyStore);\r\n\r\n touchKeyStore.$inject = ['$q'];\r\n\r\n function touchKeyStore($q) {\r\n\r\n var kc = null;\r\n var deferred;\r\n\r\n try {\r\n kc = new Keychain();\r\n var key = \"myFinger\";\r\n var servicename = \"כניסה מהירה לאזור אישי\";\r\n } catch (e) {\r\n\r\n }\r\n\r\n var win = function (value) {\r\n deferred.resolve({ flag: true, result: value });\r\n };\r\n var fail = function (error) {\r\n deferred.reject({ flag: false })\r\n };\r\n\r\n var win2 = function () {\r\n deferred.resolve({ result: true });\r\n };\r\n var fail2 = function (error) {\r\n deferred.reject({ result: false })\r\n };\r\n\r\n var getKey = function () {\r\n deferred = $q.defer();\r\n kc && kc.getForKey(win, fail, key, servicename);\r\n return deferred.promise;\r\n };\r\n\r\n var setKey = function (hash) {\r\n deferred = $q.defer();\r\n kc && kc.setForKey(win2, fail2, key, servicename, hash);\r\n return deferred.promise;\r\n };\r\n\r\n var removeKey = function () {\r\n deferred = $q.defer();\r\n kc && kc.removeForKey(win2, fail2, key, servicename);\r\n return deferred.promise;\r\n };\r\n\r\n var _api = {\r\n getKey: getKey,\r\n setKey: setKey,\r\n removeKey: removeKey\r\n }\r\n\r\n return _api;\r\n }\r\n\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('tokenService', tokenService);\r\n\r\n tokenService.$inject = ['connection', 'lobbyUiService', '$state', '$stateParams'];\r\n\r\n function tokenService(connection, lobbyUiService, $state, $stateParams) {\r\n\r\n var _data = {};\r\n\r\n return {\r\n getData: function() {\r\n return _data;\r\n },\r\n getOtpDataByToken: function (token) {\r\n var request = { token: token };\r\n connection.getOtpDataByToken(request).then(\r\n function (data) {\r\n if (data && data.IdNumber && data.Last4Digits) {\r\n _data.idNumber = data.IdNumber;\r\n _data.last4Digits = data.Last4Digits;\r\n lobbyUiService.go('dw.login', { isOtpData: true });\r\n }\r\n }, function () {\r\n //error\r\n });\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('newChatService', newChatService);\r\n\r\n newChatService.$inject = ['$rootScope', 'appData', 'appSettings', 'lobbyDataService', 'lobbyCommService', 'connection', 'lobbyUiService', '$state', '$stateParams'];\r\n\r\n function newChatService($rootScope, appData, appSettings, lobbyDataService, lobbyCommService, connection, lobbyUiService, $state, $stateParams) {\r\n\r\n function inserNewChatDetails() {\r\n var metadata = lobbyDataService.loadMetaData();\r\n var pageUrl = appSettings.chatUrl;\r\n return lobbyCommService.inserNewChatDetails(pageUrl);\r\n }\r\n\r\n function openChat() {\r\n var vm = this;\r\n \r\n if (!vm.iframeChat) {\r\n inserNewChatDetails().then(function (res) {\r\n var settingUrl = appSettings.chatUrl;\r\n var chatUrl = res.guid ? settingUrl + '?' + 'profile=' + res.profile + '&lang=' + res.language + '&t=' + res.guid + '&' : settingUrl;\r\n vm.iframeChat = chatUrl;\r\n });\r\n }\r\n }\r\n\r\n return {\r\n openChat: openChat\r\n }\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('serverConnection')\r\n .factory('connection', connectionService);\r\n\r\n connectionService.$inject = ['$http', '$rootScope', '$q', 'errorService', '$timeout', 'appData', 'lobbyUiService', 'lobbyCommService', 'appSettings', '$ionicHistory', 'dataService'];\r\n\r\n function connectionService($http, $rootScope, $q, errorService, $timeout, appData, lobbyUiService, lobbyCommService, appSettings, $ionicHistory, dataService) {\r\n\r\n var currentVersion = appSettings.version;\r\n\r\n // OS Temp Value - For Testing ONLY!\r\n //var os = navigator.platform = 'Android';\r\n var os = navigator && navigator.platform == 'iPhone' ? 'iOS' : 'Android';\r\n\r\n var versionAndOS = 'CurrentVersion=' + currentVersion + '&OperatingSystem=' + os;\r\n\r\n\r\n var baseUrl = appSettings.server;\r\n var calConnectUrl = appSettings.calConnectServer;\r\n\r\n\r\n errorService.requestsSent = 0;\r\n errorService.responsesRecieved = 0;\r\n\r\n var httpErrorObject = {\r\n response: {\r\n Response: {\r\n Status: {\r\n SeverityCode: 'E',\r\n SeverityNumber: '001'\r\n },\r\n DialogBox: {\r\n Content: 'בשל תקלה לא ניתן להשלים את הפעולה. יש לנסות מאוחר יותר',\r\n Title: ' ',\r\n OKButtonText: 'נסה שנית',\r\n CancelButtonText: 'סגור'\r\n\r\n }\r\n }\r\n },\r\n action: \"http\"\r\n },\r\n sessionErrorObject = [{\r\n response: {\r\n Response: {\r\n Status: {\r\n SeverityCode: 'E',\r\n SeverityNumber: '002'\r\n },\r\n DialogBox: {\r\n Content: 'לחץ אישור על-מנת להזדהות שוב',\r\n Title: 'התנתקת מהמערכת',\r\n OKButtonText: 'אישור'\r\n }\r\n }\r\n },\r\n action: \"http\"\r\n }], sessionExpiredObject = [{\r\n response: {\r\n Response: {\r\n Status: {\r\n SeverityCode: 'E',\r\n SeverityNumber: '004'\r\n },\r\n DialogBox: {\r\n Content: 'לחץ אישור על-מנת להזדהות שוב',\r\n Title: 'התנתקת מהמערכת',\r\n OKButtonText: 'אישור'\r\n }\r\n }\r\n },\r\n action: \"http\"\r\n }], noConnectionErrorObject = [{\r\n response: {\r\n Response: {\r\n Status: {\r\n SeverityCode: 'E',\r\n SeverityNumber: '003'\r\n },\r\n DialogBox: {\r\n Content: 'אין חיבור לרשת.\\nבדוק את החיבור ונסה שנית.',\r\n Title: 'שגיאה קישורית',\r\n OKButtonText: 'נסה שנית',\r\n CancelButtonText: 'סגור'\r\n }\r\n }\r\n },\r\n action: \"http\"\r\n }];\r\n\r\n\r\n var connection = {\r\n\r\n token: dataService.sessionManager.read('authToken') || null,\r\n versionAndOSParams: versionAndOS,\r\n // This function handles all the http calls for the other functions\r\n genericConnection: function (connectionMethod, connectionAction, connectionParameters, connectionData, connectionSuccessFunction,\r\n connectionErrorFunction, restartServiceDeferred, ignoreToken, isCalconnect) {\r\n\r\n var args = arguments;\r\n var deferred = {};\r\n if (!restartServiceDeferred) {\r\n deferred = $q.defer();\r\n args[6] = deferred;\r\n }\r\n else {\r\n deferred = restartServiceDeferred;\r\n }\r\n\r\n // Set All the needed Connection data into one object \r\n if (this.checkConnection() == false) {\r\n errorService.handleError(noConnectionErrorObject);\r\n return deferred.promise;\r\n }\r\n\r\n // Check if a diffs success function is wanted\r\n var successFunction = (angular.isFunction(connectionSuccessFunction)) ? connectionSuccessFunction : function (response) {\r\n if (!response.Response) {\r\n deferred.resolve(response);\r\n }\r\n else if (response.Response.Status.SeverityCode != 'W' && response.Response.Status.SeverityCode != 'E') {\r\n deferred.resolve(response);\r\n }\r\n else {\r\n var errorObject = {};\r\n errorObject.response = response;\r\n errorObject.action = connectionMethod + \"_\" + connectionAction;\r\n deferred.reject([errorObject, args, 'genericConnection']);\r\n }\r\n };\r\n\r\n // Check if a diff error function is wanted\r\n var errorFunction = (angular.isFunction(connectionErrorFunction)) ? connectionErrorFunction : function (data, status, headers, config) {\r\n //errorService.handleError(httpErrorObject);\r\n if (status === 403 || status === 401) {\r\n //errorService.handleError(sessionExpiredObject);\r\n deferred.reject(sessionExpiredObject);\r\n }\r\n else {\r\n deferred.reject([httpErrorObject, args, 'genericConnection']);\r\n }\r\n };\r\n\r\n var authHeader = !ignoreToken && this.token && this.token != 'undefined' ? { 'Authorization': 'CALAuthScheme ' + this.token } : '';\r\n if (authHeader) { authHeader['X-Site-Id'] = appSettings.siteId; }\r\n\r\n //console.log(\"calling: \" + url + connectionAction + connectionParameters + \" data \" + JSON.stringify(connectionData) + \" headers \" + JSON.stringify(authHeader));\r\n\r\n var url = baseUrl;\r\n if (isCalconnect) { url = calConnectUrl }\r\n\r\n $http({ method: connectionMethod, url: url + connectionAction + connectionParameters, data: connectionData, headers: authHeader })\r\n .success(successFunction)\r\n .error(errorFunction);\r\n if (this.token && appData.metaData) {\r\n $timeout.cancel(appData.sessionTimeout);\r\n errorService.token = this.token;\r\n var tOut = appData.metaData.SessionTimeout * 1000;\r\n appData.sessionTimeout = $timeout(function () {\r\n errorService.handleError(sessionErrorObject);\r\n }, tOut, false);\r\n }\r\n return deferred.promise;\r\n },\r\n\r\n login: function (login, restartServiceDeferred) {\r\n\r\n var args = arguments;\r\n var deferred = {};\r\n if (!restartServiceDeferred) {\r\n deferred = $q.defer();\r\n args[6] = deferred;\r\n }\r\n else {\r\n deferred = restartServiceDeferred;\r\n }\r\n var selfie = this;\r\n var data = {\r\n Password: login.pass,\r\n UserName: login.user,\r\n /* touch: RememberMe obj*/\r\n RememberMe: {\r\n IsRememberMe: login.touchFlag,\r\n UUID: login.uuid,\r\n authMethods: 2\r\n }\r\n };\r\n\r\n if (this.checkConnection() == false) {\r\n errorService.handleError(noConnectionErrorObject);\r\n return deferred.promise;\r\n }\r\n\r\n $http.call(this, { method: 'POST', url: url + 'CalAuthenticator?' + versionAndOS, data: data })\r\n .success.call(this, function (response) {\r\n $ionicHistory.clearCache();\r\n if (response.Response.Status.SeverityCode == 'S') {\r\n selfie.token = response.AuthenticationToken;\r\n dataService.sessionManager.save('authToken', selfie.token);\r\n\r\n if (appData.sessionTimeout)\r\n $timeout.cancel(appData.sessionTimeout);\r\n\r\n var tOut = appData.metaData.SessionTimeout * 1000;\r\n errorService.token = selfie.token;\r\n appData.sessionTimeout = $timeout(function () {\r\n errorService.handleError(sessionErrorObject);\r\n }, tOut, false);\r\n\r\n deferred.resolve(response);\r\n }\r\n else {\r\n var errorObject = {};\r\n\r\n errorObject.response = response;\r\n errorObject.action = 'POST_CalAuthenticator?';\r\n deferred.reject([errorObject, args, 'login']);\r\n }\r\n })\r\n .error(function (data, status, headers, config) {\r\n $ionicHistory.clearCache();\r\n deferred.reject([httpErrorObject, args, 'login']);\r\n });\r\n\r\n return deferred.promise;\r\n },\r\n\r\n postOpenLead: function (data, restartServiceDeferred) {\r\n\r\n var args = arguments;\r\n var deferred = {};\r\n if (!restartServiceDeferred) {\r\n deferred = $q.defer();\r\n args[6] = deferred;\r\n }\r\n else {\r\n deferred = restartServiceDeferred;\r\n }\r\n\r\n\r\n var header = null;\r\n var header = {\r\n 'Authorization': 'CalAuthScheme ' + this.token,\r\n 'X-Site-Id': appSettings.siteId\r\n }\r\n\r\n // if (data.RequestType != '02') {\r\n // data.ResolutionCode = null;\r\n // data.MemberNum = null;\r\n // }\r\n\r\n // Set All the needed Connection data into one object\r\n if (this.checkConnection() == false) {\r\n errorService.handleError(noConnectionErrorObject);\r\n return deferred.promise;\r\n }\r\n\r\n $http.call(this, { method: 'POST', url: baseUrl + 'CalCustomerService?' + versionAndOS, data: data, headers: header })\r\n .success.call(this, function (response) {\r\n if (response.Response.Status.SeverityCode == 'S') {\r\n deferred.resolve(response);\r\n }\r\n else {\r\n var errorObject = {};\r\n errorObject.response = response;\r\n errorObject.action = 'POST_CalCustomerService?';\r\n deferred.reject([errorObject, args, 'postOpenLead']);\r\n }\r\n })\r\n .error(function () {\r\n\r\n deferred.reject([httpErrorObject, args, 'postOpenLead']);\r\n });\r\n\r\n var tOut = appData.metaData.SessionTimeout * 1000;\r\n appData.sessionTimeout = $timeout(function () {\r\n errorService.handleError(sessionErrorObject);\r\n }, tOut, false);\r\n return deferred.promise;\r\n },\r\n\r\n logout: function () {\r\n var promise = this.genericConnection('DELETE', 'CalAuthenticator?', versionAndOS);\r\n promise.finally(function () {\r\n if (appData.sessionTimeout) {\r\n $timeout.cancel(appData.sessionTimeout);\r\n }\r\n $rootScope.$broadcast('loggedOut');\r\n connection.setToken(null);\r\n dataService.sessionManager.clear('authToken');\r\n //$stage.go('dw.login');\r\n });\r\n },\r\n\r\n postCalWalletSendOTP: function (idNum, last4Digits) {\r\n return this.genericConnection('POST', 'CalWalletAuthenticatorOTPSend?', '', { Client: 1, Last4Digits: last4Digits, UserID: idNum });\r\n },\r\n /* touch: touchFlag, uuid , RememberMe obj*/\r\n postCalWalletVerifyOTP: function (token, OTPPassword, touchFlag, uuid) {\r\n return this.genericConnection('POST', 'CalWalletAuthenticatorOTPVerify?', '', {\r\n Client: 1,\r\n OTP: OTPPassword,\r\n Token: token,\r\n RememberMe: {\r\n IsRememberMe: touchFlag,\r\n UUID: uuid,\r\n authMethods: 2\r\n }\r\n }, null, null, null, true);\r\n },\r\n\r\n /* touch: new moethod */\r\n postTouchLogin: function (hash) {\r\n return this.genericConnection('POST', 'CalGeneralAuthenticator/GeneralLogin?', '', { Hash: hash.result, Type: 2 });\r\n },\r\n\r\n deleteTouch: function () {\r\n return this.genericConnection('GET', 'CalTouch/DeleteTouchidRecord?', versionAndOS);\r\n },\r\n /* touch: end new moethod */\r\n getMetaData: function () {\r\n return this.genericConnection('GET', 'api/CalGeneralData/GetMetaData?', versionAndOS);\r\n },\r\n\r\n ssoLogin: function (request) {\r\n lobbyUiService.loader.show();\r\n var deferred = $q.defer();\r\n var selfie = this;\r\n selfie.token = null;\r\n this.genericConnection('GET', 'Authentication/SSO?', 'sid=' + request.hash, null, null, null, null, null, true)\r\n .then(function (response) {\r\n lobbyUiService.loader.hide();\r\n $ionicHistory.clearCache();\r\n if (response.calConnectToken) {\r\n selfie.token = response.calConnectToken;\r\n dataService.sessionManager.save('authToken', selfie.token);\r\n dataService.sessionManager.save('siteId', appSettings.siteId);\r\n\r\n if (appData.sessionTimeout)\r\n $timeout.cancel(appData.sessionTimeout);\r\n\r\n var tOut = appData.metaData.SessionTimeout * 1000;\r\n errorService.token = selfie.token;\r\n appData.sessionTimeout = $timeout(function () {\r\n errorService.handleError(sessionErrorObject);\r\n }, tOut, false);\r\n\r\n deferred.resolve(response);\r\n }\r\n else {\r\n var errorObject = {};\r\n\r\n errorObject.response = response;\r\n errorObject.action = 'POST_CalAuthenticator?';\r\n deferred.reject([errorObject, args, 'login']);\r\n }\r\n }, function () {\r\n deferred.reject();\r\n lobbyUiService.loader.hide();\r\n })\r\n\r\n return deferred.promise;\r\n },\r\n\r\n ssoLoginFromExternalSystem: function (OTPToken, SessionID) {\r\n var request = {\r\n SessionID: SessionID,\r\n OTPToken: OTPToken\r\n };\r\n return this.genericConnection('POST', 'api/CalSsoExternal/SetLoginForSSO?', versionAndOS, request);\r\n },\r\n\r\n getAccount: function () {\r\n return this.genericConnection('GET', 'CardsByAccounts?', versionAndOS);\r\n },\r\n\r\n getCreditFrame: function (accountID) {\r\n return this.genericConnection('GET', 'CalCreditFrame/', accountID + '?' + versionAndOS);\r\n },\r\n\r\n getCardData: function (cardID) {\r\n return this.genericConnection('GET', 'CampaignsByCardMetaData/', cardID + '?' + versionAndOS);\r\n },\r\n\r\n getUserBenefitsBalance: function (request) {\r\n\r\n return this.genericConnection('POST', 'api/CalBenefits/GetUserBenefitBalance?', versionAndOS, request);\r\n },\r\n\r\n getTransactionsFromDateToDate: function (cardID, fromDate, toDate) {\r\n\r\n return this.genericConnection('GET', 'CalTransactions/', cardID + '?' + versionAndOS + '&FromDate=' + fromDate + '&ToDate=' + toDate);\r\n },\r\n\r\n getTransactionsDebitMonthDebitYear: function (cardID, debitMonth, debitYear) {\r\n return this.genericConnection('GET', 'CalTransactions/', cardID + '?' + versionAndOS + '&DebitMonth=' + debitMonth + '&DebitYear=' + debitYear);\r\n },\r\n\r\n getTransactionDetails: function (transID, numerator) {\r\n\r\n return this.genericConnection('GET', 'CalTransDetails/', transID + '?' + versionAndOS + '&Numerator=' + numerator);\r\n },\r\n\r\n getTransDenialToken: function (transID, numerator) {\r\n\r\n return this.genericConnection('GET', 'CalTransDenial/', transID + '?' + versionAndOS + '&Numerator=' + numerator + '&Web=true&Url=' + encodeURIComponent(location.href));\r\n },\r\n\r\n getTransNextPage: function () {\r\n return this.genericConnection('GET', 'CalTransNextPage/?', versionAndOS);\r\n },\r\n\r\n getSectorSummary: function (cardID, fromDate, toDate) {\r\n\r\n return this.genericConnection('GET', 'CalSectorsSummary/', cardID + '?' + versionAndOS + '&FromDate=' + fromDate + '&ToDate=' + toDate);\r\n },\r\n\r\n getBankDebits: function (accountID, debitLevel, debitType, fromMonth, toMonth, fromYear, toYear, cardID) {\r\n\r\n return this.genericConnection('GET', 'CalBankDebits/', accountID + '?' + versionAndOS + '&DebitLevel=' + debitLevel + '&DebitType=' + debitType + '&FromMonth=' + fromMonth + '&FromYear=' + fromYear + '&ToMonth=' + toMonth + '&ToYear=' + toYear + '&cardID=' + cardID);\r\n },\r\n\r\n getCardEligiblityStatus: function (cardID) {\r\n return this.genericConnection('GET', 'CardEligiblityStatus/', cardID + '?' + versionAndOS);\r\n },\r\n\r\n getLoanPaymentsRange: function (cardID, amount) {\r\n return this.genericConnection('GET', 'LoanPaymentsRange/', cardID + '?RequestedAmount=' + amount);\r\n },\r\n\r\n getSimulateLoanRequest: function (cardID, requestAmount, paymentsNum) {\r\n return this.genericConnection('GET', 'SimulateLoanRequest/', cardID + '?' + versionAndOS + '&RequestedAmount=' + requestAmount + '&NumberOfPayments=' + paymentsNum);\r\n },\r\n\r\n getApproveLoanRequest: function (cardID) {\r\n return this.genericConnection('GET', 'ApproveLoanRequest/', cardID + '?' + versionAndOS);\r\n },\r\n\r\n getFixedDebitStatus: function (cardID) {\r\n\r\n return this.genericConnection('GET', 'FixedCardDebit/', cardID + '?' + versionAndOS);\r\n },\r\n\r\n getFixedDebitDiscloser: function (cardID, amount) {\r\n return this.genericConnection('GET', 'FixedCardDebit/', cardID + '?' + versionAndOS + '&RequestedAmount=' + amount);\r\n },\r\n\r\n putFixedDebitStatus: function (cardID) {\r\n return this.genericConnection('POST', 'FixedCardDebit/', cardID + '?' + versionAndOS);\r\n },\r\n\r\n getStatus: function (cardID) {\r\n return this.genericConnection('GET', 'CalChoice/', cardID + '?' + versionAndOS);\r\n },\r\n\r\n getPaymentsOptions: function (cardID) {\r\n\r\n return this.genericConnection('GET', 'CalChoiceRepayment/', cardID + '?' + versionAndOS);\r\n },\r\n\r\n getPaymentsRange: function (cardID, optionCode) {\r\n\r\n return this.genericConnection('GET', 'CalChoiceRepayment/', cardID + '?' + versionAndOS + '&RequestedPaymentOptionCode=' + optionCode);\r\n },\r\n\r\n // Check For Bad URL\r\n getSimulation: function (cardID, requestAmount, cvv, expirationDate) {\r\n\r\n return this.genericConnection('GET', 'CalChoiceRepayment/', cardID + '?' + versionAndOS + '&RequestedAmount=' + requestAmount + '&Cvv=' + cvv + '&ExpirationDate=' + expirationDate);\r\n },\r\n\r\n postPaymentsOptions: function (cardID) {\r\n return this.genericConnection('POST', 'CalChoiceRepayment/', cardID + '?' + versionAndOS);\r\n },\r\n\r\n getPaymentsDeatails: function (request) {\r\n\r\n return this.genericConnection('POST', 'api/Payments/GetTransactionDetails?', versionAndOS, request);\r\n },\r\n\r\n UpdateTransactionPayments: function (request) {\r\n return this.genericConnection('POST', 'api/Payments/UpdateTransactionPayments?', versionAndOS, request);\r\n },\r\n SimulateCreditPaymentsRequest: function (request) {\r\n return this.genericConnection('POST', 'api/Payments/SimulateCreditPaymentsRequest?', versionAndOS, request);\r\n },\r\n\r\n getHtml: function (source) {\r\n return this.genericConnection('GET', source, '', '', null, null, null);\r\n },\r\n isLoggedIn: function () {\r\n return this.token;\r\n },\r\n setToken: function (token) {\r\n this.token = token;\r\n },\r\n checkConnection: function () {\r\n\r\n if (!navigator || !navigator.connection) {\r\n\r\n } else {\r\n var networkState = navigator.connection.type;\r\n\r\n if (networkState !== undefined && networkState == navigator.connection.NONE) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n GetCreditFrameInfoForCard: function (cardID) {\r\n\r\n return this.genericConnection('GET', 'CalGetCreditFrameInfoForCard/', cardID + '?' + versionAndOS);\r\n },\r\n IncreaseFrameForCard: function (cardID) {\r\n\r\n return this.genericConnection('GET', 'CalIncreaseFrameForCard/', cardID + '?' + versionAndOS);\r\n },\r\n debitSpreadGetCardEligiblityStatus: function (cardId) {\r\n var request = {\r\n cardId: cardId\r\n };\r\n\r\n return this.genericConnection('POST', 'api/MonthlyDebitPaymentSpread/GetCardEligibilityStatus?', versionAndOS, request);\r\n },\r\n debitSpreadGetSpreadPaymentsRange: function (request) {\r\n return this.genericConnection('POST', 'api/MonthlyDebitPaymentSpread/GetSpreadPaymentsRange?', versionAndOS, request);\r\n },\r\n debitSpreadSimulateSpreadRequest: function (request) {\r\n return this.genericConnection('POST', 'api/MonthlyDebitPaymentSpread/SimulateSpreadRequest?', versionAndOS, request);\r\n },\r\n debitSpreadApproveSpreadRequest: function (selectedCardId) {\r\n var request = {\r\n \"cardId\": selectedCardId\r\n };\r\n\r\n return this.genericConnection('POST', 'api/MonthlyDebitPaymentSpread/ApproveSpreadRequest?', versionAndOS, request);\r\n },\r\n debitSpreadClearSpreadRequest: function (cardId) {\r\n var request = {\r\n \"cardId\": cardId\r\n }\r\n return this.genericConnection('POST', 'api/MonthlyDebitPaymentSpread/ClearSpreadRequest?', versionAndOS, request);\r\n },\r\n getAllDigitalVouchers: function () {\r\n return this.genericConnection('GET', 'api/CalDigitalVouchers/GetAllVouchers?', versionAndOS);\r\n },\r\n getDigitalVoucherDetails: function (request) {\r\n return this.genericConnection('POST', 'api/CalDigitalVouchers/GetVoucherDetails?', versionAndOS, request);\r\n },\r\n getEligibilityForVoucher: function (request) {\r\n return this.genericConnection('POST', 'api/CalDigitalVouchers/GetEligibilityForVouchers?', versionAndOS, request);\r\n },\r\n createPaymentForVouchers: function (request) {\r\n return this.genericConnection('POST', 'api/CalDigitalVouchers/CreatePaymentForVouchers?', versionAndOS, request);\r\n },\r\n getHistoryForVouchers: function (request) {\r\n return this.genericConnection('POST', 'api/CalDigitalVouchers/GetHistoryForVouchers?', versionAndOS, request);\r\n },\r\n getHistoryVoucherDetails: function (request) {\r\n return this.genericConnection('POST', 'api/CalDigitalVouchers/GetHistoryVoucherDetails?', versionAndOS, request);\r\n },\r\n getOtpDataByToken: function (request) {\r\n return this.genericConnection('POST', 'api/CalToken/GetData?', versionAndOS, request);\r\n },\r\n getIndicationForCalMailOrSms: function (request) {\r\n return this.genericConnection('GET', '/calmail/GetIndicationForCalMailOrSms?ServiceCode=1&&TransCommonServicesIndication=20', versionAndOS, request);\r\n },\r\n updateCustomerInformation: function (request) {\r\n var request = {\r\n \"CustEmail\": request.CustEmail,\r\n \"IccSourceMessage\": request.IccSourceMessage\r\n }\r\n return this.genericConnection('POST', 'api/calmail/UpdateCustomerInformation?', versionAndOS, request);\r\n },\r\n updateCalMailOrSms: function (request) {\r\n\r\n return this.genericConnection('POST', 'api/calmail/UpdateCalMailOrSms?', versionAndOS, request);\r\n },\r\n getDigitalServices: function (request) {\r\n return this.genericConnection('GET', 'api/calmail/GetDigitalServices?', versionAndOS, request);\r\n\r\n },\r\n getReportList: function (request) {\r\n\r\n return this.genericConnection('POST', 'api/calmail/GetReportList?', versionAndOS, request);\r\n },\r\n getExpenseReportPDF: function (request) {\r\n return this.genericConnection('POST', 'api/calmail/GetExpenseReportPDF?', versionAndOS, request);\r\n },\r\n getBlockedCardDetails: function (request) {\r\n return this.genericConnection('POST', 'api/CalBlockCard/GetBlockedCardDetails?', versionAndOS, request);\r\n },\r\n getCustomerDetails: function (request) {\r\n return this.genericConnection('POST', 'api/CalBlockCard/GetCustomerDetails?', versionAndOS, request);\r\n },\r\n updateCardStatus: function (request) {\r\n return this.genericConnection('POST', 'api/CalBlockCard/UpdateCardStatus?', versionAndOS, request);\r\n },\r\n checkCardCVV: function (request) {\r\n return this.genericConnection('POST', 'api/CalBlockCard/CheckCardCVV?', versionAndOS, request);\r\n },\r\n getInstallmentPlanTransactions: function (request) {\r\n //return this.genericConnection('POST', 'api/CalBlockCard/CheckCardCVV?', versionAndOS, request);\r\n },\r\n UpdateTransactionInstallment: function (request) {\r\n //return this.genericConnection('POST', 'api/CalBlockCard/CheckCardCVV?', versionAndOS, request);\r\n },\r\n GetValidForPaymentSpread: function () {\r\n return this.genericConnection('POST', 'api/PaymentSpread/GetValidForPaymentSpread?', versionAndOS);\r\n },\r\n UpDateRemoveBelongingForCards: function (request) {\r\n return this.genericConnection('POST', 'api/PaymentSpread/UpDateRemoveBelongingForCards?', versionAndOS, request);\r\n },\r\n setAuthenticData: function (request) {\r\n return this.genericConnection('POST', 'api/OnlineForms/Post?', versionAndOS, request);\r\n },\r\n\r\n refreshCustomerDetails: function () {\r\n return this.genericConnection('GET', 'api/CustomerRefresh/RefreshCustomerDetails?', versionAndOS);\r\n },\r\n getDateToShowPopUp: function (lastTimeShown) {\r\n var request = {\r\n \"lastTimeShownDate\": lastTimeShown\r\n }\r\n return this.genericConnection('POST', 'CustomerRefresh/GetDateToShowPopUp?', versionAndOS, request);\r\n },\r\n getFilteredTransDetails: function (request) {\r\n return this.genericConnection('POST', 'api/CalFilteredTransactions/GetFilteredTransactions?', versionAndOS, request);\r\n },\r\n getStandingOrders: function (request) {\r\n return this.genericConnection('POST', 'api/CalStopStandingOrder/GetStandingOrders?', versionAndOS, request);\r\n },\r\n getStandingOrdersDetails: function (request) {\r\n return this.genericConnection('POST', 'api/CalStopStandingOrder/GetStandingOrdersDetails?', versionAndOS, request);\r\n },\r\n CancelStandingOrder: function (request) {\r\n return this.genericConnection('POST', 'api/CalStopStandingOrder/CancelStandingOrder?', versionAndOS, request);\r\n },\r\n transferStandingOrders: function (request) {\r\n return this.genericConnection('POST', 'api/CalTransferStandingOrders/TransferStandingOrders?', versionAndOS, request);\r\n },\r\n transferStandingOrdersGetValidCards: function () {\r\n return this.genericConnection('POST', 'api/CalTransferStandingOrders/GetValidCards?', versionAndOS);\r\n },\r\n executeBpm051: function () {\r\n return this.genericConnection('GET', 'api/CustomerRefresh/RefreshUser?', versionAndOS);\r\n },\r\n getConnectAuth: function () {\r\n\r\n return this.genericConnection('GET', 'authentication/auth/', '','' ,'' ,'' ,'' ,'' , true);\r\n },\r\n getInternetCode: function (request) {\r\n return this.genericConnection('POST', 'api/CalGetInternetCode/CalGetInternetCode?', versionAndOS, request);\r\n },\r\n getIndicationForCustomer: function (request) {\r\n return this.genericConnection('POST', 'api/CustomerIndications/GetIndicationForCustomer?', versionAndOS, request);\r\n },\r\n updateBankingInfoConsent: function () {\r\n return this.genericConnection('POST', 'api/CustomerIndications/UpdateBankingInfoConsent?', versionAndOS);\r\n },\r\n updateCreditInfoConsent: function (request) {\r\n return this.genericConnection('POST', 'api/CustomerIndications/UpdateCreditInfoConsent?', versionAndOS, request);\r\n },\r\n setDataForDebtPaymentPage: function () {\r\n return this.genericConnection('POST', 'api/CustomerIndications/SetDataForDebtPaymentPage?', versionAndOS);\r\n },\r\n openDebtLead: function () {\r\n return this.genericConnection('POST', 'api/CustomerIndications/OpenDebtLead?', versionAndOS);\r\n },\r\n getCreditInfoConsentIndication: function (request) {\r\n return this.genericConnection('POST', 'api/CreditRepositories/GetCreditInfoConsentIndication?', versionAndOS,request);\r\n },\r\n updateCreditInfoConsentAndCheckBDI: function (request) {\r\n return this.genericConnection('POST', 'api/CreditRepositories/UpdateCreditInfoConsentAndCheckBDI?', versionAndOS, request);\r\n },\r\n identificationServiceRequest: function () {\r\n return this.genericConnection('GET', 'IdentificationWebServiceRequest', '');\r\n }\r\n };\r\n errorService.connection = connection;\r\n lobbyUiService.connection = connection;\r\n lobbyCommService.connection = connection;\r\n return connection;\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"serverConnection\")\r\n .factory('errorService', errorService);\r\n\r\n errorService.$inject = ['$location', 'lobbyUiService', 'appData', '$timeout', '$q', '$window', '$rootScope',\r\n 'touchKeyStore', 'EncryptionService', '$injector','$state'];\r\n\r\n function errorService($location, lobbyUiService, appData, $timeout, $q, $window, $rootScope,\r\n touchKeyStore, EncryptionService, $injector,$state) {\r\n var errorPromise;\r\n\r\n return {\r\n\r\n errorIsOnFlag: false,\r\n connection: {},\r\n token: {},\r\n \r\n/* Main Error handeling function */\r\n handleError: function () {\r\n var params = arguments;\r\n var self = this;\r\n var deferred = $q.defer();\r\n var error = params[0][0];\r\n var args = params[0][1];\r\n var callingFunction = params[0][2];\r\n var rssFunction = params[1];\r\n var iconClass = params[2];\r\n var isPopupIonic = params[3];\r\n\r\n var status = error.response.Response.Status,\r\n errorPopup = error.response.Response.DialogBox;\r\n\r\n if (!errorPopup.CancelButtonText) {\r\n errorPopup.CancelButtonText = '';\r\n }\r\n\r\n if (!errorPopup.Title || errorPopup.Title == '') {\r\n errorPopup.Title = ' ';\r\n }\r\n\r\n if (error.action == 'GET_CalChoiceRepayment/')\r\n if (args[2].indexOf('RequestedPaymentOptionCode') != -1)\r\n error.action = 'GET_CalChoiceRepayment/_1';\r\n else if (args[2].indexOf('RequestedAmount') != -1)\r\n error.action = 'GET_CalChoiceRepayment/_2';\r\n\r\n if (error.action == 'GET_FixedCardDebit/' && args[2].indexOf('RequestedAmount') != -1)\r\n error.action = 'GET_FixedCardDebit/_1';\r\n\r\n if (error.action == 'GET_CalChoiceRepayment/')\r\n if (args[2].indexOf('RequestedPaymentOptionCode') != -1)\r\n error.action = 'GET_CalChoiceRepayment/_1';\r\n else if (args[2].indexOf('RequestedAmount') != -1)\r\n error.action = 'GET_CalChoiceRepayment/_2';\r\n\r\n var errorKey = error.action + '_' + status.SeverityCode + '_' + status.SeverityNumber,\r\n errorActions = self.errorDictionary[errorKey],\r\n returnURL = status.ReturnUrl;\r\n\r\n\r\n appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n\r\n if (!errorActions || errorActions.OK == \"NPU\") {\r\n //this caused double popup, took the fix from DigitalApp\r\n //showPopup(errorPopup.Content, errorPopup.Title, { ok: errorPopup.OKButtonText, cancel: errorPopup.CancelButtonText }, isPopupIonic);\r\n return false;\r\n }\r\n else {\r\n showPopup(errorPopup.Content, errorPopup.Title, { ok: errorPopup.OKButtonText, cancel: errorPopup.CancelButtonText }, isPopupIonic);\r\n }\r\n\r\n\r\n function showPopup(message, title, buttonLabels, isPopupIonic) {\r\n var ua = navigator.userAgent.toLowerCase();\r\n var lableText = '';\r\n if (navigator.notification) {\r\n if (ua.indexOf(\"android\") > -1)\r\n lableText = buttonLabels.ok + (buttonLabels.cancel ? (',' + buttonLabels.cancel) : '');\r\n else\r\n lableText = (buttonLabels.cancel ? (buttonLabels.cancel + ',') : '') + buttonLabels.ok;\r\n\r\n\r\n navigator.notification.confirm(\r\n message,\r\n callback,\r\n title,\r\n lableText\r\n );\r\n\r\n }\r\n else {\r\n\r\n var _btns = [];\r\n\r\n if (buttonLabels.cancel) {\r\n _btns.push(\r\n {\r\n text: buttonLabels.cancel,\r\n type: 'button-negative',\r\n onTap: function () {\r\n if (callback && angular.isFunction(callback)) {\r\n var action = errorActions.Cancel;\r\n deferred.resolve(action);\r\n self.getWantedAction(action, { returnURL: returnURL, args: args, callingFunction: callingFunction, rssFunction: rssFunction });\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (buttonLabels.ok) {\r\n _btns.push(\r\n {\r\n text: buttonLabels.ok,\r\n type: 'button-positive',\r\n onTap: function () {\r\n if (callback && angular.isFunction(callback)) {\r\n var action = errorActions.OK;\r\n deferred.resolve(action);\r\n self.getWantedAction(action, { returnURL: returnURL, args: args, callingFunction: callingFunction, rssFunction: rssFunction });\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (!buttonLabels.cancel && !buttonLabels.ok) {\r\n _btns.push(\r\n {\r\n text: 'סגור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n if (callback && angular.isFunction(callback)) {\r\n var action = errorActions.OK;\r\n deferred.resolve(action);\r\n self.getWantedAction(action, { returnURL: returnURL, args: args, callingFunction: callingFunction, rssFunction: rssFunction });\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n lobbyUiService.popup.alert(message, title, null, null, _btns, false, iconClass);\r\n }\r\n\r\n function callback(button) {\r\n if (ua.indexOf(\"iphone\") > -1 && lableText.indexOf(',') > -1)\r\n if (button == 1)\r\n button = 2;\r\n else\r\n button = 1;\r\n var action;\r\n if (button == 1 || button == true) {\r\n action = errorActions.OK;\r\n deferred.resolve(action);\r\n }\r\n else {\r\n action = errorActions.Cancel;\r\n deferred.reject(action);\r\n }\r\n self.getWantedAction(action, { returnURL: returnURL, args: args, callingFunction: callingFunction, rssFunction: rssFunction });\r\n }\r\n\r\n }\r\n return deferred.promise;\r\n\r\n },\r\n\r\n\r\n /*\r\n Helper function - returns the corresponding action according to the given action key\r\n Parameters:\r\n action - the action key\r\n additionalData - all of the data needed to create the wanted action\r\n */\r\n\r\n\r\n execService: function(serviceName, methodName) {\r\n return $injector.get(serviceName)[methodName]();\r\n },\r\n\r\n getWantedAction: function (action, additionalData) {\r\n\r\n switch (action) {\r\n case 'BTS':\r\n window.history.back();\r\n break;\r\n case 'BTA':\r\n break;\r\n case 'CSS':\r\n lobbyUiService.go('dw.account-home');\r\n break;\r\n case 'CAS':\r\n break;\r\n case 'CPT':\r\n break;\r\n case 'PFC':\r\n return true;\r\n case 'WTC':\r\n lobbyUiService.go('dw.lobby');\r\n break;\r\n case 'SE':\r\n lobbyUiService.go('dw.login');\r\n break;\r\n case 'OBS':\r\n lobbyUiService.openExternal(additionalData.returnURL);\r\n break;\r\n case 'RSS':\r\n if (angular.isFunction(additionalData.rssFunction)) {\r\n additionalData.rssFunction();\r\n } else {\r\n this.connection.logout();\r\n }\r\n break;\r\n case 'ASD':\r\n navigator.app && navigator.app.exitApp && navigator.app.exitApp();\r\n break;\r\n case 'GTL':\r\n this.connection.logout();\r\n break;\r\n case 'MAS':\r\n $timeout(function () {\r\n lobbyUiService.go('dw.myaccount');\r\n }, 10);\r\n\r\n break;\r\n case 'CTP':\r\n window.open('tel:' + additionalData.returnURL, '_system');\r\n break;\r\n case 'STW':\r\n lobbyUiService.navigate('dw.wallet-home');\r\n break;\r\n case 'BH':\r\n lobbyUiService.navigate('dw.benefits-home');\r\n break;\r\n case 'RAS':\r\n $window.location.reload();\r\n break;\r\n case 'LO':\r\n if (appData.sessionTimeout) {\r\n $timeout.cancel(appData.sessionTimeout);\r\n }\r\n lobbyUiService.go('dw.login',{ nextPage: $state.current.name });\r\n $rootScope.$broadcast('loggedOut');\r\n break;\r\n case 'P2P':\r\n lobbyUiService.navigate('dw.p2p-home', { location: 'replace' });\r\n break;\r\n case 'TOU':\r\n lobbyUiService.popup.alreadyTouchDelete(res.Response.Status.Message);\r\n break;\r\n case 'DT':\r\n touchKeyStore.removeKey();\r\n EncryptionService.setIsTouchReq(false);\r\n EncryptionService.setTouchTakanon(false);\r\n $rootScope.$broadcast('logoutTouch');\r\n break;\r\n\r\n case 'TA':\r\n this.execService('blockCardService', 'UpdateAgain');\r\n //blockCardTryAgainService.UpdateAgain();\r\n break;\r\n case 'BK':\r\n lobbyUiService.go('dw.block-card-home');\r\n //blockCardTryAgainService.UpdateAgain();\r\n break;\r\n\r\n \r\n\r\n default:\r\n break;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n /*\r\n The keys are constructed by concatenating the connection method with\r\n connection action and the severity code and number.\r\n The value represents the actions to be preform by the OK/Cancel buttons,\r\n This actions are set by representing actions keys:\r\n \r\n BTS - navigate Back To current Screen.\r\n \r\n OBS - Open Browser Screen and navigate to returnedURL.\r\n \r\n RSS - Re-Start Service.\r\n \r\n ASD - Application Shut Down.\r\n \r\n BTA - navigate Back To the function Activation screen.\r\n \r\n NPU - No Pop Up is Needed.\r\n \r\n WTC - navigate to the Welcome To Cal screen.\r\n CSS - navigate to Credit Solution Screen.\r\n CAS - navigate to Choose Amount Screen.\r\n MAS - navigate to My Account Screen.\r\n CPT - navigate to Choose Payment Type screen\r\n PFC - navigate to Choose Payment type For given Card\r\n GTL - navigate to Login Screen\r\n CTP - Call\r\n BH - navigate to Stifomat welcome screen\r\n STW - navigate to Stifomat welcome screen \r\n null - No Action Needed.\r\n */\r\n\r\n errorDictionary: {\r\n\r\n // Still need to check with Amit.B about some of the actions\r\n 'POST_CalAuthenticator?_W_001': { OK: 'BTS', Cancel: null },\r\n 'POST_CalAuthenticator?_W_002': { OK: 'BTS', Cancel: null },\r\n 'POST_CalAuthenticator?_W_003': { OK: 'BTS', Cancel: null },\r\n 'POST_CalAuthenticator?_W_004': { OK: 'OBS', Cancel: 'BTS' },\r\n 'POST_CalAuthenticator?_W_005': { OK: 'RSS', Cancel: 'BTS' },\r\n 'POST_CalAuthenticator?_W_006': { OK: 'RSS', Cancel: 'BTS' },\r\n 'POST_CalAuthenticator?_W_041': { OK: 'RSS', Cancel: 'BTS' },\r\n 'POST_CalAuthenticator?_W_042': { OK: 'BTS', Cancel: null },\r\n 'POST_CalAuthenticator?_W_043': { OK: 'OBS', Cancel: 'BTS' },\r\n 'POST_CalAuthenticator?_W_044': { OK: 'OBS', Cancel: 'BTS' },\r\n 'POST_CalAuthenticator?_W_045': { OK: null, Cancel: null },\r\n 'POST_CalAuthenticator?_W_048': { OK: 'OBS', Cancel: 'BTS' },\r\n 'POST_CalAuthenticator?_W_049': { OK: 'OBS', Cancel: 'BTS' },\r\n 'POST_CalAuthenticator?_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'POST_CalAuthenticator?_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'POST_CalAuthenticator?_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n 'POST_CalAuthenticator?_E_001': { OK: 'RSS', Cancel: 'BTS' },\r\n\r\n 'POST_CalGeneralAuthenticator/GeneralLogin?_W_001': { OK: null, Cancel: null },\r\n 'POST_CalGeneralAuthenticator/GeneralLogin?_W_002': { OK: null, Cancel: null },\r\n 'POST_CalGeneralAuthenticator/GeneralLogin?_W_003': { OK: 'DT', Cancel: null },\r\n 'POST_CalGeneralAuthenticator/GeneralLogin?_W_004': { OK: null, Cancel: null },\r\n\r\n 'GET_CalTouch/DeleteTouchidRecord?_W_001': { OK: 'TOU', Cancel: 'TOU' },\r\n\r\n // No need to any action or alert\r\n 'DELETE_CalAuthenticator?_W_001': { OK: null, Cancel: null },\r\n 'DELETE_CalAuthenticator?_W_002': { OK: null, Cancel: null },\r\n 'DELETE_CalAuthenticator?_E_001': { OK: null, Cancel: null },\r\n 'DELETE_CalAuthenticator?_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'DELETE_CalAuthenticator?_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'DELETE_CalAuthenticator?_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_CardsByAccounts?_W_001': { OK: 'WTC', Cancel: null },\r\n 'GET_CardsByAccounts?_W_002': { OK: 'RSS', Cancel: 'ASD' },\r\n 'GET_CardsByAccounts?_W_003': { OK: 'GTL', Cancel: null },\r\n 'GET_CardsByAccounts?_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CardsByAccounts?_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CardsByAccounts?_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_CampaignsByCardMetaData/_W_001': { OK: 'WTC', Cancel: null },\r\n 'GET_CampaignsByCardMetaData/_W_002': { OK: 'WTC', Cancel: null },\r\n 'GET_CampaignsByCardMetaData/_W_003': { OK: 'RSS', Cancel: 'WTC' },\r\n 'GET_CampaignsByCardMetaData/_W_004': { OK: 'RSS', Cancel: 'WTC' },\r\n 'GET_CampaignsByCardMetaData/_E_001': { OK: 'RSS', Cancel: 'WTC' },\r\n 'GET_CampaignsByCardMetaData/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CampaignsByCardMetaData/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CampaignsByCardMetaData/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n\r\n 'GET_CalTransactions/_W_001': { OK: 'BTA', Cancel: null },\r\n 'GET_CalTransactions/_W_002': { OK: 'BTA', Cancel: null },\r\n 'GET_CalTransactions/_W_003': { OK: 'BTA', Cancel: null },\r\n 'GET_CalTransactions/_W_004': { OK: 'RSS', Cancel: 'BTA' },\r\n 'GET_CalTransactions/_W_006': { OK: 'RSS', Cancel: 'BTA' },\r\n 'GET_CalTransactions/_W_007': { OK: 'RSS', Cancel: 'BTA' },\r\n 'GET_CalTransactions/_E_001': { OK: 'RSS', Cancel: 'BTA' },\r\n 'GET_CalTransactions/_E_002': { OK: 'RSS', Cancel: 'BTA' },\r\n 'GET_CalTransactions/_W_005': { OK: 'BTA', Cancel: null },\r\n 'GET_CalTransactions/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CalTransactions/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CalTransactions/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_CalTransDetails/_W_001': { OK: 'BTA', Cancel: null },\r\n 'GET_CalTransDetails/_W_002': { OK: 'RSS', Cancel: 'BTA' },\r\n 'GET_CalTransDetails/_W_003': { OK: 'RSS', Cancel: 'BTA' },\r\n 'GET_CalTransDetails/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CalTransDetails/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CalTransDetails/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_CalSectorsSummary/_W_001': { OK: 'BTA', Cancel: null },\r\n 'GET_CalSectorsSummary/_W_002': { OK: 'BTA', Cancel: null },\r\n 'GET_CalSectorsSummary/_W_003': { OK: 'BTA', Cancel: null },\r\n 'GET_CalSectorsSummary/_W_004': { OK: 'BTA', Cancel: null },\r\n 'GET_CalSectorsSummary/_W_005': { OK: 'RSS', Cancel: 'BTA' },\r\n 'GET_CalSectorsSummary/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CalSectorsSummary/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CalSectorsSummary/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_CalCreditFrame/_W_001': { OK: 'NPU', Cancel: null },\r\n 'GET_CalCreditFrame/_W_002': { OK: 'NPU', Cancel: null },\r\n 'GET_CalCreditFrame/_W_003': { OK: 'NPU', Cancel: null },\r\n 'GET_CalCreditFrame/_W_004': { OK: 'NPU', Cancel: null },\r\n 'GET_CalCreditFrame/_W_005': { OK: 'NPU', Cancel: null },\r\n 'GET_CalCreditFrame/_E_001': { OK: 'NPU', Cancel: null },\r\n\r\n 'GET_CalCreditFrame/_1_W_001': { OK: 'BTS', Cancel: null },\r\n 'GET_CalCreditFrame/_1_W_002': { OK: 'BTS', Cancel: null },\r\n 'GET_CalCreditFrame/_1_W_003': { OK: 'RSS', Cancel: 'BTS' },\r\n 'GET_CalCreditFrame/_1_W_004': { OK: null, Cancel: null },\r\n 'GET_CalCreditFrame/_1_E_001': { OK: 'RSS', Cancel: 'BTS' },\r\n\r\n 'GET_CalGeneralData?_W_001': { OK: 'ASD', Cancel: null },\r\n 'GET_CalGeneralData?_W_002': { OK: 'ASD', Cancel: null },\r\n 'GET_CalGeneralData?_W_003': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CalGeneralData?_E_001': { OK: 'ASD', Cancel: null },\r\n 'GET_CalGeneralData?_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CalGeneralData?_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CalGeneralData?_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_CalBankDebits/_W_001': { OK: 'BTS', Cancel: null },\r\n 'GET_CalBankDebits/_W_002': { OK: 'BTS', Cancel: null },\r\n 'GET_CalBankDebits/_W_005': { OK: 'BTS', Cancel: null },\r\n 'GET_CalBankDebits/_W_006': { OK: 'BTS', Cancel: null },\r\n 'GET_CalBankDebits/_W_007': { OK: 'BTS', Cancel: null },\r\n 'GET_CalBankDebits/_W_008': { OK: 'BTS', Cancel: null },\r\n 'GET_CalBankDebits/_W_003': { OK: 'RSS', Cancel: 'BTS' },\r\n 'GET_CalBankDebits/_W_004': { OK: 'RSS', Cancel: 'BTS' },\r\n 'GET_CalBankDebits/_E_001': { OK: 'RSS', Cancel: 'BTS' },\r\n 'GET_CalBankDebits/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CalBankDebits/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CalBankDebits/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n\r\n // W_004 W_003 NO actions\r\n 'GET_CardEligiblityStatus/_W_001': { OK: 'CSS', Cancel: null },\r\n 'GET_CardEligiblityStatus/_W_002': { OK: 'CSS', Cancel: null },\r\n 'GET_CardEligiblityStatus/_W_005': { OK: 'CSS', Cancel: null },\r\n 'GET_CardEligiblityStatus/_W_003': { OK: 'NPU', Cancel: null },\r\n 'GET_CardEligiblityStatus/_W_004': { OK: 'NPU', Cancel: null },\r\n 'GET_CardEligiblityStatus/_W_006': { OK: 'OBS', Cancel: 'CSS' },\r\n 'GET_CardEligiblityStatus/_W_007': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_CardEligiblityStatus/_E_001': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_CardEligiblityStatus/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CardEligiblityStatus/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CardEligiblityStatus/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n 'POST_api/MonthlyDebitPaymentSpread/GetCardEligibilityStatus?_W_011': { OK: 'RSS', Cancel: 'WTC' },\r\n \"POST_api/MonthlyDebitPaymentSpread/GetCardEligibilityStatus?_W_004\": { OK: 'RSS', Cancel: 'WTC' },\r\n\r\n 'GET_LoanPaymentsRange/_W_001': { OK: 'CSS', Cancel: null },\r\n 'GET_LoanPaymentsRange/_W_002': { OK: 'CSS', Cancel: null },\r\n 'GET_LoanPaymentsRange/_W_003': { OK: 'CSS', Cancel: null },\r\n 'GET_LoanPaymentsRange/_W_004': { OK: 'CAS', Cancel: null },\r\n 'GET_LoanPaymentsRange/_W_005': { OK: 'CAS', Cancel: null },\r\n 'GET_LoanPaymentsRange/_W_006': { OK: 'CAS', Cancel: null },\r\n 'GET_LoanPaymentsRange/_W_007': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_LoanPaymentsRange/_E_001': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_LoanPaymentsRange/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_LoanPaymentsRange/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_LoanPaymentsRange/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_SimulateLoanRequest/_W_001': { OK: 'CSS', Cancel: null },\r\n 'GET_SimulateLoanRequest/_W_002': { OK: 'CSS', Cancel: null },\r\n 'GET_SimulateLoanRequest/_W_006': { OK: 'CSS', Cancel: null },\r\n 'GET_SimulateLoanRequest/_W_008': { OK: 'CSS', Cancel: null },\r\n 'GET_SimulateLoanRequest/_W_004': { OK: 'CAS', Cancel: null },\r\n 'GET_SimulateLoanRequest/_W_005': { OK: 'CAS', Cancel: null },\r\n 'GET_SimulateLoanRequest/_W_003': { OK: 'CAS', Cancel: null },\r\n 'GET_SimulateLoanRequest/_W_007': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_SimulateLoanRequest/_E_001': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_SimulateLoanRequest/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_SimulateLoanRequest/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_SimulateLoanRequest/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_AproveLoanRequest/_W_001': { OK: 'CSS', Cancel: null },\r\n 'GET_AproveLoanRequest/_W_002': { OK: 'CSS', Cancel: null },\r\n 'GET_AproveLoanRequest/_W_004': { OK: 'CSS', Cancel: null },\r\n 'GET_AproveLoanRequest/_W_003': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_AproveLoanRequest/_W_005': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_AproveLoanRequest/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_AproveLoanRequest/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_AproveLoanRequest/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_FixedCardDebit/_W_001': { OK: 'CSS', Cancel: null },\r\n 'GET_FixedCardDebit/_W_002': { OK: 'CSS', Cancel: null },\r\n 'GET_FixedCardDebit/_W_003': { OK: 'NPU', Cancel: null },\r\n 'GET_FixedCardDebit/_W_004': { OK: 'NPU', Cancel: null },\r\n 'GET_FixedCardDebit/_W_005': { OK: 'OBS', Cancel: 'CSS' },\r\n 'GET_FixedCardDebit/_W_006': { OK: 'NPU', Cancel: null },\r\n 'GET_FixedCardDebit/_W_007': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_FixedCardDebit/_E_001': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_FixedCardDebit/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_FixedCardDebit/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_FixedCardDebit/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_FixedCardDebit/_1_W_001': { OK: 'CSS', Cancel: null },\r\n 'GET_FixedCardDebit/_1_W_002': { OK: 'CSS', Cancel: null },\r\n 'GET_FixedCardDebit/_1_W_003': { OK: 'CAS', Cancel: null },\r\n 'GET_FixedCardDebit/_1_W_004': { OK: 'CAS', Cancel: null },\r\n 'GET_FixedCardDebit/_1_W_005': { OK: 'CAS', Cancel: null },\r\n 'GET_FixedCardDebit/_1_W_006': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_FixedCardDebit/_1_W_007': { OK: 'CSS', Cancel: null },\r\n 'GET_FixedCardDebit/_1_W_008': { OK: 'CAS', Cancel: null },\r\n 'GET_FixedCardDebit/_1_E_001': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_FixedCardDebit/_1_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_FixedCardDebit/_1_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_FixedCardDebit/_1_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'PUT_FixedCardDebit/_W_001': { OK: 'CSS', Cancel: null },\r\n 'PUT_FixedCardDebit/_W_002': { OK: 'CSS', Cancel: null },\r\n 'PUT_FixedCardDebit/_W_003': { OK: 'RSS', Cancel: 'CSS' },\r\n 'PUT_FixedCardDebit/_W_004': { OK: 'CSS', Cancel: null },\r\n 'PUT_FixedCardDebit/_E_001': { OK: 'RSS', Cancel: 'CSS' },\r\n 'PUT_FixedCardDebit/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'PUT_FixedCardDebit/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'PUT_FixedCardDebit/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_CalChoice/_W_001': { OK: 'MAS', Cancel: null },\r\n 'GET_CalChoice/_W_002': { OK: 'MAS', Cancel: null },\r\n 'GET_CalChoice/_W_004': { OK: 'MAS', Cancel: null },\r\n 'GET_CalChoice/_W_005': { OK: 'MAS', Cancel: null },\r\n 'GET_CalChoice/_W_003': { OK: 'OBS', Cancel: 'MAS' },\r\n 'GET_CalChoice/_E_001': { OK: 'RSS', Cancel: 'MAS' },\r\n 'GET_CalChoice/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CalChoice/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CalChoice/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_CalChoiceRepayment/_W_001': { OK: 'CSS', Cancel: null },\r\n 'GET_CalChoiceRepayment/_W_002': { OK: 'CSS', Cancel: null },\r\n 'GET_CalChoiceRepayment/_W_003': { OK: 'CSS', Cancel: null },\r\n 'GET_CalChoiceRepayment/_W_004': { OK: 'OBS', Cancel: 'CSS' },\r\n 'GET_CalChoiceRepayment/_W_005': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_CalChoiceRepayment/_E_001': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_CalChoiceRepayment/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CalChoiceRepayment/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CalChoiceRepayment/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_CalChoiceRepayment/_1_W_001': { OK: 'CSS', Cancel: null },\r\n 'GET_CalChoiceRepayment/_1_W_002': { OK: 'CSS', Cancel: null },\r\n 'GET_CalChoiceRepayment/_1_W_003': { OK: 'CPT', Cancel: null },\r\n 'GET_CalChoiceRepayment/_1_W_004': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_CalChoiceRepayment/_1_W_005': { OK: 'CPT', Cancel: null },\r\n 'GET_CalChoiceRepayment/_1_W_006': { OK: 'CPT', Cancel: null },\r\n 'GET_CalChoiceRepayment/_1_W_008': { OK: 'CPT', Cancel: null },\r\n 'GET_CalChoiceRepayment/_1_W_009': { OK: 'CPT', Cancel: null },\r\n 'GET_CalChoiceRepayment/_1_W_010': { OK: 'CPT', Cancel: null },\r\n 'GET_CalChoiceRepayment/_1_W_011': { OK: 'CPT', Cancel: null },\r\n 'GET_CalChoiceRepayment/_1_W_012': { OK: 'CPT', Cancel: null },\r\n 'GET_CalChoiceRepayment/_1_E_001': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_CalChoiceRepayment/_1_W_007': { OK: 'PFC', Cancel: 'CPT' },\r\n 'GET_CalChoiceRepayment/_1_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CalChoiceRepayment/_1_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CalChoiceRepayment/_1_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'GET_CalChoiceRepayment/_2_W_001': { OK: 'CSS', Cancel: null },\r\n 'GET_CalChoiceRepayment/_2_W_002': { OK: 'CSS', Cancel: null },\r\n 'GET_CalChoiceRepayment/_2_W_003': { OK: 'CAS', Cancel: null },\r\n 'GET_CalChoiceRepayment/_2_W_005': { OK: 'CAS', Cancel: null },\r\n 'GET_CalChoiceRepayment/_2_W_006': { OK: 'CAS', Cancel: null },\r\n 'GET_CalChoiceRepayment/_2_W_007': { OK: 'CAS', Cancel: null },\r\n 'GET_CalChoiceRepayment/_2_W_008': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_CalChoiceRepayment/_2_E_001': { OK: 'RSS', Cancel: 'CSS' },\r\n 'GET_CalChoiceRepayment/_2_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CalChoiceRepayment/_2_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'GET_CalChoiceRepayment/_2_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'POST_CalChoiceRepayment/_W_001': { OK: 'CSS', Cancel: null },\r\n 'POST_CalChoiceRepayment/_W_002': { OK: 'CSS', Cancel: null },\r\n 'POST_CalChoiceRepayment/_W_003': { OK: 'RSS', Cancel: 'CSS' },\r\n 'POST_CalChoiceRepayment/_E_001': { OK: 'RSS', Cancel: 'CSS' },\r\n 'POST_CalChoiceRepayment/_W_101': { OK: 'OBS', Cancel: 'ASD' },\r\n 'POST_CalChoiceRepayment/_W_102': { OK: 'BTS', Cancel: 'ASD' },\r\n 'POST_CalChoiceRepayment/_W_103': { OK: 'OBS', Cancel: 'BTS' },\r\n\r\n 'POST_CalCustomerService?_W_001': { OK: 'BTA', Cancel: null },\r\n 'POST_CalCustomerService?_W_002': { OK: 'BTA', Cancel: null },\r\n 'POST_CalCustomerService?_W_003': { OK: 'RSS', Cancel: 'BTA' },\r\n 'POST_CalCustomerService?_E_001': { OK: 'RSS', Cancel: 'MAS' },\r\n 'POST_CalCustomerService?CardsByAccounts_E_001': { OK: 'RSS', Cancel: 'MAS' },\r\n\r\n 'POST_CalWalletAuthenticatorOTPSend?_W_001': { OK: null, Cancel: null },\r\n 'POST_CalWalletAuthenticatorOTPSend?_W_002': { OK: 'CTP', Cancel: 'BTS' },\r\n 'POST_CalWalletAuthenticatorOTPSend?_W_003': { OK: 'CTP', Cancel: null },\r\n 'POST_CalWalletAuthenticatorOTPSend?_E_001': { OK: 'CTP', Cancel: null },\r\n\r\n 'POST_CalWalletAuthenticatorOTPVerify?_W_001': { OK: 'RSS', Cancel: null },\r\n 'POST_CalWalletAuthenticatorOTPVerify?_W_002': { OK: null, Cancel: null },\r\n 'POST_CalWalletAuthenticatorOTPVerify?_W_003': { OK: 'RSS', Cancel: 'BTS' },\r\n 'POST_CalWalletAuthenticatorOTPVerify?_W_004': { OK: 'OBS', Cancel: 'BTS' },\r\n 'POST_CalWalletAuthenticatorOTPVerify?_W_005': { OK: 'OBS', Cancel: 'BTS' },\r\n 'POST_CalWalletAuthenticatorOTPVerify?_E_001': { OK: 'CTP', Cancel: null },\r\n\r\n 'http_E_001': { OK: 'RSS', Cancel: null },\r\n 'http_E_002': { OK: 'GTL', Cancel: null },\r\n 'http_E_003': { OK: 'RAS', Cancel: 'ASD' },\r\n 'http_E_004': { OK: 'LO', Cancel: 'WTC' },\r\n 'noCards_E_001': { OK: 'GTL', Cancel: 'GTL' },\r\n 'GET_CalShtifomatGetMetaData?_E_0001': { OK: 'STW', Cancel: null },\r\n 'GET_CalShtifomatGetMetaData?_E_0002': { OK: 'STW', Cancel: null },\r\n 'GET_CalShtifomatGetMetaData?_E_0003': { OK: 'STW', Cancel: null },\r\n 'GET_CalShtifomatGetMetaData?_W_0001': { OK: 'STW', Cancel: null },\r\n\r\n 'POST_CalShtifomatCheckSubscribeCust?_W_0001': { OK: 'STW', Cancel: null },\r\n 'POST_CalShtifomatCheckSubscribeCust?_E_0001': { OK: 'STW', Cancel: null },\r\n 'POST_CalShtifomatCheckSubscribeCust?_E_0002': { OK: 'STW', Cancel: null },\r\n\r\n 'POST_CalShtifomatCheckSubscribeNumMem?_E_0001': { OK: 'STW', Cancel: null },\r\n 'POST_CalShtifomatCheckSubscribeNumMem?_E_0002': { OK: 'STW', Cancel: null },\r\n 'POST_CalShtifomatCheckSubscribeNumMem?_W_0001': { OK: 'STW', Cancel: null },\r\n\r\n 'POST_CalShtifomatClubSubscribe?_E_0001': { OK: 'STW', Cancel: null },\r\n 'POST_CalShtifomatClubSubscribe?_E_0002': { OK: 'STW', Cancel: null },\r\n 'POST_CalShtifomatClubSubscribe?_W_0001': { OK: 'STW', Cancel: null },\r\n\r\n 'POST_CalShtifomatClubUnSubscribe?_E_0001': { OK: 'STW', Cancel: null },\r\n 'POST_CalShtifomatClubUnSubscribe?_E_0002': { OK: 'STW', Cancel: null },\r\n 'POST_CalShtifomatClubUnSubscribe?_W_0001': { OK: 'STW', Cancel: null },\r\n\r\n 'GET_CalWalletMetaData?_W_003': { OK: 'RAS', Cancel: 'ASD' },\r\n 'GET_CalWalletMetaData?_W_001': { OK: 'RAS', Cancel: 'ASD' },\r\n 'GET_CalWalletMetaData?_W_002': { OK: 'OBS', Cancel: 'ASD' },\r\n 'GET_CalWalletMetaData?_E_001': { OK: 'RAS', Cancel: 'ASD' },\r\n\r\n //follow app\r\n 'GET_api/calFollowApp/GetMetaData?_W_004': { OK: 'STW', Cancel: 'STW' },\r\n 'GET_api/calFollowApp/GetMetaData?_E_001': { OK: 'STW', Cancel: 'STW' },\r\n\r\n 'GET_api/calFollowApp/GetDocumentInfo?_W_001': { OK: 'STW', Cancel: null },\r\n 'GET_api/calFollowApp/GetDocumentInfo?_W_002': { OK: 'STW', Cancel: null },\r\n 'GET_api/calFollowApp/GetDocumentInfo?_W_003': { OK: 'SE', Cancel: null },\r\n 'GET_api/calFollowApp/GetDocumentInfo?_W_004': { OK: 'RSS', Cancel: 'STW' },\r\n 'GET_api/calFollowApp/GetDocumentInfo?_E_001': { OK: 'RSS', Cancel: 'STW' },\r\n\r\n 'GET_api/calFollowApp/GetDocumentPhoto?_W_001': { OK: 'STW', Cancel: null },\r\n 'GET_api/calFollowApp/GetDocumentPhoto?_W_002': { OK: 'STW', Cancel: null },\r\n 'GET_api/calFollowApp/GetDocumentPhoto?_W_003': { OK: 'STW', Cancel: null },\r\n 'GET_api/calFollowApp/GetDocumentPhoto?_W_004': { OK: 'RSS', Cancel: 'STW' },\r\n 'GET_api/calFollowApp/GetDocumentPhoto?_W_005': { OK: 'STW', Cancel: null },\r\n 'GET_api/calFollowApp/GetDocumentPhoto?_W_006': { OK: null, Cancel: null },\r\n 'GET_api/calFollowApp/GetDocumentPhoto?_E_001': { OK: 'RSS', Cancel: 'STW' },\r\n\r\n 'POST_api/calFollowApp/SetDocumentChanges?_W_001': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/SetDocumentChanges?_W_002': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/SetDocumentChanges?_W_003': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/SetDocumentChanges?_W_004': { OK: 'RSS', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/SetDocumentChanges?_W_005': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/SetDocumentChanges?_W_006': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/SetDocumentChanges?_W_007': { OK: null, Cancel: null },\r\n 'POST_api/calFollowApp/SetDocumentChanges?_W_008': { OK: null, Cancel: null },\r\n 'POST_api/calFollowApp/SetDocumentChanges?_W_009': { OK: null, Cancel: null },\r\n 'POST_api/calFollowApp/SetDocumentChanges?_W_010': { OK: 'RSS', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/SetDocumentChanges?_W_011': { OK: 'RSS', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/SetDocumentChanges?_E_001': { OK: 'RSS', Cancel: 'STW' },\r\n\r\n 'POST_api/calFollowApp/DeleteDocument?_W_001': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/DeleteDocument?_W_002': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/DeleteDocument?_W_003': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/DeleteDocument?_W_004': { OK: 'RSS', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/DeleteDocument?_W_005': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/DeleteDocument?_E_001': { OK: 'RSS', Cancel: 'STW' },\r\n\r\n 'POST_api/calFollowApp/DeletePhoto?_W_001': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/DeletePhoto?_W_002': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/DeletePhoto?_W_003': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/DeletePhoto?_W_004': { OK: 'RSS', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/DeletePhoto?_W_005': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/DeletePhoto?_E_001': { OK: 'RSS', Cancel: 'STW' },\r\n\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_001': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_002': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_003': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_004': { OK: 'RSS', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_005': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_006': { OK: 'STW', Cancel: null },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_007': { OK: null, Cancel: null },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_008': { OK: null, Cancel: null },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_009': { OK: 'RSS', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_010': { OK: 'RSS', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_011': { OK: 'RSS', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_012': { OK: null, Cancel: null },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_013': { OK: null, Cancel: null },\r\n 'POST_api/calFollowApp/SaveNewDocument?_W_014': { OK: 'RSS', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/SaveNewDocument?_E_001': { OK: 'RSS', Cancel: 'STW' },\r\n\r\n 'POST_api/calFollowApp/SendEmail?_W_001': { OK: null, Cancel: null },\r\n 'POST_api/calFollowApp/SendEmail?_W_002': { OK: null, Cancel: null },\r\n 'POST_api/calFollowApp/SendEmail?_W_003': { OK: 'SE', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/SendEmail?_W_004': { OK: 'RSS', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/SendEmail?_W_005': { OK: 'SE', Cancel: 'STW' },\r\n 'POST_api/calFollowApp/SendEmail?_W_014': { OK: 'RSS', Cancel: null },\r\n 'POST_api/calFollowApp/SendEmail?_W_015': { OK: null, Cancel: null },\r\n 'POST_api/calFollowApp/SendEmail?_E_001': { OK: 'RSS', Cancel: null },\r\n\r\n 'GET_CalCellebGetMetaData?_E_0001': { OK: 'BTS', Cancel: null },\r\n 'GET_CalCellebGetMetaData?_E_0002': { OK: 'BTS', Cancel: null },\r\n\r\n 'POST_CalGenratePaymentCode?_W_0001': { OK: 'BTS', Cancel: null },\r\n 'POST_CalGenratePaymentCode?_W_0002': { OK: 'BTS', Cancel: null },\r\n 'POST_CalGenratePaymentCode?_W_0003': { OK: 'BTS', Cancel: null },\r\n 'POST_CalGenratePaymentCode?_E_0001': { OK: 'BTS', Cancel: null },\r\n 'POST_CalGenratePaymentCode?_E_0002': { OK: 'BTS', Cancel: null },\r\n\r\n 'cellebHttp_E_0001': { OK: 'BTS', Cancel: null },\r\n\r\n //p2p\r\n 'GET_CalP2PMetaData?_W_0001': { OK: 'WLT', Cancel: null },\r\n 'GET_CalP2PMetaData?_E_0001': { OK: 'WLT', Cancel: null },\r\n\r\n\r\n 'POST_CalP2PCheckCustomerInCal?_W_0001': { OK: null, Cancel: null },\r\n 'POST_CalP2PCheckCustomerInCal?_W_0002': { OK: null, Cancel: null },\r\n 'POST_CalP2PCheckCustomerInCal?_W_0004': { OK: null, Cancel: null },\r\n 'POST_CalP2PCheckCustomerInCal?_E_0001': { OK: null, Cancel: null },\r\n\r\n\r\n 'POST_TransferP2PTransaction?_W_0001': { OK: null, Cancel: null },\r\n 'POST_TransferP2PTransaction?_W_0002': { OK: null, Cancel: null },\r\n 'POST_TransferP2PTransaction?_W_0003': { OK: null, Cancel: null },\r\n 'POST_TransferP2PTransaction?_W_0004': { OK: null, Cancel: null },\r\n 'POST_TransferP2PTransaction?_W_0005': { OK: null, Cancel: null },\r\n 'POST_TransferP2PTransaction?_W_0006': { OK: null, Cancel: null },\r\n 'POST_TransferP2PTransaction?_W_0007': { OK: null, Cancel: null },\r\n 'POST_TransferP2PTransaction?_W_0008': { OK: null, Cancel: null },\r\n 'POST_TransferP2PTransaction?_W_0009': { OK: null, Cancel: null },\r\n 'POST_TransferP2PTransaction?_W_0010': { OK: null, Cancel: null },\r\n 'POST_TransferP2PTransaction?_E_0001': { OK: null, Cancel: null },\r\n\r\n\r\n 'POST_ManageFavorites?_W_0001': { OK: null, Cancel: null },\r\n 'POST_ManageFavorites?_W_0002': { OK: null, Cancel: null },\r\n 'POST_ManageFavorites?_W_0003': { OK: null, Cancel: null },\r\n 'POST_ManageFavorites?_E_0001': { OK: null, Cancel: null },\r\n\r\n\r\n 'POST_GetP2PTransactions?_W_0001': { OK: 'BTS', Cancel: null },\r\n 'POST_GetP2PTransactions?_W_0002': { OK: 'BTS', Cancel: null },\r\n 'POST_GetP2PTransactions?_E_0001': { OK: 'BTS', Cancel: null },\r\n\r\n\r\n 'POST_ApproveP2PTransfer?_W_0001': { OK: null, Cancel: null },\r\n 'POST_ApproveP2PTransfer?_W_0002': { OK: null, Cancel: null },\r\n 'POST_ApproveP2PTransfer?_W_0003': { OK: 'BTS', Cancel: null },\r\n 'POST_ApproveP2PTransfer?_W_0004': { OK: null, Cancel: null },\r\n 'POST_ApproveP2PTransfer?_W_0005': { OK: 'BTS', Cancel: null },\r\n 'POST_ApproveP2PTransfer?_E_0001': { OK: null, Cancel: null },\r\n 'POST_api/calmail/UpdateCalMailOrSms?_W_005': { OK: null, Cancel: null },\r\n 'POST_api/calmail/UpdateCalMailOrSms?_W_006': { OK: null, Cancel: null },\r\n 'POST_api/calmail/UpdateCalMailOrSms?_W_007': { OK: null, Cancel: null },\r\n 'POST_api/calmail/UpdateCalMailOrSms?_E_001': { OK: null, Cancel: null },\r\n 'GET_api/calmail/GetLastMonthReportList?_W_001': { OK: 'WTC', Cancel: null },\r\n 'GET_api/calmail/GetLastMonthReportList?_W_005': { OK: 'WTC', Cancel: null },\r\n 'GET_api/calmail/GetLastMonthReportList?_W_006': { OK: 'WTC', Cancel: null },\r\n 'GET_api/calmail/GetLastMonthReportList?_E_001': { OK: 'WTC', Cancel: null },\r\n 'POST_api/calmail/GetReportList?_W_001': { OK: null, Cancel: null },\r\n 'POST_api/calmail/GetReportList?_W_005': { OK: null, Cancel: null },\r\n 'POST_api/calmail/GetReportList?_W_006': { OK: null, Cancel: null },\r\n 'POST_api/calmail/GetReportList?_W_007': { OK: null, Cancel: null },\r\n 'POST_api/calmail/GetReportList?_E_001': { OK: null, Cancel: null },\r\n 'POST_CalReferrals/GetReferrals?_W_001': { OK: null, Cancel: null },\r\n 'POST_CalReferrals/GetReferrals?_W_002': { OK: null, Cancel: null },\r\n 'POST_CalReferrals/GetReferrals?_W_003': { OK: null, Cancel: null },\r\n 'POST_CalReferrals/GetReferrals?_W_009': { OK: null, Cancel: null },\r\n 'POST_CalReferrals/GetReferrals?_E_001': { OK: null, Cancel: null },\r\n 'POST_api/CalBlockCard/GetBlockedCardDetails?_E_001': { OK: 'BK', Cancel: null },\r\n 'POST_api/CalBlockCard/GetBlockedCardDetails?_W_001': { OK: 'BK', Cancel: null },\r\n 'POST_api/CalBlockCard/GetBlockedCardDetails?_W_002': { OK: 'BK', Cancel: null },\r\n 'POST_api/CalBlockCard/GetBlockedCardDetails?_W_003': { OK: 'BK', Cancel: null },\r\n 'POST_api/CalBlockCard/GetBlockedCardDetails?_W_004': { OK: 'BK', Cancel: null },\r\n 'POST_api/CalBlockCard/GetBlockedCardDetails?_W_005': { OK: 'BK', Cancel: null },\r\n 'POST_api/CalBlockCard/GetBlockedCardDetails?_W_006': { OK: 'BK', Cancel: null },\r\n 'POST_api/CalBlockCard/UpdateCardStatus?_E_001': { OK: 'TA', Cancel: null },\r\n 'POST_api/CalBlockCard/UpdateCardStatus?_W_001': { OK: null, Cancel: null },\r\n 'POST_api/CalBlockCard/UpdateCardStatus?_W_002': { OK: null, Cancel: null },\r\n 'POST_api/CalBlockCard/GetCustomerDetails?_E_001': { OK: 'TA', Cancel: null },\r\n 'POST_api/CalBlockCard/GetCustomerDetails?_W_001': { OK: null, Cancel: null },\r\n 'POST_api/CalBlockCard/GetCustomerDetails?_W_002': { OK: null, Cancel: null },\r\n 'POST_api/CalBlockCard/CheckCardCVV?_E_001': { OK: 'TA', Cancel: null },\r\n 'POST_api/CalBlockCard/CheckCardCVV?_W_002': { OK: 'BK', Cancel: null },\r\n 'POST_api/CalBlockCard/CheckCardCVV?_W_003': { OK: 'BK', Cancel: null },\r\n 'POST_api/CalBlockCard/CheckCardCVV?_W_004': { OK: null, Cancel: null },\r\n 'POST_api/CalBlockCard/CheckCardCVV?_W_005': { OK: null, Cancel: null },\r\n 'POST_api/CalBlockCard/CheckCardCVV?_W_006': { OK: 'BK', Cancel: null },\r\n 'POST_api/PaymentSpread/GetValidForPaymentSpread?_W_001': { OK: 'BTS', Cancel: null },\r\n 'POST_api/PaymentSpread/GetValidForPaymentSpread?_W_002': { OK: 'BTS', Cancel: null },\r\n 'POST_api/PaymentSpread/GetValidForPaymentSpread?_W_003': { OK: 'BTS', Cancel: null },\r\n 'POST_api/PaymentSpread/GetValidForPaymentSpread?_W_004': { OK: 'BTS', Cancel: null },\r\n 'POST_api/PaymentSpread/GetValidForPaymentSpread?_W_005': { OK: 'BTS', Cancel: null },\r\n 'POST_api/PaymentSpread/GetValidForPaymentSpread?_E_001': { OK: 'BTS', Cancel: null },\r\n 'POST_api/PaymentSpread/UpDateRemoveBelongingForCards?_W_001': { OK: 'BTS', Cancel: null },\r\n 'POST_api/PaymentSpread/UpDateRemoveBelongingForCards?_W_002': { OK: 'BTS', Cancel: null },\r\n 'POST_api/PaymentSpread/UpDateRemoveBelongingForCards?_W_004': { OK: 'BTS', Cancel: null },\r\n 'POST_api/PaymentSpread/UpDateRemoveBelongingForCards?_W_005': { OK: 'BTS', Cancel: null },\r\n 'POST_api/PaymentSpread/UpDateRemoveBelongingForCards?_E_001': { OK: 'BTS', Cancel: null },\r\n 'POST_api/PaymentSpread/GetValidForPaymentSpread?_W_006': { OK: 'BTS', Cancel: null },\r\n 'POST_api/Payments/GetTransactionDetails?_W_002': { OK: 'WTC', Cancel: null },\r\n 'POST_api/Payments/GetTransactionDetails?_W_003': { OK: 'WTC', Cancel: null },\r\n 'POST_api/Payments/GetTransactionDetails?_W_004': { OK: 'WTC', Cancel: null },\r\n 'POST_api/Payments/GetTransactionDetails?_W_005': { OK: 'WTC', Cancel: null },\r\n 'POST_api/Payments/GetTransactionDetails?_W_006': { OK: 'WTC', Cancel: null },\r\n 'POST_api/Payments/GetTransactionDetails?_W_007': { OK: 'WTC', Cancel: null },\r\n 'POST_api/Payments/GetTransactionDetails?_W_000': { OK: 'WTC', Cancel: null },\r\n 'POST_api/Payments/SimulateCreditPaymentsRequest?_E_001': { OK: null, Cancel: 'WTC' },\r\n\r\n }\r\n };\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .filter('trusted', trusted);\r\n\r\n trusted.$inject = ['$sce'];\r\n\r\n function trusted($sce) {\r\n return function (val) {\r\n if (typeof val === 'string' && val.length > 0) {\r\n return $sce.trustAsHtml(val);\r\n }\r\n return undefined;\r\n }\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module('digitalWallet').filter('calSearch', function () {\r\n var languageConverter = {\r\n 'a': 'ש',\r\n 'b': 'נ',\r\n 'c': 'ב',\r\n 'd': 'ג',\r\n 'e': 'ק',\r\n 'f': 'כ',\r\n 'g': 'ע',\r\n 'h': 'י',\r\n 'i': 'ן',\r\n 'j': 'ח',\r\n 'k': 'ל',\r\n 'l': 'ך',\r\n 'm': 'צ',\r\n 'n': 'מ',\r\n 'o': 'ם',\r\n 'p': 'פ',\r\n 'r': 'ר',\r\n 's': 'ד',\r\n 't': 'א',\r\n 'u': 'ו',\r\n 'v': 'ה',\r\n 'x': 'ס',\r\n 'y': 'ט',\r\n 'z': 'ז'\r\n };\r\n\r\n var reverseLanguageConverter = {};\r\n\r\n function reverseMap() {\r\n for (var key in languageConverter) {\r\n if (languageConverter.hasOwnProperty(key)) {\r\n reverseLanguageConverter[languageConverter[key]] = key;\r\n }\r\n }\r\n }\r\n\r\n function convertLanguage(query, reverse) {\r\n var queryHeb = '';\r\n var converter = reverse ? reverseLanguageConverter : languageConverter;\r\n angular.forEach(query, function (char, index) {\r\n queryHeb += converter[char];\r\n });\r\n\r\n return queryHeb;\r\n }\r\n\r\n return function (arr, query) {\r\n query = query.replace(/[^a-zA-Zא-ת0-9/\\s״\"']/g, '');\r\n if (!query) {\r\n return [];\r\n }\r\n\r\n // Start to search only if the query has more than two letters.\r\n if (query.length < 2) {\r\n return [];\r\n }\r\n\r\n var queryMatch = [];\r\n query = query.toLowerCase();\r\n\r\n var convertedQuery;\r\n var regex = new RegExp('^[a-zA-Z]+$');\r\n if (regex.test(query)) {\r\n convertedQuery = convertLanguage(query);\r\n convertedQuery = convertedQuery && convertedQuery.toLowerCase();\r\n }\r\n else {\r\n regex = new RegExp('^[א-ת]+$');\r\n if (regex.test(query)) {\r\n reverseMap();\r\n convertedQuery = convertLanguage(query, true);\r\n convertedQuery = convertedQuery && convertedQuery.toLowerCase();\r\n }\r\n }\r\n\r\n angular.forEach(arr, function (item) {\r\n if (item.caption.toLowerCase().indexOf(query) !== -1 ||\r\n item.caption.toLowerCase().indexOf(convertedQuery) !== -1) {\r\n console.log('Found item filter => ', item);\r\n if (item.hide != true) {\r\n queryMatch.push(item);\r\n }\r\n return;\r\n }\r\n\r\n if (!item.keywords) {\r\n console.log('No keywords for item => ', item);\r\n return;\r\n }\r\n\r\n var foundInKeywords = false;\r\n\r\n item.keywords.forEach(function (keyword) {\r\n if ((keyword.toLowerCase().indexOf(query) > -1 ||\r\n (convertedQuery && keyword.toLowerCase().indexOf(convertedQuery) > -1))\r\n && !foundInKeywords) {\r\n console.log('Found item filter with keywords => ', item);\r\n foundInKeywords = true;\r\n if (item.hide != true) {\r\n queryMatch.push(item);\r\n }\r\n }\r\n });\r\n });\r\n\r\n return queryMatch;\r\n }\r\n })\r\n\r\n})(window, window.angular);\nvar wallet = wallet || {};\r\nwallet.utils = wallet.utils || {};\r\n\r\n(function () {\r\n \r\n var getPixelRatio = function() {\r\n var MAX_RATIO = 2;\r\n var pixelRatio = window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI;\r\n return pixelRatio <= MAX_RATIO ? pixelRatio : MAX_RATIO;\r\n }\r\n\r\n this.resolveEmSize = function() {\r\n var FONT_SIZE = \"fontSize\";\r\n var MIN_FONT_SIZE = 15;\r\n var MIN_WIDTH_FONT_RATIO = 18;\r\n var $body = $(\"body\");\r\n\r\n //breakpoint will take the font size from body class\r\n $body.css(FONT_SIZE, \"\");\r\n \r\n var fontSize = parseFloat($body.css(FONT_SIZE).replace('px', ''));\r\n var screenRatio = getPixelRatio();\r\n\r\n var windowWidth = $(window).width();\r\n\r\n //font size after ratio calc\r\n var newFontSize = fontSize / screenRatio;\r\n var actualWindowSize = windowWidth * screenRatio;\r\n\r\n if (actualWindowSize / newFontSize < MIN_WIDTH_FONT_RATIO && screenRatio > 1) {\r\n newFontSize = (actualWindowSize / MIN_WIDTH_FONT_RATIO);\r\n if (newFontSize < MIN_FONT_SIZE)\r\n newFontSize = MIN_FONT_SIZE;\r\n }\r\n\r\n $body.css(FONT_SIZE, newFontSize);\r\n //console.log($body.css(FONT_SIZE));\r\n }\r\n\r\n this.alert = function (options) {\r\n\r\n var html = $('#alert-modal').clone();\r\n html.find('.alert-title').text(options.title || \"ארנק כאל\");\r\n html.find('.alert-content').text(options.content || \"מצטערים אך ארעה שגיאה בלתי צפויה. נא לנסות שנית\");\r\n\r\n html.find('button.ok').on('click', function () { $.unblockUI(); if (options && options.onClose) options.onClose(); return false; });\r\n\r\n $.blockUI({\r\n message: html,\r\n css: {\r\n width: '250px',\r\n top: ($(window).height() - 250) / 2 + 'px',\r\n left: ($(window).width() - 250) / 2 + 'px',\r\n }\r\n });\r\n }\r\n}).apply(wallet.utils); \r\n\r\nArray.prototype.normalize = function(undefined) {\r\n if (this.length > 1) {\r\n return this;\r\n } else if (this.length == 1) {\r\n return this[0];\r\n } else {\r\n return undefined;\r\n }\r\n}\r\nArray.prototype.remove = function(value) {\r\n this.splice(this.indexOf(value) == -1 ? this.length : this.indexOf(value), 1);\r\n}\r\n\r\nArray.prototype.contains = function (value) {\r\n return this.indexOf(value) >= 0;\r\n}\r\n\r\nArray.prototype.compare = function (b) {\r\n return $(this).not(b).get().length === 0 && $(b).not(this).get().length === 0;\r\n}\r\n\r\n///\r\n/// Function extension to String.\r\n///\tReplaces the placeholder tags '{0}...{n}' with the parameters based on ordinal position of the parameters\r\n///\tExample: String.format(\"The quick {0} fox {2} over the lazy {1}.\", \"brown\", \"Dog\", \"jumps\");\r\n///\tOutput:\tThe quick brown fox jumps over the lazy Dog.\r\n///\r\nString.format = function () {\r\n var currentString = null;\r\n if (arguments.length != 0) {\r\n currentString = arguments[0];\r\n for (var argumentIndex = 1; argumentIndex < arguments.length; argumentIndex++) {\r\n var modifiedString = new RegExp('\\\\{' + (argumentIndex - 1) + '\\\\}', 'gm');\r\n currentString = currentString.replace(modifiedString, arguments[argumentIndex]);\r\n }\r\n }\r\n\r\n return currentString;\r\n};\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .controller(\"loanCtrl\", loanCtrl);\r\n\r\n loanCtrl.$inject = [\r\n '$scope', '$rootScope', 'lobbyUiService', 'connection', '$stateParams', '$state', 'appData', 'ssoService', 'loan', 'appSettings', 'backService', '$sce'\r\n ];\r\n\r\n function loanCtrl($scope, $rootScope, lobbyUiService, connection, $stateParams, $state, appData, ssoService, loan, appSettings, backService, $sce) {\r\n\r\n var token = connection.isLoggedIn();\r\n if (!token) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.loanFrame' }, { location: 'replace' });\r\n return;\r\n }\r\n\r\n ssoService.insertSsoDetails().then(function (res) {\r\n if (res) {\r\n var url = appSettings.ecreditLoan + \"?source=2&suppress=true&sid=\" + res.Token;\r\n console.info(\"loan url: \", url);\r\n $scope.loanUrl = $sce.trustAsResourceUrl(url);\r\n if (navigator.userAgent.toLowerCase().indexOf(\"safari\") != -1) {\r\n if (navigator.userAgent.toLowerCase().indexOf(\"chrome\") > -1) {\r\n window.open(url);\r\n lobbyUiService.go('dw.lobby');\r\n }\r\n else {\r\n window.location = url;\r\n }\r\n }\r\n else {\r\n window.open(url);\r\n lobbyUiService.go('dw.lobby');\r\n }\r\n }\r\n }, function (err) {\r\n connection.logout();\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.loanFrame' });\r\n });\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .controller(\"openBankingCtrl\", openBankingCtrl);\r\n\r\n openBankingCtrl.$inject = ['lobbyUiService', 'connection', 'ssoService', 'appSettings', '$q'];\r\n\r\n function openBankingCtrl(lobbyUiService, connection, ssoService, appSettings, $q) {\r\n\r\n var token = connection.isLoggedIn();\r\n if (!token) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.openBanking' }, { location: 'replace' });\r\n return;\r\n }\r\n\r\n lobbyUiService.loader.show();\r\n\r\n var url = appSettings.openBankingUrl;\r\n\r\n ssoService.insertSsoDetails().then(function (res) {\r\n var query = 'bsid=' + res.Token;\r\n logout().then(function () {\r\n lobbyUiService.openExternal(url + \"?\" + query, null, false);\r\n });\r\n }, function (err) {\r\n lobbyUiService.openExternal(url, null, false);\r\n });\r\n\r\n var logout = function () {\r\n var deferred = $q.defer();\r\n var versionAndOS = 'CurrentVersion=' + appSettings.version + '&OperatingSystem=' + ((navigator && navigator.platform == 'iPhone') ? 'iOS' : 'Android');\r\n connection.genericConnection('DELETE', 'CalAuthenticator?', versionAndOS)\r\n .finally(function () {\r\n connection.setToken(null);\r\n sessionStorage.clear('authToken')\r\n deferred.resolve();\r\n });\r\n return deferred.promise;\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .controller(\"insightsFrameCtrl\", insightsFrameCtrl);\r\n\r\n insightsFrameCtrl.$inject = [\r\n '$scope', '$rootScope', 'lobbyUiService', 'connection', '$stateParams', '$state', 'appData', 'ssoService', 'appSettings', 'backService', '$sce'\r\n ];\r\n\r\n function insightsFrameCtrl($scope, $rootScope, lobbyUiService, connection, $stateParams, $state, appData, ssoService, appSettings, backService, $sce) {\r\n\r\n var token = connection.isLoggedIn();\r\n\r\n if (!token) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.insightsFrame' });\r\n return;\r\n }\r\n //$scope.insightsUrl = function () { \r\n //return $sce.trustAsResourceUrl(appSettings.customerInsights);\r\n //}\r\n\r\n var sid = null;\r\n ssoService.insertSsoDetails().then(function (res) {\r\n if (res) {\r\n var url = appSettings.customerInsights + \"?sid=\" + res.Token;\r\n console.info(\"insights url: \", url);\r\n $scope.insightsUrl = $sce.trustAsResourceUrl(url);\r\n }\r\n }, function (err) {\r\n flag = false;\r\n connection.logout();\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.insightsFrame' });\r\n });\r\n\r\n var childWin = document.getElementById('insights').contentWindow;\r\n\r\n var flag;\r\n window.addEventListener(\"message\", function (e) {\r\n flag = true;\r\n var dataMsg;\r\n if (!e.data.hasOwnProperty('request')) {\r\n dataMsg = JSON.parse(e.data);\r\n }\r\n flag = true;\r\n\r\n if (dataMsg) {\r\n switch (dataMsg.status) {\r\n case 'ready': {\r\n\r\n childWin.postMessage(JSON.stringify({ token: token, sourceChannel: 2 }), '*');\r\n\r\n break;\r\n }\r\n case 'move': {\r\n flag = false;\r\n lobbyUiService.go(dataMsg.goTo);\r\n break;\r\n }\r\n case 'home': {\r\n flag = false;\r\n lobbyUiService.go('dw.lobby');\r\n break;\r\n }\r\n case 'not connected': {\r\n flag = false;\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.insightsFrame' });\r\n break;\r\n }\r\n case 'stay': {\r\n backService.replaceState('dw.insightsFrame');\r\n break;\r\n }\r\n }\r\n }\r\n })\r\n\r\n $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {\r\n var from = fromState.name;\r\n if (from === 'dw.insightsFrame') {\r\n if (flag) {\r\n event.preventDefault();\r\n childWin.postMessage({ state: 'leave', goTo: toState }, '*');\r\n }\r\n }\r\n });\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .controller(\"newChatCtrl\", newChatCtrl);\r\n\r\n newChatCtrl.$inject = [\r\n '$scope', 'lobbyUiService', 'errorService', 'googleAnalyticsService',\r\n '$timeout', '$sce', 'newChatService'];\r\n\r\n function newChatCtrl($scope, lobbyUiService, errorService, googleAnalyticsService, $timeout, $sce, newChatService) {\r\n\r\n var vm = this; \r\n\r\n lobbyUiService.loader.show();\r\n vm.title = \"צ'אט עם נציג\";\r\n newChatService.openChat();\r\n \r\n vm.newChatUrl = function () { \r\n return $sce.trustAsResourceUrl(newChatService.iframeChat); \r\n };\r\n\r\n vm.chatLoaded = function () { \r\n lobbyUiService.loader.hide();\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calmail', []).config(calmailRoute);\r\n\r\n calmailRoute.$inject = ['$stateProvider'];\r\n\r\n function calmailRoute($stateProvider) {\r\n $stateProvider\r\n .state('dw.calmail', {\r\n url: \"/account/calmail\",\r\n cache: false,\r\n resolve: {\r\n }\r\n })\r\n .state('dw.calmail-register', {\r\n url: '/account/calmail/register',\r\n cache: false,\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/calmail/templates/register.html\",\r\n controller: \"registerController\"\r\n }\r\n },\r\n resolve: {\r\n initial: function (digitalServices, errorService, lobbyUiService, $timeout, $q) {\r\n var deferred = $q.defer();\r\n lobbyUiService.loader.show();\r\n var customerType = digitalServices.getCustomerType();\r\n var digitalType = digitalServices.getDigitalType();\r\n if (customerType < 1 || digitalType < 1) {\r\n digitalServices.getDigitalServices().then(function (data) {\r\n lobbyUiService.loader.hide();\r\n deferred.resolve();\r\n }, function (err) {\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n $timeout(function () {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.calmail-list' });\r\n });\r\n }\r\n else {\r\n errorService.handleError(err);\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n deferred.reject();\r\n });\r\n }\r\n else {\r\n lobbyUiService.loader.hide();\r\n deferred.resolve();\r\n }\r\n return deferred.promise;\r\n }\r\n }\r\n })\r\n .state('dw.calmail-success', {\r\n url: '/account/calmail/success/',\r\n cache: false,\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/calmail/templates/success.html\",\r\n controller: \"successController\"\r\n }\r\n },\r\n\r\n })\r\n .state('dw.calmail-list', {\r\n url: '/account/calmail/mail',\r\n cache: false,\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/calmail/templates/mail.html\",\r\n controller: \"mailController\"\r\n }\r\n },\r\n resolve: {\r\n }\r\n })\r\n .state('dw.calmail-search', {\r\n url: '/account/calmail/search',\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/calmail/templates/search.html\",\r\n controller: \"searchController\"\r\n }\r\n },\r\n resolve: {\r\n isLoggedIn: function (lobbyUiService, $timeout, $q) {\r\n var defer = $q.defer();\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n $timeout(function () {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.calmail-list' });\r\n defer.reject();\r\n return;\r\n });\r\n }\r\n }\r\n }\r\n })\r\n .state('dw.calmail-pdf', {\r\n url: \"/account/calmail/pdf/:pdfUrl\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/calmail/templates/pdfView.html\",\r\n controller: \"pdfViewController\"\r\n }\r\n }\r\n });\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalWallet')\r\n .factory('digitalServices', function (connection, errorService, $q, appData) {\r\n\r\n var _digitalType = 0; // 1 - registerToCalOnly, 2 - registerToPoalimOnly, 3 - registerDual , 4- notRegister \r\n var _customerType = 0; // 1 - calOnly , 2 - poalimOnly, 3 - dual\r\n\r\n var _successCards = {};\r\n var _poalimEmail = \"\";\r\n var _calEmail = \"\";\r\n var _cardList = [];\r\n var setCustomerTypeAndSetDigitalType = function (arr, setDigitalType, setCustomerType) {\r\n if (setDigitalType && typeof setDigitalType === 'function') {\r\n setDigitalType(arr);\r\n }\r\n if (setCustomerType && typeof setCustomerType === 'function') {\r\n setCustomerType(arr);\r\n }\r\n }\r\n\r\n var getPoalimEmail = function () {\r\n return _poalimEmail\r\n }\r\n\r\n var setPoalimEmail = function (arr) {\r\n var digitalReportArrayFiltered = arr.filter(function (arr) {\r\n return arr.CalMailType === 76\r\n });\r\n if (digitalReportArrayFiltered.length > 0) {\r\n return _poalimEmail = digitalReportArrayFiltered[0].Email;\r\n }\r\n return \"\";\r\n\r\n }\r\n var getCalEmail = function () {\r\n return _calEmail\r\n }\r\n\r\n var setCalEmail = function () {\r\n if (appData) {\r\n if (appData.CustomerInfo && appData.CustomerInfo.Email) {\r\n _calEmail = appData.CustomerInfo.Email\r\n }\r\n }\r\n }\r\n\r\n var getSuccessCards = function () {\r\n return _successCards;\r\n }\r\n\r\n var setSuccessCards = function (arr) {\r\n _successCards = arr;\r\n }\r\n var getDigitalServices = function () {\r\n var deferred = $q.defer();\r\n var that = this;\r\n connection.getDigitalServices().then(function (res) {\r\n if (res.Response && res.Response.Status.Succeeded === true) {\r\n that.setPoalimEmail(res.DigitalReportArray);\r\n that.setCalEmail();\r\n that.setCustomerTypeAndSetDigitalType(res.DigitalReportArray, that.setDigitalType, that.setCustomerType);\r\n that.setCardList(res.CardList);\r\n deferred.resolve(res);\r\n }\r\n else {\r\n deferred.reject(res);\r\n }\r\n\r\n }\r\n , function (err) {\r\n deferred.reject(err);\r\n }\r\n );\r\n return deferred.promise;\r\n }\r\n\r\n var setDigitalType = function (arr) {\r\n var digitalReportArrayFiltered = arr.filter(function (arr) {\r\n return arr.IsRegistered === true && (arr.CalMailType === 76 || arr.CalMailType === 1)\r\n });\r\n\r\n if (digitalReportArrayFiltered.length === 2) {\r\n _digitalType = 3;\r\n\r\n }\r\n else if (digitalReportArrayFiltered.length === 1 && digitalReportArrayFiltered[0].CalMailType === 76) {\r\n _digitalType = 2;\r\n\r\n }\r\n else if (digitalReportArrayFiltered.length === 1 && digitalReportArrayFiltered[0].CalMailType === 1) {\r\n _digitalType = 1;\r\n }\r\n else {\r\n _digitalType = 4;\r\n }\r\n\r\n }\r\n\r\n var getDigitalType = function () {\r\n return _digitalType;\r\n }\r\n\r\n var setCustomerType = function (customerArr) {\r\n var digitalReportArrayFiltered = customerArr.filter(function (arr) {\r\n return arr.CalMailType === 76 || arr.CalMailType === 1\r\n });\r\n\r\n if (digitalReportArrayFiltered.length === 2) {\r\n _customerType = 3;\r\n\r\n }\r\n else if (digitalReportArrayFiltered.length === 1 && digitalReportArrayFiltered[0].CalMailType === 76) {\r\n _customerType = 2;\r\n\r\n }\r\n else if (digitalReportArrayFiltered.length === 1 && digitalReportArrayFiltered[0].CalMailType === 1) {\r\n _customerType = 1;\r\n }\r\n\r\n }\r\n var getCustomerType = function () {\r\n return _customerType;\r\n }\r\n\r\n\r\n var hasPoalim = function () {\r\n if (getPoalimCards().length > 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n var updateCalMailOrSms = function (serviceReferer) {\r\n var request = {\r\n \"ServiceReferer\": serviceReferer,\r\n \"ActionCode\": 1,\r\n \"TransCommonServicesIndication\": \"37\"\r\n }\r\n var deferred = $q.defer();\r\n var that = this;\r\n connection.updateCalMailOrSms(request).then(function (res) {\r\n if (res.Response && res.Response.Status.Succeeded === true) {\r\n //ToDo\r\n }\r\n deferred.resolve(res);\r\n }\r\n , function (err) {\r\n deferred.reject(err);\r\n }\r\n );\r\n return deferred.promise;\r\n }\r\n\r\n var getReportList = function (req) {\r\n var deferred = $q.defer();\r\n var that = this;\r\n connection.getReportList(req).then(function (res) {\r\n if (res.Response && res.Response.Status.Succeeded === true) {\r\n deferred.resolve(res);\r\n }\r\n else {\r\n deferred.reject(res);\r\n }\r\n\r\n }\r\n , function (err) {\r\n deferred.reject(err);\r\n }\r\n );\r\n return deferred.promise;\r\n }\r\n\r\n var setCardList = function (arr) {\r\n if (arr && arr.length > 0) {\r\n _cardList = arr;\r\n }\r\n }\r\n var getCardList = function () {\r\n return _cardList;\r\n }\r\n\r\n\r\n return {\r\n getDigitalServices: getDigitalServices,\r\n getDigitalType: getDigitalType,\r\n hasPoalim: hasPoalim,\r\n updateCalMailOrSms: updateCalMailOrSms,\r\n getReportList: getReportList,\r\n setDigitalType: setDigitalType,\r\n setCustomerType: setCustomerType,\r\n getCustomerType: getCustomerType,\r\n setCustomerTypeAndSetDigitalType: setCustomerTypeAndSetDigitalType,\r\n getSuccessCards: getSuccessCards,\r\n setSuccessCards: setSuccessCards,\r\n getPoalimEmail: getPoalimEmail,\r\n setPoalimEmail: setPoalimEmail,\r\n getCalEmail: getCalEmail,\r\n setCalEmail: setCalEmail,\r\n setCardList: setCardList,\r\n getCardList: getCardList\r\n\r\n }\r\n })\r\n\r\n})(window, angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module('calmail')\r\n\r\n .factory('calMailSrv', function () {\r\n var _eamil = '';\r\n var _list = null;\r\n var _cards = [];\r\n var _currentCard;\r\n var _debitDate;\r\n var _searchDateRange = {};\r\n\r\n\r\n var setEmail = function (email) {\r\n _eamil = email\r\n }\r\n\r\n var getEmail = function () {\r\n return _eamil;\r\n }\r\n\r\n var setList = function (list) {\r\n _list = list\r\n }\r\n\r\n var getList = function () {\r\n return _list;\r\n }\r\n\r\n var setCardsList = function (cards) {\r\n _cards = cards\r\n }\r\n\r\n var getCardsList = function () {\r\n return _cards;\r\n }\r\n\r\n var currentCard = function (card) {\r\n if (card) {\r\n _currentCard = card;\r\n }\r\n return _currentCard;\r\n }\r\n\r\n var debitDate = function (date) {\r\n if (date) {\r\n _debitDate = date.replace('/20', '');\r\n }\r\n return _debitDate;\r\n }\r\n\r\n var searchDateRange = function (date) {\r\n if (date) {\r\n _searchDateRange = date;\r\n }\r\n return _searchDateRange;\r\n }\r\n\r\n\r\n\r\n return {\r\n setEmail: setEmail,\r\n getEmail: getEmail,\r\n getList: getList,\r\n setList: setList,\r\n setCardsList: setCardsList,\r\n getCardsList: getCardsList,\r\n currentCard: currentCard,\r\n debitDate: debitDate,\r\n searchDateRange: searchDateRange,\r\n\r\n\r\n }\r\n })\r\n\r\n .controller('pdfViewController', function ($scope, calMailSrv, appSettings) {\r\n var url = appSettings.server + 'api/calmail/GetExpenseReportPDF?last4Digits%3D' + calMailSrv.currentCard() + '%26debitDate%3D' + calMailSrv.debitDate();\r\n $scope.pdfUrl = 'app/calmail/lib/pdfjs/web/viewer.html?file=' + url;\r\n\r\n console.log(\"$scope.pdfUr;\", $scope.pdfUrl);\r\n\r\n\r\n $scope.$on('$destroy', function () {\r\n $scope.pdfUrl = 'abount:blank';\r\n });\r\n\r\n $scope.$on('$ionicView.enter', function () {\r\n console.log(\"$scope.pdfUr;\", $scope.pdfUrl);\r\n\r\n removeViewPort();\r\n addViewport(true, '$ionicView.enter');\r\n });\r\n\r\n $scope.$on('$ionicView.leave', function () {\r\n addViewport(false, '$ionicView.leave');\r\n });\r\n\r\n function reloadViewPort(dynamicData) {\r\n removeViewPort();\r\n addViewport(dynamicData);\r\n }\r\n\r\n function removeViewPort() {\r\n $('head meta[name=viewport]').remove();\r\n }\r\n\r\n function addViewport(dynamicData, calledfrom) {\r\n var viewportMeta = document.createElement('meta');\r\n viewportMeta.setAttribute('id', 'myMeta');\r\n viewportMeta.setAttribute('name', 'viewport');\r\n var widthScreen = window.screen.width + 'px';\r\n if (dynamicData) {\r\n viewportMeta.setAttribute('content', 'width=' + widthScreen + ' , user-scalable=yes');\r\n document.getElementsByTagName(\"html\")[0].style.touchAction = \"auto\";\r\n }\r\n else {\r\n viewportMeta.setAttribute('content', 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0');\r\n document.getElementsByTagName(\"html\")[0].style.touchAction = \"pan-y\";\r\n }\r\n document.getElementsByTagName(\"head\")[0].appendChild(viewportMeta);\r\n console.log(\"view port added, calledfrom: \" + calledfrom);\r\n }\r\n\r\n ga('send', 'pageview', '/vp/calmail_details /step4/success/');\r\n\r\n })\r\n .controller('mailController', function ($scope, $state, lobbyUiService, lobbyStateService,\r\n connection, calMailSrv, errorService, appSettings, ssoService, digitalServices, appData, $timeout, $q) {\r\n $scope.customerType;\r\n $scope.digitalType;\r\n $scope.openTakanon = function () {\r\n lobbyUiService.popup.message('app/calmail/templates/takanon.html', null, 'תקנון', 'calmail-popup');\r\n }\r\n\r\n $scope.ansAndQues = function () {\r\n lobbyUiService.popup.message('app/calmail/templates/ansAndQus.html', null, 'שאלות ותשובות', 'calmail-popup');\r\n }\r\n\r\n $scope.updateMail = function () {\r\n lobbyUiService.go('dw.updateMail');\r\n }\r\n\r\n $scope.openPdf = function (item) {\r\n console.log(\"item\", item);\r\n calMailSrv.currentCard(item.last4Digits);\r\n calMailSrv.debitDate(item.DebitDate);\r\n $state.go('dw.calmail-pdf');\r\n return;\r\n }\r\n $scope.go2search = function () {\r\n $state.go('dw.calmail-search');\r\n }\r\n\r\n $scope.go2register = function () {\r\n lobbyUiService.go('dw.calmail-register');\r\n }\r\n function init() {\r\n var list = calMailSrv.getList();\r\n if (list != null) {\r\n if (list && list.length > 0) {\r\n $scope.isSearch = true;\r\n $scope.header = 'תוצאות חיפוש';\r\n $scope.list = list;\r\n }\r\n else {\r\n $scope.isSearch = true;\r\n $scope.header = 'לא נמצאו דפי פירוט';\r\n }\r\n }\r\n else {\r\n $scope.isSearch = false;\r\n $scope.header = 'צפייה בדפי פירוט דיגיטליים';\r\n lobbyUiService.loader.show();\r\n var req = buildRequest();\r\n\r\n digitalServices.getReportList(req).then(function (res) {\r\n lobbyUiService.loader.hide();\r\n handleServiceStatus(res);\r\n ga('send', 'pageview', '/vp/calmail_details/step1/welcome/');\r\n }, function (error) {\r\n //retry\r\n digitalServices.getReportList(req).then(function (res) {\r\n lobbyUiService.loader.hide();\r\n handleServiceStatus(res);\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n if (error[0].response && error[0].response.RegisteredServicesList && error[0].response.RegisteredServicesList.length > 0) {\r\n var err = handleServiceStatus(error[0].response, true);\r\n if (err) {\r\n errorService.handleError(error);\r\n }\r\n }\r\n else {\r\n errorService.handleError(error);\r\n }\r\n });\r\n });\r\n\r\n }\r\n }\r\n function getDigitalServices() {\r\n\r\n lobbyUiService.loader.show();\r\n digitalServices.getDigitalServices().then(function (data) {\r\n $scope.customerType = digitalServices.getCustomerType();\r\n $scope.digitalType = digitalServices.getDigitalType();\r\n // 1 - Cal , 2 - poalim , 3 -Dual, 4- Not Registered\r\n if ($scope.digitalType === 4) {\r\n $timeout(function () {\r\n lobbyUiService.go('dw.calmail-register');\r\n\r\n });\r\n }\r\n else {\r\n init();\r\n }\r\n lobbyUiService.loader.hide();\r\n\r\n }, function (err) {\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n $timeout(function () {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.calmail-list' });\r\n });\r\n }\r\n else {\r\n errorService.handleError(err);\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.lobby' });\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n function buildRequest() {\r\n var dateTo = new Date();\r\n var dateFrom = new Date().setDate(dateTo.getDate() - 30);\r\n var dateToMoment = moment(dateTo).format('DD-MM-YYYY');\r\n var dateFromMoment = moment(dateFrom).format('DD-MM-YYYY');\r\n var request = {\r\n dateFrom: dateFromMoment,\r\n dateTo: dateToMoment,\r\n custId: appData.CustomerInfo.Id,\r\n cardUniqueId: null,\r\n accountNum: null,\r\n calMailInd: 1,\r\n updateCalMailView: 1,\r\n isLeumi: 0\r\n };\r\n return request;\r\n }\r\n function handleServiceStatus(res, fromError) {\r\n if (res.ReportsList && res.ReportsList.length > 0) {\r\n res.ReportsList.forEach(function (element) {\n element.DebitDate = element.DebitDate.slice(3, element.DebitDate.length);\n });\r\n }\r\n $scope.list = res.ReportsList;\r\n if (res.AttachmentsList && res.AttachmentsList.length > 0) {\r\n res.AttachmentsList.unshift({ Description: 'להטבות והנחות המועדון' });\r\n $scope.attachments = res.AttachmentsList;\r\n $scope.coupon = $scope.attachments[0];\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n\r\n $scope.goToCoupon = function () {\r\n if ($scope.coupon && $scope.coupon.Url) {\r\n window.location.href = $scope.coupon.Url;\r\n }\r\n }\r\n\r\n if (!!lobbyUiService.connection.isLoggedIn()) {\r\n getDigitalServices();\r\n }\r\n else {\r\n $timeout(function () {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.calmail-list' });\r\n });\r\n }\r\n\r\n })\r\n .controller('successController', function ($scope, calMailSrv, lobbyUiService, digitalServices) {\r\n $scope.calEmail = digitalServices.getCalEmail();\r\n $scope.poalimEmail = digitalServices.getPoalimEmail();\r\n $scope.go2home = function () {\r\n lobbyUiService.go('dw.lobby');\r\n }\r\n $scope.calCards = [];\r\n $scope.poalimCards = [];\r\n var init = function () {\r\n //UpdateDigitalServices;\r\n digitalServices.getDigitalServices();\r\n var cards = digitalServices.getSuccessCards();\r\n if (cards != undefined && cards.cal && cards.cal.length > 0) {\r\n $scope.calCards = cards.cal;\r\n }\r\n if (cards != undefined && cards.poalim && cards.poalim.length > 0) {\r\n $scope.poalimCards = cards.poalim;\r\n }\r\n\r\n }\r\n\r\n init();\r\n\r\n })\r\n .controller('registerController', function ($scope, $state, connection, lobbyUiService, errorService, digitalServices, $q) {\r\n\r\n $scope.calCheckBox;\r\n $scope.poalimCheckBox;\r\n $scope.customerType;\r\n $scope.digitalType;\r\n $scope.showPoalim;\r\n $scope.showCal;\r\n $scope.checkBoxObject =\r\n {\r\n cal: {\r\n selected: false,\r\n show: false,\r\n serviceReferer: 1,\r\n email: digitalServices.getCalEmail()\r\n\r\n },\r\n poalim:\r\n {\r\n selected: false,\r\n show: false,\r\n serviceReferer: 76,\r\n email: digitalServices.getPoalimEmail()\r\n }\r\n }\r\n $scope.openTakanon = function () {\r\n lobbyUiService.popup.message('app/calmail/templates/takanon.html', null, 'תקנון', 'calmail-popup');\r\n }\r\n $scope.ansAndQues = function () {\r\n lobbyUiService.popup.message('app/calmail/templates/ansAndQus.html', null, 'שאלות ותשובות', 'calmail-popup');\r\n }\r\n $scope.toggleCheckBox = function (obj) {\r\n obj.selected = !obj.selected;\r\n\r\n }\r\n $scope.updateMail = function () {\r\n lobbyUiService.go('dw.updateMail');\r\n }\r\n var updateCalMailOrSms = function (serviceReferer) {\r\n var deferred = $q.defer();\r\n digitalServices.updateCalMailOrSms(serviceReferer).then(function (res) {\r\n if (res.Response.Status.Succeeded || (res.Response.Status.SeverityCode.toLowerCase() === \"i\" && res.Cards && res.Cards.length > 0)) {\r\n deferred.resolve(res);\r\n }\r\n else {\r\n deferred.reject(err);\r\n }\r\n\r\n }, function (err) {\r\n deferred.reject(err);\r\n });\r\n return deferred.promise;\r\n }\r\n var validateSubmit = function (isCal, isPoalim) {\r\n if (isCal || isPoalim) {\r\n return true;\r\n }\r\n return false;\r\n\r\n }\r\n // Need Only 1 success\r\n $scope.submit = function () {\r\n lobbyUiService.loader.show();\r\n var countUpdateCalMailOrSms = 0;\r\n var succeeded = false;\r\n var cards = {};\r\n var updateCalMailOrSmsCal = $scope.checkBoxObject.cal.selected && $scope.checkBoxObject.cal.show;\r\n var updateCalMailOrSmsPoalim = $scope.checkBoxObject.poalim.selected && $scope.checkBoxObject.poalim.show;\r\n if (validateSubmit(updateCalMailOrSmsCal, updateCalMailOrSmsPoalim)) {\r\n\r\n\r\n if (updateCalMailOrSmsCal) {\r\n countUpdateCalMailOrSms = countUpdateCalMailOrSms + 1;\r\n updateCalMailOrSms($scope.checkBoxObject.cal.serviceReferer).then(function (res) {\r\n countUpdateCalMailOrSms = countUpdateCalMailOrSms - 1;\r\n succeeded = true;\r\n cards.cal = res.Cards;\r\n if (countUpdateCalMailOrSms === 0) {\r\n //GoToSuccesPage\r\n digitalServices.setSuccessCards(cards);\r\n lobbyUiService.go('dw.calmail-success');\r\n lobbyUiService.loader.hide();\r\n }\r\n }, function (err) {\r\n countUpdateCalMailOrSms = countUpdateCalMailOrSms - 1;\r\n if (countUpdateCalMailOrSms === 0 && !succeeded) {\r\n errorService.handleError(err);\r\n lobbyUiService.loader.hide();\r\n }\r\n else if (countUpdateCalMailOrSms === 0 && succeeded) {\r\n //GoToSuccesPage\r\n digitalServices.setSuccessCards(cards);\r\n lobbyUiService.go('dw.calmail-success');\r\n lobbyUiService.loader.hide();\r\n }\r\n });\r\n }\r\n if (updateCalMailOrSmsPoalim) {\r\n countUpdateCalMailOrSms = countUpdateCalMailOrSms + 1;\r\n updateCalMailOrSms($scope.checkBoxObject.poalim.serviceReferer).then(function (res) {\r\n countUpdateCalMailOrSms = countUpdateCalMailOrSms - 1;\r\n succeeded = true;\r\n cards.poalim = res.Cards;\r\n if (countUpdateCalMailOrSms === 0) {\r\n //GoToSuccesPage\r\n digitalServices.setSuccessCards(cards);\r\n lobbyUiService.go('dw.calmail-success');\r\n lobbyUiService.loader.hide();\r\n }\r\n }, function (err) {\r\n countUpdateCalMailOrSms = countUpdateCalMailOrSms - 1;\r\n if (countUpdateCalMailOrSms === 0 && !succeeded) {\r\n errorService.handleError(err);\r\n lobbyUiService.loader.hide();\r\n }\r\n else if (countUpdateCalMailOrSms === 0 && succeeded) {\r\n //GoToSuccesPage\r\n digitalServices.setSuccessCards(cards);\r\n lobbyUiService.go('dw.calmail-success');\r\n lobbyUiService.loader.hide();\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n //ToDo -> Show Validation Message\r\n var popup = {};\r\n\r\n popup.title = \"הצטרפות לשירות דפי פירוט דיגיטליים\";\r\n\r\n popup.text = \"כדי להצטרף לשירות צריך לבחור כרטיסים :)\";\r\n\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n return;\r\n }\r\n }\r\n );\r\n lobbyUiService.popup.messageText(null, popup.text, popup.title, null, null, null, popup.btns, false);\r\n lobbyUiService.loader.hide();\r\n }\r\n }\r\n\r\n var noCardsToAdd = function () {\r\n var popup = {\r\n };\r\n\r\n popup.title = \"הצטרפות לשירות דפי פירוט דיגיטליים\";\r\n\r\n popup.text = \"איזה כיף! כל הכרטיסים שלך כבר מצורפים לשירות\";\r\n\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n lobbyUiService.go('dw.calmail-list');\r\n }\r\n }\r\n );\r\n lobbyUiService.popup.messageText(null, popup.text, popup.title, null, null, null, popup.btns, false);\r\n }\r\n var init = function () {\r\n digitalServices.setSuccessCards({});\r\n $scope.customerType = digitalServices.getCustomerType();// 1 - calOnly , 2 - poalimOnly, 3 - dual\r\n $scope.digitalType = digitalServices.getDigitalType(); // 1 - registerToCalOnly, 2 - registerToPoalimOnly, 3 - registerDual , 4- notRegister \r\n $scope.checkBoxObject.cal.selected = ($scope.digitalType === 1 || $scope.digitalType === 3) ? true : false;\r\n $scope.checkBoxObject.poalim.selected = ($scope.digitalType === 2 || $scope.digitalType === 3) ? true : false;\r\n if (!$scope.checkBoxObject.poalim.selected && ($scope.customerType === 2 || $scope.customerType === 3)) {\r\n $scope.checkBoxObject.poalim.show = true;\r\n //By demand if not registered do selected\r\n $scope.checkBoxObject.poalim.selected = true;\r\n }\r\n\r\n\r\n if (!$scope.checkBoxObject.cal.selected && ($scope.customerType === 1 || $scope.customerType === 3)) {\r\n $scope.checkBoxObject.cal.show = true;\r\n //By demand if not registered do selected\r\n $scope.checkBoxObject.cal.selected = true;\r\n }\r\n if (!$scope.checkBoxObject.cal.show && !$scope.checkBoxObject.poalim.show) {\r\n noCardsToAdd();\r\n }\r\n\r\n }\r\n\r\n init();\r\n\r\n\r\n\r\n })\r\n .controller('searchController', function ($scope, connection, calMailSrv, lobbyUiService, $state, errorService, digitalServices, appData) {\r\n $scope.cards = ['כל הכרטיסים'];\r\n var cardDesc;\r\n var getCardDesc = function () {\r\n cardDesc = digitalServices.getCardList();\r\n cardDesc = cardDesc.map(function (card) {\r\n return card.cardDesc + \" \" + card.last4Digits;\r\n });\r\n $scope.cards = $scope.cards.concat(cardDesc);\r\n $scope.chosseCard = $scope.cards[0];\r\n }\r\n if (digitalServices.getCardList().length > 0) {\r\n getCardDesc();\r\n }\r\n else {\r\n digitalServices.getDigitalServices().then(function (res) {\r\n getCardDesc();\r\n }, function (err) {\r\n errorService.handleError(err);\r\n });\r\n }\r\n\r\n\r\n\r\n calMailSrv.setList([]);\r\n\r\n var datesData = [];\r\n $scope.dates = [];\r\n var today = new Date();\r\n var tempMoment = moment(today, \"YYYY/MM/DD\");\r\n var tempMonth = tempMoment.format(\"MM\");\r\n var tempYear = tempMoment.format(\"YYYY\");\r\n var string = tempMonth + \"-\" + tempYear;\r\n datesData.push({\r\n id: 0,\r\n display: string,\r\n date: tempMoment.toDate()\r\n });\r\n\r\n for (var i = 1; i < 6; i++) {\r\n today.setFullYear(today.getFullYear(), today.getMonth() - 1);\r\n var tempMoment = moment(today, \"YYYY/MM/DD\");\r\n var tempMonth = tempMoment.format(\"MM\");\r\n var tempYear = tempMoment.format(\"YYYY\");\r\n var string = tempMonth + \"-\" + tempYear;\r\n datesData.push({\r\n id: i,\r\n display: string,\r\n date: tempMoment.toDate()\r\n });\r\n }\r\n\r\n $scope.dates = datesData.map(function (item) {\r\n return {\r\n id: item.id,\r\n display: item.display\r\n }\r\n });\r\n\r\n $scope.updateDateArray = function () {\r\n console.log($scope.minDate);\r\n var index = $scope.dates.indexOf($scope.minDate);\r\n $scope.fromDateArr = $scope.dates.slice();\r\n $scope.fromDateArr = $scope.fromDateArr.splice(0, index + 1);\r\n console.log($scope.fromDateArr);\r\n }\r\n\r\n $scope.errorDate = false;\r\n\r\n $scope.search = function (searchFrm) {\r\n if (searchFrm.$valid) {\r\n lobbyUiService.loader.show();\r\n var card;\r\n var cardUniqueId = \"\";\r\n if ($scope.chosseCard !== 'כל הכרטיסים') {\r\n card = $scope.chosseCard.substr($scope.chosseCard.length - 4, $scope.chosseCard.length - 1);\r\n appData.BankAccounts.forEach(function (bank) {\r\n bank.Cards.forEach(function (cardObj) {\r\n if (cardObj.LastFourDigits.trim() === card.trim()) {\r\n return cardUniqueId = cardObj.Id;\r\n }\r\n })\r\n })\r\n } else {\r\n card = null;\r\n ga('send', 'pageview', '/vp/calmail_details/step2/popup_select_card/');\r\n }\r\n\r\n var indexFrom = $scope.dates.indexOf($scope.minDate);\r\n var indexTo = $scope.dates.indexOf($scope.maxDate);\r\n var fromDate = datesData[indexFrom].date;\r\n var dateTo = datesData[indexTo].date;\r\n\r\n //set from 1st to last day in month\r\n fromDate = new Date(fromDate.getFullYear(), fromDate.getMonth(), 1);\r\n dateTo = new Date(dateTo.getFullYear(), dateTo.getMonth() + 1, 0);\r\n\r\n //fix time zone for toJSON\r\n fromDate.setHours(fromDate.getHours() - fromDate.getTimezoneOffset() / 60);\r\n dateTo.setHours(dateTo.getHours() - dateTo.getTimezoneOffset() / 60);\r\n\r\n var request = {\r\n dateFrom: moment(fromDate).format('DD-MM-YYYY'),\r\n dateTo: moment(dateTo).format('DD-MM-YYYY'),\r\n custId: (cardUniqueId && cardUniqueId != \"\") ? \"\" : appData.CustomerInfo.Id,\r\n cardUniqueId: (cardUniqueId && cardUniqueId != \"\") ? cardUniqueId : null,\r\n accountNum: null,\r\n calMailInd: 1,\r\n updateCalMailView: 0,\r\n isLeumi: 0\r\n };\r\n digitalServices.getReportList(request).then(function (res) {\r\n if (res.ReportsList && res.ReportsList.length > 0) {\r\n res.ReportsList.forEach(function (element) {\r\n element.DebitDate = element.DebitDate.slice(3, element.DebitDate.length);\r\n });\r\n }\r\n calMailSrv.setList(res.ReportsList);\r\n lobbyUiService.loader.hide();\r\n $state.go('dw.calmail-list');\r\n\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n console.log(error);\r\n errorService.handleError(error);\r\n });\r\n } else {\r\n $scope.errorDate = true;\r\n }\r\n }\r\n ga('send', 'pageview', '/vp/calmail_details/step2/select_card/');\r\n });\r\n\r\n\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('blockCard', [])\r\n .run(function () {\r\n //TODO\r\n })\r\n})(window, window.angular);\n(function (window, angular) {\r\n \"use strict\";\r\n angular.module(\"blockCard\").config(blockCardRoute);\r\n\r\n function blockCardRoute($stateProvider) {\r\n //TODO http://localhost/DigitalWallet.UI/#!/digital/lobby\r\n\r\n $stateProvider\r\n .state(\"dw.block\", {\r\n url: \"/blockcard\",\r\n abstract: true,\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/blockCard/shared/templates/blockcard.html\"\r\n //controller: \"blockcardCtrl as vm\"\r\n }\r\n }\r\n })\r\n .state(\"dw.defectiveCard\", {\r\n url: \"/defective-card/:updateAddressRedirect\",\r\n analyticsUrl: \"/vp/block-card/step2/show-brands/\",\r\n cache: false,\r\n checkState: function ($q, $timeout, blockCardService, lobbyUiService) { },\r\n resolve: {\r\n checkState: function ($q, $timeout, blockCardService, lobbyUiService) {\r\n var defer = $q.defer();\r\n\r\n $timeout(function () {\r\n defer.resolve();\r\n });\r\n\r\n return defer.promise;\r\n }\r\n },\r\n\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/blockCard/defective/defective.html\",\r\n controller: \"defectiveCtrl as vm\"\r\n }\r\n }\r\n })\r\n .state(\"dw.blockCard\", {\r\n url: \"/block-card\",\r\n analyticsUrl: \"/vp/managecard/step1/blockcard-options/\",\r\n cache: false,\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/blockCard/block/block.html\",\r\n controller: \"blockCtrl as vm\"\r\n }\r\n }\r\n })\r\n\r\n .state(\"dw.activateCardEnd\", {\r\n url: \"/activate-card-end\",\r\n cache: false,\r\n resolve: {\r\n checkState: function ($q, $timeout, blockCardService, lobbyUiService) {\r\n var defer = $q.defer();\r\n $timeout(function () {\r\n var userDeatils = blockCardService.GetSetUserDeatils();\r\n if (userDeatils != null) {\r\n defer.resolve();\r\n } else {\r\n defer.reject();\r\n lobbyUiService.go(\"dw.activateCard\");\r\n }\r\n });\r\n\r\n return defer.promise;\r\n }\r\n },\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/blockCard/activate/activate-card-end.html\",\r\n controller: \"activateCardEndCtrl as vm\"\r\n }\r\n }\r\n })\r\n\r\n .state(\"dw.activateCard\", {\r\n url: \"/activate-card\",\r\n cache: false,\r\n analyticsUrl: \"/vp/managecard/step1/restore-card/\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/blockCard/activate/activate-card.html\",\r\n controller: \"activateCtrl as vm\"\r\n }\r\n }\r\n })\r\n\r\n .state(\"dw.defectiveCardEnd\", {\r\n url: \"/defective-card-end\",\r\n cache: false,\r\n resolve: {\r\n checkState: function ($q, $timeout, blockCardService, lobbyUiService) {\r\n var defer = $q.defer();\r\n\r\n $timeout(function () {\r\n var userDeatils = blockCardService.GetSetUserDeatils();\r\n if (userDeatils != null) {\r\n defer.resolve();\r\n } else {\r\n defer.reject();\r\n lobbyUiService.go(\"dw.defectiveCard\");\r\n }\r\n });\r\n\r\n return defer.promise;\r\n }\r\n },\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/blockCard/defective/defective-card-end.html\",\r\n controller: \"defectiveCardEndCtrl as vm\"\r\n }\r\n }\r\n })\r\n .state(\"dw.blockCardConfirm\", {\r\n url: \"/block-card-confirm:updateAddressRedirect\",\r\n cache: false,\r\n resolve: {\r\n checkState: function ($q, $timeout, blockCardService, lobbyUiService) {\r\n var defer = $q.defer();\r\n\r\n $timeout(function () {\r\n var userDeatils = blockCardService.GetSetUserDeatils();\r\n if (userDeatils != null) {\r\n defer.resolve();\r\n } else {\r\n defer.reject();\r\n lobbyUiService.go(\"dw.blockCard\");\r\n }\r\n });\r\n\r\n return defer.promise;\r\n }\r\n },\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/blockCard/block/block-confirm.html\",\r\n controller: \"blockConfirmCtrl as vm\"\r\n }\r\n }\r\n })\r\n\r\n\r\n\r\n\r\n .state(\"dw.blockCardContactUs\", {\r\n url: \"/block-card-contact-us\",\r\n cache: false,\r\n //resolve: {\r\n // checkState: function ($q, $timeout, blockCardService, lobbyUiService) {\r\n // var defer = $q.defer();\r\n\r\n // $timeout(function () {\r\n // var userDeatils = blockCardService.GetSetUserDeatils();\r\n // if (userDeatils != null) {\r\n // defer.resolve();\r\n // } else {\r\n // defer.reject();\r\n // lobbyUiService.go(\"dw.blockCard\");\r\n // }\r\n // });\r\n\r\n // return defer.promise;\r\n // }\r\n //},\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/blockCard/block/block-contact-us.html\",\r\n controller: \"blockContactUsCtrl as vm\"\r\n }\r\n }\r\n })\r\n\r\n\r\n\r\n\r\n\r\n .state(\"dw.blockCardEnd\", {\r\n url: \"/block-card-end\",\r\n cache: false,\r\n resolve: {\r\n checkState: function ($q, $timeout, blockCardService, lobbyUiService) {\r\n var defer = $q.defer();\r\n\r\n $timeout(function () {\r\n var userDeatils = blockCardService.GetSetUserDeatils();\r\n if (userDeatils != null) {\r\n defer.resolve();\r\n } else {\r\n defer.reject();\r\n lobbyUiService.go(\"dw.blockCard\");\r\n }\r\n });\r\n\r\n return defer.promise;\r\n }\r\n },\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/blockCard/block/block-card-end.html\",\r\n controller: \"blockCardEndCtrl as vm\"\r\n }\r\n }\r\n })\r\n\r\n .state(\"dw.contactless\", {\r\n url: \"/contactless:updateAddressRedirect\",\r\n cache: false,\r\n // resolve: {\r\n // checkState: function ($q, $timeout, blockCardService, lobbyUiService) {\r\n // var defer = $q.defer();\r\n\r\n // $timeout(function () {\r\n // var userDeatils = blockCardService.GetSetUserDeatils();\r\n // if (userDeatils != null) {\r\n // defer.resolve();\r\n // }\r\n // else {\r\n // defer.reject();\r\n // lobbyUiService.go('dw.login', { nextPage: 'dw.contactless' }, { location: 'replace' });\r\n // }\r\n // })\r\n\r\n // return defer.promise;\r\n // }\r\n // },\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/blockCard/contactless/contactless.html\",\r\n controller: \"contactlessCtrl as vm\"\r\n }\r\n }\r\n })\r\n\r\n .state(\"dw.contactlessCardEnd\", {\r\n url: \"/contactless-card-end/:clCardEndState/:uniqueID\",\r\n cache: false,\r\n // resolve: {\r\n // checkState: function($q, $timeout, blockCardService, lobbyUiService) {\r\n // var defer = $q.defer();\r\n\r\n // $timeout(function() {\r\n // var userDeatils = blockCardService.GetSetUserDeatils();\r\n // if (userDeatils != null) {\r\n // defer.resolve();\r\n // } else {\r\n // defer.reject();\r\n // lobbyUiService.go(\"dw.contactless\");\r\n // }\r\n // });\r\n\r\n // return defer.promise;\r\n // }\r\n // },\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/blockCard/contactless/contactless-card-end.html\",\r\n controller: \"contactlessCardEndCtrl as vm\"\r\n }\r\n }\r\n });\r\n }\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('blockCard')\r\n .factory('blockCardService', blockCardService);\r\n\r\n blockCardService.$inject = [\r\n 'connection', 'appData', '$q', '$timeout', 'lobbyUiService', 'errorService', '$parse', '$location', '$ionicScrollDelegate', 'googleAnalyticsService'\r\n ];\r\n\r\n\r\n function blockCardService(connection, appData, $q, $timeout, lobbyUiService, errorService, $parse, $location, $ionicScrollDelegate, googleAnalyticsService) {\r\n var _errorText = {\r\n dateInvaid: \"צריך לבחור תאריך\",\r\n country: \"יש להקליד שם מדינה בה הכרטיס אבד/נגנב\",\r\n blockReason: \"יש לבחור האם הכרטיס אבד/נגנב\",\r\n blockReasonVirtualCard: \"יש לבחור את הסיבה לחסימת הכרטיס\"\r\n }\r\n\r\n var _analyticsBlockTypeReason = \"\";\r\n var _analyticsBlockTypeTempConstant = \"\";\r\n\r\n var _lastUpdate = {};\r\n\r\n var _operationEnum = {\r\n DEF: 'defective',\r\n ACTIVE: 'activate',\r\n BLOCK: 'block',\r\n BlockConfirm: 'blockConfirm',\r\n Contactless:'contactless'\r\n }\r\n var _operation = {\r\n defective: { name: 'defective', number: 3, cardProcessTypeEnum: 'Defective', title: 'החלפת כרטיס פגום' },\r\n activate: { name: 'activate', number: 2, cardProcessTypeEnum: 'Activate', title: 'החזרת כרטיס לפעילות' },\r\n block: { name: 'block', number: 1, cardProcessTypeEnum: 'Block', title: 'חסימת כרטיס' },\r\n blockConfirm: { name: 'block-confirm', number: 1, cardProcessTypeEnum: 'Block', title: 'חסימת כרטיס' },\r\n contactless: { name: 'contactless', number: 4, cardProcessTypeEnum: 'Contactless', title: 'החלפת כרטיס ללא מגע' },\r\n\r\n };\r\n\r\n function getSetLastUpdate(request) {\r\n if (request != undefined && request != \"\") {\r\n _lastUpdate = request;\r\n }\r\n return _lastUpdate;\r\n }\r\n\r\n function getOperation(operation) {\r\n return _operation[operation];\r\n }\r\n\r\n var _blockReasonType = [{ caption: 'אבד', active: false, name: \"Lost\" }, { caption: 'נגנב', active: false, name: \"Stolen\" }];\r\n var _blockReasonTypeVirtualCard = [{ caption: 'הטלפון שלי אבד או נגנב', active: false, name: \"Device Lost\" }, { caption: 'ייתכן שמישהו נחשף לפרטי הכרטיס', active: false, name: \"Card Details Exposed\" }];\r\n\r\n\r\n\r\n var _steps = {\r\n block: [{ caption: '1. פרטי חסימה', active: false }, { caption: '2. אישור', active: false }, { caption: '3. סיכום', active: false }],\r\n defective: [{ caption: '1. בוחרים כרטיס ומאשרים', active: false }, { caption: '2. סיכום', active: false }],\r\n activate: [{ caption: '1. בוחרים כרטיס ומאשרים', active: false }, { caption: '2. סיכום', active: false }],\r\n contactless: [{ caption: '1. בוחרים כרטיס ומאשרים', active: false }, { caption: '2. סיכום', active: false }]\r\n };\r\n\r\n var _blockTypeEnum = {\r\n temp: { name: \"Temp\", isChosen: true },\r\n constant: { name: \"Constant\", isChosen: false }\r\n };\r\n\r\n\r\n\r\n var _userBlockCardDeatils = [];\r\n var _blockedCardDetails = [];\r\n var _userDeatils = null;\r\n var _currentCard = \"\";\r\n var _mobilePhone;\r\n var _datePickerValue = \"\";\r\n var _blockType = 0;\r\n var _countryCardDisappeared;\r\n var _cvv = \"\";\r\n var _responseBlockCardItems;\r\n var _isFromConfirm = false;\r\n var _isVirtualCard;\r\n\r\n\r\n function getSetIsVirtualCard(value) {\r\n if (value != undefined) {\r\n _isVirtualCard = value;\r\n }\r\n return _isVirtualCard;\r\n }\r\n\r\n\r\n function getSetUserDeatils(value) {\r\n if (value != undefined) {\r\n _userDeatils = value;\r\n }\r\n return _userDeatils;\r\n }\r\n\r\n function setGetCvv(value) {\r\n if (value != undefined) {\r\n _cvv = value;\r\n }\r\n return _cvv;\r\n }\r\n\r\n\r\n function getSteps(process, page) {\r\n\r\n\r\n switch (process.toLowerCase()) {\r\n case _operation.block.name.toLowerCase():\r\n return getActivePage(_steps.block, page);\r\n break;\r\n case _operation.defective.name.toLowerCase():\r\n case _operation.activate.name.toLowerCase():\r\n return getActivePage(_steps.defective, page);\r\n break;\r\n case _operation.contactless.name.toLowerCase(): \r\n return getActivePage(_steps.contactless, page);\r\n }\r\n }\r\n\r\n function getActivePage(stepToSend, page) {\r\n\r\n for (var i = 0; i < stepToSend.length; i++) {\r\n stepToSend[i].active = false;\r\n }\r\n\r\n stepToSend[page].active = true;\r\n return stepToSend;\r\n\r\n }\r\n\r\n\r\n function getSetMobilePhone() {\r\n return _mobilePhone;\r\n }\r\n\r\n function getCountryList(country) {\r\n var defer = $.Deferred();\r\n var url = 'app/blockCard/shared/country-picker.component/country-list.json';\r\n $.getJSON(url, function (d) {\r\n defer.resolve(d);\r\n })\r\n return defer.promise();\r\n }\r\n\r\n\r\n function setStatusCheckBox(index) {\r\n _checkBox[1] = index;\r\n }\r\n\r\n function setGetblockedCardDetails(blockCards) {\r\n if (blockCards != undefined) {\r\n _blockedCardDetails = blockCards;\r\n }\r\n return _blockedCardDetails\r\n }\r\n\r\n\r\n function isMatch(card) {\r\n //return response.BlockCardItems.indexOf(card.Id) > -1;\r\n return _responseBlockCardItems.BlockCardItems.indexOf(card.Id) > -1;\r\n }\r\n\r\n function getBlockedCardDetails(request) {\r\n var deferred = $q.defer();\r\n\r\n\r\n lobbyUiService.loader.show();\r\n connection.getBlockedCardDetails(request).then(function (response) {\r\n\r\n if (response.Response.Status.Succeeded) {\r\n _mobilePhone = response.MobilePhone;\r\n var creditArray = [];\r\n var cardsDictionary = {};\r\n\r\n creditArray = [];\r\n _responseBlockCardItems = response;\r\n\r\n for (var i = 0; i < appData.BankAccounts.length; i++) {\r\n var cardFilter = appData.BankAccounts[i].Cards.filter(isMatch);\r\n\r\n if (cardFilter.length > 0) {\r\n cardFilter.forEach(function (card) {\r\n cardsDictionary[card.Id] = card;\r\n })\r\n\r\n }\r\n }\r\n\r\n response.BlockCardItems.forEach(function (cardItem) {\r\n\r\n if (cardsDictionary[cardItem]) {\r\n creditArray.push(cardsDictionary[cardItem]);\r\n\r\n }\r\n })\r\n setGetblockedCardDetails(creditArray);\r\n //_blockedCardDetails.push(creditArray);\r\n deferred.resolve(creditArray);\r\n\r\n\r\n }\r\n else {\r\n\r\n //throw error\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n }, function (error) {\r\n //throw error\r\n googleAnalyticsService.trackPage('/vp/managecard/step3/no-cards-to-restore/');\r\n errorService.handleError(error, null, null, true);\r\n lobbyUiService.loader.hide();\r\n deferred.reject(error);\r\n\r\n });\r\n\r\n return deferred.promise;\r\n\r\n }\r\n\r\n\r\n\r\n function getLast4Digit(uniqId) {\r\n var blockCards = _blockedCardDetails;\r\n if (blockCards != undefined) {\r\n for (var i = 0; i < blockCards.length; i++) {\r\n\r\n if (blockCards[i].Id === uniqId) {\r\n return blockCards[i].LastFourDigits;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n\r\n }\r\n\r\n function getCustomerDetails(request) {\r\n\r\n\r\n var deferred = $q.defer();\r\n\r\n _currentCard = request.UniqueID;\r\n var result = getCustomerDeatilsFromCache(request.UniqueID);\r\n if (!result) {\r\n lobbyUiService.loader.show();\r\n connection.getCustomerDetails(request).then(function (response) {\r\n\r\n if (response.Response.Status.Succeeded) {\r\n deferred.resolve(response);\r\n response.uniqueID = request.UniqueID;\r\n\r\n _userBlockCardDeatils.push(response);\r\n }\r\n else {\r\n deferred.reject(response);\r\n //thorw error\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error, null, null, true);\r\n deferred.reject(error);\r\n\r\n });\r\n }\r\n else {\r\n deferred.resolve(result);\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n\r\n function getCustomerDeatilsFromCache(uniqueID) {\r\n\r\n for (var i = 0; i < _userBlockCardDeatils.length; i++) {\r\n if (_userBlockCardDeatils[i].uniqueID === uniqueID) {\r\n return _userBlockCardDeatils[i];\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function updateCardStatus(request) {\r\n\r\n\r\n var deferred = $q.defer();\r\n\r\n lobbyUiService.loader.show();\r\n getSetLastUpdate(request);\r\n\r\n connection.updateCardStatus(request).then(function (response) {\r\n\r\n\r\n if (response.Response.Status.Succeeded) {\r\n\r\n switch (request.CardProcessType.toLowerCase()) {\r\n case _operation.block.name.toLowerCase():\r\n lobbyUiService.go('dw.blockCardEnd', {});\r\n break;\r\n case _operation.defective.name.toLowerCase():\r\n lobbyUiService.go('dw.defectiveCardEnd', {});\r\n break;\r\n case _operation.activate.name.toLowerCase():\r\n lobbyUiService.go('dw.activateCardEnd', {});\r\n break;\r\n }\r\n\r\n\r\n\r\n\r\n deferred.resolve(response);\r\n }\r\n else {\r\n deferred.reject(false);\r\n //throw error!\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n }, function (error) {\r\n let currentCard = appData.BankAccounts.find(ba => ba.Cards.find(c => c.Id == request.UniqueID)).Cards.find(c => c.Id == request.UniqueID);\r\n if (!currentCard.IsVirtualCard) {\r\n errorService.handleError(error, null, null, true);\r\n }\r\n lobbyUiService.loader.hide();\r\n deferred.reject(error);\r\n\r\n });\r\n\r\n\r\n\r\n return deferred.promise;\r\n\r\n\r\n\r\n }\r\n\r\n function getCurrentCard() {\r\n return _currentCard;\r\n }\r\n\r\n function setCurrentCard(currentCard) {\r\n _currentCard = currentCard\r\n }\r\n\r\n function resetBlockType() {\r\n _blockTypeEnum = {\r\n temp: { name: \"Temp\", isChosen: true },\r\n constant: { name: \"Constant\", isChosen: false }\r\n };\r\n return _blockTypeEnum;\r\n }\r\n\r\n function setGetBlockType(value, isGetName) {\r\n if (value != undefined) {\r\n if (value === 1) {\r\n _analyticsBlockTypeTempConstant = \"Yes\";\r\n _blockTypeEnum.temp.isChosen = true;\r\n _blockTypeEnum.constant.isChosen = false;\r\n } else {\r\n _analyticsBlockTypeTempConstant = \"No\";\r\n _blockTypeEnum.temp.isChosen = false;\r\n _blockTypeEnum.constant.isChosen = true;\r\n }\r\n }\r\n\r\n if (isGetName) {\r\n if (_blockTypeEnum.temp.isChosen) {\r\n _analyticsBlockTypeTempConstant = \"Yes\";\r\n return _blockTypeEnum.temp.name;\r\n }\r\n else {\r\n _analyticsBlockTypeTempConstant = \"No\";\r\n return _blockTypeEnum.constant.name;\r\n }\r\n }\r\n\r\n return _blockTypeEnum;\r\n }\r\n\r\n function isFromConfirm(value) {\r\n if (value != undefined) {\r\n _isFromConfirm = value;\r\n }\r\n return _isFromConfirm;\r\n }\r\n\r\n function setGetDatePickerValue(value) {\r\n if (value != undefined) {\r\n _datePickerValue = value;\r\n try {\r\n var blockReason = _analyticsBlockTypeReason;\r\n googleAnalyticsService.trackPage('/vp/managecard/blockcard/step3/choose-date/?type=' + blockReason.name);\r\n }\r\n catch (ex) {\r\n console.log('googleAnalyticsService setGetDatePickerValue ex: ' + ex)\r\n }\r\n }\r\n return _datePickerValue;\r\n }\r\n\r\n function setGetContryPickerValue(value) {\r\n if (value != undefined) {\r\n _countryCardDisappeared = value;\r\n try {\r\n var blockReason = _analyticsBlockTypeReason;\r\n googleAnalyticsService.trackPage('/vp/managecard/blockcard/step2/choose-country/?type=' + blockReason.name);\r\n }\r\n catch (ex) {\r\n console.log('googleAnalyticsService setGetContryPickerValue ex: ' + ex)\r\n }\r\n }\r\n return _countryCardDisappeared;\r\n }\r\n\r\n function getSetBlockReasonType(value, isGetName) {\r\n if (value != undefined) {\r\n _analyticsBlockTypeReason = _blockReasonType[value];\r\n _blockReasonType[value].active = true;\r\n if (value > 0) {\r\n _blockReasonType[value - 1].active = false;\r\n } else {\r\n _blockReasonType[value + 1].active = false;\r\n }\r\n }\r\n if (isGetName) {\r\n if (_blockReasonType[0].active) {\r\n _analyticsBlockTypeReason = _blockReasonType[0];\r\n return _blockReasonType[0].name;\r\n }\r\n else {\r\n _analyticsBlockTypeReason = _blockReasonType[1];\r\n return _blockReasonType[1].name;\r\n }\r\n\r\n }\r\n\r\n\r\n return _blockReasonType;\r\n }\r\n\r\n function resetBlockReasonType() {\r\n _blockReasonType = [{ caption: 'אבד', active: false, name: \"Lost\" }, { caption: 'נגנב', active: false, name: \"Stolen\" }];\r\n return _blockReasonType;\r\n }\r\n\r\n function resetBlockReasonTypeForVistualCard() {\r\n _blockReasonTypeVirtualCard = [{ caption: 'הטלפון שלי אבד או נגנב', active: false, name: \"Device Lost\" }, { caption: 'ייתכן שמישהו נחשף לפרטי הכרטיס', active: false, name: \"Card Details Exposed\" }];\r\n return _blockReasonTypeVirtualCard;\r\n }\r\n\r\n function getSetBlockReasonTypeForVistualCard(index) {\r\n if (index != undefined) {\r\n _blockReasonTypeVirtualCard[index].active = true;\r\n if (index > 0) {\r\n _blockReasonTypeVirtualCard[index - 1].active = false;\r\n } else {\r\n _blockReasonTypeVirtualCard[index + 1].active = false;\r\n }\r\n }\r\n\r\n return _blockReasonTypeVirtualCard;\r\n }\r\n\r\n function updateAgain() {\r\n updateCardStatus(getSetLastUpdate());\r\n }\r\n\r\n function isLogin(state) {\r\n\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: state });\r\n return false;\r\n }\r\n\r\n return true;\r\n\r\n\r\n }\r\n\r\n function setAnchor(id) {\r\n\r\n $location.hash(id);\r\n $ionicScrollDelegate.anchorScroll();\r\n }\r\n\r\n function clearAnchor() {\r\n\r\n $location.hash(\"\");\r\n $ionicScrollDelegate.anchorScroll();\r\n }\r\n\r\n\r\n\r\n function getAnalyticsBlockTypeReason() {\r\n return _analyticsBlockTypeReason;\r\n }\r\n\r\n function getAnalyticsBlockTypeTempConstant() {\r\n return _analyticsBlockTypeTempConstant;\r\n }\r\n\r\n \r\n\r\n function checkCardCVV(request) {\r\n\r\n var deferred = $q.defer();\r\n setCurrentCard(request.UniqueID);\r\n\r\n\r\n\r\n\r\n lobbyUiService.loader.show();\r\n\r\n connection.checkCardCVV(request).then(function (response) {\r\n\r\n if (response.Response.Status.Succeeded) {\r\n deferred.resolve(response);\r\n response.uniqueID = request.UniqueID;\r\n\r\n _userBlockCardDeatils.push(response);\r\n }\r\n else {\r\n deferred.reject(response);\r\n //thorw error\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error, null, null, true);\r\n deferred.reject(error);\r\n\r\n });\r\n\r\n\r\n\r\n return deferred.promise;\r\n\r\n\r\n }\r\n\r\n function getCustomerDetailsWithoutServiceCache(request) {\r\n var deferred = $q.defer();\r\n _currentCard = request.UniqueID;\r\n lobbyUiService.loader.show();\r\n connection.getCustomerDetails(request).then(function (response) {\r\n\r\n if (response.Response.Status.Succeeded) {\r\n deferred.resolve(response);\r\n response.uniqueID = request.UniqueID;\r\n\r\n }\r\n else {\r\n deferred.reject(response);\r\n //thorw error\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error, null, null, true);\r\n deferred.reject(error);\r\n\r\n });\r\n \r\n \r\n return deferred.promise;\r\n }\r\n \r\n\r\n\r\n return {\r\n GetCustomerDetails: getCustomerDetails,\r\n GetBlockedCardDetails: getBlockedCardDetails,\r\n UserBlockCardDeatils: _userBlockCardDeatils,\r\n UpdateCardStatus: updateCardStatus,\r\n GetCurrentCard: getCurrentCard,\r\n GetLast4Digit: getLast4Digit,\r\n MobilePhone: _mobilePhone,\r\n GetSetMobilePhone: getSetMobilePhone,\r\n BlockReasonType: _blockReasonType,\r\n SetGetBlockType: setGetBlockType,\r\n SetStatusCheckBox: setStatusCheckBox,\r\n DatePickerValue: _datePickerValue,\r\n SetGetDatePickerValue: setGetDatePickerValue,\r\n GetCountryList: getCountryList,\r\n CountryCardDisappeared: _countryCardDisappeared,\r\n SetGetContryPickerValue: setGetContryPickerValue,\r\n GetSteps: getSteps,\r\n BlockType: _blockType,\r\n GetSetBlockReasonType: getSetBlockReasonType,\r\n OperationEnum: _operationEnum,\r\n GetOperation: getOperation,\r\n GetSetUserDeatils: getSetUserDeatils,\r\n ErrorText: _errorText,\r\n CheckCardCVV: checkCardCVV,\r\n UpdateAgain: updateAgain,\r\n GetSetLastUpdate: getSetLastUpdate,\r\n SetGetblockedCardDetails: setGetblockedCardDetails,\r\n IsLogin: isLogin,\r\n SetGetCvv: setGetCvv,\r\n IsFromConfirm: isFromConfirm,\r\n SetAnchor: setAnchor,\r\n AnalyticsBlockTypeReason: getAnalyticsBlockTypeReason,\r\n AnalyticsBlockTypeTempConstant: getAnalyticsBlockTypeTempConstant,\r\n ClearAnchor: clearAnchor,\r\n ResetBlockReasonType: resetBlockReasonType,\r\n ResetBlockReasonTypeForVistualCard: resetBlockReasonTypeForVistualCard,\r\n ResetBlockType: resetBlockType,\r\n getCustomerDetailsWithoutServiceCache: getCustomerDetailsWithoutServiceCache,\r\n getSetBlockReasonTypeForVistualCard: getSetBlockReasonTypeForVistualCard,\r\n getSetIsVirtualCard: getSetIsVirtualCard\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('blockCard')\r\n .controller('blockcardCtrl', blockcardCtrl);\r\n\r\n blockcardCtrl.$inject = [\r\n 'connection', 'appData'\r\n ];\r\n\r\n function blockcardCtrl(connection, appData) {\r\n \r\n\r\n\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('blockCard')\r\n .controller('defectiveCtrl', defectiveCtrl);\r\n\r\n defectiveCtrl.$inject = [\r\n 'lobbyUiService', 'blockCardService', '$timeout', 'appData', 'lobbyCommService', '$sce', 'errorService', 'googleAnalyticsService', '$interval', '$stateParams', 'connection', 'dataService'\r\n ];\r\n\r\n function defectiveCtrl(lobbyUiService, blockCardService, $timeout, appData, lobbyCommService, $sce, errorService, googleAnalyticsService, $interval, $stateParams, connection, dataService) {\r\n\r\n var vm = this;\r\n vm.isDisable = true;\r\n var connectAuthRes = null;\r\n\r\n initLoginType();\r\n\r\n if (blockCardService.IsLogin('dw.defectiveCard')) {\r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.DEF);\r\n vm.title = vm.operation.title;\r\n vm.isShowRegulation = false;\r\n vm.isConfimRegulation = false;\r\n vm.isProceesEnd = false;\r\n vm.isConfimRegulation = true;\r\n vm.uniqueIDChosen = 0;\r\n vm.fullName = appData.CustomerInfo.FirstName + \" \" + appData.CustomerInfo.LastName;\r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.DEF);\r\n vm.steps = blockCardService.GetSteps(blockCardService.OperationEnum.DEF, 0);//defective, page 1\r\n googleAnalyticsService.trackPage('/vp/managecard/damagecard/step1/select_card/');\r\n getCards();\r\n }\r\n\r\n vm.change = function (uniqueIDChosen) {\r\n var req = {};\r\n req.UniqueID = uniqueIDChosen;\r\n\r\n req.CardProcessType = blockCardService.OperationEnum.DEF;\r\n //vm.uniqueIDChosen = uniqueIDChosen;\r\n blockCardService.GetCustomerDetails(req).then(function (response) {\r\n vm.userDeatils = response;\r\n vm.isDisable = false;\r\n\r\n if (vm.cardsAddressUpdated && vm.cardsAddressUpdated.includes(response.uniqueID)) {\r\n vm.userDeatils.Address = vm.newAddressUpdated;\r\n }\r\n blockCardService.GetSetUserDeatils(vm.userDeatils);\r\n\r\n });\r\n };\r\n\r\n vm.confirm = function () {\r\n updateCard();\r\n };\r\n\r\n vm.updateAddress = function () {\r\n const idNumType = appData.CustomerInfo.IdNumType;\r\n\r\n if (idNumType === \"51\") {\r\n passportPopup();\r\n } else {\r\n checkLoginType();\r\n }\r\n }\r\n\r\n function updateCard() {\r\n\r\n var req = {};\r\n req.UniqueID = blockCardService.GetCurrentCard();\r\n req.PhoneNum = appData.CustomerInfo.Phone;\r\n req.CardProcessType = vm.operation.name; //Defective\r\n //req.IsProcessCompleted = true;\r\n\r\n blockCardService.UpdateCardStatus(req).then(function (response) {\r\n googleAnalyticsService.trackPage('/vp/managecard/damagecard/step2/success/');\r\n\r\n }, function (error) {\r\n //throw erorr;\r\n // errorService.handleError(error, vm.confirm);\r\n });\r\n\r\n }\r\n\r\n function getCards() {\r\n /*getCards*/\r\n var req = {};\r\n req.CardProcessType = vm.operation.name;\r\n vm.cards = [];\r\n blockCardService.GetBlockedCardDetails(req).then(function (response) {\r\n vm.cards = response;\r\n var isConfirm = blockCardService.IsFromConfirm();\r\n\r\n if (isConfirm) {\r\n vm.uniqueId = blockCardService.GetSetUserDeatils().uniqueID;\r\n }\r\n else if ($stateParams.updateAddressRedirect) {\r\n var updateAddressRedirect = angular.fromJson($stateParams.updateAddressRedirect);\r\n vm.uniqueId = updateAddressRedirect.currentCardUid;\r\n vm.newAddressUpdated = updateAddressRedirect.newAddressUpdated;\r\n vm.cardsAddressUpdated = updateAddressRedirect.cardsAddressUpdated;\r\n }\r\n else {\r\n vm.uniqueId = vm.cards[0].Id;\r\n }\r\n\r\n var obj = {};\r\n obj.uniqueIDChosen = vm.uniqueId;\r\n vm.change(vm.uniqueId);\r\n\r\n }, function (error) {\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n function checkLoginType() {\r\n lobbyUiService.loader.show();\r\n if (connectAuthRes !== null) {\r\n lobbyUiService.loader.hide();\r\n var loginType = connectAuthRes.loginType;\r\n\r\n if (loginType == 0) {\r\n otpPopup();\r\n } else if (loginType == 1) {\r\n newDesignPopup();\r\n }\r\n\r\n } else {\r\n setTimeout(() => {\r\n vm.checkLoginType();\r\n }, 100);\r\n }\r\n }\r\n\r\n function otpPopup() {\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/otp-popup.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"להזדהות מחדש\",\r\n type: \"button-positive\",\r\n onTap: function () {\r\n connection.setToken(null);\r\n dataService.sessionManager.clear(\"authToken\");\r\n lobbyUiService.go(\"dw.login\", { nextPage: \"dw.defectiveCard\", type: 2 }, { location: \"replace\" });\r\n }\r\n }\r\n );\r\n lobbyUiService.popup.messageText(popup.template, null, null, null, null, null, popup.btns, true);\r\n };\r\n\r\n function newDesignPopup() {\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/new-design-popup.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"לעדכון הכתובת\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n lobbyUiService.go(\"dw.update-address\", { updateAddressRedirect: '{ \"redirectedFrom\": \"dw.defectiveCard\", \"currentCardUid\": \"' + blockCardService.GetCurrentCard() + '\" }' });\r\n }\r\n });\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, true);\r\n }\r\n\r\n function passportPopup() {\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/passport-popup.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"חזרה להחלפת הכרטיס\",\r\n type: \"button-positive\",\r\n onTap: function () {\r\n }\r\n }\r\n );\r\n lobbyUiService.popup.messageText(popup.template, null, null, null, null, null, popup.btns, true);\r\n }\r\n\r\n function initLoginType() {\r\n connection.getConnectAuth().then(function (res) {\r\n connectAuthRes = res;\r\n },\r\n function (err) {\r\n connectAuthRes = err;\r\n }\r\n )\r\n }\r\n }\r\n\r\n})(window, window.angular);\n\r\n(function () {\r\n 'use strict'\r\n\r\n /*\r\n confirmConditionsController.$inject = [\r\n 'blockCardService', 'lobbyUiService', 'appData', 'googleAnalyticsService'\r\n ];*/\r\n\r\n function confirmConditionsController(blockCardService, lobbyUiService, appData, googleAnalyticsService) {\r\n\r\n var vmConfirmController = this;\r\n vmConfirmController.defective = false;\r\n vmConfirmController.activate = false;\r\n vmConfirmController.block = false;\r\n vmConfirmController.isConfirmCheckBox = true;\r\n vmConfirmController.blockType = blockCardService.SetGetBlockType();\r\n vmConfirmController.blockType.temp.src = \"content/images/Radio_circle_dot.svg\";\r\n vmConfirmController.blockType.constant.src = \"content/images/Radio_circle.svg\";\r\n vmConfirmController.isVirtualCard = blockCardService.getSetIsVirtualCard();\r\n //content/images/Radio_circle_dot.svg\r\n if (vmConfirmController.operation && vmConfirmController.operation.name != \"\") {\r\n vmConfirmController.operationSrc = \"app/blockCard/shared/confirm-conditions.component/confirm-conditions-\" + vmConfirmController.operation.name + \".html\";\r\n }\r\n \r\n vmConfirmController.ShowRegulationToUser = function () {\r\n\r\n vmConfirmController.showRegulation(true);\r\n }\r\n vmConfirmController.cardChange = function () {\r\n var obj = {};\r\n obj.uniqueIDChosen = vmChooseTicket.uniqueIDChosen;\r\n vmChooseTicket.onChangeCard(obj);\r\n };\r\n\r\n \r\n\r\n\r\n var typeOfBlock = blockCardService.SetGetBlockType();\r\n \r\n if (typeOfBlock.temp.isChosen) {\r\n changeTypeOfBlock(1);\r\n }\r\n else {\r\n changeTypeOfBlock(2);\r\n }\r\n\r\n \r\n\r\n\r\n\r\n vmConfirmController.markAnswer = function (markItem) {\r\n \r\n \r\n \r\n \r\n if (markItem === 1) {\r\n changeTypeOfBlock(1);\r\n \r\n } else {\r\n changeTypeOfBlock(2);\r\n \r\n }\r\n \r\n \r\n\r\n };\r\n\r\n\r\n function changeTypeOfBlock(markItem) {\r\n\r\n if (markItem === 1) {\r\n vmConfirmController.blockType.temp.src = \"content/images/Radio_circle_dot.svg\";\r\n vmConfirmController.blockType.constant.src = \"content/images/Radio_circle.svg\";\r\n } else {\r\n\r\n vmConfirmController.blockType.temp.src = \"content/images/Radio_circle.svg\";\r\n vmConfirmController.blockType.constant.src = \"content/images/Radio_circle_dot.svg\";\r\n }\r\n\r\n blockCardService.SetGetBlockType(markItem);\r\n }\r\n\r\n\r\n\r\n\r\n vmConfirmController.test = function () {\r\n vmConfirmController.userDeatils.MobilePhone = vmConfirmController.isS;\r\n };\r\n\r\n\r\n \r\n\r\n vmConfirmController.openPopUpUpdatePhone = function () {\r\n ga('send', 'event', { eventCategory: 'חסימת כרטיס', eventAction: 'תנאי חסימה', eventLabel: 'עדכון טלפון' })\r\n googleAnalyticsService.trackPage('/vp/managecard/popup/missing-phone/');\r\n var popup = {};\r\n //popup.text = '
    עדכון מספר טלפון בו ניתן ליצור עמך קשר:
    מספר הטלפון ישמש ליצירת קשר במידה ונדרש, ולא יעודכן ב-cal.';\r\n popup.template = 'app/blockCard/shared/templates/edit-phone-popup.html';\r\n\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"חזור למסך\",\r\n type: '',\r\n onTap: function () {\r\n googleAnalyticsService.trackPage('/vp/managecard/popup/missing-phone/goback/');\r\n }\r\n });\r\n\r\n popup.btns.push(\r\n {\r\n text: \"עדכן\",\r\n type: 'button-positive',\r\n onTap: function (e) {\r\n //ng model didnt work\r\n angular.element(\"#error-phone-text\").hide();\r\n var text = angular.element(\"#newMobilePhoneText\").val().trim();\r\n\r\n if (text.length < 8 ) {\r\n angular.element(\"#error-phone-text\").show();\r\n e.preventDefault();\r\n return false;\r\n }\r\n else { \r\n vmConfirmController.userDeatils.MobilePhone = text;\r\n vmConfirmController.mobilePhone = text;\r\n googleAnalyticsService.trackPage('/vp/managecard/popup/missing-phone/phone-updated/');\r\n }\r\n \r\n }\r\n });\r\n\r\n\r\n //lobbyUiService.popup.alert(popup.text, null, null, null, popup.btns);\r\n\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, true);\r\n };\r\n\r\n }\r\n\r\n \r\n angular.module('blockCard')\r\n .directive('confirmConditions', function () {\r\n return {\r\n //require: ['^^myTabs', 'ngModel'],\r\n restrict: 'E',\r\n controllerAs: 'vmConfirmController',\r\n controller: confirmConditionsController,\r\n bindToController: true,\r\n transclude: true, \r\n scope: {\r\n operation: '=',\r\n userDeatils: '=',\r\n isConfimRegulation: '=isConfimRegulation',\r\n onMoveToNextStep: '&onMoveToNextStep',\r\n showRegulation: '&showRegulation',\r\n mobilePhone: '=mobilePhone'\r\n //blockType: '=blockType'\r\n\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n /*var tabsCtrl = controllers[0],\r\n modelCtrl = controllers[1];\r\n de\r\n tabsCtrl.addPane(scope);*/\r\n\r\n },\r\n templateUrl: 'app/blockCard/shared/confirm-conditions.component/confirm-conditions.html'\r\n };\r\n });\r\n})(window, window.angular);\r\n\r\n\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('blockCard')\r\n .controller('defectiveCardEndCtrl', defectiveCardEndCtrl);\r\n\r\n defectiveCardEndCtrl.$inject =[\r\n '$scope', 'lobbyUiService', 'blockCardService', '$rootScope'\r\n ];\r\n\r\n function defectiveCardEndCtrl($scope, lobbyUiService, blockCardService, $rootScope) {\r\n\r\n var vm = this;\r\n\r\n\r\n vm.backToHomePage = function () {\r\n lobbyUiService.go('dw.lobby');\r\n };\r\n \r\n /*\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.defective' });\r\n return false;\r\n }*/\r\n \r\n if (blockCardService.IsLogin('dw.defective')) {\r\n var userDeatils = blockCardService.GetSetUserDeatils();\r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.DEF);\r\n vm.title = vm.operation.title;\r\n vm.steps = blockCardService.GetSteps(blockCardService.OperationEnum.DEF, 1);\r\n\r\n vm.params = [blockCardService.GetLast4Digit(userDeatils.uniqueID), userDeatils.DaysOfDelivery];\r\n }\r\n \r\n \r\n\r\n \r\n \r\n \r\n $rootScope.$on('$stateChangeStart', function (event, next, toParams, fromState, fromParams) {\r\n if (next.name === \"dw.defectiveCard\" && fromState.name == \"dw.defectiveCardEnd\") {\r\n event.preventDefault();\r\n lobbyUiService.go('dw.block-card-home');\r\n }\r\n });\r\n\r\n \r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n viewData.enableBack = true;\r\n });\r\n\r\n\r\n }\r\n\r\n})(window, window.angular);\n\r\n\r\n\r\n(function () {\r\n 'use strict'\r\n\r\n blockCardEndCompController.$inject = [\r\n 'connection', 'appData', 'blockCardService', '$scope', 'lobbyUiService'\r\n ];\r\n\r\n function blockCardEndCompController(connection, appData, blockCardService, $scope, lobbyUiService) {\r\n ga('set', 'page', '/vp/managecard/block-virtual-card/success');\r\n ga('send', 'pageview');\r\n\r\n var vmblockCardEnd = this;\r\n vmblockCardEnd.operationSrc = \"app/blockCard/shared/block-card-end.component/block-card-end.component-\" + vmblockCardEnd.operation.name + \".html\";\r\n vmblockCardEnd.isNotIsrael = false;\r\n vmblockCardEnd.isVirtualCard = blockCardService.getSetIsVirtualCard();\r\n \r\n if (blockCardService.SetGetContryPickerValue() !=\"ישראל\") {\r\n vmblockCardEnd.isNotIsrael = true;\r\n }\r\n\r\n vmblockCardEnd.backToHomePage = function () {\r\n lobbyUiService.go('dw.lobby');\r\n };\r\n\r\n vmblockCardEnd.goToExplainationPage = function () {\r\n ga('send', 'event', { eventCategory: 'חסימת כרטיס', eventAction: 'הצלחה', eventLabel: 'דף הסבר' });\r\n window.location.href = 'https://www.cal-online.co.il/about/calservices/lost-or-stolen/';\r\n }\r\n \r\n // blockCardService.SetGetBlockType().constant.isChosen\r\n vmblockCardEnd.isConstant = blockCardService.SetGetBlockType().constant.isChosen;\r\n\r\n // blockCardService.SetGetContryPickerValue\r\n }\r\n\r\n\r\n angular.module('blockCard')\r\n .directive('blockCardEndComp', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmblockCardEnd',\r\n controller: blockCardEndCompController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n operation: '=',\r\n params: '=',\r\n isVirtualCard: '=',\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n \r\n },\r\n templateUrl: 'app/blockCard/shared/block-card-end.component/block-card-end.component.html'\r\n };\r\n });\r\n})(window, window.angular);\r\n\r\n\r\n\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('blockCard')\r\n .controller('blockCtrl', blockCtrl);\r\n\r\n blockCtrl.$inject = [\r\n 'lobbyUiService', 'blockCardService', '$timeout', 'appData', 'lobbyCommService', '$sce', 'errorService', '$scope', '$rootScope', '$ionicScrollDelegate', '$location', '$state', '$stateParams'\r\n ];\r\n\r\n\r\n function blockCtrl(lobbyUiService, blockCardService, $timeout, appData, lobbyCommService, $sce, errorService, $scope, $rootScope, $ionicScrollDelegate, $location, $state, $stateParams) {\r\n\r\n var vm = this;\r\n vm.countryPickerValue = \"\";\r\n vm.blockReasonEmpty = \"\";\r\n vm.countryEmpty = \"\";\r\n vm.dateEmpty = \"\";\r\n vm.mobilePhone = \"\";\r\n vm.uniqueId = \"\";\r\n vm.isDisable = true;\r\n vm.datePickerValue = \"\";\r\n \r\n \r\n\r\n\r\n \r\n\r\n\r\n \r\n\r\n $rootScope.$on('$stateChangeStart', function (event, next, toParams, fromState, fromParams) {\r\n if (fromState.name == \"dw.blockCardConfirm\" && next.name === \"dw.blockCard\") {\r\n //var userDeatils = blockCardService.GetSetUserDeatils();\r\n blockCardService.IsFromConfirm(true);\r\n }\r\n else if (next.name === \"dw.blockCard\" || next.name === \"dw.defectiveCard\" || next.name === \"dw.activateCard\") {\r\n blockCardService.IsFromConfirm(false);\r\n }\r\n });\r\n\r\n\r\n //google analytics\r\n //ga('send', 'pageview', \"/vp/managecard/step1/blockcard-options/\");\r\n\r\n /*\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.blockCard' });\r\n return false;\r\n }*/\r\n if (blockCardService.IsLogin('dw.blockCard')) {\r\n getCards();\r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.BLOCK);\r\n vm.title = vm.operation.title;\r\n vm.steps = blockCardService.GetSteps(vm.operation.name, 0);//block, page 1\r\n vm.firstName = appData.CustomerInfo.FirstName;\r\n blockCardService.ResetBlockReasonTypeForVistualCard();\r\n }\r\n\r\n\r\n vm.onSelectedCountry = function (country) {\r\n if (country === undefined) {\r\n blockCardService.SetGetContryPickerValue(\"\");\r\n }\r\n else {\r\n blockCardService.SetGetContryPickerValue(country);\r\n }\r\n }\r\n\r\n \r\n /*continue to next page block-confirm*/\r\n vm.continue = function () {\r\n vm.blockReasonEmpty = \"\";\r\n vm.countryEmpty = \"\";\r\n vm.dateEmpty = \"\";\r\n var countryText = blockCardService.SetGetContryPickerValue();\r\n var blockReason = vm.isVirtualCard ? blockCardService.getSetBlockReasonTypeForVistualCard() : blockCardService.GetSetBlockReasonType();\r\n var isOk = true;\r\n\r\n if (!blockReason[0].active && !blockReason[1].active) {\r\n vm.blockReasonEmpty = vm.isVirtualCard ? blockCardService.ErrorText.blockReasonVirtualCard : blockCardService.ErrorText.blockReason;\r\n isOk = false;\r\n blockCardService.SetAnchor('cardReasontype');\r\n }\r\n\r\n if (!vm.isVirtualCard) {\r\n if (countryText === undefined || countryText === \"\") {\r\n vm.countryEmpty = blockCardService.ErrorText.country;\r\n isOk = false;\r\n blockCardService.SetAnchor('countryAutoComplete');\r\n }\r\n if (!angular.isDate(vm.datePickerValue)) {\r\n vm.dateEmpty = blockCardService.ErrorText.dateInvaid;\r\n isOk = false;\r\n blockCardService.SetAnchor('datePicker');\r\n }\r\n if (isOk) {\r\n blockCardService.SetGetDatePickerValue(vm.datePickerValue);\r\n blockCardService.ClearAnchor();\r\n lobbyUiService.go('dw.blockCardConfirm', {});\r\n\r\n }\r\n }\r\n\r\n else if (blockReason[0].active + blockReason[1].active == 1) {\r\n if (blockReason[1].active) {\r\n ga('send', 'event', { eventCategory: 'חסימת כרטיס', eventAction: 'בחירת כרטיס', eventLabel: 'כרטיס וירטואלי – פרטים' });\r\n lobbyUiService.go('dw.blockCardConfirm', {});\r\n }\r\n else {\r\n ga('send', 'event', { eventCategory: 'חסימת כרטיס', eventAction: 'בחירת כרטיס', eventLabel: 'כרטיס וירטואלי – מכשיר' });\r\n lobbyUiService.go('dw.blockCardContactUs', {});\r\n }\r\n }\r\n\r\n\r\n\r\n };\r\n\r\n /* call from directive checkbox-designed when user change the chosen */\r\n vm.onChangeCheckBox = function (index) {\r\n index = index++;\r\n\r\n if (vm.isVirtualCard) {\r\n blockCardService.getSetBlockReasonTypeForVistualCard(index);\r\n }\r\n else {\r\n blockCardService.GetSetBlockReasonType(index);\r\n }\r\n };\r\n \r\n /* call from directvie choose-ticket as deafult take the first card */\r\n vm.change = function (uniqueIDChosen) {\r\n var req = {\r\n };\r\n req.UniqueID = uniqueIDChosen;\r\n req.CardProcessType = blockCardService.OperationEnum.BLOCK;\r\n //vm.uniqueIDChosen = uniqueIDChosen;\r\n blockCardService.GetCustomerDetails(req).then(function (response) {\r\n vm.userDeatils = response;\r\n vm.isDisable = false;\r\n //vm.userDeatils.uniqueIDChosen = uniqueIDChosen;\r\n blockCardService.GetSetUserDeatils(vm.userDeatils);\r\n vm.selectedCard = vm.cards.filter(c => c.Id == response.uniqueID)[0];\r\n vm.isVirtualCard = vm.selectedCard.IsVirtualCard;\r\n blockCardService.getSetIsVirtualCard(vm.isVirtualCard);\r\n if (vm.isVirtualCard) {\r\n vm.checkboxItems = blockCardService.getSetBlockReasonTypeForVistualCard();\r\n blockCardService.SetGetBlockType(0); // constant block\r\n }\r\n else if (blockCardService.IsFromConfirm()) {\r\n vm.checkboxItems = blockCardService.GetSetBlockReasonType();\r\n vm.countryPickerValue = blockCardService.SetGetContryPickerValue();\r\n vm.datePickerValue = blockCardService.SetGetDatePickerValue();\r\n }\r\n else {\r\n vm.checkboxItems = blockCardService.ResetBlockReasonType();\r\n vm.countryPickerValue = \"\";\r\n blockCardService.ResetBlockType();\r\n }\r\n\r\n }, function (error) {\r\n\r\n });\r\n\r\n\r\n };\r\n\r\n\r\n function getCards() {\r\n /*getCards*/\r\n var req = {};\r\n\r\n req.CardProcessType = blockCardService.OperationEnum.BLOCK;\r\n vm.cards = [];\r\n blockCardService.GetBlockedCardDetails(req).then(function (response) {\r\n vm.cards = response;\r\n var isConfirm = blockCardService.IsFromConfirm();\r\n\r\n if (isConfirm) {\r\n vm.uniqueId = blockCardService.GetSetUserDeatils().uniqueID;\r\n }\r\n else {\r\n vm.uniqueId = vm.cards[0].Id;\r\n }\r\n\r\n var obj = {};\r\n obj.uniqueIDChosen = vm.uniqueId;\r\n vm.change(vm.uniqueId);\r\n\r\n }, function (error) {\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n function showPopUp(text) {\r\n\r\n var popup = {\r\n };\r\n popup.text = text;\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"יציאה\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n }\r\n });\r\n\r\n\r\n lobbyUiService.popup.alert(popup.text, null, null, null, popup.btns);\r\n };\r\n\r\n\r\n }//lobbyUiService.message\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('blockCard')\r\n .controller('blockConfirmCtrl', blockConfirmCtrl);\r\n\r\n blockConfirmCtrl.$inject = [\r\n 'lobbyUiService', 'blockCardService', '$timeout', 'appData', 'lobbyCommService', '$sce', 'errorService', 'googleAnalyticsService', '$stateParams', 'connection', 'dataService'\r\n ];\r\n\r\n function blockConfirmCtrl(lobbyUiService, blockCardService, $timeout, appData, lobbyCommService, $sce, errorService, googleAnalyticsService, $stateParams, connection, dataService) {\r\n ga('set', 'page', '/vp/managecard/block-virtual-card/terms');\r\n ga('send', 'pageview');\r\n\r\n var userDeatils = blockCardService.GetSetUserDeatils();\r\n var vm = this;\r\n vm.mobilePhone = \"\";\r\n\r\n var connectAuthRes = null;\r\n\r\n initLoginType();\r\n\r\n if (blockCardService.IsLogin('dw.blockCard')) {\r\n var userDeatils = blockCardService.GetSetUserDeatils();\r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.BlockConfirm);\r\n vm.title = vm.operation.title;\r\n vm.steps = blockCardService.GetSteps(vm.operation.cardProcessTypeEnum, 1);//block, page 2\r\n vm.firstName = appData.CustomerInfo.FirstName;\r\n vm.userDeatils = blockCardService.GetSetUserDeatils();\r\n vm.userDeatils.MobilePhone = blockCardService.GetSetMobilePhone();\r\n vm.uniqueID = blockCardService.GetLast4Digit(userDeatils.uniqueID);\r\n vm.blockType = blockCardService.SetGetBlockType();\r\n vm.isVirtualCard = blockCardService.getSetIsVirtualCard();\r\n\r\n if (!vm.isVirtualCard) {\r\n googleAnalyticsService.trackPage('/vp/managecard/blockcard/step4/Summary/?type=' + blockCardService.AnalyticsBlockTypeReason + '&possible-recover=' + blockCardService.AnalyticsBlockTypeTempConstant);\r\n }\r\n\r\n if ($stateParams.updateAddressRedirect) {\r\n var updateAddressRedirect = angular.fromJson($stateParams.updateAddressRedirect);\r\n vm.cardUniqueID = updateAddressRedirect.currentCardUid;\r\n vm.uniqueID = blockCardService.GetLast4Digit(vm.cardUniqueID);\r\n vm.newAddressUpdated = updateAddressRedirect.newAddressUpdated;\r\n vm.cardsAddressUpdated = updateAddressRedirect.cardsAddressUpdated;\r\n\r\n if (vm.cardsAddressUpdated && vm.cardsAddressUpdated.includes(vm.cardUniqueID)) {\r\n vm.userDeatils.Address = vm.newAddressUpdated;\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n\r\n vm.confirm = function (isConfirm) {\r\n ga('send', 'event', { eventCategory: 'חסימת כרטיס', eventAction: 'תנאי חסימה', eventLabel: 'אישור חסימה' });\r\n\r\n if (isConfirm) {\r\n\r\n var req = {};\r\n req.UniqueID = blockCardService.GetCurrentCard();\r\n if (vm.mobilePhone != \"\") {\r\n req.PhoneNum = vm.mobilePhone;\r\n }\r\n else {\r\n req.PhoneNum = appData.CustomerInfo.Phone;\r\n }\r\n req.CardProcessType = vm.operation.cardProcessTypeEnum; //Block\r\n req.BlockType = vm.isVirtualCard ? blockCardService.SetGetBlockType(2, true) : blockCardService.SetGetBlockType(undefined, true);//temp or constant\r\n req.BlockReasonType = blockCardService.GetSetBlockReasonType(undefined, true);\r\n req.DateCardDisappeared = blockCardService.SetGetDatePickerValue();\r\n //req.DateCardDisappeared = req.DateCardDisappeared.getDate() + \"/\" + req.DateCardDisappeared.getMonth() + \"/\" + req.DateCardDisappeared.getFullYear();\r\n var countryPickerValue = blockCardService.SetGetContryPickerValue();\r\n req.CountryCardDisappeared = countryPickerValue ? countryPickerValue : \"N/A\";\r\n //req.IsProcessCompleted = true;\r\n\r\n updateCard(req);\r\n\r\n }\r\n\r\n else {\r\n showPopUp();\r\n }\r\n\r\n };\r\n\r\n function updateCard(req) {\r\n\r\n blockCardService.UpdateCardStatus(req).then(function (response) {\r\n\r\n if (response.Response.Status.Succeeded) {\r\n vm.isProceesEnd = true;\r\n\r\n if (!vm.isVirtualCard) {\r\n googleAnalyticsService.trackPage('/vp/managecard/blockcard/step5/success/?type=' + blockCardService.AnalyticsBlockTypeReason + '&possible-recover=' + blockCardService.AnalyticsBlockTypeTempConstant);\r\n } \r\n\r\n } else {\r\n\r\n //throw error\r\n }\r\n\r\n\r\n }, function (error) {\r\n\r\n showUpdateCardFailedPopup();\r\n //errorService.handleError(error, vm.confirm);\r\n });\r\n }\r\n\r\n function showPopUp() {\r\n googleAnalyticsService.trackPage('pageview', '/vp/managecard/popup/missing-address-error/');\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/address-wrong-block-popup.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"חזור למסך\",\r\n type: '',\r\n onTap: function () {\r\n\r\n }\r\n });\r\n\r\n popup.btns.push(\r\n {\r\n text: \"יציאה\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n\r\n lobbyUiService.go('dw.block-card-home');\r\n\r\n }\r\n });\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, true);\r\n };\r\n\r\n vm.goToChangeAddress = function () {\r\n ga('send', 'event', { eventCategory: 'חסימת כרטיס', eventAction: 'תנאי חסימה', eventLabel: 'עדכון כתובת' });\r\n const idNumType = appData.CustomerInfo.IdNumType;\r\n\r\n if (idNumType === \"51\") {\r\n passportPopup();\r\n } else {\r\n checkLoginType();\r\n }\r\n }\r\n\r\n function passportPopup() {\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/passport-popup.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"חזרה להחלפת הכרטיס\",\r\n type: \"button-positive\",\r\n onTap: function () {\r\n }\r\n }\r\n );\r\n lobbyUiService.popup.messageText(popup.template, null, null, null, null, null, popup.btns, true);\r\n }\r\n\r\n function checkLoginType() {\r\n lobbyUiService.loader.show();\r\n if (connectAuthRes !== null) {\r\n lobbyUiService.loader.hide();\r\n var loginType = connectAuthRes.loginType;\r\n\r\n if (loginType == 0) {\r\n otpPopup();\r\n } else if (loginType == 1) {\r\n newDesignPopup();\r\n }\r\n\r\n } else {\r\n setTimeout(() => {\r\n vm.checkLoginType();\r\n }, 100);\r\n }\r\n }\r\n\r\n function otpPopup() {\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/otp-popup.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"להזדהות מחדש\",\r\n type: \"button-positive\",\r\n onTap: function () {\r\n connection.setToken(null);\r\n dataService.sessionManager.clear(\"authToken\");\r\n lobbyUiService.go(\"dw.login\", { nextPage: \"dw.blockCardConfirm\", type: 2 }, { location: \"replace\" });\r\n }\r\n }\r\n );\r\n lobbyUiService.popup.messageText(popup.template, null, null, null, null, null, popup.btns, true);\r\n };\r\n\r\n function newDesignPopup() {\r\n var selectedCardUid = blockCardService.GetCurrentCard();\r\n\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/new-design-popup.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"לעדכון הכתובת\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n lobbyUiService.go(\"dw.update-address\", { updateAddressRedirect: '{ \"redirectedFrom\": \"dw.blockCardConfirm\", \"currentCardUid\": \"' + selectedCardUid + '\" }' });\r\n }\r\n });\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, true);\r\n };\r\n\r\n function showUpdateCardFailedPopup() {\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/update-card-status-block-popup.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"אני רוצה לנסות שוב\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n lobbyUiService.go('dw.blockCard');\r\n }\r\n });\r\n popup.btns.push(\r\n {\r\n text: \"אנסה אחר כך\",\r\n type: 'button-link',\r\n onTap: function () {\r\n lobbyUiService.go(\"dw.lobby\");\r\n }\r\n });\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, true);\r\n }\r\n\r\n function initLoginType() {\r\n connection.getConnectAuth().then(function (res) {\r\n connectAuthRes = res;\r\n },\r\n function (err) {\r\n connectAuthRes = err;\r\n }\r\n )\r\n }\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('blockCard')\r\n .controller('blockCardEndCtrl', blockCardEndCtrl);\r\n\r\n blockCardEndCtrl.$inject = [\r\n 'lobbyUiService', 'blockCardService', '$scope', '$rootScope'\r\n ];\r\n\r\n function blockCardEndCtrl(lobbyUiService, blockCardService, $scope, $rootScope) {\r\n \r\n\r\n var vm = this;\r\n \r\n\r\n vm.backToHomePage = function () {\r\n lobbyUiService.go('dw.lobby');\r\n };\r\n\r\n if (blockCardService.IsLogin('dw.blockCard')) {\r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.BLOCK);\r\n var userDeatils = blockCardService.GetSetUserDeatils();\r\n vm.title = vm.operation.title;\r\n vm.steps = blockCardService.GetSteps(blockCardService.OperationEnum.BLOCK, 2);//block, page 3\r\n vm.params = [blockCardService.GetLast4Digit(userDeatils.uniqueID), userDeatils.DaysOfDelivery];\r\n }\r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n viewData.enableBack = true;\r\n });\r\n\r\n $rootScope.$on('$stateChangeStart', function (event, next, toParams, fromState, fromParams) {\r\n if (next.name === \"dw.blockCardConfirm\" && fromState.name == \"dw.blockCardEnd\") {\r\n event.preventDefault(); \r\n \r\n\r\n lobbyUiService.go('dw.block-card-home');\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('blockCard')\r\n .controller('blockContactUsCtrl', blockContactUsCtrl);\r\n\r\n blockContactUsCtrl.$inject = [];\r\n\r\n function blockContactUsCtrl() {\r\n var vm = this;\r\n\r\n ga('set', 'page', '/vp/managecard/block-virtual-card/service-required');\r\n ga('send', 'pageview');\r\n\r\n\r\n vm.phoneCustomerService = function () {\r\n\r\n ga('send', 'event', { eventCategory: 'חסימת כרטיס', eventAction: 'נדרש נציג', eventLabel: 'חיוג לנציג' });\r\n\r\n document.location.href = 'tel:035723666';\r\n }\r\n\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('blockCard')\r\n .controller('activateCtrl', activateCtrl);\r\n\r\n activateCtrl.$inject = [\r\n 'lobbyUiService', 'blockCardService', '$timeout', 'appData', 'lobbyCommService', '$sce', 'errorService', 'googleAnalyticsService'\r\n ];\r\n\r\n function activateCtrl(lobbyUiService, blockCardService, $timeout, appData, lobbyCommService, $sce, errorService, googleAnalyticsService) {\r\n\r\n var vm = this;\r\n //lobbyUiService.go('dw.activateCardEnd', {});\r\n vm.cvv = \"\";\r\n vm.uniqueIDChosen = \"\";\r\n vm.onInvalid = \"\";\r\n vm.cvvInput = \"\";\r\n \r\n /*\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.activateCard' });\r\n return false;\r\n }*/\r\n\r\n if (blockCardService.IsLogin('dw.activateCard')) {\r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.ACTIVE);\r\n vm.title = vm.operation.title;\r\n vm.isShowRegulation = false;\r\n vm.isConfimRegulation = false;\r\n vm.isProceesEnd = false;\r\n vm.isConfimRegulation = true;\r\n vm.uniqueIDChosen = 0;\r\n vm.fullName = appData.CustomerInfo.FirstName + \" \" + appData.CustomerInfo.LastName;\r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.ACTIVE);\r\n vm.steps = blockCardService.GetSteps(blockCardService.OperationEnum.ACTIVE, 0);//ACTIVE, page 1\r\n getCards();\r\n \r\n }\r\n\r\n vm.setWindowHeight = function () {\r\n\r\n var pageHeight = angular.element(\".view-container\")[0].offsetHeight;\r\n var smallBtn = angular.element(\".activate-buttons\")[0];\r\n if (smallBtn) {\r\n var buttonHeight = smallBtn.offsetHeight;\r\n var contentHeight = parseInt(pageHeight - buttonHeight);\r\n if (parseInt(contentHeight) < 528)\r\n contentHeight = 528;\r\n angular.element(\".scroll\").css('min-height', contentHeight + \"px\");\r\n }\r\n else {\r\n var contentHeight = parseInt(screen.height - 32);\r\n if (parseInt(contentHeight) < 528)\r\n contentHeight = 528;\r\n angular.element(\".scroll\").css('min-height', screen.height - 32 + \"px\");\r\n }\r\n\r\n }\r\n vm.setWindowHeight();\r\n\r\n\r\n /*\r\n lobbyCommService.getDocument(\"BlockCard.html\").then(function (response) {\r\n vm.regulation = response;\r\n vm.regulation = $sce.trustAsHtml(response);\r\n\r\n }, function (error) {\r\n });*/\r\n\r\n\r\n vm.change = function (uniqueIDChosen) {\r\n var userDeatils = {};\r\n vm.uniqueIDChosen = uniqueIDChosen;\r\n\r\n //vm.uniqueIDChosen = uniqueIDChosen;\r\n /*blockCardService.GetCustomerDetails(req).then(function (response) {\r\n vm.userDeatils = response;\r\n //vm.userDeatils.uniqueIDChosen = uniqueIDChosen;\r\n\r\n blockCardService.GetSetUserDeatils(vm.userDeatils);\r\n\r\n });*/\r\n\r\n\r\n };\r\n\r\n vm.openPopUp = function () {\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/cvv-popup.html';\r\n popup.btns = [];\r\n\r\n \r\n\r\n\r\n popup.btns.push(\r\n {\r\n text: \"חזור למסך\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n\r\n }\r\n });\r\n\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, true);\r\n };\r\n\r\n\r\n /* call from directvie */\r\n //vm.changeCvv = function (uniqueIDChosen) {\r\n\r\n // var req = {};\r\n // req.UniqueID = uniqueIDChosen;\r\n // blockCardService.GetSetUserDeatils(req);\r\n\r\n\r\n //};\r\n\r\n\r\n\r\n vm.confirm = function () {\r\n //lobbyUiService.go('dw.activateCardEnd', {});\r\n\r\n if (vm.cvvInput != undefined && vm.cvvInput.toString().length === 3) {\r\n checkCardCVV();\r\n\r\n //lobbyUiService.go('dw.activateCardEnd', {});\r\n\r\n\r\n\r\n }\r\n else {\r\n vm.onInvalid = \"יש להזין 3 ספרות בגב הכרטיס\";\r\n /*var popup = {};\r\n popup.text = '

    יש להזין 3 ספרות בגב הכרטיס

    ';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"חזור למסך\",\r\n type: '',\r\n onTap: function () {\r\n\r\n }\r\n });\r\n \r\n showPopUp(popup);*/\r\n }\r\n\r\n };\r\n\r\n\r\n function getCards() {\r\n /*getCards*/\r\n var req = {};\r\n \r\n req.CardProcessType = vm.operation.name;\r\n vm.cards = [];\r\n blockCardService.GetBlockedCardDetails(req).then(function (response) {\r\n vm.cards = response;\r\n var isConfirm = blockCardService.IsFromConfirm();\r\n\r\n if (isConfirm) {\r\n vm.uniqueId = blockCardService.GetSetUserDeatils().uniqueID;\r\n }\r\n else {\r\n vm.uniqueId = vm.cards[0].Id;\r\n }\r\n\r\n var obj = {};\r\n obj.uniqueIDChosen = vm.uniqueId;\r\n vm.change(vm.uniqueId);\r\n\r\n }, function (error) {\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n function checkCardCVV() {\r\n\r\n var req = {};\r\n req.UniqueID = vm.uniqueIDChosen;\r\n req.CardCVV = vm.cvvInput.toString();\r\n\r\n blockCardService.CheckCardCVV(req).then(function (response) {\r\n updateCard();\r\n });\r\n }\r\n\r\n\r\n function showPopUp(popup) {\r\n lobbyUiService.popup.alert(popup.text, null, null, null, popup.btns);\r\n };\r\n\r\n function updateCard() {\r\n\r\n var req = {};\r\n req.UniqueID = vm.uniqueIDChosen;\r\n //req.UniqueID = blockCardService.GetSetUserDeatils().UniqueID;\r\n req.PhoneNum = appData.CustomerInfo.Phone;\r\n req.CardProcessType = vm.operation.name;\r\n //req.IsProcessCompleted = true;\r\n blockCardService.GetSetUserDeatils(req);\r\n\r\n blockCardService.UpdateCardStatus(req).then(function (response) {\r\n\r\n if (response.Response.Status.Succeeded) {\r\n vm.isProceesEnd = true;\r\n googleAnalyticsService.trackPage('/vp/managecard/step2/restore-card-success/');\r\n } else {\r\n //throw erorr;\r\n }\r\n }, function (error) {\r\n //throw erorr;\r\n // errorService.handleError(error, vm.confirm);\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('blockCard')\r\n .controller('activateCardEndCtrl', activateCardEndCtrl);\r\n\r\n activateCardEndCtrl.$inject = [\r\n '$scope', 'lobbyUiService', 'blockCardService', '$rootScope'\r\n ];\r\n\r\n function activateCardEndCtrl($scope, lobbyUiService, blockCardService, $rootScope) {\r\n var vm = this;\r\n blockCardService.IsLogin('dw.activateCard');\r\n \r\n /*\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.defective.end' });\r\n return false;\r\n }*/\r\n \r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.ACTIVE);\r\n vm.title = vm.operation.title;\r\n vm.steps = blockCardService.GetSteps(blockCardService.OperationEnum.ACTIVE, 1);\r\n vm.params = [blockCardService.GetLast4Digit(blockCardService.GetSetUserDeatils().UniqueID)];\r\n\r\n \r\n vm.backToHomePage = function () {\r\n lobbyUiService.go('dw.lobby');\r\n };\r\n\r\n $rootScope.$on('$stateChangeStart', function (event, next, toParams, fromState, fromParams) {\r\n if (next.name === \"dw.activateCard\" && fromState.name == \"dw.activateCardEnd\") {\r\n event.preventDefault();\r\n lobbyUiService.go('dw.block-card-home');\r\n }\r\n });\r\n\r\n \r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n viewData.enableBack = true;\r\n });\r\n\r\n\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('transferOrders', []);\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('transferOrders').config(transferOrdersRoute);\r\n\r\n transferOrdersRoute.$inject = ['$stateProvider'];\r\n\r\n function transferOrdersRoute($stateProvider) {\r\n $stateProvider\r\n .state('dw.successTransferOrders', {\r\n url: \"/transferOrders/successTransferOrders/:fromFirstCard/:fromSecondCard/:fromThirdCard/:toCard\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/transferOrders/templates/successTranferOrders.html\",\r\n controller: \"successTransferOrders as vm\"\r\n }\r\n }\r\n })\r\n .state('dw.transferStandingOrders', {\r\n cache: false,\r\n url: \"/transferOrders/transferStandingOrders\",\r\n paramsService: 'transferOrdersService',\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/transferOrders/templates/transferStandingOrders.html\",\r\n controller: \"transferStandingOrders as vm\",\r\n resolve: {\r\n approval: function (transferOrdersService) {\r\n return transferOrdersService.handleAuthentication();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('transferOrders')\r\n .controller('transferStandingOrders', transferStandingOrders);\r\n\r\n transferStandingOrders.$inject = [\r\n '$scope', 'connection', '$window', 'appData', 'lobbyUiService', '$rootScope', '$q', 'utilService', 'errorService',\r\n '$ionicScrollDelegate', 'googleAnalyticsService', '$timeout', '$ionicLoading', '$ionicPopup', '$location', 'lobbyDataService'\r\n ];\r\n\r\n function transferStandingOrders($scope, connection, $window, appData, lobbyUiService, $rootScope, $q, utilService, errorService,\r\n $ionicScrollDelegate, googleAnalyticsService, $timeout, $ionicLoading, $ionicPopup, $location, lobbyDataService) {\r\n\r\n var vm = this;\r\n vm.title = \"העברת הוראות קבע\";\r\n vm.cards = [];\r\n vm.generalCards = [];\r\n vm.input = \"\";\r\n vm.uniqueId = \"\";\r\n vm.inputCardOne = \"\";\r\n vm.inputCardTwo = \"\";\r\n vm.inputCardThree = \"\";\r\n vm.isCardOne = true;\r\n vm.isCardTwo = true;\r\n vm.isCardThree = true;\r\n vm.showAddCard = true;\r\n vm.showFirstCardInput = true;\r\n vm.showSecondCardInput = false;\r\n vm.showThirdCardInput = false;\r\n vm.showLegalError = false;\r\n vm.showLegalErrorStyle = \"transfer-no-opacity\";\r\n vm.LegalConfirmed = false;\r\n vm.confirmedTakanon = 'transfer-not-confirmed';\r\n vm.isLoggedIn = connection.isLoggedIn();\r\n vm.validCards = [];\r\n vm.isChooseTicketDisabled = true;\r\n vm.confirmButtonDisabled = true;\r\n vm.showInputSuccess = false;\r\n vm.showSelectCardSuccess = false;\r\n vm.showConfirmSuccess = false;\r\n vm.secondHeadline = \"div-headline\";\r\n vm.thirdHeadline = \"div-headline\";\r\n vm.errorFirstCard = \"\";\r\n vm.errorSecondCard = \"\";\r\n vm.errorThirdCard = \"\";\r\n vm.buttonDisabled = \"transfer-button-disabled\";\r\n var _template = '
    טוען נתונים...
    ';\r\n vm.takanonLabelClicked = false;\r\n vm.opacityClass = \"opacity-zero\";\r\n\r\n if (!vm.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.transferStandingOrders' }, { location: 'replace' });\r\n return;\r\n }\r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n if (!vm.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.transferStandingOrders' });\r\n return;\r\n }\r\n });\r\n\r\n function showLoader() {\r\n $ionicLoading.show({\r\n template: _template\r\n });\r\n }\r\n\r\n function hideLoader() {\r\n $timeout(function () {\r\n $ionicLoading.hide();\r\n }, 500);\r\n }\r\n\r\n fillCards();\r\n\r\n vm.operation = function () {\r\n console.log('vm.operation');\r\n }\r\n\r\n vm.onChangeCallback = function () {\r\n console.log(\"vm.onChangeCallback\");\r\n vm.isChooseTicketDisabled = false;\r\n vm.secondHeadline = \"div-blue-headline\";\r\n }\r\n\r\n vm.addAnotherCardInput = function () {\r\n if (vm.showSecondCardInput && vm.showThirdCardInput)\r\n return;\r\n\r\n if (!vm.showSecondCardInput) {\r\n if (vm.inputCardOne.trim() != \"\") {\r\n vm.showSecondCardInput = true;\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: 'כרטיס אשראי נוסף' });\r\n }\r\n }\r\n else if (!vm.showThirdCardInput) {\r\n if (vm.inputCardTwo.trim() != \"\") {\r\n vm.showThirdCardInput = true;\r\n vm.showAddCard = false;\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: 'כרטיס אשראי נוסף' });\r\n }\r\n }\r\n }\r\n\r\n vm.change = function (uniqueId) {\r\n vm.uniqueId = uniqueId;\r\n vm.thirdHeadline = \"div-blue-headline\";\r\n vm.showSelectCardSuccess = true;\r\n vm.confirmButtonDisabled = false;\r\n vm.buttonDisabled = \"\";\r\n }\r\n\r\n function getValidCards() {\r\n connection.transferStandingOrdersGetValidCards()\r\n .then(function (response) {\r\n console.log(\"**********GetValidCards = \", JSON.stringify(response));\r\n vm.validCards = response.UniqueId;\r\n var cards = [];\r\n var tmpCards = vm.cards;\r\n vm.cards = [];\r\n for (var i = 0; i < tmpCards.length; i++) {\r\n if (vm.validCards.indexOf(tmpCards[i].Id) != -1) {\r\n cards.push(tmpCards[i]);\r\n vm.cards.push(tmpCards[i]);\r\n }\r\n }\r\n\r\n for (var i = 0; i < vm.cards.length; i++) {\r\n vm.generalCards.push(vm.cards[i]);\r\n }\r\n\r\n checkIfSourceCardsAreValid();\r\n }, function (error) {\r\n hideLoader();\r\n var message = error[0].response.Response.Status.Message;\r\n if (message == undefined) {\r\n errorService.handleError(error);\r\n }\r\n else {\r\n showPopUp(message, \"\");\r\n }\r\n console.log(\"**********GetValidCards error = \", error);\r\n });\r\n }\r\n\r\n function fillCards() {\r\n var bankAccountsArray = appData.BankAccounts;\r\n if (bankAccountsArray != undefined) {\r\n for (var i = 0; i < bankAccountsArray.length; i++) {\r\n vm.cards = vm.cards.concat(bankAccountsArray[i].Cards);\r\n }\r\n //vm.uniqueId = vm.cards[0].Id;\r\n\r\n var countNonValidCards = 0;\r\n var cards = vm.cards;\r\n for (var i = 0; i < cards.length; i++) {\r\n if (!cards[i].IsIssuedByCalInd) {\r\n countNonValidCards += 1;\r\n }\r\n }\r\n\r\n if (countNonValidCards > 0 && countNonValidCards == cards.length) {\r\n showPopUpNonValidCards(\"כדי להעביר הוראות קבע לכרטיס אשראי בנקאי צריך לפנות לסניף הבנק\", 'הודעת שגיאה - כרטיס בנקאי');\r\n }\r\n else {\r\n\r\n if (countNonValidCards > 0) {\r\n vm.opacityClass = \"opacity-one\";\r\n }\r\n getValidCards();\r\n }\r\n }\r\n else {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.transferStandingOrders' });\r\n }\r\n }\r\n\r\n function validation_check() {\r\n if (!vm.LegalConfirmed) {\r\n vm.showLegalError = true;\r\n vm.showLegalErrorStyle = \"\";\r\n return false;\r\n }\r\n\r\n if (vm.inputCardOne == undefined)\r\n vm.inputCardOne = \"\";\r\n\r\n if (vm.inputCardTwo == undefined)\r\n vm.inputCardTwo = \"\";\r\n\r\n if (vm.inputCardThree == undefined)\r\n vm.inputCardThree = \"\";\r\n\r\n if (vm.inputCardOne.trim() == \"\" && vm.inputCardTwo.trim() == \"\" && vm.inputCardThree.trim() == \"\") {\r\n vm.isCardOne = false;\r\n vm.errorFirstCard = \"נא להזין כרטיס אשראי שממנו יש להעביר הוראות קבע\";\r\n return false;\r\n }\r\n var firstCardCheck = checkCard(vm.inputCardOne);\r\n var secondCardCheck = checkCard(vm.inputCardTwo);\r\n var thirdCardCheck = checkCard(vm.inputCardThree);\r\n\r\n if (firstCardCheck)\r\n vm.isCardOne = true;\r\n\r\n if (secondCardCheck)\r\n vm.isCardTwo = true;\r\n\r\n if (thirdCardCheck)\r\n vm.isCardThree = true;\r\n\r\n if (!firstCardCheck\r\n || !secondCardCheck\r\n || !thirdCardCheck) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function transferStansingOrders(request) {\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: 'להעברת הוראת קבע' });\r\n connection.transferStandingOrders(request)\r\n .then(function (response) {\r\n console.log(\"**********transferStandingOrders = \", JSON.stringify(response));\r\n var bankAccountsArray = appData.BankAccounts;\r\n for (var i = 0; i < bankAccountsArray.length; i++) {\r\n var cardsArray = bankAccountsArray[i].Cards;\r\n for (var j = 0; j < cardsArray.length; j++) {\r\n if (vm.uniqueId == cardsArray[j].Id) {\r\n var card = cardsArray[j];\r\n }\r\n }\r\n }\r\n var cards = response.SuccededCards;\r\n var firstCard = vm.inputCardOne.substr(vm.inputCardOne.length - 4);\r\n var secondCard = vm.inputCardTwo.substr(vm.inputCardTwo.length - 4);\r\n var thirdCard = vm.inputCardThree.substr(vm.inputCardThree.length - 4);\r\n\r\n cards = JSON.stringify(cards);\r\n\r\n if (cards.indexOf(firstCard) == -1)\r\n firstCard = \"\";\r\n if (cards.indexOf(secondCard) == -1)\r\n secondCard = \"\";\r\n if (cards.indexOf(thirdCard) == -1)\r\n thirdCard = \"\";\r\n\r\n var failedCards = response.FailedCards;\r\n\r\n $rootScope.transferOrdersFailedCards = failedCards;\r\n\r\n $rootScope.cameFromTransferOrders = true;\r\n\r\n hideLoader();\r\n if (JSON.stringify({}) === JSON.stringify(response.SuccededCards)) {\r\n handleCardsErrors(failedCards);\r\n }\r\n else {\r\n lobbyUiService.go('dw.successTransferOrders', { fromFirstCard: firstCard, fromSecondCard: secondCard, fromThirdCard: thirdCard, toCard: card.LastFourDigits });\r\n }\r\n\r\n }, function (error) {\r\n hideLoader();\r\n var message = error[0].response.Response.Status.Message;\r\n if (message == undefined) {\r\n errorService.handleError(error);\r\n }\r\n else {\r\n showPopUp(message, \"\");\r\n }\r\n console.log(\"**********transferStandingOrders error = \", error);\r\n });\r\n }\r\n\r\n vm.transferStansingOrders = function () {\r\n if (!validation_check())\r\n return;\r\n\r\n showLoader();\r\n\r\n var request = {};\r\n\r\n request.uniqueId = vm.uniqueId;\r\n request.Origin = [];\r\n\r\n if (vm.inputCardOne.trim() != \"\") {\r\n var firstcard = vm.inputCardOne.replace(new RegExp(\"-\", 'g'), \"\");\r\n request.Origin.push(firstcard);\r\n }\r\n\r\n if (vm.inputCardTwo.trim() != \"\") {\r\n var secondcard = vm.inputCardTwo.replace(new RegExp(\"-\", 'g'), \"\");\r\n request.Origin.push(secondcard);\r\n }\r\n\r\n if (vm.inputCardThree.trim() != \"\") {\r\n var thirdcard = vm.inputCardThree.replace(new RegExp(\"-\", 'g'), \"\");\r\n request.Origin.push(thirdcard);\r\n }\r\n\r\n transferStansingOrders(request);\r\n }\r\n\r\n vm.takanonLabelClick = function () {\r\n vm.takanonLabelClicked = true;\r\n lobbyUiService.popup.message('app/transferOrders/templates/takanon.html', null, null, 'transfers-orders-popup', 'סגירה', function () {\r\n vm.showTakanon = false;\r\n vm.takanonLabelClicked = false;\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: 'צפייה בתנאים משפטיים' });\r\n }, null, true).then(function (args) {\r\n\r\n });\r\n $timeout(function () {\r\n vm.takanonLabelClicked = false;\r\n }, 200);\r\n }\r\n\r\n vm.confirmTakanon = function () {\r\n if (vm.confirmButtonDisabled)\r\n return;\r\n\r\n if (vm.takanonLabelClicked)\r\n return;\r\n vm.LegalConfirmed = !vm.LegalConfirmed;\r\n if (vm.LegalConfirmed) {\r\n vm.confirmedTakanon = 'transfer-confirmed';\r\n vm.showLegalError = false;\r\n vm.showLegalErrorStyle = \"transfer-no-opacity\";\r\n vm.showConfirmSuccess = true;\r\n }\r\n else {\r\n vm.confirmedTakanon = 'transfer-not-confirmed';\r\n vm.showConfirmSuccess = false;\r\n }\r\n }\r\n\r\n vm.OnBlurCard = function () {\r\n if (vm.inputCardOne === undefined)\r\n vm.inputCardOne = \"\";\r\n if (vm.inputCardTwo === undefined)\r\n vm.inputCardTwo = \"\";\r\n if (vm.inputCardThree === undefined)\r\n vm.inputCardThree = \"\";\r\n var firstCardCheck = checkCard(vm.inputCardOne);\r\n var secondCardCheck = checkCard(vm.inputCardTwo);\r\n var thirdCardCheck = checkCard(vm.inputCardThree);\r\n\r\n if (firstCardCheck && secondCardCheck && thirdCardCheck) {\r\n\r\n if (vm.inputCardOne.trim() == \"\" && vm.inputCardTwo.trim() == \"\" && vm.inputCardThree.trim() == \"\") {\r\n vm.showInputSuccess = false;\r\n }\r\n else {\r\n vm.showInputSuccess = true;\r\n }\r\n }\r\n else {\r\n vm.showInputSuccess = false;\r\n }\r\n }\r\n\r\n vm.checkCard = function (p_cardNum) {\r\n if (p_cardNum === undefined)\r\n p_cardNum = \"\";\r\n p_cardNum = p_cardNum.replace(new RegExp(\"-\", 'g'), \"\");\r\n return checkCard(p_cardNum);\r\n }\r\n\r\n\r\n function showPopUp(text, erroId) {\r\n if (text.indexOf(\" -1) {\r\n showPopUpTel(text, erroId);\r\n }\r\n else {\r\n showPopUpRegular(text, erroId);\r\n }\r\n }\r\n\r\n function showPopUpRegular(text, erroId) {\r\n\r\n var popup = {\r\n };\r\n popup.title = \"משהו השתבש\";\r\n popup.text = text;\r\n popup.btns = [];\r\n if (erroId != \"\" && (erroId == \"ErrorBpm559_240\" || erroId == \"ErrorBpm518_403\")) {\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: 'הודעת סגירה' });\r\n }\r\n }\r\n );\r\n }\r\n else {\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-grey',\r\n onTap: function () {\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: 'הודעת שגיאה' });\r\n }\r\n },\r\n {\r\n text: \"נסה שנית\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: 'הודעת שגיאה' });\r\n vm.transferStansingOrders();\r\n }\r\n }\r\n );\r\n }\r\n\r\n lobbyUiService.popup.messageText(null, popup.text, popup.title, null, null, null, popup.btns, true);\r\n };\r\n\r\n function showPopUpTel(text, erroId) {\r\n\r\n var popup = {\r\n };\r\n popup.title = \"משהו השתבש\";\r\n popup.text = text;\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n if (erroId == \"ErrorBpm518_General\") {\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: 'הודעת שגיאה – לא ניתן לבצע את הפעולה' });\r\n }\r\n else {\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: 'הודעת שגיאה' });\r\n }\r\n }\r\n }\r\n );\r\n lobbyUiService.popup.messageText(null, popup.text, popup.title, null, null, null, popup.btns, true);\r\n };\r\n\r\n function showPopUpNonValidCards(text, analyticsEvent) {\r\n\r\n var popup = {\r\n };\r\n popup.title = \"משהו השתבש\";\r\n popup.text = text;\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: analyticsEvent });\r\n lobbyUiService.go('dw.lobby');\r\n }\r\n }\r\n );\r\n\r\n\r\n lobbyUiService.popup.messageText(null, popup.text, popup.title, null, null, null, popup.btns, false);\r\n };\r\n\r\n vm.goToPageBottom = function () {\r\n $ionicScrollDelegate.scrollBottom();\r\n }\r\n\r\n function checkIfSourceCardsAreValid() {\r\n var cards = vm.cards;\r\n var countNonValidCards = 0;\r\n\r\n if (cards.length == 0) {\r\n showPopUpNonValidCards(\"נראה שאין בחשבונך כרטיסים שאפשר להעביר אליהם הוראות קבע\", 'הודעת שגיאה - אין כרטיסים להעביר אליהם הוראות קבע');\r\n }\r\n else {\r\n for (var i = 0; i < cards.length; i++) {\r\n if (!cards[i].IsIssuedByCalInd) {\r\n countNonValidCards += 1;\r\n }\r\n }\r\n\r\n if (countNonValidCards == cards.length) {\r\n showPopUpNonValidCards(\"כדי להעביר הוראות קבע לכרטיס אשראי בנקאי צריך לפנות לסניף הבנק\", 'הודעת שגיאה - כרטיס בנקאי');\r\n }\r\n }\r\n }\r\n\r\n function checkCard(p_cardNum) {\r\n if (p_cardNum === undefined)\r\n p_cardNum = \"\";\r\n if (p_cardNum.length < 8 && p_cardNum.length > 0) {\r\n return false;\r\n }\r\n if (p_cardNum.length == 8 || p_cardNum.length == 9) //IsraCard\r\n {\r\n var module = 11;\r\n var mishkolet = 1;\r\n var sum = 0;\r\n for (var i = p_cardNum.length - 1; i > -1; i--) {\r\n if (checkIfDigit(p_cardNum.charAt(i)))\r\n sum = (p_cardNum.charAt(i) * mishkolet++) + sum;\r\n else\r\n return false;\r\n }\r\n if ((sum % module) == 0)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n else if (p_cardNum.length < 20) //other cards\r\n {\r\n var module = 10;\r\n var mishkolet = 1;\r\n var sum = 0;\r\n for (var i = p_cardNum.length - 1; i > -1; i--) {\r\n if (checkIfDigit(p_cardNum.charAt(i)))\r\n sum = (sumDigits(p_cardNum.charAt(i) * mishkolet)) + sum;\r\n else\r\n return false;\r\n //fix mishkolet\r\n if (mishkolet == 2)\r\n mishkolet = 1;\r\n else\r\n mishkolet++;\r\n }\r\n if ((sum % module) == 0)\r\n return true;\r\n else\r\n return false;\r\n\r\n }\r\n else //less then 8 and more then 20 not legit card\r\n return false;\r\n }\r\n\r\n function handleCardsErrors(errorCards) {\r\n if (errorCards.length == 1) {\r\n showPopUp(errorCards[0].message, errorCards[0].errorId);\r\n }\r\n else {\r\n for (var i = 0; i < errorCards.length; i++) {\r\n if (errorCards[i].Fullcard.indexOf(vm.inputCardOne) > -1) {\r\n vm.errorFirstCard = errorCards[i].message;\r\n vm.isCardOne = false;\r\n }\r\n else if (errorCards[i].Fullcard.indexOf(vm.inputCardTwo) > -1) {\r\n vm.errorSecondCard = errorCards[i].message;\r\n vm.isCardTwo = false;\r\n }\r\n else if (errorCards[i].Fullcard.indexOf(vm.inputCardThree) > -1) {\r\n vm.errorThirdCard = errorCards[i].message;\r\n vm.isCardThree = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function checkIfDigit(p_d) {\r\n if (p_d < 10 && p_d > -1)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n //if 18 will return 9\r\n function sumDigits(p_tosum) {\r\n //Max 18\r\n if (p_tosum / 10 < 1)\r\n return p_tosum;\r\n else\r\n return parseInt(p_tosum.toString().charAt(0)) + parseInt(p_tosum.toString().charAt(1));\r\n }\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('transferOrders')\r\n .controller('successTransferOrders', successTransferOrders);\r\n\r\n successTransferOrders.$inject = [\r\n '$scope', 'connection', '$window', 'appData', 'lobbyUiService', '$rootScope', '$q', 'utilService', 'errorService',\r\n '$ionicScrollDelegate', 'googleAnalyticsService', '$timeout', '$ionicLoading', '$ionicPopup', '$location', 'lobbyDataService'\r\n ,'$sce'\r\n ];\r\n\r\n function successTransferOrders($scope, connection, $window, appData, lobbyUiService, $rootScope, $q, utilService, errorService,\r\n $ionicScrollDelegate, googleAnalyticsService, $timeout, $ionicLoading, $ionicPopup, $location, lobbyDataService, $sce) {\r\n\r\n var vm = this;\r\n vm.title = \"העברת הוראות קבע\";\r\n vm.fromFirstCard = \"\";\r\n vm.fromSecondCard = \"\";\r\n vm.fromThirdCard = \"\";\r\n vm.toCard = \"\";\r\n vm.countCards = 0;\r\n vm.manyCardsLabel = false;\r\n vm.errorCards = [];\r\n vm.showErrors = false;\r\n vm.cardsError = \"\";\r\n vm.cardsErrorReason = \"\";\r\n vm.errorMessages = [];\r\n\r\n vm.returnToTransferOrders = function () {\r\n lobbyUiService.go('dw.transferStandingOrders', {});\r\n }\r\n\r\n vm.returnToLobby = function () {\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: 'חזרה לדף הבית' });\r\n $rootScope.cameFromTransferOrders = false;\r\n lobbyUiService.go('dw.lobby');\r\n }\r\n\r\n vm.sanitizeMe = function (text) {\r\n return $sce.trustAsHtml(text);\r\n }\r\n\r\n $scope.$on('$ionicView.afterEnter', function (e, viewData) {\r\n\r\n vm.fromFirstCard = lobbyUiService.getParams('fromFirstCard');\r\n console.log(\"fromFirstCard: \", vm.fromFirstCard);\r\n\r\n vm.fromSecondCard = lobbyUiService.getParams('fromSecondCard');\r\n console.log(\"fromSecondCard: \", vm.fromSecondCard);\r\n\r\n vm.fromThirdCard = lobbyUiService.getParams('fromThirdCard');\r\n console.log(\"fromThirdCard: \", vm.fromThirdCard);\r\n\r\n vm.toCard = lobbyUiService.getParams('toCard');\r\n console.log(\"toCard: \", vm.toCard);\r\n\r\n if ($rootScope.cameFromTransferOrders != true) {\r\n vm.returnToTransferOrders();\r\n }\r\n\r\n googleAnalyticsService.insertEvent({ page: 'מותאם', action: 'העברת הוראת קבע', eventName: 'קיבלנו את בקשתך' });\r\n\r\n if (vm.fromFirstCard != \"\")\r\n vm.countCards += 1;\r\n if (vm.fromSecondCard != \"\")\r\n vm.countCards += 1;\r\n if (vm.fromThirdCard != \"\")\r\n vm.countCards += 1;\r\n\r\n if (vm.countCards > 1)\r\n vm.manyCardsLabel = true;\r\n\r\n vm.errorCards = $rootScope.transferOrdersFailedCards;\r\n if (vm.errorCards.length > 0) {\r\n var errorMessages = [];\r\n if (vm.errorCards.length == 1) {\r\n vm.cardsError = \"הוראות קבע מכרטיס אשראי המסתיים בספרות \" + vm.errorCards[0].card + \" לא יועברו.\";\r\n errorMessages.push(vm.errorCards[0].message);\r\n }\r\n else {\r\n var cardsText = \"\"; \r\n for (var i = 0; i < vm.errorCards.length; i++)\r\n {\r\n cardsText = cardsText + vm.errorCards[i].card + \", \";\r\n errorMessages.push(vm.errorCards[i].card + \" - \" + vm.errorCards[i].message);\r\n } \r\n cardsText = cardsText.substring(\"\", cardsText.length - 2);\r\n vm.cardsError = \"הוראות קבע מכרטיסי אשראי המסתיימים בספרות \" + cardsText + \" לא יועברו.\"; \r\n }\r\n vm.errorMessages = errorMessages;\r\n vm.showErrors = true;\r\n }\r\n else\r\n vm.showErrors = false;\r\n });\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('transferOrders')\r\n .factory('transferOrdersService', transferOrdersService);\r\n function transferOrdersService($q, connection, $rootScope, lobbyUiService, errorService, $timeout) {\r\n var handleAuthentication = function () {\r\n var deferred = $q.defer();\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n $timeout(function () {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.transferStandingOrders' });\r\n deferred.reject();\r\n return;\r\n });\r\n }\r\n deferred.resolve(true);\r\n }\r\n\r\n return {\r\n handleAuthentication: handleAuthentication,\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('onlineForms', [])\r\n .run(function () {\r\n //TODO\r\n })\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('onlineForms').config(onlineFormsRoute);\r\n\r\n function onlineFormsRoute($stateProvider) {\r\n //TODO http://localhost/DigitalWallet.UI/#!/digital/lobby\r\n\r\n $stateProvider\r\n\r\n .state('dw.onlineforms', {\r\n url: \"/onlineforms/:formId\",\r\n cache: false,\r\n params: {\r\n /* formId: {\r\n \r\n }\r\n */\r\n params: {\r\n formId: null\r\n }\r\n },\r\n checkState: function ($q, $timeout) {\r\n\r\n },\r\n resolve: {\r\n checkState: function ($q, $timeout) {\r\n\r\n }\r\n },\r\n\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/onlineForms/online-forms.html\",\r\n controller: \"onlineFormsCtrl as vm\"\r\n }\r\n }\r\n })\r\n\r\n\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('onlineForms')\r\n .controller('onlineFormsCtrl', onlineFormsCtrl);\r\n\r\n onlineFormsCtrl.$inject = [\r\n '$scope', 'connection', 'lobbyUiService', '$sce', '$stateParams', 'appSettings'\r\n ];\r\n\r\n function onlineFormsCtrl($scope, connection, lobbyUiService, $sce, $stateParams, appSettings) {\r\n var vm = this;\r\n vm.query = '';\r\n var request = {};\r\n vm.link = '';\r\n vm.calculate = screen.height;\r\n\r\n \r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.onlineforms' }, { location: 'replace' });\r\n }\r\n else {\r\n connection.setAuthenticData(request).then(function (response) {\r\n \r\n if (response.Response.Status.Succeeded) {\r\n \r\n vm.link = $sce.trustAsResourceUrl(String.format(appSettings.linkOnlineFormsIframe, appSettings.systemId, response.Token, $stateParams.formId));\r\n //vm.link = $sce.trustAsResourceUrl(appSettings.linkOnlineFormsIframe + appSettings.systemId + \"?token=\" + response.Token + \"&formId=\" + $stateParams.formId);\r\n \r\n }\r\n else {\r\n deferred.reject(response);\r\n //thorw error\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n }, function (error) {\r\n \r\n\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n }\r\n\r\n})(window, window.angular);\r\n/*\r\nfunction AppCtrl($scope, $sce) {\r\n // ...\r\n $scope.setProject = function (id) {\r\n $scope.currentProject = $scope.projects[id];\r\n $scope.currentProjectUrl = $sce.trustAsResourceUrl($scope.currentProject.url);\r\n }\r\n}\r\nIn the Template:\r\n */\r\n\r\n\n\r\n(function () {\r\n 'use strict'\r\n function wizardHeaderController() {\r\n var vm = this;\r\n }\r\n\r\n\r\n angular.module('digitalWallet')\r\n .directive('wizardHeader', function () {\r\n return {\r\n //require: ['^^myTabs', 'ngModel'],\r\n restrict: 'E',\r\n controllerAs: 'vm',\r\n controller: wizardHeaderController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n steps: '=steps'\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n /*var tabsCtrl = controllers[0],\r\n modelCtrl = controllers[1];\r\n de\r\n tabsCtrl.addPane(scope);*/\r\n\r\n },\r\n templateUrl: 'app/shared/wizard-header.component/wizard-header.html'\r\n };\r\n });\r\n})(window, window.angular);\r\n\r\n\r\n\n(function () {\r\n 'use strict'\r\n \r\n chooseTicketController.$inject = [\r\n 'connection', 'appData', '$scope'\r\n ];\r\n\r\n function chooseTicketController(connection, appData, $scope) {\r\n var vmChooseTicket = this;\r\n\r\n if (vmChooseTicket.operation && vmChooseTicket.operation.name) {\r\n vmChooseTicket.operationSrc = \"app/shared/choose-ticket.component/choose-ticket-\" + vmChooseTicket.operation.name + \".html\";\r\n }\r\n\r\n if (vmChooseTicket.isDisabled == undefined)\r\n {\r\n vmChooseTicket.isDisabled = false;\r\n }\r\n\r\n var req = {};\r\n\r\n req.CardProcessType = vmChooseTicket.operation.name;\r\n\r\n vmChooseTicket.isFromBlockConfirm = false;\r\n \r\n //#fix 103993\r\n //vmChooseTicket.creditArray = vmChooseTicket.cards;\r\n\r\n\r\n if (!vmChooseTicket.isDisabled) {\r\n vmChooseTicket.uniqueIDChosen = vmChooseTicket.uniqueId;\r\n }\r\n \r\n \r\n vmChooseTicket.cardChange = function () {\r\n var obj = {};\r\n obj.uniqueIDChosen = vmChooseTicket.uniqueId;\r\n vmChooseTicket.onChangeCard(obj);\r\n };\r\n \r\n\r\n }\r\n\r\n\r\n angular.module('digitalWallet')\r\n .directive('chooseTicket', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmChooseTicket',\r\n controller: chooseTicketController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n operation: '=',\r\n onChangeCard: '&onChangeCard',\r\n close: '&onClose',\r\n uniqueId: '=uniqueId',\r\n cards: '=cards',\r\n isDisabled: '=isDisabled',\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n\r\n },\r\n templateUrl: 'app/shared/choose-ticket.component/choose-ticket.html'\r\n };\r\n });\r\n})(window, window.angular);\r\n\r\n\r\n\r\n\n(function () {\r\n 'use strict'\r\n \r\n chooseTicketController.$inject = [\r\n 'connection', 'appData', '$scope'\r\n ];\r\n\r\n function chooseTicketController(connection, appData, $scope) {\r\n var vmChooseTicket = this;\r\n\r\n if (vmChooseTicket.operation && vmChooseTicket.operation.name) {\r\n vmChooseTicket.operationSrc = \"app/shared/choose-ticket-filtered-by-card-owner.component/choose-ticket-filtered-by-card-owner-\" + vmChooseTicket.operation.name + \".html\";\r\n }\r\n\r\n if (vmChooseTicket.isDisabled == undefined)\r\n {\r\n vmChooseTicket.isDisabled = false;\r\n }\r\n\r\n var req = {};\r\n\r\n req.CardProcessType = vmChooseTicket.operation.name;\r\n\r\n vmChooseTicket.isFromBlockConfirm = false;\r\n \r\n //#fix 103993\r\n //vmChooseTicket.creditArray = vmChooseTicket.cards;\r\n\r\n\r\n if (!vmChooseTicket.isDisabled) {\r\n vmChooseTicket.uniqueIDChosen = vmChooseTicket.uniqueId;\r\n }\r\n \r\n \r\n vmChooseTicket.cardChange = function () {\r\n var obj = {};\r\n obj.uniqueIDChosen = vmChooseTicket.uniqueId;\r\n vmChooseTicket.onChangeCard(obj);\r\n };\r\n \r\n\r\n }\r\n\r\n\r\n angular.module('digitalWallet')\r\n .directive('chooseTicketFilteredByCardOwner', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmChooseTicket',\r\n controller: chooseTicketController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n operation: '=',\r\n onChangeCard: '&onChangeCard',\r\n close: '&onClose',\r\n uniqueId: '=uniqueId',\r\n cards: '=cards',\r\n isDisabled: '=isDisabled',\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n\r\n },\r\n templateUrl: 'app/shared/choose-ticket-filtered-by-card-owner.component/choose-ticket-filtered-by-card-owner.html'\r\n };\r\n });\r\n})(window, window.angular);\r\n\r\n\r\n\r\n\n\r\n\r\n\r\n(function () {\r\n 'use strict'\r\n \r\n checkboxDesignedController.$inject = [\r\n 'connection', 'appData', '$scope'\r\n ];\r\n\r\n function checkboxDesignedController(connection, appData, $scope) {\r\n var vmCheckboxDesigned = this;\r\n\r\n if (vmCheckboxDesigned.operation && vmCheckboxDesigned.operation.name) {\r\n vmCheckboxDesigned.operationSrc = \"app/shared/checkbox-designed.component/checkbox-designed-\" + vmCheckboxDesigned.operation.name + \".html\";\r\n }\r\n\r\n if (vmCheckboxDesigned.isVirtualCard) {\r\n vmCheckboxDesigned.chkbxLabel = 'למה לחסום את הכרטיס?';\r\n }\r\n else {\r\n vmCheckboxDesigned.chkbxLabel = 'מה קרה לכרטיס?';\r\n }\r\n \r\n\r\n vmCheckboxDesigned.activeIt = function (index) {\r\n for (var i = 0; i < vmCheckboxDesigned.checkboxItems.length; i++) {\r\n vmCheckboxDesigned.checkboxItems[i].active = false;\r\n }\r\n vmCheckboxDesigned.checkboxItems[index].active = true;\r\n\r\n var obj = {};\r\n obj.index = index;\r\n vmCheckboxDesigned.onChangeCheckBox(obj);\r\n\r\n \r\n \r\n }\r\n \r\n\r\n }\r\n\r\n\r\n angular.module('digitalWallet')\r\n .directive('checkboxDesigned', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmCheckboxDesigned',\r\n controller: checkboxDesignedController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n operation: '=',\r\n checkboxItems: '=',\r\n isVirtualCard: '=',\r\n onChangeCheckBox: '&onChangeCheckBox',\r\n onInvalid: '='\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n\r\n },\r\n templateUrl: 'app/shared/checkbox-designed.component/checkbox-designed.html'\r\n };\r\n });\r\n})(window, window.angular);\r\n\r\n\r\n\r\n\n\r\n\r\n\r\n(function () {\r\n 'use strict'\r\n countryPickerController.$inject = [\r\n 'connection', 'appData', '$scope', 'lobbyUiService'\r\n ];\r\n function countryPickerController(connection, appData, $scope, lobbyUiService) {\r\n var vmcountryPicker = this;\r\n\r\n if (vmcountryPicker.operation && vmcountryPicker.operation.name) {\r\n vmcountryPicker.operationSrc = 'app/shared/country-picker.component/country-picker.component-' + vmcountryPicker.operation.name + '.html';\r\n }\r\n \r\n vmcountryPicker.class = \"\";\r\n \r\n if (vmcountryPicker.onInvalid != '') {\r\n vmcountryPicker.class = \"error-border\";\r\n }\r\n\r\n\r\n vmcountryPicker.isShowcountries = false;\r\n getCountryList();\r\n vmcountryPicker.selectedCountry = function (country) {\r\n var obj = {};\r\n if (country) {\r\n obj.country = country.title;\r\n }\r\n vmcountryPicker.onSelectedCountry(obj);\r\n\r\n\r\n \r\n };\r\n \r\n\r\n \r\n function getCountryList(country) {\r\n var url = 'app/shared/country-picker.component/country-list.json';\r\n $.getJSON(url, function (response) {\r\n vmcountryPicker.countries = response.countries.country;\r\n })\r\n }\r\n \r\n}\r\n\r\n\r\n angular.module('digitalWallet')\r\n.directive('countryPicker', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmcountryPicker',\r\n controller: countryPickerController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n operation: '=',\r\n params: '=',\r\n countryPickerValue: '=',\r\n onInvalid: '=',\r\n onSelectedCountry: '&onSelectedCountry'\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n\r\n },\r\n templateUrl: 'app/shared/country-picker.component/country-picker.component.html'\r\n };\r\n});\r\n})(window, window.angular);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n(function () {\r\n 'use strict'\r\n datePickerController.$inject = [\r\n 'connection', 'appData', '$scope', 'lobbyUiService', '$element', '$timeout'\r\n ];\r\n function datePickerController(connection, appData, $scope, lobbyUiService, $element, $timeout) {\r\n console.log(\"****************datePickerController*************\");\r\n var vmDatePicker = this;\r\n var nowDate = new Date();\r\n var tomo = new Date();\r\n var isOs = ionic.Platform.isIOS();\r\n vmDatePicker.dateDate;\r\n vmDatePicker.initialDate = new Date();\r\n\r\n var input = $element.find('input');\r\n\r\n if (vmDatePicker.duration == \"\" || vmDatePicker.duration == undefined) {\r\n vmDatePicker.duration = 584;\r\n }\r\n\r\n if (!isOs) {\r\n vmDatePicker.maxDate = (new Date(tomo.setDate(nowDate.getDate()))).toJSON().split('T')[0];\r\n vmDatePicker.minDate = (new Date(tomo.setDate(nowDate.getDate() - vmDatePicker.duration))).toJSON().split('T')[0]; // 584\r\n }\r\n else {\r\n vmDatePicker.maxDate = \"2525-01-01\";\r\n vmDatePicker.minDate = \"1000-01-01\";\r\n }\r\n if (vmDatePicker.operation && vmDatePicker.operation.name) {\r\n vmDatePicker.operationSrc = \"app/shared/date-picker.component/date-picker.component-\" + vmDatePicker.operation.name + \".html\";\r\n }\r\n\r\n if (vmDatePicker.datePickerValue == undefined || Date.parse(vmDatePicker.datePickerValue) === NaN) {\r\n vmDatePicker.datePickerValue = new Date();\r\n }\r\n\r\n $timeout(function () {\r\n var dateTMP = moment(vmDatePicker.datePickerValue).format(\"DD/MM/YYYY\");\r\n console.log('******dateTMP', dateTMP);\r\n if(vmDatePicker.operation.name.toLowerCase() === \"block\")\r\n {\r\n input[0].setAttribute('data-date', \"\");\r\n }\r\n else\r\n {\r\n vmDatePicker.initialDate = vmDatePicker.datePickerValue;\r\n input[0].setAttribute('data-date', dateTMP);\r\n }\r\n }, 300);\r\n\r\n $scope.$watch('vmDatePicker.datePickerValue', function () {\r\n $timeout(function () {\r\n var dateTMP = moment(vmDatePicker.datePickerValue).format(\"DD/MM/YYYY\");\r\n console.log('******dateTMP', dateTMP);\r\n input[0].setAttribute('data-date', dateTMP);\r\n console.log('***********vmDatePicker.initialDate watch*****************');\r\n });\r\n }, true);\r\n\r\n vmDatePicker.onChange = function () {\r\n console.log(\"****************datePickerController onChange************* \", vmDatePicker.datePickerValue);\r\n var now = new Date();\r\n var tomo = new Date();\r\n var nowDate = new Date();\r\n\r\n var yearAgo = new Date(tomo.setDate(nowDate.getDate() - vmDatePicker.duration)); //584 \r\n if (vmDatePicker.datePickerValue >= now || vmDatePicker.datePickerValue == '' || vmDatePicker.datePickerValue == null) {\r\n vmDatePicker.datePickerValue = vmDatePicker.initialDate;\r\n }\r\n\r\n if (yearAgo > vmDatePicker.datePickerValue) {\r\n vmDatePicker.datePickerValue = yearAgo;\r\n }\r\n\r\n var dateTMP = moment(vmDatePicker.datePickerValue).format(\"DD/MM/YYYY\");\r\n input[0].setAttribute('data-date', dateTMP);\r\n }\r\n\r\n vmDatePicker.textFieldBlurChanged = function () {\r\n console.log('vmDropDown.textFieldBlurChanged');\r\n vmDatePicker.textFieldBlur();\r\n }\r\n\r\n //$(\"input\").on(\"change\", function () {\r\n // this.setAttribute(\r\n // \"data-date\",\r\n // moment(vmDatePicker.datePickerValue, \"DD/MM/YYYY\")\r\n // .format(this.getAttribute(\"data-date-format\"))\r\n // )\r\n //}).trigger(\"change\")\r\n\r\n }\r\n\r\n angular.module('digitalWallet')\r\n .directive('datePicker', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmDatePicker',\r\n controller: datePickerController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n operation: '=',\r\n params: '=',\r\n datePickerValue: '=datePickerValue',\r\n duration: '=datePickerDuration',\r\n textFieldBlur: '&textFieldBlur',\r\n onInvalid: '=',\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n\r\n },\r\n templateUrl: 'app/shared/date-picker.component/date-picker.component.html'\r\n };\r\n });\r\n})(window, window.angular);\n\r\n\r\n\r\n(function () {\r\n 'use strict'\r\n cvvController.$inject = [\r\n 'connection', 'appData', '$scope', 'lobbyUiService'\r\n ];\r\n function cvvController(connection, appData, $scope, lobbyUiService) {\r\n \r\n var vmCvv = this;\r\n\r\n vmCvv.openPopUp = function () {\r\n var popup = {};\r\n popup.template = 'app/shared/templates/cvv-popup.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"חזור למסך\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n\r\n }\r\n });\r\n\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, true);\r\n };\r\n\r\n \r\n }\r\n\r\n\r\n angular.module('digitalWallet')\r\n .directive('cvv', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmCvv',\r\n controller: cvvController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n /* operation: '=',\r\n params: '=',\r\n countryPickerValue: '=',\r\n onInvalid: '='*/\r\n onInvalid: '=',\r\n cvvInput: '=cvvInput'\r\n\r\n \r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n\r\n },\r\n templateUrl: 'app/shared/cvv.component/cvv.component.html'\r\n };\r\n });\r\n})(window, window.angular);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"gridComponent\", gridComponent);\r\n\r\n gridComponent.$inject = ['$timeout'];\r\n\r\n function gridComponent($timeout) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n bindToController: true,\r\n controllerAs: 'vm',\r\n templateUrl: 'app/shared/designedGrid/grid.html',\r\n scope: {\r\n gridData: '=',\r\n gridExpandCallback: '&'\r\n },\r\n controller: function () {\r\n var vm = this;\r\n vm.expandSymbol = \"+\";\r\n\r\n vm.onExpand = function (category) {\r\n category.isExpand = !category.isExpand;\r\n if (!category.isExpand) {\r\n category.expandSymbol = \"+\";\r\n }\r\n else {\r\n category.expandSymbol = \"-\";\r\n }\r\n }\r\n\r\n vm.onGridClick = function ($event) {\r\n console.log('**************onGridClick=', $event);\r\n }\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"rowComponent\", rowComponent);\r\n\r\n rowComponent.$inject = ['$rootScope'];\r\n\r\n function rowComponent() {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n bindToController: true,\r\n controllerAs: 'vm',\r\n templateUrl: 'app/shared/designedGrid/row.html',\r\n scope: {\r\n rowData: '=',\r\n rowCallback: '&'\r\n },\r\n controller: function ($rootScope) {\r\n var vm = this;\r\n\r\n vm.expand = function (id, locationId) {\r\n vm.isExpand = !vm.isExpand;\r\n vm.rowCallback()({ id: id });\r\n console.log('******id=', locationId);\r\n if (vm.isExpand == true) {\r\n $rootScope.gridAnchorIdFilter = locationId;\r\n }\r\n else {\r\n $rootScope.gridAnchorIdFilter = 'aaa';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"rowDetailsComponent\", rowDetailsComponent);\r\n\r\n rowDetailsComponent.$inject = [\r\n \"lobbyUiService\", \"googleAnalyticsService\"\r\n ];\r\n\r\n\r\n\r\n\r\n function rowDetailsComponent() {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n bindToController: true,\r\n controllerAs: 'vm',\r\n templateUrl: 'app/shared/designedGrid/rowDetails.html',\r\n scope: {\r\n rowData: '='\r\n },\r\n controller: function (lobbyUiService, googleAnalyticsService, leadNavigationService, connection, appSettings, appData, errorService) {\r\n var vm = this;\r\n vm.show = function (value) {\r\n if (value != '')\r\n return true;\r\n return false;\r\n }\r\n\r\n vm.getGoogleQuery = function (suffix) {\r\n return encodeURIComponent(suffix.trim());\r\n }\r\n\r\n vm.searchGoogleAnalytics = function (suffix) {\r\n googleAnalyticsService.trackPage('/vp/transaction-search/search-business');\r\n googleAnalyticsService.insertEvent({ page: 'transaction-search', action: 'search-business' });\r\n googleAnalyticsService.insertEvent({ page: 'transaction-search', action: 'חיפוש גוגל בחיפוש עסקה', eventName: suffix.trim() });\r\n }\r\n\r\n vm.goToStopStandingOrders = function () {\r\n lobbyUiService.navigate('dw.stop-standing-order');\r\n }\r\n\r\n vm.goToChat = function () { \r\n googleAnalyticsService.trackPage('/vp/transaction-search/chat-with-rep');\r\n googleAnalyticsService.insertEvent({ page: 'transaction-search', action: 'chat-with-rep' });\r\n leadNavigationService.navigate();\r\n };\r\n\r\n vm.transDenial = function (value) {\r\n appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.getTransDenialToken(value.trnId, value.numerator)\r\n .then(function (res) {\r\n lobbyUiService.loader.hide();\r\n if (res.Token) {\r\n sessionStorage.setItem(\"filterTransRequest\", JSON.stringify(value.serverRequest));\r\n var url = appSettings.transDenialUrl + res.Token;\r\n location.href = url;\r\n }\r\n else {\r\n //errorService.handleError(null, res);\r\n }\r\n }, function (err) {\r\n\r\n });\r\n };\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function () {\r\n 'use strict'\r\n dropDownController.$inject = [\r\n 'connection', 'appData', '$scope', 'lobbyUiService'\r\n ];\r\n function dropDownController(connection, appData, $scope, lobbyUiService) {\r\n var vmDropDown = this;\r\n vmDropDown.textFieldBlurChanged = function () {\r\n console.log('vmDropDown.textFieldBlurChanged');\r\n vmDropDown.textFieldBlur();\r\n }\r\n }\r\n\r\n angular.module('digitalWallet')\r\n .directive('dropDown', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmDropDown',\r\n controller: dropDownController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n operation: '=',\r\n params: '=',\r\n dropDownDictionary: '=dropDownDictionary',\r\n dropDownLabel: '=dropDownLabel',\r\n selectModel: '=selectModel',\r\n textFieldBlur: '&textFieldBlur',\r\n onInvalid: '='\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n\r\n },\r\n templateUrl: 'app/shared/drop-down.component/drop-down.component.html'\r\n };\r\n });\r\n})(window, window.angular);\r\n\r\n\r\n\r\n\n(function () {\r\n 'use strict'\r\n textFieldController.$inject = [\r\n 'connection', 'appData', '$scope', 'lobbyUiService'\r\n ];\r\n function textFieldController(connection, appData, $scope, lobbyUiService) {\r\n var vmTextField = this;\r\n\r\n vmTextField.textFieldBlurChanged = function () {\r\n console.log('vmTextField.textFieldBlurChanged');\r\n vmTextField.textFieldBlur();\r\n }\r\n\r\n }\r\n\r\n angular.module('digitalWallet')\r\n .directive('textField', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmTextField',\r\n controller: textFieldController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n operation: '=',\r\n params: '=',\r\n textFieldLabel: '=textFieldLabel',\r\n textFieldModel: '=textFieldModel',\r\n textFieldBlur: '&textFieldBlur',\r\n onInvalid: '='\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n\r\n },\r\n templateUrl: 'app/shared/text-field.component/text-field.component.html'\r\n };\r\n });\r\n})(window, window.angular);\r\n\r\n\r\n\r\n\n\r\n(function () {\r\n 'use strict'\r\n\r\n chooseTicketMultipleController.$inject = [\r\n 'connection', 'appData', '$scope', '$timeout'\r\n ];\r\n\r\n function chooseTicketMultipleController(connection, appData, $scope, $timeout) {\r\n var vmChooseTicketMultiple = this;\r\n\r\n if (vmChooseTicketMultiple.operation && vmChooseTicketMultiple.operation.name) {\r\n vmChooseTicketMultiple.operationSrc = \"app/shared/choose-ticket.multiple.component/choose-ticket.multiple-\" + vmChooseTicketMultiple.operation.name + \".html\";\r\n }\r\n\r\n var cardsArrayLength = 0;\r\n\r\n var req = {};\r\n\r\n req.CardProcessType = vmChooseTicketMultiple.operation.name;\r\n\r\n //vmChooseTicketMultiple.showCheckBoxList = vmChooseTicketMultiple.closeCheckBox;\r\n\r\n vmChooseTicketMultiple.isFromBlockConfirm = false;\r\n\r\n\r\n vmChooseTicketMultiple.creditArray = vmChooseTicketMultiple.cards;\r\n\r\n\r\n vmChooseTicketMultiple.uniqueIDChosen = vmChooseTicketMultiple.uniqueId;\r\n\r\n vmChooseTicketMultiple.dropwDownText = \"כל הכרטיסים\";\r\n\r\n $scope.$watch('vmChooseTicketMultiple.cards', function () {\r\n if (vmChooseTicketMultiple.cards.length == 2) {\r\n var cardForLabel = vmChooseTicketMultiple.cards[1]\r\n vmChooseTicketMultiple.dropwDownText = cardForLabel.NumTypeDescription + \" \" + cardForLabel.CardType + \" \" + cardForLabel.LastFourDigits;\r\n }\r\n else {\r\n vmChooseTicketMultiple.dropwDownText = \"כל הכרטיסים\";\r\n }\r\n });\r\n\r\n vmChooseTicketMultiple.cardChange = function () {\r\n var obj = {};\r\n obj.uniqueIDChosen = vmChooseTicketMultiple.uniqueIDChosen;\r\n vmChooseTicketMultiple.onChangeCard(obj);\r\n };\r\n\r\n vmChooseTicketMultiple.clickSelect = function () {\r\n vmChooseTicketMultiple.isClicked = true;\r\n vmChooseTicketMultiple.showCheckBoxList = !vmChooseTicketMultiple.showCheckBoxList;\r\n }\r\n\r\n\r\n vmChooseTicketMultiple.checkboxTypeClicked = function (card) {\r\n let cardsArrayLength = 0;\r\n console.log(\"vmChooseTicketMultiple.checkboxTypeClicked= \", vmChooseTicketMultiple.isClicked);\r\n vmChooseTicketMultiple.isClicked = true;\r\n if (card.isChecked == undefined)\r\n card.isChecked = true;\r\n else\r\n card.isChecked = !card.isChecked;\r\n\r\n if (vmChooseTicketMultiple.cards[0].isChecked) {\r\n cardsArrayLength = vmChooseTicketMultiple.cards - 1;\r\n }\r\n else {\r\n for (let i = 1; i < vmChooseTicketMultiple.cards.length; ++i) {\r\n if (vmChooseTicketMultiple.cards[i].isChecked) {\r\n cardsArrayLength = cardsArrayLength + 1;\r\n }\r\n }\r\n \r\n }\r\n\r\n\r\n //if (card.isChecked)\r\n // cardsArrayLength = cardsArrayLength + 1;\r\n //else\r\n // cardsArrayLength = cardsArrayLength - 1;\r\n\r\n if (vmChooseTicketMultiple.cards.length == 2) {\r\n var cardForLabel = vmChooseTicketMultiple.cards[1];\r\n str = cardForLabel.NumTypeDescription + \" \" + cardForLabel.CardType + \" \" + cardForLabel.LastFourDigits;\r\n }\r\n else if (cardsArrayLength > 0) {\r\n var str = \"חפשו ב-\" + cardsArrayLength + \" הכרטיסים שברשותי \";\r\n }\r\n else {\r\n str = \"כל הכרטיסים\";\r\n }\r\n vmChooseTicketMultiple.dropwDownText = str;\r\n }\r\n\r\n vmChooseTicketMultiple.checkboxType = function (card) {\r\n if (card.isChecked)\r\n return \"content/images/check_on_green.svg\";\r\n return \"content/images/check_off.svg\";\r\n }\r\n }\r\n\r\n\r\n angular.module('digitalWallet')\r\n .directive('chooseTicketMultiple', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmChooseTicketMultiple',\r\n controller: chooseTicketMultipleController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n operation: '=',\r\n onChangeCard: '&onChangeCard',\r\n close: '&onClose',\r\n uniqueId: '=uniqueId',\r\n cards: '=cards',\r\n isClicked: '=isClicked',\r\n showCheckBoxList: '=showCheckBoxList'\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n\r\n },\r\n templateUrl: 'app/shared/choose-ticket.multiple.component/choose-ticket.multiple.html'\r\n };\r\n });\r\n})(window, window.angular);\r\n\r\n\r\n\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"standingOrderGridComponent\", standingOrderGridComponent);\r\n\r\n standingOrderGridComponent.$inject = ['$timeout'];\r\n\r\n function standingOrderGridComponent($timeout) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n bindToController: true,\r\n controllerAs: 'vm',\r\n templateUrl: 'app/shared/standingOrderGrid.component/grid.html',\r\n scope: {\r\n gridData: '=',\r\n gridExpandCallback: '&'\r\n },\r\n controller: function () {\r\n var vm = this;\r\n vm.expandSymbol = \"+\";\r\n\r\n vm.onExpand = function (category) {\r\n category.isExpand = !category.isExpand;\r\n if (!category.isExpand) {\r\n category.expandSymbol = \"+\";\r\n }\r\n else {\r\n category.expandSymbol = \"-\";\r\n }\r\n }\r\n\r\n vm.onGridClick = function ($event) {\r\n console.log('**************onGridClick=', $event);\r\n }\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"standingOrderRowComponent\", standingOrderRowComponent);\r\n\r\n standingOrderRowComponent.$inject = ['$rootScope'];\r\n\r\n function standingOrderRowComponent() {\r\n\t\treturn {\r\n\t\t\trestrict: 'E',\r\n\t\t\treplace: true,\r\n\t\t\tbindToController: true,\r\n\t\t\tcontrollerAs: 'vm',\r\n templateUrl: 'app/shared/standingOrderGrid.component/row.html',\r\n\t\t\tscope: {\t\t\t\t\r\n\t\t\t rowData: '=',\r\n rowCallback: '&'\r\n\t\t\t},\r\n controller: function ($rootScope, lobbyUiService, googleAnalyticsService) {\t\t\t\t\r\n\t\t\t var vm = this;\r\n\r\n vm.openExternal = function (suffix, pageName) {\r\n var url = \"https://www.google.com/search?q=\" + encodeURIComponent(suffix.trim());\r\n console.log(\"url= \", url);\r\n googleAnalyticsService.insertEvent({ page: pageName, action: 'פירוט הוראת קבע', eventName: 'חיפוש בית העסק בגוגל' });\r\n lobbyUiService.openExternal(url, '', true);\r\n }\r\n vm.rowData.vmReference = vm;\r\n\r\n vm.rowData.expand = function (id, locationId) {\r\n vm.isExpand = !vm.isExpand; \r\n vm.rowCallback()({ id: id });\r\n console.log('******id=', locationId);\r\n if (vm.isExpand) {\r\n $rootScope.gridAnchorIdFilter = locationId;\r\n }\r\n else {\r\n $rootScope.gridAnchorIdFilter = 'aaa';\r\n }\r\n if (vm.isExpand) {\r\n vm.rowData.OnExpandClient(vm.rowData.merchantId, vm.rowData.merchantType, locationId);\r\n }\r\n\t\t\t }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"standingOrderRowDetailsComponent\", standingOrderRowDetailsComponent);\r\n\r\n standingOrderRowDetailsComponent.$inject = [\r\n \"lobbyUiService\", \"googleAnalyticsService\"\r\n ];\r\n\r\n function standingOrderRowDetailsComponent() {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n bindToController: true,\r\n controllerAs: 'vm',\r\n templateUrl: 'app/shared/standingOrderGrid.component/rowDetails.html',\r\n scope: {\r\n rowData: '=' \r\n },\r\n controller: function (lobbyUiService, googleAnalyticsService) {\r\n var vm = this;\r\n vm.show = function (value) {\r\n if (value != '')\r\n return true;\r\n return false;\r\n }\r\n\r\n vm.openExternal = function (suffix)\r\n { \r\n var url = \"https://www.google.com/search?q=\" + encodeURIComponent(suffix.trim());\r\n console.log(\"url= \", url);\r\n googleAnalyticsService.insertEvent({ page: 'transaction-search', action: 'chat-with-rep' });\r\n lobbyUiService.openExternal(url, '', true);\r\n }\r\n\r\n vm.goToChat = function () {\r\n var options = {\r\n \"abandonBehavior\": false,\r\n \"type\": \"3\",\r\n \"id\": 69,\r\n \"index\": 10,\r\n \"command\": \"open-chat\",\r\n \"caption\": \"צ\\\"אט עם נציג\",\r\n \"icon\": \"ico-chat\",\r\n \"url\": \"https://chat.cal-online.co.il/chattest/iwchat.aspx\",\r\n \"restricted\": false,\r\n \"sso\": false,\r\n \"dependency\": null,\r\n \"state\": \"https://chat.cal-online.co.il/chattest/iwchat.aspx\",\r\n \"hide\": false,\r\n \"googleAnalyticsKey\": null,\r\n \"devices\": null\r\n };\r\n console.log(\"goToChat\");\r\n lobbyUiService.navigate(\"https://chat.cal-online.co.il/chattest/iwchat.aspx\", options);\r\n };\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function () {\r\n 'use strict'\r\n bankAccountDropDownController.$inject = [\r\n 'connection', 'appData', '$scope', 'lobbyUiService'\r\n ];\r\n function bankAccountDropDownController(connection, appData, $scope, lobbyUiService) {\r\n\r\n var vmBankAccountDropDown = this;\r\n\r\n vmBankAccountDropDown.showRadioDiv = false;\r\n\r\n vmBankAccountDropDown.Radio = \"content/images/Radio_circle.svg\";\r\n\r\n vmBankAccountDropDown.RadioDot = \"content/images/Radio_circle_dot.svg\";\r\n\r\n vmBankAccountDropDown.displayImage = \"\";\r\n\r\n if (vmBankAccountDropDown.bankAccounts != undefined && vmBankAccountDropDown.bankAccounts.length == 1) {\r\n vmBankAccountDropDown.displayImage = \"only-one-account\";\r\n }\r\n\r\n vmBankAccountDropDown.mainDivPressed = function () {\r\n if (vmBankAccountDropDown.bankAccounts.length > 1) {\r\n vmBankAccountDropDown.showRadioDiv = !vmBankAccountDropDown.showRadioDiv;\r\n }\r\n }\r\n\r\n vmBankAccountDropDown.onLabelClick = function (account) {\r\n console.log(\"vmBankAccountDropDown.onLabelClick\");\r\n vmBankAccountDropDown.gridOnClick({ account: account });\r\n vmBankAccountDropDown.selectedBankAccount = account;\r\n account.Radio = vmBankAccountDropDown.RadioDot;\r\n vmBankAccountDropDown.showRadioDiv = false;\r\n }\r\n\r\n vmBankAccountDropDown.toggleCircle = function (account) {\r\n if (vmBankAccountDropDown.selectedBankAccount) {\r\n if (account != vmBankAccountDropDown.selectedBankAccount) {\r\n account.Radio = vmBankAccountDropDown.Radio;\r\n }\r\n else {\r\n account.Radio = vmBankAccountDropDown.RadioDot;\r\n }\r\n }\r\n return account.Radio;\r\n }\r\n }\r\n\r\n angular.module('digitalWallet')\r\n .directive('bankAccountDropDown', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmBankAccountDropDown',\r\n controller: bankAccountDropDownController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n bankAccounts: '=',\r\n showRadioDiv: '=',\r\n gridOnClick: '&',\r\n selectedBankAccount: '=',\r\n },\r\n link: function (scope, element, attrs, controllers) {\r\n\r\n },\r\n templateUrl: 'app/shared/bank-account.drop-down.component/bank-account.drop-down.component.html',\r\n };\r\n });\r\n})(window, window.angular);\n(function () {\r\n 'use strict'\r\n foreignCardInputController.$inject = [\r\n 'connection', 'appData', '$scope', 'lobbyUiService', '$sce'\r\n ];\r\n function foreignCardInputController(connection, appData, $scope, lobbyUiService, $sce) {\r\n var vmforeignCardInput = this;\r\n vmforeignCardInput.input = \"\";\r\n var noOpacityClass = \"foreign-card-error-no-opacity\"\r\n var opacityClass = \"foreign-card-error-opacity\"\r\n vmforeignCardInput.opacity = noOpacityClass; \r\n var generalError = \"יש שגיאה במספר הכרטיס, כדאי לבדוק ולנסות שוב\";\r\n vmforeignCardInput.CardError = generalError;\r\n\r\n function sumDigits(p_tosum) {\r\n //Max 18\r\n if (p_tosum / 10 < 1)\r\n return p_tosum;\r\n else\r\n return parseInt(p_tosum.toString().charAt(0)) + parseInt(p_tosum.toString().charAt(1));\r\n }\r\n\r\n function checkIfDigit(p_d) {\r\n if (p_d < 10 && p_d > -1)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n function check_card(p_cardNum) {\r\n if (p_cardNum.length == 8 || p_cardNum.length == 9) //IsraCard\r\n {\r\n var module = 11;\r\n var mishkolet = 1;\r\n var sum = 0;\r\n for (var i = p_cardNum.length - 1; i > -1; i--) {\r\n if (checkIfDigit(p_cardNum.charAt(i)))\r\n sum = (p_cardNum.charAt(i) * mishkolet++) + sum;\r\n else\r\n return false;\r\n }\r\n if ((sum % module) == 0)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n else if (p_cardNum.length < 20) //other cards\r\n {\r\n var module = 10;\r\n var mishkolet = 1;\r\n var sum = 0;\r\n for (var i = p_cardNum.length - 1; i > -1; i--) {\r\n if (checkIfDigit(p_cardNum.charAt(i)))\r\n sum = (sumDigits(p_cardNum.charAt(i) * mishkolet)) + sum;\r\n else\r\n return false;\r\n //fix mishkolet\r\n if (mishkolet == 2)\r\n mishkolet = 1;\r\n else\r\n mishkolet++;\r\n }\r\n if ((sum % module) == 0)\r\n return true;\r\n else\r\n return false;\r\n\r\n }\r\n else //less then 8 and more then 20 not legit card\r\n return false;\r\n }\r\n\r\n vmforeignCardInput.checkValidCard = function (card_number) {\r\n return check_card(card_number);\r\n }\r\n\r\n vmforeignCardInput.onChange = function () {\r\n vmforeignCardInput.foreignCardInputValue = vmforeignCardInput.input;\r\n vmforeignCardInput.onChangeCallback();\r\n\r\n if (vmforeignCardInput.input != undefined) {\r\n var checkInput = vmforeignCardInput.input.replace(new RegExp(\"-\", 'g'), \"\");\r\n\r\n if (checkInput.length > 4 && checkInput.length < 14) {\r\n checkInput = vmforeignCardInput.input.match(new RegExp('.{1,4}', 'g')).join('-');\r\n vmforeignCardInput.input = checkInput;\r\n return;\r\n }\r\n if (checkInput.length == 14) {\r\n checkInput = [vmforeignCardInput.input.slice(0, 4), '-', vmforeignCardInput.input.slice(4, 10), '-', vmforeignCardInput.input.slice(10)].join('');\r\n vmforeignCardInput.input = checkInput;\r\n return;\r\n }\r\n if (checkInput.length == 15) {\r\n checkInput = [vmforeignCardInput.input.slice(0, 4), '-', vmforeignCardInput.input.slice(4, 10), '-', vmforeignCardInput.input.slice(10)].join('');\r\n vmforeignCardInput.input = checkInput;\r\n return;\r\n }\r\n if (checkInput.length == 16) {\r\n checkInput = vmforeignCardInput.input.match(new RegExp('.{1,4}', 'g')).join('-');\r\n vmforeignCardInput.input = checkInput;\r\n return;\r\n }\r\n if (checkInput.length == 19 && checkInput.indexOf(\"62\") == 0) {\r\n checkInput = [vmforeignCardInput.input.slice(0, 6), '-', vmforeignCardInput.input.slice(6)].join('');\r\n vmforeignCardInput.input = checkInput;\r\n return;\r\n }\r\n if (checkInput.length > 16) { \r\n checkInput = vmforeignCardInput.input.match(new RegExp('.{1,4}', 'g')).join('-');\r\n vmforeignCardInput.input = checkInput;\r\n return;\r\n }\r\n\r\n }\r\n }\r\n\r\n vmforeignCardInput.onBlur = function () {\r\n console.log(\"onBlur\");\r\n var isCard = vmforeignCardInput.CheckCard(vmforeignCardInput.input);\r\n vmforeignCardInput.foreignCardIsCard = isCard;\r\n vmforeignCardInput.cardError = generalError;\r\n vmforeignCardInput.foreignCardOnBlur();\r\n }\r\n\r\n vmforeignCardInput.sanitizeMe = function (text) {\r\n return $sce.trustAsHtml(text);\r\n }\r\n\r\n\r\n }\r\n\r\n angular.module('digitalWallet')\r\n .directive('foreignCardInput', function () {\r\n return {\r\n restrict: 'E',\r\n controllerAs: 'vmforeignCardInput',\r\n controller: foreignCardInputController,\r\n bindToController: true,\r\n transclude: true,\r\n scope: {\r\n foreignCardInputValue: '=foreignCardInputValue',\r\n foreignCardIsCard: '=foreignCardIsCard',\r\n foreignCardWatch: '=foreignCardWatch',\r\n foreignCardOnBlur: '&foreignCardOnBlur',\r\n CheckCard: '&checkCard',\r\n onChangeCallback: '&onChangeCallback',\r\n cardError: '=cardError',\r\n },\r\n templateUrl: 'app/shared/foreign-card-input.component/foreign-card-input.component.html'\r\n };\r\n });\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('chatNavigationService', chatNavigationService);\r\n\r\n chatNavigationService.$inject = ['lobbyUiService', 'lobbyCommService', 'appSettings'];\r\n\r\n function chatNavigationService(lobbyUiService, lobbyCommService, appSettings) {\r\n var pageUrl = '';\r\n var options = {\r\n \"abandonBehavior\": false,\r\n \"type\": \"3\",\r\n \"id\": 69,\r\n \"index\": 10,\r\n \"command\": \"open-chat\",\r\n \"caption\": \"צ\\\"אט עם נציג\",\r\n \"icon\": \"ico-chat\",\r\n \"url\": appSettings.chatUrl,\r\n \"restricted\": false,\r\n \"sso\": false,\r\n \"dependency\": null,\r\n \"state\": appSettings.chatUrl,\r\n \"hide\": false,\r\n \"googleAnalyticsKey\": null,\r\n \"devices\": null\r\n };\r\n\r\n return {\r\n navigate: function () {\r\n lobbyUiService.navigate(appSettings.chatUrl, options);\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('whatsAppNavigationService', whatsAppNavigationService);\r\n\r\n whatsAppNavigationService.$inject = ['appSettings', 'lobbyUiService', 'connection'];\r\n\r\n function whatsAppNavigationService(appSettings, lobbyUiService, connection) { \r\n return {\r\n navigate: function () {\r\n\r\n if (connection.isLoggedIn()) {\r\n connection.identificationServiceRequest().then(function () { }, function () { });\r\n }\r\n lobbyUiService.openExternal(appSettings.whatsappLink, null, true);\r\n //location.href = appSettings.whatsappLink;\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('leadNavigationService', leadNavigationService);\r\n\r\n leadNavigationService.$inject = ['lobbyUiService', 'chatNavigationService', 'whatsAppNavigationService', 'appData'];\r\n\r\n function leadNavigationService(lobbyUiService, chatNavigationService, whatsAppNavigationService, appData) {\r\n var navigationService;\r\n\r\n return {\r\n navigate: function () {\r\n if (!navigationService) {\r\n if (appData.metaData.IsCustomerServiceLead) {\r\n navigationService = chatNavigationService;\r\n }\r\n else if (appData.metaData.IsCustomerServiceLeadByWhatsApp) {\r\n navigationService = whatsAppNavigationService;\r\n }\r\n }\r\n\r\n navigationService && navigationService.navigate();\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module('paymentSpread', [])\r\n .run(function(){});\r\n})(window, window.angular);\n (function (window, angular) {\r\n 'use strict';\r\n angular.module('paymentSpread').config(paymentSpreardRoute);\r\n paymentSpreardRoute.$inject = ['$stateProvider'];\r\n function paymentSpreardRoute($stateProvider) {\r\n $stateProvider\r\n .state('dw.paymentSpreadWelcome',\r\n {\r\n url: \"/paymentSpread/welcome/:standalone\",\r\n cache: false,\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/paymentSpread/welcome/paymentSpreadWelcome.html\",\r\n controller: \"paymentSpreadWelcomeCtrl as vm\"\r\n }\r\n }\r\n })\r\n .state('dw.paymentSpreadBenefitsAndCards',\r\n {\r\n url: \"/paymentSpread/benefitAndCards\",\r\n cache: false,\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/paymentSpread/benefitsAndCards/benefitAndCards.html\",\r\n controller: \"paymentSpreadBenefitAndCardsCtrl as vm\"\r\n }\r\n }\r\n })\r\n .state('dw.paymentSpreadSummary',\r\n {\r\n url: \"/paymentSpread/summary\",\r\n cache: false,\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/paymentSpread/summary/paymentSpreadSummary.html\",\r\n controller: \"paymentSpreadSummaryCtrl as vm\"\r\n }\r\n }\r\n })\r\n\r\n }\r\n\r\n })(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('paymentSpread')\r\n .factory('paymentSpreadService', paymentSpreadService);\r\n\r\n paymentSpreadService.$inject = ['$q', 'connection', '$rootScope', 'lobbyUiService', 'errorService', '$timeout', 'csPopupService', '$state', 'googleAnalyticsService']\r\n\r\n function paymentSpreadService($q, connection, $rootScope, lobbyUiService, errorService, $timeout, csPopupService, $state, googleAnalyticsService) {\r\n\r\n\r\n var isSkipClear = false;\r\n var service = {\r\n title: \"3 תשלומים ללא ריבית\",\r\n key: 'paymentSpreadData',\r\n cardArr: [],\r\n cardFailedsArr: [],\r\n rangeJoin: {},\r\n benefitSpreadBelonging: [],\r\n belongSDate: '',\r\n name: '',\r\n isUpdate: false,\r\n benefitSpreadBelongingArr:\r\n [\r\n { id: \"308\", title: \"משיכת מזומן בחו\\\"ל\", desc: \"כל משיכת מזומן בחו\\\"ל תיפרס ל-3 תשלומים ללא ריבית\" },\r\n { id: \"309\", title: \"קניות באינטרנט\", desc: \"כל רכישה שתבוצע באתרי אינטרנט בינלאומיים תיפרס ל-3 תשלומים ללא ריבית\" },\r\n\r\n { id: \"310\", title: \"קניות בחו\\\"ל\", desc: \"כל קנייה בחו\\\"ל תיפרס ל-3 תשלומים ללא ריבית\" }\r\n\r\n ],\r\n getValidForPaymentSpread: function () {\r\n var that = this;\r\n var deferred = $q.defer();\r\n lobbyUiService.loader.show();\r\n connection.GetValidForPaymentSpread().then(function (data) {\r\n var res = data.Response.Status;\r\n if (res.Succeeded && data.ValidCards.length > 0) {\r\n\r\n var resObj = {};\r\n //update service\r\n resObj.cardArr = that.cardArr = data.ValidCards;\r\n resObj.rangeJoin = that.rangeJoin = data.RangeJoin;\r\n resObj.belongSDate = that.belongSDate = data.BelongSDate;\r\n resObj.benefitSpreadBelonging = that.benefitText(data.BenefitSpreadBelonging);\r\n resObj.isUpdate = service.isUpdate;\r\n\r\n\r\n deferred.resolve(resObj);\r\n }\r\n else {\r\n \r\n deferred.reject(data);\r\n }\r\n\r\n \r\n\r\n }\r\n , function (error) {\r\n \r\n deferred.reject(error);\r\n\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n \r\n return deferred.promise;\r\n },\r\n upDateRemoveBelongingForCards: function (req) {\r\n var deffered = $q.defer();\r\n lobbyUiService.loader.show();\r\n connection.UpDateRemoveBelongingForCards(req).then(function (response) {\r\n var res = response.Response.Status.SeverityCode.toLowerCase();\r\n if (res === \"s\" || res === \"i\") {\r\n service.benefitSpreadBelonging = req.BenefitSpreadBelonging;\r\n service.cardFailedsArr = response.attachedCards;\r\n deffered.resolve(res);\r\n }\r\n else {\r\n\r\n deferred.reject(res);\r\n\r\n }\r\n\r\n }, function (error) {\r\n deffered.reject(error);\r\n\r\n });\r\n \r\n return deffered.promise;\r\n },\r\n \r\n \r\n isLogin: function (state) {\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: state });\r\n return false;\r\n }\r\n\r\n return true;\r\n }, \r\n\r\n //Asked To Change To Full Name Because a bug that first name give title like Engineer.\r\n getName: function () {\r\n if (sessionStorage.getItem(\"appData\") && sessionStorage.getItem(\"appData\") != \"\" && sessionStorage.getItem(\"appData\").length > 0) {\r\n var appData = JSON.parse(sessionStorage.getItem(\"appData\"));\r\n var firstName = (appData.CustomerInfo.FirstName) ? appData.CustomerInfo.FirstName : \"\";\r\n var lastName = (appData.CustomerInfo.LastName) ? appData.CustomerInfo.LastName : \"\";\r\n service.name = firstName + \" \" + lastName;\r\n return service.name;\r\n \r\n }\r\n else {\r\n return \"\";\r\n }\r\n },\r\n benefitText: function (arr) {\r\n if (arr && arr.length > 0) {\r\n service.isUpdate = false;\r\n service.benefitSpreadBelonging = [];\r\n for (var i = 0; i < arr.length; i++) {\r\n if (service.isUpdate == false && arr[i].IsActive && arr[i].IsActive == true) {\r\n service.isUpdate = true;\r\n\r\n }\r\n var res = _.filter(service.benefitSpreadBelongingArr, { 'id': arr[i].BelongID });\r\n arr[i].BelongName = res[0].title;\r\n arr[i].BelongDesc = res[0].desc;\r\n service.benefitSpreadBelonging.push(arr[i]);\r\n\r\n }\r\n return service.benefitSpreadBelonging;\r\n }\r\n },\r\n\r\n removeClearFlag: function () {\r\n isSkipClear = false;\r\n },\r\n\r\n clearData: function () {\r\n if (!isSkipClear) {\r\n service.cardArr = [];\r\n service.cardFailedsArr = [];\r\n service.rangeJoin = {};\r\n service.benefitSpreadBelonging = [];\r\n service.isUpdate = false;\r\n }\r\n },\r\n\r\n goToBenefitsAndCards: function () {\r\n isSkipClear = true;\r\n $state.go('dw.paymentSpreadBenefitsAndCards');\r\n },\r\n goToSummary: function () {\r\n isSkipClear = true;\r\n $state.go('dw.paymentSpreadSummary');\r\n },\r\n //PopUps\r\n showErrorPopUp: function () {\r\n var popup = {};\r\n popup.template = 'app/paymentSpread/templates/paymentSpreadErrorPopUp.html'\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n\r\n\r\n\r\n }\r\n });\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, false);\r\n },\r\n \r\n rangeExpiredPopUp: function () {\r\n var popup = {};\r\n popup.template = 'app/paymentSpread/templates/paymentSpreadRangeExpiredPopUp.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"חזרה למסך ראשי\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n lobbyUiService.go('dw.lobby', {});\r\n }\r\n });\r\n\r\n\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, false);\r\n },\r\n noCardsPopUp: function () {\r\n var popup = {};\r\n popup.template = 'app/paymentSpread/templates/paymentSpreadNoCardsPopUp.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"חזרה למסך ראשי\",\r\n type: 'button-positive font-style3',\r\n onTap: function () {\r\n lobbyUiService.go('dw.lobby', {});\r\n }\r\n });\r\n\r\n\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, false);\r\n },\r\n errorPopup : function (msg) {\r\n var msgErr = '
    ' + msg\r\n '
    ';\r\n var popup = {};\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n \r\n }\r\n });\r\n\r\n lobbyUiService.popup.alert(msgErr, \"\", null, null, popup.btns, true, \"payment-spread-popup\");\r\n },\r\n getLatestDate : function (date1,date2)\r\n {\r\n var date2Moment = moment(date2, \"DD/MM/YYYY\");\r\n var date1Moment = moment(date1, \"DD/MM/YYYY\");\r\n if (date1Moment > date2Moment)\r\n {\r\n return date1;\r\n\r\n }\r\n else\r\n {\r\n return date2;\r\n }\r\n \r\n },\r\n\r\n getCurrentDate : function()\r\n {\r\n var today= new Date();\r\n var dd= today.getDate();\r\n var mm= today.getMonth() + 1;\r\n var yyyy= today.getFullYear();\r\n\r\n if(dd<10)\r\n {\r\n dd= '0'+dd;\r\n }\r\n\r\n if(mm<10)\r\n {\r\n mm='0'+mm;\r\n }\r\n var currentDate = dd + '/' + mm + '/' + yyyy;\r\n return currentDate\r\n }\r\n\r\n\r\n \r\n }\r\n return service;\r\n }\r\n\r\n\r\n\r\n})(window, window.angular);\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('paymentSpread')\r\n .controller('paymentSpreadWelcomeCtrl', paymentSpreadWelcomeCtrl);\r\n\r\n paymentSpreadWelcomeCtrl.$inject = [\r\n 'connection', 'lobbyUiService', '$scope', '$location', '$ionicScrollDelegate', '$q', 'paymentSpreadService', '$state', 'errorService', '$stateParams'\r\n ];\r\n\r\n function paymentSpreadWelcomeCtrl(connection, lobbyUiService, $scope, $location, $ionicScrollDelegate, $q, paymentSpreadService, $state, errorService, $stateParams) {\r\n\r\n var vm = this;\r\n vm.CardArr = [];\r\n vm.RangeJoin = {};\r\n vm.BenefitSpreadBelonging = [];\r\n vm.BelongSDate = \"\";\r\n vm.name = \"\";\r\n vm.isUpdate;\r\n vm.title = paymentSpreadService.title;\r\n if (paymentSpreadService.isLogin('dw.paymentSpreadWelcome')) {\r\n vm.name = paymentSpreadService.getName();\r\n paymentSpreadService.getValidForPaymentSpread().then(function (data) {\r\n vm.CardArr = data.cardArr;\r\n vm.RangeJoin = data.rangeJoin;\r\n vm.BelongSDate = data.belongSDate;\r\n vm.BenefitSpreadBelonging = data.benefitSpreadBelonging;\r\n vm.isUpdate = data.isUpdate;\r\n if (!vm.isUpdate) {\r\n ga('send', 'pageview', '/vp/transaction-layout/step1/join/');\r\n }\r\n else {\r\n ga('send', 'pageview', '/vp/transaction-layout-update/step1/welcome/');\r\n }\r\n\r\n }\r\n , function (err) {\r\n errorService.handleError(err, null, \"payment-spread-popup\");\r\n });\r\n\r\n\r\n }\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n\r\n paymentSpreadService.clearData();\r\n });\r\n\r\n vm.goToBenefitsAndCards = function () {\r\n paymentSpreadService.goToBenefitsAndCards();\r\n }\r\n\r\n\r\n vm.showRemovePopUp = function () {\r\n var popup = {\r\n };\r\n popup.template = 'app/paymentSpread/templates/paymentSpreadRemovePopUp.html';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"בעצם לא\",\r\n type: 'button-grey font-style3',\r\n onTap: function () {\r\n\r\n }\r\n });\r\n\r\n popup.btns.push(\r\n {\r\n text: \"כן, תודה\",\r\n type: 'button-positive font-style3',\r\n onTap: function () {\r\n\r\n vm.removeAllBenefitsAndCards(paymentSpreadService.upDateRemoveBelongingForCards)\r\n\r\n\r\n\r\n }\r\n });\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, false);\r\n ga('send', 'pageview', '/vp/transaction-layout-update/step-4/remove-service-popup');\r\n }\r\n\r\n vm.showErrorPopUp = function () {\r\n paymentSpreadService.showErrorPopUp();\r\n }\r\n vm.rangeExpiredPopUp = function () {\r\n paymentSpreadService.rangeExpiredPopUp();\r\n }\r\n vm.noCardsPopUp = function () {\r\n paymentSpreadService.noCardsPopUp();\r\n }\r\n vm.popUpSuccessRemove = function () {\r\n var successRemove = '
    ' +\r\n 'המבצע הוסר בהצלחה מכל הכרטיסים.
    ' +\r\n 'מעתה, ההוצאות יחויבו בהתאם לתנאי הכרטיס.' +\r\n '
    ' +\r\n '
    ' +\r\n 'חשוב לדעת - כל ההוצאות מיום ההצטרפות ועד עכשיו
    ' +\r\n 'נפרסו ל-3 תשלומים ללא ריבית בהתאם לבקשתך.' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n 'באפשרותך להצטרף שוב בתקופת המבצע.' +\r\n '
    ' +\r\n '
    ';\r\n var popup = {\r\n };\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"חזרה לדף הבית\",\r\n type: 'button-positive font-style3',\r\n onTap: function () {\r\n lobbyUiService.go('dw.lobby', {\r\n });\r\n }\r\n });\r\n\r\n lobbyUiService.popup.alert(successRemove, \"\", null, null, popup.btns, true);\r\n ga('send', 'pageview', '/vp/transaction-layout-update/step-5/popup-remove-success/');\r\n }\r\n\r\n vm.popupErrorRemove = function (arr) {\r\n var errorRemove = '
    ' + vm.name + ',' +\r\n ' לצערנו לא הצלחנו להסיר מהמבצע את הכרטיסים שמסתיימים ב- ' + arr.join(', ') +\r\n '.
    ' +\r\n '
    ' +\r\n 'יתר הכרטיסים הוסרו מהמבצע בהצלחה. מעתה, ההוצאות בכרטיסים אלו יחויבו בהתאם לתנאי הכרטיס.' +\r\n '
    ' +\r\n '
    ' +\r\n 'חשוב לדעת - כל ההוצאות מיום ההצטרפות ועד עכשיו
    ' +\r\n 'נפרסו ל-3 תשלומים ללא ריבית בהתאם לבקשתך.' +\r\n '
    ' +\r\n '
    ' +\r\n '
';\r\n var popup = {\r\n };\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"חזרה למסך ראשי\",\r\n type: 'button-positive font-style3',\r\n onTap: function () {\r\n lobbyUiService.go('dw.lobby', {\r\n });\r\n }\r\n });\r\n\r\n lobbyUiService.popup.alert(errorRemove, \"\", null, null, popup.btns, true);\r\n ga('send', 'pageview', '/vp/transaction-layout-update/step-5/popup-remove-success/');\r\n }\r\n vm.removeAllBenefitsAndCards = function (callback) {\r\n vm.CardArr.forEach(function (card) {\r\n card.IsBenefit = false;\r\n });\r\n vm.BenefitSpreadBelonging.forEach(function (ben) {\r\n ben.IsActive = false;\r\n });\r\n var req = {\r\n };\r\n req.CardArr = vm.CardArr;\r\n req.BenefitSpreadBelonging = vm.BenefitSpreadBelonging;\r\n callback(req).then(function (data) {\r\n paymentSpreadService.getValidForPaymentSpread().then(function (response) {\r\n vm.CardArr = response.cardArr;\r\n vm.RangeJoin = response.rangeJoin;\r\n vm.BelongSDate = response.belongSDate;\r\n vm.BenefitSpreadBelonging = response.benefitSpreadBelonging;\r\n vm.isUpdate = response.isUpdate;\r\n var cardRemovedFailed = [];\r\n vm.CardArr.forEach(function (card) {\r\n if (card.IsBenefit) {\r\n cardRemovedFailed.push(card.Card4LastDig);\r\n }\r\n });\r\n\r\n if (cardRemovedFailed && cardRemovedFailed.length > 0) {\r\n vm.popupErrorRemove(cardRemovedFailed);\r\n }\r\n else {\r\n vm.popUpSuccessRemove();\r\n }\r\n }\r\n , function (err) {\r\n errorService.handleError(err, null, \"payment-spread-popup\");\r\n });\r\n }\r\n , function (err) {\r\n errorService.handleError(err, null, \"payment-spread-popup\");\r\n });\r\n }\r\n vm.setWindowHeight = function () {\r\n\r\n var pageHeight = angular.element(\".view-container\")[0].offsetHeight;\r\n var smallBtn = angular.element(\".small-button\")[0];\r\n if (smallBtn) {\r\n var buttonHeight = smallBtn.offsetHeight;\r\n var contentHeight = parseInt(pageHeight - buttonHeight);\r\n if (parseInt(contentHeight) < 528)\r\n contentHeight = 528;\r\n angular.element(\".scroll\").css('min-height', contentHeight + \"px\");\r\n }\r\n else {\r\n var contentHeight = parseInt(screen.height - 32);\r\n if (parseInt(contentHeight) < 528)\r\n contentHeight = 528;\r\n angular.element(\".scroll\").css('min-height', screen.height - 32 + \"px\");\r\n }\r\n\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n\r\n vm.setWindowHeight();\r\n\r\n });\r\n\r\n $scope.standalone = $stateParams.standalone\r\n\r\n\r\n if ($scope.standalone) {\r\n $('#page-wrapper').addClass('standaloneBackBtn');\r\n }\r\n\r\n }\r\n\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('paymentSpread')\r\n .controller('paymentSpreadBenefitAndCardsCtrl', paymentSpreadBenefitAndCardsCtrl);\r\n\r\n paymentSpreadBenefitAndCardsCtrl.$inject = [\r\n 'connection', 'lobbyUiService', '$scope', '$location', '$ionicScrollDelegate', '$q', 'paymentSpreadService', '$state', '$timeout', 'errorService'\r\n ];\r\n\r\n function paymentSpreadBenefitAndCardsCtrl(connection, lobbyUiService, $scope, $location, $ionicScrollDelegate, $q, paymentSpreadService, $state, $timeout, errorService) {\r\n\r\n var vm = this;\r\n vm.title = paymentSpreadService.title;\r\n vm.name = paymentSpreadService.getName();\r\n vm.isEdited = false;\r\n $scope.$on('$ionicView.afterEnter', function (e, viewData) {\r\n $timeout(function () {\r\n paymentSpreadService.removeClearFlag();\r\n });\r\n\r\n }),\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n\r\n paymentSpreadService.clearData();\r\n });\r\n\r\n if ((paymentSpreadService.cardArr && paymentSpreadService.cardArr.length < 1) || (paymentSpreadService.benefitSpreadBelonging && paymentSpreadService.benefitSpreadBelonging.length < 1)) {\r\n if (paymentSpreadService.isLogin('dw.paymentSpreadBenefitsAndCards')) {\r\n paymentSpreadService.getValidForPaymentSpread().then(function (data) {\r\n vm.CardArr = data.cardArr;\r\n vm.RangeJoin = data.rangeJoin;\r\n vm.BelongSDate = data.belongSDate;\r\n vm.BenefitSpreadBelonging = data.benefitSpreadBelonging;\r\n vm.isUpdate = data.isUpdate;\r\n vm.startBenefit = paymentSpreadService.getLatestDate(vm.RangeJoin.StratTimeForBenefit, paymentSpreadService.getCurrentDate());\r\n if (!vm.isUpdate) {\r\n ga('send', 'pageview', '/vp/transaction-layout/step2/options/');\r\n }\r\n else {\r\n ga('send', 'pageview', '/vp/transaction-layout-update/step2/options/');\r\n }\r\n }\r\n , function (err) {\r\n errorService.handleError(err, null, \"payment-spread-popup\");\r\n });\r\n\r\n\r\n\r\n }\r\n }\r\n else {\r\n vm.isUpdate = paymentSpreadService.isUpdate;\r\n vm.CardArr = paymentSpreadService.cardArr;\r\n vm.RangeJoin = paymentSpreadService.rangeJoin;\r\n vm.BelongSDate = paymentSpreadService.belongSDate;\r\n vm.BenefitSpreadBelonging = paymentSpreadService.benefitSpreadBelonging;\r\n vm.todayDate = paymentSpreadService.getCurrentDate();\r\n \r\n }\r\n vm.moreInfo = function () {\r\n vm.showInfo = !vm.showInfo;\r\n if (vm.showInfo) {\r\n lobbyUiService.loader.show();\r\n document.querySelector(\"a.showInfo\").innerHTML = 'הבנתי, תודה\"הבנתי,';\r\n $timeout(function () {\r\n lobbyUiService.loader.hide();\r\n }, 500);\r\n\r\n }\r\n else {\r\n lobbyUiService.loader.show();\r\n document.querySelector(\"a.showInfo\").innerHTML = 'מידע נוסף\"מידע';\r\n vm.setAnchor(\"smallLettersScroll\");\r\n $timeout(function () {\r\n lobbyUiService.loader.hide();\r\n }, 500);\r\n }\r\n\r\n }\r\n\r\n vm.isActive = function (benefit) {\r\n if (benefit.IsActive)\r\n benefit.IsActive = false;\r\n else\r\n benefit.IsActive = true;\r\n };\r\n\r\n vm.isBenefit = function (card) {\r\n if (card.IsBenefit)\r\n card.IsBenefit = false;\r\n else\r\n card.IsBenefit = true;\r\n };\r\n\r\n vm.getValidForPaymentSpread = function () {\r\n //Save isUpdate because after get isUpdate always true;\r\n var isUpdateBeforeGet = vm.isUpdate;\r\n paymentSpreadService.getValidForPaymentSpread().then(function (data) {\r\n paymentSpreadService.isUpdate = isUpdateBeforeGet;\r\n $state.go('dw.paymentSpreadSummary');\r\n }, function (err) {\r\n errorService.handleError(err, null, \"payment-spread-popup\");\r\n });\r\n\r\n }\r\n\r\n vm.upDateRemoveBelongingForCards = function () {\r\n if (!vm.isUpdate || vm.isEdited) {\r\n if (vm.validateBeforeSave()) {\r\n var req = {};\r\n req.CardArr = vm.CardArr;\r\n req.BenefitSpreadBelonging = vm.BenefitSpreadBelonging;\r\n paymentSpreadService.upDateRemoveBelongingForCards(req).then(function (data) {\r\n\r\n vm.getValidForPaymentSpread();\r\n }, function (err) {\r\n errorService.handleError(err, null, \"payment-spread-popup\");\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n }\r\n else {\r\n if (!vm.benefitValid) {\r\n vm.setAnchor(\"benefitValid\");\r\n }\r\n else {\r\n vm.setAnchor(\"cardValid\");\r\n }\r\n }\r\n }\r\n else\r\n {\r\n vm.noChangesPopup();\r\n }\r\n\r\n };\r\n\r\n vm.validateBeforeSave = function () {\r\n vm.benefitValid = false;\r\n vm.cardValid = false;\r\n for (var i = 0; i < vm.CardArr.length; i++) {\r\n if (vm.CardArr[i].IsBenefit && vm.CardArr[i].IsBenefit == true) {\r\n vm.cardValid = true;\r\n break;\r\n }\r\n }\r\n for (var i = 0; i < vm.BenefitSpreadBelonging.length; i++) {\r\n if (vm.BenefitSpreadBelonging[i].IsActive && vm.BenefitSpreadBelonging[i].IsActive == true) {\r\n vm.benefitValid = true;\r\n break;\r\n }\r\n }\r\n\r\n if (vm.benefitValid == true && vm.cardValid == true) {\r\n return true;\r\n }\r\n else {\r\n\r\n return false;\r\n }\r\n\r\n }\r\n vm.setAnchor = function (id) {\r\n\r\n $location.hash(id);\r\n $ionicScrollDelegate.anchorScroll();\r\n }\r\n\r\n vm.clearAnchor = function () {\r\n\r\n $location.hash(\"\");\r\n $ionicScrollDelegate.anchorScroll();\r\n }\r\n vm.showErrorPopUp = function () {\r\n paymentSpreadService.showErrorPopUp();\r\n }\r\n vm.rangeExpiredPopUp = function () {\r\n paymentSpreadService.rangeExpiredPopUp();\r\n }\r\n vm.noCardsPopUp = function () {\r\n paymentSpreadService.noCardsPopUp();\r\n }\r\n vm.noChangesPopup = function () {\r\n var popup = {};\r\n popup.template = 'app/paymentSpread/templates/paymentSpreadNoChanges.html'\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n }\r\n });\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, false);\r\n }\r\n vm.setWindowHeight = function () {\r\n var pageHeight = angular.element(\".scroll-content\")[0].offsetHeight;\r\n var smallBtn = angular.element(\".green-button\")[0];\r\n if (smallBtn) {\r\n var buttonHeight = smallBtn.offsetHeight;\r\n var contentHeight = parseInt(pageHeight - buttonHeight);\r\n angular.element(\".scroll\").css('min-height', contentHeight + \"px\");\r\n }\r\n else {\r\n angular.element(\".scroll\").css('min-height', screen.height - 32 + \"px\");\r\n }\r\n\r\n }\r\n\r\n vm.editCheckBox = function () {\r\n if (!vm.isEdited) {\r\n vm.isEdited = true;\r\n }\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n\r\n vm.setWindowHeight();\r\n });\r\n\r\n }\r\n})();\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('paymentSpread')\r\n .controller('paymentSpreadSummaryCtrl', paymentSpreadSummaryCtrl);\r\n\r\n paymentSpreadSummaryCtrl.$inject = [\r\n 'connection', 'lobbyUiService', '$scope', '$location', '$ionicScrollDelegate', '$q', 'paymentSpreadService', '$state', '$timeout'\r\n ];\r\n\r\n function paymentSpreadSummaryCtrl(connection, lobbyUiService, $scope, $location, $ionicScrollDelegate, $q, paymentSpreadService, $state, $timeout) {\r\n\r\n var vm = this;\r\n vm.cardFailedsArr = paymentSpreadService.cardFailedsArr;\r\n vm.name = paymentSpreadService.getName();\r\n vm.title = paymentSpreadService.title;\r\n vm.isUpdate = paymentSpreadService.isUpdate;\r\n vm.CardArr = paymentSpreadService.cardArr;\r\n vm.RangeJoin = paymentSpreadService.rangeJoin;\r\n vm.BenefitSpreadBelonging = paymentSpreadService.benefitSpreadBelonging;\r\n vm.startBenefit = paymentSpreadService.getCurrentDate();\r\n \r\n\r\n $scope.$on('$ionicView.afterEnter', function (e, viewData) {\r\n $timeout(function () {\r\n paymentSpreadService.removeClearFlag();\r\n });\r\n\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n paymentSpreadService.clearData();\r\n });\r\n\r\n vm.goToLobby = function () {\r\n $state.go('dw.lobby');\r\n }\r\n vm.showErrorPopUp = function () {\r\n paymentSpreadService.showErrorPopUp();\r\n }\r\n vm.rangeExpiredPopUp = function () {\r\n paymentSpreadService.rangeExpiredPopUp();\r\n }\r\n vm.noCardsPopUp = function () {\r\n paymentSpreadService.noCardsPopUp();\r\n }\r\n\r\n vm.cardsError = function () {\r\n for (var i; i < vm.cardFailedsArr.length; i++) {\r\n //if (!vm.cardFailedsArr[i].IsBenefit)\r\n // {\r\n vm.showErrCard.push(vm.cardFailedsArr[i].Card4LastDig)\r\n\r\n //}\r\n }\r\n }\r\n vm.cardsError();\r\n vm.setWindowHeight = function () {\r\n var pageHeight = angular.element(\".scroll-content\")[0].offsetHeight;\r\n var smallBtn = angular.element(\".green-button\")[0];\r\n if (smallBtn) {\r\n var buttonHeight = smallBtn.offsetHeight;\r\n var contentHeight = parseInt(pageHeight - buttonHeight);\r\n angular.element(\".scroll\").css('min-height', contentHeight + \"px\");\r\n }\r\n else {\r\n angular.element(\".scroll\").css('min-height', screen.height - 32 + \"px\");\r\n }\r\n\r\n }\r\n\r\n vm.sendGa = function () {\r\n var onlineShopping = false;\r\n var abroadShopping = false;\r\n var cashWithdrawl = false;\r\n\r\n vm.BenefitSpreadBelonging.forEach(function (ben) {\r\n if (ben.IsActive) {\r\n if (ben.BelongID == \"308\") {\r\n cashWithdrawl = true;\r\n }\r\n if (ben.BelongID == \"309\") {\r\n onlineShopping = true;\r\n }\r\n else {\r\n abroadShopping = true;\r\n }\r\n }\r\n\r\n });\r\n\r\n if (!vm.isUpdate) {\r\n ga('send', 'pageview', '/vp/transaction-layout/step3/thank-you/?online-shopping=' + onlineShopping + '&abroad-shopping=' + abroadShopping + '&cash-withdrawl=' + cashWithdrawl);\r\n }\r\n else {\r\n ga('send', 'pageview', '/vp/transaction-layout-update/step3/thank-you/?online-shopping=' + onlineShopping + '&abroad-shopping=' + abroadShopping + '&cash-withdrawl=' + cashWithdrawl);\r\n }\r\n\r\n }\r\n vm.sendGa();\r\n angular.element(document).ready(function () {\r\n\r\n vm.setWindowHeight();\r\n })\r\n\r\n }\r\n\r\n\r\n\r\n})();\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U', []);\r\n})(window, window.angular);\r\n\n(function(window, angular) {\r\n \"use strict\";\r\n\r\n angular.module(\"Cal4U\").config(accountRoute);\r\n\r\n accountRoute.$inject = [\"$stateProvider\"];\r\n\r\n function accountRoute($stateProvider) {\r\n $stateProvider\r\n .state(\"dw.wantLoan\", {\r\n url: \"/account/wantLoan\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/wantLoan.html\",\r\n controller: \"wantLoanController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.myaccount\", {\r\n url: \"/account/myaccount\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/myaccount.html\",\r\n controller: \"myAccountController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.mychat\", {\r\n url: \"/account/mychat\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/mychat.html\",\r\n controller: \"myChatController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.pieSummary\", {\r\n url: \"/account/pieSummary\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/pieSummary.html\",\r\n controller: \"pieSummaryController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.info\", {\r\n url: \"/account/info\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/info.html\",\r\n controller: \"infoController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.bankCharges\", {\r\n url: \"/account/bankCharges\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/bankCharges.html\",\r\n controller: \"bankChargesController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.contactMe\", {\r\n url: \"/account/contactMe\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/contactMe.html\",\r\n controller: \"contactMeController\"\r\n }\r\n }\r\n })\r\n\r\n .state(\"dw.myReferrals\", {\r\n url: \"/account/myReferrals/:standalone\",\r\n cache: false,\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/myReferrals.html\",\r\n controller: \"myReferralsController\"\r\n }\r\n }\r\n })\r\n\r\n .state(\"dw.wantCard\", {\r\n url: \"/account/wantCard/:code\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/wantCard.html\",\r\n controller: \"wantCardController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.expressLoan\", {\r\n url: \"/account/expressLoan\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/expressLoan.html\",\r\n controller: \"expressLoanController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.fixedPayout\", {\r\n url: \"/account/fixedPayout\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/fixedPayout.html\",\r\n controller: \"fixedPayoutController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.bankChargesTransactionsDetails\", {\r\n url: \"/account/bankChargesTransactionsDetails/:accountIndex\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/bankChargesTransactionsDetails.html\",\r\n controller: \"bankChargesTransactionsDetailsController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.transactionDetails\", {\r\n url: \"/account/transactionDetails/:accountIndex/:cardIndex/:transactionIndex\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/transactionDetails.html\",\r\n controller: \"transactionDetailsController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.calchoiceStatus\", {\r\n url: \"/account/calchoiceStatus/:accountIndex/:cardIndex\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/calchoiceStatus.html\",\r\n controller: \"calChoiceStatusController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.calchoicePayoutnoparams\", {\r\n url: \"/account/calchoicePayout\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/calchoicePayout.html\",\r\n controller: \"calchoicePayoutController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.calchoicePayout\", {\r\n url: \"/account/calchoicePayout/:accountIndex/:cardIndex/:stageFlag\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/calchoicePayout.html\",\r\n controller: \"calchoicePayoutController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.pieCommitments\", {\r\n url: \"/account/pieCommitments/:selectedBankAccountIndex\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/pieCommitments.html\",\r\n controller: \"commitmentsController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.termsPage\", {\r\n url: \"/account/termsPage/:url/:title\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/termsPage.html\",\r\n controller: \"termsPageController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.enlarge-credit-frame\", {\r\n url: \"/account/enlargecreditframe\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/enlargeCreditFrame2.html\",\r\n controller: \"enlargeCreditFrameController\"\r\n }\r\n }\r\n })\r\n .state(\"dw.debit-spread\", {\r\n url: \"/account/debitSpread/:step\",\r\n //url: \"/account/debitSpread/{step}\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/debitSpread.html\",\r\n controller: \"debitSpreadController\"\r\n },\r\n params: {\r\n step: null\r\n }\r\n }\r\n })\r\n .state(\"dw.margarita\", {\r\n url: \"/account/margarita/:confirmationId\",\r\n //url: \"/account/debitSpread/{step}\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/margarita.html\",\r\n controller: \"margaritaController\"\r\n },\r\n params: {\r\n step: null\r\n }\r\n }\r\n })\r\n .state(\"dw.trans-filter\", {\r\n url: \"/account/transFilter\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/transFilter.html\",\r\n controller: \"transFilterController as vm\"\r\n }\r\n }\r\n })\r\n .state(\"dw.stop-standing-order\", {\r\n url: \"/account/stopStandingOrder/:standalone\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/stopStandingOrder.html\",\r\n controller: \"stopStandingOrderController as vmStopStandingOrder\",\r\n resolve: {\r\n approval: function(stopStandingOrderService) {\r\n return stopStandingOrderService.handleAuthentication();\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .state(\"dw.standing-orders-main\", {\r\n url: \"/account/StandingOrdersMain/:standalone\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/StandingOrdersMain.html\",\r\n controller: \"StandingOrdersMainController as vmStandingOrdersMain\"\r\n }\r\n }\r\n })\r\n .state(\"dw.update-address\", {\r\n url: \"/account/updateAddress/:updateAddressRedirect\",\r\n views: {\r\n contentBody: {\r\n templateUrl: \"app/account/templates/updateAddress.html\",\r\n controller: \"updateAddressController\"\r\n }\r\n }\r\n });\r\n }\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('bankChargesController', bankChargesController);\r\n\r\n bankChargesController.$inject = [\r\n '$scope', 'connection', 'appData', 'lobbyUiService', '$q', 'utilService', 'errorService', '$ionicScrollDelegate', 'googleAnalyticsService', '$timeout', '$ionicSlideBoxDelegate'\r\n ];\r\n\r\n function bankChargesController($scope, connection, appData, lobbyUiService, $q, utilService, errorService, $ionicScrollDelegate, googleAnalyticsService, $timeout, $ionicSlideBoxDelegate) {\r\n\r\n $scope.appData = appData;\r\n $scope.lobbyUiService = lobbyUiService;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n $scope.gClass = \"details-grid\";\r\n $scope.title = \"חיובים בבנק\";\r\n $scope.members = {\r\n selectedFromIndex: 0,\r\n selectedToIndex: 0\r\n };\r\n\r\n $scope.init = function () {\r\n\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.bankCharges' }, { location: 'replace' });\r\n return;\r\n }\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('bankChargeScroll').scrollTop();\r\n }, 0);\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Bank charges', eventName: 'Bank charges', action: 'Enter' });\r\n\r\n $scope.selectedBankAccount = ($scope.appData.selectedBankAccountIndex) ? $scope.appData.BankAccounts[$scope.appData.selectedBankAccountIndex] : $scope.appData.BankAccounts[0];\r\n\r\n\r\n\r\n var d = new Date(),\r\n currentMonth = d.getMonth(),\r\n currentYear = d.getFullYear(),\r\n d = new Date(currentYear, currentMonth),\r\n dates = [];\r\n\r\n d.setMonth(d.getMonth() - 18);\r\n var realMonth;\r\n for (var i = 0; i < 21; i++) {\r\n\r\n realMonth = d.getMonth() + 1;\r\n realMonth = realMonth < 10 ? '0' + realMonth : realMonth;\r\n dates.push('' + realMonth + '/' + d.getFullYear());\r\n d.setMonth(d.getMonth() + 1);\r\n }\r\n\r\n $scope.dateList = dates;\r\n setDefaultToAndFromDates();\r\n $scope.checkAndSetDebitsByDates();\r\n };\r\n\r\n function setDefaultToAndFromDates() {\r\n\r\n $scope.selectedFromDate = ($scope.appData.selectedFromDate) ? $scope.appData.selectedFromDate : $scope.appData.metaData.DefaultFromMonth + '/' + $scope.appData.metaData.DefaultFromYear;\r\n $scope.selectedToDate = ($scope.appData.selectedToDate) ? $scope.appData.selectedToDate : $scope.appData.metaData.DefaultToMonth + '/' + $scope.appData.metaData.DefaultToYear;\r\n $scope.members.selectedFromIndex = checkSelectedIndex($scope.selectedFromDate);\r\n $scope.members.selectedToIndex = checkSelectedIndex($scope.selectedToDate);\r\n\r\n function checkSelectedIndex(selectedDate) {\r\n for (var i = 0; i < $scope.dateList.length; i++) {\r\n if ($scope.dateList[i].localeCompare(selectedDate) == 0) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n }\r\n\r\n $scope.accountNext = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').next();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n }\r\n\r\n $scope.accountPrev = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').previous();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n }\r\n\r\n $scope.accountChanged = function (index) {\r\n setDefaultToAndFromDates();\r\n $scope.gridDebitsData = null;\r\n $scope.appData.selectedBankAccountIndex = index;\r\n $scope.selectedBankAccount = $scope.appData.BankAccounts[index];\r\n $scope.checkAndSetDebitsByDates();\r\n };\r\n\r\n $scope.checkAndSetDebitsByDates = function () {\r\n getCreditFrameSummary();\r\n\r\n $scope.getDebitsByDates();\r\n\r\n };\r\n\r\n $scope.getTransactions = function (index) {\r\n $scope.appData.selectedToDate = $scope.selectedToDate;\r\n $scope.appData.selectedFromDate = $scope.selectedFromDate;\r\n $scope.appData.Transactions = $scope.selectedBankAccount.bankChargesDebits[index];\r\n lobbyUiService.go('dw.bankChargesTransactionsDetails', { accountIndex: $scope.selectedBankAccountIndex });\r\n };\r\n\r\n function debitsToGrid(array) {\r\n\r\n var data = [], rowConfig = [];\r\n var headers = ['תאריך', 'כרטיס', '# עסקות', 'סכום חיוב'];\r\n var obj = [];\r\n\r\n\r\n array.forEach(function (line) {\r\n obj.push(utilService.splitDate(line.Date));\r\n obj.push(line.CardLast4Digits);\r\n obj.push(line.TransactionsCount);\r\n obj.push(line.Amount.ReversedFormattedValue);\r\n data.push(obj);\r\n obj = [];\r\n rowConfig.push({ clickable: true, cls: '' });\r\n });\r\n\r\n return { headers: headers, rows: data, rowConfig: rowConfig };\r\n }\r\n\r\n function getCreditFrameSummary() {\r\n $scope.selectedBankAccount.creditError = false;\r\n if (!$scope.selectedBankAccount.HasCreditFrames == true) {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.getCreditFrame($scope.selectedBankAccount.AccountID)\r\n .then(function (response) {\r\n $scope.selectedBankAccount.CreditFrame = {};\r\n $scope.selectedBankAccount.CreditFrame.MaxLimitAmount = response.MaxLimitAmount.ReversedFormattedValue;\r\n $scope.selectedBankAccount.CreditFrame.ObligationsAmount = response.ObligationsAmount.ReversedFormattedValue;\r\n $scope.selectedBankAccount.CreditFrame.ObligationsAmountFrameB = response.ObligationsAmountFrameB.ReversedFormattedValue;\r\n $scope.selectedBankAccount.CreditFrame.DisplayObligationsAmountFrameB = response.ObligationsAmountFrameB.Value > 0;\r\n $scope.selectedBankAccount.CreditFrame.ManagementLevel = response.ManagementLevel;\r\n $scope.selectedBankAccount.CreditFrame.ObligationsPercent = response.ObligationsPercent.ReversedFormattedValue;\r\n $scope.selectedBankAccount.CreditFrame.Text = response.Comments[0].Text;\r\n $scope.selectedBankAccount.HasCreditFrames = true;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n $scope.selectedBankAccount.creditError = true;\r\n errorService.handleError(error, getCreditFrameSummary);\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n $scope.getDebitsByDates = function () {\r\n\r\n $scope.selectedFromDate = $scope.dateList[$scope.members.selectedFromIndex];\r\n $scope.selectedToDate = $scope.dateList[$scope.members.selectedToIndex];\r\n var fromDateArray = $scope.selectedFromDate.split(\"/\"),\r\n toDateArray = $scope.selectedToDate.split(\"/\");\r\n if (new Date(fromDateArray[1], fromDateArray[0]).getTime() > new Date(toDateArray[1], toDateArray[0]).getTime()) {\r\n if (navigator.notification)\r\n navigator.notification.alert(\r\n 'טווח התאריכים שהוזן אינו תקין.',\r\n function () { /*Do Nothing*/ },\r\n ' ',\r\n 'סגור'\r\n );\r\n else {\r\n lobbyUiService.popup.alert('טווח התאריכים שהוזן אינו תקין', 'נא לשים לב');\r\n }\r\n return;\r\n }\r\n getBankDebits();\r\n\r\n function getBankDebits() {\r\n\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n\r\n var selectedBankAccount = $scope.appData.selectedBankAccountIndex || 0;\r\n var promise = connection.getBankDebits($scope.appData.BankAccounts[selectedBankAccount].AccountID, 'A', 2, fromDateArray[0], toDateArray[0], fromDateArray[1], toDateArray[1], '');\r\n promise.then(function (response) {\r\n\r\n $scope.appData.BankAccounts[$scope.appData.selectedBankAccountIndex].bankChargesDebits = response.Debits;\r\n $scope.appData.BankAccounts[$scope.appData.selectedBankAccountIndex].TotalAmount = response.TotalAmount;\r\n $scope.appData.BankAccounts[$scope.appData.selectedBankAccountIndex].TotalTransactionsCount = response.TotalTransactionsCount;\r\n $scope.gridDebitsData = debitsToGrid($scope.selectedBankAccount.bankChargesDebits);\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n $scope.gridDebitsData = null;\r\n errorService.handleError(error, getBankDebits);\r\n });\r\n }\r\n }\r\n\r\n $scope.goToCommitments = function () {\r\n $scope.appData.selectedToDate = $scope.selectedToDate;\r\n $scope.appData.selectedFromDate = $scope.selectedFromDate;\r\n lobbyUiService.go('dw.pieCommitments', { selectedBankAccountIndex: $scope.appData.selectedBankAccountIndex });\r\n };\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('bankChargesTransactionsDetailsController', bankChargesTransactionsDetailsController);\r\n\r\n bankChargesTransactionsDetailsController.$inject = [\r\n '$scope', 'connection', 'appData', 'lobbyUiService', 'utilService', 'errorService', '$ionicScrollDelegate', 'googleAnalyticsService', '$q', '$timeout'\r\n ];\r\n\r\n function bankChargesTransactionsDetailsController($scope, connection, appData, lobbyUiService, utilService, errorService, $ionicScrollDelegate, googleAnalyticsService, $q, $timeout) {\r\n\r\n $scope.appData = appData;\r\n $scope.lobbyUiService = lobbyUiService;\r\n $scope.gClass = \"details-grid\";\r\n $scope.title = \"פירוט עסקות\";\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.transactionsShowing = {\r\n isShowing: false,\r\n showLastTransactions: false,\r\n showNextTransactions: false,\r\n showTransactions: '',\r\n loadMore: false\r\n };\r\n\r\n $scope.init = function () {\r\n\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login');\r\n return;\r\n }\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('resultsHandler').scrollTop();\r\n }, 0);\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Bank Charges transactions details', eventName: 'Bank Charges transactions details', action: 'Enter' });\r\n\r\n\r\n $scope.selectedBankAccountIndex = $scope.appData.selectedBankAccountIndex;\r\n $scope.selectedBankAccount = $scope.appData.BankAccounts[$scope.selectedBankAccountIndex];\r\n\r\n $scope.transactionsGridData = {};\r\n getCurrentCardIndex();\r\n getTransactionsByDate();\r\n };\r\n\r\n function getCurrentCardIndex() {\r\n if ($scope.appData.Transactions) {\r\n\r\n for (var i = 0; i < $scope.selectedBankAccount.Cards.length; i++) {\r\n if ($scope.appData.Transactions.CardId == $scope.selectedBankAccount.Cards[i].Id) {\r\n\r\n $scope.selectedCard = $scope.selectedBankAccount.Cards[i];\r\n $scope.appData.shownCardIndex = i;\r\n if (!$scope.selectedCard.CardsSpecs && $scope.selectedCard.IsInternetPermitted) {\r\n getCardSpec();\r\n }\r\n return;\r\n }\r\n }\r\n\r\n }\r\n\r\n function getCardSpec() {\r\n if (!$scope.selectedCard.IsInternetPermitted) {\r\n return false;\r\n }\r\n connection.getCardData($scope.selectedCard.Id).then(function (response) {\r\n $scope.selectedCard.CardsSpecs = response.CardSpecs;\r\n }, function (error) {\r\n errorService.handleError(error, getCardSpec);\r\n });\r\n }\r\n }\r\n\r\n function getTransactionsByDate() {\r\n if (!$scope.selectedCard.IsInternetPermitted) {\r\n return;\r\n }\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n\r\n var promise = connection.getTransactionsFromDateToDate($scope.appData.Transactions.CardId, $scope.appData.Transactions.Date, $scope.appData.Transactions.Date);\r\n promise.then(function (response) {\r\n $scope.appData.TransactionsDetails = response.Transactions;\r\n $scope.transactionGridData = transactionsToGrid($scope.appData.TransactionsDetails);\r\n $scope.HasNextPage = response.HasNextPage;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n errorService.handleError(error, getTransactionsByDate);\r\n });\r\n }\r\n\r\n $scope.loadNextTransactions = function () {\r\n\r\n //console.log(\"load next trans\");\r\n\r\n var deferred = $q.defer();\r\n\r\n if ($scope.HasNextPage) {\r\n $scope.HasNextPage = false;\r\n $scope.transactionsShowing.loadMore = true;\r\n\r\n connection.getTransNextPage().then(function (response) {\r\n $scope.comments = response.Comments;\r\n $scope.HasNextPage = response.HasNextPage;\r\n $scope.appData.TransactionsDetails = $scope.appData.TransactionsDetails.concat(response.Transactions);\r\n $scope.transactionGridData = transactionsToGrid($scope.appData.TransactionsDetails);\r\n $scope.transactionsShowing.loadMore = false;\r\n deferred.resolve();\r\n }, function () {\r\n $scope.transactionsShowing.loadMore = false;\r\n deferred.reject();\r\n });\r\n\r\n } else {\r\n deferred.resolve();\r\n }\r\n\r\n return deferred.promise;\r\n };\r\n\r\n $scope.goToPie = function () {\r\n $scope.appData.fromDate = $scope.appData.Transactions.Date;\r\n $scope.appData.toDate = $scope.appData.Transactions.Date;\r\n getSectorsData();\r\n\r\n function getSectorsData() {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.getSectorSummary($scope.selectedCard.Id, $scope.appData.fromDate, $scope.appData.toDate).then(function (response) {\r\n $scope.appData.pieData = response;\r\n lobbyUiService.go('dw.pieSummary');\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n errorService.handleError(error, getSectorsData);\r\n });\r\n }\r\n };\r\n\r\n $scope.getTransaction = function (index) {\r\n lobbyUiService.go('dw.transactionDetails', { accountIndex: $scope.selectedBankAccountIndex, cardIndex: '-1', transactionIndex: index });\r\n };\r\n\r\n function transactionsToGrid(array) {\r\n\r\n var data = [], rowCofig = [];\r\n var headers = ['תאריך', 'שם עסק', 'סכום עסקה', 'סכום חיוב'];\r\n var obj = [];\r\n\r\n array.forEach(function (line) {\r\n obj.push(utilService.splitDate(line.Date));\r\n obj.push(line.MerchantDetails.Name);\r\n obj.push(line.Amount.ReversedFormattedValue);\r\n obj.push(line.DebitAmount.ReversedFormattedValue);\r\n data.push(obj);\r\n obj = [];\r\n rowCofig.push({ clickable: true, cls: '' });\r\n });\r\n\r\n return { headers: headers, rows: data, rowConfig: rowCofig };\r\n }\r\n\r\n $scope.init();\r\n }\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('calchoicePayoutController', calchoicePayoutController);\r\n\r\n calchoicePayoutController.$inject = [\r\n '$scope', 'connection', 'appData', 'lobbyUiService', 'errorService', 'utilService', '$timeout', '$ionicScrollDelegate', 'googleAnalyticsService', '$ionicSlideBoxDelegate', '$state'\r\n ];\r\n\r\n function calchoicePayoutController($scope, connection, appData, lobbyUiService, errorService, utilService, $timeout, $ionicScrollDelegate, googleAnalyticsService, $ionicSlideBoxDelegate, $state) {\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.title = \"פירעון CalChoice\";\r\n $scope.utils = utilService;\r\n $scope.lobbyUiService = lobbyUiService;\r\n $scope.steps = ['1. בחירת סוג פרעון', '2. בחירת סכום לפרעון', '3. אישור נתוני הבקשה', '4. אישור ביצוע'];\r\n $scope.currentStage = 1;\r\n $scope.gClass = \"details-grid\";\r\n //$scope.selectedBankAccountIndex = lobbyUiService.getParams('accountIndex') ? parseInt(lobbyUiService.getParams('accountIndex')) : 0;\r\n $scope.shownCardIndex = lobbyUiService.getParams('cardIndex');\r\n //$scope.goToStage2Flag = lobbyUiService.getParams('stageFlag');\r\n $scope.years = [(new Date().getFullYear()), (new Date().getFullYear()) + 1, (new Date().getFullYear()) + 2, (new Date().getFullYear()) + 3, (new Date().getFullYear()) + 4, (new Date().getFullYear()) + 5];\r\n $scope.months = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\r\n $scope.isLogin = true;\r\n\r\n $scope.members = {\r\n selectedPayoutAmountType: 0\r\n };\r\n\r\n $scope.selectedPayoutType =\r\n {\r\n type: 1\r\n };\r\n\r\n $scope.requestedAmount = {\r\n amount: 0,\r\n formated: ''\r\n }\r\n\r\n Number.prototype.formatMoney = function (c, d, t) {\r\n var n = this,\r\n c = isNaN(c = Math.abs(c)) ? 2 : c,\r\n d = d == undefined ? \".\" : d,\r\n t = t == undefined ? \",\" : t,\r\n s = n < 0 ? \"-\" : \"\",\r\n i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + \"\",\r\n j = i.length,\r\n j = j > 3 ? j % 3 : 0;\r\n return s + (j ? i.substr(0, j) + t : \"\") + i.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : \"\");\r\n };\r\n\r\n var moveNext = function (elem, next) {\r\n if (angular.element(elem).val().length == 3) {\r\n angular.element('#' + next).focus();\r\n }\r\n return true;\r\n\r\n }\r\n\r\n $scope.init = function () {\r\n\r\n $scope.appData.backOverrideFN = null;\r\n\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.calchoicePayout' }, { location: 'replace' });\r\n return;\r\n }\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('calchoiceScroll').scrollTop();\r\n }, 0);\r\n\r\n googleAnalyticsService.insertEvent({ page: 'CalChoice payment', eventName: 'CalChoice Payment', action: 'Enter' });\r\n\r\n $scope.backBtn = \"back\";\r\n\r\n angular.element('#cvv1').bind('keyup', function (event) {\r\n moveNext(this, 'expMonth1');\r\n });\r\n\r\n angular.element('#cvv2').bind('keyup', function (event) {\r\n moveNext(this, 'expMonth2');\r\n\r\n });\r\n\r\n angular.element('#cvv3').bind('keyup', function (event) {\r\n moveNext(this, 'expMonth3');\r\n });\r\n\r\n var calchoiceAccounts = [];\r\n\r\n for (var i = 0; i < $scope.appData.BankAccounts.length; i++) {\r\n var cardsToDisplay = [];\r\n for (var j = 0; j < $scope.appData.BankAccounts[i].Cards.length; j++) {\r\n if ($scope.appData.BankAccounts[i].Cards[j].IsCalChoiceCard) {\r\n $scope.appData.BankAccounts[i].Cards[j].CardIndex = j;\r\n cardsToDisplay.push($scope.appData.BankAccounts[i].Cards[j]);\r\n }\r\n }\r\n if (cardsToDisplay.length > 0) {\r\n $scope.appData.BankAccounts[i].calChoiceCards = cardsToDisplay;\r\n $scope.appData.BankAccounts[i].AccountIndex = i;\r\n $scope.appData.BankAccounts[i].CalChoiceAccountIndex = calchoiceAccounts.length;\r\n calchoiceAccounts.push($scope.appData.BankAccounts[i]);\r\n }\r\n }\r\n\r\n $scope.accountsToDisplay = calchoiceAccounts;\r\n\r\n if ($scope.accountsToDisplay.length == 0) //TODO What to display when no calchoice cards are available?\r\n {\r\n lobbyUiService.popup.calchoiceLead();\r\n return;\r\n }\r\n\r\n $scope.selectedBankAccountIndex = $scope.appData.BankAccounts[$scope.appData.selectedBankAccountIndex].CalChoiceAccountIndex;\r\n\r\n if (!$scope.selectedBankAccountIndex || $scope.selectedBankAccountIndex == 'undefined') {\r\n\r\n $scope.selectedBankAccountIndex = 0;\r\n }\r\n\r\n $scope.selectedBankAccount = $scope.accountsToDisplay[$scope.selectedBankAccountIndex];\r\n\r\n if (isNaN($scope.shownCardIndex) || !$scope.shownCardIndex)\r\n $scope.shownCardIndex = 0;\r\n\r\n $scope.selectedCard = $scope.selectedBankAccount.calChoiceCards[$scope.shownCardIndex];\r\n\r\n $scope.accountChanged($scope.selectedBankAccountIndex, $scope.shownCardIndex);\r\n\r\n\r\n $scope.cardAuth = {\r\n cvv: '',\r\n expMonth: '',\r\n expYear: ''\r\n }\r\n\r\n $scope.getPayoutOptions();\r\n };\r\n\r\n $scope.accountNext = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').next();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n }\r\n\r\n $scope.accountPrev = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').previous();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n }\r\n\r\n $scope.accountChanged = function (index, cardIndex) {\r\n $scope.selectedBankAccountIndex = parseInt(index);\r\n $scope.selectedBankAccount = $scope.accountsToDisplay[index];\r\n $scope.appData.selectedBankAccountIndex = parseInt($scope.selectedBankAccount.AccountIndex);\r\n\r\n\r\n if (cardIndex) {\r\n //$scope.cardChanged(cardIndex);\r\n updateCurrentCard(cardIndex);\r\n\r\n $scope.updateCardSlider(cardIndex);\r\n } else {\r\n\r\n if ($scope.selectedBankAccount.calChoiceCards.length == 1) {\r\n for (var i = 0; i < $scope.selectedBankAccount.Cards.length; i++) {\r\n if ($scope.selectedBankAccount.Cards[i].Id == $scope.selectedBankAccount.calChoiceCards[index].Id) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n updateCurrentCard(index);\r\n }\r\n else {\r\n //$scope.cardChanged(0);\r\n updateCurrentCard(0);\r\n }\r\n\r\n $scope.updateCardSlider(0);\r\n }\r\n };\r\n\r\n $scope.cardChanged = function (index) {\r\n if ($scope.selectedBankAccount.calChoiceCards.length > 1) {\r\n for (var i = 0; i <= $scope.selectedBankAccount.Cards.length; i++) {\r\n if ($scope.selectedBankAccount.Cards[i].Id == $scope.selectedBankAccount.calChoiceCards[index].Id) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n updateCurrentCard(index);\r\n }\r\n };\r\n\r\n function updateCurrentCard(index) {\r\n if ($scope.accountsToDisplay) {\r\n $scope.shownCardIndex = index;\r\n $scope.selectedCard = $scope.selectedBankAccount.Cards[$scope.shownCardIndex];\r\n //$scope.appData.shownCardIndex = $scope.selectedCard.CardIndex;\r\n $scope.appData.shownCardIndex = index;\r\n $scope.getPayoutOptions();\r\n }\r\n }\r\n\r\n $scope.updateAccountSlider = function (index) {\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').update();\r\n }, 200).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').slide(index);\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n $scope.updateCardSlider = function (index) {\r\n\r\n $scope.members.slideBoxReady = false;\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('c4uCardsHandler').update();\r\n }, 600).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('c4uCardsHandler').slide(index);\r\n }).finally(function () {\r\n $scope.members.slideBoxReady = true;\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n $scope.to = function (index) {\r\n $ionicSlideBoxDelegate.$getByHandle('c4uCardsHandler').slide(index);\r\n }\r\n\r\n $scope.getPayoutOptions = function () {\r\n\r\n if (!$scope.selectedCard.EligibilityStatus) {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.getPaymentsOptions($scope.selectedCard.Id).then(function (response) {\r\n var PayoutOptions = response.PaymentsOptions;\r\n $scope.selectedCard.PayoutOptions = PayoutOptions;\r\n setLoanParams();\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n errorService.handleError(error, $scope.getPayoutOptions);\r\n });\r\n } else\r\n setLoanParams();\r\n\r\n function setLoanParams() {\r\n for (var i = 0; i < $scope.selectedCard.PayoutOptions.length; i++)\r\n if ($scope.selectedCard.PayoutOptions[i].IsDefault)\r\n $scope.selectedPayoutType.type = $scope.selectedCard.PayoutOptions[i].Code;\r\n };\r\n };\r\n\r\n $scope.goToStage2 = function () {\r\n\r\n $scope.appData.showSpinner = true;\r\n\r\n lobbyUiService.loader.show();\r\n\r\n $scope.appData.backOverrideFN = $scope.goBack;\r\n\r\n switch ($scope.selectedPayoutType.type) {\r\n case 1:\r\n googleAnalyticsService.insertEvent({ page: 'Calchoice payment', eventName: 'Choose Monthly Payment - Continue', action: 'Click' });\r\n break;\r\n case 2:\r\n googleAnalyticsService.insertEvent({ page: 'Calchoice payment', eventName: 'Pay Now - Continue', action: 'Click' });\r\n break;\r\n case 3:\r\n googleAnalyticsService.insertEvent({ page: 'Calchoice payment', eventName: 'CalChoice+ - Continue', action: 'Click' });\r\n break;\r\n\r\n default:\r\n }\r\n\r\n connection.getPaymentsRange($scope.selectedCard.Id, $scope.selectedPayoutType.type).then(function (response) {\r\n $scope.accountsToDisplay = [$scope.selectedBankAccount];\r\n\r\n $scope.selectedCard.PaymentRange = {};\r\n $scope.selectedCard.PaymentRange.RepaimentInformationText = response.RepaimentInformationText;\r\n $scope.selectedCard.PaymentRange.IsCVVAndExpiration = response.IsCVVAndExpiration;\r\n $scope.selectedCard.PaymentRange.NextDebitAmount = response.NextDebitAmount;\r\n $scope.selectedCard.PaymentRange.NextDebitSumAmountB = response.NextDebitAmountB;\r\n $scope.selectedCard.PaymentRange.PrevPrintDate = response.PrevPrintDate;\r\n $scope.selectedCard.PaymentRange.Comments = response.Comments;\r\n $scope.selectedCard.PaymentRange.AmountSettings = response.AmountSettings;\r\n $scope.MaximalAmount = Math.floor($scope.selectedCard.PaymentRange.AmountSettings.MaximalAmount.Value - ($scope.selectedCard.PaymentRange.AmountSettings.MaximalAmount.Value % $scope.selectedCard.PaymentRange.AmountSettings.AmountRangeInterval));\r\n $scope.MinimalAmount = Math.ceil($scope.selectedCard.PaymentRange.AmountSettings.MinimalAmount.Value);\r\n\r\n\r\n $scope.selectedCard.PaymentRange.AmountSettings.MaximalAmount.ReversedFormattedValueClean = $scope.MaximalAmount.formatMoney(0);\r\n $scope.selectedCard.PaymentRange.AmountSettings.MinimalAmount.ReversedFormattedValueClean = $scope.MinimalAmount.formatMoney(0);\r\n\r\n $scope.loanGridData = getStage2GridData();\r\n $scope.currentStage = 2;\r\n if ($scope.selectedPayoutType.type == 3)\r\n $scope.requestedAmount.amount = Math.floor($scope.selectedCard.PaymentRange.AmountSettings.CurrentAmount.Value);\r\n else\r\n $scope.requestedAmount.amount = $scope.MinimalAmount;\r\n $scope.appData.inProcess = true;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n $scope.members.selectedPayoutAmountType = 2;\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('calchoiceScroll').scrollTop();\r\n }, 0);\r\n\r\n }, function (error) {\r\n errorService.handleError(error, $scope.goToStage2).then(function (response) {\r\n if (response == true || response == 'PFC') {\r\n if ($scope.selectedPayoutType.type != 2) {\r\n $scope.selectedPayoutType.type = 2;\r\n $scope.goToStage2();\r\n }\r\n }\r\n });\r\n });\r\n\r\n\r\n function getStage2GridData() {\r\n var data = [], rowConfig = [];\r\n var headers = [];\r\n data = [\r\n ['דף פירוט אחרון', $scope.selectedCard.PaymentRange.PrevPrintDate],\r\n ['סכום חיוב במועד הבא', ($scope.selectedCard.PaymentRange.NextDebitAmount) ? $scope.selectedCard.PaymentRange.NextDebitAmount.ReversedFormattedValue : '']\r\n ];\r\n rowConfig = [{ clickable: false, cls: '' }, { clickable: false, cls: '' }];\r\n return { headers: headers, rows: data, rowConfig: rowConfig };\r\n };\r\n\r\n };\r\n\r\n $scope.goToStage3 = function () {\r\n\r\n $scope.appData.backOverrideFN = $scope.goBack;\r\n\r\n var cvv = $scope.cardAuth.cvv ? $scope.cardAuth.cvv : '';\r\n var expMonth = $scope.cardAuth.expMonth ? $scope.cardAuth.expMonth : '';\r\n var expYear = $scope.cardAuth.expYear ? $scope.cardAuth.expYear : '';\r\n var expDate = '';\r\n if (expYear != '' && expMonth != '')\r\n expDate = expMonth + \"/\" + expYear;\r\n var requestVal = null;\r\n if ($scope.members.selectedPayoutAmountType == 1) {\r\n googleAnalyticsService.insertEvent({ page: 'Calchoice payment', eventName: 'Pay All - Continue', action: 'Click' });\r\n requestVal = $scope.selectedCard.PaymentRange.AmountSettings.MaximalAmount.Value;\r\n $scope.requestedAmount.amount = requestVal;\r\n } else {\r\n googleAnalyticsService.insertEvent({ page: 'Calchoice payment', eventName: 'Choose Partialy Payment - Continue', action: 'Click' });\r\n requestVal = $scope.checkValue($scope.requestedAmount.amount);\r\n }\r\n var cvvAndDate = true;\r\n if (requestVal)\r\n cvvAndDate = $scope.checkCvv(cvv, expDate);\r\n\r\n if (cvvAndDate && requestVal) {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.getSimulation($scope.selectedCard.Id, $scope.requestedAmount.amount, cvv, expDate).then(function (response) {\r\n $scope.currentStage = 3;\r\n $scope.SimulatedLoanRequest = {};\r\n $scope.SimulatedLoanRequest.RepaimentInformationTitle = response.RepaimentInformationTitle;\r\n $scope.SimulatedLoanRequest.Comments = response.Comments; //Text, Index\r\n $scope.SimulatedLoanRequest.RepaimentInformationDetails = response.RepaimentInformationDetails; // Value, ReversedFormattedValue\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n $scope.appData.inProcess = true;\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('calchoiceScroll').scrollTop();\r\n }, 0);\r\n\r\n }, function (error) {\r\n errorService.handleError(error, $scope.goToStage3);\r\n });\r\n }\r\n };\r\n\r\n $scope.goToStage4 = function () {\r\n\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.postPaymentsOptions($scope.selectedCard.Id).then(function (response) {\r\n $scope.currentStage = 4;\r\n $scope.appData.backOverrideFN = null;\r\n\r\n $scope.stage4RepaimentInformationTitle = response.RepaimentInformationTitle;\r\n $scope.stage4RepaimentInformationDetails = response.RepaimentInformationDetails;\r\n\r\n googleAnalyticsService.insertEvent({ page: 'CalChoice Payment', eventName: 'Confirm Request', action: 'Confirm' });\r\n\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n $scope.members.selectedPayoutAmountType = 2;\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('calchoiceScroll').scrollTop();\r\n }, 0);\r\n\r\n }, function (error) {\r\n errorService.handleError(error, $scope.goToStage4);\r\n }).finally(function () {\r\n $scope.appData.inProcess = false;\r\n });\r\n };\r\n\r\n $scope.checkCvv = function (cvv, expDate) {\r\n if (!$scope.selectedCard.PaymentRange.IsCVVAndExpiration)\r\n return true;\r\n\r\n var cvvOk = (cvv == '' || cvv === null || cvv === undefined) ? false : true;\r\n var dateOk = (expDate.length < 5) ? false : true;\r\n var msgCvv = 'נא למלא את שלוש הספרות האחרונות מגב הכרטיס';\r\n var msgDate = 'נא למלא את תוקף הכרטיס';\r\n\r\n if (cvvOk && dateOk)\r\n return true;\r\n else {\r\n if (navigator.notification) {\r\n navigator.notification.alert(\r\n (cvvOk) ? msgDate : msgCvv,\r\n function () {\r\n return false;\r\n },\r\n ' ',\r\n 'אשר'\r\n );\r\n } else {\r\n lobbyUiService.popup.alert((cvvOk) ? msgDate : msgCvv, 'נא לשים לב');\r\n }\r\n return false;\r\n }\r\n };\r\n\r\n $scope.checkValue = function (value) {\r\n var maxMsg = 'הסכום המבוקש גבוה מסכום המקסימום';\r\n var minMsg = 'הסכום המבוקש קטן מסכום המינמום';\r\n var msgMult = 'יש לבחור סכום בכפולות של' + $scope.selectedCard.PaymentRange.AmountSettings.AmountMultiple;\r\n var msg = '';\r\n var valid = true;\r\n\r\n if (value > $scope.MaximalAmount) {\r\n msg = maxMsg;\r\n valid = false;\r\n } else if (value < $scope.MinimalAmount) {\r\n msg = minMsg;\r\n valid = false;\r\n } else if (value % $scope.selectedCard.PaymentRange.AmountSettings.AmountMultiple != 0) {\r\n msg = msgMult;\r\n valid = false;\r\n }\r\n\r\n if (!valid) {\r\n if (navigator.notification) {\r\n navigator.notification.alert(\r\n msg,\r\n function () {\r\n return false;\r\n },\r\n ' ',\r\n 'אשר'\r\n );\r\n } else {\r\n lobbyUiService.popup.alert(msg, 'נא לשים לב');\r\n }\r\n return false;\r\n } else\r\n return true;\r\n }\r\n\r\n $scope.goBackToStage = function (stage) {\r\n if (stage < 1) {\r\n $scope.goToStage2Flag = \"false\";\r\n $scope.appData.inProcess = false;\r\n $scope.appData.backOverrideFN = null;\r\n $scope.$parent.goBack();\r\n }\r\n else if (stage == 1) {\r\n $scope.currentStage = stage;\r\n $scope.goToStage2Flag = \"false\";\r\n $scope.appData.inProcess = false;\r\n $scope.appData.backOverrideFN = null;\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Calchoice payment', eventName: 'Cancel Payment choice', action: 'Click' });\r\n\r\n $scope.init();\r\n } else {\r\n $scope.currentStage = stage;\r\n }\r\n\r\n }\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $scope.appData.backOverrideFN = null;\r\n $scope.appData.inProcess = false;\r\n });\r\n\r\n $scope.backEventHandler = function (event) {\r\n $timeout($scope.goBack, 0, true);\r\n return true;\r\n };\r\n\r\n $scope.goBack = function () {\r\n $scope.goBackToStage($scope.currentStage - 1);\r\n }\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n\r\n angular.module('Cal4U')\r\n .controller('calChoiceStatusController', calChoiceStatusController);\r\n\r\n calChoiceStatusController.$inject = [\r\n '$scope', 'connection', '$window', 'appData', 'lobbyUiService', '$rootScope', '$q', 'errorService', '$ionicScrollDelegate', 'googleAnalyticsService', '$timeout'\r\n ];\r\n\r\n function calChoiceStatusController($scope, connection, $window, appData, lobbyUiService, $rootScope, $q, errorService, $ionicScrollDelegate, googleAnalyticsService, $timeout) {\r\n\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.title = \"תמונת מצב\";\r\n $scope.selectedBankAccountIndex = lobbyUiService.getParams('accountIndex');\r\n $scope.cardIndex = lobbyUiService.getParams('cardIndex');\r\n $scope.gClass = \"details-grid cal-choice-grid\";\r\n\r\n function calChoiceStatusToGrid(response) {\r\n var data = [], rowConfig = [];\r\n var Types = {\r\n 0: { clickable: false, cls: '' },\r\n 1: { clickable: false, cls: '' },\r\n 2: { clickable: true, cls: '' },\r\n 3: { clickable: false, cls: 'header' },\r\n 4: { clickable: false, cls: '' },\r\n 5: { clickable: false, cls: 'header' }\r\n }\r\n var headers = ['תמונת מצב בכרטיס', ''];\r\n for (var i = 0; i < response.StatusDetails.length; i++) {\r\n var obj = [response.StatusDetails[i].Text, response.StatusDetails[i].Value.ReversedFormattedValue];\r\n data.push(obj);\r\n rowConfig.push(Types[response.StatusDetails[i].Type]);\r\n if (response.StatusDetails[i].TransDrillParams == null)\r\n rowConfig[i].clickable = false;\r\n }\r\n return { headers: headers, rows: data, rowConfig: rowConfig };\r\n };\r\n\r\n $scope.init = function () {\r\n\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login');\r\n return;\r\n }\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('calchoiceStatusScroll').scrollTop();\r\n }, 0);\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Calchoice status', eventName: 'Situation Report', action: 'Enter' });\r\n\r\n $scope.appData.inProcess = false;\r\n\r\n var calchoiceAccounts = [];\r\n\r\n for (var i = 0; i < $scope.appData.BankAccounts.length; i++) {\r\n var cardsToDisplay = [];\r\n for (var j = 0; j < $scope.appData.BankAccounts[i].Cards.length; j++) {\r\n if ($scope.appData.BankAccounts[i].Cards[j].IsCalChoiceCard) {\r\n $scope.appData.BankAccounts[i].Cards[j].CardIndex = j;\r\n cardsToDisplay.push($scope.appData.BankAccounts[i].Cards[j]);\r\n }\r\n }\r\n if (cardsToDisplay.length > 0) {\r\n $scope.appData.BankAccounts[i].calChoiceCards = cardsToDisplay;\r\n $scope.appData.BankAccounts[i].AccountIndex = i;\r\n $scope.appData.BankAccounts[i].CalChoiceAccountIndex = calchoiceAccounts.length;\r\n calchoiceAccounts.push($scope.appData.BankAccounts[i]);\r\n }\r\n }\r\n\r\n $scope.accountsToDisplay = calchoiceAccounts;\r\n\r\n\r\n\r\n\r\n\r\n if (!$scope.selectedBankAccountIndex)\r\n $scope.selectedBankAccountIndex = 0;\r\n if (!$scope.cardIndex)\r\n $scope.cardIndex = 0;\r\n $scope.selectedBankAccount = $scope.accountsToDisplay[$scope.selectedBankAccountIndex];\r\n $scope.selectedCard = $scope.selectedBankAccount.calChoiceCards[$scope.cardIndex];\r\n getStatus();\r\n\r\n function getStatus() {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n var promise = connection.getStatus($scope.selectedCard.Id);\r\n promise.then(function (response) {\r\n $scope.statusGridData = calChoiceStatusToGrid(response);\r\n $scope.Comments = response.Comments;\r\n $scope.PlusPlanText = response.PlusPlanText;\r\n $scope.StatusDetails = response.StatusDetails;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n errorService.handleError(error, getStatus);\r\n });\r\n\r\n }\r\n };\r\n\r\n $scope.rowClicked = function (index) {\r\n var params = $scope.StatusDetails[index].TransDrillParams;\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.getTransactionsFromDateToDate($scope.selectedCard.Id, params.FromDate, params.ToDate, params.Mahut, params.TransType, params.TransBasketAccumInd, params.DateRangeType).then(function (response) {\r\n $scope.appData.TransactionsDetails = response.Transactions;\r\n lobbyUiService.go('dw.bankChargesTransactionsDetails', { accountIndex: $scope.selectedBankAccountIndex });\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n errorService.handleError(error, $scope.rowClicked);\r\n });\r\n\r\n };\r\n\r\n $scope.goToPayout = function () {\r\n googleAnalyticsService.insertEvent({ page: 'Situation report', eventName: 'CalChoice Payment', action: 'Click' });\r\n lobbyUiService.go('dw.calchoicePayout', { accountIndex: $scope.selectedBankAccountIndex, cardIndex: $scope.cardIndex });\r\n }\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\r\n\n(function(window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('commitmentsController', commitmentsController);\r\n\r\n commitmentsController.$inject = [\r\n '$scope', 'connection', 'appData', 'lobbyUiService'\r\n ];\r\n\r\n function commitmentsController($scope, connection, appData, lobbyUiService) {\r\n\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.title = \"סך התחייבויות\";\r\n $scope.selectedBankAccountIndex = lobbyUiService.getParams('selectedBankAccountIndex');\r\n $scope.init = function () {\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login');\r\n return;\r\n }\r\n\r\n $scope.selectedBankAccount = appData.BankAccounts[$scope.selectedBankAccountIndex];\r\n $scope.commitments = $scope.selectedBankAccount.CreditFrame;\r\n setPieData();\r\n };\r\n\r\n\r\n $scope.goToCreditFrame = function () {\r\n lobbyUiService.go('dw.enlarge-credit-frame');\r\n }\r\n\r\n function setPieData() {\r\n\r\n if (!$scope.commitments)\r\n return;\r\n\r\n var commitmentsAmount = $scope.commitments.ObligationsAmount,\r\n commitmentsCreditFrame = $scope.commitments.MaxLimitAmount,\r\n commitmentsPercent = $scope.commitments.ObligationsPercent,\r\n data = {};\r\n\r\n // Removing un needed char - % $ etc.\r\n commitmentsPercent = commitmentsPercent.substring(0, commitmentsPercent.length - 1);\r\n commitmentsAmount = parseFloat(commitmentsAmount.substring(0, commitmentsAmount.length - 2).replace(',', ''));\r\n commitmentsCreditFrame = parseFloat(commitmentsCreditFrame.substring(0, commitmentsCreditFrame.length - 2).replace(',', ''));\r\n\r\n data.Sectors = [];\r\n data.Sectors.push({ 'Amount': { 'Value': commitmentsAmount }, 'Name': 'Obligations Amount', 'FromColor': '#9CD036' });\r\n\r\n\r\n if (commitmentsPercent < 100) {\r\n var commitmentsDifference = commitmentsCreditFrame - commitmentsAmount;\r\n data.Sectors.push({ 'Amount': { 'Value': commitmentsDifference }, 'Name': 'Max Limit Amount', 'FromColor': '#175994' });\r\n }\r\n\r\n $scope.pieData = data;\r\n }\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('contactMeController', contactMeController);\r\n\r\n contactMeController.$inject = [\r\n '$scope', 'connection', 'appData', 'lobbyUiService', 'errorService', '$timeout', 'googleAnalyticsService'\r\n ];\r\n\r\n function contactMeController($scope, connection, appData, lobbyUiService, errorService, $timeout, googleAnalyticsService) {\r\n\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.title = \"צרו עמי קשר\";\r\n $scope.lobbyUiService = lobbyUiService;\r\n $scope.hebRegEx = /^[\\u05CF-\\u05EB\\- ]+$/;\r\n\r\n $scope.init = function () {\r\n\r\n if ($scope.appData.isLoggedIn) {\r\n $scope.backBtn = \"logout\";\r\n $scope.CustomerInfo = angular.copy($scope.appData.CustomerInfo);\r\n\r\n } else {\r\n $scope.backBtn = \"back\";\r\n }\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Contact me', eventName: 'Enter Contact me', action: 'Enter' });\r\n }\r\n\r\n $scope.goBack = function () {\r\n\r\n $timeout(function () {\r\n $scope.$parent.back();\r\n }, 600);\r\n }\r\n\r\n $scope.openLead = function () {\r\n // add code for checks\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n var data = {\r\n FirstName: $scope.CustomerInfo.FirstName, LastName: $scope.CustomerInfo.LastName, IdNum: $scope.CustomerInfo.Id, PhoneArea: $scope.CustomerInfo.PhoneArea, PhoneNumber: $scope.CustomerInfo.PhoneNumber, ResolutionCode: '1653' , RequestType: '03' }\r\n connection.postOpenLead(data).then(function (response) {\r\n var dialogBox = response.Response.DialogBox;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n if (navigator.notification)\r\n navigator.notification.alert(\r\n dialogBox.Content,\r\n $scope.$parent.back(),\r\n dialogBox.Title,\r\n dialogBox.OKButtonText\r\n );\r\n else {\r\n lobbyUiService.popup.alert(dialogBox.Content, dialogBox.Title, null, function () {\r\n $scope.$parent.back();\r\n });\r\n }\r\n }, function (error) {\r\n error[0].response.Response.DialogBox.Title = \"אופס!\";\r\n error[0].response.Response.DialogBox.Content = \"אנו מתנצלים,
עקב תקלה טכנית
הפרטים שלך לא התקבלו\";\r\n error[0].response.Response.DialogBox.OKButtonText = \"נסה שוב\";\r\n error[0].response.Response.DialogBox.CancelButtonText = \"סגור\";\r\n errorService.handleError(error, $scope.openLead);\r\n });\r\n }\r\n\r\n $scope.validateForm = function () {\r\n //padding for phone number\r\n var errMsg = '';\r\n if (!$scope.CustomerInfo) {\r\n errMsg = 'יש למלא ערכים בכל אחד מהשדות';\r\n } else {\r\n //padding for id\r\n // if ($scope.CustomerInfo.Id && $scope.CustomerInfo.Id.length) {\r\n // var padding = '';\r\n // for (var i = 9 - $scope.CustomerInfo.Id.length; i > 0; i--) {\r\n // padding += '0';\r\n // }\r\n // $scope.CustomerInfo.Id = padding + $scope.CustomerInfo.Id;\r\n // }\r\n\r\n if ($scope.contactMeForm.$valid && $('#idNum').val().length == 9 && $('#phoneNum').val().length == 7) {\r\n return true;\r\n } else {\r\n if ($scope.contactMeForm.$error.required && $scope.contactMeForm.$error.required.length > 1) {\r\n errMsg = 'יש למלא ערכים בכל אחד מהשדות';\r\n } else if ($('#fName').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה שם פרטי.';\r\n else if ($('#lName').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה שם משפחה.';\r\n else if ($('#idNum').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה מספר ת.ז.';\r\n else if ($('#phoneNum').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה מספר טלפון';\r\n else if ($('#areaNum').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה מספר טלפון';\r\n else if ($('#fName').hasClass('ng-invalid-pattern'))\r\n errMsg = 'השם הפרטי שהוזן אינו תקין. יש למלא אותיות בעברית בלבד.';\r\n else if ($('#lName').hasClass('ng-invalid-pattern'))\r\n errMsg = 'שם המשפחה שהוזן אינו תקין. יש למלא אותיות בעברית בלבד.';\r\n else if ($('#idNum').hasClass('ng-invalid-pattern') || $('#idNum').val().length != 9)\r\n errMsg = 'מספר ת.ז. שהוזן אינו תקין. יש למלא מספר בן 9 ספרות בדיוק כולל ספרת ביקורת.';\r\n else if ($('#phoneNum').hasClass('ng-invalid-pattern'))\r\n errMsg = 'מספר הטלפון שהוזן אינו תקין. יש למלא ספרות בלבד.';\r\n else if ($('#phoneNum').val().length < 7)\r\n errMsg = 'מספר הטלפון שהוזן אינו תקין. יש למלא מספר בן 7 ספרות בדיוק.';\r\n }\r\n }\r\n\r\n if (navigator.notification) {\r\n navigator.notification.alert(\r\n errMsg,\r\n function () {\r\n /*Do Nothing*/\r\n },\r\n ' ',\r\n 'סגור'\r\n );\r\n }\r\n else {\r\n lobbyUiService.popup.alert(errMsg, 'נא לשים לב');\r\n }\r\n\r\n return false;\r\n }\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n \"use strict\";\r\n angular.module(\"Cal4U\").controller(\"updateAddressController\", updateAddressController);\r\n\r\n updateAddressController.$inject = [\r\n \"$scope\",\r\n \"$http\",\r\n \"connection\",\r\n \"appData\",\r\n \"lobbyUiService\",\r\n \"errorService\",\r\n \"$timeout\",\r\n \"$interval\",\r\n \"googleAnalyticsService\",\r\n \"appSettings\",\r\n \"dataService\",\r\n \"$rootScope\",\r\n \"$stateParams\",\r\n \"$location\"\r\n ];\r\n\r\n function updateAddressController(\r\n $scope,\r\n $http,\r\n connection,\r\n appData,\r\n lobbyUiService,\r\n errorService,\r\n $timeout,\r\n $interval,\r\n googleAnalyticsService,\r\n appSettings,\r\n dataService,\r\n $rootScope,\r\n $stateParams,\r\n $location\r\n ) {\r\n var goToLogin = function () {\r\n lobbyUiService.go(\"dw.login\", { nextPage: \"dw.update-address\", type: 2 }, { location: \"replace\" });\r\n };\r\n\r\n var returnUrl = $location.search().returnAppUrl;\r\n if (returnUrl) {\r\n localStorage.setItem(\"UpdateAddressReturnUrl\", returnUrl);\r\n }\r\n $scope.returnAppUrl = $location.search().returnAppUrl;\r\n $timeout(function () {\r\n connection.getConnectAuth().then(\r\n function (res) {\r\n init(); \r\n },\r\n function (err) {\r\n if (lobbyUiService.connection.isLoggedIn()) {\r\n connection.setToken(null);\r\n }\r\n goToLogin();\r\n }\r\n );\r\n }, 0);\r\n\r\n var showLoginPopup = function () {\r\n var popup = {};\r\n popup.title = \"התחברות למערכת\";\r\n popup.text = \"על מנת שנוכל להציג לך את הפרטים, יש לבצע התחברות למערכת בעזרת תעודת זהות ו-4 ספרות אחרונות של הכרטיס בלבד.\";\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"להתחברות מחדש\",\r\n type: \"button-positive\",\r\n onTap: function () {\r\n connection.setToken(null);\r\n dataService.sessionManager.clear(\"authToken\");\r\n goToLogin();\r\n }\r\n },\r\n {\r\n text: \"לא תודה\",\r\n type: \"button-negative\",\r\n onTap: function () {\r\n lobbyUiService.go(\"dw.lobby\");\r\n }\r\n }\r\n );\r\n lobbyUiService.popup.messageText(null, popup.text, popup.title, null, null, null, popup.btns, false);\r\n ga(\"set\", \"page\", \"/vp/mailing_address_update/provide_otp_automatic/\");\r\n ga(\"send\", \"pageview\");\r\n };\r\n\r\n var errorsDataOfUpdateState = [\r\n {\r\n updateState: 8,\r\n title: \"\",\r\n message: \"לצערנו, אין לנו איך לעדכן את הכתובת למשלוח דואר בכרטיסים של בנק הפועלים. בשביל לשנות, צריך להתקשר לבנק.\"\r\n },\r\n {\r\n updateState: 9,\r\n title: \"אופס, משהו השתבש...\",\r\n message: \"לצערנו, לא הצלחנו לעדכן את הכתובת שלך. ממליצים לך לנסות שוב מאוחר יותר\"\r\n }\r\n ];\r\n\r\n var getErrorData = function () {\r\n var data = errorsDataOfUpdateState.find(err => err.updateState == $scope.updateState);\r\n return data;\r\n };\r\n\r\n var init = function () {\r\n $scope.currentErrorData = {};\r\n getCardsForAddressUpdate();\r\n initSuccessText();\r\n };\r\n\r\n var getCardsForAddressUpdate = function () {\r\n var httpReq = {\r\n method: \"POST\",\r\n url: appSettings.updateAddressBase + \"Account/GetCardsForAddressUpdate\",\r\n headers: {\r\n Authorization: \"CALAuthScheme \" + dataService.sessionManager.read(\"authToken\"),\r\n \"X-Site-Id\": appSettings.siteId\r\n }\r\n };\r\n\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n\r\n $http(httpReq)\r\n .success(function (response) {\r\n if (response) {\r\n if (response.result) {\r\n $scope.user = {\r\n firstName: response.result.firstName,\r\n lastName: response.result.lastName\r\n };\r\n $scope.cardsToUpdate = response.result.eligibleCards;\r\n $scope.cardsToUpdate.forEach(card => (card.selected = true));\r\n\r\n if (response.result.eligibleCards && response.result.eligibleCards.length == 1) {\r\n $scope.state = \"normal\";\r\n $scope.updateState = 1; // one eligible card: 2.1\r\n $scope.bullets = response.result.comments;\r\n } else if (response.result.eligibleCards && response.result.eligibleCards.length > 1) {\r\n $scope.state = \"normal\";\r\n $scope.updateState = 2; // +3; more than one eligible cards: 2.2\r\n $scope.bullets = response.result.comments;\r\n } else if (!response.result.eligibleCards || response.result.eligibleCards.length == 0) {\r\n $scope.state = \"error\";\r\n $scope.updateState = 8; // only non eligible cards: 2.3\r\n $scope.currentErrorData = getErrorData();\r\n } else {\r\n $scope.state = \"error\";\r\n $scope.updateState = 9; // general error: 6\r\n $scope.currentErrorData = getErrorData();\r\n }\r\n } else if (response.statusCode == 214) {\r\n $scope.state = \"error\";\r\n $scope.updateState = 15; // no cards: 3\r\n $scope.currentErrorData.title = response.statusTitle;\r\n $scope.currentErrorData.message = response.statusDescription;\r\n } else if (response.statusCode == 213) {\r\n $scope.state = \"error\";\r\n $scope.updateState = 5; // changed phone number: 4\r\n $scope.currentErrorData.title = response.statusTitle;\r\n $scope.currentErrorData.message = response.statusDescription;\r\n } else {\r\n $scope.state = \"error\";\r\n $scope.updateState = 9; // general error: 6\r\n $scope.currentErrorData = getErrorData();\r\n }\r\n } else {\r\n $scope.state = \"error\";\r\n $scope.updateState = 9; // general error: 6\r\n $scope.currentErrorData = getErrorData();\r\n }\r\n })\r\n .error(function (error) {\r\n $scope.state = \"error\";\r\n if (error.statusCode == 401) {\r\n showLoginPopup();\r\n return;\r\n }\r\n $scope.updateState = 9; // general error: 6\r\n $scope.currentErrorData = getErrorData();\r\n })\r\n .finally(function () {\r\n lobbyUiService.loader.hide();\r\n $scope.appData.showSpinner = false;\r\n if ($scope.state == \"normal\") {\r\n ga(\"set\", \"page\", \"/vp/mailing_address_update/address_form/\");\r\n ga(\"send\", \"pageview\");\r\n } else if ($scope.state == \"error\") {\r\n if ($scope.updateState == 9) {\r\n ga(\"set\", \"page\", \"/vp/mailing_address_update/failed/\");\r\n } else if ($scope.updateState == 8) {\r\n ga(\"set\", \"page\", \"/vp/mailing_address_update/bank_12_card/\");\r\n }\r\n ga(\"send\", \"pageview\");\r\n }\r\n });\r\n };\r\n\r\n var updateCardAddress = function () {\r\n $scope.cardsRequestedToUpdate = [];\r\n $scope.cardsRequestedToUpdate = $scope.cardsToUpdate.filter(card => card.selected).map(selected => selected.cardUniqueId); //.forEach(uid => cardsRequestedToUpdate.push({ cardUniqueId: uid }));\r\n\r\n var requestData = {\r\n cardUniqueIds: $scope.cardsRequestedToUpdate,\r\n addrCity: $scope.selectedCityName,\r\n addrStreet: $scope.selectedStreetName,\r\n addrHouse: $scope.houseNumber.value,\r\n addrApp: $scope.appartmentNumber.value,\r\n addrPOBNum: $scope.mailBox.value,\r\n addrZip: $scope.zipCode.value ? $scope.zipCode.value.toString() : null\r\n };\r\n\r\n var httpReq = {\r\n method: \"POST\",\r\n url: appSettings.updateAddressBase + \"Update/UpdateCardAddress\",\r\n headers: {\r\n Authorization: \"CALAuthScheme \" + dataService.sessionManager.read(\"authToken\"),\r\n \"X-Site-Id\": appSettings.siteId\r\n },\r\n data: requestData\r\n };\r\n\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n\r\n $http(httpReq)\r\n .success(function (response) {\r\n if (response && response.result) {\r\n if (response.statusCode == 1) {\r\n $scope.updateState = 6; // success for all cards: 1.a\r\n $scope.state = \"success\";\r\n $scope.addressUpdated = response.result.fullAddress;\r\n\r\n if (response.result.notEligibleCards && response.result.notEligibleCards.length > 0) {\r\n $scope.updateState = 7; // success with not eligible cards: 1.b\r\n $scope.errorOnSuccess = true;\r\n $scope.isNotEligibleCards = true;\r\n $scope.notEligibleCards = response.result.notEligibleCards;\r\n }\r\n } else if (response.statusCode == 215) {\r\n $scope.state = \"success\";\r\n $scope.addressUpdated = response.result.fullAddress;\r\n if (response.result.notUpdateCards && response.result.notUpdateCards.length > 0) {\r\n $scope.updateState = 10; // partial success (some cards not updated): 2\r\n $scope.isCardsNotUpdated = true;\r\n $scope.cardsNotUpdated = response.result.notUpdateCards;\r\n }\r\n if (response.result.notEligibleCards && response.result.notEligibleCards.length > 0) {\r\n $scope.updateState = 4; // partial success (some cards not updated) + not eligible cards: 3\r\n $scope.isNotEligibleCards = true;\r\n $scope.notEligibleCards = response.result.notEligibleCards;\r\n } else {\r\n $scope.state = \"error\";\r\n $scope.updateState = 9; // general error: 5\r\n $scope.currentErrorData = getErrorData();\r\n }\r\n } else {\r\n $scope.state = \"error\";\r\n $scope.updateState = 9; // general error: 5\r\n $scope.currentErrorData = getErrorData();\r\n }\r\n } else {\r\n $scope.state = \"error\";\r\n $scope.updateState = 9; // general error: 5\r\n $scope.currentErrorData = getErrorData();\r\n }\r\n })\r\n .error(function (error) {\r\n $scope.state = \"error\";\r\n $scope.updateState = 9; // general error: 5\r\n $scope.currentErrorData = getErrorData();\r\n })\r\n .finally(function () {\r\n lobbyUiService.loader.hide();\r\n $scope.appData.showSpinner = false;\r\n if ($scope.state == \"success\") {\r\n if ($scope.updateState == 6) {\r\n ga(\"set\", \"page\", \"/vp/mailing_address_update/success/\");\r\n ga(\"send\", \"pageview\");\r\n } else if ($scope.updateState == 10) {\r\n ga(\"set\", \"page\", \"/vp/mailing_address_update/partially_failed/\");\r\n ga(\"send\", \"pageview\");\r\n } else if ($scope.updateState == 4) {\r\n ga(\"set\", \"page\", \"/vp/mailing_address_update/bank_12_card/\");\r\n ga(\"send\", \"pageview\");\r\n }\r\n } else if ($scope.state == \"error\" && $scope.updateState == 9) {\r\n ga(\"set\", \"page\", \"/vp/mailing_address_update/failed/\");\r\n ga(\"send\", \"pageview\");\r\n }\r\n });\r\n };\r\n\r\n var choices = [\r\n { index: 1, id: \"ABC1\", label: \"אור עקיבא\" },\r\n { index: 2, id: \"ABC2\", label: \"תל אביב\" },\r\n { index: 3, id: \"ABC3\", label: \"תל חי\" },\r\n { index: 4, id: \"ABC4\", label: \"תל זיבי\" },\r\n { index: 5, id: \"ABC5\", label: \"רעננה\" },\r\n { index: 6, id: \"ABC6\", label: \"גבעתיים\" },\r\n { index: 7, id: \"ABC7\", label: \"דור זילכה\" }\r\n ];\r\n\r\n var choices2 = [\r\n { index: 1, id: \"ABC1\", label: \"הנדיב\" },\r\n { index: 2, id: \"ABC2\", label: \"הנשיא\" },\r\n { index: 3, id: \"ABC3\", label: \"השממה\" },\r\n { index: 4, id: \"ABC4\", label: \"הכאל\" },\r\n { index: 5, id: \"ABC5\", label: \"השפרחים\" }\r\n ];\r\n\r\n $scope.openCards = function () {\r\n $scope.cardsOpened = true;\r\n\r\n $scope.cardsToUpdate.forEach(card => (card.selected = false));\r\n\r\n // blur all inputs\r\n if (\"activeElement\" in document) {\r\n document.activeElement.blur();\r\n }\r\n };\r\n\r\n $scope.cardsOpened = false;\r\n $scope.items = choices;\r\n $scope.streetItems = choices2;\r\n $scope.cityText = { value: \"\" };\r\n $scope.streetText = { value: \"\" };\r\n\r\n $scope.houseNumber = { value: null };\r\n $scope.appartmentNumber = { value: \"\" };\r\n $scope.mailBox = { value: null };\r\n $scope.minlength = 2;\r\n $scope.selectedCity;\r\n $scope.selectedStreet;\r\n $scope.placeholder = \"יישוב\";\r\n $scope.updateAll = true;\r\n $scope.submitted = false;\r\n $scope.successButtonText = \"הבנתי, תודה\";\r\n $scope.successTitle = \"זהו סיימנו פה...\";\r\n\r\n $scope.changeHouseNumber = function (houseNumber) {\r\n $scope.houseNumber.value = houseNumber.value;\r\n console.log(\"houseNumber\", houseNumber);\r\n\r\n if ($scope.selectedCity) {\r\n $scope.getZipCode($scope.selectedCity, $scope.selectedStreet, $scope.houseNumber.value);\r\n }\r\n };\r\n\r\n $scope.submitForm = function () {\r\n $scope.submitted = true;\r\n\r\n setTimeout(() => {\r\n if (isFormValid()) {\r\n updateCardAddress();\r\n ga(\"send\", \"event\", { eventCategory: \"עדכון כתובת למשלוח דואר\", eventAction: \"פרטי כתובת - אישור\", eventLabel: \"\" });\r\n } else {\r\n $timeout(function () {\r\n focusOnFirstInvalid();\r\n });\r\n }\r\n });\r\n };\r\n\r\n $scope.zipCodeDisabled = true;\r\n $scope.zipCode = { value: null };\r\n $scope.send = function () {\r\n console.log(\"selectedCity\", $scope.selectedCity.va);\r\n };\r\n $scope.hasStreets = true;\r\n\r\n $scope.$on(\"selectedCity\", function (evt, data) {\r\n // if a city was emited\r\n if (data.settlementCode) {\r\n $scope.selectedCity = data.settlementCode;\r\n $scope.selectedCityName = data.settlementName;\r\n $scope.hasStreets = data.isStreetsEnabled;\r\n\r\n // if there are less than four streetes call getZipCode\r\n if (!data.isStreetsEnabled) {\r\n $scope.getZipCode($scope.selectedCity, $scope.selectedStreet, $scope.houseNumber.value);\r\n }\r\n } else {\r\n $scope.selectedCity = null;\r\n $scope.selectedCityName = null;\r\n $scope.hasStreets = true;\r\n }\r\n });\r\n\r\n $scope.$on(\"selectedStreet\", function (evt, data) {\r\n if (data.streetId) {\r\n $scope.selectedStreet = data.streetId;\r\n $scope.selectedStreetName = data.streetName;\r\n\r\n if (($scope.selectedCity, $scope.selectedStreet, $scope.houseNumber.value)) {\r\n $scope.getZipCode($scope.selectedCity, $scope.selectedStreet, $scope.houseNumber.value);\r\n }\r\n } else {\r\n $scope.selectedStreet = null;\r\n $scope.selectedStreetName = null;\r\n }\r\n });\r\n\r\n $scope.getZipCode = function (city, street, home) {\r\n var data = {\r\n settlementCode: city,\r\n streetCode: street,\r\n houseNumber: home\r\n };\r\n console.log(\"getZip\", data);\r\n\r\n $http.post(appSettings.updateAddressBase + \"Address/GetZipCode\", data).then(\r\n function (res) {\r\n console.log(\"resZip\", res);\r\n if (res && res.data && res.data.result && res.data.result.zipCode7) {\r\n $scope.zipCode.value = parseInt(res.data.result.zipCode7);\r\n console.log(\"$scope.zipcode\", $scope.zipCode7);\r\n $scope.zipCodeDisabled = true;\r\n } else {\r\n $scope.zipCode7 = null;\r\n $scope.zipCodeDisabled = false;\r\n }\r\n },\r\n function (err) {\r\n $scope.zipCode.value = null;\r\n $scope.zipCodeDisabled = false;\r\n console.log(\"err\", err);\r\n }\r\n );\r\n };\r\n\r\n $scope.cityDataSource = appSettings.updateAddressBase + \"Address/GetSettlements\";\r\n $scope.streetDataSource = appSettings.updateAddressBase + \"Address/GetStreetst\"; \r\n\r\n $scope.redirect = function () {\r\n var redirectUrl = localStorage.getItem(\"UpdateAddressReturnUrl\");\r\n if ($stateParams.contactless) {\r\n lobbyUiService.go(\"dw.contactless\", { contactless: true });\r\n } else if (redirectUrl) {\r\n window.location.href = redirectUrl;\r\n } else {\r\n window.location.href = \"https://www.cal-online.co.il\";\r\n }\r\n //if ($stateParams.contactless) {\r\n // lobbyUiService.go(\"dw.contactless\", { contactless: true });\r\n //} else {\r\n // window.location.href = \"https://www.cal-online.co.il\";\r\n //}\r\n };\r\n\r\n $scope.onChangeMailBox = function (mailBox) {\r\n // if length is zero enable the fields\r\n // else reset fields and disable\r\n if (mailBox) {\r\n resetStreetName();\r\n resetHouseNumber();\r\n resetAppartmentNumber();\r\n\r\n disableStreetName();\r\n disableHouseNumber();\r\n disableAppartmentNumber();\r\n enableZipCode();\r\n } else {\r\n enableStreetName();\r\n enableHouseNumber();\r\n enableAppartmentNumber();\r\n disableZipCode();\r\n }\r\n };\r\n\r\n function resetStreetName() {\r\n // reset on directive\r\n $scope.streetText.value = \"\";\r\n\r\n // reset on controller\r\n $scope.selectedStreet = \"\";\r\n $scope.selectedStreetName = \"\";\r\n }\r\n\r\n function resetHouseNumber() {\r\n $scope.houseNumber.value = \"\";\r\n }\r\n\r\n function resetAppartmentNumber() {\r\n $scope.appartmentNumber.value = \"\";\r\n }\r\n\r\n function disableStreetName() {\r\n $scope.hasStreets = false;\r\n }\r\n\r\n function disableHouseNumber() {\r\n $scope.isDisabledHouseNumber = true;\r\n }\r\n\r\n function disableAppartmentNumber() {\r\n $scope.isDisabledAppartmentNumber = true;\r\n }\r\n\r\n function disableZipCode() {\r\n $scope.zipCodeDisabled = true;\r\n }\r\n\r\n function enableStreetName() {\r\n $scope.hasStreets = true;\r\n }\r\n\r\n function enableHouseNumber() {\r\n $scope.isDisabledHouseNumber = false;\r\n }\r\n\r\n function enableAppartmentNumber() {\r\n $scope.isDisabledAppartmentNumber = false;\r\n }\r\n\r\n function enableZipCode() {\r\n $scope.zipCodeDisabled = false;\r\n }\r\n\r\n function isFormValid() {\r\n if (!$scope.selectedCity) {\r\n return false;\r\n }\r\n\r\n if ($scope.selectedCity && !$scope.mailBox.value) {\r\n if ($scope.hasStreets) {\r\n if (!$scope.selectedStreet || !$scope.houseNumber.value || !$scope.isZipCodeValid()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if ($scope.cardsOpened && !$scope.isCardSelected()) {\r\n return false;\r\n }\r\n\r\n if (!$scope.isZipCodeValid()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n $scope.isCardSelected = function () {\r\n let isCardSelected = false;\r\n\r\n $scope.cardsToUpdate.forEach(card => {\r\n if (card.selected) {\r\n isCardSelected = true;\r\n }\r\n });\r\n\r\n return isCardSelected;\r\n };\r\n\r\n $scope.isZipCodeValid = function () {\r\n let zipCodeValid = false;\r\n let stringZipCode = \"\";\r\n\r\n stringZipCode = $scope.zipCode.value ? $scope.zipCode.value.toString() : \"\";\r\n\r\n if (stringZipCode.length === 7 || stringZipCode.length === 0) {\r\n zipCodeValid = true;\r\n }\r\n\r\n return zipCodeValid;\r\n };\r\n\r\n function focusOnFirstInvalid() {\r\n let cal2020ErrClasses = $(\".cal2020-err\");\r\n\r\n cal2020ErrClasses.each(function (index, value) {\r\n if (!$(value).hasClass(\"ng-hide\")) {\r\n // set focus\r\n let input = findFirstInput($(value).prev());\r\n\r\n if (input) {\r\n input.focus();\r\n }\r\n // finish each\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n function findFirstInput(element) {\r\n if (element.is(\"input\")) {\r\n return element;\r\n }\r\n\r\n if (element.find(\"input\").length > 0) {\r\n return element.find(\"input\");\r\n }\r\n }\r\n\r\n function initSuccessText() {\r\n var updateAddressRedirect = angular.fromJson($stateParams.updateAddressRedirect);\r\n if (updateAddressRedirect) {\r\n switch (updateAddressRedirect.redirectedFrom) {\r\n case \"dw.contactless\": {\r\n $scope.successButtonText = \"בחזרה לשדרוג לטאצ'\";\r\n $scope.successTitle = \"מצוין, אפשר לחזור לשדרוג\";\r\n break;\r\n }\r\n case \"dw.defectiveCard\": {\r\n $scope.successButtonText = \"בחזרה להחלפת כרטיס פגום\";\r\n $scope.successTitle = \"מצוין, אפשר לחזור להחלפת כרטיס\";\r\n break;\r\n }\r\n case \"dw.blockCardConfirm\": {\r\n $scope.successButtonText = \"בחזרה לחסימת כרטיס\";\r\n $scope.successTitle = \"מצוין, אפשר לחזור לחסימת כרטיס\";\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .factory('referralsRestService', referralsRestService);\r\n\r\n referralsRestService.$inject = ['connection', '$q', 'appSettings', 'appData'];\r\n\r\n function referralsRestService(connection, $q, appSettings, appData) {\r\n\r\n var _getMetaData = function () {\r\n return connection.genericConnection('POST', 'CalReferrals/GetReferrals?', connection.versionAndOSParams);\r\n };\r\n\r\n return {\r\n getMetaData: _getMetaData,\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('myReferralsController', myReferralsController);\r\n\r\n myReferralsController.$inject = [\r\n '$scope', 'connection', 'lobbyUiService', '$timeout', 'errorService', 'referralsRestService', '$stateParams', 'googleAnalyticsService', 'lobbyDataService', '$state'\r\n ];\r\n\r\n function myReferralsController($scope, connection, lobbyUiService, $timeout, errorService, referralsRestService, $stateParams, googleAnalyticsService, lobbyDataService, $state) {\r\n\r\n if (!connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.myReferrals' }, { location: 'replace' });\r\n return;\r\n }\r\n \r\n $scope.standalone = $stateParams.standalone\r\n\r\n if ($scope.standalone) {\r\n $('#page-wrapper').addClass('standalone');\r\n }\r\n\r\n $scope.chatItem;\r\n \r\n var isChatAvailable = function () {\r\n lobbyDataService.loadMetaData().then(function (metaData) {\r\n if (metaData) {\r\n metaData.menu.filter(function (module) {\r\n if (module.caption === \"Cal לשירותך\") {\r\n module.items.filter(function (item) {\r\n if (item.command == 'open-chat') {\r\n $scope.chatItem = item;\r\n $scope.isChatAvailable = !item.hide;\r\n }\r\n });\r\n } \r\n })\r\n }\r\n });\r\n }();\r\n $scope.disclaimer = \"חשוב לדעת: יכול להיות שיש לך פניה פתוחה אצלנו, אבל היא לא מופיעה בסטטוס הפניות. לא צריך לדאוג, אנו מטפלים בכל הפניות וכמובן שנעדכן אותך כשהטיפול יושלם.\";\r\n $scope.title = \"סטטוס הפניות שלי\";\r\n $scope.Chat = \"צ'אט עם נציג\";\r\n $scope.WheresMyCard = \"היכן הכרטיס שלי?\";\r\n $scope.showBtn = false;\r\n\r\n $scope.dictSubAreaCode = {\r\n 6030: 'בקשה לפרעון מיידי ',\r\n 6012: 'בקשה לפרעון למועד החיוב',\r\n 6018: 'בקשה להעברת התחייבויות',\r\n 6206: 'בקשה לשינוי חשבון',\r\n 6088: 'בקשה לעדכון חשבון מט\"ח',\r\n 6010: 'בקשה לעצירת הוראת קבע',\r\n 7204: 'בקשה להפשרת הוראת קבע',\r\n 6207: 'בקשה לשחזור קוד סודי',\r\n 6209: 'בקשה לשינוי מועד חיוב',\r\n 6257: 'בקשה למשלוח כרטיס ליעד שונה',\r\n 6222: 'בקשה לשינוי שיטת אשראי בכרטיס',\r\n 7214: 'בקשה לביטול כרטיס',\r\n 1184: 'בקשה להגדלת מסגרת אשראי'\r\n };\r\n\r\n $scope.init = function () {\r\n lobbyUiService.loader.show();\r\n referralsRestService.getMetaData().then(function (response) {\r\n lobbyUiService.loader.hide();\r\n\r\n if (response.ReferralsDetails) {\r\n $scope.showBtn = true;\r\n $scope.ReferralsDetails = response.ReferralsDetails;\r\n\r\n $scope.NumOfItems = response.ReferralsDetails.length;\r\n\r\n if ($scope.NumOfItems > 0) {\r\n $scope.ReferralsDetails.forEach(\r\n function (item) {\r\n var ArrDate = item.CreateDate.split('/');\r\n item.DotsCreateDate = ArrDate[1] + '.' + ArrDate[0] + '.' + ArrDate[2].slice(2, 4);\r\n\r\n item.CalculatedStatus = item.StatusDescription;\r\n if (item.StatusDescription != 'הסתיים הטיפול') {\r\n item.CalculatedSLA = item.SLA < 1 ? 'פנייתך בטיפול' : item.SLA === 1 ?\r\n 'הטיפול בבקשתך צפוי להסתיים תוך יום עסקים אחד' : ' הטיפול בבקשתך צפוי להסתיים עד ' + item.SLA + ' ימי עסקים מהיום ';\r\n }\r\n\r\n });\r\n }\r\n\r\n $scope.SubArea = \"נושא הפניה:\";\r\n $scope.SRNumber = \"מס' פניה\";\r\n $scope.CreateDate = \"ת.פתיחה\";\r\n $scope.CardNum = \"מס' כרטיס\";\r\n $scope.Status = \"סטטוס\"; \r\n\r\n }\r\n else {\r\n $scope.showBtn = false;\r\n $scope.NumOfItems = 0;\r\n }\r\n },\r\n function (error) {\r\n var status = error[0].response && error[0].response.Response.Status;\r\n if (status.SeverityCode === 'W' && status.SeverityNumber == '004') {\r\n lobbyUiService.loader.hide();\r\n $scope.NotFound = \"לא נמצאו פניות\";\r\n $scope.showBtn = false;\r\n $scope.NumOfItems = 0;\r\n }\r\n else {\r\n errorService.handleError(error);\r\n }\r\n });\r\n }\r\n\r\n $scope.trackMyCard = function () {\r\n googleAnalyticsService.insertEvent({ page: 'chat application status', eventName: 'status', action: 'Click' });\r\n }\r\n\r\n $scope.goToChat = function () {\r\n googleAnalyticsService.insertEvent({ page: 'mycard application status', eventName: 'status', action: 'Click' }); \r\n lobbyUiService.navigate($scope.chatItem.url, $scope.chatItem);\r\n };\r\n\r\n $scope.init();\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .factory('stopStandingOrderService', stopStandingOrderService);\r\n function stopStandingOrderService($q, connection, $rootScope, lobbyUiService, errorService, $timeout) {\r\n var handleAuthentication = function () {\r\n var deferred = $q.defer();\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n $timeout(function () {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.stop-standing-order' });\r\n deferred.reject();\r\n return;\r\n });\r\n }\r\n deferred.resolve(true);\r\n }\r\n\r\n return {\r\n handleAuthentication: handleAuthentication,\r\n }\r\n }\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('expressLoanController', expressLoanController);\r\n\r\n expressLoanController.$inject = [\r\n '$scope', 'connection', 'appData', 'lobbyUiService', 'errorService', '$ionicScrollDelegate', 'googleAnalyticsService', '$timeout', '$ionicSlideBoxDelegate'\r\n ];\r\n\r\n function expressLoanController($scope, connection, appData, lobbyUiService, errorService, $ionicScrollDelegate, googleAnalyticsService, $timeout, $ionicSlideBoxDelegate) {\r\n\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.lobbyUiService = lobbyUiService;\r\n $scope.steps3 = ['1. בחירת סכום', '2. אישור נתוני הלוואה', '3. אישור ביצוע'];;\r\n $scope.steps4 = ['1. בחירת סכום', '2. בחירת מספר תשלומים', '3. אישור נתוני הלוואה', '4. אישור ביצוע'];\r\n $scope.requestedAmount = {\r\n amount: 0,\r\n formated: ''\r\n }\r\n\r\n $scope.members =\r\n {\r\n agreeToTerms: false,\r\n numOfPayments: 0,\r\n showTerms: false,\r\n title: 'הלוואת אקספרס'\r\n };\r\n\r\n $scope.doc = {\r\n url: '/CalDocs?id=ExpressLoanTerms.html'\r\n }\r\n\r\n $scope.gClass = \"details-grid\";\r\n\r\n $scope.init = function () {\r\n\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.expressLoan' }, { location: 'replace' });\r\n return;\r\n }\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Credit Solutions', eventName: 'Express Loans', action: 'Enter' });\r\n\r\n $scope.currentStage = 1;\r\n\r\n $scope.appData.inProcess = false;\r\n\r\n $scope.appData.backOverrideFN = null;\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('expressScroll').scrollTop();\r\n }, 0);\r\n\r\n if (!$scope.appData.selectedBankAccountIndex) {\r\n $scope.appData.selectedBankAccountIndex = 0;\r\n }\r\n $scope.selectedBankAccountIndex = $scope.appData.selectedBankAccountIndex;\r\n\r\n if (!$scope.appData.shownCardIndex) {\r\n $scope.appData.shownCardIndex = 0;\r\n }\r\n\r\n $scope.members.numOfPayments = '';\r\n\r\n $scope.backBtn = \"logout\";\r\n\r\n //fbConversionService.fireRemarketingTag();\r\n //googleConversionService.fireRemarketingTag();\r\n\r\n for (var i = 0; i < $scope.appData.BankAccounts.length; i++) {\r\n $scope.appData.BankAccounts[i].allCreditProductsInd = false;\r\n var cardsToDisplay = [];\r\n for (var j = 0; j < $scope.appData.BankAccounts[i].Cards.length; j++) {\r\n if ($scope.appData.BankAccounts[i].Cards[j].CreditProductsInd) {\r\n $scope.appData.BankAccounts[i].Cards[j].CardIndex = j;\r\n cardsToDisplay.push($scope.appData.BankAccounts[i].Cards[j]);\r\n }\r\n }\r\n if (cardsToDisplay.length > 0) {\r\n $scope.appData.BankAccounts[i].creditProductsCards = cardsToDisplay;\r\n $scope.appData.BankAccounts[i].allCreditProductsInd = true;\r\n }\r\n }\r\n $scope.accountsToDisplay = $scope.appData.BankAccounts;\r\n\r\n $scope.stage = 1;\r\n\r\n if (!$scope.members.shownCardIndex) {\r\n $scope.members.shownCardIndex = 0;\r\n\r\n if ($scope.appData.BankAccounts[$scope.selectedBankAccountIndex].allCreditProductsInd) {\r\n for (var k = 0; k < $scope.appData.BankAccounts[$scope.selectedBankAccountIndex].creditProductsCards.length; k++) {\r\n if ($scope.appData.BankAccounts[$scope.selectedBankAccountIndex].creditProductsCards[k].CardIndex == $scope.appData.shownCardIndex) {\r\n $scope.members.shownCardIndex = k;\r\n }\r\n }\r\n }\r\n }\r\n\r\n $scope.accountChanged($scope.selectedBankAccountIndex, $scope.members.shownCardIndex);\r\n };\r\n\r\n $scope.accountNext = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').next();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n }\r\n\r\n $scope.accountPrev = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').previous();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n }\r\n\r\n $scope.accountChanged = function (index, cardIndex) {\r\n\r\n $scope.appData.selectedBankAccountIndex = index;\r\n\r\n $scope.selectedBankAccountIndex = index;\r\n\r\n $scope.selectedBankAccount = $scope.accountsToDisplay[index];\r\n\r\n if (cardIndex) {\r\n $scope.cardChanged(cardIndex);\r\n $scope.updateCardSlider(cardIndex);\r\n } else {\r\n $scope.cardChanged(0);\r\n $scope.updateCardSlider(0);\r\n }\r\n\r\n\r\n };\r\n\r\n $scope.cardChanged = function (index) {\r\n $scope.members.shownCardIndex = index;\r\n if ($scope.selectedBankAccount.allCreditProductsInd) {\r\n $scope.selectedCard = $scope.selectedBankAccount.creditProductsCards[$scope.members.shownCardIndex];\r\n $scope.noCardError = true;\r\n $scope.appData.shownCardIndex = $scope.selectedCard.CardIndex;\r\n\r\n if (!$scope.selectedCard.NewLoan)\r\n $scope.selectedCard.NewLoan = false;\r\n\r\n $scope.getShownCardEligibility();\r\n } else {\r\n $scope.selectedCard = {};\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }\r\n };\r\n\r\n $scope.updateAccountSlider = function (index) {\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').update();\r\n }, 200).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').slide(index);\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n $scope.updateCardSlider = function (index) {\r\n\r\n $scope.members.slideBoxReady = false;\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('c4uCardsHandler').update();\r\n }, 600).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('c4uCardsHandler').slide(index);\r\n }).finally(function () {\r\n $scope.members.slideBoxReady = true;\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n\r\n $scope.to = function (index) {\r\n $ionicSlideBoxDelegate.$getByHandle('c4uCardsHandler').slide(index);\r\n }\r\n\r\n $scope.getShownCardEligibility = function () {\r\n if (!$scope.selectedCard.EligibilityStatus || $scope.selectedCard.NewLoan) {\r\n getCardEligiblityStatus();\r\n $scope.selectedCard.NewLoan = false;\r\n } else\r\n setLoanParams();\r\n\r\n function setLoanParams() {\r\n $scope.requestedAmount.amount = Math.ceil($scope.selectedCard.EligibilityStatus.MinimalAmount.Value);\r\n }\r\n\r\n function getCardEligiblityStatus() {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.getCardEligiblityStatus($scope.selectedCard.Id).then(function (response) {\r\n var EligibilityStatus = {};\r\n\r\n EligibilityStatus.AmountMultiple = response.AmountMultiple;\r\n EligibilityStatus.AmountRangeInterval = response.AmountRangeInterval;\r\n\r\n EligibilityStatus.CardCalIssuerInd = response.CardCalIssuerInd;\r\n EligibilityStatus.MaximalAmount = response.MaximalAmount;\r\n EligibilityStatus.MinimalAmount = response.MinimalAmount;\r\n EligibilityStatus.NumberOfPaymentsInd = response.NumberOfPaymentsInd;\r\n $scope.selectedCard.EligibilityStatus = EligibilityStatus;\r\n if (!$scope.selectedCard.EligibilityStatus.NumberOfPaymentsInd) {\r\n $scope.selectedCard.shownSteps = $scope.steps3;\r\n } else {\r\n $scope.selectedCard.shownSteps = $scope.steps4;\r\n }\r\n $scope.noCardError = true;\r\n $scope.CardCalIssuerInd = $scope.selectedCard.EligibilityStatus.CardCalIssuerInd;\r\n setLoanParams();\r\n\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n $scope.selectedCard.shownSteps = null;\r\n $scope.noCardError = errorService.handleError(error, getCardEligiblityStatus);\r\n });\r\n }\r\n };\r\n\r\n $scope.goToStage2 = function () {\r\n //document.removeEventListener(\"backbutton\", appData.onBackKeyDown, true);\r\n //document.addEventListener(\"backbutton\", $scope.backEventHandler, true);\r\n\r\n $scope.appData.backOverrideFN = $scope.cancelLoan;\r\n\r\n if ($scope.selectedCard.EligibilityStatus.NumberOfPaymentsInd) {\r\n\r\n getLoanPaymentsRange();\r\n } else {\r\n $scope.goToStage3();\r\n }\r\n\r\n function getLoanPaymentsRange() {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.getLoanPaymentsRange($scope.selectedCard.Id, $scope.requestedAmount.amount).then(function (response) {\r\n $scope.currentStage = 2;\r\n $scope.stage = 2;\r\n $scope.accountsToDisplay = [$scope.selectedBankAccount];\r\n $scope.selectedCard.EligibilityStatus.MaximalNumOfPayments = response.MaximalNumOfPayments;\r\n $scope.selectedCard.EligibilityStatus.MinimalNumOfPayments = response.MinimalNumOfPayments;\r\n $scope.members.numOfPayments = $scope.selectedCard.EligibilityStatus.MinimalNumOfPayments;\r\n\r\n $scope.selectedCard.EligibilityStatus.payments = [];\r\n for (var i = response.MinimalNumOfPayments; i < response.MaximalNumOfPayments + 1; i++)\r\n $scope.selectedCard.EligibilityStatus.payments.push(i);\r\n formatRequestAmount();\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Express loan', eventName: 'Express Loan Request - Continue', action: 'Continue' });\r\n //googleConversionService.fireRemarketingTag();\r\n\r\n $scope.appData.inProcess = true;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n errorService.handleError(error, getLoanPaymentsRange);\r\n }).finally(function () {\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('expressScroll').scrollTop();\r\n }, 0);\r\n });\r\n }\r\n\r\n };\r\n\r\n function formatRequestAmount() {\r\n\r\n var wantedAmount = $scope.requestedAmount.amount;\r\n $scope.requestedAmount.formated = '';\r\n for (var i = 1; i < ($scope.requestedAmount.amount + '').length + 1; i++) {\r\n if (i % 3 == 1 && i != 1) {\r\n $scope.requestedAmount.formated = ',' + $scope.requestedAmount.formated;\r\n }\r\n $scope.requestedAmount.formated = wantedAmount % 10 + '' + $scope.requestedAmount.formated;\r\n wantedAmount = Math.floor(wantedAmount / 10);\r\n\r\n }\r\n }\r\n\r\n $scope.goToStage3 = function () {\r\n\r\n setTimeout(function () {\r\n getSimulateLoanRequest();\r\n $scope.appData.backOverrideFN = $scope.cancelLoan;\r\n });\r\n\r\n function getSimulateLoanRequest() {\r\n var payments = '';\r\n if ($scope.members.numOfPayments != '')\r\n payments = parseInt($scope.members.numOfPayments);\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.getSimulateLoanRequest($scope.selectedCard.Id, $scope.requestedAmount.amount, payments).then(function (response) {\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n $scope.accountsToDisplay = [$scope.selectedBankAccount];\r\n $scope.currentStage = 3;\r\n\r\n var eventName = 'Express Loan Payments - Continue';\r\n\r\n if (!$scope.selectedCard.EligibilityStatus.NumberOfPaymentsInd) {\r\n $scope.stage = 2;\r\n eventName = 'Cal Choice Express Loan Payments - Continue';\r\n } else\r\n $scope.stage = 3;\r\n\r\n $scope.SimulatedLoanRequest = {};\r\n $scope.SimulatedLoanRequest.Comments = response.Comments;\r\n $scope.SimulatedLoanRequest.AnnualNominalInterest = response.AnnualNominalInterest;\r\n $scope.SimulatedLoanRequest.AnnualAdaptedInterest = response.AnnualAdaptedInterest;\r\n $scope.SimulatedLoanRequest.MonthlyPaymentAmount = response.MonthlyPaymentAmount;\r\n $scope.SimulatedLoanRequest.TermsDocumentURL = response.TermsDocumentURL;\r\n $scope.SimulatedLoanRequest.TotalArbitrageIntrestPaymentAmount = response.TotalArbitrageIntrestPaymentAmount;\r\n $scope.SimulatedLoanRequest.RequestedAmount = response.RequestedAmount;\r\n $scope.SimulatedLoanRequest.NumberOfPayments = response.NumberOfPayments;\r\n $scope.stage3GridData = getStage3GridData();\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Express loan', eventName: eventName, action: 'Continue' });\r\n //googleConversionService.fireRemarketingTag();\r\n\r\n $scope.appData.inProcess = true;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n errorService.handleError(error, getSimulateLoanRequest);\r\n }).finally(function () {\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('expressScroll').scrollTop();\r\n }, 0);\r\n });\r\n }\r\n\r\n function getStage3GridData() {\r\n var headers = [];\r\n var data = !$scope.selectedCard.EligibilityStatus.NumberOfPaymentsInd ?\r\n [\r\n ['סכום הלוואה ', $scope.SimulatedLoanRequest.RequestedAmount.ReversedFormattedValue],\r\n ['הריבית הנומינלית השנתית היא', $scope.SimulatedLoanRequest.AnnualNominalInterest.ReversedFormattedValue]\r\n ]\r\n :\r\n [\r\n ['סכום הלוואה ', $scope.SimulatedLoanRequest.RequestedAmount.ReversedFormattedValue],\r\n ['אופן פריסה', $scope.SimulatedLoanRequest.NumberOfPayments + ' תשלומים'],\r\n ['סכום החזר חודשי', $scope.SimulatedLoanRequest.MonthlyPaymentAmount.ReversedFormattedValue],\r\n ['הריבית הנומינלית השנתית היא', $scope.SimulatedLoanRequest.AnnualNominalInterest.ReversedFormattedValue]\r\n ];\r\n var rowConfig = [{ clickable: false, cls: '' }, { clickable: false, cls: '' }, { clickable: false, cls: '' }, { clickable: false, cls: '' }];\r\n return { headers: headers, rows: data, rowConfig: rowConfig };\r\n };\r\n };\r\n\r\n $scope.goToStage4 = function () {\r\n if (!$scope.members.agreeToTerms) {\r\n var errMsg = 'יש לאשר את התקנון';\r\n if (navigator.notification)\r\n navigator.notification.alert(\r\n errMsg,\r\n function () {\r\n },\r\n ' ',\r\n 'סגור'\r\n );\r\n else {\r\n lobbyUiService.popup.alert(errMsg, 'נא לשים לב');\r\n }\r\n return;\r\n }\r\n $scope.appData.backOverrideFN = null;\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.getApproveLoanRequest($scope.selectedCard.Id).then(function (response) {\r\n\r\n $scope.currentStage = 4;\r\n\r\n var eventName = 'Express Loan Approval - Confirm';\r\n\r\n if (!$scope.selectedCard.EligibilityStatus.NumberOfPaymentsInd) {\r\n $scope.stage = 3;\r\n eventName = 'Cal Choice Express Loan Approval - Confirm';\r\n } else\r\n $scope.stage = 4;\r\n\r\n\r\n $scope.ApprovedLoan = response;\r\n \r\n\r\n googleAnalyticsService.insertEvent({ page: 'Express loan', eventName: eventName, action: 'Confirm' });\r\n\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n if ($scope.members.agreeToTerms)\r\n delete $scope.members.agreeToTerms;\r\n }, function (error) {\r\n errorService.handleError(error, $scope.goToStage4);\r\n }).finally(function () {\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('expressScroll').scrollTop();\r\n }, 0);\r\n $scope.appData.inProcess = false;\r\n });\r\n };\r\n\r\n $scope.newLoan = function () {\r\n googleAnalyticsService.insertEvent({ page: 'Express Loans', eventName: 'Express Loan Approved - Another Request', action: 'Approval' });\r\n $scope.selectedCard.NewLoan = true;\r\n $scope.init();\r\n };\r\n\r\n $scope.cancelLoan = function () {\r\n\r\n var buttonLabels = { ok: 'אישור', cancel: 'ביטול' };\r\n var msg = 'נתוני הבקשה לא ישמרו';\r\n var title = 'האם ברצונך לעזוב את בקשת ההלוואה?';\r\n var ua = navigator.userAgent.toLowerCase();\r\n\r\n var buttonLableText = '';\r\n\r\n if (navigator.notification) {\r\n if (ua.indexOf(\"android\") > -1)\r\n buttonLableText = buttonLabels.ok + (buttonLabels.cancel ? (',' + buttonLabels.cancel) : '');\r\n else\r\n buttonLableText = (buttonLabels.cancel ? (buttonLabels.cancel + ',') : '') + buttonLabels.ok;\r\n\r\n navigator.notification.confirm(\r\n msg,\r\n callback,\r\n title,\r\n buttonLableText\r\n );\r\n\r\n } else {\r\n callback(confirm(title + \"\\n\" + msg));\r\n }\r\n\r\n function callback(button) {\r\n if (ua.indexOf(\"iphone\") > -1 && buttonLableText.indexOf(',') > -1)\r\n if (button == 1)\r\n button = 2;\r\n else\r\n button = 1;\r\n if (button == 1 || button == true) {\r\n if ($scope.members.agreeToTerms)\r\n delete $scope.members.agreeToTerms;\r\n $scope.goBackToStage();\r\n\r\n } else {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n $scope.goBackToStage = function () {\r\n\r\n if ($scope.members.showTerms) {\r\n\r\n $timeout(function () {\r\n $scope.members.title = 'הלוואת אקספרס';\r\n $scope.members.showTerms = false;\r\n }, 0);\r\n $scope.appData.backOverrideFN = $scope.cancelLoan;\r\n return;\r\n }\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Express Loans', eventName: 'Express Loan Request - Back', action: 'Back' });\r\n\r\n $scope.appData.inProcess = false;\r\n\r\n $scope.appData.backOverrideFN = null;\r\n\r\n $scope.selectedCard.NewLoan = true;\r\n\r\n $scope.init();\r\n }\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $scope.appData.backOverrideFN = null;\r\n $scope.appData.inProcess = false;\r\n\r\n if ($scope.selectedCard)\r\n $scope.selectedCard.NewLoan = true;\r\n });\r\n\r\n $scope.goToInfo = function () {\r\n $scope.title = 'תקנון התכנית';\r\n $scope.members.showTerms = true;\r\n $scope.appData.backOverrideFN = $scope.goBackToStage;\r\n };\r\n\r\n $scope.backEventHandler = function () {\r\n $timeout($scope.goBackToStage, 0, true);\r\n return true;\r\n };\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('fixedPayoutController', fixedPayoutController);\r\n\r\n fixedPayoutController.$inject = [\r\n 'connection', 'lobbyUiService', 'ssoService', 'appSettings'\r\n ];\r\n\r\n function fixedPayoutController(connection, lobbyUiService, ssoService, appSettings) {\r\n\r\n if (!connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login');\r\n return;\r\n }\r\n\r\n lobbyUiService.loader.show();\r\n angular.element(\".backdrop\").removeClass('backdrop');\r\n\r\n setTimeout(function () {\r\n ssoService.insertSsoDetails().then(function (res) {\r\n var query = 'sid=' + res.Token;\r\n lobbyUiService.loader.hide();\r\n lobbyUiService.openInNewTabAndGoBack(appSettings.fixedPayoutNewSiteUrl + \"?\" + query);\r\n\r\n }, function (err) {\r\n lobbyUiService.loader.hide();\r\n lobbyUiService.openInNewTabAndGoBack(appSettings.fixedPayoutNewSiteUrl);\r\n });\r\n\r\n }, 4 * 1000);\r\n\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('infoController', infoController);\r\n\r\n infoController.$inject = [\r\n '$scope', 'connection', 'appData', 'lobbyUiService'\r\n ];\r\n\r\n function infoController($scope, connection, appData, lobbyUiService) {\r\n\r\n $scope.appData = appData;\r\n\r\n $scope.title = \"מידע נוסף\";\r\n\r\n $scope.cashAccountTag = \"cash account\";\r\n\r\n $scope.init = function () {\r\n\r\n if (!$scope.appData.comments) {\r\n lobbyUiService.go('dw.login');\r\n return;\r\n }\r\n var cashAccountCommentElement = $scope.appData.comments.find(comment => comment.Tag == $scope.cashAccountTag);\r\n if (cashAccountCommentElement != null) {\r\n $scope.cashAccountComment = cashAccountCommentElement.Text;\r\n }\r\n \r\n\r\n };\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('myAccountController', myAccountController);\r\n\r\n myAccountController.$inject = [\r\n '$scope', 'connection', '$window', 'appData', 'lobbyUiService', '$rootScope', '$q', '$timeout', 'utilService', 'errorService', 'ssoService',\r\n '$ionicScrollDelegate', 'googleAnalyticsService', '$sce', '$ionicSlideBoxDelegate', 'dataService'\r\n ];\r\n\r\n function myAccountController($scope, connection, $window, appData, lobbyUiService, $rootScope, $q, $timeout, utilService, errorService, ssoService,\r\n $ionicScrollDelegate, googleAnalyticsService, $sce, $ionicSlideBoxDelegate, dataService) {\r\n\r\n //#region members declaration\r\n $scope.appData = appData;\r\n\r\n $scope.title = \"עסקות וחיובים\";\r\n\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('transInnerScroll').scrollTo(0, $scope.appData.position, true);\r\n }, 1000);\r\n\r\n\r\n if (!$scope.appData.metaData) {\r\n // cal4u\r\n connection.getMetaData().then(function (response) {\r\n $scope.appData.metaData = response;\r\n }, function (error) {\r\n errorService.handleError(error, $scope.init);\r\n });\r\n }\r\n\r\n $scope.lobbyUiService = lobbyUiService;\r\n\r\n $scope.appData.myAccount = $scope.appData.myAccount || {};\r\n\r\n $scope.members =\r\n {\r\n gClass: \"details-grid\",\r\n cardDataReady: false,\r\n slideBoxReady: false\r\n };\r\n\r\n $scope.transactionsShowing = {\r\n isShowing: false,\r\n showLastTransactions: false,\r\n showNextTransactions: false,\r\n showTransactions: '',\r\n loadMore: false\r\n };\r\n\r\n //#endregion\r\n\r\n $scope.init = function () {\r\n\r\n $scope.accountDataIsMissing = false;\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.myaccount' }, { location: 'replace' });\r\n return;\r\n }\r\n\r\n $scope.members.cardDataReady = false;\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('myaccountScroll').scrollTop();\r\n }, 0);\r\n\r\n googleAnalyticsService.insertEvent({ page: 'My account', eventName: 'My account', action: 'Enter' });\r\n\r\n if (!$scope.appData.selectedBankAccountIndex)\r\n $scope.appData.selectedBankAccountIndex = 0;\r\n if (!$scope.appData.shownCardIndex)\r\n $scope.appData.shownCardIndex = 0;\r\n\r\n $scope.selectedBankAccount = $scope.appData.BankAccounts[$scope.appData.selectedBankAccountIndex];\r\n\r\n if (!$scope.selectedBankAccount) {\r\n return;\r\n }\r\n\r\n if ($scope.selectedBankAccount.BankAllCardsAddedInd)\r\n $scope.selectTab('bankAccount');\r\n else\r\n $scope.selectTab('shownCard');\r\n\r\n $scope.selectedCard = $scope.selectedBankAccount.Cards[$scope.appData.shownCardIndex];\r\n\r\n if ($scope.selectedCard) {\r\n $scope.updateCardSlider($scope.appData.shownCardIndex);\r\n }\r\n var loginEnum = { userName: 0, otp: 1 }\r\n var loginTypeObject = dataService.sessionManager.read('loginType') || { description: 'otp', value: loginEnum.otp };\r\n if (loginTypeObject.value == loginEnum.userName) {\r\n $scope.getAllBankDebits();\r\n }\r\n\r\n if ($scope.appData.myAccount.lastCard == $scope.selectedCard.LastFourDigits) {\r\n\r\n if ($scope.appData.myAccount.status == 1) { // past Charges\r\n $scope.title = 'חיובים קודמים';\r\n $scope.transactionsShowing.showLastTransactions = true;\r\n $scope.transactionsShowing.showNextTransactions = false;\r\n $scope.transactionsShowing.showTransactions = 'last';\r\n\r\n $scope.setTransactionGrigHeight('last', $scope.appData.myAccount.transGridTopLast);\r\n\r\n } else if ($scope.appData.myAccount.status == 2) { // future charges\r\n $scope.title = 'חיובים קרובים';\r\n $scope.transactionsShowing.showLastTransactions = false;\r\n $scope.transactionsShowing.showNextTransactions = true;\r\n $scope.transactionsShowing.showTransactions = 'next';\r\n\r\n $scope.setTransactionGrigHeight('next', $scope.appData.myAccount.transGridTopNext);\r\n }\r\n }\r\n\r\n lobbyUiService.loader.show();\r\n\r\n $scope.getBankCard($scope.appData.selectedBankAccountIndex, $scope.appData.shownCardIndex);\r\n\r\n $scope.getUserBenefitsBalance();\r\n };\r\n\r\n\r\n $scope.getUserBenefitsBalance = function () {\r\n $scope.bnftsError = false;\r\n var date = new Date();\r\n var month = date.getMonth() + 1;\r\n if (month < 10)\r\n month = \"0\" + month;\r\n else\r\n month.toString();\r\n var year = date.getFullYear().toString();\r\n var currentMonth = month + '/' + year;\r\n\r\n var request = {\r\n EligibilityMonth: currentMonth\r\n };\r\n\r\n connection.getUserBenefitsBalance(request).then(function (response) {\r\n if (response.UserBenefits != null) {\r\n $scope.userBenefits = response.UserBenefits;\r\n if ($scope.selectedCard.NumType != 36) {\r\n $scope.bnftsShared = response.BenefitsErrorCal;\r\n if (response.UserBenefits[\"0\"].StoreUrl.toLowerCase().indexOf(\"cal\") > 0) {\r\n $scope.bnftsBrand = response.UserBenefits[\"0\"].StoreUrl;\r\n $scope.linkToStoreApp = response.UserBenefits[\"0\"].LinkToStoreApp;\r\n\r\n }\r\n else {\r\n $scope.bnftsBrand = response.UserBenefits[\"1\"].StoreUrl;\r\n $scope.linkToStoreApp = response.UserBenefits[\"1\"].LinkToStoreApp;\r\n }\r\n }\r\n else {\r\n $scope.bnftsShared = response.BenefitsErrorDiners;\r\n if (response.UserBenefits[\"0\"].StoreUrl.toLowerCase().indexOf(\"diners\") > 0) {\r\n $scope.bnftsBrand = response.UserBenefits[\"0\"].StoreUrl;\r\n $scope.linkToStoreApp = response.UserBenefits[\"0\"].LinkToStoreApp;\r\n }\r\n else {\r\n $scope.bnftsBrand = response.UserBenefits[\"1\"].StoreUrl;\r\n $scope.linkToStoreApp = response.UserBenefits[\"1\"].LinkToStoreApp;\r\n }\r\n }\r\n }\r\n else {\r\n $scope.bnftsError = true;\r\n //$scope.bnftsError = response.Response.Status.Message;\r\n $scope.bnftsErrorTxt = response.BenefitsErrorCal;\r\n $scope.bnftsErrorUrlTxt = \"לחנות החוויות >\";\r\n }\r\n $scope.bnftsComment = response.CommentApp;\r\n }, function (error) {\r\n errorService.handleError(error);\r\n });\r\n };\r\n\r\n $scope.goToBnftsStore = function (url) {\r\n if (typeof (url) == 'undefined')\r\n url = \"https://www.cal-store.co.il\";\r\n var options = {\r\n \"sso\": true,\r\n \"type\": \"2\"\r\n };\r\n lobbyUiService.navigate(url, options);\r\n };\r\n\r\n $scope.isPageReady = function () {\r\n return $scope.members.slideBoxReady;\r\n };\r\n\r\n //#region sliders\r\n\r\n $scope.accountNext = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').next();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n }\r\n\r\n $scope.accountPrev = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').previous();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n }\r\n\r\n $scope.accountSlideChange = function (index) {\r\n\r\n $scope.members.cardDataReady = false;\r\n\r\n lobbyUiService.loader.show();\r\n\r\n $scope.appData.selectedBankAccountIndex = index;\r\n\r\n $scope.selectedBankAccount = $scope.appData.BankAccounts[index];\r\n\r\n if ($scope.selectedBankAccount.BankAllCardsAddedInd)\r\n $scope.selectTab('bankAccount');\r\n else\r\n $scope.selectTab('shownCard');\r\n\r\n $scope.getBankDebit(index);\r\n\r\n $scope.onCardSlider(0);\r\n\r\n $scope.updateCardSlider(0);\r\n\r\n $scope.transactionsShowing.showLastTransactions = false;\r\n\r\n $scope.transactionsShowing.showNextTransactions = false;\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('transInnerScroll').scrollTop();\r\n }, 0);\r\n\r\n\r\n }\r\n\r\n $scope.updateAccountSlider = function (index) {\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').update();\r\n }, 200).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').slide(index);\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n $scope.updateCardSlider = function (index) {\r\n\r\n $scope.members.slideBoxReady = false;\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('c4uCardsHandler').update();\r\n }, 600).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('c4uCardsHandler').slide(index);\r\n }).finally(function () {\r\n $scope.members.slideBoxReady = true;\r\n lobbyUiService.loader.hide();\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n $scope.to = function (index) {\r\n $ionicSlideBoxDelegate.$getByHandle('c4uCardsHandler').slide(index);\r\n }\r\n\r\n $scope.onCardSlider = function (index) {\r\n $scope.appData.myAccount.status = 0;\r\n $scope.title = \"עסקות וחיובים\";\r\n if ($scope.appData.BankAccounts) {\r\n $scope.appData.shownCardIndex = index;\r\n $scope.getBankCard($scope.appData.selectedBankAccountIndex, $scope.appData.shownCardIndex)\r\n $scope.selectedCard = $scope.selectedBankAccount.Cards[$scope.appData.shownCardIndex];\r\n $scope.fillChartData();\r\n $scope.transactionsShowing.showLastTransactions = false;\r\n $scope.transactionsShowing.showNextTransactions = false;\r\n }\r\n }\r\n\r\n $scope.getBankCards = function (index) {\r\n\r\n if (!index) {\r\n index = 0;\r\n }\r\n\r\n for (var i = 0; i < $scope.appData.BankAccounts[index].Cards.length; i++) {\r\n\r\n if (!$scope.appData.BankAccounts[index].Cards[i].CardsSpecs) {\r\n getBackCardData(index, i);\r\n }\r\n\r\n if (!$scope.appData.BankAccounts[index].Cards[i].Debits) {\r\n getBankCardDebits(index, i);\r\n } else\r\n $scope.fillChartData();\r\n\r\n if ($scope.appData.BankAccounts[index].Cards[i].CardType.includes(\"מיידי\")) {\r\n $scope.appData.BankAccounts[index].Cards[i].IsMiyadiCard = true;\r\n }\r\n }\r\n\r\n function getBackCardData(bankIndex, cardIndex) {\r\n if (!$scope.appData.BankAccounts[bankIndex].Cards[cardIndex].IsInternetPermitted) {\r\n return;\r\n }\r\n return connection.getCardData($scope.appData.BankAccounts[bankIndex].Cards[cardIndex].Id).then(function (response) {\r\n\r\n if (response.CardSpecs) {\r\n response.CardSpecs.cardTitle = $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].IsCalChoiceCard ? \"CalChoice\" : \"כרטיס\";\r\n response.CardSpecs.cardNextDebitTitle = response.CardSpecs.HHKFixedDebitAmount ? \"סך עסקות\" : \"חיוב קרוב\";\r\n\r\n if (response.CardSpecs.HHKFixedDebitAmount) {\r\n\r\n\r\n var strNextDebitAmount = '' + response.CardSpecs.HHKFixedDebitAmount.ReversedFormattedValue.replace(\"₪\", \"\") + '';\r\n\r\n var comment = utilService.stringFormat(response.CardSpecs.HHKNextDebitComment, strNextDebitAmount, response.CardSpecs.HHKNextDebitAmount.ReversedFormattedValue.replace(\"₪\", \"\"));\r\n\r\n response.CardSpecs.fixedDebitsComment = $sce.trustAsHtml(comment);\r\n\r\n $timeout(function () {\r\n $('#hhkCommentLink').ready(function () {\r\n $('#hhkCommentLink').on('click', function () {\r\n lobbyUiService.go('dw.fixedPayout');\r\n });\r\n });\r\n }, 0);\r\n }\r\n\r\n if (response.CardSpecs.isDinersExtra) {\r\n response.CardSpecs.AccumulationExeText = $sce.trustAsHtml(response.CardSpecs.AccumulationExeText);\r\n }\r\n }\r\n $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].CardsSpecs = response.CardSpecs;\r\n }, function (error) {\r\n if (cardIndex == $scope.appData.shownCardIndex && bankIndex == $scope.appData.selectedBankAccountIndex) {\r\n errorService.handleError(error, $scope.getBankCards);\r\n }\r\n });\r\n };\r\n\r\n function getBankCardDebits(bankIndex, cardIndex) {\r\n if (!$scope.appData.BankAccounts[bankIndex].Cards[cardIndex].IsInternetPermitted) {\r\n return;\r\n }\r\n connection.getBankDebits($scope.appData.BankAccounts[bankIndex].AccountID, 'C', 1, '', '', '', '', $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].Id).then(function (response) {\r\n\r\n $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].Debits = response.Debits;\r\n $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].lastMonthDebit = response.Debits[response.Debits.length - 1];\r\n $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].TotalAmount = response.TotalAmount;\r\n if (cardIndex == $scope.appData.shownCardIndex && bankIndex == $scope.appData.selectedBankAccountIndex) {\r\n $scope.fillChartData();\r\n }\r\n }, function (error) {\r\n if (cardIndex == $scope.appData.shownCardIndex && bankIndex == $scope.appData.selectedBankAccountIndex) {\r\n $scope.accountDataIsMissing = true;\r\n errorService.handleError(error, getBankCardDebits);\r\n }\r\n });\r\n };\r\n };\r\n\r\n //#endregion\r\n\r\n $scope.getBankCard = function (bankIndex, cardIndex) {\r\n\r\n if (!bankIndex) {\r\n bankIndex = 0;\r\n }\r\n if (!cardIndex) {\r\n cardIndex = 0;\r\n }\r\n if (!$scope.appData.BankAccounts[bankIndex].Cards[cardIndex].CardsSpecs) {\r\n getBackCardData(bankIndex, cardIndex);\r\n }\r\n\r\n if (!$scope.appData.BankAccounts[bankIndex].Cards[cardIndex].Debits) {\r\n getBankCardDebits(bankIndex, cardIndex);\r\n } else\r\n $scope.fillChartData();\r\n\r\n if ($scope.appData.BankAccounts[bankIndex].Cards[cardIndex].CardType.includes(\"מיידי\")) {\r\n $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].IsMiyadiCard = true;\r\n }\r\n\r\n\r\n function getBackCardData(bankIndex, cardIndex) {\r\n if (!$scope.appData.BankAccounts[bankIndex].Cards[cardIndex].IsInternetPermitted) {\r\n return;\r\n }\r\n \r\n return connection.getCardData($scope.appData.BankAccounts[bankIndex].Cards[cardIndex].Id).then(function (response) {\r\n\r\n if (response.CardSpecs) {\r\n response.CardSpecs.cardTitle = $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].IsCalChoiceCard ? \"CalChoice\" : \"כרטיס\";\r\n response.CardSpecs.cardNextDebitTitle = response.CardSpecs.HHKFixedDebitAmount ? \"סך עסקות\" : \"חיוב קרוב\";\r\n\r\n if (response.CardSpecs.HHKFixedDebitAmount) {\r\n\r\n\r\n var strNextDebitAmount = '' + response.CardSpecs.HHKFixedDebitAmount.ReversedFormattedValue.replace(\"₪\", \"\") + '';\r\n\r\n var comment = utilService.stringFormat(response.CardSpecs.HHKNextDebitComment, strNextDebitAmount, response.CardSpecs.HHKNextDebitAmount.ReversedFormattedValue.replace(\"₪\", \"\"));\r\n\r\n response.CardSpecs.fixedDebitsComment = $sce.trustAsHtml(comment);\r\n\r\n $timeout(function () {\r\n $('#hhkCommentLink').ready(function () {\r\n $('#hhkCommentLink').on('click', function () {\r\n lobbyUiService.go('dw.fixedPayout');\r\n });\r\n });\r\n }, 0);\r\n }\r\n\r\n if (response.CardSpecs.isDinersExtra) {\r\n response.CardSpecs.AccumulationExeText = $sce.trustAsHtml(response.CardSpecs.AccumulationExeText);\r\n }\r\n }\r\n $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].CardsSpecs = response.CardSpecs;\r\n }, function (error) {\r\n if (cardIndex == $scope.appData.shownCardIndex && bankIndex == $scope.appData.selectedBankAccountIndex) {\r\n errorService.handleError(error, $scope.getBankCards);\r\n }\r\n });\r\n };\r\n\r\n function getBankCardDebits(bankIndex, cardIndex) {\r\n if (!$scope.appData.BankAccounts[bankIndex].Cards[cardIndex].IsInternetPermitted) {\r\n return;\r\n }\r\n lobbyUiService.loader.show();\r\n connection.getBankDebits($scope.appData.BankAccounts[bankIndex].AccountID, 'C', 1, '', '', '', '', $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].Id).then(function (response) {\r\n\r\n $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].Debits = response.Debits;\r\n $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].lastMonthDebit = response.Debits[response.Debits.length - 1];\r\n $scope.appData.BankAccounts[bankIndex].Cards[cardIndex].TotalAmount = response.TotalAmount;\r\n if (cardIndex == $scope.appData.shownCardIndex && bankIndex == $scope.appData.selectedBankAccountIndex) {\r\n $scope.fillChartData();\r\n }\r\n }, function (error) {\r\n if (cardIndex == $scope.appData.shownCardIndex && bankIndex == $scope.appData.selectedBankAccountIndex) {\r\n $scope.accountDataIsMissing = true;\r\n errorService.handleError(error, getBankCardDebits);\r\n }\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });;\r\n };\r\n };\r\n\r\n $scope.goToBuyMe = function (url) {\r\n //dinersextra\r\n googleAnalyticsService.insertEvent({ page: 'My account', eventName: 'Diners Extra', action: 'Click' });\r\n ssoService.insertSsoDetails().then(function (res) {\r\n var query = 'sid=' + res.Token;\r\n lobbyUiService.openExternal(url + \"?\" + query);\r\n\r\n }, function (err) {\r\n lobbyUiService.openExternal(url);\r\n });\r\n };\r\n\r\n\r\n //#region debits\r\n\r\n $scope.getAllBankDebits = function () {\r\n\r\n for (var i = 0; i < $scope.appData.BankAccounts.length; i++) {\r\n if (!$scope.appData.BankAccounts[i].HasBankDebits)\r\n $scope.getBankDebit(i);\r\n };\r\n };\r\n\r\n $scope.getBankDebit = function (BankAccountIndex) {\r\n var i = BankAccountIndex;\r\n if (!$scope.appData.BankAccounts[i].HasBankDebits) {\r\n if (i == $scope.appData.selectedBankAccountIndex)\r\n getBankDebit();\r\n\r\n } else {\r\n if (i == $scope.appData.selectedBankAccountIndex)\r\n $scope.fillChartData();\r\n }\r\n\r\n function getBankDebit() {\r\n\r\n connection.getBankDebits($scope.appData.BankAccounts[i].AccountID, 'A', 1, '', '', '', '', '').then(function (response) {\r\n\r\n $scope.appData.BankAccounts[i].Debits = response.Debits;\r\n $scope.appData.BankAccounts[i].lastMonthDebit = response.Debits[response.Debits.length - 1];\r\n $scope.appData.BankAccounts[i].TotalAmount = response.TotalAmount;\r\n $scope.appData.BankAccounts[i].HasBankDebits = true;\r\n if (i == $scope.appData.selectedBankAccountIndex) {\r\n $scope.accountDataIsMissing = false;\r\n $scope.chartData = $scope.selectedBankAccount.Debits;\r\n $scope.fillChartData();\r\n }\r\n }, function () {\r\n\r\n if (i == $scope.appData.selectedBankAccountIndex) {\r\n $scope.accountDataIsMissing = !($scope.selectedBankAccount.TotalAmount && $scope.selectedTab == 'bankAccount') || !($scope.selectedTab == 'shownCard' && $scope.selectedBankAccount.Cards[$scope.appData.shownCardIndex].TotalAmount);\r\n // errorService.handleError(error, getBankDebit);\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n $scope.selectTab = function (val) {\r\n $scope.selectedTab = val;\r\n };\r\n\r\n $scope.fillChartData = function () {\r\n if ($scope.selectedTab == 'bankAccount') {\r\n $scope.accountDataIsMissing = false;\r\n\r\n $scope.chartData = $scope.selectedBankAccount.Debits;\r\n } else if ($scope.selectedCard) {\r\n $scope.accountDataIsMissing = false;\r\n\r\n $scope.chartData = $scope.selectedCard.Debits;\r\n }\r\n };\r\n\r\n $scope.$watch('selectedTab', function (newVal, oldVal) {\r\n\r\n if (newVal != oldVal)\r\n $scope.fillChartData();\r\n });\r\n\r\n //#endregion\r\n\r\n //#region transaction grid\r\n\r\n $scope.loadNextTransactions = function () {\r\n\r\n var deferred = $q.defer();\r\n\r\n if ($scope.selectedCard &&\r\n $scope.selectedCard.HasNextPage) {\r\n $scope.selectedCard.HasNextPage = false;\r\n\r\n $scope.transactionsShowing.loadMore = true;\r\n\r\n connection.getTransNextPage().then(function (response) {\r\n $scope.selectedCard.comments = response.Comments;\r\n $scope.selectedCard.HasNextPage = response.HasNextPage;\r\n $scope.selectedCard.transactions = $scope.selectedCard.transactions.concat(response.Transactions);\r\n $scope.selectedCard.transactionsGridData = $scope.transactionsToGrid($scope.selectedCard.transactions);\r\n deferred.resolve();\r\n }, function () {\r\n deferred.reject();\r\n }).finally(function () {\r\n $timeout(function () {\r\n $scope.transactionsShowing.loadMore = false;\r\n }, 500);\r\n });\r\n }\r\n return deferred.promise;\r\n };\r\n\r\n $scope.showTransactionDetails = function (index) {\r\n $scope.appData.position = $ionicScrollDelegate.$getByHandle('transInnerScroll').getScrollPosition().top;\r\n lobbyUiService.go('dw.transactionDetails', { accountIndex: $scope.appData.selectedBankAccountIndex, cardIndex: $scope.appData.shownCardIndex, transactionIndex: index });\r\n }\r\n\r\n\r\n $scope.dummyToggleCardTransactions = function () {\r\n $scope.dummyToggle = !$scope.dummyToggle;\r\n }\r\n\r\n $scope.toggleCardTransactions = function (who) {\r\n\r\n if (who == 'next') {\r\n\r\n if ($scope.selectedCard.IsCalChoiceCard)\r\n return;\r\n\r\n if (!$scope.transactionsShowing.showNextTransactions) { // get transactions for next month\r\n\r\n $scope.appData.fromDate = $scope.selectedCard.CardsSpecs.NextDebitDate.split('-').join('/');\r\n $scope.appData.toDate = $scope.appData.fromDate;\r\n\r\n $scope.transactionsShowing.showLastTransactions = false;\r\n lobbyUiService.loader.show();\r\n $scope.getTransactions($scope.selectedCard, $scope.appData.fromDate, $scope.appData.toDate).then(function () {\r\n $scope.transactionsShowing.showNextTransactions = true;\r\n $scope.title = 'חיובים קרובים';\r\n $scope.appData.myAccount.status = 2;\r\n $scope.appData.myAccount.lastCard = $scope.selectedCard.LastFourDigits;\r\n }, function () {\r\n $scope.transactionsShowing.isShowing = false;\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n } else {\r\n $scope.transactionsShowing.showNextTransactions = !$scope.transactionsShowing.showNextTransactions;\r\n $scope.title = 'עסקות וחיובים';\r\n $scope.appData.myAccount.status = 0;\r\n $scope.transactionsShowing.isShowing = false;\r\n }\r\n } else {\r\n\r\n $scope.appData.fromDate = $scope.selectedCard.CardsSpecs.LastDebitDate.split('-').join('/');\r\n\r\n $scope.appData.toDate = $scope.appData.fromDate;\r\n\r\n if (!$scope.transactionsShowing.showLastTransactions) { // get transactions for next month\r\n $scope.transactionsShowing.showNextTransactions = false;\r\n lobbyUiService.loader.show();\r\n $scope.getTransactions($scope.selectedCard, $scope.appData.fromDate, $scope.appData.toDate).then(function () {\r\n $scope.transactionsShowing.showLastTransactions = true;\r\n $scope.appData.myAccount.status = 1;\r\n $scope.appData.myAccount.lastCard = $scope.selectedCard.LastFourDigits;\r\n $scope.title = 'חיובים קודמים';\r\n }, function () {\r\n $scope.transactionsShowing.isShowing = false;\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n } else {\r\n $scope.transactionsShowing.showLastTransactions = !$scope.transactionsShowing.showLastTransactions;\r\n $scope.title = 'עסקות וחיובים';\r\n $scope.appData.myAccount.status = 0;\r\n $scope.transactionsShowing.isShowing = false;\r\n }\r\n }\r\n\r\n $scope.setTransactionGrigHeight(who);\r\n\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('transInnerScroll').scrollTop();\r\n $scope.$apply();\r\n }, 0);\r\n };\r\n\r\n $scope.setTransactionGrigHeight = function (who, top) {\r\n\r\n if (top) {\r\n $(\"#transactionsGrid\").css('top', top + 'px');\r\n } else {\r\n\r\n var lastChargesRowHeight = angular.element('.last-charge-row').height();\r\n\r\n var lastChargeRowPos = angular.element('.last-charge-row').position().top + lastChargesRowHeight;\r\n\r\n if (lastChargeRowPos > 0) {\r\n\r\n lastChargeRowPos = Math.round(lastChargeRowPos) + 13;\r\n\r\n $(\"#transactionsGrid\").css('top', lastChargeRowPos + 'px');\r\n\r\n if (who == 'next') {\r\n $scope.appData.myAccount.transGridTopNext = lastChargeRowPos;\r\n } else {\r\n $scope.appData.myAccount.transGridTopLast = lastChargeRowPos;\r\n }\r\n }\r\n }\r\n };\r\n\r\n $scope.getTransactions = function (card, fromDate, toDate) {\r\n var deferred = $q.defer();\r\n lobbyUiService.loader.show();\r\n\r\n var promise = connection.getTransactionsFromDateToDate(card.Id, fromDate, toDate);\r\n promise.then(function (response) {\r\n card.transactions = response.Transactions;\r\n card.HasNextPage = response.HasNextPage;\r\n card.monthTotals = response.TotalAmounts.DebitAmount.ReversedFormattedValue;\r\n card.comments = response.Comments;\r\n card.transactionsGridData = $scope.transactionsToGrid(card.transactions);\r\n deferred.resolve();\r\n }, function (error) {\r\n deferred.reject(error);\r\n errorService.handleError(error);\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n\r\n return deferred.promise;\r\n };\r\n\r\n $scope.transactionsToGrid = function (array) {\r\n var data = [], rowConfig = [];\r\n var headers = ['תאריך', 'שם העסק', 'סכום עסקה', 'סכום חיוב'];\r\n\r\n\r\n array.forEach(function (line) {\r\n var obj = [];\r\n\r\n obj.push(utilService.splitDate(line.Date));\r\n obj.push(line.MerchantDetails.Name);\r\n obj.push(line.Amount.ReversedFormattedValue);\r\n obj.push(line.DebitAmount.ReversedFormattedValue);\r\n data.push(obj);\r\n rowConfig.push({ clickable: true, cls: '' });\r\n });\r\n\r\n return { headers: headers, rows: data, rowConfig: rowConfig };\r\n };\r\n\r\n $scope.$watch('dummyToggle', function (newVal, oldVal) {\r\n\r\n if (newVal || oldVal) {\r\n $scope.toggleCardTransactions('next');\r\n }\r\n });\r\n\r\n //#endregion\r\n\r\n //#region navigation\r\n\r\n //$scope.goToPie = function () {\r\n // lobbyUiService.loader.show();\r\n // connection.getSectorSummary($scope.selectedCard.Id, $scope.appData.fromDate, $scope.appData.toDate).then(function (response) {\r\n // $scope.appData.pieData = response;\r\n // lobbyUiService.go('dw.pieSummary');\r\n // }, function (error) {\r\n // errorService.handleError(error, $scope.goToPie);\r\n // });\r\n //};\r\n\r\n $scope.goToStatus = function () {\r\n googleAnalyticsService.insertEvent({ page: 'My account', eventName: 'Situation Report', action: 'Click' });\r\n lobbyUiService.navigate('dw.calchoiceStatus', { accountIndex: $scope.appData.selectedBankAccountIndex, cardIndex: $scope.appData.shownCardIndex });\r\n };\r\n\r\n $scope.goToComments = function () {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'My account', eventName: 'More info', action: 'Click' });\r\n\r\n $scope.appData.comments = $scope.selectedCard.comments;\r\n\r\n lobbyUiService.go('dw.info');\r\n };\r\n\r\n $scope.goToCalChoice = function () {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'My account', eventName: 'CalChoice Payment', action: 'Click' });\r\n\r\n lobbyUiService.go('dw.calchoicePayout', { accountIndex: $scope.appData.selectedBankAccountIndex, cardIndex: $scope.appData.shownCardIndex });\r\n };\r\n\r\n $scope.goToBankCharges = function () {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'My account', eventName: 'Bank charges', action: 'Click' });\r\n\r\n lobbyUiService.go('dw.bankCharges');\r\n };\r\n\r\n $scope.goToFixedPayout = function () {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'My account', eventName: 'Fixed payout', action: 'Click' });\r\n\r\n lobbyUiService.go('dw.fixedPayout');\r\n };\r\n\r\n //#endregion\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n\r\n $scope.init();\r\n }\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('myChatController', myChatController); \r\n\r\n myChatController.$inject = [\r\n '$scope', 'connection', '$window', 'appData', 'lobbyUiService', '$rootScope', '$q', '$timeout', 'utilService', 'errorService','ssoService',\r\n '$ionicScrollDelegate', 'googleAnalyticsService', '$sce', '$ionicSlideBoxDelegate','appSettings'\r\n ];\r\n\r\n function myChatController($scope, connection, $window, appData, lobbyUiService, $rootScope, $q, $timeout, utilService, errorService, ssoService,\r\n $ionicScrollDelegate, googleAnalyticsService, $sce, $ionicSlideBoxDelegate, appSettings) {\r\n //debugger;\r\n //#region members declaration\r\n $scope.appData = appData;\r\n\r\n $scope.title = \"צ'אט עם נציג\";\r\n\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.mychat' }, { location: 'replace' });\r\n return;\r\n }else{\r\n var options = {\r\n \"abandonBehavior\": false,\r\n \"type\": \"3\",\r\n \"id\": 69,\r\n \"index\": 10,\r\n \"command\": \"open-chat-bot\",\r\n \"caption\": \"צ\\\"אט עם נציג\",\r\n \"icon\": \"ico-chat\",\r\n \"url\": appSettings.chatUrl,\r\n \"restricted\": false,\r\n \"sso\": false,\r\n \"dependency\": null,\r\n \"state\": \"dw.lobby\",\r\n \"hide\": false,\r\n \"googleAnalyticsKey\": null,\r\n \"devices\": null\r\n }\r\n \r\n lobbyUiService.navigate(appSettings.chatUrl, options);\r\n }\r\n \r\n\r\n\r\n }\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n\r\n angular.module('Cal4U')\r\n .controller('pieSummaryController', pieSummaryController);\r\n\r\n pieSummaryController.$inject = [\r\n '$scope', 'connection', 'appData', 'lobbyUiService', 'googleAnalyticsService'\r\n ];\r\n\r\n function pieSummaryController($scope, connection, appData, lobbyUiService, googleAnalyticsService) {\r\n\r\n $scope.appData = appData;\r\n $scope.title = 'פירוט עסקות';\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.init = function () {\r\n\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login');\r\n return;\r\n }\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Pie Summary', eventName: 'Pie Summary', action: 'Enter' });\r\n\r\n $scope.selectedBankAccount = $scope.appData.BankAccounts[$scope.appData.selectedBankAccountIndex];\r\n $scope.selectedCard = $scope.selectedBankAccount.Cards[$scope.appData.shownCardIndex];\r\n $scope.pieData = $scope.appData.pieData;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n };\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('termsPageController', termsPageController);\r\n\r\n termsPageController.$inject = [\r\n '$scope', 'connection', 'appData', '$sce', 'lobbyUiService'\r\n ];\r\n\r\n function termsPageController($scope, connection, appData, $sce, lobbyUiService) {\r\n\r\n $scope.appData = appData;\r\n $scope.title = 'תקנון התוכנית';\r\n\r\n $scope.init = function() {\r\n\r\n $scope.appData = appData;\r\n\r\n $scope.doc = {\r\n title: 'תקנון התכנית',\r\n url: ''\r\n }\r\n\r\n var titleParam = lobbyUiService.getParams('title');\r\n\r\n var url = lobbyUiService.getParams('url');\r\n\r\n if (!url) {\r\n //show error\r\n }\r\n\r\n $scope.doc.url = url;\r\n\r\n if (titleParam) {\r\n $scope.doc.title = titleParam;\r\n }\r\n\r\n\r\n switch (url) {\r\n case 'loan':\r\n {\r\n $scope.doc.url = \"/CalDocs?id=ExpressLoanTerms.html\";\r\n break;\r\n }\r\n case 'fixed':\r\n {\r\n $scope.doc.url = \"/CalDocs?id=fixedDebitTerms.html\";\r\n break;\r\n }\r\n default:\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('transactionDetailsController', transactionDetailsController);\r\n\r\n transactionDetailsController.$inject = [\r\n '$scope', 'connection', '$window', 'appData', 'lobbyUiService', '$rootScope', '$q', 'utilService', 'errorService',\r\n '$ionicScrollDelegate', 'googleAnalyticsService', '$timeout', 'leadNavigationService', 'appSettings'\r\n ];\r\n\r\n function transactionDetailsController($scope, connection, $window, appData, lobbyUiService, $rootScope, $q, utilService, errorService,\r\n $ionicScrollDelegate, googleAnalyticsService, $timeout, leadNavigationService, appSettings) {\r\n\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.selectedBankAccountIndex = lobbyUiService.getParams('accountIndex');\r\n $scope.cardIndex = lobbyUiService.getParams('cardIndex');\r\n $scope.transactionIndex = lobbyUiService.getParams('transactionIndex');\r\n $scope.gClass = \"details-grid-transaction\";\r\n $scope.lobbyUiService = lobbyUiService;\r\n $scope.title = 'פרטי העסקה';\r\n\r\n function transactionToGrid(transactionData) {\r\n var data = [], rowConfig = [];\r\n // Headers are empty due to diffrent style of header on this view\r\n var headers = [];\r\n var dataFiledsNoName = [];\r\n for (i = 0; i < transactionData.DataFields.length; i++) {\r\n var dataFieldVal = modifyComment(transactionData.DataFields[i].Value);\r\n if (transactionData.DataFields[i].Name != null && transactionData.DataFields[i].Name.trim() != '') {\r\n data.push([transactionData.DataFields[i].Name, dataFieldVal]);\r\n rowConfig.push({ clickable: false, cls: transactionData.DataFields[i].IsMoney ? 'money' : '' });\r\n }\r\n else {\r\n dataFiledsNoName.push(['', dataFieldVal]);\r\n rowConfig.push({ clickable: false, cls: transactionData.DataFields[i].IsMoney ? 'money' : '' });\r\n }\r\n }\r\n\r\n if (transactionData.MerchantDetails.Name) {\r\n data.push(['שם בית העסק', transactionData.MerchantDetails.Name]);\r\n rowConfig.push({ clickable: false, cls: '' });\r\n }\r\n if (transactionData.MerchantDetails.SectorName) {\r\n data.push(['ענף', transactionData.MerchantDetails.SectorName]);\r\n rowConfig.push({ clickable: false, cls: '' });\r\n }\r\n if (transactionData.MerchantDetails.Address) {\r\n data.push(['כתובת', transactionData.MerchantDetails.Address]);\r\n rowConfig.push({ clickable: false, cls: '' });\r\n }\r\n if (transactionData.MerchantDetails.FaxNumber) {\r\n data.push(['פקס', transactionData.MerchantDetails.FaxNumber]);\r\n rowConfig.push({ clickable: false, cls: '' });\r\n }\r\n\r\n // dataFiledsNoName.forEach(x => data.push(x));\r\n\r\n //TODO add sort to Comments by Index\r\n var additionalData = '';\r\n for (var i = 0; i < transactionData.Comments.length; i++) {\r\n var comment = transactionData.Comments[i].Text;\r\n if (comment == '' || comment == null)\r\n comment = ' ';\r\n else {\r\n comment = modifyComment(comment);\r\n if (comment[0] == '*') {\r\n comment = comment.split('*')[1];\r\n }\r\n additionalData = additionalData + comment + '. ';\r\n }\r\n }\r\n\r\n for (var i = 0; i < dataFiledsNoName.length; i++) {\r\n var comment = dataFiledsNoName[i][1];\r\n if (comment == '' || comment == null)\r\n comment = ' ';\r\n else {\r\n comment = modifyComment(comment);\r\n if (comment[0] == '*') {\r\n comment = comment.split('*')[1];\r\n }\r\n if (!additionalData.includes(comment)) {\r\n additionalData = additionalData + comment + '. ';\r\n }\r\n }\r\n }\r\n\r\n if (additionalData != '') {\r\n\r\n data.push(['פירוט נוסף', additionalData]);\r\n rowConfig.push({ clickable: false, cls: '' });\r\n }\r\n\r\n return { headers: headers, rows: data, rowConfig: rowConfig };\r\n };\r\n\r\n function modifyComment(comment) {\r\n if (comment.split(\" 1) {\r\n comment = comment.split(\" 1 && splitted[splitted.length - 1] == \"\") { //comma is last char\r\n comment = splitted.join(\"\"); //remove last comma\r\n }\r\n return comment;\r\n }\r\n\r\n $scope.init = function () {\r\n\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login');\r\n return;\r\n }\r\n\r\n /* display trans denial button if query param td=1:\r\n let queryString = new URLSearchParams(window.location.search);\r\n let queryParams = Object.fromEntries(queryString.entries());\r\n let transDenialQueryParam = queryParams.td;\r\n */\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('transDetailsScroll').scrollTop();\r\n }, 0);\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Transaction details', eventName: 'Transaction details', action: 'Enter' });\r\n\r\n $scope.selectedBankAccount = $scope.appData.BankAccounts[$scope.selectedBankAccountIndex];\r\n\r\n\r\n if ($scope.cardIndex == -1) {\r\n $scope.selectedTransaction = $scope.appData.TransactionsDetails[$scope.transactionIndex];\r\n $scope.selectedCard = $scope.selectedBankAccount.Cards[$scope.appData.shownCardIndex];\r\n } else {\r\n $scope.selectedCard = $scope.selectedBankAccount.Cards[$scope.cardIndex];\r\n $scope.selectedTransaction = ($scope.selectedCard.transactions && $scope.selectedCard.transactions[$scope.transactionIndex]) || { };\r\n }\r\n\r\n var hasCardOneBankAccount = appData != null && appData.BankAccounts != null;\r\n if (hasCardOneBankAccount) {\r\n var bankAccountsPerSelectedCard = 0\r\n appData.BankAccounts.forEach(bankAccount => {\r\n if (bankAccount.Cards.contains($scope.selectedCard)) {\r\n ++bankAccountsPerSelectedCard;\r\n }\r\n });\r\n hasCardOneBankAccount = bankAccountsPerSelectedCard == 1;\r\n }\r\n\r\n $scope.supportTransDenial = appSettings.transDenialUrl && appSettings.transDenialUrl.length > 0 && /*transDenialQueryParam == 1 &&*/ hasCardOneBankAccount;\r\n\r\n getTransDetails();\r\n\r\n\r\n function getTransDetails() {\r\n if (!$scope.selectedTransaction.Id) {\r\n lobbyUiService.go('dw.myaccount');\r\n return;\r\n }\r\n\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n var promise = connection.getTransactionDetails($scope.selectedTransaction.Id, $scope.selectedTransaction.Numerator);\r\n promise.then(function (response) {\r\n\r\n $scope.query = response.Data.MerchantDetails.Name + ' ' + response.Data.MerchantDetails.Address;\r\n $scope.phoneNumber = response.Data.MerchantDetails.PhoneNumber;\r\n $scope.isView = response.IsViewed;\r\n\r\n $scope.transactionGridData = transactionToGrid(response.Data);\r\n $scope.appData.showSpinner = false;\r\n setTimeout(function () {\r\n lobbyUiService.loader.hide();\r\n }, 500);\r\n }, function (error) {\r\n errorService.handleError(error, getTransDetails);\r\n });\r\n }\r\n };\r\n\r\n $scope.goToContactMe = function () {\r\n googleAnalyticsService.insertEvent({ page: 'Transaction details', eventName: 'Inquiry transaction versus a representative - Call customer service' });\r\n lobbyUiService.go('dw.contactMe');\r\n }\r\n\r\n $scope.goToServiceLead = function () {\r\n googleAnalyticsService.insertEvent({ page: 'transaction-details', action: 'chat-with-rep' }); \r\n leadNavigationService.navigate();\r\n }\r\n \r\n /*function goToChat() {\r\n var options = {\r\n \"abandonBehavior\": false,\r\n \"type\": \"3\",\r\n \"id\": 69,\r\n \"index\": 10,\r\n \"command\": \"open-chat\",\r\n \"caption\": \"צ\\\"אט עם נציג\",\r\n \"icon\": \"ico-chat\",\r\n \"url\": \"https://chat.cal-online.co.il/chat/iwchat.aspx\",\r\n \"restricted\": false,\r\n \"sso\": false,\r\n \"dependency\": null,\r\n \"state\": \"https://chat.cal-online.co.il/chat/iwchat.aspx\",\r\n \"hide\": false,\r\n \"googleAnalyticsKey\": null,\r\n \"devices\": null\r\n };\r\n lobbyUiService.navigate(\"https://chat.cal-online.co.il/chat/iwchat.aspx\",options);\r\n };*/\r\n\r\n $scope.call = function () {\r\n googleAnalyticsService.insertEvent({ page: 'Transaction details', eventName: 'Inquiry transaction versus a business - Call business' });\r\n }\r\n\r\n $scope.searchGoogleAnalytics = function (query) { \r\n googleAnalyticsService.insertEvent({ page: 'פרטי עסקה', action: 'חיפוש גוגל בפרטי עסקה', eventName: query.trim() }); \r\n console.log('searchGoogleAnalytics ' + query.trim());\r\n }\r\n\r\n $scope.transDenial = function () {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n connection.getTransDenialToken($scope.selectedTransaction.Id, $scope.selectedTransaction.Numerator)\r\n .then(function (res) {\r\n $scope.appData.showSpinner = false;\r\n if (res.Token) {\r\n var url = appSettings.transDenialUrl + res.Token;\r\n location.href = url;\r\n }\r\n else {\r\n errorService.handleError(error, res);\r\n }\r\n }, function (err) {\r\n\r\n });\r\n \r\n //googleAnalyticsService.insertEvent({ page: 'Transaction details', eventName: 'Inquiry transaction versus a business - Call business' });\r\n }\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('wantCardController', wantCardController);\r\n\r\n wantCardController.$inject = [\r\n '$scope', 'connection', 'appData', 'lobbyUiService', 'errorService', 'googleAnalyticsService'\r\n ];\r\n\r\n function wantCardController($scope, connection, appData, lobbyUiService, errorService, googleAnalyticsService) {\r\n\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.lobbyUiService = lobbyUiService;\r\n $scope.title = \"רוצה כרטיס Cal?\";\r\n\r\n $scope.members = {\r\n cardChecked: false,\r\n selectedOption: null,\r\n memberNum: '',\r\n resolutionCode: ''\r\n };\r\n\r\n $scope.CustomerInfo = {};\r\n\r\n $scope.init = function () {\r\n\r\n if ($scope.appData.isLoggedIn) {\r\n $scope.CustomerInfo = angular.copy($scope.appData.CustomerInfo);\r\n $scope.backBtn = \"logout\";\r\n } else\r\n $scope.backBtn = \"back\";\r\n\r\n $scope.members.resolutionCode = lobbyUiService.getParams('code');\r\n\r\n if (!$scope.appData.metaData) {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n var promise = connection.getMetaData();\r\n promise.then(function (response) {\r\n $scope.appData.metaData = response;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n $scope.options = $scope.appData.metaData.Cards;\r\n $scope.members.selectedOption = $scope.getSelectedOption();\r\n\r\n if ($scope.members.selectedOption) {\r\n if ($scope.members.selectedOption.ResolutionCode == '2204') {\r\n googleAnalyticsService.insertEvent({ page: 'Cal Card request', eventName: 'Calchoice Card', action: 'Enter' });\r\n } else {\r\n googleAnalyticsService.insertEvent({ page: 'Cal Card request', eventName: 'Other Card (Resolution Code: ' + $scope.members.selectedOption.ResolutionCode + ')', action: 'Enter' });\r\n }\r\n }\r\n },\r\n function (error) {\r\n errorService.handleError(error, $scope.init);\r\n });\r\n } else {\r\n $scope.options = $scope.appData.metaData.Cards;\r\n $scope.members.selectedOption = $scope.getSelectedOption();\r\n\r\n }\r\n\r\n\r\n $scope.members.cardChecked = false;\r\n $scope.hebRegEx = /^[\\u05CF-\\u05EB\\- ]+$/;\r\n\r\n };\r\n\r\n $scope.getSelectedOption = function () {\r\n var o = null;\r\n\r\n if ($scope.members.resolutionCode && $scope.members.resolutionCode != '') {\r\n $scope.options.forEach(function (option) {\r\n if (option.ResolutionCode == $scope.members.resolutionCode) {\r\n o = option;\r\n }\r\n });\r\n }\r\n\r\n return o;\r\n };\r\n\r\n $scope.openLead = function () {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n\r\n var data = { FirstName: $scope.CustomerInfo.FirstName, LastName: $scope.CustomerInfo.LastName, IdNum: $scope.CustomerInfo.Id, PhoneArea: $scope.CustomerInfo.PhoneArea, PhoneNumber: $scope.CustomerInfo.PhoneNumber, ResolutionCode: $scope.appData.metaData.Cards[$scope.options.indexOf($scope.members.selectedOption)].ResolutionCode, MemberNum: $scope.members.memberNum, RequestType: '02' }\r\n\r\n connection.postOpenLead(data).then(function (response) {\r\n var dialogBox = response.Response.DialogBox;\r\n\r\n lobbyUiService.loader.hide();\r\n $scope.appData.showSpinner = false;\r\n\r\n if (data.ResolutionCode == '2204') {\r\n googleAnalyticsService.insertEvent({ page: 'Cal Card request', eventName: 'Order CalChoice card', action: 'Click' });\r\n } else {\r\n googleAnalyticsService.insertEvent({ page: 'Cal Card request', eventName: 'Send Details (ResolutionCode: ' + data.ResolutionCode + ')', action: 'Click' });\r\n }\r\n\r\n if (navigator.notification)\r\n navigator.notification.alert(\r\n dialogBox.Content,\r\n $scope.$parent.back(),\r\n ' ',\r\n dialogBox.OKButtonText\r\n );\r\n else {\r\n lobbyUiService.popup.alert(dialogBox.Content, 'נא לשים לב', null, function () {\r\n $scope.$parent.back();\r\n });\r\n }\r\n return true;\r\n }, function (error) {\r\n errorService.handleError(error, $scope.openLead);\r\n return false;\r\n });\r\n }\r\n\r\n $scope.checkMemberNum = function () {\r\n $scope.isMemberNum = $scope.appData.metaData.Cards[$scope.options.indexOf($scope.members.selectedOption)].IsMemberNum;\r\n }\r\n\r\n $scope.validateForm = function () {\r\n //padding for phone number\r\n var errMsg = '';\r\n if (!$scope.CustomerInfo) {\r\n errMsg = 'יש למלא את כל השדות';\r\n } else {\r\n\r\n if ($scope.openLeadForm.$valid && $scope.members.cardChecked && $('#idNum').val().length == 9 && $('#phoneNum').val().length == 7) {\r\n return true;\r\n } else {\r\n if ($scope.openLeadForm.$error.required && $scope.openLeadForm.$error.required.length > 1) {\r\n errMsg = 'יש למלא את כל השדות';\r\n } else if ($('#cardSelect').hasClass('ng-invalid-required'))\r\n errMsg = 'יש לבחור סוג כרטיס.';\r\n else if ($('#fName').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה שם פרטי.';\r\n else if ($('#fName').hasClass('ng-invalid-pattern'))\r\n errMsg = 'השם הפרטי שהוזן אינו תקין. יש למלא אותיות בעברית בלבד.';\r\n else if ($('#lName').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה שם משפחה';\r\n else if ($('#lName').hasClass('ng-invalid-pattern'))\r\n errMsg = 'שם המשפחה שהוזן אינו תקין. יש למלא אותיות בעברית בלבד.';\r\n else if ($('#idNum').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה מספר ת.ז.';\r\n else if ($('#idNum').hasClass('ng-invalid-pattern') || $('#idNum').val().length != 9)\r\n errMsg = 'מספר ת.ז. שהוזן אינו תקין. יש למלא מספר בן 9 ספרות בדיוק כולל ספרת ביקורת.';\r\n else if ($('#memberNum').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא מספר חבר';\r\n else if ($('#phoneNum').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה מספר טלפון';\r\n else if ($('#phoneNum').hasClass('ng-invalid-pattern'))\r\n errMsg = 'מספר הטלפון שהוזן אינו תקין. יש למלא ספרות בלבד.';\r\n else if ($('#phoneNum').val().length < 7)\r\n errMsg = 'מספר הטלפון שהוזן אינו תקין. יש למלא מספר בן 7 ספרות בדיוק.';\r\n else if ($('#areaNum').hasClass('ng-invalid-required'))\r\n errMsg = 'קידומת הטלפון שנבחרה אינה תקינה. יש לבחור קידומת טלפון.';\r\n else if (!$scope.members.cardChecked)\r\n errMsg = 'יש לציין אם יש ברשותך כרטיס אשראי בתוקף של אחת מחברות האשראי';\r\n }\r\n }\r\n\r\n if (navigator.notification)\r\n navigator.notification.alert(\r\n errMsg,\r\n function () {\r\n /*Do Nothing*/\r\n },\r\n ' ',\r\n 'סגור'\r\n );\r\n else {\r\n lobbyUiService.popup.alert(errMsg, 'נא לשים לב');\r\n }\r\n\r\n return false;\r\n }\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function(window, angular) {\r\n 'use strict';\r\n\r\n angular.module('Cal4U')\r\n .controller('wantLoanController', wantLoanController);\r\n\r\n wantLoanController.$inject = [\r\n '$scope', 'connection', 'appData', 'lobbyUiService', 'errorService', 'googleAnalyticsService'\r\n ];\r\n\r\n function wantLoanController($scope, connection, appData, lobbyUiService, errorService, googleAnalyticsService) {\r\n\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.title = 'רוצה הלוואה?';\r\n $scope.lobbyUiService = lobbyUiService;\r\n\r\n $scope.CustomerInfo = {};\r\n\r\n $scope.init = function () {\r\n if ($scope.appData.isLoggedIn) {\r\n $scope.CustomerInfo = angular.copy($scope.appData.CustomerInfo);\r\n $scope.backBtn = \"logout\";\r\n } else\r\n $scope.backBtn = \"back\";\r\n\r\n googleAnalyticsService.insertEvent({ page: 'Lead', eventName: 'Express Loan - Lead', action: 'Enter' });\r\n\r\n if (!$scope.appData.metaData) {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n var promise = connection.getMetaData();\r\n promise.then(function (response) {\r\n $scope.appData.metaData = response;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n },\r\n function (error) {\r\n errorService.handleError(error, $scope.init);\r\n });\r\n }\r\n\r\n $scope.hebRegEx = /^[\\u05CF-\\u05EB\\- ]+$/;\r\n\r\n };\r\n\r\n $scope.openLead = function () {\r\n $scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n\r\n var data = { FirstName: $scope.CustomerInfo.FirstName, LastName: $scope.CustomerInfo.LastName, IdNum: $scope.CustomerInfo.Id, PhoneArea: $scope.CustomerInfo.PhoneArea, PhoneNumber: $scope.CustomerInfo.PhoneNumber, ResolutionCode: $scope.appData.metaData.ExpressLoanResolutionCode, RequestType: '02' }\r\n\r\n connection.postOpenLead(data).then(function (response) {\r\n var dialogBox = response.Response.DialogBox;\r\n\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n if (navigator.notification)\r\n navigator.notification.alert(\r\n dialogBox.Content,\r\n $scope.$parent.back(),\r\n ' ',\r\n dialogBox.OKButtonText\r\n );\r\n else {\r\n lobbyUiService.popup.alert(dialogBox.Content, 'נא לשים לב', null, function () {\r\n $scope.$parent.back();\r\n });\r\n }\r\n return true;\r\n }, function (error) {\r\n errorService.handleError(error, $scope.openLead);\r\n return false;\r\n });\r\n }\r\n\r\n $scope.checkMemberNum = function () {\r\n $scope.isMemberNum = $scope.appData.metaData.Cards[$scope.options.indexOf($scope.selectedOption)].IsMemberNum;\r\n }\r\n\r\n $scope.validateForm = function () {\r\n //padding for phone number\r\n var errMsg = '';\r\n if (!$scope.CustomerInfo) {\r\n errMsg = 'יש למלא את כל השדות';\r\n } else {\r\n //padding for id\r\n if ($scope.openLeadForm.$valid && $('#idNum').val().length == 9 && $('#phoneNum').val().length == 7) {\r\n return true;\r\n\r\n } else {\r\n\r\n if ($scope.openLeadForm.$error.required && $scope.openLeadForm.$error.required.length > 1) {\r\n errMsg = 'יש למלא את כל השדות';\r\n }\r\n\r\n if ($('#fName').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה שם פרטי.';\r\n else if ($('#fName').hasClass('ng-invalid-pattern'))\r\n errMsg = 'השם הפרטי שהוזן אינו תקין. יש למלא אותיות בעברית בלבד.';\r\n else if ($('#lName').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה שם משפחה';\r\n else if ($('#lName').hasClass('ng-invalid-pattern'))\r\n errMsg = 'שם המשפחה שהוזן אינו תקין. יש למלא אותיות בעברית בלבד.';\r\n else if ($('#idNum').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה מספר ת.ז.';\r\n else if ($('#idNum').hasClass('ng-invalid-pattern') || $('#idNum').val().length != 9)\r\n errMsg = 'מספר ת.ז. שהוזן אינו תקין. יש למלא מספר בן 9 ספרות בדיוק כולל ספרת ביקורת.';\r\n else if ($('#phoneNum').hasClass('ng-invalid-required'))\r\n errMsg = 'יש למלא ערך בשדה מספר טלפון';\r\n else if ($('#phoneNum').hasClass('ng-invalid-pattern'))\r\n errMsg = 'מספר הטלפון שהוזן אינו תקין. יש למלא ספרות בלבד.';\r\n else if ($('#phoneNum').val().length < 7)\r\n errMsg = 'מספר הטלפון שהוזן אינו תקין. יש למלא מספר בן 7 ספרות בדיוק.';\r\n else if ($('#areaNum').hasClass('ng-invalid-required'))\r\n errMsg = 'קידומת הטלפון שנבחרה אינה תקינה. יש לבחור קידומת טלפון.';\r\n\r\n }\r\n }\r\n\r\n if (navigator.notification)\r\n navigator.notification.alert(\r\n errMsg,\r\n function () {\r\n /*Do Nothing*/\r\n },\r\n ' ',\r\n 'סגור'\r\n );\r\n else {\r\n lobbyUiService.popup.alert(errMsg, 'נא לשים לב');\r\n }\r\n\r\n return false;\r\n }\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\r\n\n/// \r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('enlargeCreditFrameController', enlargeCreditFrameController);\r\n\r\n enlargeCreditFrameController.$inject = [\r\n 'connection', 'lobbyUiService', 'ssoService', 'appSettings'\r\n ];\r\n\r\n function enlargeCreditFrameController(connection, lobbyUiService, ssoService, appSettings) {\r\n\r\n if (!connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login');\r\n return;\r\n }\r\n\r\n lobbyUiService.loader.show();\r\n angular.element(\".backdrop\").removeClass('backdrop');\r\n\r\n setTimeout(function () {\r\n ssoService.insertSsoDetails().then(function (res) {\r\n var query = 'sid=' + res.Token;\r\n lobbyUiService.loader.hide();\r\n lobbyUiService.openInNewTabAndGoBack(appSettings.enlargeCreditFrameNewSiteUrl + \"?\" + query);\r\n\r\n }, function (err) {\r\n lobbyUiService.loader.hide();\r\n lobbyUiService.openInNewTabAndGoBack(appSettings.enlargeCreditFrameNewSiteUrl);\r\n });\r\n\r\n }, 4 * 1000);\r\n\r\n\r\n }\r\n\r\n})(window, window.angular);\n(function (window, anjular) {\r\n 'use strict';\r\n\r\n angular.module('Cal4U').controller('debitSpreadController', debitSpreadController);\r\n\r\n debitSpreadController.$inject = ['$scope', '$timeout', '$ionicScrollDelegate', '$ionicSlideBoxDelegate', '$ionicNavBarDelegate',\r\n '$state', 'lobbyUiService', 'errorService', 'appData', 'connection','$stateParams'];\r\n \r\n function debitSpreadController($scope, $timeout, $ionicScrollDelegate, $ionicSlideBoxDelegate,\r\n $ionicNavBarDelegate, $state, lobbyUiService, errorService, appData, connection,stateParams) {\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.currCards = [];\r\n $scope.uniqueId = null;\r\n $scope.uniqueIDChosen = 0;\r\n $scope.steps = [{ caption: 'בוחרים סכום', active: true }, { caption: ' כמות תשלומים', active: false }, { caption: ' פרטי התוכנית', active: false }, { caption: 'סיום', active: false }];\r\n \r\n $scope.members =\r\n {\r\n showTerms: false,\r\n isReturnFromTerms: false,\r\n title: \"פריסת חיוב\",\r\n initStage2Data: null,\r\n initStage3Data: null,\r\n isClearSpreadRequest: false,\r\n DEBIT_SPREAD_AMOUNT_KEY: \"DEBIT_SPREAD_AMOUNT_KEY\",\r\n DEBIT_SPREAD_HELPPAGE_IND: \"DEBIT_SPREAD_HELPPAGE_IND\"\r\n };\r\n\r\n $scope.title = \"פריסת חיוב\";\r\n\r\n $scope.doc = {\r\n url: \"CalDocs?id=DebitSpreadTerms.html\" \r\n }\r\n\r\n $scope.getActivePage = function (page) {\r\n if ($scope.steps == null || $scope.steps == undefined) {\r\n $scope.steps = [{ caption: 'בוחרים סכום', active: false }, { caption: ' כמות תשלומים', active: false }, { caption: ' פרטי התוכנית', active: false }, { caption: 'סיום', active: false }];;\r\n }\r\n else {\r\n for (var i = 0; i < $scope.steps.length; i++) {\r\n $scope.steps[i].active = false;\r\n }\r\n }\r\n $scope.steps[page].active = true;\r\n }\r\n // #region init\r\n $scope.init = function () {\r\n //$scope.appData.backOverrideFN = $scope.goToLobby;\r\n\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.debit-spread' }, { location: 'replace' });\r\n return;\r\n }\r\n \r\n $scope.stage = 0; \r\n $scope.currentStage = 0;\r\n\r\n $scope.appData.inProcess = false;\r\n //$scope.appData.backOverrideFN = $scope.goToLobby;\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('expressScroll').scrollTop();\r\n }, 0);\r\n\r\n if (!$scope.appData.selectedBankAccountIndex) {\r\n $scope.appData.selectedBankAccountIndex = 0;\r\n }\r\n $scope.selectedBankAccountIndex = $scope.appData.selectedBankAccountIndex;\r\n\r\n for (var i = 0; i < $scope.appData.BankAccounts.length; i++) {\r\n $scope.appData.BankAccounts[i].allCreditProductsInd = false;\r\n var cardsToDisplay = [];\r\n for (var j = 0; j < $scope.appData.BankAccounts[i].Cards.length; j++) {\r\n if ($scope.appData.BankAccounts[i].Cards[j].CreditProductsInd) {\r\n $scope.appData.BankAccounts[i].Cards[j].CardIndex = j;\r\n cardsToDisplay.push($scope.appData.BankAccounts[i].Cards[j]);\r\n }\r\n }\r\n if (cardsToDisplay.length > 0) {\r\n $scope.appData.BankAccounts[i].creditProductsCards = cardsToDisplay;\r\n $scope.appData.BankAccounts[i].allCreditProductsInd = true;\r\n }\r\n }\r\n $scope.accountsToDisplay = $scope.appData.BankAccounts;\r\n $scope.selectedBankAccount = $scope.accountsToDisplay[$scope.selectedBankAccountIndex];\r\n \r\n if (!$scope.selectedCard) {\r\n $scope.selectedCard = $scope.selectedBankAccount.creditProductsCards[0];\r\n }\r\n $scope.accountChanged($scope.selectedBankAccountIndex, $scope.selectedCard.Id);\r\n $scope.goToStage1();\r\n };\r\n\r\n $scope.fillCards = function () {\r\n $scope.currCards = $scope.appData.BankAccounts[$scope.selectedBankAccountIndex].creditProductsCards;\r\n };\r\n $scope.accountNext = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').next();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n }\r\n\r\n $scope.accountPrev = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').previous();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n }\r\n\r\n $scope.accountChanged = function (index, cardIndex) {\r\n\r\n $scope.appData.selectedBankAccountIndex = index;\r\n $scope.selectedBankAccountIndex = index; \r\n $scope.selectedBankAccount = $scope.accountsToDisplay[index];\r\n $scope.fillCards();\r\n if ($scope.selectedBankAccount.allCreditProductsInd) {\r\n if (cardIndex) {\r\n $scope.cardChanged(cardIndex);\r\n } else {\r\n $scope.cardChanged($scope.selectedBankAccount.creditProductsCards[0].Id);\r\n }\r\n }\r\n\r\n $scope.selectedBankAccountIndex = index;\r\n };\r\n\r\n $scope.cardChanged = function (index) {\r\n if ($scope.selectedBankAccount.allCreditProductsInd) {\r\n $scope.selectedCard = $scope.selectedBankAccount.creditProductsCards[index];\r\n $scope.selectedCard.shownSteps = $scope.steps;\r\n $scope.noCardError = true;\r\n $scope.uniqueId = uniqueIDChosen;\r\n var obj = {};\r\n obj.uniqueIDChosen = uniqueIDChosen;\r\n } else {\r\n $scope.selectedCard = {};\r\n $scope.selectedCard.shownSteps = $scope.steps;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }\r\n }\r\n\r\n\r\n $scope.cardChanged = function (uniqueIDChosen) {\r\n $scope.uniqueId = uniqueIDChosen;\r\n //var obj = {};\r\n //obj.uniqueIDChosen = uniqueIDChosen;\r\n //$scope.selectedCard = $scope.selectedBankAccount.creditProductsCards[$scope.shownCardIndex];\r\n if ($scope.selectedBankAccount.allCreditProductsInd) {\r\n for (var j = 0; j < $scope.selectedBankAccount.creditProductsCards.length; j++) {\r\n var uId = $scope.selectedBankAccount.creditProductsCards[j].Id;\r\n if (uniqueIDChosen == uId) {\r\n $scope.selectedCard = $scope.selectedBankAccount.creditProductsCards[j];\r\n }\r\n }\r\n if (!$scope.selectedCard || $scope.selectedCard === undefined || typeof ($scope.selectedCard) !== \"object\") {\r\n $scope.selectedCard = {};\r\n }\r\n \r\n $scope.selectedCard.shownSteps = $scope.steps;\r\n $scope.noCardError = true;\r\n }\r\n else {\r\n $scope.selectedCard = {};\r\n $scope.selectedCard.shownSteps = $scope.steps;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }\r\n };\r\n\r\n $scope.updateAccountSlider = function (index) {\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').update();\r\n }, 200).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').slide(index);\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n // #endregion\r\n\r\n $scope.goToStage1 = function () {\r\n $scope.stage = 1;\r\n $scope.currentStage = 1;\r\n $scope.members.showTerms = false;\r\n $scope.selectedCard.shownSteps = $scope.steps; \r\n $scope.title = \"פריסת חיוב\";\r\n $scope.appData.backOverrideFN = null;\r\n $scope.getActivePage(0);\r\n $ionicScrollDelegate.$getByHandle('debitSpreadScroll').scrollTop();\r\n }\r\n\r\n \r\n $scope.goToStage2 = function (data) {\r\n $scope.members.initStage2Data = data;\r\n $scope.members.initStage3Data = null;\r\n\r\n $scope.stage = 2;\r\n $scope.currentStage = 2;\r\n\r\n $scope.appData.backOverrideFN = $scope.goToStage1;\r\n $scope.getActivePage(1);\r\n function handleDebitSpreadSubmit2Directive(response) {\r\n $scope.$broadcast(\"initStage2\", { data: response });\r\n $scope.$broadcast(\"initStage3\", { data: null });\r\n }\r\n handleDebitSpreadSubmit2Directive(data);\r\n $ionicScrollDelegate.$getByHandle('debitSpreadScroll').scrollTop();\r\n };\r\n \r\n $scope.goToStage3 = function (data) {\r\n $scope.members.initStage3Data = data;\r\n\r\n $scope.stage = 3;\r\n $scope.currentStage = 3;\r\n\r\n $scope.appData.backOverrideFN = $scope.goToStage2;\r\n $scope.getActivePage(2);\r\n function handleDebitSpreadSubmit3Directive(response) {\r\n $scope.$broadcast(\"initStage3\", { data: response });\r\n }\r\n handleDebitSpreadSubmit3Directive(data);\r\n $ionicScrollDelegate.$getByHandle('debitSpreadScroll').scrollTop();\r\n };\r\n\r\n $scope.goToStage4 = function (data) {\r\n $scope.stage = 4;\r\n $scope.currentStage = 4;\r\n $scope.getActivePage(3);\r\n $scope.appData.backOverrideFN = $scope.goToLobby;\r\n\r\n function handleDebitSpreadSubmitDirective(response) {\r\n $scope.$broadcast(\"initStage4\", { data: response });\r\n }\r\n\r\n handleDebitSpreadSubmitDirective(data);\r\n\r\n $ionicScrollDelegate.$getByHandle('debitSpreadScroll').scrollTop();\r\n };\r\n \r\n $scope.goBack = function () {\r\n $scope.goBackToStage($scope.currentStage - 1);\r\n }\r\n\r\n var goToStage = function (stage) {\r\n $scope.stage = stage;\r\n $scope.currentStage = stage;\r\n }\r\n\r\n $scope.goToLobby = function () {\r\n lobbyUiService.go('dw.lobby');\r\n };\r\n\r\n $scope.$watch(\"stage\", function (stageNew, stageOld) {\r\n \r\n if ((stageNew !== stageOld) && $scope.members.isClearSpreadRequest) {\r\n connection.debitSpreadClearSpreadRequest($scope.selectedCard.Id);\r\n\r\n $scope.members.isClearSpreadRequest = false;\r\n console.log(\"card \" + $scope.selectedCard.Id + \"is cleared\");\r\n }\r\n });\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n //$scope.appData.backOverrideFN = null;\r\n $scope.appData.inProcess = false;\r\n window.sessionStorage.removeItem($scope.members.DEBIT_SPREAD_AMOUNT_KEY);\r\n\r\n if ($scope.members.isClearSpreadRequest) {\r\n connection.debitSpreadClearSpreadRequest($scope.selectedCard.Id);\r\n\r\n $scope.members.isClearSpreadRequest = false;\r\n console.log(\"card \" + $scope.selectedCard.Id + \"is cleared\");\r\n } \r\n\r\n lobbyUiService.loader.hide();\r\n });\r\n \r\n $scope.goBackToStage = function () {\r\n if ($scope.members.showTerms) {\r\n $scope.title = 'פריסת חיוב';\r\n $scope.members.showTerms = false;\r\n $scope.members.isReturnFromTerms = true;\r\n $scope.stage = 2;\r\n //$scope.goToStage2(null);\r\n\r\n $timeout(function () {\r\n $scope.appData.backOverrideFN = $scope.goToStage1;\r\n }, 100);\r\n }\r\n\r\n return;\r\n }\r\n\r\n $scope.goToInfo = function () {\r\n $scope.title = 'תקנון התכנית';\r\n $scope.members.showTerms = true;\r\n $scope.members.isReturnFromTerms = false;\r\n $scope.appData.backOverrideFN = $scope.goBackToStage;\r\n };\r\n \r\n $scope.showPopup = function (text) {\r\n lobbyUiService.popup.alert(text);\r\n }\r\n $scope.showMoreInfo = function () {\r\n var popup = {};\r\n popup.template = 'app/account/templates/debit-spread/popup/moreInfo.html'\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n\r\n\r\n\r\n }\r\n });\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, true);\r\n }\r\n $scope.init();\r\n \r\n };\r\n})(window, window.anjular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('transFilterController', transFilterController);\r\n\r\n transFilterController.$inject = [\r\n '$scope', 'connection', '$window', 'appData', 'lobbyUiService', '$rootScope', '$q', 'utilService', 'errorService', 'appSettings',\r\n '$ionicScrollDelegate', 'googleAnalyticsService', '$timeout', '$ionicLoading', '$ionicPopup', '$location', 'lobbyDataService', '$state', '$stateParams'\r\n ];\r\n\r\n function transFilterController($scope, connection, $window, appData, lobbyUiService, $rootScope, $q, utilService, errorService, appSettings,\r\n $ionicScrollDelegate, googleAnalyticsService, $timeout, $ionicLoading, $ionicPopup, $location, lobbyDataService, $state, $stateParams) {\r\n\r\n var vm = this;\r\n vm.scrollPosition = 0;\r\n vm.filteredTransactionscrollClass = \"trans-filter-no-scroll\";\r\n vm.filteredTransactionscrollStyle = { 'margin-bottom': '8rem', 'height': 'initial' };\r\n vm.title = \"חיפוש עסקה\";\r\n vm.showAdvanced = false;\r\n vm.cards = [{ \"Id\": \"כל הכרטיסים\", \"NumTypeDescription\": \"כל הכרטיסים\", \"CardType\": \"\", \"LastFourDigits\": \"\" }];\r\n vm.advancedSign = \"+\";\r\n vm.advancedText = \"חיפוש מתקדם\";\r\n vm.paymentTypeSelect = { key: \"0\", value: \"הכל\" };\r\n vm.transCardPresentSelect = { key: \"0\", value: \"כל סוגי העסקאות\" };\r\n vm.transOriginSelect = { key: \"0\", value: \"הכל\" };\r\n vm.transByPayWalletSelect = { key: \"0\", value: \"כל העסקאות\" };\r\n vm.screenHeight = window.outerHeight > 0 ? (window.outerHeight / 100) * 90 : (window.innerHeight / 100) * 90;\r\n vm.transTypeValues = [{ key: \"0\", value: \"הכל\" }];\r\n //{ key: \"5\", value: \"רגיל\" },\r\n //{ key: \"8\", value: \"תשלומים\" },\r\n //{ key: \"44\", value: \"הוראת קבע\" },\r\n //{ key: \"7\", value: \"משיכת מזומן\" },\r\n //{ key: \"6\", value: \"זיכויים\" },\r\n //{ key: \"59\", value: \"קרדיט\" },\r\n //{ key: \"60\", value: \"סופר קרדיט\" },\r\n //{ key: \"1\", value: \"עדיף\" }];\r\n\r\n vm.cardsArrayLength = 0;\r\n\r\n vm.onloadMoreClicked = false;\r\n\r\n vm.offsetCalc = (vm.screenHeight / 100) * 25;;\r\n\r\n vm.transCardPresent = [{ key: \"0\", value: \"הכל\" }, { key: \"2\", value: \"באינטרנט/בטלפון\" }, { key: \"1\", value: \"בחנות\" }];\r\n\r\n vm.transOrigin = [{ key: \"0\", value: \"הכל\" }, { key: \"2\", value: \"בארץ\" }, { key: \"1\", value: \"בחו\\\"ל\" }];\r\n\r\n vm.transOriginLabel = \"בארץ או בחו\\\"ל?\";\r\n\r\n vm.transCardPresentLabel = \"באינטרנט, בטלפון או בחנות?\";\r\n\r\n vm.transByPayWalletLabel = \"עסקאות בארנק דיגיטלי\";\r\n\r\n vm.transByPayWallet = [{ key: \"0\", value: \"כל העסקאות\" }, { key: \"1\", value: \"רק עסקאות בארנק דיגיטלי\" }, { key: \"2\", value: \"בלי עסקאות בארנק דיגיטלי\" }];\r\n\r\n vm.transTypeValuesLabel = \"סוג העסקה\";\r\n\r\n vm.MerchantHebNameLabel = \"שם העסק בו קנית\";\r\n\r\n vm.CardSearchResults = [];\r\n\r\n vm.showResults = false;\r\n\r\n vm.isLoggedIn = connection.isLoggedIn();\r\n\r\n //vm.cards.key = \"כל הכרטיסים\";\r\n\r\n vm.closeCheckBox = false;\r\n\r\n vm.isMultipleClicked = false;\r\n\r\n vm.validateTrnAmtDisplay = false;\r\n\r\n vm.validateDatesDisplay = false;\r\n\r\n vm.countIndex = 75;\r\n\r\n vm.duration = 584;\r\n\r\n vm.metadata = [];\r\n\r\n vm.serverRequest = null;\r\n\r\n vm.analyticsUsedAdvancedSearch = \"regular-search\";\r\n\r\n vm.scrollerElement = angular.element('#trans-filter-scroll');\r\n\r\n /* display trans denial button if query param td=1:\r\n let queryString = new URLSearchParams(window.location.search);\r\n let queryParams = Object.fromEntries(queryString.entries());\r\n let transDenialQueryParam = queryParams.td;\r\n */\r\n\r\n vm.scrollerElement.css('margin-bottom', '8rem');\r\n vm.scrollerElement.css('height', 'initial');\r\n if (!vm.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.trans-filter' }, { location: 'replace' });\r\n return;\r\n }\r\n\r\n var serverRequest = sessionStorage.getItem(\"filterTransRequest\");\r\n if (serverRequest) {\r\n sessionStorage.removeItem(\"filterTransRequest\");\r\n getFilteredTransDetails(serverRequest);\r\n }\r\n\r\n lobbyDataService.loadMetaData().then(function (metadata) {\r\n vm.metadata = metadata;\r\n angular.forEach(metadata.menu, function (menu) {\r\n angular.forEach(menu.items, function (item) {\r\n if (item.state == \"dw.trans-filter\") {\r\n console.log(\"**********item=\", item);\r\n var transactions = item.transactions;\r\n vm.duration = item.duration;\r\n transactions.forEach(function (transaction) {\r\n var splitData = transaction.split(',');\r\n vm.transTypeValues.push({\r\n key: splitData[0].trim(),\r\n value: splitData[1].trim()\r\n });\r\n });\r\n }\r\n });\r\n });\r\n });\r\n\r\n vm.change = function (uniqueId) {\r\n vm.cards.key = uniqueId;\r\n console.log(\"*************uniqueId= \" + uniqueId);\r\n }\r\n\r\n vm.init = function () {\r\n $timeout(function () {\r\n console.log(\"****************trans filter init111*************\");\r\n vm.showResults = false;\r\n vm.filteredTransactionscrollClass = \"trans-filter-no-scroll\";\r\n vm.filteredTransactionscrollStyle = { 'margin-bottom': '8rem', 'height': 'initial' };\r\n vm.scrollerElement.css('margin-bottom', '8rem');\r\n vm.scrollerElement.css('height', 'initial');\r\n vm.MerchantHebName = \"\";\r\n vm.FromTrnAmt = \"\";\r\n vm.ToTrnAmt = \"\";\r\n vm.numberOfResults = 0;\r\n vm.showAdvanced = false;\r\n if (vm.showAdvanced) {\r\n vm.advancedSign = \"-\";\r\n }\r\n else {\r\n vm.advancedSign = \"+\";\r\n }\r\n var today = moment().toDate();\r\n //today = moment(today).format('DD/MM/YYYY');\r\n var newDate = moment().subtract(30, \"days\").toDate();\r\n //newDate = moment(newDate).format('DD/MM/YYYY');\r\n vm.datePickerValueFrom = newDate;\r\n vm.datePickerValueTo = today;\r\n vm.paymentTypeSelect = { key: \"0\", value: \"הכל\" };\r\n vm.transCardPresentSelect = { key: \"0\", value: \"כל סוגי העסקאות\" };\r\n vm.transOriginSelect = { key: \"0\", value: \"הכל\" };\r\n vm.transByPayWalletSelect = { key: \"0\", value: \"כל העסקאות\" };\r\n for (var i = 0; i < vm.cards.length; i++) {\r\n vm.cards[i].isChecked = false;\r\n }\r\n vm.cardsArrayLength = 0;\r\n\r\n }, 0);\r\n }\r\n\r\n function showLoader() {\r\n $ionicLoading.show({\r\n template: _template\r\n });\r\n }\r\n\r\n function hideLoader() {\r\n $ionicLoading.hide();\r\n }\r\n\r\n vm.operation = function () {\r\n console.log('vm.operation');\r\n }\r\n\r\n vm.clickAdvanced = function () {\r\n vm.showAdvanced = !vm.showAdvanced;\r\n if (vm.showAdvanced) {\r\n vm.advancedSign = \"-\";\r\n vm.analyticsUsedAdvancedSearch = \"advanced-search\";\r\n }\r\n else {\r\n vm.advancedSign = \"+\";\r\n vm.paymentTypeSelect = { key: \"0\", value: \"הכל\" };\r\n vm.transCardPresentSelect = { key: \"0\", value: \"כל סוגי העסקאות\" };\r\n vm.transOriginSelect = { key: \"0\", value: \"הכל\" };\r\n vm.transByPayWalletSelect = { key: \"0\", value: \"כל העסקאות\" };\r\n vm.MerchantHebName = \"\";\r\n vm.analyticsUsedAdvancedSearch = \"regular-search\";\r\n }\r\n }\r\n\r\n vm.backToSearch = function () {\r\n googleAnalyticsService.trackPage('/vp/transaction-search/return-search');\r\n googleAnalyticsService.insertEvent({ page: 'transaction-search', action: 'return-search' });\r\n vm.showResults = false;\r\n $rootScope.filteredTransactionResultsVisible = false;\r\n $timeout(function () {\r\n vm.filteredTransactionscrollClass = \"trans-filter-no-scroll\";\r\n vm.filteredTransactionscrollStyle = { 'margin-bottom': '8rem', 'height': 'initial' };\r\n vm.scrollerElement.css('margin-bottom', '8rem');\r\n vm.scrollerElement.css('height', 'initial');\r\n vm.scrollerElement.css('overflow', 'none');\r\n }, 500);\r\n }\r\n\r\n vm.searchFilteredTransactions = function () {\r\n googleAnalyticsService.trackPage('/vp/transaction-search/search/' + vm.analyticsUsedAdvancedSearch);\r\n googleAnalyticsService.insertEvent({ page: 'transaction-search', eventName: vm.analyticsUsedAdvancedSearch, action: 'search' });\r\n if (!vm.validateTrnAmt() || !vm.validateDates()) {\r\n return;\r\n }\r\n\r\n try {\r\n $ionicScrollDelegate.scrollTop();\r\n showLoader();\r\n getFilteredTransDetails();\r\n }\r\n catch (ex) {\r\n console.log(\"ex= \" + ex);\r\n }\r\n console.log(\"datePickerValue= \" + vm.datePickerValueFrom);\r\n }\r\n\r\n vm.MainDivPressed = function () {\r\n $timeout(function () {\r\n console.log(\"MainDivPressed, isMultipleClicked= \", vm.isMultipleClicked);\r\n if (!vm.isMultipleClicked) {\r\n vm.closeCheckBox = false;\r\n }\r\n vm.isMultipleClicked = false;\r\n //vm.scrollerElement.css('height', '8rem');\r\n }, 200);\r\n }\r\n\r\n vm.FieldBlur = function () {\r\n $timeout(function () {\r\n if (!vm.showResults) {\r\n vm.scrollerElement.css('margin-bottom', '8rem');\r\n vm.scrollerElement.css('height', 'initial');\r\n vm.scrollerElement.css('overflow', 'none');\r\n }\r\n }, 2600);\r\n\r\n console.log('FieldBlur');\r\n }\r\n\r\n var _template = '
מבצע חיפוש...
';\r\n\r\n var selectedBankAccountIndex = 0;\r\n var cardIndex = 0;\r\n function loadCards() {\r\n $rootScope.$on('getAccountFinished')\r\n {\r\n fillCards();\r\n }\r\n }\r\n\r\n function fillCards() {\r\n if (appData.BankAccounts && vm.cards.length == 1) {\r\n var selectedBankAccount = appData.BankAccounts[selectedBankAccountIndex];\r\n var bankAccountsArray = appData.BankAccounts;\r\n var selectedCard = selectedBankAccount.Cards[cardIndex];\r\n $timeout(function () {\r\n for (var i = 0; i < bankAccountsArray.length; i++) {\r\n vm.cards = vm.cards.concat(bankAccountsArray[i].Cards);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n function getFilteredTransDetails(serverRequest) {\r\n\r\n vm.closeCheckBox = false;\r\n var request = {};\r\n\r\n if (!serverRequest) { \r\n var cardarray = [];\r\n\r\n if (vm.cards.key != \"כל הכרטיסים\" && typeof vm.cards.key != \"undefined\") {\r\n cardarray.push(vm.cards.key);\r\n }\r\n else {\r\n vm.cards.forEach(function (card) {\r\n if (!isNaN(card.Id) && card.isChecked) {\r\n cardarray.push(card.Id);\r\n }\r\n });\r\n }\r\n request.UniqueID = cardarray;\r\n\r\n request.FromTransDate = vm.datePickerValueFrom;\r\n request.ToTransDate = vm.datePickerValueTo;\r\n request.TransCardPresentInd = vm.transCardPresentSelect.key;\r\n request.TransactionsOrigin = vm.transOriginSelect.key;\r\n request.MerchantHebName = vm.MerchantHebName;\r\n request.MerchantHebCity = vm.MerchantHebCity;\r\n request.TrnExecWay = vm.paymentTypeSelect.key;\r\n request.TrnType = vm.paymentTypeSelect.key;\r\n request.FromTrnAmt = vm.FromTrnAmt;\r\n request.ToTrnAmt = vm.ToTrnAmt;\r\n request.WalletTranInd = vm.transByPayWalletSelect.key;\r\n request.CashAccountRecInd = \"1\";\r\n }\r\n else {\r\n request = serverRequest;\r\n }\r\n\r\n //**************mock*************//\r\n //vm.gridData = [];\r\n //vm.gridData.categories = [];\r\n //var category = {};\r\n //var data = [];\r\n //category.isExpand = true;\r\n //category.expandSymbol = \"-\";\r\n //category.title = '1111';\r\n //category.fullResults = false;\r\n\r\n //for (var k = 0; k < 10; k++) {\r\n // var trans = {};\r\n // trans.sideTitle = '10/12/82';\r\n // trans.sideIcon = '';\r\n // trans.additionalAction = { label: 'פריסה', callback: function () { alert('פריסה'); } }\r\n // trans.params = [];\r\n // trans.title = 'cal';\r\n // trans.amount = 100;\r\n // trans.clickable = true;\r\n // trans.generalComment = '';\r\n // trans.locationId = 1;\r\n // trans.details = {\r\n // mark: true,\r\n // params: [\r\n // { title: \"צ'אט עם נציג\", value: \"\", type: 3 },\r\n // { title: 'חיפוש בגוגל', value: \"\", type: 4 },\r\n // ],\r\n // dataArray: [],//DataResult,\r\n // comments: [],//result.Comments,\r\n // };\r\n // data.push(trans);\r\n //}\r\n //category.rows = data;\r\n //vm.gridData.categories.push(category);\r\n //vm.showResults = true;\r\n //$rootScope.filteredTransactionResultsVisible = true;\r\n //hideLoader();\r\n //vm.gridData.numberOfResults = 1;\r\n //**************mock*************//\r\n\r\n ///*\r\n \r\n connection.getFilteredTransDetails(request)\r\n .then(function (response) {\r\n vm.serverRequest = request;\r\n var CardsArray = response.CardsArray;\r\n vm.CardSearchResults = CardsArray;\r\n\r\n var cardsLast4digitsCount = [];\r\n appData.BankAccounts.forEach(bankAccount => {\r\n bankAccount.Cards.forEach(card => {\r\n cardsLast4digitsCount.push(card.LastFourDigits);\r\n });\r\n });\r\n\r\n if (CardsArray) {\r\n vm.numberOfResults = 0;\r\n vm.gridData = [];\r\n vm.gridData.onLoadMore = vm.onLoadMore;\r\n vm.gridData.categories = [];\r\n var categoryCounter = 0;\r\n angular.forEach(CardsArray, function (value, key) {\r\n categoryCounter += 1;\r\n var category = {};\r\n category.title = key;\r\n category.fullResults = false;\r\n var data = [];\r\n vm.numberOfResults = vm.numberOfResults + value.length;\r\n //if (categoryCounter == 1) {\r\n // category.isExpand = true;\r\n // category.expandSymbol = \"-\";\r\n //}\r\n //else {\r\n // category.isExpand = false;\r\n // category.expandSymbol = \"+\";\r\n //}\r\n\r\n category.isExpand = true;\r\n category.expandSymbol = \"-\";\r\n\r\n value.isSupportTransDenial = isCardSupportTransDenial(key, cardsLast4digitsCount);\r\n\r\n var lastIndex = 0;\r\n vm.loadData(value, category, 0, lastIndex, 0, false, data);\r\n category.rows = data;\r\n vm.gridData.categories.push(category);\r\n\r\n });\r\n\r\n $timeout(function () {\r\n vm.filteredTransactionscrollClass = \"trans-filter-scroll\";\r\n vm.filteredTransactionscrollStyle = { 'height': '100%' };\r\n vm.scrollerElement.css('height', '100%');\r\n vm.showResults = true;\r\n hideLoader();\r\n }, 200);\r\n $rootScope.filteredTransactionResultsVisible = true;\r\n vm.gridData.numberOfResults = vm.numberOfResults;\r\n }\r\n else {\r\n //errorService.handleError(, \"\");\r\n }\r\n }, function (error) {\r\n hideLoader();\r\n\r\n var title = error[0].response.Response.Status.Message;\r\n\r\n var settings = {\r\n title: '',\r\n template: '

',\r\n cssClass: null,\r\n };\r\n\r\n var extOptions = angular.extend(settings,\r\n {\r\n cssClass: null,\r\n title: '',\r\n template: '

' + title + '

',\r\n buttons: [\r\n {\r\n text: 'סגור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n\r\n }\r\n }\r\n ],\r\n });\r\n\r\n if (title) {\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/cvv-popup.html';\r\n popup.btns = [];\r\n popup.text = title;\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n\r\n }\r\n });\r\n\r\n lobbyUiService.popup.alert(title, \"\", null, null, popup.btns, false, \"transaction-filter-popup\");\r\n }\r\n else {\r\n errorService.handleError(error, \"\");\r\n }\r\n });//*/\r\n }\r\n\r\n var isCardSupportTransDenial = function (key, cardsLast4digitsCount) {\r\n for (var lastFourDigits of cardsLast4digitsCount) {\r\n if (key.includes(lastFourDigits)) {\r\n return cardsLast4digitsCount.indexOf(lastFourDigits) == cardsLast4digitsCount.lastIndexOf(lastFourDigits);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n vm.loadData = function (results, category, startIndex, lastIndex, additionalIndex, pushLoadResult, data) {\r\n for (var j = startIndex; j < results.length + additionalIndex; j++) {\r\n if (pushLoadResult) {\r\n if (j == results.length) {\r\n category.fullResults = true;\r\n }\r\n if (j > lastIndex) {\r\n category.lastIndex = j;\r\n break;\r\n }\r\n }\r\n else {\r\n if (results.length <= vm.countIndex) {\r\n category.fullResults = true;\r\n }\r\n\r\n if (j > vm.countIndex - 1) {\r\n category.lastIndex = j;\r\n break;\r\n }\r\n }\r\n var result = results[j];\r\n\r\n var trans = {};\r\n trans.id = result.TrnIntId;\r\n trans.title = result.MerchantName;\r\n trans.amount = result.TrnAmt;\r\n trans.color = \"\";\r\n if ((trans.amount.indexOf(\"-\") > -1 && result.IsDisplayAsCashAccountCharge == null) || result.IsDisplayAsCashAccountCharge == false) {\r\n trans.color = \"{color: 'rgb(62, 121, 0)'}\";\r\n }\r\n trans.sideTitle = result.TrnPurchaseDate;\r\n trans.sideIcon = '';\r\n trans.additionalAction = { label: 'פריסה', callback: function () { alert('פריסה'); } }\r\n trans.params = [];\r\n trans.clickable = true;\r\n trans.generalComment = result.CreditPaymentsComment;\r\n trans.locationId = trans.id + j;\r\n trans.isSupportTransDenial = results.isSupportTransDenial;\r\n\r\n var DataResult = [];\r\n\r\n if (JSON.stringify(result.Data) !== JSON.stringify({})) {\r\n var keys = Object.keys(result.Data);\r\n for (var i = 0; i < keys.length; i++) {\r\n var dataComment = keys[i] + \": \" + result.Data[keys[i]];\r\n DataResult.push(dataComment);\r\n }\r\n }\r\n\r\n var cardPresentIcon = \"\";\r\n var cardPresentText = \"\";\r\n var cardPresentShow = false;\r\n if (result.TransCardPresentInd == 1) {\r\n //cardPresentIcon = \"ico-touch\";\r\n //cardPresentText = \"כרטיס הוצג\"; \r\n }\r\n else if (result.TransCardPresentInd == 2) {\r\n cardPresentIcon = \"ico-eyeline\";\r\n cardPresentText = \"כרטיס לא הוצג\";\r\n cardPresentShow = true;\r\n result.Comments.remove(\"כרטיס לא הוצג\");\r\n }\r\n\r\n var chatTitle = '';\r\n\r\n if (appData.metaData.IsCustomerServiceLead) {\r\n chatTitle = \"צ'אט עם נציג Cal\";\r\n }\r\n\r\n if (appData.metaData.IsCustomerServiceLeadByWhatsApp) {\r\n chatTitle = 'בירור מול נציג Cal';\r\n }\r\n\r\n trans.details = {\r\n mark: true,\r\n params: [\r\n { label: 'ענף', value: result.BranchCodeDesc, type: 1, isSingle: true },\r\n { label: 'כתובת', value: result.MerchantAddress, type: 1, isSingle: true },\r\n { label: 'טלפון', value: result.MerchantPhoneNo, type: 2, isSingle: true },\r\n //{ label: 'פקס', value: result., type: 2, isSingle: true },\r\n\r\n //{ title: chatTitle, value: result.MerchantName, type: 3 },\r\n\r\n { title: 'חיפוש בגוגל', value: result.MerchantName, type: 4 } \r\n\r\n ],\r\n isStandingOrder: result.IsStandingOrder,\r\n dataArray: DataResult, \r\n comments: result.Comments,\r\n cardPresent: { value: cardPresentText, showImage: true, ico: cardPresentIcon, show: cardPresentShow }\r\n\r\n };\r\n\r\n if (trans.isSupportTransDenial) {\r\n trans.details.params.push({ title: 'לבירור נוסף', value: { trnId: result.TrnIntId, numerator: result.TrnNumerator, serverRequest: vm.serverRequest }, type: 5 });\r\n }\r\n\r\n if (result.BranchCodeDesc == null || result.BranchCodeDesc == \"\") {\r\n trans.details.params.splice(0, 1);\r\n }\r\n\r\n if (pushLoadResult) {\r\n category.rows.push(trans);\r\n }\r\n else {\r\n data.push(trans);\r\n }\r\n }\r\n }\r\n\r\n $rootScope.$on(\"filteredTransactionResultsVisibleChanged\", function () {\r\n $timeout(function () {\r\n vm.showResults = false;\r\n vm.filteredTransactionscrollClass = \"trans-filter-no-scroll\";\r\n vm.filteredTransactionscrollStyle = { 'margin-bottom': '8rem', 'height': 'initial' };\r\n vm.scrollerElement.css('margin-bottom', '8rem');\r\n vm.scrollerElement.css('height', 'initial');\r\n vm.scrollerElement.css('overflow', 'none');\r\n });\r\n }); \r\n\r\n vm.onLoadMore = function (category) {\r\n vm.onloadMoreClicked = true;\r\n var results = vm.CardSearchResults[category.title]\r\n var startIndex = category.lastIndex;\r\n var lastIndex = startIndex + vm.countIndex;\r\n if (lastIndex > results.length)\r\n lastIndex = results.length - 1;\r\n\r\n vm.loadData(results, category, startIndex, lastIndex, 1, true);\r\n console.log(\"**********category = \" + category);\r\n }\r\n\r\n vm.validateTrnAmt = function () {\r\n if (vm.ToTrnAmt != \"\" && parseInt(vm.FromTrnAmt) > parseInt(vm.ToTrnAmt)) {\r\n vm.validateTrnAmtDisplay = true;\r\n return false;\r\n }\r\n else {\r\n vm.validateTrnAmtDisplay = false;\r\n return true;\r\n }\r\n }\r\n\r\n vm.validateDates = function () {\r\n if (vm.datePickerValueFrom > vm.datePickerValueTo) {\r\n vm.validateDatesDisplay = true;\r\n return false;\r\n }\r\n else {\r\n vm.validateDatesDisplay = false;\r\n return true;\r\n }\r\n }\r\n\r\n vm.onClickShowResults = function ($event) {\r\n if (!vm.onloadMoreClicked) {\r\n if ($event.pageY > (vm.screenHeight - 100)) {\r\n if ($rootScope.gridAnchorIdFilter != 'aaa') {\r\n var locationId = $rootScope.gridAnchorIdFilter;\r\n var element = angular.element('#' + locationId)[0];\r\n //console.log('*****$element = ', element);\r\n var height = element.offsetHeight;\r\n //console.log('*****height = ', height);\r\n var offest = element.offsetTop;\r\n //console.log('*****offest = ', offest);\r\n //console.log('*****vm.screenHeight = ', vm.screenHeight);\r\n //console.log('*****vm.offsetCalc = ', vm.offsetCalc);\r\n $ionicScrollDelegate.$getByHandle('TransFilterScrollDelegate').scrollTo(0, offest - vm.screenHeight + vm.offsetCalc + height + 10, true);\r\n //console.log('*****$rootScope.gridAnchorIdFilter222 = ', $rootScope.gridAnchorIdFilter);\r\n $rootScope.gridAnchorIdFilter == 'aaa';\r\n }\r\n }\r\n }\r\n vm.onloadMoreClicked = false;\r\n }\r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n console.log('******************trans filter before enter*******************');\r\n viewData.enableBack = true;\r\n googleAnalyticsService.trackPage('/vp/transaction-search/welcome');\r\n googleAnalyticsService.insertEvent({ page: 'transaction-search', action: 'welcome' });\r\n loadCards();\r\n vm.init();\r\n });\r\n\r\n $scope.$on('$ionicView.beforeLeave', function (e, viewData) {\r\n console.log('******************trans filter before leave*******************');\r\n vm.closeCheckBox = false;\r\n vm.cards.splice(1, vm.cards.length - 1);\r\n $rootScope.filteredTransactionResultsVisible = false;\r\n });\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('stopStandingOrderController', stopStandingOrderController);\r\n\r\n stopStandingOrderController.$inject = [\r\n '$scope', 'connection', '$window', 'appData', 'lobbyUiService', '$rootScope', '$q', 'utilService', 'errorService',\r\n '$ionicScrollDelegate', 'googleAnalyticsService', '$timeout', '$ionicLoading', '$ionicPopup', '$location', 'lobbyDataService', '$stateParams',\r\n '$sce'];\r\n\r\n function stopStandingOrderController($scope, connection, $window, appData, lobbyUiService, $rootScope, $q, utilService, errorService,\r\n $ionicScrollDelegate, googleAnalyticsService, $timeout, $ionicLoading, $ionicPopup, $location, lobbyDataService, $stateParams, $sce) {\r\n\r\n var vmStopStandingOrder = this;\r\n\r\n vmStopStandingOrder.isLoggedIn = connection.isLoggedIn();\r\n\r\n if (!vmStopStandingOrder.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.stop-standing-order' }, { location: 'replace' });\r\n return;\r\n }\r\n\r\n vmStopStandingOrder.isMultipleClicked = false;\r\n\r\n vmStopStandingOrder.closeCheckBox = false;\r\n\r\n vmStopStandingOrder.title = \"הוראות קבע\";\r\n\r\n vmStopStandingOrder.cards = [];\r\n\r\n vmStopStandingOrder.displayMore = false;\r\n\r\n vmStopStandingOrder.showstopStandingOrder = false;\r\n\r\n vmStopStandingOrder.showSuccess = false;\r\n\r\n vmStopStandingOrder.noResults = false;\r\n\r\n vmStopStandingOrder.screenHeight = window.outerHeight > 0 ? (window.outerHeight / 100) * 90 : (window.innerHeight / 100) * 90;\r\n\r\n vmStopStandingOrder.offsetCalc = (vmStopStandingOrder.screenHeight / 100) * 25;;\r\n\r\n vmStopStandingOrder.gridData = [];\r\n\r\n vmStopStandingOrder.uniqueId;\r\n\r\n vmStopStandingOrder.responseArray = {};\r\n\r\n vmStopStandingOrder.title = \"\";\r\n\r\n vmStopStandingOrder.cancelOrderData = {};\r\n\r\n vmStopStandingOrder.FailedResultList = [];\r\n\r\n vmStopStandingOrder.previousExpandedRow = undefined;\r\n\r\n vmStopStandingOrder.CurrentExpandedRow = undefined;\r\n\r\n vmStopStandingOrder.pageName = 'הוראות קבע';\r\n\r\n vmStopStandingOrder.analyticsAction = 'פירוט הוראות קבע';\r\n\r\n vmStopStandingOrder.showBackToStandingOrder = true;\r\n\r\n $rootScope.stopStandingOrder = false;\r\n\r\n console.log('url= ', window.location);\r\n\r\n var _template = '
טוען נתונים...
';\r\n\r\n vmStopStandingOrder.standalone = $stateParams.standalone\r\n\r\n if (vmStopStandingOrder.standalone) {\r\n $('#page-wrapper').addClass('standalone');\r\n }\r\n\r\n function showLoader() {\r\n $ionicLoading.show({\r\n template: _template\r\n });\r\n }\r\n\r\n function hideLoader() {\r\n $timeout(function () {\r\n $ionicLoading.hide();\r\n }, 500);\r\n }\r\n\r\n function init() {\r\n vmStopStandingOrder.showstopStandingOrder = false;\r\n vmStopStandingOrder.showSuccess = false;\r\n }\r\n\r\n vmStopStandingOrder.operation = function () {\r\n console.log('vm.operation');\r\n }\r\n\r\n vmStopStandingOrder.selectedBankAccountIndex = 0;\r\n\r\n var cardIndex = 0;\r\n\r\n vmStopStandingOrder.change = function (uniqueId) {\r\n vmStopStandingOrder.errorResults = false;\r\n vmStopStandingOrder.noResults = false;\r\n vmStopStandingOrder.DisplayResults = true;\r\n vmStopStandingOrder.uniqueId = uniqueId;\r\n console.log(\"*************uniqueId= \" + vmStopStandingOrder.uniqueId);\r\n getStandingOrders();\r\n }\r\n\r\n var cardIndex = 0;\r\n function loadCards() {\r\n $rootScope.$on('getAccountFinished')\r\n {\r\n fillCards();\r\n\r\n }\r\n }\r\n\r\n function fillCards() {\r\n console.log(\"****fillCards*****\");\r\n if (appData.BankAccounts) {\r\n var selectedBankAccount = appData.BankAccounts[vmStopStandingOrder.selectedBankAccountIndex];\r\n var bankAccountsArray = appData.BankAccounts;\r\n var selectedCard = selectedBankAccount.Cards[cardIndex];\r\n vmStopStandingOrder.selectedBankAccount = selectedBankAccount;\r\n $timeout(function () {\r\n var account = vmStopStandingOrder.selectedBankAccount\r\n var cards = [];\r\n var cardsLength = account.Cards.length;\r\n var i = 0;\r\n for (i = 0; i < cardsLength; i++) {\r\n if (account.Cards[i].GoodCardHolderOwnerInd) {\r\n cards.push(account.Cards[i]);\r\n }\r\n }\r\n vmStopStandingOrder.cards = cards;\r\n getStandingOrders();\r\n if (vmStopStandingOrder.cards.length > 0)\r\n vmStopStandingOrder.uniqueId = vmStopStandingOrder.cards[0].Id;\r\n });\r\n }\r\n }\r\n\r\n vmStopStandingOrder.MainDivPressed = function () {\r\n vmStopStandingOrder.showRadioDiv = false;\r\n }\r\n\r\n function fillData(standingOrderData, category, data, locationid) {\r\n var trans = {};\r\n trans.id = locationid;\r\n trans.sideTitle = standingOrderData.LastDebitDate;\r\n trans.sideIcon = '';\r\n trans.additionalAction = { label: 'פריסה', callback: function () { alert('פריסה'); } }\r\n trans.params = [];\r\n trans.title = standingOrderData.MerchantName;\r\n trans.amount = standingOrderData.LastDebitAmount;\r\n trans.clickable = true;\r\n trans.generalComment = '';\r\n trans.locationId = \"stopStandingOrder\" + locationid;\r\n trans.onClickAction = vmStopStandingOrder.stopStandingOrderPressed;\r\n trans.merchantId = standingOrderData.MerchantId;\r\n trans.merchantType = standingOrderData.MerchantType;\r\n trans.OnExpandClient = vmStopStandingOrder.getMoreDetails;\r\n trans.TrnCurrencyCode = standingOrderData.TrnCurrencyCode;\r\n trans.TrnExacWay = standingOrderData.TrnExacWay;\r\n trans.TrnIntId = standingOrderData.TrnIntId;\r\n trans.TrnPurchaseDate = standingOrderData.TrnPurchaseDate;\r\n trans.TransTypeDesc = standingOrderData.TransTypeDesc;\r\n trans.TransSource = standingOrderData.TransSource;\r\n trans.TrnType = standingOrderData.TrnType;\r\n trans.IsCancelled = standingOrderData.isCancelled;\r\n trans.stoppedComment = standingOrderData.comment;\r\n trans.page = vmStopStandingOrder.pageName;\r\n\r\n trans.details = {\r\n mark: true,\r\n params: [\r\n { title: \"עצירת הוראת קבע\", value: \"\", type: 3 },\r\n { title: 'חיפוש בית העסק בגוגל', value: \"\", type: 4 },\r\n ],\r\n dataArray: [],//DataResult,\r\n comments: [\r\n //[\"10/12/82\", \"100\"],\r\n //[\"10/12/83\", \"200\"],\r\n //[\"10/12/85\", \"300\"]\r\n ],//result.Comments,\r\n };\r\n data.push(trans);\r\n category.rows = data;\r\n vmStopStandingOrder.showResults = true;\r\n vmStopStandingOrder.gridData.numberOfResults = 1;\r\n }\r\n\r\n function populateResults() {\r\n if (vmStopStandingOrder.uniqueId == undefined) {\r\n vmStopStandingOrder.uniqueId = vmStopStandingOrder.selectedBankAccount.Cards[0].uniqueId;\r\n }\r\n var array = vmStopStandingOrder.responseArray[vmStopStandingOrder.uniqueId];\r\n if (array != undefined && array.ErrorMessage == undefined) {\r\n vmStopStandingOrder.gridData.categories = [];\r\n var category = {};\r\n var data = [];\r\n category.isExpand = true;\r\n category.expandSymbol = \"-\";\r\n category.fullResults = false;\r\n vmStopStandingOrder.noResults = false;\r\n vmStopStandingOrder.DisplayResults = true;\r\n var merchantArray = array.MerchantsArray;\r\n for (var i = 0; i < merchantArray.length; i++) {\r\n fillData(merchantArray[i], category, data, i);\r\n }\r\n vmStopStandingOrder.gridData.categories.push(category);\r\n }\r\n else {\r\n\r\n if (JSON.stringify(vmStopStandingOrder.FailedResultList) !== JSON.stringify([])) {\r\n if (vmStopStandingOrder.FailedResultList.indexOf(vmStopStandingOrder.uniqueId) > -1) {\r\n vmStopStandingOrder.DisplayResults = false;\r\n vmStopStandingOrder.errorResults = true;\r\n vmStopStandingOrder.getOrdersError = $sce.trustAsHtml(array.ErrorMessage);\r\n }\r\n }\r\n else {\r\n vmStopStandingOrder.noResults = true;\r\n vmStopStandingOrder.DisplayResults = false;\r\n vmStopStandingOrder.getOrdersError = \"\";\r\n }\r\n }\r\n hideLoader();\r\n }\r\n\r\n function getStandingOrders(uniqueId) {\r\n showLoader();\r\n console.log('*******getStandingOrders*******');\r\n var request = {};\r\n var cardarray = [];\r\n\r\n if (JSON.stringify(vmStopStandingOrder.responseArray) === JSON.stringify({}) || uniqueId != undefined) {\r\n\r\n if (uniqueId != undefined) {\r\n cardarray.push(uniqueId);\r\n }\r\n else {\r\n vmStopStandingOrder.cards.forEach(function (card) {\r\n cardarray.push(card.Id);\r\n });\r\n }\r\n\r\n request.UniqueID = cardarray;\r\n\r\n connection.getStandingOrders(request)\r\n .then(function (response) {\r\n console.log('*******response', response);\r\n vmStopStandingOrder.responseArray = response.CreditCardsArray;\r\n vmStopStandingOrder.FailedResultList = response.FailedResultList;\r\n populateResults();\r\n },\r\n function (error) {\r\n console.log('*******error', error);\r\n errorService.handleError(error, \"\");\r\n hideLoader();\r\n });\r\n }\r\n else {\r\n populateResults();\r\n }\r\n }\r\n\r\n\r\n vmStopStandingOrder.toggleMore = function () {\r\n vmStopStandingOrder.displayMore = !vmStopStandingOrder.displayMore;\r\n if (vmStopStandingOrder.displayMore == true) {\r\n googleAnalyticsService.insertEvent({ page: vmStopStandingOrder.pageName, action: vmStopStandingOrder.analyticsAction, eventName: 'בתוך 60 יום - מה זה אומר?' });\r\n }\r\n\r\n }\r\n\r\n vmStopStandingOrder.onClickShowResults = function ($event) {\r\n if (!vmStopStandingOrder.onloadMoreClicked) {\r\n if ($event.pageY > (vmStopStandingOrder.screenHeight - 100)) {\r\n if ($rootScope.gridAnchorIdFilter != 'aaa') {\r\n var locationId = $rootScope.gridAnchorIdFilter;\r\n var element = angular.element('#' + locationId)[0];\r\n var height = element.offsetHeight;\r\n var offest = element.offsetTop;\r\n $ionicScrollDelegate.scrollTo(0, offest - vmStopStandingOrder.screenHeight + vmStopStandingOrder.offsetCalc + height + 10, true);\r\n $rootScope.gridAnchorIdFilter == 'aaa';\r\n }\r\n }\r\n }\r\n vmStopStandingOrder.onloadMoreClicked = false;\r\n }\r\n\r\n vmStopStandingOrder.stopStandingOrderPressed = function (data) {\r\n console.log(\"******data******= \", data);\r\n googleAnalyticsService.insertEvent({ page: vmStopStandingOrder.pageName, action: vmStopStandingOrder.analyticsAction, eventName: 'עצירת הוראת קבע' });\r\n vmStopStandingOrder.title = data.title;\r\n vmStopStandingOrder.cancelOrderData = data;\r\n vmStopStandingOrder.showstopStandingOrder = true;\r\n $rootScope.stopStandingOrder = true;\r\n }\r\n\r\n vmStopStandingOrder.tryAgainError = function () {\r\n getStandingOrders(vmStopStandingOrder.uniqueId);\r\n }\r\n\r\n vmStopStandingOrder.executeStopStandingOrder = function (delayCancellation) {\r\n showLoader();\r\n console.log(\"***vmStopStandingOrder.executeStopStandingOrder*** \", vmStopStandingOrder.cancelOrderData);\r\n googleAnalyticsService.insertEvent({ page: vmStopStandingOrder.pageName, action: 'עצירת הוראת קבע', eventName: 'כפתור ירוק-לעצירת הוראת הקבע' });\r\n var data = vmStopStandingOrder.cancelOrderData;\r\n var request = {};\r\n\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/address-wrong-defective-popup.html';\r\n popup.text = 'אנו מתנצלים, אך בגלל תקלה לא ניתן לעצור את הוראת הקבע כרגע. ניתן לנסות שוב מאוחר יותר או לפנות למוקד הצ\\'אט שלנו.';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"נסה שנית\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n googleAnalyticsService.insertEvent({ page: vmStopStandingOrder.pageName, action: 'עצירת הוראת קבע', eventName: 'הודעת שגיאה-נסה שנית' });\r\n vmStopStandingOrder.executeStopStandingOrder(delayCancellation);\r\n }\r\n });\r\n\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-grey',\r\n onTap: function () {\r\n googleAnalyticsService.insertEvent({ page: vmStopStandingOrder.pageName, action: 'עצירת הוראת קבע', eventName: 'הודעת שגיאה-סגור' });\r\n vmStopStandingOrder.showstopStandingOrder = false;\r\n }\r\n });\r\n\r\n request.UniqueId = vmStopStandingOrder.uniqueId;\r\n request.MerchantId = data.merchantId;\r\n request.MerchantType = data.merchantType;\r\n request.DelayCancellation = delayCancellation;\r\n request.MerchantName = data.title;\r\n request.TrnType = data.TrnType;\r\n request.TrnExacWay = data.TrnExacWay;\r\n request.AmtBeforeConvAndIndex = data.AmtBeforeConvAndIndex;\r\n request.TrnCurrencyCode = data.TrnCurrencyCode;\r\n request.TrnPurchaseDate = data.TrnPurchaseDate;\r\n request.TransTypeDesc = data.TransTypeDesc;\r\n request.TransSource = data.TransSource;\r\n request.DebCrdDate = data.FullDebCrdDate;\r\n request.TrnIntId = data.TrnIntId;\r\n request.AmtBeforeConvAndIndex = data.AmtBeforeConvAndIndex;\r\n\r\n connection.CancelStandingOrder(request)\r\n .then(function (response) {\r\n console.log('*******response CancelStandingOrder', response);\r\n googleAnalyticsService.insertEvent({ page: vmStopStandingOrder.pageName, action: 'עצירת הוראת קבע', eventName: 'עצירת הוראת הקבע בוצעה בהצלחה' });\r\n vmStopStandingOrder.showstopStandingOrder = false;\r\n vmStopStandingOrder.showSuccess = true;\r\n $rootScope.stopStandingOrder = true;\r\n vmStopStandingOrder.delayCancellation = delayCancellation;\r\n hideLoader();\r\n },\r\n function (error) {\r\n console.log('*******CancelStandingOrder error', error);\r\n //lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, true);\r\n var message = error[0].response.Response.Status.Message;\r\n if (message == undefined) {\r\n errorService.handleError(error);\r\n }\r\n else {\r\n lobbyUiService.popup.alert(popup.text, null, null, null, popup.btns);\r\n }\r\n hideLoader();\r\n });\r\n }\r\n\r\n vmStopStandingOrder.backToStandingOrder = function () {\r\n googleAnalyticsService.insertEvent({ page: vmStopStandingOrder.pageName, action: 'עצירת הוראת קבע', eventName: 'בחזרה להוראות הקבע שלי' });\r\n vmStopStandingOrder.showstopStandingOrder = false;\r\n vmStopStandingOrder.showSuccess = false;\r\n if (vmStopStandingOrder.CurrentExpandedRow != undefined) {\r\n vmStopStandingOrder.CurrentExpandedRow.vmReference.isExpand = false;\r\n }\r\n }\r\n\r\n vmStopStandingOrder.goToLobby = function () {\r\n lobbyUiService.go('dw.lobby');\r\n }\r\n\r\n vmStopStandingOrder.getMoreDetails = function (merchantId, merchantType, locationId) {\r\n showLoader();\r\n console.log('****vmStopStandingOrder.getMoreDetails***= ', merchantId, merchantType);\r\n var request = {};\r\n\r\n request.UniqueId = vmStopStandingOrder.uniqueId;\r\n request.MerchantId = merchantId;\r\n request.MerchantIdType = merchantType;\r\n\r\n var rows = vmStopStandingOrder.gridData.categories[0].rows;\r\n var row = [];\r\n\r\n for (var i = 0; i < rows.length; i++) {\r\n if (rows[i].locationId == locationId) {\r\n\r\n row = rows[i];\r\n i = rows.length + 1;\r\n }\r\n }\r\n\r\n vmStopStandingOrder.CurrentExpandedRow = row;\r\n\r\n if (vmStopStandingOrder.previousExpandedRow == undefined) {\r\n vmStopStandingOrder.previousExpandedRow = row;\r\n }\r\n else if (vmStopStandingOrder.previousExpandedRow != row) {\r\n vmStopStandingOrder.previousExpandedRow.vmReference.isExpand = false;\r\n vmStopStandingOrder.previousExpandedRow = row;\r\n }\r\n\r\n //var request = {};\r\n\r\n var popup = {};\r\n popup.template = 'app/blockCard/shared/templates/address-wrong-defective-popup.html';\r\n popup.text = 'אנו מתנצלים, בגלל תקלה לא נוכל להציג פירוט עבור הוראת קבע זאת.
כדאי לנסות שוב מאוחר יותר';\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"נסה שנית\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n vmStopStandingOrder.getMoreDetails(merchantId, merchantType, locationId);\r\n }\r\n });\r\n\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-grey',\r\n onTap: function () {\r\n //vmStopStandingOrder.showstopStandingOrder = false;\r\n }\r\n });\r\n\r\n if (row.details.comments.length == 0) {\r\n connection.getStandingOrdersDetails(request)\r\n .then(function (response) {\r\n console.log('*******response getStandingOrdersDetails', response);\r\n var length = response.StandingOrdersArray.length;\r\n var result = response.StandingOrdersArray[length - 1]\r\n\r\n //row.OnExpandClient = result.getMoreDetails;\r\n row.TrnCurrencyCode = result.AdditionalParameters.TrnCurrencyCode;\r\n row.TrnExacWay = result.AdditionalParameters.TrnExacWay;\r\n row.TrnIntId = result.AdditionalParameters.TrnIntId;\r\n row.TrnPurchaseDate = result.AdditionalParameters.TrnPurchaseDate;\r\n row.TransTypeDesc = result.AdditionalParameters.TransTypeDesc;\r\n row.TransSource = result.AdditionalParameters.TransSource;\r\n row.TrnType = result.AdditionalParameters.TrnType;\r\n row.DebCrdDate = result.DebitDate;\r\n row.FullDebCrdDate = result.DebitFullDate;\r\n row.AmtBeforeConvAndIndex = result.AmtBeforeConvAndIndex;\r\n\r\n for (var j = 0; j < length; j++) {\r\n var comment;\r\n var standingOrdersParam = response.StandingOrdersArray[j];\r\n if (standingOrdersParam.Comment != null) {\r\n comment = [response.StandingOrdersArray[j].DebitDate, response.StandingOrdersArray[j].Comment, response.StandingOrdersArray[j].DebitAmount];\r\n }\r\n else {\r\n comment = [response.StandingOrdersArray[j].DebitDate, \"\", response.StandingOrdersArray[j].DebitAmount];\r\n }\r\n row.details.comments.push(comment);\r\n }\r\n hideLoader();\r\n },\r\n function (error) {\r\n console.log('*******getStandingOrdersDetails error', error);\r\n //errorService.handleError(error);\r\n var message = error[0].response.Response.Status.Message;\r\n if (message == undefined) {\r\n errorService.handleError(error);\r\n }\r\n else {\r\n lobbyUiService.popup.alert(popup.text, null, null, null, popup.btns);\r\n }\r\n hideLoader();\r\n });\r\n }\r\n else {\r\n hideLoader();\r\n }\r\n }\r\n\r\n vmStopStandingOrder.onBankAccountChange = function (account) {\r\n vmStopStandingOrder.errorResults = false;\r\n vmStopStandingOrder.noResults = false;\r\n vmStopStandingOrder.DisplayResults = true;\r\n var length = appData.BankAccounts.length;\r\n var previous = vmStopStandingOrder.selectedBankAccountIndex;\r\n for (var i = 0; i < length; i++) {\r\n if (appData.BankAccounts[i].AccountNumber == account.AccountNumber\r\n && appData.BankAccounts[i].BankName == account.BankName\r\n && appData.BankAccounts[i].BankBranchNumber == account.BankBranchNumber) {\r\n vmStopStandingOrder.selectedBankAccountIndex = i;\r\n i = length + 1;\r\n }\r\n }\r\n if (previous != vmStopStandingOrder.selectedBankAccountIndex) {\r\n vmStopStandingOrder.cards = [];\r\n loadCards();\r\n vmStopStandingOrder.responseArray = {};\r\n getStandingOrders();\r\n }\r\n console.log(\"vmStopStandingOrder.onBankAccountChange\");\r\n }\r\n\r\n vmStopStandingOrder.callParentDivClick = function (show) {\r\n show = false;\r\n }\r\n\r\n $rootScope.$on(\"stopStandingOrderVisibleChanged\", function () {\r\n vmStopStandingOrder.showstopStandingOrder = false;\r\n vmStopStandingOrder.showSuccess = false;\r\n vmStopStandingOrder.DisplayResults = true;\r\n $rootScope.stopStandingOrder = false;\r\n vmStopStandingOrder.CurrentExpandedRow.vmReference.isExpand = false;\r\n });\r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n console.log('******************stop standing order before enter*******************');\r\n viewData.enableBack = true;\r\n $rootScope.stopStandingOrder = false;\r\n //googleAnalyticsService.trackPage('/vp/transaction-search/welcome');\r\n //googleAnalyticsService.insertEvent({ page: 'transaction-search', action: 'welcome' }); \r\n fillCards();\r\n init();\r\n //vmStopStandingOrder.init();\r\n });\r\n\r\n $scope.$on('$ionicView.beforeLeave', function (e, viewData) {\r\n console.log('******************stop standing order after enter*******************');\r\n\r\n //for back service!!!!!!\r\n $rootScope.stopStandingOrder = false;\r\n\r\n\r\n //if (!connection.isLoggedIn()) {\r\n // lobbyUiService.go('dw.login', { nextPage: 'dw.stop-standing-order' });\r\n //return;\r\n //}\r\n });\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .controller('StandingOrdersMainController', StandingOrdersMainController);\r\n\r\n StandingOrdersMainController.$inject = [\r\n '$scope', 'connection', '$window', 'appData', 'lobbyUiService', '$rootScope', '$q', 'utilService', 'errorService',\r\n '$ionicScrollDelegate', 'googleAnalyticsService', '$timeout', '$ionicLoading', '$ionicPopup', '$location', 'lobbyDataService', '$stateParams',\r\n '$sce'];\r\n\r\n function StandingOrdersMainController($scope, connection, $window, appData, lobbyUiService, $rootScope, $q, utilService, errorService,\r\n $ionicScrollDelegate, googleAnalyticsService, $timeout, $ionicLoading, $ionicPopup, $location, lobbyDataService, $stateParams, $sce) {\r\n var vmStandingOrdersMain = this;\r\n\r\n vmStandingOrdersMain.standalone = $stateParams.standalone\r\n\r\n console.log('url= ', window.location); \r\n\r\n vmStandingOrdersMain.pageNameAnalytics = 'הוראות קבע';\r\n\r\n if (vmStandingOrdersMain.standalone) {\r\n $('#page-wrapper').addClass('standalone');\r\n }\r\n\r\n vmStandingOrdersMain.navigateToPage = function(pageName, analyticsName)\r\n {\r\n googleAnalyticsService.insertEvent({ page: vmStandingOrdersMain.pageNameAnalytics, action: 'לובי הוראת קבע', eventName: analyticsName });\r\n lobbyUiService.navigate(pageName);\r\n }\r\n } \r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .directive(\"cal4uHtmlContent\", cal4uHtmlContent);\r\n\r\n cal4uHtmlContent.$inject = ['$http', 'connection'];\r\n\r\n function cal4uHtmlContent($http, connection) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n scope: {\r\n source: '@'\r\n },\r\n controller: [\r\n '$scope', function ($scope) {\r\n connection.getHtml($scope.source).then(\r\n function (data) {\r\n $scope.content = $.parseHTML(data);\r\n },\r\n function () {\r\n }\r\n );\r\n }\r\n ],\r\n template: '
',\r\n link: function ($scope, element) {\r\n $scope.$watch('content', function (newvalue) {\r\n if (newvalue) {\r\n var current;\r\n for (var i = 0; i < newvalue.length; i++) {\r\n current = $(newvalue[i]).html();\r\n if (current && current.length > 0) {\r\n element.append($.trim($(newvalue[i]).html()));\r\n }\r\n }\r\n setTimeout(function () {\r\n element.addClass('active');\r\n }, 2000);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .directive('chartDraw', chartDraw);\r\n\r\n function chartDraw() {\r\n 'use strict';\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n chartData: '='\r\n },\r\n link: function postLink(scope, element) {\r\n scope.$watch('chartData', function (newVal) {\r\n if (newVal)\r\n scope.updateView();\r\n }, true);\r\n\r\n scope.updateView = function () {\r\n var dates = [];\r\n var amounts = [];\r\n var currentMonth;\r\n var data = scope.chartData;\r\n for (var i = data.length - 1; i > -1; i--) {\r\n amounts.push(data[i].Amount.Value);\r\n currentMonth = data[i].Month;\r\n if (!(currentMonth == 'מרץ' || currentMonth == 'מאי'))\r\n currentMonth = currentMonth.substring(0, 3) + ' \\'';\r\n\r\n dates.push(currentMonth + ' ' + data[i].Date.split('/')[2].substring(2));\r\n }\r\n $(element).highcharts({\r\n chart: {\r\n type: 'column',\r\n backgroundColor: '#04294F',\r\n height: (5.5 * 16),\r\n width: $(window).width()\r\n },\r\n title: {\r\n text: ''\r\n },\r\n subtitle: {\r\n text: ''\r\n },\r\n xAxis: {\r\n labels: {\r\n style: {\r\n color: '#FFFFFF',\r\n whiteSpace: 'nowrap',\r\n fontSize: 9,\r\n fontWeight: 'normal'\r\n }\r\n\r\n },\r\n categories: dates,\r\n tickLength: 0,\r\n lineColor: '#FFFFFF',\r\n lineWidth: 2\r\n },\r\n yAxis: {\r\n title: {\r\n text: ''\r\n },\r\n gridLineColor: '#00000000',\r\n labels: {\r\n enabled: false\r\n }\r\n },\r\n tooltip: {\r\n enabled: false\r\n },\r\n plotOptions: {\r\n column: {\r\n pointPadding: 0,\r\n borderWidth: 0,\r\n color: '#9CD036',\r\n borderRadius: 5\r\n },\r\n series: {\r\n dataLabels: {\r\n color: '#FFFFFF',\r\n enabled: true,\r\n format: \"{point.y:.1f}\",\r\n crop: false,\r\n overflow: 'none',\r\n x: 28,\r\n style: {\r\n fontSize: 9,\r\n textAlign: 'right',\r\n fontWeight: 'normal'\r\n }\r\n },\r\n states: {\r\n hover: {\r\n enabled: false\r\n }\r\n }\r\n }\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n\r\n legend: {\r\n enabled: false\r\n },\r\n series: [\r\n {\r\n data: amounts\r\n\r\n }\r\n ]\r\n });\r\n };\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .directive('genericGrid', genericGrid);\r\n\r\n function genericGrid() {\r\n // usage: gridData = {headers: ['header1', 'header2'...], rows: [['c11','c12','c13'],['c21','c22','c23']...]}, \r\n // gClass = class to apply on entire grid, hasArrow: show arrow in last cell\r\n 'use strict';\r\n return {\r\n restrict: 'A',\r\n templateUrl: 'app/account/templates/gridData.html',\r\n scope: {\r\n gridData: '=',\r\n gClass: '=',\r\n rowClickFunction: '&',\r\n selectedCard: '='\r\n },\r\n link: function postLink(scope) {\r\n\r\n scope.buildGrid = function () {\r\n };\r\n\r\n scope.$watch('gridData', function () {\r\n scope.buildGrid();\r\n }, true);\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .directive('iconBoxes', iconBoxes);\r\n\r\n function iconBoxes() {\r\n 'use strict';\r\n return {\r\n restrict: 'A',\r\n template:\r\n '
' +\r\n '
' +\r\n '
{{sector.Name}}
' +\r\n '
{{sector.Percent.FormattedValue}}
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
',\r\n scope: {\r\n chargesData: '='\r\n },\r\n link: function postLink() {\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .directive('keySubmit', keySubmit);\r\n\r\n function keySubmit() {\r\n return function (scope, element, attrs) {\r\n element.bind(\"keydown keypress\", function (event) {\r\n if (event.keyCode == 13 || event.keyCode == 9 || event.which === 13) {\r\n \r\n event.preventDefault();\r\n if (attrs.keySubmit == 'next') {\r\n $(':input:eq(' + ($(':input').index(this) + 1) + ')').focus();\r\n }\r\n scope.$apply(function () {\r\n scope.$eval(attrs.keySubmit);\r\n });\r\n this.blur();\r\n }\r\n });\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .directive('numberOnlyInput', numberOnlyInput);\r\n\r\n function numberOnlyInput() {\r\n return {\r\n require: '?ngModel',\r\n link: function (scope, element, attrs, ngModelCtrl) {\r\n if (!ngModelCtrl) {\r\n return;\r\n }\r\n\r\n ngModelCtrl.$parsers.push(function (val) {\r\n if (!val)\r\n return;\r\n val = val.toString();\r\n\r\n var clean = val.replace(/[^0-9]+/g, '');\r\n if (val !== clean) {\r\n ngModelCtrl.$setViewValue(clean);\r\n ngModelCtrl.$render();\r\n }\r\n return clean;\r\n });\r\n\r\n element.bind('keypress', function (event) {\r\n if (event.keyCode === 32) {\r\n event.preventDefault();\r\n }\r\n });\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .directive('pieDraw', pieDraw);\r\n\r\n pieDraw.$inject = ['utilService'];\r\n\r\n function pieDraw(utilService) {\r\n 'use strict';\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n pieData: '='\r\n },\r\n link: function postLink(scope, element) {\r\n scope.$watch('pieData', function (newVal) {\r\n if (newVal)\r\n scope.updateView();\r\n }, true);\r\n\r\n scope.updateView = function () {\r\n\r\n if (scope.pieData)\r\n scope.chargeData = utilService.getChargesDataByAmount(scope.pieData);\r\n\r\n var sectors = [];\r\n\r\n\r\n for (var index = 0; index < scope.chargeData.length; ++index) {\r\n sectors.push({ y: scope.chargeData[index]['Amount']['Value'], name: scope.chargeData[index]['Name'], color: scope.chargeData[index]['FromColor'] });\r\n }\r\n\r\n $(element).highcharts({\r\n chart: {\r\n type: 'pie',\r\n spactingTop: 0,\r\n spacingBottom: 0,\r\n margin: [0, 0, 0, 0],\r\n padding: [0, 0, 0, 0],\r\n height: $(window).width() * 0.54,\r\n width: $(window).width() * 0.50\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n title: false,\r\n plotOptions: {\r\n pie: {\r\n borderWidth: 0,\r\n startAngle: 90,\r\n innerSize: '72%',\r\n size: '100%',\r\n shadow: false,\r\n dataLabels: false,\r\n stickyTracking: false,\r\n states: {\r\n hover: {\r\n enabled: false\r\n }\r\n }\r\n }\r\n },\r\n tooltip: {\r\n enabled: false\r\n },\r\n series: [\r\n {\r\n data: sectors\r\n }\r\n ]\r\n });\r\n };\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .directive('processProgress', processProgress);\r\n\r\n function processProgress() {\r\n //usage: steps: ['stage1','stage2',...], currentStage: index - starts from 1\r\n 'use strict';\r\n return {\r\n restrict: 'A',\r\n template: '
' +\r\n '
current, past: $index + 1 <= current}\">' +\r\n '' +\r\n '
{{s}}
' +\r\n '
' +\r\n '
',\r\n scope: {\r\n steps: \"=\",\r\n current: \"=\"\r\n },\r\n link: function postLink(scope) {\r\n scope.getAssetName = function (index) {\r\n var name = 'content/images/step_' + (index + 1);\r\n if (index == scope.steps.length - 1)\r\n name = name + '_last';\r\n name = name + '.svg';\r\n return name;\r\n }\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .directive('seekBar', seekBar);\r\n\r\n function seekBar() {\r\n 'use strict';\r\n return {\r\n restrict: 'A',\r\n require: '?ngModel',\r\n template: '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
',\r\n link: function postLink(scope, element, attrs, ngModel) {\r\n\r\n var dragging, newWidth, min, max, step;\r\n var sliderElement = element.find('.seek-bar-full');\r\n var sliderWidth = sliderElement.width();\r\n //var sliderStart = sliderElement.offset().left;\r\n var knob = element.find('.seek-bar-knob');\r\n initBar();\r\n\r\n function initBar() {\r\n dragging = false;\r\n min = (attrs.min) ? parseFloat(attrs.min) : 0;\r\n max = (attrs.max) ? parseFloat(attrs.max) : 100;\r\n step = (attrs.step) ? parseFloat(attrs.step) : 10;\r\n newWidth = getWidthFromVal();\r\n sliderElement.css({ width: 100 * newWidth + '%' });\r\n knob.css({ left: 100 * newWidth + '%' });\r\n }\r\n\r\n\r\n element.bind('touchstart touchmove touchend touchcancel click', function (event) {\r\n var touch = null;\r\n try {\r\n touch = event.originalEvent.changedTouches[0];\r\n } catch (e) {\r\n }\r\n\r\n if (touch) {\r\n var simulatedEvent = document.createEvent(\"MouseEvent\");\r\n simulatedEvent.initMouseEvent({\r\n touchstart: \"mousedown\",\r\n touchmove: \"mousemove\",\r\n touchend: \"mouseup\",\r\n touchcancel: \"mouseup\",\r\n click: \"mouseup\"\r\n }[event.type], true, true, window, 1,\r\n touch.screenX, touch.screenY,\r\n touch.clientX, touch.clientY, false,\r\n false, false, false, 0, null);\r\n touch.target.dispatchEvent(simulatedEvent);\r\n event.originalEvent.preventDefault();\r\n }\r\n });\r\n\r\n element.on('mousedown', function (event) { //if knob start drag emulation\r\n if (event.toElement == knob[0]) {\r\n dragging = true;\r\n }\r\n });\r\n\r\n element.on('mousemove', function (event) {\r\n if (dragging) {\r\n newWidth = (event.pageX - sliderElement.offset().left) / sliderWidth;\r\n if (newWidth <= 1 && newWidth >= 0) {\r\n sliderElement.css({ width: 100 * newWidth + '%' });\r\n knob.css({ left: 100 * newWidth + '%' });\r\n } else if (newWidth > 1)\r\n newWidth = 1;\r\n else if (newWidth < 0)\r\n newWidth = 0;\r\n ngModel.$setViewValue(calcNewVal());\r\n scope.$apply();\r\n }\r\n });\r\n\r\n element.on('mouseup', function (event) { //if knob finish drag, else update to position\r\n if (dragging)\r\n dragging = false;\r\n else {\r\n newWidth = (event.pageX - sliderElement.offset().left) / sliderWidth;\r\n if (newWidth > 1)\r\n newWidth = 1;\r\n else if (newWidth < 0)\r\n newWidth = 0;\r\n sliderElement.css({ width: 100 * newWidth + '%' });\r\n knob.css({ left: 100 * newWidth + '%' });\r\n }\r\n ngModel.$setViewValue(calcNewVal());\r\n scope.$apply();\r\n });\r\n\r\n element.on('mouseleave', function () { //if knob finish drag, else update to position\r\n dragging = false;\r\n });\r\n\r\n function calcNewVal() {\r\n var newVal = min + newWidth * (max - min);\r\n if ((newVal - min) % step != 0) {\r\n if ((newVal - min) % step > step / 2)\r\n newVal = newVal + step - (newVal - min) % step;\r\n else {\r\n newVal = newVal - (newVal - min) % step;\r\n }\r\n }\r\n newVal = Math.ceil(newVal);\r\n\r\n if (newVal > max || newWidth > 0.98) {\r\n newVal = Math.floor(max);\r\n }\r\n\r\n return newVal;\r\n }\r\n\r\n function getWidthFromVal() {\r\n var w = (ngModel.$viewValue - min) / (max - min);\r\n if (w <= 0)\r\n w = 0.01;\r\n if (w > 1)\r\n w = 1;\r\n return w;\r\n };\r\n\r\n scope.$watch(attrs.ngModel, function () {\r\n newWidth = getWidthFromVal();\r\n sliderElement.css({ width: 100 * newWidth + '%' });\r\n knob.css({ left: 100 * newWidth + '%' });\r\n });\r\n scope.$watch(function () { return element.attr('min'); }, function () {\r\n initBar();\r\n });\r\n scope.$watch(function () { return element.attr('max'); }, function () {\r\n initBar();\r\n });\r\n scope.$watch(function () { return element.attr('step'); }, function () {\r\n initBar();\r\n });\r\n\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .directive('spinner', spinner);\r\n\r\n function spinner() {\r\n 'use strict';\r\n return {\r\n restrict: 'A',\r\n template: '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n let isSelectedItem = false;\r\n\r\n // Create an AngularJS service called debounce\r\n angular.module('Cal4U').factory('debounce', ['$timeout', '$q', function ($timeout, $q) {\r\n // The service is actually this function, which we call with the func\r\n // that should be debounced and how long to wait in between calls\r\n return function debounce(func, wait, immediate) {\r\n console.log(\"debouncing');\");\r\n var timeout;\r\n // Create a deferred object that will be resolved when we need to\r\n // actually call the func\r\n var deferred = $q.defer();\r\n return function () {\r\n console.log(\"not immidiate\");\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) {\r\n\r\n deferred.resolve(func.apply(context, args));\r\n deferred = $q.defer();\r\n }\r\n };\r\n var callNow = immediate && !timeout;\r\n if (timeout) {\r\n $timeout.cancel(timeout);\r\n }\r\n timeout = $timeout(later, wait);\r\n if (callNow) {\r\n deferred.resolve(func.apply(context, args));\r\n deferred = $q.defer();\r\n }\r\n return deferred.promise;\r\n };\r\n };\r\n }]);\r\n\r\n\r\n angular.module('Cal4U')\r\n .directive('autocomplete', function ($timeout) {\r\n return {\r\n controller: 'autocompleteController',\r\n restrict: 'E',\r\n require: \"?ngModel\",\r\n replace: true,\r\n scope: {\r\n choices: '=',\r\n enteredtext: '=',\r\n minlength: '=',\r\n selected: '=',\r\n placeholder: '=',\r\n datasource: '=',\r\n cityData: '=',\r\n filterVariable: '=',\r\n isDisabled: '=',\r\n displayVariable: '='\r\n },\r\n templateUrl: 'app/account/directives/autocomplete.html'\r\n }\r\n }).\r\n controller('autocompleteController', function ($scope, debounce, $http, $timeout, $q) {\r\n\r\n $scope.filteredChoices = [];\r\n $scope.isVisible = { suggestions: false };\r\n $scope.filterItems = function () {\r\n // console.log(\"enteredtext\", $scope.enteredtext);\r\n // console.log(\"moreDAta\", $scope.cityData);\r\n // console.log(\"scope.minlegnt\", $scope.minlength);\r\n if ($scope.enteredtext && ($scope.enteredtext.value.length >= $scope.minlength)) {\r\n querySearch($scope.enteredtext.value);\r\n }\r\n else {\r\n $scope.isVisible.suggestions = false;\r\n\r\n if ($scope.canceler) {\r\n // cancel the previous http call\r\n $scope.canceler.resolve();\r\n }\r\n }\r\n };\r\n $scope.filterItemsWrap = debounce($scope.filterItems, 300, false)\r\n\r\n\r\n /**\r\n * Takes one based index to save selected choice object\r\n */\r\n $scope.selectItem = function (index) {\r\n console.log('index', index);\r\n console.log(\"$scope.seleec\", $scope.selected);\r\n $scope.enteredtext.value = $scope.filteredChoices[index][$scope.displayVariable + 'Name'];\r\n $scope.isVisible.suggestions = false;\r\n\r\n $scope.$emit($scope.selected, $scope.filteredChoices[index]);\r\n\r\n isSelectedItem = true;\r\n };\r\n\r\n /**\r\n * Search for states... use $timeout to simulate\r\n * remote dataservice call.\r\n */\r\n function querySearch(query) {\r\n if ($scope.canceler) {\r\n // cancel the previous http call\r\n $scope.canceler.resolve();\r\n }\r\n\r\n $scope.canceler = $q.defer();\r\n\r\n console.log(\"QuerySearch\", query);\r\n var data = {\r\n value: query\r\n };\r\n //add cityData when sending to get Street..\r\n if ($scope.cityData) {\r\n data.settlementCode = $scope.cityData;\r\n }\r\n $http.post($scope.datasource, data, { timeout: $scope.canceler.promise }).then(function (res) {\r\n $scope.filteredChoices = query ? res.data.result[$scope.filterVariable] : [];\r\n $scope.isVisible.suggestions = $scope.filteredChoices.length > 0 ? true : false;\r\n }, function (err) {\r\n console.log(\"err\", err);\r\n });\r\n }\r\n\r\n $scope.onBlur = function () {\r\n\r\n // prevent emit it item was selected\r\n if (!isSelectedItem) {\r\n\r\n // city\r\n if ($scope.filteredChoices &&\r\n $scope.filteredChoices.length > 0 &&\r\n $scope.filteredChoices[0]['settlementName'] &&\r\n $scope.filteredChoices[0]['settlementName'] == $scope.enteredtext.value) {\r\n\r\n $scope.$emit($scope.selected, $scope.filteredChoices[0]);\r\n\r\n }\r\n else if ($scope.filteredChoices &&\r\n $scope.filteredChoices.length > 0 &&\r\n $scope.filteredChoices[0]['streetName'] &&\r\n $scope.filteredChoices[0]['streetName'] == $scope.enteredtext.value) {\r\n\r\n $scope.$emit($scope.selected, $scope.filteredChoices[0]);\r\n\r\n }\r\n else {\r\n $scope.$emit($scope.selected, {});\r\n }\r\n\r\n setTimeout(function () { $scope.isVisible.suggestions = false; });\r\n }\r\n }\r\n\r\n $scope.onfocus = function () {\r\n isSelectedItem = false;\r\n }\r\n })\r\n})(window, window.angular);\r\n\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('Cal4U')\r\n .directive('validNumber', ['lobbyUiService', validNumber]);\r\n\r\n function validNumber(lobbyUiService) {\r\n return {\r\n require: '?ngModel',\r\n link: function (scope, element) {\r\n\r\n\r\n element.bind('keypress', function (event) {\r\n\r\n event = (event) ? event : window.event;\r\n var charCode = (event.which) ? event.which : event.keyCode;\r\n\r\n if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46 && charCode != 110) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n });\r\n\r\n element.bind('blur', function (event) {\r\n var maxMsg = event.currentTarget.attributes.msg.value + ' המבוקש גבוה מהסכום המקסימלי האפשרי';\r\n var minMsg = event.currentTarget.attributes.msg.value + ' המבוקש נמוך מהסכום המינימלי האפשרי';\r\n var msgMult = 'יש לבחור ' + event.currentTarget.attributes.msg.value + ' בכפולות של ' + event.currentTarget.attributes.interval.value;\r\n var msgCurrentAmount = 'סכום החיוב שבחרת הינו זהה לסכום החיוב הנוכחי. \\n יש לבחור סכום שונה';\r\n var msg = '';\r\n var valid = true;\r\n var msgNew = event.currentTarget.attributes.msgNew && event.currentTarget.attributes.msgNew.value? event.currentTarget.attributes.msgNew.value: \"\";\r\n\r\n if (parseInt(event.currentTarget.value) < parseInt(event.currentTarget.attributes.min.value)) {\r\n msg = minMsg;\r\n valid = false;\r\n } else if (parseInt(event.currentTarget.value) > parseInt(event.currentTarget.attributes.max.value)) {\r\n msg = maxMsg;\r\n valid = false;\r\n } else if (parseInt(event.currentTarget.value) % parseInt(event.currentTarget.attributes.interval.value) != 0) {\r\n if (msgNew && msgNew != \"\") {\r\n msg = msgNew;\r\n }\r\n else {\r\n msg = msgMult;\r\n }\r\n valid = false;\r\n } else if (event.currentTarget.attributes.current)\r\n if (parseInt(event.currentTarget.value) == parseInt(event.currentTarget.attributes.current.value)) {\r\n \r\n msg = msgCurrentAmount;\r\n valid = false;\r\n }\r\n\r\n if (!valid) {\r\n\r\n element.removeClass(\"ng-valid\");\r\n\r\n element.addClass(\"ng-invalid\");\r\n\r\n if (navigator.notification) {\r\n navigator.notification.alert(\r\n msg,\r\n function () {\r\n },\r\n ' ',\r\n 'סגור'\r\n );\r\n } else {\r\n lobbyUiService.popup.alert(msg, 'נא לשים לב');\r\n }\r\n\r\n }\r\n });\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module('Cal4U').factory('utilService', utilService);\r\n\r\n function utilService() {\r\n return {\r\n getChargesDataByAmount: function (charges) {\r\n //this.unOrderedSectors = charges;\r\n return charges.Sectors.sort(function (a, b) { return b['Amount']['Value'] - a['Amount']['Value']; });\r\n },\r\n\r\n splitDate: function (date) {\r\n return (date.substring(0, 5) + ' ' + date.substring(6));\r\n },\r\n\r\n stringFormat: function () {\r\n var s = arguments[0];\r\n for (var i = 0; i < arguments.length - 1; i++) {\r\n var reg = new RegExp(\"\\\\{\" + i + \"\\\\}\", \"gm\");\r\n s = s.replace(reg, arguments[i + 1]);\r\n }\r\n\r\n return s;\r\n },\r\n\r\n\r\n // Sample Data\r\n unOrderedSectors: [\r\n {\r\n \"Name\": \"variance\",\r\n \"Code\": \"994\",\r\n \"Icon20x20\": \"https://stage-restservices.cal-online.co.il/CAL4U-Test/Content/Images/Icons/20X20/ICO994_20X20.png\",\r\n \"ToColor\": \"#7253be\",\r\n \"FromColor\": \"#8b6ad6\",\r\n \"Amount\": {\r\n \"Value\": 8.08,\r\n \"FormattedValue\": \"8.08\",\r\n \"ReversedFormattedValue\": \"8.08\"\r\n },\r\n \"Currency\": null,\r\n \"Percent\": {\r\n \"Value\": 50.0,\r\n \"FormattedValue\": \"50%\",\r\n \"ReversedFormattedValue\": \"50%\"\r\n }\r\n },\r\n {\r\n \"Name\": \"food\",\r\n \"Code\": \"994\",\r\n \"Icon20x20\": \"https://stage-restservices.cal-online.co.il/CAL4U-Test/Content/Images/Icons/20X20/ICO994_20X20.png\",\r\n \"ToColor\": \"#7253be\",\r\n \"FromColor\": \"#FA3C80\",\r\n \"Amount\": {\r\n \"Value\": 1.01,\r\n \"FormattedValue\": \"1.01\",\r\n \"ReversedFormattedValue\": \"1.01\"\r\n },\r\n \"Currency\": null,\r\n \"Percent\": {\r\n \"Value\": 12.5,\r\n \"FormattedValue\": \"12.5%\",\r\n \"ReversedFormattedValue\": \"12.5%\"\r\n }\r\n },\r\n {\r\n \"Name\": \"clothing\",\r\n \"Code\": \"994\",\r\n \"Icon20x20\": \"https://stage-restservices.cal-online.co.il/CAL4U-Test/Content/Images/Icons/20X20/ICO994_20X20.png\",\r\n \"ToColor\": \"#7253be\",\r\n \"FromColor\": \"#02CD4E\",\r\n \"Amount\": {\r\n \"Value\": 2.02,\r\n \"FormattedValue\": \"2.02\",\r\n \"ReversedFormattedValue\": \"2.02\"\r\n },\r\n \"Currency\": null,\r\n \"Percent\": {\r\n \"Value\": 25.0,\r\n \"FormattedValue\": \"25%\",\r\n \"ReversedFormattedValue\": \"25%\"\r\n }\r\n },\r\n {\r\n \"Name\": \"fuel\",\r\n \"Code\": \"994\",\r\n \"Icon20x20\": \"https://stage-restservices.cal-online.co.il/CAL4U-Test/Content/Images/Icons/20X20/ICO994_20X20.png\",\r\n \"ToColor\": \"#7253be\",\r\n \"FromColor\": \"#646464\",\r\n \"Amount\": {\r\n \"Value\": 1.01,\r\n \"FormattedValue\": \"1.01\",\r\n \"ReversedFormattedValue\": \"1.01\"\r\n },\r\n \"Currency\": null,\r\n \"Percent\": {\r\n \"Value\": 12.5,\r\n \"FormattedValue\": \"12.5%\",\r\n \"ReversedFormattedValue\": \"12.5%\"\r\n }\r\n }\r\n ],\r\n\r\n // Check If Need\r\n colorAndImagesDictionary: {\r\n\r\n // Keys are not yet set\r\n '001': { Color: '#1C85C6', Icon: 'furniture_and_home.svg' },\r\n '002': { Color: '#8B6AD6', Icon: 'variance.svg' },\r\n '003': { Color: '#D5DE00', Icon: 'direct_marketing.svg' },\r\n 'food': { Color: '#FA3C80', Icon: 'food.svg' },\r\n '005': { Color: '#E18A06', Icon: 'tourism.svg' },\r\n '006': { Color: '#2EBBBF', Icon: 'telecommunications.svg' },\r\n 'fuel': { Color: '#646464', Icon: 'fuel.svg' },\r\n 'clothing': { Color: '#02CD4E', Icon: 'clothing.svg' },\r\n '009': { Color: '#ADADAD', Icon: 'stores.svg' },\r\n '010': { Color: '#DB0303', Icon: 'institues.svg' },\r\n '011': { Color: '#D8A100', Icon: 'jewelry.svg' },\r\n '012': { Color: '#4898DB', Icon: 'medicine.svg' },\r\n '013': { Color: '#60A6BE', Icon: 'institues.svg' },\r\n '014': { Color: '#C2D00E', Icon: 'office_equipment.svg' },\r\n '015': { Color: '#2EBBBF', Icon: 'electricity.svg' },\r\n '016': { Color: '#C56731', Icon: 'finance.svg' },\r\n '017': { Color: '#453949', Icon: 'hotels.svg' },\r\n '018': { Color: '#DF306E', Icon: 'cosmetics.svg' },\r\n '019': { Color: '#917600', Icon: 'car.svg' },\r\n '020': { Color: '#ED8D49', Icon: 'resturants.svg' },\r\n '021': { Color: '#A6B211', Icon: 'other_industries.svg' },\r\n '022': { Color: '#313131', Icon: 'tires.svg' },\r\n '023': { Color: '#679063', Icon: 'boks.svg' },\r\n '024': { Color: '#F83500', Icon: 'gas.svg' },\r\n '025': { Color: '#72A72A', Icon: 'repairs.svg' },\r\n '026': { Color: '#85401A', Icon: 'auto_parts.svg' },\r\n '027': { Color: '#8DAD57', Icon: 'security.svg' },\r\n '028': { Color: '#B76C91', Icon: 'donations.svg' },\r\n '029': { Color: '#4067A7', Icon: 'tools.svg' },\r\n '030': { Color: '#80D51F', Icon: 'digital_wallet.svg' },\r\n '031': { Color: '#CC7232', Icon: 'consulting_services.svg' },\r\n '032': { Color: '#458977', Icon: 'hosting.svg' },\r\n '033': { Color: '#C33C38', Icon: 'transport.svg' },\r\n '034': { Color: '#49579F', Icon: 'computers.svg' },\r\n '035': { Color: '#4837AB', Icon: 'entertainment.svg' },\r\n '036': { Color: '#A8C618', Icon: 'stores.svg' }\r\n\r\n\r\n }\r\n }\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module('Cal4U')\r\n .filter('trusted', trusted);\r\n\r\n trusted.$inject = ['$sce'];\r\n\r\n function trusted($sce) {\r\n return function (val) {\r\n if (typeof val === 'string' && val.length > 0) {\r\n return $sce.trustAsHtml(val);\r\n }\r\n return undefined;\r\n }\r\n }\r\n\r\n})(window, window.angular);\r\n\n(function (window, anjular) {\r\n 'use strict';\r\n\r\n angular.module('Cal4U').controller('debitSpreadController', debitSpreadController);\r\n\r\n debitSpreadController.$inject = ['$scope', '$timeout', '$ionicScrollDelegate', '$ionicSlideBoxDelegate', '$ionicNavBarDelegate',\r\n '$state', 'lobbyUiService', 'errorService', 'appData', 'connection','$stateParams'];\r\n \r\n function debitSpreadController($scope, $timeout, $ionicScrollDelegate, $ionicSlideBoxDelegate,\r\n $ionicNavBarDelegate, $state, lobbyUiService, errorService, appData, connection,stateParams) {\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.currCards = [];\r\n $scope.uniqueId = null;\r\n $scope.uniqueIDChosen = 0;\r\n $scope.steps = [{ caption: 'בוחרים סכום', active: true }, { caption: ' כמות תשלומים', active: false }, { caption: ' פרטי התוכנית', active: false }, { caption: 'סיום', active: false }];\r\n \r\n $scope.members =\r\n {\r\n showTerms: false,\r\n isReturnFromTerms: false,\r\n title: \"פריסת חיוב\",\r\n initStage2Data: null,\r\n initStage3Data: null,\r\n isClearSpreadRequest: false,\r\n DEBIT_SPREAD_AMOUNT_KEY: \"DEBIT_SPREAD_AMOUNT_KEY\",\r\n DEBIT_SPREAD_HELPPAGE_IND: \"DEBIT_SPREAD_HELPPAGE_IND\"\r\n };\r\n\r\n $scope.title = \"פריסת חיוב\";\r\n\r\n $scope.doc = {\r\n url: \"CalDocs?id=DebitSpreadTerms.html\" \r\n }\r\n\r\n $scope.getActivePage = function (page) {\r\n if ($scope.steps == null || $scope.steps == undefined) {\r\n $scope.steps = [{ caption: 'בוחרים סכום', active: false }, { caption: ' כמות תשלומים', active: false }, { caption: ' פרטי התוכנית', active: false }, { caption: 'סיום', active: false }];;\r\n }\r\n else {\r\n for (var i = 0; i < $scope.steps.length; i++) {\r\n $scope.steps[i].active = false;\r\n }\r\n }\r\n $scope.steps[page].active = true;\r\n }\r\n // #region init\r\n $scope.init = function () {\r\n //$scope.appData.backOverrideFN = $scope.goToLobby;\r\n\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.debit-spread' }, { location: 'replace' });\r\n return;\r\n }\r\n \r\n $scope.stage = 0; \r\n $scope.currentStage = 0;\r\n\r\n $scope.appData.inProcess = false;\r\n //$scope.appData.backOverrideFN = $scope.goToLobby;\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('expressScroll').scrollTop();\r\n }, 0);\r\n\r\n if (!$scope.appData.selectedBankAccountIndex) {\r\n $scope.appData.selectedBankAccountIndex = 0;\r\n }\r\n $scope.selectedBankAccountIndex = $scope.appData.selectedBankAccountIndex;\r\n\r\n for (var i = 0; i < $scope.appData.BankAccounts.length; i++) {\r\n $scope.appData.BankAccounts[i].allCreditProductsInd = false;\r\n var cardsToDisplay = [];\r\n for (var j = 0; j < $scope.appData.BankAccounts[i].Cards.length; j++) {\r\n if ($scope.appData.BankAccounts[i].Cards[j].CreditProductsInd) {\r\n $scope.appData.BankAccounts[i].Cards[j].CardIndex = j;\r\n cardsToDisplay.push($scope.appData.BankAccounts[i].Cards[j]);\r\n }\r\n }\r\n if (cardsToDisplay.length > 0) {\r\n $scope.appData.BankAccounts[i].creditProductsCards = cardsToDisplay;\r\n $scope.appData.BankAccounts[i].allCreditProductsInd = true;\r\n }\r\n }\r\n $scope.accountsToDisplay = $scope.appData.BankAccounts;\r\n $scope.selectedBankAccount = $scope.accountsToDisplay[$scope.selectedBankAccountIndex];\r\n \r\n if (!$scope.selectedCard) {\r\n $scope.selectedCard = $scope.selectedBankAccount.creditProductsCards[0];\r\n }\r\n $scope.accountChanged($scope.selectedBankAccountIndex, $scope.selectedCard.Id);\r\n $scope.goToStage1();\r\n };\r\n\r\n $scope.fillCards = function () {\r\n $scope.currCards = $scope.appData.BankAccounts[$scope.selectedBankAccountIndex].creditProductsCards;\r\n };\r\n $scope.accountNext = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').next();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n }\r\n\r\n $scope.accountPrev = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').previous();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n }\r\n\r\n $scope.accountChanged = function (index, cardIndex) {\r\n\r\n $scope.appData.selectedBankAccountIndex = index;\r\n $scope.selectedBankAccountIndex = index; \r\n $scope.selectedBankAccount = $scope.accountsToDisplay[index];\r\n $scope.fillCards();\r\n if ($scope.selectedBankAccount.allCreditProductsInd) {\r\n if (cardIndex) {\r\n $scope.cardChanged(cardIndex);\r\n } else {\r\n $scope.cardChanged($scope.selectedBankAccount.creditProductsCards[0].Id);\r\n }\r\n }\r\n\r\n $scope.selectedBankAccountIndex = index;\r\n };\r\n\r\n $scope.cardChanged = function (index) {\r\n if ($scope.selectedBankAccount.allCreditProductsInd) {\r\n $scope.selectedCard = $scope.selectedBankAccount.creditProductsCards[index];\r\n $scope.selectedCard.shownSteps = $scope.steps;\r\n $scope.noCardError = true;\r\n $scope.uniqueId = uniqueIDChosen;\r\n var obj = {};\r\n obj.uniqueIDChosen = uniqueIDChosen;\r\n } else {\r\n $scope.selectedCard = {};\r\n $scope.selectedCard.shownSteps = $scope.steps;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }\r\n }\r\n\r\n\r\n $scope.cardChanged = function (uniqueIDChosen) {\r\n $scope.uniqueId = uniqueIDChosen;\r\n //var obj = {};\r\n //obj.uniqueIDChosen = uniqueIDChosen;\r\n //$scope.selectedCard = $scope.selectedBankAccount.creditProductsCards[$scope.shownCardIndex];\r\n if ($scope.selectedBankAccount.allCreditProductsInd) {\r\n for (var j = 0; j < $scope.selectedBankAccount.creditProductsCards.length; j++) {\r\n var uId = $scope.selectedBankAccount.creditProductsCards[j].Id;\r\n if (uniqueIDChosen == uId) {\r\n $scope.selectedCard = $scope.selectedBankAccount.creditProductsCards[j];\r\n }\r\n }\r\n if (!$scope.selectedCard || $scope.selectedCard === undefined || typeof ($scope.selectedCard) !== \"object\") {\r\n $scope.selectedCard = {};\r\n }\r\n \r\n $scope.selectedCard.shownSteps = $scope.steps;\r\n $scope.noCardError = true;\r\n }\r\n else {\r\n $scope.selectedCard = {};\r\n $scope.selectedCard.shownSteps = $scope.steps;\r\n $scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }\r\n };\r\n\r\n $scope.updateAccountSlider = function (index) {\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').update();\r\n }, 200).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').slide(index);\r\n });\r\n\r\n $scope.$on(\"$destroy\", function (event) {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n // #endregion\r\n\r\n $scope.goToStage1 = function () {\r\n $scope.stage = 1;\r\n $scope.currentStage = 1;\r\n $scope.members.showTerms = false;\r\n $scope.selectedCard.shownSteps = $scope.steps; \r\n $scope.title = \"פריסת חיוב\";\r\n $scope.appData.backOverrideFN = null;\r\n $scope.getActivePage(0);\r\n $ionicScrollDelegate.$getByHandle('debitSpreadScroll').scrollTop();\r\n }\r\n\r\n \r\n $scope.goToStage2 = function (data) {\r\n $scope.members.initStage2Data = data;\r\n $scope.members.initStage3Data = null;\r\n\r\n $scope.stage = 2;\r\n $scope.currentStage = 2;\r\n\r\n $scope.appData.backOverrideFN = $scope.goToStage1;\r\n $scope.getActivePage(1);\r\n function handleDebitSpreadSubmit2Directive(response) {\r\n $scope.$broadcast(\"initStage2\", { data: response });\r\n $scope.$broadcast(\"initStage3\", { data: null });\r\n }\r\n handleDebitSpreadSubmit2Directive(data);\r\n $ionicScrollDelegate.$getByHandle('debitSpreadScroll').scrollTop();\r\n };\r\n \r\n $scope.goToStage3 = function (data) {\r\n $scope.members.initStage3Data = data;\r\n\r\n $scope.stage = 3;\r\n $scope.currentStage = 3;\r\n\r\n $scope.appData.backOverrideFN = $scope.goToStage2;\r\n $scope.getActivePage(2);\r\n function handleDebitSpreadSubmit3Directive(response) {\r\n $scope.$broadcast(\"initStage3\", { data: response });\r\n }\r\n handleDebitSpreadSubmit3Directive(data);\r\n $ionicScrollDelegate.$getByHandle('debitSpreadScroll').scrollTop();\r\n };\r\n\r\n $scope.goToStage4 = function (data) {\r\n $scope.stage = 4;\r\n $scope.currentStage = 4;\r\n $scope.getActivePage(3);\r\n $scope.appData.backOverrideFN = $scope.goToLobby;\r\n\r\n function handleDebitSpreadSubmitDirective(response) {\r\n $scope.$broadcast(\"initStage4\", { data: response });\r\n }\r\n\r\n handleDebitSpreadSubmitDirective(data);\r\n\r\n $ionicScrollDelegate.$getByHandle('debitSpreadScroll').scrollTop();\r\n };\r\n \r\n $scope.goBack = function () {\r\n $scope.goBackToStage($scope.currentStage - 1);\r\n }\r\n\r\n var goToStage = function (stage) {\r\n $scope.stage = stage;\r\n $scope.currentStage = stage;\r\n }\r\n\r\n $scope.goToLobby = function () {\r\n lobbyUiService.go('dw.lobby');\r\n };\r\n\r\n $scope.$watch(\"stage\", function (stageNew, stageOld) {\r\n \r\n if ((stageNew !== stageOld) && $scope.members.isClearSpreadRequest) {\r\n connection.debitSpreadClearSpreadRequest($scope.selectedCard.Id);\r\n\r\n $scope.members.isClearSpreadRequest = false;\r\n console.log(\"card \" + $scope.selectedCard.Id + \"is cleared\");\r\n }\r\n });\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n //$scope.appData.backOverrideFN = null;\r\n $scope.appData.inProcess = false;\r\n window.sessionStorage.removeItem($scope.members.DEBIT_SPREAD_AMOUNT_KEY);\r\n\r\n if ($scope.members.isClearSpreadRequest) {\r\n connection.debitSpreadClearSpreadRequest($scope.selectedCard.Id);\r\n\r\n $scope.members.isClearSpreadRequest = false;\r\n console.log(\"card \" + $scope.selectedCard.Id + \"is cleared\");\r\n } \r\n\r\n lobbyUiService.loader.hide();\r\n });\r\n \r\n $scope.goBackToStage = function () {\r\n if ($scope.members.showTerms) {\r\n $scope.title = 'פריסת חיוב';\r\n $scope.members.showTerms = false;\r\n $scope.members.isReturnFromTerms = true;\r\n $scope.stage = 2;\r\n //$scope.goToStage2(null);\r\n\r\n $timeout(function () {\r\n $scope.appData.backOverrideFN = $scope.goToStage1;\r\n }, 100);\r\n }\r\n\r\n return;\r\n }\r\n\r\n $scope.goToInfo = function () {\r\n $scope.title = 'תקנון התכנית';\r\n $scope.members.showTerms = true;\r\n $scope.members.isReturnFromTerms = false;\r\n $scope.appData.backOverrideFN = $scope.goBackToStage;\r\n };\r\n \r\n $scope.showPopup = function (text) {\r\n lobbyUiService.popup.alert(text);\r\n }\r\n $scope.showMoreInfo = function () {\r\n var popup = {};\r\n popup.template = 'app/account/templates/debit-spread/popup/moreInfo.html'\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n\r\n\r\n\r\n }\r\n });\r\n lobbyUiService.popup.message(popup.template, null, null, null, null, null, popup.btns, true);\r\n }\r\n $scope.init();\r\n \r\n };\r\n})(window, window.anjular);\n(function (window, angular) {\r\n \"use strict\";\r\n angular.module(\"Cal4U\").directive(\"howThisWork\", howThisWork);\r\n\r\n howThisWork.$inject = ['lobbyUiService', 'appData', 'connection', '$state','$stateParams'];\r\n\r\n function howThisWork(lobbyUiService, appData, connection, $state, stateParams) {\r\n return {\r\n restrict: \"E\",\r\n replace: true,\r\n scope: true, \r\n templateUrl: \"app/account/templates/debit-spread/howThisWork.html\",\r\n link: function (scope) {\r\n var STORAGE_IS_AGREE_KEY = scope.$parent.members.DEBIT_SPREAD_HELPPAGE_IND;\r\n scope.appData = appData;\r\n scope.appData.isLoggedIn = connection.isLoggedIn();\r\n \r\n scope.form = {};\r\n scope.form.isVisible = false;\r\n scope.form.isAgree = window.localStorage.getItem(STORAGE_IS_AGREE_KEY) !== null\r\n ? Boolean(window.localStorage.getItem(STORAGE_IS_AGREE_KEY))\r\n : false;\r\n\r\n // remove cached value\r\n //window.localStorage.removeItem(STORAGE_IS_AGREE_KEY);\r\n\r\n if (scope.form.isAgree || stateParams.step) {\r\n if (!scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.debit-spread' });\r\n \r\n } else {\r\n scope.$parent.goToStage1();\r\n } \r\n\r\n return;\r\n }\r\n\r\n //scope.$parent.title = \"פריסת החיוב או חלקו\";\r\n scope.form.isVisible = true;\r\n scope.$parent.currentStage = 0;\r\n scope.$parent.members.showTerms = true;\r\n\r\n scope.validateForm = function () {\r\n if (scope.form.isAgree) {\r\n window.localStorage.setItem(STORAGE_IS_AGREE_KEY, scope.form.isAgree);\r\n }\r\n\r\n if (!scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.debit-spread', query: '{\"step\": \"1\"}'});\r\n \r\n \r\n return;\r\n }\r\n\r\n scope.form.isVisible = false;\r\n scope.$parent.goToStage1();\r\n };\r\n }\r\n }\r\n };\r\n})(window, window.angular);\n(function (window, angular) {\r\n \"use strict\";\r\n\r\n angular.module(\"Cal4U\").directive(\"debitSpreadSum\", debitSpreadSum);\r\n\r\n debitSpreadSum.$inject = ['$stateParams', '$timeout', '$ionicSlideBoxDelegate', '$dialogService', 'errorService', 'connection', 'appData', 'lobbyUiService'];\r\n\r\n function debitSpreadSum($stateParams, $timeout, $ionicSlideBoxDelegate, $dialogService, errorService, connection, appData, lobbyUiService) {\r\n return {\r\n restrict: \"E\",\r\n replace: true,\r\n scope: true,\r\n templateUrl: \"app/account/templates/debit-spread/debitSpreadSum.html\",\r\n link: function (scope) {\r\n scope.form = {};\r\n scope.appData = appData;\r\n var lockGetCardEligiblityStatus;\r\n\r\n if (!scope.appData.isLoggedIn) {\r\n return;\r\n }\r\n\r\n var PREV_DEBIT_AMOUNT_TYPE = 63;\r\n var NEXT_DEBIT_AMOUNT_TYPE = 61;\r\n var DEBIT_SPREAD_AMOUNT_KEY = scope.$parent.DEBIT_SPREAD_AMOUNT_KEY;\r\n \r\n //cancelCallback\r\n function loadData(selectedCardId, isCallGetCardEligiblityStatus) {\r\n if (!!lockGetCardEligiblityStatus) return;\r\n\r\n var selectedCardId = !selectedCardId ? scope.$parent.selectedCard.Id : selectedCardId;\r\n scope.form.errorMessage = \"\";\r\n scope.form.stage = scope.$parent.currentStage;\r\n\r\n if (!selectedCardId) { \r\n scope.noCardError = true;\r\n scope.form.errorMessage = \"לא ניתן לבצע פריסת חיוב בחשבון זה. לבירור יש לפנות לשירות לקוחות.\";\r\n return;\r\n }\r\n \r\n if (isCallGetCardEligiblityStatus) {\r\n getCardEligiblityStatus(selectedCardId);\r\n }\r\n else {\r\n var form = !!window.sessionStorage.getItem(DEBIT_SPREAD_AMOUNT_KEY) ? window.sessionStorage.getItem(DEBIT_SPREAD_AMOUNT_KEY) : scope.form; \r\n angular.copy(JSON.parse(form), scope.form);\r\n scope.form.stage = scope.$parent.currentStage;\r\n scope.form.requestedAmount = parseInt(scope.form.requestedAmount);\r\n } \r\n }\r\n\r\n \r\n function getCardEligiblityStatus(selectedCardId) {\r\n scope.isShowMainContent = false;\r\n scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n lockGetCardEligiblityStatus = true;\r\n\r\n connection.debitSpreadGetCardEligiblityStatus(selectedCardId).then(function (data) {\r\n\r\n if (data.Response.Status.Succeeded === true) {\r\n scope.form.errorMessage = \"\";\r\n\r\n mapResponseData(data);\r\n } else {\r\n scope.$parent.showPopup(\"לא ניתן להשלים כרגע את הפעולה. אנא נסה שנית במועד מאוחר יותר.\");\r\n }\r\n\r\n scope.isShowMainContent = true;\r\n scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n lockGetCardEligiblityStatus = false;\r\n //console.log(\"token :\" + scope.appData.isLoggedIn)\r\n //console.log('selectedCardId : ' + JSON.stringify(selectedCardId));\r\n //console.log('debitSpreadGetCardEligiblityStatus : ' + JSON.stringify(data));\r\n }, function (errorResult) {\r\n getCardEligiblityStatusShowErrorMessage(errorResult[0].response.Response.Status, errorResult, errorResult[0].response.Response.DialogBox.Title);\r\n scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n lockGetCardEligiblityStatus = false;\r\n //console.log(errorResult[0].response.Response.Status.Message);\r\n //console.log(\"SeverityCode:\" + errorResult[0].response.Response.Status.SeverityCode + \" \" + \"SeverityNumber:\" + errorResult[0].response.Response.Status.SeverityNumber);\r\n });\r\n }\r\n\r\n function mapResponseData(data) {\r\n scope.form.isPrev = !!data.IsPrev;\r\n scope.form.isNext = !!data.IsNext;\r\n\r\n if (data.IsNext) {\r\n scope.form.nextDebitDate = data.NextDebitDate.replace(/-/g, \"/\");\r\n scope.form.nextDebitAmount = data.NextDebitAmount.MajorUnits;\r\n scope.form.nextDebitMaxSpreadAmount = data.NextDebitMaxSpreadAmount.MajorUnits;\r\n scope.form.debitSpreadMaxAmount = data.NextDebitMaxSpreadAmount.MajorUnits;\r\n scope.form.checkedDebit = \"nextDebitAmount\";\r\n }\r\n\r\n if (data.IsPrev) {\r\n scope.form.prevDebitDate = data.PrevDebitDate.replace(/-/g, \"/\");\r\n scope.form.prevDebitAmount = data.PrevDebitAmount.MajorUnits;\r\n scope.form.prevDebitMaxSpreadAmount = data.PrevDebitMaxSpreadAmount.MajorUnits;\r\n scope.form.debitSpreadMaxAmount = data.PrevDebitMaxSpreadAmount.MajorUnits;\r\n scope.form.checkedDebit = \"prevDebitAmount\";\r\n }\r\n\r\n scope.form.nextDebitAmountB = data.NextDebitAmountB;\r\n scope.form.requestedAmount = 250;\r\n scope.form.minSpreadAmount = data.MinSpreadAmount.MajorUnits;\r\n scope.form.debitSpreadAmountRangeInterval = data.DebitSpreadAmountRangeInterval;\r\n scope.form.spreadTimingComment = data.SpreadTimingComment;\r\n scope.form.debitSpreadAmountMultiple = data.DebitSpreadAmountMultiple;\r\n }\r\n\r\n function getCardEligiblityStatusShowErrorMessage(errorStatus, errorResponse, title) {\r\n var genericErrorMessage = \"לא ניתן להשלים כרגע את הפעולה. אנא נסה שנית במועד מאוחר יותר.\";\r\n\r\n if (errorStatus.SeverityCode === \"W\") {\r\n if (errorStatus.SeverityNumber === \"001\" ||\r\n errorStatus.SeverityNumber === \"002\" ||\r\n errorStatus.SeverityNumber === \"011\" ||\r\n errorStatus.SeverityNumber === \"012\") {\r\n //$dialogService.showGenericPopup({ scope: scope, text: genericErrorMessage, actionText: 'נסה שנית', cancelText: 'סגור', cssClass: \"debit-spread-popup\", actionCallback: loadDataCallBack, cancelCallback: scope.goToLobby });\r\n errorService.handleError(errorResponse, loadDataCallBack);\r\n }\r\n else if (errorStatus.SeverityNumber === \"003\") {\r\n var errorMessage = \"עליך לאשר קבלת מידע בערוץ אינטרנט\";\r\n //$dialogService.showGenericPopup({ scope: scope, text: errorMessage, actionText: 'לעדכון לחץ כאן', cancelText: 'סגור', cssClass: \"debit-spread-popup\", actionCallback: loadDataCallBack, cancelCallback: scope.goToLobby });\r\n errorService.handleError(errorResponse, loadDataCallBack);\r\n }\r\n else {\r\n scope.form.title = title;\r\n scope.form.errorMessage = errorStatus.Message;\r\n errorService.handleError(errorResponse, loadDataCallBack);\r\n }\r\n } else if (errorStatus.SeverityCode === \"E\" && errorStatus.SeverityNumber === \"001\") {\r\n \r\n //$dialogService.showGenericPopup({ scope: scope, text: genericErrorMessage, actionText: 'נסה שנית', cancelText: 'סגור', cssClass: \"debit-spread-popup\", actionCallback: loadDataCallBack, cancelCallback: scope.goToLobby });\r\n errorService.handleError(errorResponse, loadDataCallBack);\r\n } else {\r\n if (errorStatus && errorStatus.Message) {\r\n scope.form.errorMessage = errorStatus.Message;\r\n } else {\r\n errorService.handleError(errorResponse, loadDataCallBack); \r\n }\r\n \r\n \r\n }\r\n \r\n }\r\n\r\n function getDebitType(){\r\n return (scope.form.checkedDebit === \"prevDebitAmount\") ? PREV_DEBIT_AMOUNT_TYPE : NEXT_DEBIT_AMOUNT_TYPE;\r\n }\r\n\r\n scope.checkAmountMultiple = function () {\r\n if (scope.form.requestedAmount % scope.form.debitSpreadAmountMultiple != 0) {\r\n \r\n angular.element(\"#amount\").addClass(\"ng-invalid\");\r\n }\r\n else {\r\n \r\n angular.element(\"#amount\").removeClass(\"ng-invalid\");\r\n }\r\n }\r\n\r\n function goToStage2(data) {\r\n if (isAmountValid()) { return; }\r\n \r\n scope.form.stage = 2;\r\n window.sessionStorage.setItem(DEBIT_SPREAD_AMOUNT_KEY, JSON.stringify(scope.form));\r\n scope.$parent.goToStage2(data); \r\n }\r\n\r\n var loadDataCallBack = function () {\r\n loadData(null, true);\r\n };\r\n\r\n scope.setDebitData = function (maxSpreadAmount) {\r\n scope.form.requestedAmount = scope.form.minSpreadAmount;\r\n scope.form.debitSpreadMaxAmount = maxSpreadAmount;\r\n }\r\n scope.operation = function () {\r\n console.log('vm.operation');\r\n };\r\n \r\n scope.spreadPaymentRange = function () {\r\n if (isAmountValid()) return false;\r\n \r\n var request = {\r\n \"cardId\": scope.$parent.selectedCard.Id,\r\n \"requestedAmount\": scope.form.requestedAmount.toString(),\r\n \"debitType\": getDebitType().toString()\r\n };\r\n\r\n scope.isShowMainContent = false;\r\n scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n\r\n connection.debitSpreadGetSpreadPaymentsRange(request).then(function (data) {\r\n scope.appData.showSpinner = false;\r\n \r\n if (data.Response.Status.Succeeded === true) {\r\n data.isNext = scope.form.checkedDebit === \"nextDebitAmount\" ? true : false;\r\n\r\n goToStage2(data);\r\n } else {\r\n scope.$parent.showPopup(\"לא ניתן להשלים כרגע את הפעולה. אנא נסה שנית במועד מאוחר יותר.\");\r\n scope.isShowMainContent = true;\r\n } \r\n }, function (errorResult) {\r\n scope.isShowMainContent = true;\r\n scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n scope.$parent.showPopup(errorResult[0].response.Response.Status.Message); \r\n //console.log(errorResult[0].response.Response.Status.Message);\r\n //console.log(\"SeverityCode:\" + errorResult[0].response.Response.Status.SeverityCode + \" \" + \"SeverityNumber:\" + errorResult[0].response.Response.Status.SeverityNumber);\r\n }); \r\n } \r\n\r\n var isAmountValid = function () {\r\n return angular.element(\"#amount\").hasClass(\"ng-invalid\");\r\n }\r\n\r\n function init() {\r\n scope.form.requestedAmount = 0;\r\n \r\n scope.$parent.$watch(\"selectedCard\", function (selectedCardNew, selectedCardOld) {\r\n if (selectedCardNew.Id !== selectedCardOld.Id) {\r\n loadData(selectedCardNew.Id, true);\r\n }\r\n\r\n //console.log(\"selectedCard.CardIndex:\" + selectedCardNew.id);\r\n });\r\n\r\n scope.$parent.$watch(\"stage\", function (stageNew, stageOld) { \r\n \r\n if (stageNew !== stageOld && stageNew === 1) {\r\n scope.isShowMainContent = true;\r\n\r\n loadData(null, false);\r\n } else if (stageNew === 1) {\r\n scope.isShowMainContent = true;\r\n\r\n loadData(null, true);\r\n }\r\n });\r\n\r\n scope.$parent.$watch(\"selectedBankAccountIndex\", function (bankAccountIndexNew, bankAccountIndexOld) {\r\n if (bankAccountIndexNew !== bankAccountIndexOld) {\r\n scope.isShowMainContent = true;\r\n\r\n loadData(null, true);\r\n }\r\n });\r\n \r\n scope.goToMyAccount = function () {\r\n lobbyUiService.go('dw.account-home');\r\n }\r\n }\r\n\r\n init(); \r\n \r\n }\r\n };\r\n };\r\n})(window, window.angular);\n(function (window,angular) {\r\n \"use strict\";\r\n\r\n angular.module(\"Cal4U\").directive(\"debitSpreadSubmitData\", debitSpreadSubmitData);\r\n\r\n debitSpreadSubmitData.$inject = ['$dialogService', 'lobbyUiService', 'connection', 'appData'];\r\n\r\n function debitSpreadSubmitData($dialogService, lobbyUiService, connection, appData) {\r\n return {\r\n restrict: \"E\",\r\n replace: true,\r\n templateUrl: \"app/account/templates/debit-spread/debitSpreadSubmitData.html\",\r\n link: function (scope) {\r\n scope.form = {};\r\n scope.appData = appData;\r\n scope.form.stage = scope.$parent.stage;\r\n var initData = null;\r\n var isApproveFired = false;\r\n function loadData(data) {\r\n if (!data) return;\r\n\r\n initData = data;\r\n scope.form.payments = [];\r\n scope.form.stage = scope.$parent.stage;\r\n scope.form.cardLast4Digits = data.CardLast4Digits;\r\n scope.form.requestedAmount = data.RequestedAmount.MajorUnits\r\n scope.form.checkedDebitMethod = data.isNext ? \"קרוב\" : \"אחרון\";\r\n\r\n for (var i = data.MinNumOfPayments, length = data.MaxNumOfPayments ; i <= length; i++) {\r\n scope.form.payments.push(i);\r\n }\r\n\r\n scope.form.selectedPayment = 3; //!scope.$parent.members.initStage2Data.selectedPayment ? (data.MaxNumOfPayments - 1) : scope.$parent.members.initStage2Data.selectedPayment;\r\n lobbyUiService.loader.hide();\r\n scope.appData.showSpinner = false;\r\n }\r\n\r\n scope.debitSpreadSimulateSpreadRequest = function (maxNumOfPayments) {\r\n var maxNumOfPayments = !!maxNumOfPayments ? maxNumOfPayments : scope.form.selectedPayment;\r\n\r\n var request = {\r\n \"cardId\": scope.$parent.selectedCard.Id,\r\n \"numberOfPayments\": maxNumOfPayments\r\n }; \r\n \r\n lobbyUiService.loader.show();\r\n scope.appData.showSpinner = true;\r\n\r\n connection.debitSpreadSimulateSpreadRequest(request).then(function (data) {\r\n lobbyUiService.loader.hide();\r\n scope.appData.showSpinner = false;\r\n if (data.Response.Status.Succeeded) {\r\n scope.form.monthlyPaymentAmount = data.MonthlyPaymentAmount.MajorUnits;\r\n scope.form.annualNominalInterest = data.AnnualNominalInterest;\r\n scope.form.annualEffectiveInterest = data.AnnualEffectiveInterest;\r\n\r\n //scope.form.ReturnSum = data.Comments[0];\r\n //scope.form.TheInterestRate = data.Comments[1];\r\n scope.form.TheAnnualNominalInterestRate = data.Comments[2];\r\n scope.form.TheAnnualEffectiveNominalInterestRate = data.Comments[3];\r\n\r\n scope.form.comments = data.Comments.slice(4, data.Comments.length);\r\n scope.form.approvalDeploymentLink = data.CommentsEntity.ApprovalDeploymentLink;\r\n scope.form.approvalDeploymentText = data.CommentsEntity.ApprovalDeploymentText;\r\n //Deleted With Anna S. - #103814\r\n //scope.$parent.members.isClearSpreadRequest = true;\r\n scope.$parent.goToStage3(data);\r\n \r\n }\r\n\r\n //console.log(\"debitSpreadSimulateSpreadRequest: \" + JSON.stringify(data));\r\n }, function (errorResult) {\r\n //getCardEligiblityStatusShowErrorMessage(errorResult[0].response.Response.Status);\r\n var genericErrorMessage = 'לא ניתן להשלים כרגע את הפעולה. אנא נסה שנית במועד מאוחר יותר.';\r\n\r\n scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n\r\n var loadDebitSpreadSimulateSpreadRequestCallBack = function () {\r\n scope.debitSpreadSimulateSpreadRequest(maxNumOfPayments);\r\n }\r\n\r\n $dialogService.showGenericPopup({ scope: scope, text: genericErrorMessage, actionText: 'נסה שנית', cancelText: 'סגור', cssClass: \"debit-spread-popup\", actionCallback: loadDebitSpreadSimulateSpreadRequestCallBack, cancelCallback: scope.goToLobby });\r\n });\r\n }\r\n\r\n scope.goToStage3 = function () {\r\n lobbyUiService.loader.show();\r\n scope.appData.showSpinner = true;\r\n scope.debitSpreadSimulateSpreadRequest(scope.form.selectedPayment);\r\n }\r\n\r\n scope.goToInfo = function () {\r\n scope.$parent.members.initStage2Data.selectedPayment = scope.form.selectedPayment;\r\n scope.$parent.goToInfo();\r\n };\r\n\r\n scope.$on(\"initStage2\", function (event, response) {\r\n\r\n loadData(response.data);\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n \"use strict\";\r\n\r\n angular.module(\"Cal4U\").directive(\"debitSpreadSubmitDisclosure\", debitSpreadSubmitDisclosure);\r\n\r\n debitSpreadSubmitDisclosure.$inject = ['$dialogService', 'lobbyUiService', 'connection', 'appData'];\r\n\r\n function debitSpreadSubmitDisclosure($dialogService, lobbyUiService, connection, appData) {\r\n return {\r\n restrict: \"E\",\r\n replace: true,\r\n templateUrl: \"app/account/templates/debit-spread/debitSpreadSubmitDisclosure.html\",\r\n link: function (scope) {\r\n scope.form = {};\r\n scope.appData = appData;\r\n scope.form.stage = scope.$parent.stage;\r\n var initData = null;\r\n var isApproveFired = false;\r\n function loadData(data) {\r\n if (!data) {\r\n scope.form.stage = -1;\r\n return;\r\n } \r\n\r\n initData = data;\r\n scope.form.stage = scope.$parent.stage;\r\n scope.form.monthlyPaymentAmount = data.MonthlyPaymentAmount.MajorUnits;\r\n scope.form.annualNominalInterest = data.AnnualNominalInterest;\r\n scope.form.annualAdaptedInterest = data.AnnualAdaptedInterest;\r\n scope.form.actualInterestRate = data.ActualInterestRate;\r\n scope.form.arrearInterest = data.ArrearInterest;\r\n scope.form.showComments = false;\r\n scope.form.ReturnSum = data.Comments[0];\r\n scope.form.TheInterestRate = data.Comments[1];\r\n scope.form.TheAnnualNominalInterestRate = data.Comments[2];\r\n scope.form.TheAnnualEffectiveNominalInterestRate = data.Comments[3];\r\n\r\n scope.form.comments = data.Comments;\r\n scope.form.approvalDeploymentLink = data.CommentsEntity.ApprovalDeploymentLink;\r\n scope.form.approvalDeploymentText = data.CommentsEntity.ApprovalDeploymentText;\r\n scope.form.storedPaymentSpreadSimulationKey = data.StoredPaymentSpreadSimulationKey;\r\n lobbyUiService.loader.hide();\r\n scope.form.coronaComment = data.CoronaComment;\r\n scope.appData.showSpinner = false;\r\n }\r\n\r\n scope.goToStage4 = function () {\r\n isApproveFired = true;\r\n //scope.form.stage = 3;\r\n var cardId = scope.$parent.selectedCard.Id;\r\n lobbyUiService.loader.show();\r\n scope.appData.showSpinner = true;\r\n connection.debitSpreadApproveSpreadRequest(cardId).then(function (data) {\r\n lobbyUiService.loader.hide();\r\n scope.appData.showSpinner = false;\r\n if (data.Response.Status.Succeeded) {\r\n scope.$parent.members.isClearSpreadRequest = false;\r\n\r\n scope.form.isVisible = false;\r\n scope.$parent.goToStage4(data);\r\n } else {\r\n scope.$parent.showPopup(\"לא ניתן להשלים כרגע את הפעולה. אנא נסה שנית במועד מאוחר יותר.\");\r\n }\r\n }, function () {\r\n lobbyUiService.loader.hide();\r\n scope.appData.showSpinner = false;\r\n scope.$parent.showPopup(\"לא ניתן להשלים כרגע את הפעולה. אנא נסה שנית במועד מאוחר יותר.\");\r\n });\r\n\r\n scope.goToInfo = function () {\r\n scope.$parent.members.initStage2Data.selectedPayment = scope.form.selectedPayment;\r\n scope.$parent.goToInfo();\r\n };\r\n \r\n }\r\n\r\n scope.$on(\"initStage3\", function (event, response) {\r\n\r\n loadData(response.data);\r\n });\r\n scope.toggleShowComments = function () {\r\n scope.form.showComments = !scope.form.showComments;\r\n if (scope.form.showComments) {\r\n event.srcElement.innerText = \"פחות פרטים -\";\r\n }\r\n else {\r\n event.srcElement.innerText = \"עוד פרטים +\";\r\n }\r\n }\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n \"use strict\";\r\n\r\n \r\n\r\n angular.module(\"Cal4U\").directive(\"debitSpreadSubmitRequest\", debitSpreadSubmitRequest);\r\n\r\n debitSpreadSubmitRequest.$inject = ['lobbyUiService', 'connection'];\r\n var s = null;\r\n function debitSpreadSubmitRequest(lobbyUiService, connection) {\r\n return {\r\n restrict: \"E\",\r\n replace: true,\r\n templateUrl: \"app/account/templates/debit-spread/debitSpreadSubmitRequest.html\",\r\n link: function (scope) {\r\n scope.form = {};\r\n \r\n //scope.form.isVisible = false;\r\n scope.form.stage = scope.$parent.stage;\r\n\r\n function loadData(data) { \r\n scope.form.stage = scope.$parent.stage;\r\n\r\n scope.form.approvalId = data.ApprovalId;\r\n scope.form.cardLast4Digits = data.CardLast4Digits;\r\n scope.form.requestedAmount = data.RequestedAmount.MajorUnits;\r\n scope.form.monthlyPaymentAmount = data.MonthlyPaymentAmount.MajorUnits;\r\n scope.form.numberOfPayments = data.NumberOfPayments;\r\n scope.form.comments = data.Comments;\r\n }\r\n \r\n scope.$on(\"initStage4\", function (event, response) {\r\n \r\n loadData(response.data);\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, anjular) {\r\n 'use strict';\r\n\r\n angular.module('Cal4U').controller('margaritaController', margaritaController);\r\n\r\n margaritaController.$inject = ['$scope', '$timeout', '$ionicSlideBoxDelegate', 'lobbyUiService', 'appData', 'connection', '$location'];\r\n \r\n function margaritaController($scope, $timeout, $ionicScrollDelegate, lobbyUiService, appData, connection, $location) {\r\n $scope.pageTitle = \"חלוקת עסקה לתשלומי קרדיט\";\r\n $scope.appData = appData;\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n\r\n $scope.getActivePage = function (page) {\r\n if ($scope.steps == null || $scope.steps == undefined) {\r\n $scope.steps = [{ caption: 'בוחרים תשלומים', active: false }, { caption: 'פרטי העסקה', active: false }, { caption: 'סיום', active: false }];;\r\n }\r\n else {\r\n for (var i = 0; i < $scope.steps.length; i++) {\r\n $scope.steps[i].active = false;\r\n }\r\n }\r\n $scope.steps[page].active = true;\r\n }\r\n\r\n $scope.init = function () {\r\n \r\n var confirmationId = $location.path().substring($location.path().lastIndexOf('/') + 1);\r\n if (confirmationId != \"\") {\r\n localStorage.setItem('confirmationId', confirmationId);\r\n }\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.margarita', type: 2 }, { location: 'replace' });\r\n return;\r\n }\r\n\r\n $scope.stage = 0;\r\n $scope.currentStage = 0;\r\n\r\n $scope.goToLobby = function () {\r\n ga('send', 'event', { eventCategory: 'אתר הפעולות', eventAction: 'פריסת עסקה', eventLabel: 'יציאה מהתהליך' });\r\n\r\n lobbyUiService.go('dw.lobby');\r\n };\r\n\r\n $scope.appData.backOverrideFN = function () {\r\n if ($scope.currentStage == 1 || $scope.currentStage == 3) {\r\n $scope.goToLobby();\r\n }\r\n else {\r\n var goToStage = $scope.currentStage - 1;\r\n $scope.stage = goToStage;\r\n $scope.currentStage = goToStage;\r\n $scope.getActivePage(goToStage - 1);\r\n }\r\n }\r\n\r\n //$timeout(function () {\r\n // $ionicScrollDelegate.$getByHandle('expressScroll').scrollTop();\r\n //}, 0);\r\n\r\n $scope.goToStage1();\r\n }\r\n\r\n $scope.goToStage1 = function () {\r\n $scope.stage = 1;\r\n $scope.currentStage = 1;\r\n $scope.getActivePage(0);\r\n }\r\n\r\n $scope.goToStage2 = function (data) {\r\n $scope.stage = 2;\r\n $scope.currentStage = 2;\r\n $scope.getActivePage(1);\r\n $scope.cardDetails = data.cardDetails;\r\n $scope.details = {};\r\n $scope.details.numOfPaymentsSelection = data.numOfPaymentsSelection;\r\n $scope.details.transAmountInShekels = data.transAmountInShekels;\r\n $scope.details.MaxNumOfPayments = data.maxNumOfPayments;\r\n $scope.details.MinNumOfPayments = data.minNumOfPayments;\r\n }\r\n\r\n $scope.goToStage3 = function (simulation) {\r\n $scope.stage = 3;\r\n $scope.currentStage = 3;\r\n $scope.getActivePage(2);\r\n $scope.simulation = simulation;\r\n\r\n };\r\n\r\n $scope.formatNumber = function (number) {\r\n var numStr = number.toString();\r\n var splitted = numStr.split('.');\r\n\r\n var padded;\r\n if (splitted.length == 1) {\r\n padded = numStr + \".00\"\r\n }\r\n else if (splitted.length == 2 && splitted[1].length == 1) {\r\n padded = numStr + '0';\r\n }\r\n else {\r\n padded = numStr;\r\n }\r\n\r\n var formatted = padded.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return formatted;\r\n }\r\n\r\n\r\n $scope.init();\r\n };\r\n})(window, window.anjular);\n(function (window, angular) {\r\n \"use strict\";\r\n\r\n angular.module(\"Cal4U\").directive(\"margaritaPayments\", margaritaPayments);\r\n\r\n margaritaPayments.$inject = ['errorService', 'connection', 'appData', 'lobbyUiService', '$q', '$location', 'googleAnalyticsService'];\r\n\r\n function margaritaPayments(errorService, connection, appData, lobbyUiService, $q, $location, googleAnalyticsService) {\r\n return {\r\n restrict: \"E\",\r\n replace: true,\r\n scope: true,\r\n templateUrl: \"app/account/templates/margaritaPayments.html\",\r\n link: function (scope) {\r\n scope.appData = appData;\r\n scope.transactionTypes = {\r\n Regular: 5,\r\n CashWidrawal: 7\r\n };\r\n\r\n function init() {\r\n lobbyUiService.loader.show();\r\n scope.appData.showSpinner = true;\r\n var confirmationId = localStorage.getItem('confirmationId');\r\n getTransactionDetails(confirmationId).then(function () {\r\n scope.paymentsOptions = [];\r\n for (var i = scope.paymentsDetails.minPayment; i <= scope.paymentsDetails.maxPayment; i++) {\r\n scope.paymentsOptions.push(i);\r\n //scope.numOfPayments = scope.paymentsOptions[scope.paymentsOptions.length - 1] + \" תשלומי קרדיט\";\r\n scope.numOfPayments = scope.paymentsOptions[0] + \" תשלומים\";\r\n }\r\n\r\n //googleAnalyticsService.trackPage('/vp/margarita/step1/no-of-payments');\r\n ga('set', 'page', '/vp/online_actions/credit-payment-spread/');\r\n ga('send', 'pageview');\r\n\r\n }, function () {\r\n \r\n });\r\n }\r\n\r\n function getTransactionDetails(ConfirmationId) {\r\n // FOR DEV:\r\n //scope.paymentsDetails = {\r\n // originalTransAmount: \"100\",\r\n // currencyDesc: \"$\",\r\n // currencyCode: \"376\",\r\n // transAmountInShekels: \"350\",\r\n // merchantName: \"Best Shop\",\r\n // transDate: \"09/03/2019\",\r\n // minPayment: 3,\r\n // maxPayment: 6,\r\n // cardNum: \"0000000004490\",\r\n // cardNumType: \"33\",\r\n // transactionType: 5\r\n //}\r\n //scope.cardDetails = {\r\n // fullName: appData.CustomerInfo.FirstName + \" \" + appData.CustomerInfo.LastName,\r\n // last4digits: \"2143\",\r\n // cardType: \"ויזה כלשהו\",\r\n // cardUID: \"1172143511201858\"\r\n //};\r\n //scope.paymentsOptions = [];\r\n //for (var i = scope.paymentsDetails.minPayment; i <= scope.paymentsDetails.maxPayment; i++) {\r\n // scope.paymentsOptions.push(i);\r\n // scope.numOfPayments = scope.paymentsOptions[scope.paymentsOptions.length - 1] + \" תשלומי קרדיט\";\r\n //}\r\n ///////////////////////////////////////////////////////\r\n\r\n var req = { ConfirmationId: ConfirmationId };\r\n var deferred = $q.defer();\r\n connection.getPaymentsDeatails(req).then(function (data) {\r\n if (data.Response.Status.Succeeded === true) {\r\n scope.paymentsDetails = {\r\n originalTransAmount: data.OriginalTransAmount,\r\n currencyDesc: data.CurrencyDesc,\r\n currencyCode: data.TransCode,\r\n transAmountInShekels: data.TransAmountInShekels,\r\n merchantName: data.MerchantName,\r\n transDate: data.TransDate,\r\n minPayment: data.MinPayment,\r\n maxPayment: data.MaxPayment,\r\n cardNum: data.CardNum,\r\n cardNumType: data.CardNumType,\r\n transactionType: data.TrnType\r\n }\r\n var cardUniqueID = \"\";\r\n scope.appData.BankAccounts.forEach(account => account.Cards.forEach(\r\n card => cardUniqueID = card.LastFourDigits == data.CardLast4Digits ? card.Id : cardUniqueID));\r\n\r\n scope.cardDetails = {\r\n fullName: appData.CustomerInfo.FirstName + \" \" + appData.CustomerInfo.LastName,\r\n last4digits: data.CardLast4Digits,\r\n cardType: data.CardType,\r\n cardUID: cardUniqueID\r\n };\r\n deferred.resolve();\r\n }\r\n scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n //FOR DEV:\r\n //scope.appData.showSpinner = false;\r\n //lobbyUiService.loader.hide();\r\n //var deferred = $q.defer();\r\n //deferred.resolve();\r\n\r\n scope.isError = true;\r\n handleGetTransactionDetailsError(error[0].response.Response.Status, error);\r\n lobbyUiService.loader.hide();\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n scope.onContinueBtnClick = function () {\r\n var data = {};\r\n data.numOfPaymentsSelection = Number(scope.numOfPayments.substring(0, 2).trim());\r\n data.transAmountInShekels = scope.paymentsDetails.transAmountInShekels;\r\n data.cardDetails = scope.cardDetails;\r\n data.maxNumOfPayments = scope.paymentsDetails.maxPayment;\r\n data.minNumOfPayments = scope.paymentsDetails.minPayment;\r\n\r\n ga('send', 'event', { eventCategory: 'אתר הפעולות', eventAction: 'פריסת עסקה', eventLabel: 'בחירת כמות תשלומים' });\r\n scope.goToStage2(data);\r\n }\r\n\r\n scope.onPaymentSelect = function (selection) {\r\n scope.numOfPayments = selection;\r\n }\r\n\r\n function handleGetTransactionDetailsError(status, errorResponse) {\r\n var severityNum = Number.parseInt(status.SeverityNumber);\r\n var severityOptionsMsgsFromDB = [2, 3, 4, 6, 7];\r\n\r\n if (status.SeverityCode.toLowerCase() == 'w' && severityNum == 5) { // the time of payment spread for this transaction is expired\r\n errorResponse[0].response.Response.DialogBox.Content = String.format(errorResponse[0].response.Response.DialogBox.Content, $location.$$absUrl.substring(0, $location.$$absUrl.indexOf(\"#!\")));\r\n\r\n //googleAnalyticsService.trackPage('/vp/margarita/deal-timed-out');\r\n ga('send', 'event', { eventCategory: 'אתר הפעולות', eventAction: 'פריסת עסקה', eventLabel: 'לא ניתן להמשיך' });\r\n }\r\n else if ((status.SeverityCode.toLowerCase() == 'w' && !severityOptionsMsgsFromDB.includes(severityNum)) || status.SeverityCode.toLowerCase() != 'w') {\r\n errorResponse[0].response.Response.Status.SeverityCode = \"W\";\r\n errorResponse[0].response.Response.Status.SeverityNumber = \"000\";\r\n errorResponse[0].response.Response.DialogBox.Content = \"משהו השתבש, אבל לא צריך לדאוג - אנחנו מתקנים את התקלה. ממליצים לך לנסות שוב מאוחר יותר\";\r\n\r\n googleAnalyticsService.trackPage('/vp/margarita/technical-error');\r\n }\r\n\r\n errorService.handleError(errorResponse, scope.goToLobby);\r\n }\r\n\r\n\r\n init();\r\n\r\n \r\n }\r\n }\r\n }\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n \"use strict\";\r\n\r\n angular.module(\"Cal4U\").directive(\"margaritaDetails\", margaritaDetails);\r\n\r\n margaritaDetails.$inject = ['errorService', 'connection', 'appData', 'lobbyUiService', '$q', 'googleAnalyticsService', '$timeout', '$dialogService'];\r\n\r\n function margaritaDetails(errorService, connection, appData, lobbyUiService, $q, googleAnalyticsService, $timeout, $dialogService) {\r\n return {\r\n restrict: \"E\",\r\n replace: true,\r\n scope: true,\r\n templateUrl: \"app/account/templates/margaritaDetails.html\",\r\n link: function (scope) {\r\n scope.appData = appData;\r\n\r\n function init() {\r\n lobbyUiService.loader.show();\r\n scope.appData.showSpinner = true;\r\n\r\n scope.details.showComments = false;\r\n var req = {\r\n CardId: scope.cardDetails.cardUID,\r\n NumberOfPayments: scope.details.numOfPaymentsSelection,\r\n MaxNumOfPayments: scope.details.MaxNumOfPayments,\r\n MinNumOfPayments: scope.details.MinNumOfPayments,\r\n RequestedAmount: scope.details.transAmountInShekels\r\n };\r\n scope.simulateCreditPaymentSpread(req).then(function (data) {\r\n hidePageUntilElementRendered(\"#fair-credit-component\");\r\n\r\n //googleAnalyticsService.trackPage('/vp/margarita/step2/detail-review');\r\n ga('set', 'page', '/vp/online_actions/credit-payment-spread/payment-spread-details/');\r\n ga('send', 'pageview');\r\n\r\n }, function () {\r\n\r\n });\r\n }\r\n\r\n scope.simulateCreditPaymentSpread = function (req) {\r\n var deferred = $q.defer();\r\n connection.SimulateCreditPaymentsRequest(req).then(function (data) {\r\n if (data.Response.Status.Succeeded) {\r\n scope.simulation = {\r\n monthlyPaymentAmount: scope.formatNumber(data.MonthlyPaymentAmount.MajorUnits),\r\n annualAdaptedInterest: data.AnnualAdaptedInterest,\r\n totalArbitrageIntrestAmount: data.TotalArbitrageIntrestAmount,\r\n actualInterestRate: data.ActualInterestRate,\r\n numberOfPayments: data.NumberOfPayments,\r\n requestedAmount: scope.formatNumber(data.RequestedAmount.MajorUnits),\r\n annualNominalInterest: data.AnnualNominalInterest,\r\n arrearInterest: data.ArrearInterest,\r\n storedPaymentSpreadSimulationKey: data.StoredPaymentSpreadSimulationKey,\r\n //comments: data.Comments\r\n };\r\n deferred.resolve();\r\n }\r\n }, function (error) {\r\n\r\n scope.isError = true;\r\n handleSimulateCreditPaymentSpreadError(error, req);\r\n scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n deferred.reject();\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function handleSimulateCreditPaymentSpreadError(errorResponse, request) {\r\n if (errorResponse[0].response.Response.Status.SeverityCode.toLowerCase() == 'w') {\r\n var onTryAgain = function () {\r\n scope.simulateCreditPaymentSpread(request);\r\n }\r\n var genericErrorMessage = \"לא ניתן להשלים כרגע את הפעולה. אנא נסה שנית במועד מאוחר יותר.\";\r\n $dialogService.showGenericPopup({ scope: scope, text: genericErrorMessage, actionText: 'נסה שנית', cancelText: 'סגור', cssClass: \"error-popup\", actionCallback: onTryAgain, cancelCallback: scope.goToLobby });\r\n }\r\n else {\r\n errorResponse[0].response.Response.Status.SeverityCode = 'E';\r\n errorResponse[0].response.Response.Status.SeverityNumber = '001';\r\n errorResponse[0].response.Response.DialogBox.Content = \"משהו השתבש, אבל לא צריך לדאוג - אנחנו מתקנים את התקלה. ממליצים לך לנסות שוב מאוחר יותר\";\r\n errorService.handleError(errorResponse, scope.goToLobby);\r\n }\r\n }\r\n\r\n\r\n scope.fairCreditAgreedBtnClick = function () {\r\n $timeout(function () {\r\n }, 0);\r\n scope.goToStage3(scope.simulation);\r\n }\r\n\r\n scope.toggleShowComments = function () {\r\n scope.details.showComments = !scope.details.showComments;\r\n if (scope.details.showComments) {\r\n angular.element(\"#toggle-comments-btn\")[0].innerText = \"פחות פרטים -\";\r\n }\r\n else {\r\n angular.element(\"#toggle-comments-btn\")[0].innerText = \"עוד פרטים +\";\r\n }\r\n }\r\n\r\n var hidePageUntilElementRendered = function (selector) {\r\n var element = angular.element(selector);\r\n if (!element.length) {\r\n setTimeout(hidePageUntilElementRendered, 1000, selector);\r\n }\r\n else {\r\n scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }\r\n }\r\n\r\n init();\r\n \r\n }\r\n }\r\n }\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n \"use strict\";\r\n\r\n angular.module(\"Cal4U\").directive(\"margaritaConfirmation\", margaritaConfirmation);\r\n\r\n margaritaConfirmation.$inject = ['connection', 'lobbyUiService', '$q', 'googleAnalyticsService'];\r\n\r\n function margaritaConfirmation(connection, lobbyUiService, $q, googleAnalyticsService) {\r\n return {\r\n restrict: \"E\",\r\n replace: true,\r\n scope: true,\r\n templateUrl: \"app/account/templates/margaritaConfirmation.html\",\r\n link: function (scope) {\r\n\r\n scope.appData.showSpinner = true;\r\n lobbyUiService.loader.show();\r\n\r\n function UpdateTransactionPayments() {\r\n var request = {\r\n ConfirmationId: localStorage.getItem('confirmationId'),\r\n NumOfPayments: scope.simulation.numberOfPayments,\r\n TransactionAmount: scope.simulation.requestedAmount,\r\n NominalInterest: scope.simulation.annualNominalInterest.toString()\r\n };\r\n var deferred = $q.defer();\r\n connection.UpdateTransactionPayments(request).then(function (data) {\r\n if (data.Response.Status.Succeeded === true) {\r\n //googleAnalyticsService.trackPage('/vp/margarita/step3/process_complete');\r\n ga('set', 'page', '/vp/online_actions/credit-payment-spread/approve-spread/');\r\n ga('send', 'pageview');\r\n\r\n deferred.resolve();\r\n }\r\n else {\r\n handleUpdateTransactionPaymentsError(data[0].response.Response.Status);\r\n deferred.reject();\r\n }\r\n }, function (error) {\r\n //COMMENT OUT FOR DEV:\r\n handleUpdateTransactionPaymentsError(error[0].response.Response.Status);\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function handleUpdateTransactionPaymentsError(status) {\r\n scope.errorMessage = \"\";\r\n if (status.SeverityCode.toLowerCase() == 'w') {\r\n scope.errorMessage = \"לצערנו, לא נוכל לפרוס לך את העסקה\";\r\n }\r\n else {\r\n scope.errorMessage = \"לא ניתן להשלים כרגע את הפעולה. ממליצים לך לנסות שוב מאוחר יותר\";\r\n }\r\n }\r\n\r\n scope.creditSolutionsAnalytics = function () {\r\n //var options = {\r\n // page: 'מרגריטה',\r\n // action: 'מסך תודה',\r\n // eventName: 'לפתרונות אשראי נוספים'\r\n //};\r\n //googleAnalyticsService.insertEvent(options);\r\n ga('send', 'event', { eventCategory: 'אתר הפעולות', eventAction: 'פריסת עסקה', eventLabel : 'לפתרונות אשראי נוספים' });\r\n }\r\n\r\n UpdateTransactionPayments().then(function () {\r\n scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n }, function () {\r\n scope.appData.showSpinner = false;\r\n lobbyUiService.loader.hide();\r\n });\r\n\r\n }\r\n }\r\n }\r\n}) (window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat', []);\r\n})(window, window.angular);\n(function (window, angular) {\r\n\t'use strict';\r\n\tangular.module('calshtifomat').config(carwashRoute);\r\n\r\n\tcarwashRoute.$inject = ['$stateProvider'];\r\n\r\n\tfunction carwashRoute($stateProvider) {\r\n\t $stateProvider\r\n .state('dw.carwash', {\r\n url: \"/wallet/carwash\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/carwash/templates/welcome.html\",\r\n controller: \"stWelcomeCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.carwash-home', {\r\n url: \"/wallet/carwash/home/:cardId\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/carwash/templates/home.html\",\r\n controller: \"stHomeCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.carwash-subscribe', {\r\n url: \"/wallet/carwash/subscribe/\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/carwash/templates/subscribe.html\",\r\n controller: \"stSubscribeCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.carwash-unsubscribe', {\r\n url: \"/wallet/carwash/unsubscribe/\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/carwash/templates/unsubscribe.html\",\r\n controller: \"stUnsubscribeCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.carwash-exist', {\r\n url: \"/wallet/carwash/exist/\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/carwash/templates/exist.html\",\r\n controller: \"stExistCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.carwash-approve', {\r\n url: \"/wallet/carwash/approve/\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/carwash/templates/approve.html\",\r\n controller: \"stApproveCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.carwash-terms', {\r\n url: \"/wallet/carwash/shtifomatTerms/\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/carwash/templates/shtifomatTerms.html\",\r\n controller: \"stTerms\"\r\n }\r\n }\r\n });\r\n\t}\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .controller('stApproveCtrl', stApproveCtrl);\r\n\r\n stApproveCtrl.$inject = [\r\n '$scope', 'stMetaDataService', 'stSubscribService', 'errorService', 'stCacheService', 'lobbyUiService', 'stUtilsService', 'appData', 'googleAnalyticsService'\r\n ];\r\n\r\n function stApproveCtrl($scope, stMetaDataService, stSubscribService, errorService, stCacheService, lobbyUiService, stUtilsService, appData, googleAnalyticsService) {\r\n\r\n $scope.account = appData.BankAccounts;\r\n\r\n $scope.appData = appData;\r\n\r\n\r\n $scope.init = function () {\r\n\r\n $scope.memberData = stCacheService.get('subscribeData');\r\n\r\n if (!lobbyUiService.connection.isLoggedIn() || !$scope.memberData) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.carwash\" });\r\n return;\r\n }\r\n\r\n $scope.metaData = stMetaDataService.metaData();\r\n\r\n var obj = stUtilsService.getTextById($scope.metaData.FixTexts, 2);\r\n\r\n $scope.content = {\r\n title: obj.TextContent,\r\n ok: 'תיקון',\r\n cancel: 'אישור'\r\n };\r\n\r\n $scope.appData.inProcess = true;\r\n }\r\n\r\n $scope.continue = function () {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n googleAnalyticsService.insertEvent({ page: 'shtifomat', id: 4 });\r\n\r\n var subscribData =\r\n {\r\n carNumber: $scope.memberData.BelongMemNum.toString(),\r\n depDesc: $scope.memberData.DepNum,\r\n agreement: true,\r\n cardId: $scope.memberData.CardID\r\n };\r\n\r\n stSubscribService.clubSubscribe(subscribData).then(function () {\r\n lobbyUiService.go('dw.carwash-subscribe');\r\n\r\n }, function (error) {\r\n errorService.handleError(error);\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n\r\n //console.log($scope.subscribData);\r\n };\r\n\r\n $scope.update = function () {\r\n googleAnalyticsService.insertEvent({ page: 'shtifomat', id: 3 });\r\n\r\n lobbyUiService.go('dw.carwash-home', { cardId: $scope.memberData.CardID });\r\n };\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .controller('stHomeCtrl', stHomeCtrl);\r\n\r\n stHomeCtrl.$inject = [\r\n '$scope', 'stUtilsService', 'stSubscribService', 'stMetaDataService', 'stBankAccountService', 'errorService', '$timeout', '$ionicSlideBoxDelegate',\r\n 'lobbyUiService', '$ionicPopup', 'stCacheService', 'appData', 'googleAnalyticsService'\r\n ];\r\n\r\n function stHomeCtrl($scope, stUtilsService, stSubscribService, stMetaDataService, stBankAccountService, errorService, $timeout, $ionicSlideBoxDelegate, lobbyUiService,\r\n $ionicPopup, stCacheService, appData, googleAnalyticsService) {\r\n\r\n $scope.slideBoxReady = false;\r\n\r\n $scope.appData = appData;\r\n\r\n $scope.init = function () {\r\n\r\n $scope.bankAccounts = stCacheService.get('stBankAccounts');\r\n\r\n if (!lobbyUiService.connection.isLoggedIn() || !$scope.bankAccounts) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.carwash\" });\r\n return;\r\n }\r\n\r\n lobbyUiService.loader.show();\r\n\r\n $scope.metaData = stMetaDataService.metaData();\r\n\r\n $scope.cardSliderTitle = stUtilsService.getTextById($scope.metaData.FixTexts, 7).TextContent;\r\n\r\n $scope.carBoxText = stUtilsService.getTextById($scope.metaData.FixTexts, 8);\r\n\r\n $scope.carHelpInfo = stUtilsService.getTextById($scope.metaData.FixTexts, 13);\r\n\r\n $scope.carHelpInfo.title = 'סוג רכב';\r\n\r\n $scope.currentAccountCards = {};\r\n\r\n $scope.currentAccountCards.slides = [];\r\n\r\n $scope.currentCardIndex = 0;\r\n\r\n $scope.currentAccountIndex = 0;\r\n\r\n $scope.subscribData =\r\n {\r\n carNumber: '',\r\n depDesc: 0,\r\n agreement: false,\r\n cardID: 0\r\n };\r\n\r\n $scope.showSlider = true;\r\n\r\n $scope.checkAgreement = false;\r\n\r\n var memberData = stCacheService.get('subscribeData');\r\n\r\n if (memberData) {\r\n\r\n $scope.subscribData.carNumber = memberData.BelongMemNum.toString();\r\n $scope.subscribData.depDesc = memberData.DepNum;\r\n $scope.updateSelectedCard(memberData.CardID);\r\n }\r\n\r\n var cardIdFromRoute = lobbyUiService.getParams('cardId');\r\n\r\n if (cardIdFromRoute) {\r\n $scope.updateSelectedCard(cardIdFromRoute);\r\n\r\n stSubscribService.checkSubscribe().then(function (data) {\r\n if (data.CardArray && data.CardArray.length > 0) {\r\n $scope.subscribData.carNumber = data.CardArray[0].BelongMemNum.toString();\r\n $scope.subscribData.depDesc = data.CardArray[0].DepNum;\r\n }\r\n });\r\n\r\n } else if (!memberData) {\r\n $scope.updateAccountSlider(0);\r\n $scope.currentAccountCards.slides = $scope.bankAccounts[$scope.currentAccountIndex].Cards;\r\n $scope.updateCardSlider(0);\r\n\r\n }\r\n\r\n $scope.appData.inProcess = true;\r\n\r\n };\r\n\r\n $scope.updateSelectedCard = function (cardId) {\r\n\r\n $scope.subscribData.CardID = cardId;\r\n\r\n stBankAccountService.getCardById(cardId).then(function (indexes) {\r\n $scope.currentCardIndex = indexes.cardIndex;\r\n\r\n $scope.currentAccountIndex = indexes.accountIndex;\r\n\r\n $scope.updateAccountSlider(indexes.accountIndex).then(function () {\r\n $scope.currentAccountCards.slides = $scope.bankAccounts[indexes.accountIndex].Cards;\r\n\r\n $scope.updateCardSlider(indexes.cardIndex);\r\n });\r\n });\r\n }\r\n\r\n $scope.dataReady = function () {\r\n return $scope.metaData && $scope.bankAccounts && $scope.slideBoxReady;\r\n }\r\n\r\n $scope.showTerms = function () {\r\n\r\n var memData = {\r\n Last4Digits: $scope.bankAccounts[$scope.currentAccountIndex].Cards[$scope.currentCardIndex].LastFourDigits,\r\n BelongMemNum: $scope.subscribData.carNumber.toString(),\r\n DepDesc: $scope.subscribData.depDesc == 1 ? 'פרטי' : $scope.subscribData.depDesc == 2 ? 'מסחרי' : '',\r\n DepNum: $scope.subscribData.depDesc,\r\n CardID: $scope.bankAccounts[$scope.currentAccountIndex].Cards[$scope.currentCardIndex].Id\r\n }\r\n\r\n stCacheService.set('subscribeData', memData);\r\n\r\n lobbyUiService.go('dw.carwash-terms');\r\n }\r\n\r\n $scope.submitAgreement = function () {\r\n\r\n if ($scope.subscribData.agreement) {\r\n\r\n if ($scope.subscribData.depDesc == 0) {\r\n $scope.showPopup(\"יש להזין סוג רכב\");\r\n return;\r\n } else if ($scope.subscribData.carNumber == '') {\r\n $scope.showPopup(\"יש להזין מספר רכב\");\r\n return;\r\n } else if ($scope.subscribData.carNumber.length < 7) {\r\n $scope.showPopup(\"יש להזין מספר רכב בן 7-8 ספרות\");\r\n return;\r\n }\r\n\r\n var needToUnsubscribe = stCacheService.get('subscribed');\r\n\r\n lobbyUiService.loader.show();\r\n\r\n if (needToUnsubscribe) {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'shtifomat', id: 2 });\r\n\r\n stSubscribService.clubUnSubscribe($scope.subscribData.CardID).then(function () {\r\n $scope.checkExistSubscribtion();\r\n }, function (error) {\r\n errorService.handleError(error);\r\n });\r\n } else {\r\n $scope.checkExistSubscribtion();\r\n }\r\n\r\n } else {\r\n $scope.showPopup(\"יש לאשר את התקנון וקבלת הודעות SMS\");\r\n }\r\n }\r\n\r\n $scope.checkExistSubscribtion = function () {\r\n stSubscribService.checkSubscribeNumMem($scope.subscribData.carNumber.toString(), true).then(function (response) {\r\n var memData = {\r\n Last4Digits: $scope.bankAccounts[$scope.currentAccountIndex].Cards[$scope.currentCardIndex].LastFourDigits,\r\n BelongMemNum: $scope.subscribData.carNumber.toString(),\r\n DepDesc: $scope.subscribData.depDesc == 1 ? 'פרטי' : 'מסחרי',\r\n DepNum: $scope.subscribData.depDesc,\r\n CardID: $scope.bankAccounts[$scope.currentAccountIndex].Cards[$scope.currentCardIndex].Id\r\n }\r\n\r\n stCacheService.set('subscribeData', memData);\r\n\r\n if (response.Response.Status.SeverityNumber == \"0002\") {\r\n lobbyUiService.go('dw.carwash-exist');\r\n } else {\r\n lobbyUiService.go('dw.carwash-approve');\r\n }\r\n\r\n }, function (error) {\r\n errorService.handleError(error);\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n }\r\n\r\n $scope.showPopup = function (text) {\r\n\r\n lobbyUiService.popup.alert(text);\r\n }\r\n\r\n $scope.cardSlideChange = function (index) {\r\n $scope.currentCardIndex = index;\r\n }\r\n\r\n $scope.accountNext = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').next();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n }\r\n\r\n $scope.accountPrev = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').previous();\r\n\r\n }, 500).then(function () {\r\n });\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n }\r\n\r\n $scope.accountSlideChange = function (index) {\r\n\r\n $scope.showSlider = false;\r\n\r\n $scope.currentAccountIndex = index;\r\n\r\n $scope.currentAccountCards.slides = $scope.bankAccounts[index].Cards;\r\n\r\n $scope.updateCardSlider(0);\r\n }\r\n\r\n $scope.updateAccountSlider = function (index) {\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').update();\r\n }, 200).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').slide(index);\r\n $scope.showSlider = true;\r\n });\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n $scope.updateCardSlider = function (index) {\r\n var _promise = $timeout(function () {\r\n\r\n $ionicSlideBoxDelegate.$getByHandle('cardsHandler').update();\r\n\r\n }, 500).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('cardsHandler').slide(index);\r\n $scope.showSlider = true;\r\n }).finally(function () {\r\n $scope.slideBoxReady = true;\r\n lobbyUiService.loader.hide();\r\n });\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n $scope.to = function (index) {\r\n $ionicSlideBoxDelegate.$getByHandle('cardsHandler').slide(index);\r\n }\r\n\r\n $scope.$watch('subscribData.depDesc', function (newVal, oldVal) {\r\n\r\n if (newVal != oldVal) {\r\n googleAnalyticsService.insertEvent({ page: 'shtifomat', id: 1 });\r\n }\r\n });\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .controller('stExistCtrl', stExistCtrl);\r\n\r\n stExistCtrl.$inject = [\r\n '$scope', 'stMetaDataService', 'stSubscribService', 'errorService', 'lobbyUiService', 'stCacheService', 'stUtilsService', 'appData'\r\n ];\r\n\r\n function stExistCtrl($scope, stMetaDataService, stSubscribService, errorService, lobbyUiService, stCacheService, stUtilsService, appData) {\r\n\r\n $scope.account = appData.BankAccounts;\r\n\r\n $scope.appData = appData;\r\n\r\n $scope.init = function () {\r\n\r\n $scope.memberData = stCacheService.get('subscribeData');\r\n\r\n if (!lobbyUiService.connection.isLoggedIn() || !$scope.memberData) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.carwash\" });\r\n return;\r\n }\r\n\r\n $scope.metaData = stMetaDataService.metaData();\r\n\r\n var obj = stUtilsService.getTextById($scope.metaData.FixTexts, 6);\r\n\r\n $scope.content = {\r\n title: obj.TextContent,\r\n ok: 'תיקון',\r\n cancel: 'המשך'\r\n };\r\n\r\n $scope.appData.inProcess = true;\r\n }\r\n\r\n $scope.update = function () {\r\n lobbyUiService.go('dw.carwash-home', { cardId: $scope.memberData.CardID });\r\n };\r\n\r\n $scope.continue = function () {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n var subscribData =\r\n {\r\n carNumber: $scope.memberData.BelongMemNum.toString(),\r\n depDesc: $scope.memberData.DepNum,\r\n agreement: true,\r\n cardId: $scope.memberData.CardID\r\n };\r\n\r\n stSubscribService.clubSubscribe(subscribData).then(function () {\r\n lobbyUiService.go('dw.carwash-subscribe');\r\n }, function (error) {\r\n errorService.handleError(error);\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n };\r\n\r\n $scope.init();\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .controller('stSubscribeCtrl', stSubscribeCtrl);\r\n\r\n stSubscribeCtrl.$inject = [\r\n '$scope', 'stMetaDataService', 'stUtilsService', 'lobbyUiService', 'appData', 'googleAnalyticsService'\r\n ];\r\n\r\n function stSubscribeCtrl($scope, stMetaDataService, stUtilsService, lobbyUiService, appData, googleAnalyticsService) {\r\n\r\n $scope.account = appData.BankAccounts;\r\n\r\n $scope.appData = appData;\r\n\r\n $scope.init = function () {\r\n\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.carwash\" });\r\n return;\r\n }\r\n\r\n googleAnalyticsService.insertEvent({ page: 'shtifomat', id: 6 });\r\n\r\n $scope.metaData = stMetaDataService.metaData();\r\n\r\n var obj = stUtilsService.getTextById($scope.metaData.FixTexts, 4);\r\n\r\n $scope.content = obj;\r\n $scope.content.buttonText = \"סגור\";\r\n\r\n $scope.appData.inProcess = false;\r\n }\r\n\r\n $scope.close = function () {\r\n lobbyUiService.go('dw.wallet-home');\r\n };\r\n\r\n $scope.init();\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .controller('stTerms', [stTerms]);\r\n\r\n function stTerms() {\r\n //do nothing\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .controller('stUnsubscribeCtrl', stUnsubscribeCtrl);\r\n\r\n stUnsubscribeCtrl.$inject = [\r\n '$scope', 'stMetaDataService', 'stSubscribService', 'errorService', 'lobbyUiService', 'stUtilsService', 'appData', 'googleAnalyticsService'\r\n ];\r\n\r\n function stUnsubscribeCtrl($scope, stMetaDataService, stSubscribService, errorService, lobbyUiService, stUtilsService, appData, googleAnalyticsService) {\r\n\r\n $scope.account = appData.BankAccounts;\r\n\r\n $scope.appData = appData;\r\n\r\n $scope.init = function () {\r\n\r\n $scope.appData.inProcess = false;\r\n\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.carwash\" });\r\n return;\r\n }\r\n\r\n googleAnalyticsService.insertEvent({ page: 'shtifomat', id: 6 });\r\n\r\n $scope.metaData = stMetaDataService.metaData();\r\n\r\n var obj = stUtilsService.getTextById($scope.metaData.FixTexts, 3);\r\n\r\n $scope.content = obj;\r\n $scope.content.buttonText = \"סגור\";\r\n }\r\n\r\n $scope.close = function () {\r\n lobbyUiService.go('dw.wallet-home');\r\n };\r\n\r\n $scope.init();\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .controller('stWelcomeCtrl', stWelcomeCtrl);\r\n\r\n stWelcomeCtrl.$inject = [\r\n '$scope', 'stMetaDataService', 'stUtilsService', 'stSubscribService', 'errorService', 'stCacheService', 'stBankAccountService', 'lobbyUiService',\r\n 'appData', 'googleAnalyticsService', '$timeout'\r\n ];\r\n\r\n function stWelcomeCtrl($scope, stMetaDataService, stUtilsService, stSubscribService, errorService, stCacheService, stBankAccountService, lobbyUiService, appData, googleAnalyticsService, $timeout) {\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n $scope.appData = appData;\r\n\r\n $scope.appData.inProcess = false;\r\n\r\n $scope.members = {\r\n contentReady: false,\r\n stage: 0\r\n };\r\n\r\n $scope.init = function () {\r\n stMetaDataService.getMetaData(true).then(function (metaData) {\r\n $scope.metaData = metaData;\r\n $scope.initPage();\r\n });\r\n }\r\n\r\n $scope.initPage = function () {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n $scope.members.stage = 0;\r\n\r\n $scope.account = stBankAccountService.filteredBankAccounts(appData.BankAccounts);\r\n\r\n stCacheService.remove('subscribed');\r\n\r\n stCacheService.remove('subscribeData');\r\n\r\n\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.carwash\" });\r\n return;\r\n\r\n } else {\r\n\r\n if (!$scope.checkAccount()) {\r\n $scope.initNoCards();\r\n } else {\r\n\r\n stBankAccountService.setBankAccounts($scope.account);\r\n\r\n stSubscribService.checkSubscribe(true).then(function (response) {\r\n\r\n if (response.Response.Status.SeverityNumber == '0002') {\r\n stCacheService.set('subscribed', true);\r\n $scope.initConfirm();\r\n //lobbyUiService.go('dw.carwash-confirm');\r\n } else {\r\n\r\n $scope.content = stUtilsService.getTextById($scope.metaData.FixTexts, 1);\r\n\r\n $scope.content.buttonText = \"המשך\";\r\n }\r\n\r\n\r\n $scope.setPageReady();\r\n\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error);\r\n });\r\n };\r\n\r\n }\r\n }\r\n\r\n $scope.setPageReady = function () {\r\n $timeout(function () {\r\n $scope.members.contentReady = true;\r\n lobbyUiService.loader.hide();\r\n }, 500);\r\n };\r\n\r\n $scope.checkAccount = function () {\r\n return ($scope.account && $scope.account.length > 0);\r\n };\r\n\r\n $scope.close = function () {\r\n\r\n if (!$scope.checkAccount()) {\r\n lobbyUiService.go('dw.wallet-home');\r\n } else {\r\n lobbyUiService.go('dw.carwash-home');\r\n }\r\n }\r\n\r\n $scope.initNoCards = function () {\r\n\r\n $scope.members.stage = 2;\r\n\r\n var obj = stUtilsService.getTextById($scope.metaData.FixTexts, 11);\r\n\r\n $scope.contentNoCard = obj;\r\n\r\n $scope.contentNoCard.buttonText = \"סגור\";\r\n\r\n $scope.setPageReady();\r\n }\r\n\r\n $scope.initConfirm = function () {\r\n\r\n $scope.members.stage = 1;\r\n\r\n var obj = stUtilsService.getTextById($scope.metaData.FixTexts, 5);\r\n\r\n $scope.contentConfirm = {\r\n title: obj.TextContent,\r\n ok: 'עדכון',\r\n cancel: 'הסרה'\r\n };\r\n\r\n $scope.infoText = {\r\n text: 'מידע על תחנות שטיפה',\r\n link: $scope.metaData.ShtifomatSite\r\n }\r\n\r\n stSubscribService.checkSubscribe().then(function (response) {\r\n $scope.memberData = response.CardArray[0];\r\n\r\n $scope.memberData.BelongMemNum = stUtilsService.padZeros($scope.memberData.BelongMemNum, 7);\r\n\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n }\r\n\r\n $scope.update = function () {\r\n lobbyUiService.go('dw.carwash-home', { cardId: $scope.memberData.CardID });\r\n };\r\n\r\n $scope.remove = function () {\r\n lobbyUiService.loader.show();\r\n stSubscribService.clubUnSubscribe($scope.memberData.CardID).then(function () {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'shtifomat', id: 5 });\r\n\r\n lobbyUiService.go('dw.carwash-unsubscribe');\r\n\r\n }, function (error) {\r\n errorService.handleError(error);\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n };\r\n\r\n $scope.init();\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .directive(\"stAccountSlider\", stAccountSlider);\r\n\r\n function stAccountSlider() {\r\n return {\r\n templateUrl: 'app/carwash/templates/stAccountSlider.html',\r\n restrict: 'A',\r\n replace: true\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .directive(\"stCardSlider\", stCardSlider);\r\n\r\n function stCardSlider() {\r\n return {\r\n templateUrl: 'app/carwash/templates/stCardSlider.html',\r\n restrict: 'A',\r\n replace: true,\r\n link: function postLink(scope, iElement, iAttrs) {\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .directive(\"stContentBox\", stContentBox);\r\n\r\n stContentBox.$inject = ['$timeout'];\r\n\r\n function stContentBox($timeout) {\r\n return {\r\n templateUrl: 'app/carwash/templates/stContentBox.html',\r\n restrict: 'A',\r\n replace: true,\r\n scope:\r\n {\r\n title: '=stTitle',\r\n content: '=stContent',\r\n btn: '=stBtn',\r\n close: '&stClose'\r\n },\r\n link: function (scope) {\r\n\r\n $timeout(function () {\r\n scope.dataReady = true;\r\n }, 200);\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat').\r\n directive(\"stDialogBox\", stDialogBox);\r\n\r\n stDialogBox.$inject = ['lobbyUiService'];\r\n\r\n function stDialogBox(lobbyUiService) {\r\n return {\r\n templateUrl: 'app/carwash/templates/stDialogBox.html',\r\n restrict: 'A',\r\n replace: true,\r\n scope:\r\n {\r\n content: '=stContent',\r\n card: '=stCard',\r\n info: '=stInfo',\r\n ok: '&stOk',\r\n cancel: '&stCancel'\r\n },\r\n link: function (scope, element, attr, ctrls) {\r\n scope.openLink = function () {\r\n lobbyUiService.openExternal(scope.info.link);\r\n };\r\n\r\n scope.dataReady = function () {\r\n return scope.card && scope.content;\r\n }\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .directive(\"stHelpInfo\", stHelpInfo);\r\n\r\n function stHelpInfo() {\r\n return {\r\n template: '',\r\n restrict: 'EA',\r\n replace: true,\r\n scope:\r\n {\r\n content: '=stContent',\r\n title: '=stTitle'\r\n },\r\n controller: function ($element, $scope, $attrs, $ionicPopup, $timeout, lobbyUiService) {\r\n $scope.showPopupModal = function () {\r\n $scope.data = {}\r\n\r\n\r\n lobbyUiService.popup.alert($scope.content, $scope.title);\r\n }\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n.directive(\"stHtmlContent\", stHtmlContent);\r\n\r\n stHtmlContent.$inject = ['stRestService', 'lobbyUiService'];\r\n\r\n function stHtmlContent(stRestService, lobbyUiService) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n scope: {\r\n source: '@'\r\n },\r\n controller: ['$scope', function ($scope) {\r\n\r\n $scope.$id = 'terms';\r\n lobbyUiService.loader.show();\r\n stRestService.getDocument($scope.source + '.html').then(\r\n function (response) {\r\n $scope.content = $.parseHTML(response);\r\n },\r\n function (error) {\r\n }\r\n ).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n\r\n $scope.openLink = function (url) {\r\n lobbyUiService.openExternal(url);\r\n };\r\n }\r\n ],\r\n template: '
',\r\n link: function (scope, element, attrs) {\r\n\r\n //element('.shtifomat-link').on(function() {\r\n // lobbyUiService.openExternal('');\r\n //});\r\n\r\n scope.$watch('content', function (newvalue) {\r\n if (newvalue) {\r\n var current = \"\";\r\n var text = \"\";\r\n\r\n for (var i = 0; i < newvalue.length; i++) {\r\n current = $(newvalue[i]).html();\r\n if (current && current.length > 0) {\r\n\r\n text += $.trim($(newvalue[i]).html());\r\n\r\n }\r\n }\r\n\r\n element.append(text);\r\n\r\n setTimeout(function () {\r\n element.addClass('active');\r\n //angular.element('.shtifomat-link').on('click',function() {\r\n // lobbyUiService.openExternal($(this).text());\r\n //});\r\n }, 0);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .directive('stNumber', stNumber);\r\n\r\n function stNumber() {\r\n return {\r\n require: '?ngModel',\r\n link: function (scope, element, attrs, ngModelCtrl) {\r\n if (!ngModelCtrl) {\r\n return;\r\n }\r\n\r\n ngModelCtrl.$parsers.push(function (val) {\r\n var clean = val.replace(/[^0-9]+/g, '');\r\n if (val !== clean) {\r\n ngModelCtrl.$setViewValue(clean);\r\n ngModelCtrl.$render();\r\n }\r\n return clean;\r\n });\r\n\r\n element.bind('keypress', function (event) {\r\n if (event.keyCode === 32) {\r\n event.preventDefault();\r\n }\r\n });\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .factory('stBankAccountService', stBankAccountService);\r\n\r\n stBankAccountService.$inject = ['stRestService', 'errorService', 'stCacheService', '$q', '_'];\r\n\r\n function stBankAccountService(stRestService, errorService, stCacheService, $q, _) {\r\n\r\n var _fromCache = function () {\r\n return stCacheService.get('stBankAccounts');\r\n }\r\n\r\n var _setBankAccounts = function (value) {\r\n var filterdAccounts = value;\r\n\r\n stCacheService.set('stBankAccounts', filterdAccounts);\r\n };\r\n\r\n var _filteredBankAccounts = function (accounts) {\r\n\r\n var copyAccounts = angular.copy(accounts);\r\n\r\n var filterAccounts = [];\r\n\r\n _.each(copyAccounts, function (account, i) {\r\n var filterCards = _.filter(account.Cards, function (card) {\r\n return card.CreditProductsInd == true;\r\n });\r\n\r\n if (filterCards.length > 0) {\r\n account.Cards = filterCards;\r\n filterAccounts.push(account);\r\n }\r\n });\r\n\r\n return filterAccounts;\r\n }\r\n\r\n var _getBankAccounts = function (fromServer) {\r\n var _defer = $q.defer();\r\n\r\n var _cache = _fromCache();\r\n\r\n if (_cache && !fromServer) {\r\n _defer.resolve(_cache);\r\n } else {\r\n\r\n stRestService.getBankAccounts().then(\r\n function (response) {\r\n\r\n var filterdAccounts = _filteredBankAccounts(response.BankAccounts);\r\n\r\n stCacheService.set('stBankAccounts', filterdAccounts);\r\n\r\n _defer.resolve(filterdAccounts);\r\n\r\n }, function (error) {\r\n _defer.reject(error);\r\n });\r\n }\r\n\r\n return _defer.promise;\r\n };\r\n\r\n var _getCardById = function (id) {\r\n return _getBankAccounts().then(function (account) {\r\n var ai = 0;\r\n var ci = 0;\r\n \r\n _.each(account, function (a, i) {\r\n _.each(a.Cards, function (rw, j) {\r\n\r\n if (rw.Id == id) {\r\n ci = j;\r\n ai = i;\r\n return;\r\n }\r\n });\r\n });\r\n\r\n return {\r\n cardIndex: ci,\r\n accountIndex: ai\r\n };\r\n });\r\n }\r\n\r\n return {\r\n fromCache: _fromCache,\r\n getBankAccounts: _getBankAccounts,\r\n getCardById: _getCardById,\r\n setBankAccounts: _setBankAccounts,\r\n filteredBankAccounts: _filteredBankAccounts\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .factory('stCacheService', stCacheService);\r\n\r\n stCacheService.$inject = ['$angularCacheFactory'];\r\n\r\n function stCacheService($angularCacheFactory) {\r\n\r\n var _cache = $angularCacheFactory('carwashCache');\r\n\r\n return {\r\n get: function (key) {\r\n return _cache.get(key);\r\n },\r\n set: function (key, value) {\r\n _cache.put(key, value);\r\n },\r\n remove: function (key) {\r\n _cache.remove(key);\r\n },\r\n clear: function () {\r\n $angularCacheFactory.clearAll();\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .factory('stMetaDataService', stMetaDataService);\r\n\r\n stMetaDataService.$inject = ['$rootScope', 'stRestService', 'errorService', 'stCacheService', '_', '$q', '$timeout'];\r\n\r\n function stMetaDataService($rootScope, stRestService, errorService, stCacheService, _, $q, $timeout) {\r\n var _metaData = function () {\r\n\r\n return stCacheService.get('stMetaData');\r\n };\r\n\r\n var _notify = function (track) {\r\n $timeout(function () { $rootScope.$broadcast('shtifomatMetaDataComplete', track); });\r\n }\r\n\r\n var _getMetaData = function (fromServer) {\r\n\r\n var _defer = $q.defer();\r\n\r\n var _cache = _metaData();\r\n\r\n if (_cache && !fromServer) {\r\n //console.log('meta data from cache');\r\n _defer.resolve(_cache);\r\n } else {\r\n //console.log('meta data from server');\r\n stRestService.getMetaData().then(\r\n function (response) {\r\n\r\n stCacheService.set('stMetaData', response);\r\n\r\n _defer.resolve(response);\r\n\r\n }, function (error) {\r\n\r\n _defer.reject(error);\r\n });\r\n }\r\n\r\n return _defer.promise;\r\n };\r\n\r\n var _getFixedText = function (id, fromServer) {\r\n\r\n return _getMetaData(fromServer).then(function (response) {\r\n var row = _.find(response.FixTexts, function (rw) {\r\n return rw.TextCode == id;\r\n });\r\n\r\n //console.log(row);\r\n\r\n return row;\r\n });\r\n };\r\n\r\n var _metaDataService = {\r\n metaData: _metaData,\r\n getMetaData: _getMetaData,\r\n getFixedText: _getFixedText,\r\n notify: _notify\r\n };\r\n\r\n return _metaDataService;\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .factory('stRestService', stRestService);\r\n\r\n stRestService.$inject = ['connection'];\r\n\r\n function stRestService(connection) {\r\n return {\r\n getBankAccounts: function () {\r\n return connection.getAccount();\r\n },\r\n getMetaData: function () {\r\n return connection.genericConnection('GET', 'CalShtifomatGetMetaData?', connection.versionAndOSParams);\r\n },\r\n checkSubscribe: function (data) {\r\n return connection.genericConnection('POST', 'CalShtifomatCheckSubscribeCust?', connection.versionAndOSParams, data);\r\n },\r\n checkSubscribeNumMem: function (data) {\r\n return connection.genericConnection('POST', 'CalShtifomatCheckSubscribeNumMem?', connection.versionAndOSParams, data);\r\n },\r\n clubSubscribe: function (data) {\r\n return connection.genericConnection('POST', 'CalShtifomatClubSubscribe?', connection.versionAndOSParams, data);\r\n },\r\n clubUnSubscribe: function (data) {\r\n return connection.genericConnection('POST', 'CalShtifomatClubUnSubscribe?', connection.versionAndOSParams, data);\r\n },\r\n getDocument: function (data) {\r\n return connection.genericConnection('GET', 'caldocs?', connection.versionAndOSParams + \"&id=\" + data);\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .factory('stSubscribService', stSubscribService);\r\n\r\n stSubscribService.$inject = ['stRestService', 'errorService', 'stCacheService', '$q'];\r\n\r\n function stSubscribService(stRestService, errorService, stCacheService, $q) {\r\n\r\n var _subscribedCards = function () {\r\n return stCacheService.get('stSubscribedCards');\r\n };\r\n\r\n var _memNumCards = function () {\r\n return stCacheService.get('stMemNumCards');\r\n };\r\n\r\n var _checkSubscribe = function (fromServer) {\r\n\r\n var _defer = $q.defer();\r\n\r\n var _cache = _subscribedCards();\r\n if (_cache && !fromServer) {\r\n _defer.resolve(_cache);\r\n } else {\r\n\r\n var data = {\r\n ClubFilter: 0,\r\n ValidationIndication: 1,\r\n BelongKillingIndication: 0,\r\n BelongID: '800822',\r\n BelongTypeCode: 1\r\n };\r\n\r\n stRestService.checkSubscribe(data).then(function (response) {\r\n\r\n stCacheService.set('stSubscribedCards', response);\r\n\r\n _defer.resolve(response);\r\n\r\n }, function (error) {\r\n\r\n _defer.reject(error);\r\n });\r\n }\r\n return _defer.promise;\r\n\r\n };\r\n var _checkSubscribeNumMem = function (belongMemNum, fromServer) {\r\n var _defer = $q.defer();\r\n\r\n var _cache = _subscribedCards();\r\n\r\n if (_cache && !fromServer) {\r\n _defer.resolve(_cache);\r\n } else {\r\n var data = {\r\n BelongID: '800822',\r\n BelongMemNum: belongMemNum\r\n };\r\n\r\n var promise = stRestService.checkSubscribeNumMem(data);\r\n\r\n promise.then(function (response) {\r\n\r\n stCacheService.set('stMemNumCards', response);\r\n\r\n _defer.resolve(response);\r\n\r\n }, function (error) {\r\n _defer.reject(error);\r\n });\r\n }\r\n return _defer.promise;\r\n\r\n };\r\n var _clubSubscribe = function (subscribData) {\r\n\r\n var data = {\r\n BelongID: '800822',\r\n BelongMemNum: subscribData.carNumber,\r\n BelongTypeCode: 1,\r\n CardID: subscribData.cardId,\r\n DepNum: subscribData.depDesc,\r\n MainTemplate: 648,\r\n BelongKillingIssue: 'ל',\r\n NeedToRemoveSubscription: subscribData.update\r\n };\r\n\r\n return stRestService.clubSubscribe(data);\r\n };\r\n var _clubUnSubscribe = function (cardId) {\r\n var data = {\r\n BelongExtGroupId: '800822',\r\n BelongTypeCode: 1,\r\n CardID: cardId,\r\n MainTemplate: 648\r\n };\r\n\r\n return stRestService.clubUnSubscribe(data);\r\n };\r\n\r\n var subscribService = {\r\n subscribedCards: _subscribedCards,\r\n memNumCards: _memNumCards,\r\n checkSubscribe: _checkSubscribe,\r\n checkSubscribeNumMem: _checkSubscribeNumMem,\r\n clubSubscribe: _clubSubscribe,\r\n clubUnSubscribe: _clubUnSubscribe,\r\n };\r\n\r\n return subscribService;\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calshtifomat')\r\n .factory('stUtilsService', stUtilsService);\r\n\r\n stUtilsService.$inject = ['_'];\r\n\r\n function stUtilsService(_) {\r\n return {\r\n getTextById: function (obj, id) {\r\n var row = _.find(obj, function (rw) {\r\n return rw.TextCode == id;\r\n });\r\n\r\n return row;\r\n },\r\n padZeros: function (num, len) {\r\n\r\n var padding = len - num.toString().length;\r\n\r\n var ret = '';\r\n\r\n for (var i = 0; i < padding; i++) {\r\n ret += '0';\r\n }\r\n\r\n return ret + num;\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (angular) {\r\n \"use strict\";\r\n angular.module(\"calshtifomat\")\r\n .filter('trusted', ['$sce', function ($sce) {\r\n return function (val) {\r\n if (typeof val === 'string' && val.length > 0) {\r\n return $sce.trustAsHtml(val);\r\n }\r\n return undefined;\r\n }\r\n }]);\r\n})(angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp', ['jmdobry.angular-cache']);\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .config(followappRoute)\r\n .run(followappConfig);\r\n\r\n followappRoute.$inject = ['$provide', '$angularCacheFactoryProvider', '$stateProvider', '$compileProvider'];\r\n\r\n followappConfig.$inject = ['$rootScope', 'lobbyUiService', '$state', 'followAppStorage'];\r\n\r\n function followappRoute($provide, $angularCacheFactoryProvider, $stateProvider, $compileProvider) {\r\n $stateProvider\r\n .state('dw.followApp', {\r\n url: \"/wallet/followApp\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/followapp/templates/home.html\",\r\n controller: \"faHomeCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.followApp-category', {\r\n url: \"/wallet/followApp/category/:CategoryId\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/followapp/templates/catagoria.html\",\r\n controller: \"faCatagoriaCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.followApp-createDoc', {\r\n url: \"/wallet/followApp/category/createDoc/:CategoryId\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/followapp/templates/createDoc.html\",\r\n controller: \"faCreateDocCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.followApp-viewDoc', {\r\n url: \"/wallet/followApp/category/:CategoryId/:DocumentId\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/followapp/templates/viewDoc.html\",\r\n controller: \"faViewDocCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.followApp-searchDoc', {\r\n url: \"/wallet/followApp/searchDoc/:CategoryId\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/followapp/templates/searchDoc.html\",\r\n controller: \"faSearchDocCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.followApp-searchResult', {\r\n url: \"/wallet/followApp/searchResult\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/followapp/templates/catagoria.html\",\r\n controller: \"faSearchResultCtrl\"\r\n }\r\n }\r\n });\r\n\r\n $angularCacheFactoryProvider.setCacheDefaults({\r\n capacity: 1000,\r\n storageMode: 'sessionStorage'\r\n });\r\n\r\n $compileProvider.imgSrcSanitizationWhitelist(/^\\s*(https?|file|blob|cdvfile|content):|data:image\\//);\r\n\r\n }\r\n\r\n function followappConfig($rootScope, lobbyUiService, $state, followAppStorage) {\r\n $rootScope.$on('$stateChangeStart', function (event, next) {\r\n // check on route change if it followApp. if ture check for login token\r\n if (_.contains(next.name, 'dw.followApp')) {\r\n\r\n //console.log('followApp route change');\r\n\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n followAppStorage.DestroyCache();\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.followApp\" });\r\n event.preventDefault();\r\n }\r\n\r\n }\r\n\r\n });\r\n //FastClick.attach(document.body);\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .controller('faCatagoriaCtrl', faCatagoriaCtrl);\r\n\r\n faCatagoriaCtrl.$inject = [\r\n '$scope', 'googleAnalyticsService', 'appData', '$state', 'followAppStorage', '$headerService', 'documentService', 'lobbyUiService'\r\n ];\r\n\r\n function faCatagoriaCtrl($scope, googleAnalyticsService, appData, $state, followAppStorage, $headerService, documentService, lobbyUiService) {\r\n\r\n $scope.followAppGoBack = function () {\r\n if ($state.current.name == 'dw.followApp-category') {\r\n lobbyUiService.navigate('dw.followApp', { location: 'replace' }, {});\r\n }\r\n }\r\n //appData.backOverrideFN = $scope.followAppGoBack;\r\n\r\n $headerService.changeHeader('default');\r\n $scope.routeId = $state.params.CategoryId;\r\n $scope.displaySearch = true;\r\n\r\n $scope.docs = followAppStorage.GetAllDocuments();\r\n\r\n var docsInCatArray = $scope.docs.filter(function (d) {\r\n googleAnalyticsService.insertEvent({ page: 'followApp catagoria page in ' + d.CategoryName, eventName: 'FollowApp catagoria page in ' + d.CategoryName, action: 'Enter' });\r\n return d.CategoryId == $state.params.CategoryId;\r\n });\r\n\r\n var catSummary = followAppStorage.GetSummary();\r\n var selectedCategory = catSummary.filter(function (d) {\r\n return d.CategoryId == $state.params.CategoryId;\r\n });\r\n\r\n documentService.CurrentCategory(selectedCategory[0]);\r\n\r\n $scope.docs = docsInCatArray;\r\n\r\n //if there are no docs in this category...\r\n if (!docsInCatArray.length) {\r\n $scope.CategoryName = selectedCategory[0].CategoryName;\r\n }\r\n\r\n $scope.data = {};\r\n\r\n $scope.clearSearch = function () {\r\n $scope.data.searchInCatagory = '';\r\n }\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n appData.backOverrideFN = null;\r\n });\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .controller('faCreateDocCtrl', faCreateDocCtrl);\r\n\r\n faCreateDocCtrl.$inject = [\r\n '$scope', 'googleAnalyticsService', '$state', '$ionicActionSheet', '$cameraService', '$log', '$headerService',\r\n '$ionicSlideBoxDelegate', '$dialogService', '$followAppConnection', 'lobbyUiService', '$location', 'followAppStorage', '$ionicModal',\r\n 'serverResponseService', '$timeout', 'calenderService', 'parseTodayService', '$stateParams', 'errorService', 'dateChangeFormatService'\r\n ];\r\n\r\n function faCreateDocCtrl($scope, googleAnalyticsService, $state, $ionicActionSheet, $cameraService, $log, $headerService,\r\n $ionicSlideBoxDelegate, $dialogService, $followAppConnection, lobbyUiService, $location, followAppStorage, $ionicModal,\r\n serverResponseService, $timeout, calenderService, parseTodayService, $stateParams, errorService, dateChangeFormatService) {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'followApp create page', eventName: 'FollowApp create page', action: 'Enter' });\r\n\r\n $cameraService.clearPhotos();\r\n // config flags\r\n $headerService.changeHeader('add');\r\n $scope.$id = 'CreateDocScope';\r\n var now = moment();\r\n $scope.images = [];\r\n var validityDate, reminderDate;\r\n $scope.document = {};\r\n\r\n followAppStorage.SetNumPicToDoc(0);\r\n\r\n $scope.today = parseTodayService + \"T00:00:00\";\r\n // get the dynamic and tags fields that relavent only for the spacific categoryId\r\n var getDynamicInCategories = _.find(followAppStorage.GetCatagories(), { 'CategoryId': parseInt($state.params.CategoryId) });\r\n var clonedCategoriesObject = $.extend(true, {}, getDynamicInCategories);\r\n $log.debug(clonedCategoriesObject);\r\n $scope.dynamicFields = clonedCategoriesObject.DynamicFields;\r\n $scope.tagsFields = clonedCategoriesObject.Tags;\r\n $scope.branches = followAppStorage.GetBranches();\r\n $scope.currencies = followAppStorage.GetCurerncies();\r\n $scope.document.BranchName = \"בחר ענף\";\r\n\r\n $scope.newDoc = {};\r\n //$scope.newDoc.ReminderDate = moment().hours(12).minute(0);\r\n var month = now.month() + 1;\r\n $scope.CreationDate = '' + now.date() + '-' + month + '-' + now.year() + '';\r\n $scope.CategoryName = clonedCategoriesObject.CategoryName;\r\n\r\n if (clonedCategoriesObject.IsShowAmountField)\r\n $scope.showAmount = true;\r\n\r\n\r\n $scope.$on('saveNewDocument', function () {\r\n\r\n var doc = null;\r\n if (($scope.documentForm.currencySelect.$viewValue != undefined || $scope.documentForm.currencySelect.$viewValue != null)\r\n && ($scope.documentForm.amount.$viewValue == undefined || $scope.documentForm.amount.$viewValue == null)) {\r\n $scope.documentForm.amount.$setValidity('required', false);\r\n } else {\r\n $scope.documentForm.amount.$setValidity('required', true);\r\n }\r\n\r\n if (\r\n (($scope.documentForm.amount.$viewValue != undefined || $scope.documentForm.amount.$viewValue != null) &&\r\n ($scope.documentForm.amount.$viewValue != ''))\r\n && ($scope.documentForm.currencySelect.$viewValue == undefined || $scope.documentForm.currencySelect.$viewValue == null)\r\n ) {\r\n $scope.documentForm.currencySelect.$setValidity('required', false);\r\n\r\n } else {\r\n $scope.documentForm.currencySelect.$setValidity('required', true);\r\n }\r\n\r\n if ($scope.documentForm.reminderDate != undefined && $scope.documentForm.reminderDate.$viewValue != null) {\r\n if (moment($scope.documentForm.reminderDate.$viewValue).isBefore(moment()._d)) {\r\n if (moment().format('YYYY-MM-DD') > moment($scope.documentForm.reminderDate.$viewValue).format('YYYY-MM-DD')) {\r\n $scope.documentForm.reminderDate.$setValidity('mindate', false);\r\n } else if (moment().format('hh:mm:ss') > moment($scope.documentForm.reminderDate.$viewValue).format('hh:mm:ss')) {\r\n $scope.documentForm.reminderDate.$setValidity('mindate', true);\r\n $scope.documentForm.reminderDate.$setValidity('minTime', false);\r\n } else {\r\n $scope.documentForm.reminderDate.$setValidity('minTime', true);\r\n }\r\n } else {\r\n $scope.documentForm.reminderDate.$setValidity('minTime', true);\r\n $scope.documentForm.reminderDate.$setValidity('mindate', true);\r\n }\r\n }\r\n\r\n\r\n if ($scope.documentForm.$valid) {\r\n\r\n var tagsIdArray = [];\r\n if ($scope.documentForm.tagsSelect.$viewValue) {\r\n for (var i = 0; i < $scope.documentForm.tagsSelect.$viewValue.length; i++) {\r\n tagsIdArray.push($scope.documentForm.tagsSelect.$viewValue[i].TagId);\r\n }\r\n }\r\n var imageDataUrls = $cameraService.getPhotos();\r\n\r\n var dynamicFieldArray = [];\r\n for (var k = 0; k < $scope.dynamicFields.length; k++) {\r\n if ($scope.dynamicFields[k].DynamicFieldContent != undefined) {\r\n var obj = {};\r\n obj.DynamicFieldId = $scope.dynamicFields[k].DynamicFieldId;\r\n obj.DynamicFieldContent = $scope.dynamicFields[k].DynamicFieldContent;\r\n dynamicFieldArray.push(obj);\r\n }\r\n\r\n }\r\n\r\n\r\n if ($scope.documentForm.validityDate != undefined && $scope.documentForm.validityDate.$viewValue != null) {\r\n validityDate = dateChangeFormatService.fixDateForValidity($scope.documentForm.validityDate.$viewValue);\r\n }\r\n if ($scope.documentForm.reminderDate != undefined && $scope.documentForm.reminderDate.$viewValue != null) {\r\n //reminderDate = FixDate($scope.documentForm.reminderDate.$viewValue);\r\n\r\n var rd = $scope.documentForm.reminderDate.$viewValue;\r\n\r\n if (rd.length == 16) {\r\n reminderDate = rd + \":00\";\r\n } else {\r\n reminderDate = rd;\r\n }\r\n }\r\n\r\n //var reminderDateTime = new Date(reminderDate + \" \" + $scope.documentForm.reminderTime.$viewValue);\r\n\r\n doc = {\r\n DocumentName: $scope.documentForm.documentName.$viewValue,\r\n CategoryId: $state.params.CategoryId,\r\n BranchId: $scope.documentForm.branchesSelect.$viewValue.BranchId,\r\n CreationDate: moment().format('DD-MM-YYYY'),\r\n ValidityDate: validityDate,\r\n ReminderDate: reminderDate,\r\n DynamicFieldsInDocument: dynamicFieldArray,\r\n //ReminderComment: $scope.documentForm.reminderComment.$viewValue,\r\n Comment: $scope.documentForm.comment.$viewValue,\r\n CurrencyId: $scope.documentForm.currencySelect.$viewValue == undefined ? null : $scope.documentForm.currencySelect.$viewValue.CurrencyId,\r\n Amount: $scope.documentForm.amount.$viewValue == undefined ? null : $scope.documentForm.amount.$viewValue,\r\n Tags: tagsIdArray,\r\n Photos: imageDataUrls\r\n }\r\n\r\n // $loadingService.show();\r\n lobbyUiService.loader.show();\r\n\r\n $scope.saveNewDocument(doc);\r\n\r\n\r\n } else {\r\n\r\n //iterate through form controls to show the input error color \r\n for (var prop in $scope.documentForm) {\r\n if ($scope.documentForm.hasOwnProperty(prop) && prop.indexOf('$') < 0) {\r\n if ($scope.documentForm[prop].$invalid)\r\n $scope.documentForm[prop].$dirty = true;\r\n }\r\n }\r\n\r\n $dialogService.showValidationPopup({ scope: $scope, actionText: 'סגור', actionCallback: function () { } });\r\n\r\n }\r\n\r\n });\r\n\r\n $scope.saveNewDocument = function (doc) {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'followApp save new doc', eventName: 'FollowApp save new doc', action: 'Enter' });\r\n\r\n var saveNewDocPromise = $followAppConnection.SaveNewDocument(doc);\r\n\r\n saveNewDocPromise.then(function (response) {\r\n var remiderDate = doc.ReminderDate;\r\n\r\n if (remiderDate) {\r\n var fromDate = moment($scope.documentForm.reminderDate.$viewValue)._d;\r\n\r\n var toDate = new Date(fromDate.getTime());\r\n toDate.setHours(fromDate.getHours() + 1);\r\n var calEvents = [];\r\n calEvents.push({\r\n title: doc.DocumentName,\r\n reminder: 120, //notes: doc.ReminderComment,\r\n fromDate: fromDate,\r\n toDate: toDate\r\n });\r\n\r\n var eventsPromise = calenderService.CreateEvents(calEvents);\r\n\r\n if (eventsPromise) {\r\n eventsPromise.then(function (data) {\r\n $log.debug('success calender create event - ' + JSON.stringify(data));\r\n },\r\n function (error) { $log.debug('error calender create event - ' + JSON.stringify(error)); });\r\n }\r\n }\r\n\r\n //$loadingService.hide();\r\n lobbyUiService.loader.hide();\r\n\r\n var okText = response.DialogBox.OkButtonText ? response.DialogBox.OkButtonText : 'מסמך נוסף';\r\n var cancelText = response.DialogBox.CancelButtonText ? response.DialogBox.CancelButtonText : 'חזרה לקטגוריה';\r\n\r\n var popupOptions = {\r\n scope: $scope,\r\n actionText: okText,\r\n cancelText: cancelText,\r\n actionCallback: function () {\r\n $state.go($state.current, $stateParams, { reload: true });\r\n },\r\n cancelCallback: function () {\r\n $state.go('dw.followApp-category', { CategoryId: clonedCategoriesObject.CategoryId });\r\n },\r\n text: response.DialogBox.Content\r\n };\r\n\r\n $followAppConnection.GetDocumentInfo().then(function (response2) {\r\n\r\n followAppStorage.SetAllDocuments(response2.DocumentsInfo);\r\n followAppStorage.SetSummary(response2.CategoriesSummary);\r\n // $loadingService.hide();\r\n lobbyUiService.loader.hide();\r\n\r\n $dialogService.showGenericPopup(popupOptions);\r\n }, function (error2) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error2, $scope.saveNewDocument);\r\n });\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error, $scope.saveNewDocument);\r\n });\r\n }\r\n\r\n //open actionsheet for add picture from camera or gallery\r\n $scope.showActionsheet = function () {\r\n $ionicActionSheet.show({\r\n buttons: [\r\n { text: 'מצלמה' },\r\n { text: 'גלריה' }\r\n ],\r\n destructiveText: 'ביטול',\r\n destructiveButtonClicked: function () {\r\n return true;\r\n },\r\n buttonClicked: function (index) {\r\n if (index === 0) {\r\n $log.debug('camera');\r\n $cameraService.openCamera().then(function (image) {\r\n $scope.images.push(image);\r\n $timeout(function () {\r\n $ionicSlideBoxDelegate.update();\r\n $ionicSlideBoxDelegate.next();\r\n }, 1000);\r\n\r\n },\r\n function (error) {\r\n $log.debug('error ' + error);\r\n if (error.display)\r\n serverResponseService.GenricError(error.desc);\r\n });\r\n return true;\r\n }\r\n if (index === 1) {\r\n $log.debug('gallery');\r\n $cameraService.openGallery().then(function (image) {\r\n $scope.images.push(image);\r\n $timeout(function () {\r\n $ionicSlideBoxDelegate.update();\r\n $ionicSlideBoxDelegate.next();\r\n }, 1000);\r\n\r\n },\r\n function (error) {\r\n $log.debug('error ' + error);\r\n if (error.display)\r\n serverResponseService.GenricError(error.desc);\r\n });\r\n return true;\r\n }\r\n }\r\n });\r\n };\r\n\r\n $scope.openModal = function (index) {\r\n followAppStorage.SetPictureToSee($scope.images[index].fileUrl);\r\n\r\n $ionicModal.fromTemplateUrl('app/followapp/templates/imageGallery.html', function (modal) {\r\n $scope.modal = modal.show();\r\n $('.modal').addClass('clearModal');\r\n }, {\r\n animation: 'slide-in-up'\r\n });\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .controller('faHomeCtrl', faHomeCtrl);\r\n\r\n faHomeCtrl.$inject = [\r\n '$scope', 'googleAnalyticsService', 'appData', '$dialogService', '$followAppConnection', 'followAppStorage', '$state', '$window', 'lobbyUiService',\r\n 'errorService', 'serverResponseService', 'calenderService', 'documentService', '$log'\r\n ];\r\n\r\n function faHomeCtrl($scope, googleAnalyticsService, appData, $dialogService, $followAppConnection, followAppStorage, $state, $window, lobbyUiService, errorService, serverResponseService, calenderService, documentService, $log) {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'followApp home page', eventName: 'FollowApp home page', action: 'Enter' });\r\n\r\n $scope.init = function () {\r\n\r\n $scope.getDocumentInfo();\r\n\r\n $scope.getMetaData();\r\n\r\n documentService.CurrentCategory({});\r\n };\r\n\r\n // function for getting all document information.\r\n $scope.getDocumentInfo = function () {\r\n if (!followAppStorage.GetAllDocuments() || !followAppStorage.GetSummary()) {\r\n // call server for all document.\r\n $followAppConnection.GetDocumentInfo().then(function (response) {\r\n //var response = serverResponseService.Translator.GetDocumentInfo.response(data); \r\n\r\n $scope.options = response;\r\n followAppStorage.SetSummary(response.CategoriesSummary);\r\n followAppStorage.SetAllDocuments(response.DocumentsInfo);\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error, $scope.getDocumentInfo);\r\n\r\n });\r\n } else {\r\n var data = { DocumentsInfo: followAppStorage.GetAllDocuments(), CategoriesSummary: followAppStorage.GetSummary() };\r\n $scope.options = data;\r\n lobbyUiService.loader.hide();\r\n }\r\n }\r\n\r\n $scope.getMetaData = function () {\r\n if (!followAppStorage.GetBranches() ||\r\n !followAppStorage.GetCurerncies()) {\r\n $followAppConnection.MetaData().then(function (response) {\r\n\r\n followAppStorage.SetBranches(response.Branches);\r\n followAppStorage.SetCurerncies(response.Currencies);\r\n followAppStorage.SetCatagories(response.Categories);\r\n followAppStorage.SetMaxVolumePerPhoto(response.MaxVolumePerPhoto);\r\n followAppStorage.SetMaxPhotosPerDocument(response.MaxPhotosPerDocument);\r\n followAppStorage.SetMaxDocumentsPerCustomer(response.MaxDocumentsPerCustomer);\r\n\r\n }, function (error) {\r\n errorService.handleError(error, $scope.getMetaData);\r\n });\r\n }\r\n }\r\n\r\n $scope.sync_calendar = function () {\r\n\r\n var arrayOfNotes = _.filter($scope.options.DocumentsInfo, function (obj) {\r\n return obj != null;\r\n });\r\n\r\n\r\n var createCalenderEvent = function (doc) {\r\n if (doc.ReminderDate) {\r\n var fromDate = moment(doc.ReminderDate, 'DD-MM-YYYYThh:mm')._d;\r\n\r\n var toDate = new Date(fromDate.getTime());\r\n\r\n toDate.setHours(fromDate.getHours() + 1);\r\n\r\n var calEvents = [];\r\n calEvents.push({\r\n title: doc.DocumentName,\r\n reminder: 120, //notes: doc.ReminderComment,\r\n fromDate: fromDate,\r\n toDate: toDate\r\n });\r\n\r\n var eventsPromise = calenderService.CreateEvents(calEvents);\r\n\r\n if (eventsPromise) {\r\n eventsPromise.then(function (data) {\r\n $log.debug('success calender create event - ' + JSON.stringify(data));\r\n },\r\n function (error) {\r\n $log.debug('error calender create event - ' + JSON.stringify(error));\r\n });\r\n }\r\n }\r\n }\r\n\r\n var updateDocument = function () {\r\n\r\n //$loadingService.show();\r\n lobbyUiService.loader.show();\r\n\r\n angular.forEach(arrayOfNotes, function (value, key) {\r\n var oldDoc = value;\r\n\r\n if (oldDoc.ReminderDate) {\r\n\r\n var oldFromDate = moment(oldDoc.ReminderDate, 'DD-MM-YYYYThh:mm')._d;\r\n\r\n var oldToDate = new Date(oldFromDate.getTime());\r\n\r\n oldToDate.setHours(oldFromDate.getHours() + 1);\r\n\r\n var oldEvent = { title: oldDoc.DocumentName, fromDate: oldFromDate, toDate: oldToDate }\r\n\r\n calenderService.DeleteEvent(oldEvent).then(function () {\r\n createCalenderEvent(value);\r\n }, function () {\r\n //error\r\n createCalenderEvent(value);\r\n });\r\n } else {\r\n createCalenderEvent(value);\r\n }\r\n });\r\n\r\n lobbyUiService.loader.hide();\r\n //$loadingService.hide();\r\n\r\n $dialogService.showGenericPopup({\r\n scope: $scope,\r\n actionText: 'סגור',\r\n text: 'היומן סונכנן בהצלחה'\r\n });\r\n };\r\n\r\n updateDocument();\r\n }\r\n\r\n $scope.init();\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .controller('faSearchDocCtrl', faSearchDocCtrl);\r\n\r\n faSearchDocCtrl.$inject = [\r\n '$scope', '$headerService', 'followAppStorage', 'documentService', '$state', '$stateParams', 'dateChangeFormatService', 'googleAnalyticsService'\r\n ];\r\n\r\n function faSearchDocCtrl($scope, $headerService, followAppStorage, documentService, $state, $stateParams, dateChangeFormatService, googleAnalyticsService) {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'followApp search page', eventName: 'FollowApp search page', action: 'Enter' });\r\n\r\n $headerService.changeHeader('search');\r\n $scope.groups = [];\r\n\r\n $scope.Currency = followAppStorage.GetCurerncies();\r\n\r\n\r\n //categories\r\n var fullCategories = followAppStorage.GetSummary();\r\n\r\n if (!fullCategories) {\r\n $state.go('dw.followApp');\r\n //$location.path('FollowApp/home');\r\n }\r\n /* add yanir */\r\n var docs = [];\r\n $scope.searchDoc = {};\r\n\r\n var categoryId = $stateParams.CategoryId;\r\n\r\n if (categoryId)\r\n docs = documentService.GetCategoryDocuments(categoryId);\r\n else\r\n docs = followAppStorage.GetAllDocuments();\r\n\r\n if (categoryId) {\r\n $scope.categoryShow = false;\r\n $scope.searchDoc.categorie = categoryId;\r\n } else {\r\n $scope.categoryShow = true;\r\n }\r\n\r\n $scope.findInDocuments = function () {\r\n var searchFields = new Object();\r\n var amountSearchFields = new Object();\r\n var searchDate = new Object();\r\n\r\n if ($scope.model.freeSearch) {\r\n documentService.setFreeSearch($scope.model.freeSearch);\r\n\r\n if (categoryId)\r\n docs = documentService.GetCategoryDocuments(categoryId);\r\n else\r\n docs = followAppStorage.GetAllDocuments();\r\n\r\n setSearchResultView(docs);\r\n } else {\r\n\r\n angular.forEach($scope.faSearchForm, function (value, key) {\r\n if (value.hasOwnProperty('$modelValue')) {\r\n //if ($scope.faSearchForm[key].$dirty && $scope.faSearchForm[key].$modelValue != \"\" && $scope.faSearchForm[key].$modelValue != null)\r\n if ($scope.faSearchForm[key].$modelValue != \"\" && $scope.faSearchForm[key].$modelValue != null) {\r\n //console.log(\"model \" + value.$modelValue);\r\n\r\n switch (key) {\r\n case 'Amount':\r\n searchFields[key] = parseInt(value.$modelValue);\r\n break;\r\n case 'BranchId':\r\n searchFields[key] = parseInt(value.$modelValue.id);\r\n break;\r\n case 'CategoryId':\r\n if ($scope.categoryShow)\r\n searchFields[key] = typeof value.$modelValue.value === 'undefined' ? parseInt(value.$modelValue) : parseInt(value.$modelValue.id);\r\n break;\r\n case 'CreationDateStart':\r\n searchDate[key] = dateChangeFormatService.fixDate4Search(value.$modelValue);\r\n break;\r\n case 'CreationDateEnd':\r\n searchDate[key] = dateChangeFormatService.fixDate4Search(value.$modelValue);\r\n break;\r\n case 'ValidityDateStart':\r\n searchDate[key] = dateChangeFormatService.fixDate4Search(value.$modelValue);\r\n break;\r\n case 'ValidityDateEnd':\r\n searchDate[key] = dateChangeFormatService.fixDate4Search(value.$modelValue);\r\n break;\r\n case 'minAmount':\r\n amountSearchFields[key] = dateChangeFormatService.fixDate4Search(value.$modelValue);\r\n break;\r\n case 'maxAmount':\r\n amountSearchFields[key] = dateChangeFormatService.fixDate4Search(value.$modelValue);\r\n break;\r\n default:\r\n searchFields[key] = value.$modelValue;\r\n break;\r\n }\r\n }\r\n\r\n }\r\n });\r\n\r\n //console.log(searchFields);\r\n var result = _.filter(docs, searchFields);\r\n\r\n var searchCreationDate = _.filter(docs, function (d) {\r\n return d.CreationDate >= searchDate.CreationDateStart && d.CreationDate <= searchDate.CreationDateEnd;\r\n });\r\n\r\n var searchValidityDate = _.filter(docs, function (d) {\r\n return d.ValidityDate >= searchDate.ValidityDateStart && d.ValidityDate <= searchDate.ValidityDateEnd;\r\n });\r\n\r\n var resultAmount = _.filter(docs, function (d) {\r\n return d.Amount >= amountSearchFields.minAmount && d.Amount <= amountSearchFields.maxAmount;\r\n });\r\n\r\n result = _.union(result, resultAmount);\r\n result = _.union(result, searchCreationDate);\r\n result = _.union(result, searchValidityDate);\r\n\r\n //console.log(result);\r\n setSearchResultView(result);\r\n\r\n }\r\n\r\n }\r\n\r\n // bring all categories\r\n var categories = [];\r\n for (var i = 0; i < fullCategories.length; i++) {\r\n categories.push({ id: fullCategories[i].CategoryId, value: fullCategories[i].CategoryName });\r\n $scope.categories = categories;\r\n }\r\n\r\n // bring all branches\r\n var fullBranches = followAppStorage.GetBranches(); //GetFollowAppMetaData.Branches;\r\n var branches = [];\r\n for (var i = 0; i < fullBranches.length; i++) {\r\n branches.push({ id: fullBranches[i].BranchId, value: fullBranches[i].BranchName });\r\n $scope.branches = branches;\r\n }\r\n\r\n $scope.model = { minAmount: '', maxAmount: '', fromCreateDate: '', toCreateDate: '', fromValidityDate: '', toValidityDate: '', text: '' };\r\n\r\n var searchByCategory = function (categoryId) {\r\n var docs = documentService.GetCategoryDocuments(categoryId);\r\n setSearchResultView(docs);\r\n }\r\n\r\n var searchByDocName = function (group, form) {\r\n if (isValidForm(group, form)) {\r\n var docName = $scope.model.text;\r\n var docs = documentService.GetDocumentsByName(docName, categoryId);\r\n setSearchResultView(docs);\r\n }\r\n }\r\n\r\n $scope.clearSearch = function () {\r\n $scope.model.freeSearch = '';\r\n }\r\n\r\n var searchByCreateDate = function (group, form) {\r\n searchByDateRange(group, form, documentService.GetDocumentsByCreationDateRange);\r\n }\r\n\r\n var searchByValidityDate = function (group, form) {\r\n searchByDateRange(group, form, documentService.GetDocumentsByValidityDateRange);\r\n }\r\n\r\n var searchByDateRange = function (group, form, searchDelegate) {\r\n if (isValidForm(group, form)) {\r\n var fromDate = $('#fromDate:visible', '#advanceSearch').val();\r\n var toDate = $('#toDate:visible', '#advanceSearch').val();\r\n var docs = searchDelegate(fromDate, toDate, categoryId);\r\n setSearchResultView(docs);\r\n }\r\n }\r\n\r\n var searchByBranch = function (branchId) {\r\n var docs = documentService.GetBranchDocuments(branchId);\r\n setSearchResultView(docs);\r\n }\r\n\r\n var searchByAmount = function (group, form) {\r\n if (isValidForm(group, form)) {\r\n var minAmount = $scope.model.minAmount;\r\n var maxAmount = $scope.model.maxAmount;\r\n var docs = documentService.GetDocumentsByAmountRange(minAmount, maxAmount, categoryId);\r\n setSearchResultView(docs);\r\n }\r\n }\r\n\r\n var setSearchResultView = function (docs) {\r\n documentService.CurrentDocuments(docs);\r\n $state.go('dw.followApp-searchResult');\r\n //$location.path('FollowApp/searchResult');\r\n }\r\n\r\n var isValidForm = function (group, form) {\r\n group.isSubmit = true;\r\n return form.$valid;\r\n }\r\n\r\n if (!categoryId) {\r\n $scope.groups.push({\r\n name: 'לפי קטגוריה',\r\n type: 'list',\r\n items: categories,\r\n callback: searchByCategory\r\n });\r\n }\r\n\r\n $scope.groups.push({\r\n name: 'לפי שם המסמך',\r\n type: 'text',\r\n placeHolder: 'הקלד את שם המסמך',\r\n callback: searchByDocName,\r\n emptyError: 'יש למלא את שם המסמך.'\r\n });\r\n\r\n $scope.groups.push({\r\n name: 'לפי תאריך יצירת המסמך',\r\n type: 'date',\r\n callback: searchByCreateDate,\r\n emptyError: 'יש למלא טווח תאריכי יצירת המסמך.',\r\n fromDate: $scope.model.fromCreateDate,\r\n toDate: $scope.model.toCreateDate\r\n });\r\n\r\n $scope.groups.push({\r\n name: 'לפי תאריך תפוגת המסמך',\r\n type: 'date',\r\n callback: searchByValidityDate,\r\n emptyError: 'יש למלא טווח תאריכי תפוגת המסמך.',\r\n fromDate: $scope.model.fromValidityDate,\r\n toDate: $scope.model.toValidityDate\r\n });\r\n\r\n $scope.groups.push({\r\n name: 'לפי ענף',\r\n type: 'list',\r\n items: branches,\r\n callback: searchByBranch\r\n });\r\n\r\n $scope.groups.push({\r\n name: 'לפי סכום',\r\n type: 'range',\r\n callback: searchByAmount\r\n });\r\n\r\n $scope.toggleGroup = function (group) {\r\n if ($scope.isGroupShown(group)) {\r\n $scope.shownGroup = null;\r\n } else {\r\n $scope.shownGroup = group;\r\n }\r\n };\r\n $scope.isGroupShown = function (group) {\r\n return $scope.shownGroup === group;\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .controller('faSearchResultCtrl', faSearchResultCtrl);\r\n\r\n faSearchResultCtrl.$inject = [\r\n '$scope', '$headerService', 'documentService'\r\n ];\r\n\r\n function faSearchResultCtrl($scope, $headerService, documentService) {\r\n $headerService.changeHeader('searchResult');\r\n\r\n var category = documentService.CurrentCategory();\r\n if (category)\r\n $scope.CategoryName = category.CategoryName;\r\n\r\n $scope.docs = documentService.CurrentDocuments();\r\n\r\n $scope.data = {};\r\n\r\n var freeSearch = documentService.getFreeSearch();\r\n\r\n if (freeSearch && freeSearch.length > 0) {\r\n $scope.displaySearch = true;\r\n $scope.data.searchInCatagory = freeSearch;\r\n documentService.setFreeSearch(null);\r\n } else {\r\n $scope.displaySearch = false;\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .controller('faViewDocCtrl', faViewDocCtrl);\r\n\r\n faViewDocCtrl.$inject = [\r\n '$scope', 'googleAnalyticsService', '$state', '$ionicPlatform', '$ionicModal', '$dialogService', 'followAppStorage', '$headerService',\r\n '$ionicSlideBoxDelegate', '$timeout', '$followAppConnection', 'lobbyUiService', '$location', '$log', '$ionicActionSheet',\r\n '$cameraService', 'serverResponseService', 'calenderService', 'parseTodayService', 'dateChangeFormatService', 'errorService', 'backService', '$q'\r\n ];\r\n\r\n function faViewDocCtrl($scope, googleAnalyticsService, $state, $ionicPlatform, $ionicModal, $dialogService, followAppStorage, $headerService,\r\n $ionicSlideBoxDelegate, $timeout, $followAppConnection, lobbyUiService, $location, $log, $ionicActionSheet,\r\n $cameraService, serverResponseService, calenderService, parseTodayService, dateChangeFormatService, errorService, backService, $q) {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'followApp view page', eventName: 'FollowApp view page', action: 'Enter' });\r\n\r\n if (!$state.params.DocumentId) {\r\n $state.go('dw.followApp');\r\n }\r\n\r\n var getDynamicInCategories;\r\n var clonedCategoriesObject;\r\n var validityDate, reminderDate;\r\n var currentDocArray;\r\n var barCodeString;\r\n $scope.showSlider = false;\r\n\r\n $scope.init = function () {\r\n\r\n $cameraService.clearPhotos();\r\n\r\n getDynamicInCategories = _.find(followAppStorage.GetCatagories(), { 'CategoryId': parseInt($state.params.CategoryId) });\r\n\r\n clonedCategoriesObject = $.extend(true, {}, getDynamicInCategories);\r\n\r\n $scope.today = parseTodayService;\r\n // config flags for view document\r\n $scope.doc = followAppStorage.GetAllDocuments();\r\n $scope.CategoriesSummary = followAppStorage.GetSummary();\r\n $scope.dynamicFields = clonedCategoriesObject.DynamicFields;\r\n $scope.tagsFields = clonedCategoriesObject.Tags;\r\n $scope.branches = followAppStorage.GetBranches();\r\n $scope.currencies = followAppStorage.GetCurerncies();\r\n $scope.isEdit = false;\r\n $scope.imagePreloader = false;\r\n\r\n $headerService.changeHeader('blankCaption');\r\n\r\n if (clonedCategoriesObject.IsShowAmountField)\r\n $scope.showAmount = true;\r\n\r\n currentDocArray = $scope.doc.filter(function (d) {\r\n return d.DocumentId == $state.params.DocumentId;\r\n });\r\n\r\n if (currentDocArray.length) {\r\n\r\n $scope.currentDoc = currentDocArray[0];\r\n\r\n $log.debug($scope.currentDoc);\r\n\r\n $scope.currentDoc.ReminderDate = moment($scope.currentDoc.ReminderDate, 'DD-MM-YYYYThh:mm').format('YYYY-MM-DDThh:mm');\r\n\r\n $scope.currentDoc.currentBranch = $scope.branches[$scope.currentDoc.BranchId - 1];\r\n $scope.currentDoc.selectedCurrency = $scope.currencies[$scope.currentDoc.CurrencyId - 1];\r\n $scope.currentDocBeforeChanges = $.extend(true, {}, $scope.currentDoc);\r\n\r\n //$scope.currentDoc.ReminderDateInput = dateChangeFormatService.fixDate($scope.currentDoc.ReminderDate);\r\n //$scope.currentDoc.ValidityDateInput = dateChangeFormatService.fixDate($scope.currentDoc.ValidityDate);\r\n $log.debug('2' + $scope.currentDoc);\r\n }\r\n\r\n $scope.images = [];\r\n\r\n $scope.showSlider = false || $scope.currentDoc.DocumentPhotosList.length == 0;\r\n\r\n followAppStorage.SetNumPicToDoc($scope.currentDoc.DocumentPhotosList.length);\r\n\r\n var _proms = [];\r\n\r\n angular.forEach($scope.currentDoc.DocumentPhotosList, function (value, key) {\r\n var self = this;\r\n $scope.imagePreloader = true;\r\n _proms.push($followAppConnection.GetDocumentPhoto($scope.currentDoc.DocumentId, value).then(function (data) {\r\n $scope.imagePreloader = false;\r\n self.push({ fileUrl: \"data:image/jpeg;base64,\" + data, photoId: value });\r\n }));\r\n }, $scope.images);\r\n\r\n $q.all(_proms).then(function () {\r\n $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle(\"followappHandler\").update();\r\n }, 1000).then(function () {\r\n $scope.showSlider = true;\r\n });\r\n });\r\n\r\n if ($scope.currentDoc.TagsInDocumentList && $scope.currentDoc.TagsInDocumentList.length) {\r\n $scope.showTags = true;\r\n $scope.currentDoc.tags = [];\r\n for (var i = 0; i < $scope.currentDoc.TagsInDocumentList.length; i++) {\r\n $scope.currentDoc.tags.push($scope.currentDoc.TagsInDocumentList[i].TagName);\r\n }\r\n }\r\n\r\n $scope.barcodePreview = function (field) {\r\n if (!$scope.isEdit) {\r\n barCodeString = 'data:image/png;base64,' + field.Barcode;\r\n followAppStorage.SetPictureToSee(barCodeString);\r\n\r\n $ionicModal.fromTemplateUrl('app/followapp/templates/barcodePreview.html', function (modal) {\r\n $scope.modal = modal.show();\r\n }, {\r\n animation: 'slide-in-up'\r\n });\r\n }\r\n }\r\n\r\n };\r\n\r\n $scope.openModal = function (index) {\r\n\r\n followAppStorage.SetPictureToSee($scope.images[index].fileUrl);\r\n\r\n $ionicModal.fromTemplateUrl('app/followapp/templates/imageGallery.html', function (modal) {\r\n $scope.modal = modal.show();\r\n $('.modal').addClass('clearModal');\r\n }, {\r\n animation: 'slide-in-up'\r\n });\r\n }\r\n\r\n $scope.enableEdit = function () {\r\n googleAnalyticsService.insertEvent({ page: 'followApp edit doc', eventName: 'FollowApp edit doc', action: 'Enter' });\r\n $location.search('edit');\r\n if (!$scope.isEdit) {\r\n $headerService.changeHeader('edit');\r\n $scope.isEdit = true;\r\n if ($scope.currentDoc.ReminderDate != null && $scope.currentDoc.ReminderDate != \"\") {\r\n $scope.currentDoc.ReminderDateInput = moment($scope.currentDoc.ReminderDate).format('YYYY-MM-DDThh:mm');\r\n }\r\n $scope.currentDoc.ValidityDateInput = dateChangeFormatService.fixDate($scope.currentDoc.ValidityDate);\r\n $scope.currentDoc.currentBranch = $scope.branches[$scope.currentDoc.BranchId - 1];\r\n $scope.currentDoc.selectedCurrency = $scope.currencies[$scope.currentDoc.CurrencyId - 1];\r\n //$scope.currentDoc.ReminderDateInput = dateChangeFormatService.fixDate($scope.currentDoc.ReminderDate);\r\n //$scope.currentDoc.ValidityDateInput = dateChangeFormatService.fixDate($scope.currentDoc.ValidityDate);\r\n } else {\r\n $headerService.changeHeader('blankCaption');\r\n $scope.isEdit = false;\r\n }\r\n };\r\n\r\n $scope.emailCallback = function () {\r\n googleAnalyticsService.insertEvent({ page: 'followApp send mail', eventName: 'followApp send mail', action: 'Enter' });\r\n $scope.showError = false;\r\n\r\n if ($('#txtEmail').val())\r\n $scope.mail = $('#txtEmail').val();\r\n if ($scope.emailForm.$valid) {\r\n var dataItems = { 'MailAddress': $scope.mail, 'DocumentId': $state.params.DocumentId }\r\n $followAppConnection.SendEmail(dataItems).then(function (data) {\r\n lobbyUiService.loader.hide();\r\n $dialogService.showGenericPopup({\r\n scope: $scope,\r\n actionText: 'סגור',\r\n text: 'המייל נשלח בהצלחה'\r\n });\r\n }, function (error) {\r\n //$loadingService.hide();\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error, $scope.emailCallback);\r\n });\r\n } else {\r\n $scope.showError = true;\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n $scope.trashCallback = function () {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'followApp delete doc', eventName: 'followApp delete doc', action: 'Enter' });\r\n\r\n var dataItems = { DocumentId: $state.params.DocumentId }\r\n\r\n lobbyUiService.loader.show();\r\n\r\n $followAppConnection.DeleteDocument(dataItems).then(function (response) {\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n var oldDoc = $scope.currentDocBeforeChanges;\r\n\r\n if (oldDoc.ReminderDate) {\r\n\r\n var oldFromDate = moment(oldDoc.ReminderDate, 'DD-MM-YYYYThh:mm');\r\n\r\n oldFromDate = new Date(oldFromDate);\r\n\r\n var oldToDate = new Date(oldFromDate.getTime());\r\n\r\n oldToDate.setHours(oldFromDate.getHours() + 1);\r\n\r\n var oldEvent = { title: oldDoc.DocumentName, fromDate: oldFromDate, toDate: oldToDate }\r\n\r\n calenderService.DeleteEvent(oldEvent);\r\n }\r\n\r\n $scope.GetDocumentInfo();\r\n\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error, $scope.trashCallback);\r\n });\r\n }\r\n\r\n $scope.GetDocumentInfo = function () {\r\n $followAppConnection.GetDocumentInfo().then(function (response) {\r\n\r\n followAppStorage.SetAllDocuments(response.DocumentsInfo);\r\n\r\n followAppStorage.SetSummary(response.CategoriesSummary);\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n $state.go('dw.followApp-category', { CategoryId: $state.params.CategoryId });\r\n\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error, $scope.GetDocumentInfo);\r\n });\r\n }\r\n\r\n $scope.sendToMail = function () {\r\n $dialogService.showEmailPopup({ scope: $scope, actionText: 'שלח', cancelText: 'ביטול', actionCallback: $scope.emailCallback });\r\n }\r\n\r\n $scope.removeDoc = function () {\r\n $dialogService.showTrashPopup({ scope: $scope, actionText: 'אישור', cancelText: 'ביטול', actionCallback: $scope.trashCallback });\r\n }\r\n\r\n //open actionsheet for add picture from camera or gallery\r\n $scope.showActionsheet = function () {\r\n if ($scope.isEdit) {\r\n $ionicActionSheet.show({\r\n buttons: [\r\n { text: 'מצלמה' },\r\n { text: 'גלריה' }\r\n ],\r\n destructiveText: 'ביטול',\r\n destructiveButtonClicked: function () {\r\n return true;\r\n },\r\n buttonClicked: function (index) {\r\n if (index === 0) {\r\n $log.debug('camera');\r\n $cameraService.openCamera().then(function (image) {\r\n $scope.images.push(image);\r\n $timeout(function () {\r\n $ionicSlideBoxDelegate.update();\r\n $ionicSlideBoxDelegate.next();\r\n }, 1000);\r\n\r\n },\r\n function (error) {\r\n $log.debug('error');\r\n if (error.display)\r\n serverResponseService.GenricError(error.desc);\r\n });\r\n return true;\r\n }\r\n if (index === 1) {\r\n $log.debug('gallery');\r\n $cameraService.openGallery().then(function (image) {\r\n $scope.images.push(image);\r\n $timeout(function () {\r\n $ionicSlideBoxDelegate.update();\r\n $ionicSlideBoxDelegate.next();\r\n }, 1000);\r\n\r\n },\r\n function (error) {\r\n $log.debug('error');\r\n if (error.display)\r\n serverResponseService.GenricError(error.desc);\r\n });\r\n return true;\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n $scope.deleteImage = function () {\r\n //get current photo\r\n var currentIndex = $ionicSlideBoxDelegate.currentIndex();\r\n\r\n var imageId = $scope.images[currentIndex].photoId;\r\n\r\n if (imageId) {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n //build data object\r\n var deletePhotoData = {\r\n PhotoId: imageId\r\n }\r\n //activate server request\r\n $followAppConnection.DeletePhoto(deletePhotoData).then(function (response) {\r\n //clear the array\r\n $scope.images.splice(currentIndex, 1);\r\n\r\n followAppStorage.SetNumPicToDoc($scope.images.length);\r\n\r\n //update all the docs\r\n $followAppConnection.GetDocumentInfo().then(function (response2) {\r\n followAppStorage.SetAllDocuments(response2.DocumentsInfo);\r\n lobbyUiService.loader.hide();\r\n }, function (error2) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error2, $scope.deleteImage);\r\n });\r\n $timeout(function () {\r\n $ionicSlideBoxDelegate.update();\r\n }, 600);\r\n if (currentIndex > 0) {\r\n $ionicSlideBoxDelegate.slide(currentIndex - 1);\r\n }\r\n\r\n }, function (error) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error, $scope.deleteImage);\r\n });\r\n } else {\r\n $scope.images.splice(currentIndex, 1);\r\n followAppStorage.SetNumPicToDoc($scope.images.length);\r\n\r\n $timeout(function () {\r\n $ionicSlideBoxDelegate.update();\r\n }, 600);\r\n if (currentIndex > 0) {\r\n $ionicSlideBoxDelegate.slide(currentIndex - 1);\r\n }\r\n }\r\n }\r\n\r\n $scope.removeImage = function () {\r\n $dialogService.showTrashPopup({\r\n scope: $scope,\r\n actionText: 'אישור',\r\n cancelText: 'ביטול',\r\n actionCallback: function () {\r\n $scope.deleteImage();\r\n }\r\n });\r\n\r\n }\r\n\r\n $scope.$on('editDocument', function () {\r\n\r\n if (($scope.documentForm.currencySelect.$viewValue != undefined || $scope.documentForm.currencySelect.$viewValue != null)\r\n && ($scope.documentForm.amount.$viewValue == undefined || $scope.documentForm.amount.$viewValue == null)) {\r\n $scope.documentForm.amount.$setValidity('required', false);\r\n } else {\r\n $scope.documentForm.amount.$setValidity('required', true);\r\n }\r\n\r\n if (\r\n (($scope.documentForm.amount.$viewValue != undefined || $scope.documentForm.amount.$viewValue != null) &&\r\n ($scope.documentForm.amount.$viewValue != ''))\r\n && ($scope.documentForm.currencySelect.$viewValue == undefined || $scope.documentForm.currencySelect.$viewValue == null)\r\n ) {\r\n $scope.documentForm.currencySelect.$setValidity('required', false);\r\n\r\n } else {\r\n $scope.documentForm.currencySelect.$setValidity('required', true);\r\n }\r\n\r\n\r\n if ($scope.documentForm.reminderDate != undefined && $scope.documentForm.reminderDate.$viewValue != null) {\r\n if (moment($scope.documentForm.reminderDate.$viewValue).isBefore(moment()._d)) {\r\n if (moment().format('YYYY-MM-DD') > moment($scope.documentForm.reminderDate.$viewValue).format('YYYY-MM-DD')) {\r\n $scope.documentForm.reminderDate.$setValidity('mindate', false);\r\n } else if (moment().format('hh:mm:ss') > moment($scope.documentForm.reminderDate.$viewValue).format('hh:mm:ss')) {\r\n $scope.documentForm.reminderDate.$setValidity('mindate', true);\r\n $scope.documentForm.reminderDate.$setValidity('minTime', false);\r\n } else {\r\n $scope.documentForm.reminderDate.$setValidity('minTime', true);\r\n }\r\n } else {\r\n $scope.documentForm.reminderDate.$setValidity('minTime', true);\r\n $scope.documentForm.reminderDate.$setValidity('mindate', true);\r\n }\r\n }\r\n\r\n if ($scope.documentForm.$valid) {\r\n\r\n var tagsIdArray = [];\r\n if ($scope.documentForm.tagsSelect &&\r\n $scope.documentForm.tagsSelect.$viewValue) {\r\n for (var j = 0; j < $scope.documentForm.tagsSelect.$viewValue.length; j++) {\r\n tagsIdArray.push($scope.documentForm.tagsSelect.$viewValue[j].TagId);\r\n }\r\n }\r\n\r\n var dynamicFieldArray = [];\r\n for (var k = 0; k < $scope.currentDoc.DynamicFieldsInDocumentList.length; k++) {\r\n var obj = {};\r\n obj.DynamicFieldId = $scope.currentDoc.DynamicFieldsInDocumentList[k].DynamicFieldId;\r\n obj.DynamicFieldContent = $scope.currentDoc.DynamicFieldsInDocumentList[k].DynamicFieldContent;\r\n //obj.Barcode = $scope.currentDoc.DynamicFieldsInDocumentList[k].Barcode;\r\n dynamicFieldArray.push(obj);\r\n }\r\n\r\n if ($scope.documentForm.validityDate != undefined && $scope.documentForm.validityDate.$viewValue != null) {\r\n validityDate = dateChangeFormatService.fixDateForValidity($scope.documentForm.validityDate.$viewValue);\r\n }\r\n if ($scope.documentForm.reminderDate != undefined && $scope.documentForm.reminderDate.$viewValue != null) {\r\n //reminderDate = FixDate($scope.documentForm.reminderDate.$viewValue);\r\n var rd = $scope.documentForm.reminderDate.$viewValue;\r\n\r\n if (rd.length == 16) {\r\n reminderDate = rd + \":00\";\r\n } else {\r\n reminderDate = rd;\r\n }\r\n }\r\n\r\n var imageDataUrls = $cameraService.getPhotos();\r\n\r\n var doc = {\r\n DocumentId: $state.params.DocumentId,\r\n DocumentName: $scope.currentDoc.DocumentName,\r\n CategoryId: $scope.currentDoc.CategoryId,\r\n BranchId: $scope.documentForm.branchesSelect.$viewValue.BranchId,\r\n CreationDate: $scope.currentDoc.CreationDate,\r\n ValidityDate: validityDate,\r\n ReminderDate: reminderDate,\r\n //ReminderComment: $scope.currentDoc.ReminderComment,\r\n Comment: $scope.currentDoc.Comment,\r\n DynamicFieldsInDocument: dynamicFieldArray,\r\n Tags: tagsIdArray,\r\n CurrencyId: ($scope.documentForm.currencySelect && $scope.documentForm.currencySelect.$viewValue)\r\n ? $scope.documentForm.currencySelect.$viewValue.CurrencyId : null,\r\n Amount: $scope.documentForm.amount.$viewValue == undefined ? null : $scope.documentForm.amount.$viewValue,\r\n Photos: imageDataUrls\r\n }\r\n\r\n var createCalenderEvent = function () {\r\n if (doc.ReminderDate) {\r\n var fromDate = moment($scope.documentForm.reminderDate.$viewValue)._d;\r\n\r\n var toDate = new Date(fromDate.getTime());\r\n\r\n toDate.setHours(fromDate.getHours() + 1);\r\n\r\n var calEvents = [];\r\n calEvents.push({\r\n title: doc.DocumentName,\r\n reminder: 120, //notes: doc.ReminderComment,\r\n fromDate: fromDate,\r\n toDate: toDate\r\n });\r\n\r\n var eventsPromise = calenderService.CreateEvents(calEvents);\r\n\r\n if (eventsPromise) {\r\n eventsPromise.then(function (data) {\r\n $log.debug('success calender create event - ' + JSON.stringify(data));\r\n },\r\n function (error) { $log.debug('error calender create event - ' + JSON.stringify(error)); });\r\n }\r\n }\r\n }\r\n\r\n\r\n $scope.updateDocument = function () {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n $followAppConnection.UpdateDocument(doc).then(function (response) {\r\n\r\n $headerService.changeHeader('blankCaption');\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n var oldDoc = $scope.currentDocBeforeChanges;\r\n \r\n if (oldDoc.ReminderDate) {\r\n var oldFromDate = new Date(moment(oldDoc.ReminderDate, 'YYYY-MM-DDThh:mm'));\r\n\r\n var oldToDate = new Date(oldFromDate.getTime());\r\n\r\n oldToDate.setHours(oldFromDate.getHours() + 1);\r\n\r\n var oldEvent = { title: oldDoc.DocumentName, fromDate: oldFromDate, toDate: oldToDate }\r\n\r\n calenderService.DeleteEvent(oldEvent).finally(function () {\r\n createCalenderEvent();\r\n });\r\n } else {\r\n createCalenderEvent();\r\n }\r\n\r\n $followAppConnection.GetDocumentInfo().then(function (response2) {\r\n\r\n followAppStorage.SetAllDocuments(response2.DocumentsInfo);\r\n\r\n var currentDocArray2 = response2.DocumentsInfo.filter(function (d) {\r\n return d.DocumentId == $state.params.DocumentId;\r\n });\r\n $scope.currentDoc = currentDocArray2[0];\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n $scope.isEdit = false;\r\n\r\n //$state.go($state.current, {}, { reload: true });\r\n backService.back();\r\n $scope.init();\r\n\r\n }, function (error2) {\r\n lobbyUiService.loader.hide();\r\n errorService.handleError(error2, $scope.updateDocument);\r\n });\r\n\r\n }, function (error) {\r\n //error\r\n $headerService.changeHeader('blankCaption');\r\n //serverResponseService.GeneralError();\r\n errorService.handleError(error, $scope.updateDocument);\r\n });\r\n }\r\n\r\n $scope.updateDocument();\r\n\r\n } else {\r\n\r\n //iterate through form controls to show the input error color \r\n for (var prop in $scope.documentForm) {\r\n if ($scope.documentForm.hasOwnProperty(prop) && prop.indexOf('$') < 0) {\r\n if ($scope.documentForm[prop].$invalid)\r\n $scope.documentForm[prop].$dirty = true;\r\n }\r\n }\r\n\r\n $dialogService.showValidationPopup({ scope: $scope, actionText: 'סגור', actionCallback: function () { } });\r\n }\r\n });\r\n\r\n $scope.$on('$locationChangeSuccess', function (event, next, original) {\r\n if (next + '?edit' == original) {\r\n $headerService.changeHeader('blankCaption');\r\n $scope.currentDoc = $scope.currentDocBeforeChanges;\r\n $scope.isEdit = false;\r\n //$loadingService.hide();\r\n lobbyUiService.loader.hide();\r\n }\r\n });\r\n\r\n $scope.init();\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .controller('imageGalleryCtrl', imageGalleryCtrl);\r\n\r\n imageGalleryCtrl.$inject = [\r\n '$scope', 'followAppStorage'\r\n ];\r\n\r\n function imageGalleryCtrl($scope, followAppStorage) {\r\n $scope.image = followAppStorage.GetPictureToSee();\r\n $scope.closeModal = function () {\r\n $('.modal').removeClass('clearModal');\r\n $scope.modal.hide();\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .controller('ValidationModalCtrl', ValidationModalCtrl);\r\n\r\n ValidationModalCtrl.$inject = [\r\n '$scope'\r\n ];\r\n\r\n function ValidationModalCtrl($scope) {\r\n $scope.currentForm = $scope.$parent.$parent.documentForm;\r\n $scope.showAmountError = false;\r\n $scope.showCurrencyError = false;\r\n\r\n if (($scope.currentForm.currencySelect.$viewValue != undefined || $scope.currentForm.currencySelect.$viewValue != null)\r\n && ($scope.currentForm.amount.$viewValue == undefined || $scope.currentForm.amount.$viewValue == null)) {\r\n $scope.showAmountError = true;\r\n }\r\n\r\n if ((($scope.currentForm.amount.$viewValue != undefined || $scope.currentForm.amount.$viewValue != null) && $scope.currentForm.amount.$viewValue != '')\r\n && ($scope.currentForm.currencySelect.$viewValue == undefined || $scope.currentForm.currencySelect.$viewValue == null)) {\r\n $scope.showCurrencyError = true;\r\n }\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .directive(\"followappHeader\", followappHeader);\r\n\r\n function followappHeader() {\r\n return {\r\n templateUrl: 'app/followapp/templates/followappHeaderTemplate.html',\r\n restrict: 'E',\r\n replace: true,\r\n controller: [\r\n '$scope', '$stateParams', '$headerService', 'followAppStorage', '$state', 'serverResponseService',\r\n function (scope, $stateParams, $headerService, followAppStorage, $state, serverResponseService) {\r\n var setSettings = function (settings) {\r\n scope.headerSettings = settings;\r\n scope.Text = settings.text;\r\n scope.DisplayButtons = settings.displayButtons;\r\n scope.headerClass = settings.headerClass;\r\n scope.leftText = settings.leftText;\r\n scope.disableLeftButton = settings.disableLeftButton;\r\n }\r\n\r\n scope.CatagoryId = $stateParams.CategoryId;\r\n setSettings($headerService.getSettings());\r\n\r\n scope.goTo = function () {\r\n //console.log(path);\r\n var catSummary = followAppStorage.GetSummary();\r\n var selectedCategory = catSummary.filter(function (d) {\r\n return d.CategoryId == parseInt($state.params.CategoryId);\r\n });\r\n\r\n if (followAppStorage.GetMaxDocumentsPerCustomer() < selectedCategory[0].TotalDocsPerCategory) {\r\n serverResponseService.alertAction(\"הגעת למספר המקסימלי\");\r\n } else {\r\n $state.go('dw.followApp-createDoc', { 'CategoryId': $stateParams.CategoryId });\r\n //$location.path(path);\r\n }\r\n }\r\n\r\n scope.buttonClick = function (args) {\r\n scope.headerSettings.buttonsCallback(args);\r\n }\r\n\r\n scope.$on('headerChange', function (event, args) {\r\n setSettings(args);\r\n });\r\n }\r\n ]\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module('calFollowApp')\r\n .factory('calenderService', calenderService);\r\n\r\n calenderService.$inject = ['$q', '$log'];\r\n\r\n function calenderService($q, $log) {\r\n\r\n var _messages = [];\r\n var _eventsLength = 0;\r\n var deferred = $q.defer();\r\n var createEventSuccess = function (message) {\r\n _messages.push({ status: message == true || message == 'OK', result: message });\r\n\r\n if (_messages.length == _eventsLength) {\r\n $log.debug(JSON.stringify(_messages));\r\n deferred.resolve(_messages);\r\n }\r\n }\r\n\r\n var createEventError = function (message) {\r\n _messages.push({ status: false, result: message });\r\n\r\n if (_messages.length == _eventsLength) {\r\n alert(JSON.stringify(_messages));\r\n deferred.resolve(_messages);\r\n }\r\n //deferred.reject(message);\r\n }\r\n\r\n var FindEvent = function (calEvent) {\r\n if (window.plugins && window.plugins.calendar) {\r\n\r\n window.plugins.calendar.findEvent(calEvent.title, 'Cal', '', calEvent.fromDate, calEvent.toDate,\r\n function (data) {\r\n deferred.resolve(data);\r\n }, function (err) {\r\n $log.debug(JSON.stringify(err));\r\n deferred.reject(err);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var UpdateEvent = function (calEvent) {\r\n DeleteEvent(calEvent).finally(function () {\r\n return CreateEvents(calEvent);\r\n });\r\n }\r\n\r\n var DeleteEvent = function (calEvent) {\r\n if (window.plugins && window.plugins.calendar) {\r\n\r\n window.plugins.calendar.deleteEvent(calEvent.title, 'Cal', '', calEvent.fromDate, calEvent.toDate,\r\n function (data) {\r\n deferred.resolve(data);\r\n }, function (err) {\r\n $log.debug(JSON.stringify(err));\r\n deferred.reject(err);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var CreateEvents = function (events) {\r\n if (events && events.length > 0) {\r\n\r\n var calEvent;\r\n _eventsLength = events.length;\r\n for (var i = 0; i < events.length; i++) {\r\n calEvent = events[i];\r\n if (window.plugins && window.plugins.calendar) {\r\n var calOptions = window.plugins.calendar.getCalendarOptions(); // grab the defaults\r\n calOptions.firstReminderMinutes = calEvent.reminder; // default is 60, pass in null for no reminder (alarm)\r\n\r\n window.plugins.calendar.createEventWithOptions(calEvent.title, 'Cal', calEvent.notes, calEvent.fromDate, calEvent.toDate,\r\n calOptions, createEventSuccess, createEventError);\r\n }\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n var _api = {\r\n CreateEvents: CreateEvents,\r\n DeleteEvent: DeleteEvent\r\n }\r\n\r\n return _api;\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .factory('$cameraService', cameraService);\r\n\r\n cameraService.$inject = ['$q', '$ionicPlatform', '$log', 'serverResponseService', 'followAppStorage'];\r\n\r\n function cameraService($q, $ionicPlatform, $log, serverResponseService, followAppStorage) {\r\n\r\n var _photos = [];\r\n\r\n //private methods\r\n var getPicture = function (args) {\r\n var q = $q.defer();\r\n $ionicPlatform.ready(function () {\r\n var baseCameraOptions = {\r\n quality: 50,\r\n //destinationType: Camera.DestinationType.DATA_URL,\r\n destinationType: Camera.DestinationType.FILE_URI,\r\n encodingType: Camera.EncodingType.JPEG,\r\n targetWidth: 1500\r\n\r\n }\r\n if (device.platform != \"Android\") {\r\n baseCameraOptions[\"targetWidth\"] = 2448;\r\n baseCameraOptions[\"targetHeight\"] = 3264;\r\n }\r\n angular.extend(args.options, baseCameraOptions);\r\n\r\n navigator.camera.getPicture(function (imageURI) {\r\n //if (device.platform != undefined && device.platform == 'Android') {\r\n if (imageURI.substring(0, 21) == \"content://com.android\") {\r\n var photoSplit = imageURI.split(\"%3A\");\r\n imageURI = \"content://media/external/images/media/\" + photoSplit[1];\r\n }\r\n\r\n convertToBase64(imageURI).then(function () {\r\n q.resolve({ fileUrl: imageURI });\r\n navigator.camera.cleanup();\r\n }, function (errorDesc) {\r\n q.reject({ display: true, desc: errorDesc });\r\n navigator.camera.cleanup();\r\n }).finally(function () {\r\n deleteFile(imageURI);\r\n });\r\n }, function (error) {\r\n q.reject({ display: false, desc: error });\r\n }, args.options);\r\n });\r\n return q.promise;\r\n }\r\n\r\n var deleteFile = function (fileName) {\r\n\r\n var that = this;\r\n\r\n if (!fileName) {\r\n console.error(\"No fileName specified. File could not be deleted.\");\r\n return false;\r\n }\r\n\r\n window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function (fileSystem) { // this returns the tmp folder \r\n\r\n // File found\r\n fileSystem.root.getFile(fileName, { create: false }, function (fileEntry) {\r\n fileEntry.remove(function (success) {\r\n //console.log(success);\r\n }, function (error) {\r\n console.error(\"deletion failed: \" + error);\r\n });\r\n }, that.get('fail'));\r\n }, this.get('fail'));\r\n\r\n };\r\n\r\n\r\n var getPhotos = function () {\r\n var imageDataUrls = [];\r\n angular.forEach(_photos, function (value, key) {\r\n this.push(value.dataUrl);\r\n }, imageDataUrls);\r\n\r\n return imageDataUrls;\r\n }\r\n\r\n var clearPhotos = function () {\r\n _photos = [];\r\n }\r\n\r\n\r\n var convertToBase64 = function (imageURI) {\r\n\r\n var q = $q.defer();\r\n\r\n //window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (s) { }, function (e) { });\r\n window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function (s) { }, function (e) { });\r\n window.resolveLocalFileSystemURL(imageURI,\r\n // success callback; generates the FileEntry object needed to convert to Base64 string\r\n function (fileEntry) {\r\n\r\n // convert to Base64 string\r\n function win(file) {\r\n var reader = new FileReader();\r\n reader.onloadend = function (evt) {\r\n var obj = evt.target.result; // this is your Base64 string\r\n var img = obj.substring(obj.indexOf('base64,') + 7);\r\n var numOfPic = followAppStorage.GetNumPicToDoc() + _photos.length;\r\n if (numOfPic < followAppStorage.GetMaxPhotosPerDocument()) {\r\n _photos.push({ dataUrl: img });\r\n q.resolve();\r\n } else {\r\n errorDesc = \"הגעת למספר תמונות מקסימלי שביכולתך לעלות\";\r\n q.reject(errorDesc);\r\n //serverResponseService.GenricError(\"הגעת למספר תמונות מקסימלי שביכולתך לעלות\");\r\n }\r\n\r\n };\r\n reader.readAsDataURL(file);\r\n };\r\n\r\n var fail = function (evt) { };\r\n\r\n fileEntry.file(function (fileObj) {\r\n var fileSizeInMB = fileObj.size / 1000000;\r\n if (fileSizeInMB < parseInt(followAppStorage.GetMaxVolumePerPhoto())) {\r\n fileEntry.file(win, fail);\r\n } else {\r\n errorDesc = \"גודל התמונה עולה על הגודל המקסימלי לצילום תמונה\";\r\n q.reject(errorDesc);\r\n //serverResponseService.GenricError(\"גודל התמונה עולה על הגודל המקסימלי לצילום תמונה\");\r\n }\r\n });\r\n\r\n },\r\n // error callback\r\n function () { }\r\n );\r\n return q.promise;\r\n }\r\n\r\n //public methods\r\n var openCamera = function () {\r\n //Camera - phonegap enum\r\n if (typeof (Camera) != 'undefined') {\r\n // setup device option for using device camera api\r\n var cameraOptions = {\r\n sourceType: Camera.PictureSourceType.CAMERA,\r\n };\r\n\r\n var args = { options: cameraOptions };\r\n return getPicture(args);\r\n } else {\r\n $log.error('openCamera can`t find Phonegap Camera enum');\r\n }\r\n }\r\n\r\n var openGallery = function () {\r\n //Camera - phonegap enum\r\n if (typeof (Camera) != 'undefined') {\r\n // setup device option for using device gallery api\r\n var cameraOptions = {\r\n sourceType: Camera.PictureSourceType.SAVEDPHOTOALBUM,\r\n mediaType: Camera.MediaType.PICTURE\r\n };\r\n\r\n var args = { options: cameraOptions };\r\n return getPicture(args);\r\n } else {\r\n $log.debug('openGallery can`t find Phonegap Camera enum');\r\n }\r\n }\r\n\r\n var _api = {\r\n openGallery: openGallery,\r\n openCamera: openCamera,\r\n getPhotos: getPhotos,\r\n clearPhotos: clearPhotos\r\n }\r\n\r\n return _api;\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .factory('dateChangeFormatService', dateChangeFormatService);\r\n\r\n function dateChangeFormatService() {\r\n var regex_date_yyyy_mm_dd = /^\\d{4}\\-\\d{1,2}\\-\\d{1,2}$/;\r\n var regex_date_mm_dd_yyyy = /(0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])[- \\/.](19|20)\\d\\d/;\r\n var regex_date_dd_mm_yyyy = /^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d$/;\r\n\r\n function _fixDateForValidity(dateToFix) {\r\n var fixedDate;\r\n if (!dateToFix || dateToFix == '')\r\n return dateToFix;\r\n\r\n fixedDate = dateToFix.split('-');\r\n var temp = fixedDate[0];\r\n fixedDate[0] = fixedDate[2];\r\n fixedDate[2] = temp;\r\n return fixedDate.join('-');\r\n }\r\n\r\n return {\r\n fixDateForValidity: _fixDateForValidity,\r\n fixDate: function (value) {\r\n //console.log(\"before \" + value);\r\n\r\n if (regex_date_dd_mm_yyyy.test(value)) {\r\n value = moment(value, 'DD-MM-YYYY').format('YYYY-MM-DD');\r\n return value;\r\n } else if (regex_date_mm_dd_yyyy.test(value)) {\r\n value = moment(value, 'MM-DD-YYYY').format('YYYY-MM-DD');\r\n return value;\r\n } else {\r\n return value;\r\n }\r\n },\r\n fixDate4Search: function (value) {\r\n\r\n if (regex_date_dd_mm_yyyy.test(value)) {\r\n value = moment(value, 'DD-MM-YYYY').format('DD-MM-YYYY');\r\n return value;\r\n } else if (regex_date_mm_dd_yyyy.test(value)) {\r\n value = moment(value, 'MM-DD-YYYY').format('DD-MM-YYYY');\r\n return value;\r\n } else if (regex_date_yyyy_mm_dd.test(value)) {\r\n value = moment(value, 'YYYY-MM-DD').format('DD-MM-YYYY');\r\n return value;\r\n } else {\r\n return value;\r\n }\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .factory('$dialogService', dialogService);\r\n\r\n dialogService.$inject = ['$ionicPopup'];\r\n\r\n function dialogService($ionicPopup) {\r\n\r\n var modalArray = [];\r\n\r\n var showPopup = function (args) {\r\n //var deferred = $q.defer();\r\n args.buttons = [];\r\n args.buttons.push({\r\n text: args.actionText,\r\n type: 'followapp-button-left',\r\n onTap: function (e) {\r\n if (angular.isFunction(args.actionCallback)) {\r\n {\r\n if (args.actionCallback() == false) {\r\n e.preventDefault();\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n });\r\n\r\n if (args.cancelText) {\r\n args.buttons.push({\r\n text: args.cancelText,\r\n type: 'followapp-button-right',\r\n onTap: function (e) {\r\n if (angular.isFunction(args.cancelCallback)) {\r\n args.cancelCallback();\r\n }\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n var popupOption = {\r\n cssClass: !args.cssClass ? 'followapp-popup' : args.cssClass,\r\n buttons: args.buttons,\r\n scope: args.scope\r\n };\r\n\r\n if (args.buttons.length == 1) {\r\n popupOption.cssClass = 'followapp-popup one-button';\r\n }\r\n\r\n if (args.templateText) {\r\n popupOption.template = args.templateText;\r\n\r\n } else {\r\n popupOption.templateUrl = args.template;\r\n }\r\n\r\n var popup = $ionicPopup.show(popupOption);\r\n\r\n modalArray.push(popup);\r\n return modalArray.length - 1;\r\n //return deferred.promise;\r\n }\r\n\r\n var showGenericPopup = function (args) {\r\n args.templateText = '
' +\r\n '
' +\r\n '
' + args.text + '
';\r\n return showPopup(args);\r\n }\r\n\r\n var showEmailPopup = function (args) {\r\n args.template = 'app/followapp/templates/DialogEMailTemplate.html';\r\n return showPopup(args);\r\n }\r\n\r\n var showTrashPopup = function (args) {\r\n args.template = 'app/followapp/templates/DialogDeleteTemplate.html';\r\n\r\n return showPopup(args);\r\n }\r\n var showValidationPopup = function (args) {\r\n args.template = 'app/followapp/templates/DialogValidationTemplate.html';\r\n\r\n return showPopup(args);\r\n }\r\n\r\n var _api = {\r\n showEmailPopup: showEmailPopup,\r\n showTrashPopup: showTrashPopup,\r\n showValidationPopup: showValidationPopup,\r\n showGenericPopup: showGenericPopup\r\n }\r\n\r\n return _api;\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .factory('documentService', documentService);\r\n\r\n documentService.$inject = ['followAppStorage', '$state'];\r\n\r\n function documentService(followAppStorage, $state) {\r\n var _currentDocs = [];\r\n var _currentDocument;\r\n var _freeSearch = null;\r\n var _currentCategory;\r\n\r\n var getDocs = function (categoryId) {\r\n\r\n var docs = [];\r\n if (categoryId)\r\n docs = getCategoryDocuments(categoryId);\r\n else\r\n docs = followAppStorage.GetAllDocuments();\r\n\r\n return docs;\r\n }\r\n\r\n var getCategoryDocuments = function (id) {\r\n var categoryId;\r\n\r\n if (id)\r\n categoryId = id;\r\n else\r\n categoryId = $state.current.params.CategoryId;\r\n\r\n var docs = followAppStorage.GetAllDocuments();\r\n var result = null;\r\n if (docs) {\r\n result = docs.filter(function (d) {\r\n return d.CategoryId == categoryId;\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n CurrentCategory: function (category) {\r\n if (category || angular.isDefined(category))\r\n _currentCategory = category;\r\n\r\n return _currentCategory;\r\n },\r\n GetCategoryDocuments: function (id) {\r\n return getCategoryDocuments(id);\r\n },\r\n GetCategoryById: function (id) {\r\n var result = followAppStorage.GetSummary().filter(function (d) {\r\n return d.CategoryId == id;\r\n });\r\n\r\n if (result && result.length === 1)\r\n return result[0];\r\n\r\n return null;\r\n },\r\n GetDocumentsByCreationDateRange: function (fromDate, toDate, categoryId) {\r\n\r\n var docs = getDocs(categoryId);\r\n var result = docs.filter(function (d) {\r\n var creationDate = moment(d.CreationDate, 'DD-MM-YYYY').format('YYYY-MM-DD');\r\n return creationDate >= fromDate && creationDate <= toDate;\r\n });\r\n\r\n return result;\r\n },\r\n GetDocumentsByValidityDateRange: function (fromDate, toDate, categoryId) {\r\n\r\n var docs = getDocs(categoryId);\r\n var result = docs.filter(function (d) {\r\n var ValidityDate = moment(d.ValidityDate, 'DD-MM-YYYY').format('YYYY-MM-DD');\r\n return ValidityDate >= fromDate && ValidityDate <= toDate;\r\n });\r\n\r\n return result;\r\n },\r\n GetBranchDocuments: function (branchId) {\r\n\r\n var docs = getDocs(null);\r\n var result = docs.filter(function (d) {\r\n return d.BranchId == branchId;\r\n });\r\n\r\n return result;\r\n },\r\n GetDocumentsByAmountRange: function (minAmount, maxAmount, categoryId) {\r\n\r\n var docs = getDocs(categoryId);\r\n var result = docs.filter(function (d) {\r\n return d.Amount >= minAmount && d.Amount <= maxAmount;\r\n });\r\n\r\n return result;\r\n },\r\n GetDocumentsByName: function (name, categoryId) {\r\n\r\n var docs = getDocs(categoryId);\r\n var result = docs.filter(function (d) {\r\n return d.DocumentName.indexOf(name) > -1;\r\n });\r\n\r\n return result;\r\n },\r\n CurrentDocument: function (document) {\r\n if (document)\r\n _currentDocument = document;\r\n\r\n return _currentDocument;\r\n },\r\n CurrentDocuments: function (docs) {\r\n if (docs)\r\n _currentDocs = docs;\r\n\r\n return _currentDocs;\r\n },\r\n setFreeSearch: function (value) {\r\n return _freeSearch = value;\r\n },\r\n getFreeSearch: function () {\r\n return _freeSearch;\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .factory('$followAppConnection', followAppConnection);\r\n\r\n followAppConnection.$inject = ['connection'];\r\n\r\n function followAppConnection(connection) {\r\n\r\n var urlPrefix = 'api/calFollowApp/';\r\n\r\n return {\r\n GetDocumentInfo: function () {\r\n\r\n return connection.genericConnection('GET', urlPrefix + 'GetDocumentInfo?', connection.versionAndOSParams);\r\n },\r\n UpdateDocument: function (data) {\r\n\r\n return connection.genericConnection('POST', urlPrefix + 'SetDocumentChanges?', connection.versionAndOSParams, data);\r\n },\r\n SaveNewDocument: function (data) {\r\n\r\n return connection.genericConnection('POST', urlPrefix + 'SaveNewDocument?', connection.versionAndOSParams, data);\r\n },\r\n DeleteDocument: function (data) {\r\n\r\n return connection.genericConnection('POST', urlPrefix + 'DeleteDocument?', connection.versionAndOSParams, data);\r\n },\r\n MetaData: function () {\r\n return connection.genericConnection('GET', urlPrefix + 'GetMetaData?', connection.versionAndOSParams);\r\n },\r\n GetDocumentPhoto: function (docId, photoId) {\r\n\r\n return connection.genericConnection('GET', urlPrefix + 'GetDocumentPhoto?docId=' + docId + '&photoId=' + photoId + '&', connection.versionAndOSParams);\r\n },\r\n DeletePhoto: function (data) {\r\n\r\n return connection.genericConnection('POST', urlPrefix + 'DeletePhoto?', connection.versionAndOSParams, data);\r\n },\r\n SendEmail: function (data) {\r\n\r\n return connection.genericConnection('POST', urlPrefix + 'SendEmail?', connection.versionAndOSParams, data);\r\n }\r\n }\r\n\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .factory('followAppStorage', followAppStorage);\r\n\r\n followAppStorage.$inject = ['$angularCacheFactory'];\r\n\r\n function followAppStorage($angularCacheFactory) {\r\n\r\n var cache = $angularCacheFactory('followAppCache');\r\n return {\r\n GetSummary: function () {\r\n return cache.get('CatagorySummary');\r\n },\r\n SetSummary: function (value) {\r\n cache.put('CatagorySummary', value);\r\n },\r\n SetAllDocuments: function (value) {\r\n cache.put('Documents', value);\r\n },\r\n GetAllDocuments: function () {\r\n return cache.get('Documents');\r\n },\r\n SetPictureToSee: function (value) {\r\n cache.put('BigPicture', value);\r\n },\r\n GetPictureToSee: function () {\r\n return cache.get('BigPicture');\r\n },\r\n SetBranches: function (value) {\r\n cache.put('Branches', value);\r\n },\r\n GetBranches: function () {\r\n return cache.get('Branches');\r\n },\r\n SetCatagories: function (value) {\r\n cache.put('Catagories', value);\r\n },\r\n GetCatagories: function () {\r\n return cache.get('Catagories');\r\n },\r\n SetCurerncies: function (value) {\r\n cache.put('Curerncies', value);\r\n },\r\n GetCurerncies: function () {\r\n return cache.get('Curerncies');\r\n },\r\n GetReminderDate: function () {\r\n return cache.get('ReminderDate');\r\n },\r\n SetReminderDate: function (value) {\r\n cache.put('ReminderDate', value);\r\n },\r\n GetValidityDate: function () {\r\n return cache.get('ValidityDate');\r\n },\r\n SetValidityDate: function (value) {\r\n cache.put('ValidityDate', value);\r\n },\r\n GetNumPicToDoc: function () {\r\n return cache.get('NumPicToDoc');\r\n },\r\n SetNumPicToDoc: function (value) {\r\n cache.put('NumPicToDoc', value);\r\n },\r\n SetMaxVolumePerPhoto: function (value) {\r\n cache.put('MaxVolumePerPhoto', value);\r\n },\r\n GetMaxVolumePerPhoto: function (value) {\r\n return cache.get('MaxVolumePerPhoto');\r\n },\r\n SetMaxPhotosPerDocument: function (value) {\r\n cache.put('MaxPhotosPerDocument', value);\r\n },\r\n GetMaxPhotosPerDocument: function (value) {\r\n return cache.get('MaxPhotosPerDocument');\r\n },\r\n SetMaxDocumentsPerCustomer: function (value) {\r\n cache.put('MaxDocumentsPerCustomer', value);\r\n },\r\n GetMaxDocumentsPerCustomer: function (value) {\r\n return cache.get('MaxDocumentsPerCustomer');\r\n },\r\n DestroyCache: function () {\r\n $angularCacheFactory.clearAll();\r\n }\r\n\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .factory('$headerService', headerService);\r\n\r\n headerService.$inject = ['$rootScope', '$log', '$timeout', '$location', 'documentService', '$stateParams', '$state'];\r\n\r\n function headerService($rootScope, $log, $timeout, $location, documentService, $stateParams, $state) {\r\n\r\n var defaultCallback = function (args) {\r\n var view = 'dw.followApp-searchDoc';\r\n if (args.button == 'left') { //switch to search view\r\n\r\n }\r\n\r\n $state.go(view, { CategoryId: $stateParams.CategoryId });\r\n }\r\n\r\n var editCallback = function (args) {\r\n if (args.button == 'left') { //save \r\n $rootScope.$broadcast('editDocument', null);\r\n }\r\n }\r\n\r\n var addCallback = function (args) {\r\n if (args.button == 'left') { //save \r\n $rootScope.$broadcast('saveNewDocument', null);\r\n\r\n\r\n }\r\n }\r\n\r\n var searchCallback = function (args) {\r\n if (args.button == 'left') { //search redirect \r\n if (args.categoryId)\r\n $state.go('dw.followApp-searchDoc-CategoryId/' + args.categoryId);\r\n else\r\n $state.go('dw.followApp-searchDoc');\r\n }\r\n }\r\n\r\n var docs;\r\n // var docs = documentService.GetCategoryDocuments();\r\n if (!$stateParams.CategoryId || $stateParams.CategoryId == \"\") {\r\n docs = null;\r\n } else {\r\n docs = documentService.GetCategoryDocuments($stateParams.CategoryId);\r\n }\r\n var numOfDocs = 0;\r\n if (docs != null)\r\n numOfDocs = docs.length;\r\n\r\n var settings = [];\r\n settings['default'] = { text: numOfDocs + ' מסמכים', headerClass: 'default-header', buttonsCallback: defaultCallback, disableLeftButton: false, displayButtons: true };\r\n settings['blankCaption'] = { text: '', buttonsCallback: defaultCallback, headerClass: 'default-header', disableLeftButton: false, displayButtons: true };\r\n settings['add'] = { text: 'הוספת מסמך', headerClass: 'followapp-add-header', leftText: 'שמור', disableLeftButton: false, buttonsCallback: addCallback, displayButtons: true };\r\n settings['edit'] = { text: 'עריכת מסמך', headerClass: 'followapp-edit-header', leftText: 'שמור', disableLeftButton: false, buttonsCallback: editCallback, displayButtons: true };\r\n settings['search'] = { text: 'חיפוש מתקדם', headerClass: 'followapp-search-header', buttonsCallback: searchCallback, displayButtons: false };\r\n settings['searchResult'] = { text: 'תוצאות חיפוש', headerClass: 'followapp-searchresult-header', displayButtons: true, buttonsCallback: defaultCallback };\r\n var currentSettings = settings['default'];\r\n\r\n var changeHeader = function (args) {\r\n $timeout(function () {\r\n if (typeof (args) === 'string') {\r\n currentSettings = settings[args];\r\n if (args === 'default') {\r\n //var docs = documentService.GetCategoryDocuments();\r\n var docs = documentService.GetCategoryDocuments($stateParams.CategoryId);\r\n var numOfDocs = 0;\r\n if (docs != null)\r\n numOfDocs = docs.length;\r\n\r\n currentSettings.disableLeftButton = numOfDocs === 0;\r\n\r\n currentSettings.text = numOfDocs + ' מסמכים';\r\n } else if (args === 'search') {\r\n if ($stateParams.CategoryId) {\r\n var category = documentService.GetCategoryById($stateParams.CategoryId);\r\n currentSettings.text = 'חיפוש מתקדם - ' + category.CategoryName;\r\n } else {\r\n currentSettings.text = 'חיפוש מתקדם';\r\n }\r\n }\r\n } else\r\n currentSettings = args;\r\n $rootScope.$broadcast('headerChange', currentSettings);\r\n }, 100);\r\n }\r\n\r\n var getSettings = function () {\r\n return currentSettings;\r\n }\r\n\r\n var _api = {\r\n changeHeader: changeHeader,\r\n getSettings: getSettings\r\n }\r\n\r\n return _api;\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .factory('$loadingService', loadingService);\r\n\r\n loadingService.$inject = ['$rootScope', '$ionicLoading'];\r\n\r\n function loadingService($rootScope, $ionicLoading) {\r\n var _instance;\r\n var _startTime;\r\n\r\n var show = function () {\r\n _instance = $ionicLoading.show({\r\n content: 'אנא המתן ',\r\n animation: 'fade-in',\r\n showBackdrop: true,\r\n maxwidth: 200\r\n });\r\n\r\n _startTime = new Date();\r\n }\r\n\r\n var hide = function () {\r\n var timeoutDelay = new Date() - _startTime;\r\n if (timeoutDelay < 300)\r\n timeoutDelay = 300;\r\n else\r\n timeoutDelay = 0;\r\n\r\n setTimeout(function () {\r\n $ionicLoading.hide();\r\n }, timeoutDelay);\r\n }\r\n\r\n var _api = {\r\n show: show,\r\n hide: hide\r\n }\r\n\r\n return _api;\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calFollowApp')\r\n .factory('parseTodayService', parseTodayService);\r\n\r\n function parseTodayService() {\r\n var now = new Date();\r\n var month = (now.getMonth() + 1);\r\n var day = now.getDate();\r\n if (month < 10)\r\n month = \"0\" + month;\r\n if (day < 10) day = \"0\" + day;\r\n var today = now.getFullYear() + '-' + month + '-' + day;\r\n return today;\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module('calFollowApp')\r\n .factory('serverResponseService', serverResponseService);\r\n\r\n serverResponseService.$inject = ['$q'];\r\n\r\n function serverResponseService($q) {\r\n var severity = {\r\n isSuccess: function (code) {\r\n return code.toUpperCase() === \"S\";\r\n },\r\n isInfo: function (code) {\r\n return code.toUpperCase() === \"I\";\r\n },\r\n isWarning: function (code) {\r\n return code.toUpperCase() === \"W\";\r\n },\r\n isError: function (code) {\r\n return code.toUpperCase() === \"E\";\r\n }\r\n }\r\n\r\n var GenricError = function (msg) {\r\n alertAction(msg);\r\n }\r\n\r\n var GeneralError = function () {\r\n alertAction('לא ניתן להשלים כרגע את הפעולה. אנא נסה שנית במועד מאוחר יותר');\r\n }\r\n\r\n var alertAction = function (message, dialogBox) {\r\n if (navigator.notification) {\r\n var deferred = $q.defer();\r\n\r\n var buttonName;\r\n if (dialogBox)\r\n buttonName = dialogBox.OkButtonText;\r\n\r\n if (!buttonName) {\r\n buttonName = 'סגור';\r\n }\r\n\r\n navigator.notification.alert(message, function () { deferred.resolve(); }, '', buttonName);\r\n return deferred.promise;\r\n } else {\r\n alert(message);\r\n }\r\n }\r\n\r\n var confirmAction = function (message, dialogBox) {\r\n if (navigator.notification) {\r\n var deferred = $q.defer();\r\n var buttons = [dialogBox.OkButtonText, dialogBox.CancelButtonText];\r\n navigator.notification.confirm(message, function (button) { deferred.resolve(button); }, '', buttons);\r\n return deferred.promise;\r\n } else {\r\n return confirm(message);\r\n }\r\n }\r\n\r\n var redirectToWallet = function (message, pendingView) {\r\n alertAction(message, pendingView);\r\n }\r\n\r\n var Translator = {\r\n GetDocumentInfo: {\r\n response: function (response) {\r\n var _response = response,\r\n _statusSeverity = response.Status.SeverityCode,\r\n _statusNumber = parseInt(response.Status.SeverityNumber);\r\n\r\n\r\n response.DialogBox = { Content: 'text', OkButtonText: 'ok text', CancelButtonText: 'cancel text' };\r\n\r\n if (severity.isSuccess(_statusSeverity)) {\r\n return angular.extend(_response, { success: true });\r\n } else if (severity.isWarning(_statusSeverity)) {\r\n var actionCallBack;\r\n var pendingView;\r\n if ([1, 2, 3].indexOf(_statusNumber) > -1) {\r\n actionCallBack = redirectToWallet;\r\n pendingView = 'dw.lobby';\r\n } else {\r\n actionCallBack = confirmAction;\r\n pendingView = 'dw.login';\r\n }\r\n\r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: actionCallBack, pendingView: pendingView });\r\n } else if (severity.isError(_statusSeverity) && _statusNumber == 1) {\r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: confirmAction, pendingView: pendingView });\r\n } else {\r\n // fallback to default error \r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: confirmAction, pendingView: pendingView });\r\n }\r\n }\r\n },\r\n UpdateDocument: {\r\n response: function (response) {\r\n var _response = response,\r\n _statusSeverity = response.Status.SeverityCode,\r\n _statusNumber = parseInt(response.Status.SeverityNumber);\r\n\r\n\r\n response.DialogBox = { Content: 'text' };\r\n\r\n if (severity.isSuccess(_statusSeverity)) {\r\n return angular.extend(_response, { success: true });\r\n } else if (severity.isWarning(_statusSeverity)) {\r\n var actionCallBack;\r\n var pendingView;\r\n if ([1, 2, 3, 5, 7, 8, 9].indexOf(_statusNumber) > -1) {\r\n actionCallBack = alertAction;\r\n } else {\r\n actionCallBack = confirmAction;\r\n }\r\n\r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: actionCallBack });\r\n } else if (severity.isError(_statusSeverity) && _statusNumber == 1) {\r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: confirmAction });\r\n } else {\r\n // fallback to default error \r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: confirmAction });\r\n }\r\n }\r\n },\r\n SaveNewDocument: {\r\n response: function (response) {\r\n var _response = response,\r\n _statusSeverity = response.Status.SeverityCode,\r\n _statusNumber = parseInt(response.Status.SeverityNumber);\r\n\r\n response.DialogBox = { Content: response.DialogBox.Content, OkButtonText: response.DialogBox.OkButton, CancelButtonText: response.DialogBox.CancelButton };\r\n\r\n if (severity.isSuccess(_statusSeverity)) {\r\n return angular.extend(_response, { success: true, message: response.DialogBox.Content, action: confirmAction });\r\n } else if (severity.isWarning(_statusSeverity)) {\r\n var actionCallBack;\r\n var pendingView;\r\n var isRetry = false;\r\n if ([1, 2, 3, 4, 5, 7, 8, 12, 13].indexOf(_statusNumber) > -1) {\r\n actionCallBack = alertAction;\r\n } else {\r\n actionCallBack = confirmAction;\r\n }\r\n\r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: actionCallBack });\r\n } else if (severity.isInfo(_statusSeverity) && _statusNumber == 1) {\r\n return angular.extend(_response, { success: true, message: response.DialogBox.Content, action: confirmAction });\r\n } else if (severity.isError(_statusSeverity) && _statusNumber == 1) {\r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: confirmAction });\r\n } else {\r\n // fallback to default error \r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: confirmAction });\r\n }\r\n }\r\n },\r\n DeleteDocument: {\r\n response: function (response) {\r\n var _response = response,\r\n _statusSeverity = response.Status.SeverityCode,\r\n _statusNumber = parseInt(response.Status.SeverityNumber);\r\n\r\n\r\n response.DialogBox = { Content: 'text' };\r\n\r\n if (severity.isSuccess(_statusSeverity)) {\r\n return angular.extend(_response, { success: true });\r\n } else if (severity.isWarning(_statusSeverity)) {\r\n var actionCallBack;\r\n var pendingView;\r\n\r\n if ([1, 2, 3, 5].indexOf(_statusNumber) > -1) {\r\n actionCallBack = alertAction;\r\n } else {\r\n actionCallBack = confirmAction;\r\n }\r\n\r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: actionCallBack });\r\n } else if (severity.isError(_statusSeverity) && _statusNumber == 1) {\r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: confirmAction });\r\n } else {\r\n // fallback to default error \r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: confirmAction });\r\n }\r\n }\r\n },\r\n DeletePhoto: {\r\n response: function (response) {\r\n var _response = response,\r\n _statusSeverity = response.Status.SeverityCode,\r\n _statusNumber = parseInt(response.Status.SeverityNumber);\r\n\r\n response.DialogBox = { Content: 'text', OkButtonText: 'ok text', CancelButtonText: 'cancel text' };\r\n\r\n if (severity.isSuccess(_statusSeverity)) {\r\n return angular.extend(_response, { success: true });\r\n } else if (severity.isWarning(_statusSeverity)) {\r\n var actionCallBack;\r\n var pendingView;\r\n if ([1, 2, 3, 5].indexOf(_statusNumber) > -1) {\r\n actionCallBack = alertAction;\r\n } else {\r\n actionCallBack = confirmAction;\r\n }\r\n\r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: actionCallBack });\r\n } else if (severity.isError(_statusSeverity) && _statusNumber == 1) {\r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: confirmAction });\r\n } else {\r\n // fallback to default error \r\n return angular.extend(_response, { success: false, message: response.DialogBox.Content, action: confirmAction });\r\n }\r\n }\r\n }\r\n }\r\n\r\n var _api = {\r\n Translator: Translator,\r\n GeneralError: GeneralError,\r\n GenricError: GenricError\r\n }\r\n\r\n return _api;\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb', []);\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb').config(cellebRoute);\r\n\r\n cellebRoute.$inject = ['$stateProvider'];\r\n\r\n function cellebRoute($stateProvider) {\r\n $stateProvider\r\n .state('dw.celeb-home', {\r\n url: \"/benefits/celeb/home\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/celleb/templates/home.html\",\r\n controller: \"clbHomeCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.celeb-biz-details', {\r\n url: \"/benefits/celeb/home/:bizId\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/celleb/templates/bizDetails.html\",\r\n controller: \"clbBizDetailsCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.celeb-prepay', {\r\n url: \"/benefits/celeb/prepay/\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/celleb/templates/prepay.html\",\r\n controller: \"clbPrepayCtrl\"\r\n }\r\n }\r\n })\r\n .state('dw.celeb-payment', {\r\n url: \"/benefits/celeb/payment\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/celleb/templates/payment.html\",\r\n controller: \"clbPaymentCtrl\"\r\n }\r\n }\r\n });\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .controller('clbBizDetailsCtrl', clbBizDetailsCtrl);\r\n\r\n clbBizDetailsCtrl.$inject = [\r\n '$scope', 'appData', 'errorService', 'lobbyUiService', 'googleAnalyticsService', 'clbData', 'clbRestService'\r\n ];\r\n\r\n function clbBizDetailsCtrl($scope, appData, errorService, lobbyUiService, googleAnalyticsService, clbData, clbRestService) {\r\n\r\n $scope.clbData = clbData;\r\n\r\n $scope.data = {\r\n categories: '',\r\n promotionsDetails: {}\r\n }\r\n\r\n $scope.init = function () {\r\n\r\n if (!$scope.clbData.selectedBiz) {\r\n return;\r\n }\r\n\r\n googleAnalyticsService.insertEvent({ page: 'restaurant details', eventName: 'restaurant details - enter', action: 'enter' });\r\n\r\n $scope.setCategories();\r\n\r\n if ($scope.clbData.selectedBiz.promo_id && $scope.clbData.selectedBiz.promo_id > $scope.clbData.metaData.CellebNull) {\r\n $scope.getPromotionsDetails();\r\n }\r\n };\r\n\r\n $scope.goToPayment = function () {\r\n googleAnalyticsService.insertEvent({ page: 'restaurant details', eventName: 'go to code generator', action: 'click' });\r\n\r\n\r\n lobbyUiService.navigate('dw.celeb-prepay', { restrictedExplicitly: true });\r\n }\r\n\r\n $scope.getPromotionsDetails = function () {\r\n\r\n clbRestService.getPromotionsDetails(clbData.selectedBiz.biz_id).then(function (response) {\r\n $scope.data.promotionsDetails = response.promotionsDetails;\r\n });\r\n }\r\n\r\n $scope.setCategories = function () {\r\n if ($scope.clbData.selectedBiz.tags_list) {\r\n $scope.clbData.selectedBiz.tags_list.forEach(function (obj) {\r\n $scope.data.categories += obj + ', ';\r\n });\r\n\r\n $scope.data.categories = $scope.data.categories.slice(0, -2);\r\n }\r\n }\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .controller('clbHomeCtrl', clbHomeCtrl);\r\n\r\n clbHomeCtrl.$inject = [\r\n '$scope', 'appData', 'errorService', 'lobbyUiService', 'googleAnalyticsService', 'clbRestService', '_', 'clbData', 'clbPopUpService', 'clbCacheService',\r\n 'clbGeoService', '$ionicScrollDelegate', '$timeout'\r\n ];\r\n\r\n function clbHomeCtrl($scope, appData, errorService, lobbyUiService, googleAnalyticsService, clbRestService, _, clbData, clbPopUpService, clbCacheService,\r\n clbGeoService, $ionicScrollDelegate, $timeout) {\r\n \r\n $scope.clbData = clbData;\r\n\r\n var fromCache = clbCacheService.sessionStorage.get('clbSearchState');\r\n\r\n if (fromCache)\r\n $scope.data = fromCache;\r\n else {\r\n\r\n\r\n $scope.data = {\r\n filterKey: '',\r\n totalRows: 0,\r\n searchResults: {},\r\n selectedLocation: {},\r\n currentPageNum: 0,\r\n searchData: {},\r\n canLoadMore: false,\r\n scrollPos: 0,\r\n remainedMe: false\r\n }\r\n }\r\n\r\n // Put any unique ID here. The point of this is: every time the controller is recreated\r\n // we want to load the correct remembered scroll values.\r\n //delegate.rememberScrollPosition('search-scroll-handler');\r\n\r\n var useCache = false;\r\n\r\n $scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState) {\r\n\r\n useCache = fromState && fromState.name.indexOf('dw.celeb') >= 0;\r\n\r\n if (useCache) {\r\n //console.log('use cache');\r\n } else {\r\n //console.log('clear cache');\r\n clbCacheService.sessionStorage.remove('clbSearchState');\r\n\r\n $scope.data = {\r\n filterKey: '',\r\n totalRows: 0,\r\n searchResults: {},\r\n selectedLocation: {},\r\n currentPageNum: 0,\r\n searchData: {},\r\n canLoadMore: false,\r\n scrollPos: 0,\r\n remainedMe: false\r\n }\r\n }\r\n\r\n if (!$scope.clbData.metaData) {\r\n clbRestService.getMetaData().then(function (response) {\r\n $scope.clbData.metaData = response;\r\n $scope.init();\r\n }, function (error) {\r\n errorService.handleError(error);\r\n }\r\n );\r\n } else {\r\n $scope.init();\r\n }\r\n\r\n\r\n });\r\n\r\n $scope.init = function () {\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n googleAnalyticsService.insertEvent({ page: 'choose restaurant', eventName: 'choose restaurant - enter', action: 'enter' });\r\n\r\n $scope.clbData.metaData.CellebLocations = _.sortBy($scope.clbData.metaData.CellebLocations, function (obj) {\r\n return obj.idx;\r\n });\r\n\r\n $scope.data.remainedMe = clbCacheService.localStorage.get('dotNotRemainedMe');\r\n\r\n var initSearchPage = function () {\r\n\r\n if (useCache && clbCacheService.sessionStorage.get('clbSearchState')) {\r\n //delegate.scrollToRememberedPosition();\r\n\r\n } else {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n clbGeoService.getSelfLocation().then(function (geoData) {\r\n $scope.data.searchData.isGpsOn = true;\r\n //console.log('GPS ON!');\r\n $scope.data.searchData.selfLatitude = geoData.coords.latitude;\r\n $scope.data.searchData.selfLongitude = geoData.coords.longitude;\r\n $scope.data.selectedLocation = $scope.getNearMeLocation();\r\n }, function () {\r\n\r\n //console.log('GPS OFF!');\r\n\r\n clbPopUpService.geoServiceInfo();\r\n\r\n $scope.data.selectedLocation = $scope.getDefaultLocation();\r\n });\r\n }\r\n\r\n angular.element('ion-view.content-view section.clb-home-container .clb-serach-output-container').ready(function () {\r\n\r\n var navHeight = parseFloat(angular.element('ion-nav-bar.content-header').outerHeight());\r\n\r\n var searchbarHeight = parseFloat(angular.element('ion-view.content-view section.clb-home-container .clb-search-container').outerHeight());\r\n\r\n var deviceHeight = parseFloat(angular.element(this).height());\r\n\r\n var newHeight = parseInt(Math.ceil(deviceHeight - searchbarHeight - navHeight)) + 1;\r\n\r\n angular.element('ion-view.content-view section.clb-home-container .clb-serach-output-container').css('height', newHeight);\r\n });\r\n };\r\n\r\n if (!useCache && (!$scope.data.remainedMe || $scope.data.remainedMe == false)) {\r\n clbPopUpService.infoPage($scope).then(function (checked) {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'show help', eventName: 'next - leave help', action: 'click' });\r\n\r\n if (checked && checked == true) {\r\n googleAnalyticsService.insertEvent({ page: 'show help', eventName: 'don’t show help', action: 'click' });\r\n clbCacheService.localStorage.set('dotNotRemainedMe', true);\r\n }\r\n\r\n initSearchPage();\r\n });\r\n } else {\r\n initSearchPage();\r\n }\r\n\r\n };\r\n\r\n $scope.onFocus = function () {\r\n }\r\n\r\n $scope.onBlur = function () {\r\n //console.log('search blur!');\r\n }\r\n\r\n $scope.$watch('data.filterKey', function (newVal, oldVal) {\r\n if (newVal != oldVal && (newVal == '' || newVal.length >= 3))\r\n $scope.search(newVal);\r\n });\r\n\r\n $scope.$watch('data.selectedLocation', function (newVal, oldVal) {\r\n if (newVal != oldVal && ($scope.data.filterKey == '' || $scope.data.filterKey.length >= 3))\r\n $scope.search($scope.data.filterKey);\r\n });\r\n\r\n\r\n $scope.getNearMeLocation = function () {\r\n return _.find($scope.clbData.metaData.CellebLocations, function (x) { return x.location_id === 1; });\r\n }\r\n\r\n $scope.getDefaultLocation = function () {\r\n return _.find($scope.clbData.metaData.CellebLocations, function (x) { return x.location_id === 1020; });\r\n }\r\n\r\n //$scope.doRefresh = function () {\r\n // console.log('refresh');\r\n // $scope.$broadcast('scroll.refreshComplete');\r\n //}\r\n\r\n $scope.loadMore = function () {\r\n var pos = $ionicScrollDelegate.$getByHandle('resultsHandler').getScrollPosition();\r\n\r\n if (!pos)\r\n return;\r\n\r\n $scope.data.scrollPos = pos.top;\r\n\r\n if ($scope.data.scrollPos == 0)\r\n return;\r\n\r\n var maxScroll = $ionicScrollDelegate.$getByHandle('resultsHandler').getScrollView().getScrollMax().top;\r\n\r\n if ($scope.data.scrollPos < maxScroll)\r\n return;\r\n\r\n $scope.data.canLoadMore = true;\r\n\r\n $scope.data.currentPageNum++;\r\n\r\n if ($scope.data.searchData) {\r\n $scope.data.searchData.currentPageNum = $scope.data.currentPageNum;\r\n\r\n clbRestService.searchRest($scope.data.searchData).then(function (response) {\r\n\r\n var results = $scope.proccessResults(response);\r\n\r\n if (results.list && results.count > 0) {\r\n $scope.updateResults(results, true);\r\n }\r\n }, function (error) {\r\n errorService.handleError(error);\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n $scope.hideLoadMore();\r\n });\r\n }\r\n }\r\n\r\n $scope.hideLoadMore = function () {\r\n $timeout(function () {\r\n $scope.data.canLoadMore = false;\r\n }, 100);\r\n }\r\n\r\n ionic.on('native.keyboardshow', function (e) {\r\n //console.log('Keyboard height is: ' + e.keyboardHeight);\r\n\r\n var curHeight = $('.clb-serach-output-container').height();\r\n\r\n if (navigator) {\r\n if (navigator.userAgent.toLowerCase().indexOf('nexus 5') > 0) {\r\n curHeight += 46;\r\n }\r\n }\r\n\r\n $('ion-content.scroll-content.ionic-scroll.has-header').height(curHeight - e.keyboardHeight);\r\n\r\n }, window);\r\n\r\n ionic.on('native.keyboardhide', function () {\r\n $('ion-content.scroll-content.ionic-scroll.has-header').css('height', 'auto');\r\n }, window);\r\n\r\n $scope.search = function (key) {\r\n \r\n $scope.data.searchData.prefix = key;\r\n\r\n $scope.data.currentPageNum = 0;\r\n\r\n $scope.data.searchData.radius = $scope.data.selectedLocation.radius;\r\n\r\n $scope.data.searchData.currentPageNum = $scope.data.currentPageNum;\r\n\r\n if ($scope.data.selectedLocation.location_id == 0 || $scope.data.selectedLocation.location_id == 1) {\r\n\r\n if (!$scope.data.searchData.isGpsOn) {\r\n clbPopUpService.geoServiceInfo().then(function () {\r\n\r\n $scope.data.selectedLocation = $scope.getDefaultLocation();\r\n });\r\n lobbyUiService.loader.hide();\r\n return;\r\n }\r\n\r\n $scope.data.searchData.latitude = $scope.data.searchData.selfLatitude;\r\n\r\n $scope.data.searchData.longitude = $scope.data.searchData.selfLongitude;\r\n\r\n } else {\r\n\r\n $scope.data.searchData.latitude = $scope.data.selectedLocation.left_coord;\r\n\r\n $scope.data.searchData.longitude = $scope.data.selectedLocation.right_coord;\r\n\r\n }\r\n\r\n clbRestService.searchRest($scope.data.searchData).then(function (response) {\r\n\r\n var results = $scope.proccessResults(response);\r\n\r\n $scope.updateResults(results);\r\n\r\n }, function (error) {\r\n errorService.handleError(error);\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n $scope.hideLoadMore();\r\n });\r\n }\r\n\r\n $scope.proccessResults = function (response) {\r\n\r\n var retVal = {};\r\n\r\n retVal.list = _.filter(response.ws_result.list, function (obj) {\r\n return ~obj.name.toLowerCase().indexOf($scope.data.searchData.prefix);\r\n });\r\n\r\n retVal.count = response.ws_result.head.count;\r\n\r\n if ($scope.data.searchData.isGpsOn) {\r\n var selfLocation = {\r\n latitude: $scope.data.searchData.selfLatitude,\r\n longitude: $scope.data.searchData.selfLongitude\r\n };\r\n\r\n return clbRestService.transform(retVal, selfLocation);\r\n\r\n } else {\r\n return clbRestService.transform(retVal);\r\n }\r\n }\r\n\r\n $scope.updateResults = function (response, append) {\r\n\r\n if (append) {\r\n $scope.data.searchResults.count += response.count;\r\n var concatedArray = $scope.data.searchResults.list.concat(response.list);\r\n $scope.data.searchResults.list = concatedArray;\r\n\r\n } else {\r\n $scope.data.searchResults = response;\r\n\r\n $timeout(function () {\r\n $ionicScrollDelegate.$getByHandle('resultsHandler').scrollTop();\r\n }, 0);\r\n }\r\n\r\n clbCacheService.sessionStorage.set('clbSearchState', $scope.data);\r\n }\r\n\r\n $scope.selectBiz = function (index) {\r\n $scope.clbData.selectedBiz = $scope.data.searchResults.list[index];\r\n\r\n googleAnalyticsService.insertEvent({ page: 'celleb - search restaurant', eventName: 'choose restaurant Id: ' + $scope.clbData.selectedBiz.biz_id, action: 'click' });\r\n\r\n lobbyUiService.go('dw.celeb-biz-details', { bizId: $scope.clbData.selectedBiz.biz_id });\r\n }\r\n\r\n $scope.openLocationFilter = function () {\r\n clbPopUpService.locations($scope.clbData.metaData.CellebLocations).then(function (response) {\r\n if (response) {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n if ($scope.data.searchData.isGpsOn) {\r\n $scope.data.selectedLocation = response;\r\n } else {\r\n clbGeoService.getSelfLocation().then(function (geoData) {\r\n $scope.data.searchData.isGpsOn = true;\r\n //console.log('GPS ON!');\r\n $scope.data.searchData.selfLatitude = geoData.coords.latitude;\r\n $scope.data.searchData.selfLongitude = geoData.coords.longitude;\r\n }).finally(function () {\r\n $scope.data.selectedLocation = response;\r\n googleAnalyticsService.insertEvent({ page: 'locations popup', eventName: 'Choose location ' + location_name, action: '' });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n.controller('clbPaymentCtrl', clbPaymentCtrl);\r\n\r\n clbPaymentCtrl.$inject = [\r\n '$scope', 'clbData', 'googleAnalyticsService', 'lobbyUiService'\r\n ];\r\n\r\n function clbPaymentCtrl($scope, clbData, googleAnalyticsService, lobbyUiService) {\r\n\r\n $scope.clbData = clbData;\r\n\r\n $scope.data = {\r\n time: 0,\r\n bgColor: '#9CD036'\r\n }\r\n\r\n if (!lobbyUiService.connection.isLoggedIn() || !$scope.clbData.paymentDetails) {\r\n lobbyUiService.navigate('dw.celeb-home');\r\n return;\r\n }\r\n\r\n $scope.init = function () {\r\n if ($scope.clbData.paymentDetails) {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'display code', eventName: 'display code - enter', action: 'enter' });\r\n\r\n $scope.data.time = $scope.clbData.paymentDetails.CodeSecCountDown;\r\n\r\n $scope.data.circleText = $scope.buildTimeCircleText();\r\n }\r\n };\r\n\r\n $scope.buildTimeCircleText = function () {\r\n\r\n var parent = '
';\r\n\r\n parent += '

' + $scope.clbData.paymentDetails.PaymentCode + '

';\r\n\r\n parent += '

שעת הזמנת הקוד ' + moment($scope.clbData.paymentDetails.CodeGenTime).format('HH:mm') + '

';\r\n\r\n parent += '
';\r\n\r\n parent += '

תוקף עד לשעה
' + moment($scope.clbData.paymentDetails.CodeEndTime).format('HH:mm') + '

';\r\n\r\n parent += '
';\r\n\r\n return parent;\r\n }\r\n\r\n $scope.init();\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .controller('clbPrepayCtrl', clbPrepayCtrl);\r\n\r\n clbPrepayCtrl.$inject = [\r\n '$scope', 'appData', 'errorService', 'lobbyUiService', 'googleAnalyticsService', '$ionicSlideBoxDelegate', 'clbRestService', '$timeout', 'clbPopUpService',\r\n 'clbCacheService', 'clbData'\r\n ];\r\n\r\n function clbPrepayCtrl($scope, appData, errorService, lobbyUiService, googleAnalyticsService, $ionicSlideBoxDelegate, clbRestService, $timeout, clbPopUpService,\r\n clbCacheService, clbData) {\r\n\r\n $scope.appData = appData;\r\n\r\n $scope.clbData = clbData;\r\n\r\n $scope.data = {\r\n remainedMe: clbCacheService.localStorage.get('dotNotRemainedMe')\r\n }\r\n\r\n $scope.account = {\r\n bankAccounts: [],\r\n currentAccountIndex: 0,\r\n currentCardIndex: 0,\r\n showSlider: true\r\n }\r\n\r\n $scope.init = function () {\r\n\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.celeb-prepay\" });\r\n return;\r\n } else {\r\n googleAnalyticsService.insertEvent({ page: 'generate code', eventName: 'generate code - enter', action: 'enter' });\r\n\r\n if (!$scope.clbData.metaData) {\r\n clbRestService.getMetaData().then(function (response) {\r\n $scope.clbData.metaData = response;\r\n $scope.initPage();\r\n }, function (error) {\r\n errorService.handleError(error);\r\n }\r\n );\r\n } else {\r\n $scope.initPage();\r\n }\r\n }\r\n };\r\n\r\n $scope.initPage = function () {\r\n if (!$scope.appData.BankAccounts) {\r\n clbRestService.getBankAccounts().then(function (accounts) {\r\n\r\n $scope.account.bankAccounts = accounts;\r\n\r\n $scope.updateAccountSlider(0).then(function () {\r\n $scope.updateCardSlider(0);\r\n });\r\n\r\n }, function (error) {\r\n errorService.handleError(error);\r\n return;\r\n });\r\n } else {\r\n $scope.account.bankAccounts = clbRestService.filteredBankAccounts($scope.appData.BankAccounts);\r\n $scope.updateAccountSlider(0).then(function () {\r\n $scope.updateCardSlider(0);\r\n });\r\n }\r\n }\r\n\r\n $scope.hasAccount = function () {\r\n return $scope.account.bankAccounts && $scope.account.bankAccounts.length > 0;\r\n }\r\n\r\n $scope.accountNext = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').next();\r\n\r\n }, 500);\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n }\r\n\r\n $scope.accountPrev = function () {\r\n\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').previous();\r\n\r\n }, 500);\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n }\r\n\r\n $scope.accountSlideChange = function (index) {\r\n\r\n $scope.account.showSlider = false;\r\n\r\n $scope.account.currentAccountIndex = index;\r\n\r\n $scope.updateCardSlider(0);\r\n }\r\n\r\n $scope.cardSlideChange = function (index) {\r\n $scope.account.currentCardIndex = index;\r\n }\r\n\r\n $scope.updateAccountSlider = function (index) {\r\n var _promise = $timeout(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').update();\r\n }, 200).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('accountHandler').slide(index);\r\n $scope.account.showSlider = true;\r\n });\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n $scope.updateCardSlider = function (index) {\r\n var _promise = $timeout(function () {\r\n\r\n $ionicSlideBoxDelegate.$getByHandle('cardsHandler').update();\r\n\r\n }, 500).then(function () {\r\n $ionicSlideBoxDelegate.$getByHandle('cardsHandler').slide(index);\r\n $scope.account.showSlider = true;\r\n }).finally(function () {\r\n $scope.slideBoxReady = true;\r\n lobbyUiService.loader.hide();\r\n });\r\n\r\n $scope.$on(\"$destroy\", function () {\r\n $timeout.cancel(_promise);\r\n });\r\n\r\n return _promise;\r\n }\r\n\r\n $scope.to = function (index) {\r\n $ionicSlideBoxDelegate.$getByHandle('cardsHandler').slide(index);\r\n }\r\n\r\n $scope.goToCustomerService = function () {\r\n lobbyUiService.go('dw.service-home');\r\n }\r\n\r\n $scope.openInfoPage = function () {\r\n\r\n $scope.data.remainedMe = clbCacheService.localStorage.get('dotNotRemainedMe');\r\n\r\n clbPopUpService.infoPage($scope).then(function (checked) {\r\n\r\n googleAnalyticsService.insertEvent({ page: 'show help', eventName: 'next - leave help', action: 'click' });\r\n\r\n if (checked && checked == true) {\r\n googleAnalyticsService.insertEvent({ page: 'show help', eventName: 'don’t show help', action: 'click' });\r\n }\r\n\r\n clbCacheService.localStorage.set('dotNotRemainedMe', checked);\r\n });\r\n }\r\n\r\n $scope.genratePaymentCode = function () {\r\n lobbyUiService.loader.show();\r\n clbRestService.genratePaymentCode({\r\n SessionId: '11111111',\r\n UniqueCardNum: $scope.account.bankAccounts[$scope.account.currentAccountIndex].Cards[$scope.account.currentCardIndex].Id\r\n }).then(function (response) {\r\n $scope.clbData.paymentDetails = response;\r\n googleAnalyticsService.insertEvent({ page: 'generate code', eventName: 'generat code - confirm', action: 'click' });\r\n lobbyUiService.go('dw.celeb-payment');\r\n }, function (error) {\r\n errorService.handleError(error);\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n }\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .directive(\"clbAccountSlider\", clbAccountSlider);\r\n\r\n function clbAccountSlider() {\r\n return {\r\n templateUrl: 'app/celleb/templates/clbAccounts.html',\r\n restrict: 'A',\r\n replace: true\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .directive(\"clbCardSlider\", clbCardSlider);\r\n\r\n function clbCardSlider() {\r\n return {\r\n templateUrl: 'app/celleb/templates/clbCards.html',\r\n restrict: 'A',\r\n replace: true,\r\n link: function postLink(scope, iElement, iAttrs) {\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n.directive(\"clbFooter\", clbFooter);\r\n\r\n clbFooter.$inject = ['$timeout', 'lobbyUiService', 'googleAnalyticsService', '$window'];\r\n\r\n function clbFooter($timeout, lobbyUiService, googleAnalyticsService, $window) {\r\n return {\r\n templateUrl: 'app/celleb/templates/clbFooter.html',\r\n restrict: 'AE',\r\n replace: true,\r\n link: function (scope, element, attrs) {\r\n\r\n scope.callBiz = function () {\r\n googleAnalyticsService.insertEvent({ page: 'restaurant details', eventName: 'call restaurant', action: 'click' });\r\n }\r\n\r\n scope.navigateWaze = function () {\r\n\r\n var lat = scope.clbData.selectedBiz.latitude;\r\n\r\n var lon = scope.clbData.selectedBiz.longitude;\r\n\r\n var wazeUrl = 'waze://?ll=' + lat + ',' + lon + '&navigate=yes';\r\n\r\n googleAnalyticsService.insertEvent({ page: 'restaurant details', eventName: 'navigate to restaurant', action: 'click' });\r\n\r\n if (device)\r\n {\r\n if (device.platform == \"Android\") {\r\n navigator.startApp.check(\"com.waze\", function () { /* success */\r\n window.open(wazeUrl, '_system', 'location=yes');\r\n },\r\n function (error) { /* error */\r\n //console.log(error);\r\n lobbyUiService.openExternal(\"market://details?id=com.waze\");\r\n });\r\n } else {\r\n navigator.startApp.check(\"waze://\", function () { /* success */\r\n window.open(wazeUrl, '_system', 'location=yes');\r\n //lobbyUiService.openExternal(wazeUrl);\r\n },\r\n function (error) { /* error */\r\n //console.log(error);\r\n lobbyUiService.openExternal(\"http://itunes.apple.com/us/app/id323229106\");\r\n });\r\n }\r\n }\r\n \r\n }\r\n\r\n scope.setFooterHeight = function () {\r\n\r\n if (!scope.clbData.selectedBiz)\r\n return;\r\n\r\n var elements = 1;\r\n\r\n if (scope.clbData.selectedBiz.phone_number) {\r\n var phone = scope.clbData.selectedBiz.phone_number.split('/');\r\n //get first number\r\n phone = phone[0];\r\n elements++;\r\n }\r\n\r\n if (scope.clbData.selectedBiz.address) {\r\n elements++;\r\n }\r\n\r\n //var currBizDetailsHeight = parseFloat(angular.element('.clb-biz-details').css('height'));\r\n //var currFooterHeight = parseFloat(angular.element('.clb-footer-nav-container').css('height'));\r\n //var newIconHeight = parseFloat(angular.element('.clb-footer-nav-container .clb-footer-nav > img').css('height'));\r\n\r\n var currFooterHeight = parseFloat(angular.element($window).height()) * 0.45;\r\n\r\n var currBizDetailsHeight = parseFloat(angular.element($window).height()) * 0.55;\r\n\r\n var newFooterHeight = (currFooterHeight * elements / 3);\r\n\r\n var headerHeight = parseFloat(angular.element('ion-nav-bar.content-header').css('height'));\r\n\r\n angular.element('.clb-footer-nav').css('height', (100 / elements) + '%');\r\n\r\n angular.element('.clb-biz-details').css('height', (currBizDetailsHeight + currFooterHeight - newFooterHeight - headerHeight) + 'px');\r\n\r\n angular.element('.clb-footer-nav-container').css('height', newFooterHeight + headerHeight + 'px');\r\n\r\n //angular.element('.clb-footer-nav-container .clb-footer-nav > img').css('height', newIconHeight * (1) + headerHeight / 2 + 'px');\r\n }\r\n\r\n $timeout(function () {\r\n scope.setFooterHeight();\r\n }, 0);\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .directive(\"timeCircle\", timeCircle);\r\n\r\n function timeCircle() {\r\n return {\r\n template: '
',\r\n restrict: 'AE',\r\n replace: true,\r\n scope: {\r\n time: '=duration',\r\n color: '=color',\r\n text: '=text'\r\n },\r\n link: function postLink(scope, element, attrs) {\r\n\r\n $('#countDownTimer').ready(function () {\r\n\r\n var timeCirclWeidth = 320;\r\n\r\n if (window.innerWidth && window.innerWidth > 0) {\r\n timeCirclWeidth = window.innerWidth;\r\n }\r\n\r\n $('#countDownTimer').css('width', timeCirclWeidth);\r\n\r\n $('#countDownTimer').attr('data-timer', scope.time).TimeCircles({\r\n \"total_duration\": scope.time,\r\n \"count_past_zero\": false,\r\n \"start_angle\": 0,\r\n \"animation\": \"smooth\",\r\n \"bg_width\": 0.02,\r\n \"fg_width\": 0.02,\r\n \"time\": {\r\n \"Days\": {\r\n \"color\": scope.color,\r\n \"show\": false\r\n },\r\n \"Hours\": {\r\n \"color\": scope.color,\r\n \"show\": false\r\n },\r\n \"Minutes\": {\r\n \"color\": scope.color,\r\n \"show\": false\r\n },\r\n \"Seconds\": {\r\n \"color\": scope.color,\r\n \"show\": true\r\n }\r\n }\r\n });\r\n\r\n /*\r\n .addListener(function (unit, value, total) {\r\n\r\n if (total <= 0) {\r\n setTimeout(function () {\r\n lobbyUiService.go('dw.celeb-prepay');\r\n }, 3000);\r\n }\r\n });\r\n */\r\n\r\n });\r\n\r\n $('.textDiv_Seconds').ready(function () {\r\n $('.textDiv_Seconds').html(scope.text);\r\n });\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .factory('clbCacheService', clbCacheService);\r\n\r\n clbCacheService.$inject = ['$angularCacheFactory'];\r\n\r\n function clbCacheService($angularCacheFactory) {\r\n\r\n var clbCache = $angularCacheFactory('clbLocalStorage', {\r\n storageMode: 'localStorage'\r\n });\r\n\r\n var clbSessionCache = $angularCacheFactory('cellebCache');\r\n\r\n return {\r\n localStorage: {\r\n set: function (key, value) {\r\n clbCache.put(key, value);\r\n },\r\n get: function (key) {\r\n return clbCache.get(key);\r\n },\r\n remove: function (key) {\r\n clbCache.remove(key);\r\n }\r\n },\r\n sessionStorage: {\r\n set: function (key, value) {\r\n clbSessionCache.put(key, value);\r\n },\r\n get: function (key) {\r\n return clbSessionCache.get(key);\r\n },\r\n remove: function (key) {\r\n clbSessionCache.remove(key);\r\n }\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .factory('clbConnectionService', clbConnectionService);\r\n\r\n clbConnectionService.$inject = ['$http', '$q', 'appSettings', '$timeout'];\r\n\r\n function clbConnectionService($http, $q, appSettings, $timeout) {\r\n\r\n var cellebFefaultError = [\r\n {\r\n response: {\r\n Response: {\r\n Status: {\r\n SeverityCode: 'E',\r\n SeverityNumber: '0001'\r\n },\r\n DialogBox: {\r\n Content: 'בשל תקלה לא ניתן להשלים את הפעולה. יש לנסות מאוחר יותר',\r\n Title: ' ',\r\n OKButtonText: 'נסה שנית',\r\n CancelButtonText: 'סגור'\r\n\r\n }\r\n }\r\n },\r\n action: \"cellebHttp\"\r\n }\r\n ];\r\n\r\n var _call = function (data, method, url) {\r\n\r\n var _defer = $q.defer();\r\n\r\n var baseurl = appSettings.cellebServer;\r\n\r\n \r\n if (appSettings.env === \"DEV\") {\r\n var response = { \"status\": \"0\", \"msg\": \"OK\", \"ws_result\": { \"head\": { \"count\": 15 }, \"list\": [{ \"phone_number\": \"03-5724219\", \"synonym\": null, \"name\": \"\\u05e7\\u05e4\\u05d4 \\u05d2'\\u05d5\\u05dc\\u05d9\\u05d9\\u05d8 - \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05ea\\u05e4\\u05d5\\u05e6\\u05d5\\u05ea \\u05d9\\u05e9\\u05e8\\u05d0\\u05dc 13 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": -1, \"longitude\": 34.814559000000003, \"promo_id\": 12125, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": null, \"biz_id\": 15885, \"latitude\": 32.059784000000001, \"logo\": \"Res15885_4.jpg\", \"discount_val\": -1, \"description\": \"\\u05e0\\u05d9\\u05ea\\u05df \\u05dc\\u05e8\\u05db\\u05d5\\u05e9 \\u05e1\\u05dc\\u05d8\\u05d9\\u05dd, \\u05e1\\u05e0\\u05d3\\u05d5\\u05d5\\u05d9\\u05e6\\u05d9\\u05dd, \\u05e9\\u05ea\\u05d9\\u05d4 \\u05e7\\u05dc\\u05d4 \\u05d5\\u05e9\\u05ea\\u05d9\\u05d4 \\u05d7\\u05de\\u05d4\" }, { \"phone_number\": \"03-5714006\", \"synonym\": null, \"name\": \"\\u05d0\\u05e6\\u05dc \\u05de\\u05dc\\u05d9 - \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05d4\\u05e8\\u05e6\\u05d5\\u05d2 27 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": -1, \"longitude\": 34.817233999999999, \"promo_id\": 8477, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"[\\\"\\u05db\\u05e9\\u05e8\\\",\\\"\\u05d1\\u05e9\\u05e8\\\"]\", \"biz_id\": 8103, \"latitude\": 32.061281000000001, \"logo\": \"Res8103_1.jpg\", \"discount_val\": -1, \"description\": \"\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d1\\u05e9\\u05e8\\u05d9\\u05ea \\u05d1\\u05e2\\u05dc\\u05ea \\u05ea\\u05e4\\u05e8\\u05d9\\u05d8 \\u05e2\\u05e9\\u05d9\\u05e8 \\u05d5\\u05de\\u05d2\\u05d5\\u05d5\\u05df \\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1. \\r\\n\\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\\r\\n\\r\\n\" }, { \"phone_number\": \"03-7308811\", \"synonym\": null, \"name\": \"\\u05d9\\u05d5\\u05e1\\u05e3 \\u05d4\\u05d7\\u05d5\\u05de\\u05d5\\u05e1\\u05d9\\u05d4 - \\u05e8\\u05de\\u05ea \\u05d2\\u05df\", \"address\": \"\\u05e9\\u05dc\\u05dd 2 \\u05e8\\u05de\\u05ea \\u05d2\\u05df\", \"chain_id\": -1, \"longitude\": 34.812874000000001, \"promo_id\": 13182, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"\", \"biz_id\": 16108, \"latitude\": 32.053699000000002, \"logo\": \"Res16108_1.jpg\", \"discount_val\": -1, \"description\": \"\\u05d7\\u05d5\\u05de\\u05d5\\u05e1 \\u05d2\\u05dc\\u05d9\\u05dc\\u05d9 \\u05d7\\u05dd \\u05d5\\u05d8\\u05e8\\u05d9 \\u05d4\\u05e0\\u05d8\\u05d7\\u05df \\u05d1\\u05de\\u05e7\\u05d5\\u05dd. \\u05de\\u05d9 \\u05e9\\u05dc\\u05d0 \\u05e9\\u05d1\\u05e2 \\u05d9\\u05e7\\u05d1\\u05dc \\u05de\\u05d9\\u05dc\\u05d5\\u05d9 \\u05d7\\u05d5\\u05e4\\u05e9\\u05d9 \\u05e2\\u05dc \\u05d7\\u05e9\\u05d1\\u05d5\\u05df \\u05d4\\u05d1\\u05d9\\u05ea.\\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1.\\r\\n\\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\" }, { \"phone_number\": \"03-7312088\", \"synonym\": null, \"name\": \"\\u05e1\\u05d5\\u05d6\\u05df \\u05d1\\u05d9\\u05ea \\u05d0\\u05d5\\u05db\\u05dc \\u05d0\\u05d7\\u05e8-\\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05e2\\u05de\\u05d9\\u05e9\\u05d1 45 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": -1, \"longitude\": 34.806994000000003, \"promo_id\": 8483, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"[\\\"\\u05dc\\u05d0 \\u05db\\u05e9\\u05e8\\\",\\\"\\u05d1\\u05e9\\u05e8\\\"]\", \"biz_id\": 8142, \"latitude\": 32.061107, \"logo\": \"Res8142_1.jpg\", \"discount_val\": -1, \"description\": \"\\u05d0\\u05d5\\u05db\\u05dc \\u05d1\\u05d9\\u05ea\\u05d9, \\u05d7\\u05d5\\u05de\\u05d5\\u05e1, \\u05ea\\u05d1\\u05e9\\u05d9\\u05dc\\u05d9\\u05dd \\u05d5\\u05e2\\u05dc \\u05d4\\u05d0\\u05e9 \\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1. \\r\\n\\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\\r\\n\\r\\n\" }, { \"phone_number\": \"035733155\", \"synonym\": null, \"name\": \"\\u05e7\\u05e4\\u05d4 \\u05d5\\u05e0\\u05d9\\u05e1-\\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05e2\\u05de\\u05d9\\u05e9\\u05d1 45 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": -1, \"longitude\": 34.806983000000002, \"promo_id\": 8486, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"\", \"biz_id\": 8171, \"latitude\": 32.061101000000001, \"logo\": \"Res8171_1.jpg\", \"discount_val\": -1, \"description\": \"\\u05d1\\u05d1\\u05d9\\u05ea \\u05d4\\u05e7\\u05e4\\u05d4 \\u05ea\\u05d5\\u05db\\u05dc\\u05d5 \\u05dc\\u05de\\u05e6\\u05d5\\u05d0 \\u05ea\\u05e4\\u05e8\\u05d9\\u05d8 \\u05d9\\u05e9\\u05e8\\u05d0\\u05dc\\u05d9- \\u05d0\\u05d9\\u05d8\\u05dc\\u05e7\\u05d9, \\u05e2\\u05e9\\u05d9\\u05e8 \\u05d1\\u05db\\u05dc \\u05d8\\u05d5\\u05d1. \\u05de\\u05d2\\u05d5\\u05d5\\u05df \\u05d0\\u05e8\\u05d5\\u05d7\\u05d5\\u05ea \\u05d1\\u05d5\\u05e7\\u05e8 \\u05de\\u05e4\\u05e0\\u05e7\\u05d5\\u05ea, \\u05db\\u05e8\\u05d9\\u05db\\u05d9\\u05dd, \\u05d8\\u05d5\\u05e1\\u05d8\\u05d9\\u05dd \\u05d5\\u05e1\\u05dc\\u05d8\\u05d9\\u05dd, \\u05d1\\u05d9\\u05e0\\u05d9\\u05d4\\u05dd \\u05e1\\u05dc\\u05d8 \\u05d5\\u05e0\\u05d9\\u05e1 \\u05d4\\u05de\\u05d5\\u05e8\\u05db\\u05d1 \\u05de\\u05d1\\u05e8\\u05d5\\u05e1\\u05e7\\u05d8\\u05d4 \\u05d2\\u05d1\\u05d9\\u05e0\\u05ea \\u05e2\\u05d9\\u05d6\\u05d9\\u05dd \\u05d1\\u05e8\\u05d5\\u05d8\\u05d1 \\u05e4\\u05e1\\u05d8\\u05d5, \\u05d0\\u05e0\\u05d8\\u05d9\\u05e4\\u05e1\\u05d8\\u05d9 \\u05d5\\u05de\\u05d5\\u05d2\\u05e9 \\u05e2\\u05dd \\u05e9\\u05dc\\u05dc \\u05d7\\u05e1\\u05d5\\u05ea \\u05d5\\u05d9\\u05e8\\u05e7\\u05d5\\u05ea \\u05d8\\u05e8\\u05d9\\u05d9\\u05dd. \\u05d4\\u05e4\\u05d9\\u05e0\\u05d4 \\u05d4\\u05d0\\u05d9\\u05d8\\u05dc\\u05e7\\u05d9\\u05ea \\u05de\\u05d4\\u05d5\\u05d5\\u05d4 \\u05d0\\u05ea \\u05d2\\u05d5\\u05dc\\u05ea \\u05d4\\u05db\\u05d5\\u05ea\\u05e8\\u05ea \\u05e9\\u05dc \\u05e7\\u05e4\\u05d4 \\u05d5\\u05e0\\u05d9\\u05e1.\\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1. \\r\\n\\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\" }, { \"phone_number\": \"1700700713\", \"synonym\": null, \"name\": \"\\u05e6\\u05d5\\u05e7\\u05d4 - \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05e7\\u05e0\\u05d9\\u05d5\\u05df \\u05e2\\u05d6\\u05e8\\u05d9\\u05d0\\u05dc\\u05d9 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": -1, \"longitude\": 34.810203000000001, \"promo_id\": 16575, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"\", \"biz_id\": 15979, \"latitude\": 32.066487000000002, \"logo\": \"Res15979_1.jpg\", \"discount_val\": -1, \"description\": \"\\u05de\\u05d8\\u05d1\\u05d7 \\u05d0\\u05e1\\u05d9\\u05d9\\u05ea\\u05d9.\\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1.\\r\\n \\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\" }, { \"phone_number\": \"03-7316826/1700-70-80-23 \\u05e9\\u05dc\\u05d5\\u05d7\\u05d4 1\", \"synonym\": null, \"name\": \"\\u05d0\\u05d5\\u05e9\\u05d9 \\u05d0\\u05d5\\u05e9\\u05d9 - \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05d9\\u05e6\\u05d7\\u05e7 \\u05e8\\u05d1\\u05d9\\u05df 53 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": 5042, \"longitude\": 34.810006000000001, \"promo_id\": 12892, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"\", \"biz_id\": 8139, \"latitude\": 32.066384999999997, \"logo\": \"5042.jpg\", \"discount_val\": -1, \"description\": \"\\r\\n\\u05e8\\u05e9\\u05ea \\u05d4\\u05de\\u05ea\\u05de\\u05d7\\u05d4 \\u05de\\u05d6\\u05d4 \\u05e9\\u05e0\\u05d9\\u05dd \\u05e8\\u05d1\\u05d5\\u05ea \\u05d1\\u05d4\\u05db\\u05e0\\u05ea \\u05e1\\u05d5\\u05e9\\u05d9 \\u05d0\\u05d9\\u05db\\u05d5\\u05ea\\u05d9, \\u05d0\\u05d5\\u05ea\\u05e0\\u05d8\\u05d9, \\u05de\\u05d2\\u05d5\\u05d5\\u05df \\u05d5\\u05d9\\u05e6\\u05d9\\u05e8\\u05ea\\u05d9. \\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1.\\r\\n\\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1.\" }, { \"phone_number\": \"052-6407965\", \"synonym\": \"\\u05e9\\u05d5\\u05d5\\u05d0\\u05e8\\u05de\\u05d4 v \\u05e4\\u05e8\\u05d2\\u05d9\\u05d5\\u05ea - \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"name\": \"\\u05e9\\u05d5\\u05d5\\u05d0\\u05e8\\u05de\\u05d4 v \\u05e4\\u05e8\\u05d2\\u05d9\\u05d5\\u05ea - \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05e7\\u05e0\\u05d9\\u05d5\\u05df \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd, \\u05d3\\u05e8\\u05da \\u05d9\\u05e6\\u05d7\\u05e7 \\u05e8\\u05d1\\u05d9\\u05df 53 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": -1, \"longitude\": 34.810245000000002, \"promo_id\": 9174, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"\", \"biz_id\": 15166, \"latitude\": 32.06671, \"logo\": \"Res15166_1.jpg\", \"discount_val\": -1, \"description\": \"\\u05e9\\u05d5\\u05d5\\u05d0\\u05e8\\u05de\\u05d4 \\u05e4\\u05e8\\u05d2\\u05d9\\u05d5\\u05ea \\u05d4\\u05db\\u05dc \\u05e2\\u05dc \\u05d4\\u05d0\\u05e9\\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1. \\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\" }, { \"phone_number\": \"050-6531158\", \"synonym\": null, \"name\": \"\\u05d7\\u05d5\\u05de\\u05d5\\u05e1 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd - \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05d3\\u05e8\\u05da \\u05d9\\u05e6\\u05d7\\u05e7 \\u05e8\\u05d1\\u05d9\\u05df 53 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": -1, \"longitude\": 34.810194000000003, \"promo_id\": 13077, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"\", \"biz_id\": 15801, \"latitude\": 32.066727, \"logo\": \"Res15801_1.jpg\", \"discount_val\": -1, \"description\": \"\\u05d7\\u05d5\\u05de\\u05d5\\u05e1\\u05d9\\u05d4 \\u05de\\u05e6\\u05d5\\u05d9\\u05e0\\u05ea \\u05d1\\u05e7\\u05e0\\u05d9\\u05d5\\u05df \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd \\u05d4\\u05de\\u05d2\\u05d9\\u05e9\\u05d4 \\u05d7\\u05d5\\u05de\\u05d5\\u05e1 \\u05d0\\u05d9\\u05db\\u05d5\\u05ea\\u05d9, \\u05db\\u05d3\\u05d5\\u05e8\\u05d9 \\u05e4\\u05dc\\u05d0\\u05e4\\u05dc \\u05d5\\u05de\\u05d2\\u05d5\\u05d5\\u05df \\u05e1\\u05dc\\u05d8\\u05d9\\u05dd.\\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1.\\r\\n \\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\" }, { \"phone_number\": \"03-7321465\", \"synonym\": \"\\u05e7\\u05e4\\u05d4 \\u05dc\\u05e0\\u05d3\\u05d5\\u05d5\\u05e8 - \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"name\": \"\\u05e7\\u05e4\\u05d4 \\u05dc\\u05e0\\u05d3\\u05d5\\u05d5\\u05e8 - \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05d0\\u05d9\\u05dc\\u05ea 1 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": -1, \"longitude\": 34.806666, \"promo_id\": 9254, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"\", \"biz_id\": 15350, \"latitude\": 32.070042999999998, \"logo\": \"Res14909_1.png\", \"discount_val\": -1, \"description\": \"\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1. \\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\" }, { \"phone_number\": \"037315770\", \"synonym\": null, \"name\": \"\\u05de\\u05d9\\u05e7\\u05e1\\u05dc\\u05d8 - \\u05ea\\u05dc \\u05d0\\u05d1\\u05d9\\u05d1\", \"address\": \"\\u05d3\\u05e8\\u05da \\u05d4\\u05e9\\u05dc\\u05d5\\u05dd 71 \\u05ea\\u05dc \\u05d0\\u05d1\\u05d9\\u05d1\", \"chain_id\": -1, \"longitude\": 34.802892, \"promo_id\": 13258, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"\", \"biz_id\": 16003, \"latitude\": 32.065866, \"logo\": \"Res16003_1.png\", \"discount_val\": -1, \"description\": \"\\u05e1\\u05dc\\u05d8\\u05d9\\u05dd \\u05d1\\u05d4\\u05e8\\u05db\\u05d1\\u05d4 \\u05e2\\u05e6\\u05de\\u05d9\\u05ea, \\u05e4\\u05e1\\u05d8\\u05d4, \\u05db\\u05e8\\u05d9\\u05db\\u05d9\\u05dd, \\u05d8\\u05d5\\u05e1\\u05d8\\u05d9\\u05dd \\u05d5\\u05e2\\u05d5\\u05d3.\\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1.\\r\\n \\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\" }, { \"phone_number\": \"077-2016908\", \"synonym\": null, \"name\": \"\\u05e1\\u05d9\\u05d8\\u05d9 \\u05d1\\u05d5\\u05e8\\u05d2\\u05e8 - \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05d5\\u05d9\\u05d9\\u05e6\\u05de\\u05df 39 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": -1, \"longitude\": 34.808646000000003, \"promo_id\": 13076, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"[\\\"\\u05db\\u05e9\\u05e8\\\"]\", \"biz_id\": 13595, \"latitude\": 32.072265999999999, \"logo\": \"Res13595_1.jpg\", \"discount_val\": -1, \"description\": \"\\u05de\\u05e1\\u05e2\\u05d3\\u05ea \\u05d4\\u05de\\u05d1\\u05d5\\u05e8\\u05d2\\u05e8\\u05d9\\u05dd \\u05db\\u05e9\\u05e8\\u05d4. \\u05d4\\u05e7\\u05e6\\u05d9\\u05e6\\u05d5\\u05ea \\u05d4\\u05e0\\u05d4\\u05d3\\u05e8\\u05d5\\u05ea, \\u05d0\\u05e9\\u05e8 \\u05d6\\u05de\\u05d9\\u05e0\\u05d5\\u05ea \\u05e2\\u05d1\\u05d5\\u05e8\\u05db\\u05dd \\u05d1\\u05db\\u05de\\u05d4 \\u05d2\\u05d3\\u05dc\\u05d9\\u05dd, \\u05de\\u05d5\\u05e0\\u05d7\\u05d5\\u05ea \\u05d1\\u05d0\\u05dc\\u05d2\\u05e0\\u05d8\\u05d9\\u05d5\\u05ea \\u05d1\\u05ea\\u05d5\\u05da \\u05dc\\u05d7\\u05de\\u05e0\\u05d9\\u05d9\\u05d4 \\u05d8\\u05e8\\u05d9\\u05d9\\u05d4 \\u05d5\\u05e2\\u05dd \\u05d9\\u05e8\\u05e7\\u05d5\\u05ea \\u05e8\\u05e2\\u05e0\\u05e0\\u05d9\\u05dd. \\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1. \\r\\n\\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\" }, { \"phone_number\": \"035710022\", \"synonym\": null, \"name\": \"\\u05e1\\u05d5\\u05e8\\u05d4-\\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05d3\\u05e8\\u05da \\u05d4\\u05e9\\u05dc\\u05d5\\u05dd 53 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": -1, \"longitude\": 34.802700000000002, \"promo_id\": 8489, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"\", \"biz_id\": 8377, \"latitude\": 32.067822, \"logo\": \"Res8377_1.jpg\", \"discount_val\": -1, \"description\": \"\\u05d1\\u05e1\\u05d5\\u05e8\\u05d4 \\u05e1\\u05d5\\u05e9\\u05d9 \\u05d1\\u05e8 \\u05d9\\u05e4\\u05e0\\u05d9 \\u05d0\\u05d5\\u05ea\\u05e0\\u05d8\\u05d9 \\u05d4\\u05de\\u05e9\\u05ea\\u05de\\u05e9 \\u05d1\\u05d3\\u05d2\\u05d9\\u05dd \\u05d8\\u05e8\\u05d9\\u05d9\\u05dd \\u05d1\\u05dc\\u05d1\\u05d3 - \\u05de\\u05e7\\u05d5\\u05de\\u05d9\\u05d9\\u05dd \\u05d5\\u05de\\u05d9\\u05d5\\u05d1\\u05d0\\u05d9\\u05dd, \\u05d2\\u05e8\\u05d9\\u05dc \\u05d9\\u05e4\\u05e0\\u05d9 \\u05e2\\u05dd \\u05e9\\u05dc\\u05dc \\u05de\\u05e0\\u05d5\\u05ea \\u05d1\\u05e9\\u05e8 \\u05d9\\u05d9\\u05d7\\u05d5\\u05d3\\u05d9\\u05d5\\u05ea \\u05de\\u05d4\\u05de\\u05d6\\u05e8\\u05d7 \\u05d4\\u05e8\\u05d7\\u05d5\\u05e7 \\u05d5\\u05de\\u05d1\\u05d7\\u05e8 \\u05de\\u05e0\\u05d5\\u05ea \\u05d5\\u05d5\\u05e7 \\u05de\\u05e7\\u05d5\\u05e8\\u05d9\\u05d5\\u05ea. \\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1. \\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\" }, { \"phone_number\": \"03-7311398\", \"synonym\": null, \"name\": \"\\u05e1\\u05d5\\u05d3\\u05d5\\u05da - \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"address\": \"\\u05d3\\u05e8\\u05da \\u05d4\\u05e9\\u05dc\\u05d5\\u05dd 51 \\u05d2\\u05d1\\u05e2\\u05ea\\u05d9\\u05d9\\u05dd\", \"chain_id\": -1, \"longitude\": 34.802686999999999, \"promo_id\": 12887, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": \"\", \"biz_id\": 8096, \"latitude\": 32.067957999999997, \"logo\": \"Res13369_1.png\", \"discount_val\": -1, \"description\": \"\\u05e8\\u05e9\\u05ea \\u05e1\\u05d5\\u05d3\\u05d5\\u05da \\u05e0\\u05d5\\u05e1\\u05d3\\u05d4 \\u05dc\\u05e4\\u05e0\\u05d9 \\u05db\\u05e2\\u05e9\\u05d5\\u05e8 \\u05e2\\u05dd \\u05e8\\u05e2\\u05d9\\u05d5\\u05df \\u05d7\\u05d3\\u05e9 \\u05d5\\u05de\\u05d5\\u05e4\\u05dc\\u05d0: \\u05d8\\u05d5\\u05e1\\u05d8 \\u05e0\\u05e7\\u05e0\\u05d9\\u05e7. \\u05db\\u05de\\u05d4 \\u05e4\\u05e9\\u05d5\\u05d8 \\u2013 \\u05db\\u05db\\u05d4 \\u05de\\u05d3\\u05dc\\u05d9\\u05e7. \\u05d5\\u05de\\u05d4 \\u05d4\\u05de\\u05ea\\u05db\\u05d5\\u05df \\u05e9\\u05dc\\u05e0\\u05d5 \\u05dc\\u05d4\\u05e6\\u05dc\\u05d7\\u05d4? \\u05d0\\u05e8\\u05d6\\u05e0\\u05d5 \\u05d0\\u05ea \\u05ea\\u05de\\u05e6\\u05d9\\u05ea \\u05d4\\u05d8\\u05e2\\u05dd \\u05d4\\u05d9\\u05e9\\u05e8\\u05d0\\u05dc\\u05d9 \\u05d1\\u05dc\\u05d7\\u05de\\u05e0\\u05d9\\u05d9\\u05d4 (\\u05d8\\u05e8\\u05d9\\u05d9\\u05d4), \\u05ea\\u05d9\\u05d1\\u05dc\\u05e0\\u05d5 \\u05e7\\u05e6\\u05ea \\u05d1\\u05d0\\u05d5\\u05d5\\u05d9\\u05e8\\u05d4 \\u05e0\\u05d9\\u05e0\\u05d5\\u05d7\\u05d4, \\u05e9\\u05d9\\u05e8\\u05d5\\u05ea \\u05d1\\u05d2\\u05d5\\u05d1\\u05d4 \\u05d4\\u05e2\\u05d9\\u05e0\\u05d9\\u05d9\\u05dd \\u05d5\\u05de\\u05ea\\u05db\\u05d5\\u05df \\u05de\\u05e0\\u05e6\\u05d7 \\u05d4\\u05de\\u05ea\\u05d0\\u05d9\\u05dd \\u05dc\\u05db\\u05d5\\u05dc\\u05dd. \\r\\n\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1. \\r\\n\\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1\" }, { \"phone_number\": \"1-700-50-60-70\", \"synonym\": null, \"name\": \"\\u05e4\\u05d9\\u05e6\\u05d4 \\u05d4\\u05d0\\u05d8 - \\u05e8\\u05de\\u05ea \\u05d2\\u05df\", \"address\": \"\\u05dc\\u05e0\\u05d3\\u05d0\\u05d5 7 \\u05e8\\u05de\\u05ea \\u05d2\\u05df\", \"chain_id\": 3009, \"longitude\": 34.828220999999999, \"promo_id\": 16718, \"discount_type\": \"0\", \"biz_type\": 311, \"tags_list\": null, \"biz_id\": 16272, \"latitude\": 32.07188, \"logo\": \"3009.jpg\", \"discount_val\": -1, \"description\": \"\\u05de\\u05d1\\u05e6\\u05e2 \\u05d1\\u05dc\\u05e2\\u05d3\\u05d9 \\u05dc\\u05dc\\u05e7\\u05d5\\u05d7\\u05d5\\u05ea Cal \\u05d4\\u05de\\u05e9\\u05dc\\u05de\\u05d9\\u05dd \\u05d1\\u05d0\\u05e8\\u05e0\\u05e7 Cal4U. \\u05e8\\u05e9\\u05ea \\u05d4\\u05e4\\u05d9\\u05e6\\u05e8\\u05d9\\u05d5\\u05ea \\u05d4\\u05d2\\u05d3\\u05d5\\u05dc\\u05d4 \\u05d1\\u05d9\\u05d5\\u05ea\\u05e8 \\u05d1\\u05d9\\u05e9\\u05e8\\u05d0\\u05dc, \\u05d7\\u05dc\\u05d1\\u05d9\\u05ea \\u05dc\\u05d7\\u05dc\\u05d5\\u05d8\\u05d9\\u05df \\u05d5\\u05e8\\u05d5\\u05d1 \\u05e1\\u05e0\\u05d9\\u05e4\\u05d4 \\u05db\\u05e9\\u05e8\\u05d9\\u05dd \\u05d1\\u05db\\u05e9\\u05e8\\u05d5\\u05ea \\u05de\\u05d4\\u05d5\\u05d3\\u05e8\\u05ea. \\u05e4\\u05d9\\u05e6\\u05ea \\u05d4\\u05d3\\u05d2\\u05dc \\u05e9\\u05dc \\u05e4\\u05d9\\u05e6\\u05d4 \\u05d4\\u05d0\\u05d8 \\u05d4\\u05d9\\u05e0\\u05d4 \\u05d4\\\"\\u05e4\\u05d0\\u05df\\\" \\u05d4\\u05e2\\u05e9\\u05d5\\u05d9\\u05d9\\u05d4 \\u05de\\u05d1\\u05e6\\u05e7 \\u05e2\\u05d1\\u05d4 \\u05d5\\u05d0\\u05d5\\u05d5\\u05e8\\u05d9\\u05e8\\u05d9. \\u05d1\\u05e0\\u05d5\\u05e1\\u05e3, \\u05d1\\u05e8\\u05e9\\u05ea \\u05de\\u05d2\\u05d5\\u05d5\\u05df \\u05e4\\u05d9\\u05e6\\u05d5\\u05ea \\u05db\\u05d3\\u05d5\\u05d2\\u05de\\u05ea \\u05d4\\u05e4\\u05d9\\u05e6\\u05d4 \\u05d4\\u05e7\\u05dc\\u05d0\\u05e1\\u05d9\\u05ea \\u05de\\u05d1\\u05e6\\u05e7 \\u05d3\\u05e7, \\u05e4\\u05d9\\u05e6\\u05ea \\u05d4\\u05e6\\u05d9\\u05d6\\u05d9 \\u05e7\\u05e8\\u05d0\\u05e1\\u05d8 \\u05d5\\u05e4\\u05d9\\u05e6\\u05ea \\u05d4\\u05e7\\u05e8\\u05d0\\u05d5\\u05df \\u05d4\\u05de\\u05dc\\u05db\\u05d5\\u05ea\\u05d9\\u05ea. \\u05de\\u05dc\\u05d1\\u05d3 \\u05d4\\u05e4\\u05d9\\u05e6\\u05d5\\u05ea \\u05d4\\u05e0\\u05d4\\u05d3\\u05e8\\u05d5\\u05ea, \\u05d4\\u05ea\\u05e4\\u05e8\\u05d9\\u05d8 \\u05de\\u05d2\\u05d5\\u05d5\\u05df \\u05d1\\u05de\\u05e0\\u05d5\\u05ea \\u05e0\\u05e4\\u05dc\\u05d0\\u05d5\\u05ea \\u05e0\\u05d5\\u05e1\\u05e4\\u05d5\\u05ea \\u05db\\u05d2\\u05d5\\u05df \\u05e4\\u05e1\\u05d8\\u05d5\\u05ea \\u05d1\\u05e8\\u05d8\\u05d1\\u05d9\\u05dd \\u05e9\\u05d5\\u05e0\\u05d9\\u05dd, \\u05e1\\u05dc\\u05d8\\u05d9\\u05dd \\u05d8\\u05e8\\u05d9\\u05d9\\u05dd, \\u05e7\\u05d9\\u05e9\\u05d9\\u05dd, \\u05e4\\u05d5\\u05e7\\u05e6'\\u05d5\\u05ea \\u05d5\\u05db\\u05de\\u05d5\\u05d1\\u05df \\u05e7\\u05d9\\u05e0\\u05d5\\u05d7\\u05d9\\u05dd. \\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05d6\\u05d5 \\u05de\\u05db\\u05d1\\u05d3\\u05ea \\u05e7\\u05d5\\u05d3 \\u05ea\\u05e9\\u05dc\\u05d5\\u05dd Celleb \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1. \\u05d1\\u05e7\\u05e9\\u05d5 \\u05de\\u05d4\\u05de\\u05e1\\u05e2\\u05d3\\u05d4 \\u05dc\\u05d4\\u05e7\\u05dc\\u05d9\\u05d3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d5\\u05d3 \\u05d9\\u05d3\\u05e0\\u05d9\\u05ea \\u05d1\\u05e7\\u05d5\\u05e4\\u05d4, \\u05d1\\u05de\\u05e7\\u05d5\\u05dd \\u05db\\u05e8\\u05d8\\u05d9\\u05e1 \\u05e1\\u05d9\\u05d1\\u05d5\\u05e1.\" }] }, \"branch\": \"celleb/celleb\" };\r\n\r\n $timeout(function () { _defer.resolve(response); }, 1000);\r\n \r\n return _defer.promise;\r\n }\r\n\r\n //if (false) {\r\n $http.call(this, { method: method ? method : 'POST', url: (url ? url : baseurl), data: { data: 'req=' + JSON.stringify(data) } })\r\n .success.call(this, function (response) {\r\n if (response && response.Response && response.Response.Status.Succeeded) {\r\n response = JSON.parse(response.Result);\r\n _defer.resolve(response);\r\n } else {\r\n _defer.reject(cellebFefaultError);\r\n }\r\n })\r\n .error(function () {\r\n _defer.reject(cellebFefaultError);\r\n });\r\n //}\r\n\r\n return _defer.promise;\r\n }\r\n\r\n return {\r\n call: _call\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .factory('clbData', clbData);\r\n\r\n function clbData() {\r\n return {}\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .factory('clbGeoService', clbGeoService);\r\n\r\n clbGeoService.$inject = ['$ionicPlatform', '$q'];\r\n\r\n function clbGeoService($ionicPlatform, $q) {\r\n\r\n var _getSelfLocation = function () {\r\n\r\n var defer = $q.defer();\r\n\r\n $ionicPlatform.ready(function () {\r\n if (navigator && navigator.geolocation) {\r\n\r\n var onSuccess = function (position) {\r\n defer.resolve(position);\r\n };\r\n\r\n var onError = function (error) {\r\n defer.reject(error);\r\n }\r\n\r\n navigator.geolocation.getCurrentPosition(\r\n onSuccess,\r\n onError,\r\n { maximumAge: 5000, timeout: 7000 });\r\n } else {\r\n defer.reject(error);\r\n }\r\n });\r\n\r\n return defer.promise;\r\n };\r\n\r\n return {\r\n getSelfLocation: _getSelfLocation\r\n }\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .factory('clbPopUpService', clbPopUpService);\r\n\r\n clbPopUpService.$inject = ['$ionicPopup', '$timeout', '$interval', 'clbGeoService', 'clbData', 'googleAnalyticsService'];\r\n\r\n function clbPopUpService($ionicPopup, $timeout, $interval, clbGeoService, clbData, googleAnalyticsService) {\r\n\r\n return {\r\n geoServiceInfo: function () {\r\n\r\n var text = ionic.Platform.isIOS() ? clbData.metaData.LocationPopUpTextIOS : clbData.metaData.LocationPopUpTextAndroid;\r\n\r\n var extOptions =\r\n {\r\n cssClass: 'clb-popup-geo-service-page',\r\n title: clbData.metaData.LocationPopUpHeader,\r\n template: '

' + text + '

',\r\n buttons: [\r\n {\r\n text: 'סגור',\r\n type: 'button-positive'\r\n }\r\n ]\r\n };\r\n\r\n return $timeout(function () {\r\n return $ionicPopup.show(extOptions);\r\n }, 400);\r\n },\r\n infoPage: function (scope) {\r\n\r\n var extOptions =\r\n {\r\n cssClass: 'clb-popup-info-page',\r\n title: 'איך זה עובד ?',\r\n templateUrl: 'app/celleb/templates/clbInfoPage.html',\r\n buttons: [\r\n {\r\n text: 'המשך',\r\n type: 'button-positive',\r\n onTap: function () {\r\n return angular.element('.clb-info-page-checkbox-container input[type=checkbox]').is(\":checked\");\r\n }\r\n }\r\n ]\r\n };\r\n\r\n if (scope) {\r\n extOptions.scope = scope;\r\n }\r\n\r\n googleAnalyticsService.insertEvent({ page: 'show help', eventName: 'show help - enter', action: 'enter' });\r\n\r\n return $timeout(function () {\r\n return $ionicPopup.show(extOptions);\r\n }, 400);\r\n },\r\n locations: function (loc, scope) {\r\n\r\n var buttonsArr = [];\r\n var closeImg = angular.element('');\r\n var stop = null;\r\n var extOptions =\r\n {\r\n cssClass: 'clb-popup-location',\r\n title: clbData.metaData.LocationFilterHeader,\r\n template: closeImg,\r\n scope: scope\r\n };\r\n\r\n\r\n loc.forEach(function (obj) {\r\n buttonsArr.push({\r\n location_id: obj.location_id,\r\n text: obj.location_name,\r\n onTap: function () {\r\n return obj;\r\n }\r\n });\r\n //template += '

' + obj.location_name + '

';\r\n });\r\n\r\n var cancelInterval = function (event) {\r\n $interval.cancel(event);\r\n }\r\n\r\n extOptions.buttons = buttonsArr;\r\n\r\n angular.element('.clb-popup-location .popup-buttons button').ready(function () {\r\n\r\n stop = $interval(function () {\r\n if (angular.element('.clb-popup-location .popup-buttons') && angular.element('.clb-popup-location .popup-buttons').length > 0) {\r\n angular.element('.clb-popup-location .popup-buttons').scrollTop(0);\r\n //console.log('ready');\r\n cancelInterval(stop);\r\n }\r\n }, 100);\r\n });\r\n\r\n return $timeout(function () {\r\n var popup = $ionicPopup.show(extOptions);\r\n\r\n closeImg.on('click', function () {\r\n popup.close();\r\n });\r\n\r\n return popup;\r\n\r\n }, 200);\r\n }\r\n }\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .factory('clbRestService', clbRestService);\r\n\r\n clbRestService.$inject = ['clbConnectionService', '_', 'clbGeoService', 'connection', 'clbData', 'clbUtilsService', '$q', 'appSettings'];\r\n\r\n function clbRestService(clbConnectionService, _, clbGeoService, connection, clbData, clbUtilsService, $q, appSettings) {\r\n\r\n var useStub = appSettings.stub;\r\n\r\n var _genratePaymentCode = function (request) {\r\n \r\n if (useStub) {\r\n return _getPaymentCodeStub();\r\n }\r\n\r\n return connection.genericConnection('POST', 'CalGenratePaymentCode?', connection.versionAndOSParams, request);\r\n }\r\n\r\n var _getPaymentCodeStub = function () {\r\n \r\n var _defer = $q.defer();\r\n\r\n var currentdate = new Date();\r\n\r\n var enddate = new Date();\r\n enddate.setMinutes(currentdate.getMinutes() + 20);\r\n\r\n var res = {\r\n CodeGenTime: currentdate,\r\n CodeGenAbsTime: 0,\r\n CodeSecCountDown: 1200,\r\n CodeEndTime: enddate,\r\n PaymentCode: _randomIntFromInterval(10000, 99999)\r\n }\r\n\r\n _defer.resolve(res);\r\n\r\n return _defer.promise;\r\n }\r\n\r\n var _randomIntFromInterval = function (min, max) {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n }\r\n\r\n var _transform = function (src, selfLocation) {\r\n \r\n var tranformedObj = {\r\n list: [],\r\n count: 0\r\n };\r\n\r\n var logoBaseUrl = clbData.metaData.CellebPicUrl;\r\n\r\n tranformedObj.count = src.count;\r\n\r\n var _tempLocation;\r\n\r\n _.each(src.list, function (obj) {\r\n\r\n //obj.longitude, latitude, logo, promo_id\r\n if (obj.logo && obj.logo != 'undefined' && obj.logo != '') {\r\n obj.logo = logoBaseUrl + obj.logo;\r\n } else {\r\n obj.logo = 'content/images/no-logo.svg';\r\n }\r\n\r\n if (obj.tags_list) {\r\n obj.tags_list = JSON.parse(obj.tags_list);\r\n }\r\n\r\n if (selfLocation) {\r\n\r\n _tempLocation = parseFloat(clbUtilsService.getDistance(selfLocation.latitude, selfLocation.longitude, obj.latitude, obj.longitude));\r\n\r\n obj.distanceFromBiz = _tempLocation < 1 ? _tempLocation.toFixed(3) : _tempLocation.toFixed(1);\r\n }\r\n });\r\n\r\n return src;\r\n };\r\n\r\n var _searchRest = function (searchData) {\r\n \r\n var data = {\r\n type: 'biz_scan_loc',\r\n display_promo_flag: 1,\r\n name_like: searchData.prefix,\r\n rec_per_page: clbData.metaData.RecordsPerPage,\r\n longitude: searchData.longitude,\r\n latitude: searchData.latitude,\r\n radius: searchData.radius,\r\n club_id: clbData.metaData.ClubId ? clbData.metaData.ClubId : '2007'\r\n }\r\n if (searchData.currentPageNum) {\r\n data.page_num = searchData.currentPageNum;\r\n }\r\n\r\n return clbConnectionService.call(data);\r\n };\r\n\r\n var _filteredBankAccounts = function (accounts) {\r\n \r\n var copyAccounts = angular.copy(accounts);\r\n\r\n var filterAccounts = [];\r\n\r\n _.each(copyAccounts, function (account, i) {\r\n var filterCards = _.filter(account.Cards, function (card) {\r\n return card.CreditProductsInd == true;\r\n });\r\n\r\n if (filterCards.length > 0) {\r\n account.Cards = filterCards;\r\n filterAccounts.push(account);\r\n }\r\n });\r\n\r\n return filterAccounts;\r\n }\r\n\r\n var _getBankAccounts = function () {\r\n \r\n if (useStub) {\r\n return _getBankAccountsStub();\r\n }\r\n\r\n var _defer = $q.defer();\r\n\r\n connection.getAccount().then(\r\n function (response) {\r\n\r\n var filterdAccounts = _filteredBankAccounts(response.BankAccounts);\r\n\r\n _defer.resolve(filterdAccounts);\r\n\r\n }, function (error) {\r\n _defer.reject(error);\r\n });\r\n\r\n return _defer.promise;\r\n };\r\n\r\n var _getBankAccountsStub = function () {\r\n \r\n var _defer = $q.defer();\r\n\r\n var filterdAccounts = _filteredBankAccounts(BankAccountsStub);\r\n\r\n _defer.resolve(filterdAccounts);\r\n\r\n return _defer.promise;\r\n };\r\n\r\n var _getLocationsStub = function () {\r\n \r\n var data = {\r\n type: 'list_locations',\r\n biz_type: 'cal'\r\n };\r\n \r\n return clbConnectionService.call(data).then(function (response) {\r\n var ret = {};\r\n ret.CellebLocations = response.ws_result.list;\r\n ret.MinLengthOfNameSearch = 3;\r\n ret.RecordsPerPage = 15;\r\n ret.HelpPageURL = \"/\";\r\n ret.DefaultRadius = 4000;\r\n ret.LocationPopUpText = 'לחוויית שימוש מיטבית, מומלץ להפעיל שירותי מיקום';\r\n ret.HelpPageCheckbox = 'הבנתי, תודה.';\r\n ret.CellebNull = -1;\r\n ret.MaximumRadius = 1000000;\r\n ret.ErrorMessageTex = '';\r\n ret.CellebPicUrl = 'https://rep.celleb.co.il/public_info/biz_logo/icon_big/';\r\n\r\n ret.CellebLocations.push(\r\n {\r\n needGsp: true,\r\n idx: 0,\r\n is_active: 1,\r\n left_coord: -1,\r\n location_id: 0,\r\n location_name: \"כל הארץ\",\r\n radius: ret.MaximumRadius,\r\n right_coord: -1\r\n });\r\n\r\n ret.CellebLocations.push(\r\n {\r\n needGsp: true,\r\n idx: 1,\r\n is_active: 1,\r\n left_coord: -1,\r\n location_id: 1,\r\n location_name: \"קרובים למיקום שלי\",\r\n radius: ret.MaximumRadius,\r\n right_coord: -1\r\n });\r\n\r\n return ret;\r\n });\r\n };\r\n\r\n var _getMetaData = function () {\r\n\r\n if (useStub) {\r\n return _getLocationsStub();\r\n }\r\n\r\n if (clbData.metaData) {\r\n var _defer = $q.defer();\r\n\r\n _defer.resolve(clbData.metaData);\r\n\r\n return _defer.promise;\r\n }\r\n\r\n return connection.genericConnection('GET', 'CalCellebGetMetaData?', connection.versionAndOSParams);\r\n };\r\n\r\n var _getPromo = function (biz_id) {\r\n var data = {\r\n \"type\": \"get_biz_promotion\",\r\n \"biz_id\": biz_id\r\n }\r\n \r\n return clbConnectionService.call(data).then(function (response) {\r\n var retVal = {};\r\n\r\n retVal.count = response.ws_result.head.count;\r\n retVal.promotionsDetails = response.ws_result.list;\r\n\r\n return retVal;\r\n });\r\n }\r\n \r\n return {\r\n searchRest: _searchRest,\r\n getLocations: _getLocationsStub,\r\n getMetaData: _getMetaData,\r\n getPromotionsDetails: _getPromo,\r\n transform: _transform,\r\n getBankAccounts: _getBankAccounts,\r\n genratePaymentCode: _genratePaymentCode,\r\n filteredBankAccounts: _filteredBankAccounts\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('calceleb')\r\n .factory('clbUtilsService', clbUtilsService);\r\n\r\n clbUtilsService.$inject = ['_'];\r\n\r\n function clbUtilsService(_) {\r\n return {\r\n getDistance: function (lat1, lon1, lat2, lon2) {\r\n var R = 6371; // Radius of the earth in km\r\n var dLat = (lat2 - lat1) * Math.PI / 180; // deg2rad below\r\n var dLon = (lon2 - lon1) * Math.PI / 180;\r\n var a =\r\n 0.5 - Math.cos(dLat) / 2 +\r\n Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *\r\n (1 - Math.cos(dLon)) / 2;\r\n\r\n return R * 2 * Math.asin(Math.sqrt(a));\r\n }\r\n }\r\n }\r\n})(window, window.angular);\n///#source 1 1 /app/p2p/p2p.module.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\", []);\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/config.route.js\r\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module(\"calP2P\").config(p2pRoute);\r\n\r\n p2pRoute.$inject = ['$stateProvider'];\r\n\r\n function p2pRoute($stateProvider) {\r\n\r\n $stateProvider\r\n .state('dw.p2p-home', {\r\n url: \"/p2p/p2pMain\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: 'app/p2p/templates/p2pMain.html',\r\n controller: 'p2pHomeCtrl',\r\n }\r\n }\r\n })\r\n .state('dw.p2p-moneyTransfer', {\r\n url: \"/p2p/p2pMoneyTransfer\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: 'app/p2p/templates/p2pMoneyTransfer.html',\r\n controller: 'p2pMoneyTransferCtrl'\r\n }\r\n }\r\n })\r\n .state('dw.p2p-history', {\r\n url: \"/p2p/p2pHistory\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: 'app/p2p/templates/p2pHistory.html',\r\n controller: 'p2pHistoryCtrl'\r\n }\r\n }\r\n })\r\n .state('dw.p2p-money-receive-details', {\r\n url: \"/p2p/p2pMoneyReceive2\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: 'app/p2p/templates/p2pMoneyReceive2.html',\r\n controller: 'p2pMoneyReceive2Ctrl'\r\n }\r\n }\r\n })\r\n .state('dw.p2p-favorites', {\r\n url: \"/p2p/p2pFavorites\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: 'app/p2p/templates/p2pFavorites.html',\r\n controller: 'p2pFavoritesCtrl'\r\n }\r\n }\r\n })\r\n .state('dw.p2p-moneyReceive1', {\r\n url: \"/p2p/p2pMoneyReceive1\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: 'app/p2p/templates/p2pMoneyReceive1.html',\r\n controller: 'p2pMoneyReceive1Ctrl'\r\n }\r\n }\r\n });\r\n }\r\n\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/controllers/p2pFavoritesCtrl.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .controller('p2pFavoritesCtrl', p2pFavoritesCtrl);\r\n\r\n p2pFavoritesCtrl.$inject = [\r\n '$scope', '$rootScope', '$state', 'lobbyUiService', '$ionicSlideBoxDelegate',\r\n '$timeout', 'appData', '_', 'csGeneralUtilsService', 'csDataService', 'p2pMetaDataService',\r\n 'errorService', 'csPopupService', 'p2pParamsService', 'p2pInsertNewFavorite', 'p2pFormatPhoneNumber'\r\n ];\r\n\r\n function p2pFavoritesCtrl($scope, $rootScope, $state, lobbyUiService, $ionicSlideBoxDelegate,\r\n $timeout, appData, _, csGeneralUtilsService, csDataService, p2pMetaDataService,\r\n errorService, csPopupService, p2pParamsService, p2pInsertNewFavorite, p2pFormatPhoneNumber) {\r\n\r\n\r\n var OperationType =\r\n {\r\n Get: 1,\r\n Insert: 2,\r\n Delete: 3\r\n }\r\n\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.p2p-home\" });\r\n return;\r\n }\r\n\r\n $scope.getFavorites = function () {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n var req = {\r\n ReqOperation: OperationType.Get,\r\n ContactPhoneNum: '',\r\n ContactName: ''\r\n }\r\n return csDataService.manageFavorites(req)\r\n .then(function (data) {\r\n //success;\r\n\r\n if (data.FavContacts.length > 0) {\r\n $scope.favContacts = data.FavContacts;\r\n } else {\r\n $timeout(function () {\r\n csPopupService.error('עדיין לא הוספת מועדפים');\r\n }, 500);\r\n //$scope.favContacts = p2pContact;\r\n }\r\n\r\n //console.log(JSON.stringify(data));\r\n },\r\n function (error) {\r\n //fail;\r\n errorService.handleError(error);\r\n\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n }\r\n\r\n $scope.getFavorites();\r\n\r\n $scope.deleteContact = function (contact, indexHtml) {\r\n var req = {\r\n ReqOperation: OperationType.Delete,\r\n ContactPhoneNum: contact.ContactPhoneNum,\r\n ContactName: contact.ContactName\r\n }\r\n return csDataService.manageFavorites(req)\r\n .then(function (data) {\r\n //success;\r\n\r\n var index = $scope.favContacts.indexOf(contact);\r\n\r\n //alert('indexHtml: ' + indexHtml + ' - ' + 'index: ' + index);\r\n\r\n $timeout(function () { angular.element('ion-item.item').eq(indexHtml).hide(600); }, 100);\r\n\r\n $timeout(function () { $scope.favContacts.splice(index, 1); }, 1000);\r\n\r\n //csPopupService.success('איש הקשר נמחק.', 'תודה שבחרת Cal');\r\n //console.log(JSON.stringify(data));\r\n },\r\n function (error) {\r\n //fail;\r\n errorService.handleError(error);\r\n\r\n });\r\n }\r\n\r\n\r\n $scope.addContact = function () {\r\n var successCallback = function (result) {\r\n $timeout(function () {\r\n //alert(result.name + \" \" + result.phoneNumber);\r\n var _name = result.name.formatted;\r\n var _phoneNumbers = result.phoneNumbers;\r\n if (_name.length > 15) {\r\n _name = _name.substr(0, 15) + '...';\r\n }\r\n\r\n // Show popup for select phone numbers from list of a contact\r\n\r\n csPopupService.phoneNumberPicker(_phoneNumbers)\r\n .then(function (selectedPhoneNum) {\r\n if (selectedPhoneNum != null) {\r\n return p2pInsertNewFavorite.addFavorite(p2pFormatPhoneNumber.formatPhone(selectedPhoneNum, false), _name)\r\n .then(function (newFavorite) {\r\n //success;\r\n $timeout(function () { $scope.favContacts.push(newFavorite); }, 100);\r\n\r\n $timeout(function () {\r\n csPopupService.success('איש הקשר נוסף בהצלחה', '');\r\n }, 200);\r\n\r\n },\r\n function (error) {\r\n //fail;\r\n errorService.handleError(error);\r\n });\r\n }\r\n\r\n return null;\r\n });\r\n }, 0);\r\n };\r\n var failedCallback = function () {\r\n //do nothing\r\n }\r\n navigator.contacts.pickContact(successCallback, failedCallback);\r\n }\r\n\r\n\r\n $scope.selectFavorite = function (favorite) {\r\n p2pParamsService.paramMembers.custName = favorite.ContactName;\r\n p2pParamsService.paramMembers.custPhoneNumber = p2pFormatPhoneNumber.formatPhone(favorite.ContactPhoneNum, true);\r\n p2pParamsService.paramMembers.cameFromFavorites = true;\r\n\r\n lobbyUiService.go('dw.p2p-moneyTransfer');\r\n }\r\n }\r\n\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/controllers/p2pHistoryCtrl.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .controller('p2pHistoryCtrl', p2pHistoryCtrl);\r\n\r\n p2pHistoryCtrl.$inject = [\r\n '$scope', '$rootScope', '$state', 'lobbyUiService', 'csCommService', '$timeout', 'csDataService', 'errorService', 'csPopupService'\r\n ];\r\n\r\n function p2pHistoryCtrl($scope, $rootScope, $state, lobbyUiService, csCommService, $timeout, csDataService, errorService, csPopupService) {\r\n\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.p2p-home\" });\r\n return;\r\n }\r\n\r\n var req = {\r\n SourceCode: 1\r\n }\r\n\r\n $scope.members = [];\r\n\r\n $timeout(function () {\r\n $scope.addToFavoritesClass = '';\r\n $scope.addToFavoritesLabel = '';\r\n }, 100);\r\n\r\n $scope.getP2PTransactions = function (reqP2pTrans) {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n return csCommService.getP2PTransactions(reqP2pTrans)\r\n .then(function (data) {\r\n //success;\r\n if (data.ArrTransactions.length == 0) {\r\n csPopupService.error('עדיין לא ביצעת תשלומים').then(function () {\r\n $scope.goBack();\r\n //lobbyUiService.go('dw.p2p-home', { location: 'replace' });\r\n });\r\n //data.ArrTransactions = p2pTransitions;\r\n }\r\n\r\n\r\n for (var i = 0; i < data.ArrTransactions.length; i++) {\r\n $scope.members[i] =\r\n {\r\n contactName: !isNullOrEmpty(data.ArrTransactions[i].CustName) ? data.ArrTransactions[i].CustName : 'ת.ז.',\r\n custPhoneNumber: !isNullOrEmpty(data.ArrTransactions[i].CustPhoneNumber) ? data.ArrTransactions[i].CustPhoneNumber : data.ArrTransactions[i].CustIdNum,\r\n transactionAmount: data.ArrTransactions[i].TransactionAmount.Value,\r\n Simbol: data.ArrTransactions[i].TransactionAmount.Simbol ? data.ArrTransactions[i].TransactionAmount.Simbol : '₪',\r\n TransactionDate: data.ArrTransactions[i].TransactionDate,\r\n comment: data.ArrTransactions[i].Comment,\r\n TransactionStatus: data.ArrTransactions[i].TransactionStatus\r\n }\r\n\r\n\r\n\r\n //if ((data.ArrTransactions[i].CustName == '' ||\r\n // data.ArrTransactions[i].CustName == null) &&\r\n //(data.ArrTransactions[i].CustPhoneNumber == '' ||\r\n // data.ArrTransactions[i].CustPhoneNumber == null)) {\r\n // $scope.members[i].contactName = 'ת.ז.';\r\n // $scope.members[i].custPhoneNumber = data.ArrTransactions[i].CustIdNum;\r\n //}\r\n\r\n var status = data.ArrTransactions[i].TransactionStatus + (data.ArrTransactions[i].IsDebit | 0);\r\n\r\n //console.log(data.ArrTransactions[i].CustName);\r\n\r\n switch (status) {\r\n case \"10\": // status 1 + isDebit false\r\n $scope.members[i].TransactionStatusCssClass = 'wait-received';\r\n $scope.members[i].TransactionStatusLabel = 'ממתין לאישור';\r\n $scope.members[i].contactNamePrefix = 'מאת';\r\n\r\n break;\r\n case \"11\": // status 1 + isDebit true\r\n $scope.members[i].TransactionStatusCssClass = 'wait-transfer';\r\n $scope.members[i].TransactionStatusLabel = 'ממתין לאישור';\r\n $scope.members[i].contactNamePrefix = 'אל';\r\n break;\r\n\r\n case \"20\": // status 2 + isDebit false\r\n $scope.members[i].TransactionStatusCssClass = 'move-received';\r\n $scope.members[i].TransactionStatusLabel = 'התקבל';\r\n $scope.members[i].contactNamePrefix = 'מאת';\r\n break;\r\n case \"21\": // status 2 + isDebit true\r\n $scope.members[i].TransactionStatusCssClass = 'move-transfer';\r\n $scope.members[i].TransactionStatusLabel = 'הועבר';\r\n $scope.members[i].contactNamePrefix = 'אל';\r\n break;\r\n case \"30\": // status 3 + isDebit false\r\n $scope.members[i].TransactionStatusCssClass = 'cancel-received';\r\n $scope.members[i].TransactionStatusLabel = 'בוטל';\r\n $scope.members[i].contactNamePrefix = 'מאת';\r\n break;\r\n case \"31\": // status 3 + isDebit true\r\n $scope.members[i].TransactionStatusCssClass = 'cancel-transfer';\r\n $scope.members[i].TransactionStatusLabel = 'בוטל';\r\n $scope.members[i].contactNamePrefix = 'אל';\r\n break;\r\n default:\r\n $scope.members[i].TransactionStatusCssClass = 'wait-received';\r\n $scope.members[i].TransactionStatusLabel = 'ממתין לאישור';\r\n $scope.members[i].contactNamePrefix = 'מאת';\r\n }\r\n }\r\n },\r\n function (error) {\r\n //fail;\r\n errorService.handleError(error);\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n }\r\n\r\n $scope.getP2PTransactions(req);\r\n\r\n function isNullOrEmpty(val) {\r\n return !val || val.length == 0 || !val.trim();\r\n }\r\n }\r\n\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/controllers/p2pHomeCtrl.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .controller('p2pHomeCtrl', p2pHomeCtrl);\r\n\r\n p2pHomeCtrl.$inject = [\r\n '$scope', '$rootScope', '$state', 'lobbyUiService', 'csDataService', 'appData', 'p2pMetaDataService', 'errorService', '$window', 'csPopupService'\r\n ];\r\n\r\n function p2pHomeCtrl($scope, $rootScope, $state, lobbyUiService, csDataService, appData, p2pMetaDataService, errorService, $window, csPopupService) {\r\n\r\n //if (!lobbyUiService.connection.isLoggedIn()) {\r\n // lobbyUiService.go('dw.login', { nextPage: \"dw.p2p-home\" });\r\n // return;\r\n //}\r\n\r\n $scope.init = function () {\r\n if (!$scope.metaData) {\r\n p2pMetaDataService.getMetaData().\r\n then(function (response) {\r\n $scope.metaData = response;\r\n }, function (error) {\r\n errorService.handleError(error);\r\n });\r\n }\r\n\r\n $scope.setMenuHeight();\r\n }\r\n\r\n $scope.setMenuHeight = function () {\r\n \r\n var navContent = $('ion-nav-view.content-body');\r\n\r\n var targetView = $('> ion-view.module-view:nth-child(2)', navContent);\r\n\r\n var navHeight = parseFloat(angular.element('ion-nav-bar.content-header').outerHeight());\r\n\r\n var deviceHeight = parseFloat(angular.element($window).height());\r\n\r\n if (targetView.length == 0) {\r\n // animation is done, there is only one instance\r\n targetView = $('> ion-view.module-view:first-child', navContent);\r\n }\r\n\r\n var content = targetView.find('ion-content').first();\r\n\r\n if (targetView.hasClass('content-view')) {\r\n // content is textual, set default height\r\n content.css('height', '45%');\r\n\r\n angular.element('.modules-list').css('height', deviceHeight - content.height() - navHeight);\r\n } else {\r\n\r\n var deviceWidth = parseFloat(angular.element($window).width());\r\n\r\n angular.element('.modules-list').css('height', deviceHeight - navHeight - (deviceWidth * 0.625));\r\n }\r\n }\r\n\r\n $scope.openInfoPage = function () {\r\n csPopupService.openInfoPage();\r\n }\r\n\r\n $scope.mainNavigate = function (url) {\r\n lobbyUiService.navigate(url, { restrictedExplicitly: true });\r\n }\r\n\r\n $scope.init();\r\n }\r\n\r\n\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/controllers/p2pMoneyReceive1Ctrl.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .controller('p2pMoneyReceive1Ctrl', p2pMoneyReceive1Ctrl);\r\n\r\n p2pMoneyReceive1Ctrl.$inject = [\r\n '$scope', 'lobbyUiService', 'csCommService', 'errorService', 'csPopupService', 'p2pParamsService'\r\n ];\r\n\r\n function p2pMoneyReceive1Ctrl($scope, lobbyUiService, csCommService, errorService, csPopupService, p2pParamsService) {\r\n\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.p2p-home\" });\r\n return;\r\n }\r\n\r\n $scope.selectWaitingForApproval = function (selectedMember) {\r\n p2pParamsService.paramMembers.custName = selectedMember.contactName;\r\n p2pParamsService.paramMembers.custPhoneNumber = selectedMember.custPhoneNumber;\r\n p2pParamsService.paramMembers.Simbol = selectedMember.Simbol;\r\n p2pParamsService.paramMembers.comment = selectedMember.comment;\r\n p2pParamsService.paramMembers.transactionAmount = selectedMember.transactionAmount;\r\n p2pParamsService.paramMembers.transactionDate = selectedMember.TransactionDate;\r\n p2pParamsService.paramMembers.TransferId = selectedMember.TransferId;\r\n lobbyUiService.go('dw.p2p-money-receive-details');\r\n };\r\n var req = {\r\n SourceCode: 2\r\n }\r\n $scope.members = [];\r\n\r\n $scope.getP2PTransactions = function (getP2PTransactionsReq) {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n return csCommService.getP2PTransactions(getP2PTransactionsReq)\r\n .then(function (data) {\r\n //success;\r\n if (data.ArrTransactions.length == 0) {\r\n csPopupService.error('לא נמצאו תשלומים').then(function () {\r\n $scope.goBack();\r\n //lobbyUiService.navigate('dw.p2p-home', { location: 'replace' });\r\n });\r\n //data.ArrTransactions = p2pTransitions;\r\n }\r\n\r\n for (var i = 0; i < data.ArrTransactions.length; i++) {\r\n $scope.members[i] =\r\n {\r\n contactName: data.ArrTransactions[i].CustName,\r\n custPhoneNumber: data.ArrTransactions[i].CustPhoneNumber,\r\n transactionAmount: data.ArrTransactions[i].TransactionAmount.Value,\r\n Simbol: data.ArrTransactions[i].TransactionAmount.Simbol ? data.ArrTransactions[i].TransactionAmount.Simbol : '₪',\r\n TransactionDate: data.ArrTransactions[i].TransactionDate,\r\n comment: data.ArrTransactions[i].Comment,\r\n TransactionStatus: data.ArrTransactions[i].TransactionStatus,\r\n TransferId: data.ArrTransactions[i].TransferId,\r\n TransactionStatusLabel: 'ממתין לאישור'\r\n }\r\n }\r\n },\r\n function (error) {\r\n //fail;\r\n errorService.handleError(error);\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n }\r\n\r\n $scope.getP2PTransactions(req);\r\n }\r\n\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/controllers/p2pMoneyReceive2Ctrl.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .controller('p2pMoneyReceive2Ctrl', p2pMoneyReceive2Ctrl);\r\n\r\n p2pMoneyReceive2Ctrl.$inject = [\r\n '$scope', '$rootScope', '$state', 'lobbyUiService', 'csCommService', '$timeout', 'appData', '_', 'csGeneralUtilsService',\r\n 'csDataService', 'p2pMetaDataService', 'errorService', 'csPopupService', 'p2pParamsService','googleAnalyticsService'\r\n ];\r\n\r\n function p2pMoneyReceive2Ctrl($scope, $rootScope, $state, lobbyUiService, csCommService,\r\n $timeout, appData, _, csGeneralUtilsService, csDataService, p2pMetaDataService,\r\n errorService, csPopupService, p2pParamsService, googleAnalyticsService) {\r\n\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.p2p-home\" });\r\n return;\r\n }\r\n\r\n $scope.member = {\r\n contactName: p2pParamsService.paramMembers.custName,\r\n custPhoneNumber: p2pParamsService.paramMembers.custPhoneNumber,\r\n comment: p2pParamsService.paramMembers.comment,\r\n Simbol: p2pParamsService.paramMembers.Simbol,\r\n transactionAmount: p2pParamsService.paramMembers.transactionAmount,\r\n TransactionDate: p2pParamsService.paramMembers.transactionDate,\r\n TransferId: p2pParamsService.paramMembers.TransferId,\r\n cardSelected: '',\r\n agreedCode: ''\r\n };\r\n\r\n $timeout(function () {\r\n $scope.addToFavoritesClass = '';\r\n $scope.addToFavoritesLabel = '';\r\n }, 100);\r\n\r\n $scope.openTooltip = function (e, text) {\r\n e.stopPropagation();\r\n\r\n csPopupService.toolTip(text, '');\r\n }\r\n\r\n var copyAccounts = angular.copy(appData.BankAccounts);\r\n\r\n var cardsAfterFilter = [];\r\n\r\n _.each(copyAccounts, function (account) {\r\n var filterCards = _.filter(account.Cards, function (card) {\r\n return card.GoodCardHolderOwnerInd == true;\r\n });\r\n\r\n if (filterCards.length > 0) {\r\n account.Cards = filterCards;\r\n cardsAfterFilter.push.apply(cardsAfterFilter, account.Cards);\r\n }\r\n });\r\n\r\n $scope.cards = angular.copy(cardsAfterFilter);\r\n\r\n if ($scope.cards.length == 0) {\r\n csPopupService.error('לא נמצא כרטיס אליו ניתן לקבל תשלום')\r\n .then(function () {\r\n $scope.goBack();\r\n //lobbyUiService.go('dw.p2p-home');\r\n });\r\n } else {\r\n $scope.member.cardSelected = $scope.cards[0];\r\n }\r\n\r\n $scope.slideChanged = function (index) {\r\n $scope.cards[index].isSelected = true;\r\n\r\n $scope.member.cardSelected = $scope.cards[index];\r\n\r\n };\r\n $scope.approveP2PTransfer = function () {\r\n\r\n if ($scope.formReceive.$valid) {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n var req = {\r\n TransferId: $scope.member.TransferId,\r\n Card4LastDigits: $scope.member.cardSelected.LastFourDigits,\r\n VerificationCode: $scope.member.agreedCode\r\n };\r\n return csCommService.approveP2PTransfer(req)\r\n .then(function () {\r\n //success;\r\n csPopupService.success('הכסף יועבר לחשבונך בתוך 2 ימי עסקים', 'בקשתך התקבלה')\r\n .then(function () {\r\n lobbyUiService.go('dw.p2p-home');\r\n });\r\n },\r\n function (error) {\r\n //fail;\r\n errorService.handleError(error);\r\n\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/controllers/p2pMoneyTransferCtrl.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .controller('p2pMoneyTransferCtrl', p2pMoneyTransferCtrl);\r\n\r\n p2pMoneyTransferCtrl.$inject = [\r\n '$scope', '$rootScope', '$state', 'lobbyUiService', '$ionicSlideBoxDelegate',\r\n '$timeout', 'appData', '_', 'csGeneralUtilsService', 'csDataService', 'p2pMetaDataService',\r\n 'errorService', 'csPopupService', 'p2pParamsService', 'p2pInsertNewFavorite', 'p2pFormatPhoneNumber','googleAnalyticsService'\r\n ];\r\n\r\n function p2pMoneyTransferCtrl($scope, $rootScope, $state, lobbyUiService, $ionicSlideBoxDelegate,\r\n $timeout, appData, _, csGeneralUtilsService, csDataService, p2pMetaDataService,\r\n errorService, csPopupService, p2pParamsService, p2pInsertNewFavorite, p2pFormatPhoneNumber, googleAnalyticsService) {\r\n\r\n //#region data members\r\n\r\n $scope.appData = appData;\r\n\r\n $scope.isCustomerPhoneError = false;\r\n\r\n var contactNameEmpty = '';\r\n\r\n $scope.members =\r\n {\r\n custName: contactNameEmpty,\r\n custPhoneNumber: '',\r\n amountTransfer: '',\r\n cardSelected: '',\r\n numOfPayments: 1,\r\n agreedCode: '',\r\n remark: '',\r\n chkApprove: '',\r\n isCustomerInCal: false\r\n };\r\n\r\n $scope.bpm598Request =\r\n {\r\n IdNum: '',\r\n CustCelkTelPrefix: '',\r\n CustCellTelNum: ''\r\n };\r\n\r\n $scope.hebRegEx = /^[\\u05CF-\\u05EB ]+$/;\r\n\r\n //#endregion\r\n\r\n $scope.init = function () {\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: \"dw.p2p-home\" });\r\n return;\r\n }\r\n\r\n if ($scope.appData.p2p && $scope.appData.p2p.inProcess) {\r\n $scope.members = $scope.appData.p2p.state;\r\n $scope.appData.p2p.inProcess = false;\r\n }\r\n\r\n p2pMetaDataService.getMetaData().then(function (response) {\r\n\r\n $scope.metaData = response;\r\n\r\n\r\n $scope.members.minAmount = {\r\n value: $scope.metaData.CreditPayments[0].MinAmount.Value,\r\n formatted: $scope.metaData.CreditPayments[0].MinAmount.ReversedFormattedValue.replace('.00', '')\r\n };\r\n $scope.members.maxAmount = {\r\n value: $scope.metaData.CreditPayments[0].MaxAmount.Value,\r\n formatted: $scope.metaData.CreditPayments[0].MaxAmount.ReversedFormattedValue.replace('.00', '')\r\n };\r\n\r\n $scope.minNumPayments = $scope.metaData.CreditPayments[0].MinPayments;\r\n\r\n $scope.maxNumPayments = csGeneralUtilsService.createPaymentsObj($scope.metaData.CreditPayments[0].MaxPayments - $scope.metaData.CreditPayments[0].MinPayments + 1);\r\n\r\n if (p2pParamsService.paramMembers.cameFromFavorites == true) {\r\n\r\n var _name = p2pParamsService.paramMembers.custName;\r\n if (_name.length > 15) {\r\n _name = _name.substr(0, 15) + '...';\r\n }\r\n $scope.members.custName = _name;\r\n\r\n $scope.members.custPhoneNumber = p2pParamsService.paramMembers.custPhoneNumber;\r\n\r\n angular.element('#contactIcon').show();\r\n\r\n $scope.checkCustomerPhoneAndCallBpm598();\r\n\r\n $timeout(function () {\r\n $scope.addToFavoritesClass = '';\r\n $scope.addToFavoritesLabel = '';\r\n }, 100);\r\n\r\n p2pParamsService.paramMembers.cameFromFavorites = false;\r\n }\r\n });\r\n\r\n $timeout(function () {\r\n $scope.addToFavoritesClass = '';\r\n $scope.addToFavoritesLabel = '';\r\n }, 100);\r\n\r\n angular.element('#contactIcon').hide();\r\n\r\n $scope.filterCards();\r\n }\r\n\r\n $scope.transferNavigate = function (url, saveState) {\r\n\r\n if (saveState) {\r\n $scope.appData.p2p = {\r\n inProcess: true,\r\n state: $scope.members\r\n }\r\n }\r\n\r\n lobbyUiService.go(url);\r\n }\r\n\r\n $scope.checkCustomerInCal = function (req) {\r\n $timeout(function () {\r\n var m = csDataService.checkCustomerInCal(req);\r\n m.then(function () {\r\n //success;\r\n $scope.members.isCustomerInCal = true;\r\n },\r\n function (error) {\r\n //fail;\r\n $timeout(function () {\r\n $scope.clearRecipient();\r\n }, 100);\r\n\r\n\r\n if (error[0].response.Response.Status.SeverityCode == 'W' &&\r\n error[0].response.Response.Status.SeverityNumber == '0003') {\r\n csPopupService.typeIdWindow($scope).then(function (res) {\r\n if (res != null) {\r\n var checkCustReq = {\r\n IdNum: res,\r\n CustCelkTelPrefix: '',\r\n CustCellTelNum: ''\r\n }\r\n var checkCustRes = csDataService.checkCustomerInCal(checkCustReq);\r\n checkCustRes.then(function () {\r\n\r\n $scope.members.custName = '';\r\n\r\n $scope.members.custPhoneNumber = res;\r\n\r\n $scope.members.isCustomerInCal = true;\r\n },\r\n function (erro2) {\r\n errorService.handleError(erro2);\r\n if (error[0].response.Response.Status.SeverityCode != 'S') {\r\n $scope.clearRecipient();\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n errorService.handleError(error);\r\n if (error[0].response.Response.Status.SeverityCode != 'S') {\r\n $scope.clearRecipient();\r\n }\r\n }\r\n });\r\n }, 1500);\r\n\r\n }\r\n\r\n $scope.checkCustomerPhoneAndCallBpm598 = function () {\r\n\r\n if ($scope.members.custPhoneNumber == null || $scope.members.custPhoneNumber.length == 0) {\r\n return;\r\n }\r\n\r\n var strPhoneNumber = p2pFormatPhoneNumber.formatPhone($scope.members.custPhoneNumber, false);\r\n\r\n $scope.members.isCustomerInCal = false;\r\n\r\n $scope.bpm598Request.IdNum = '';\r\n $scope.bpm598Request.CustCelkTelPrefix = strPhoneNumber.substr(0, 3);\r\n $scope.bpm598Request.CustCellTelNum = strPhoneNumber.substr(3, strPhoneNumber.length - 3);\r\n\r\n if (strPhoneNumber.length == 10 &&\r\n _.contains(_.pluck($scope.metaData.CreditPayments[0].PhonePrefix, \"Code\"), $scope.bpm598Request.CustCelkTelPrefix)) {\r\n //Execute Service CheckCustomerInCal : Bpm598 \r\n $scope.checkCustomerInCal($scope.bpm598Request);\r\n $scope.isCustomerPhoneError = false;\r\n } else {\r\n csPopupService.error('מספר הטלפון שהוזן אינו תקין').then(function (res) {\r\n if (res != null) {\r\n $scope.clearRecipient();\r\n }\r\n });\r\n\r\n $scope.isCustomerPhoneError = true;\r\n }\r\n\r\n }\r\n\r\n $scope.clearRecipient = function () {\r\n $scope.members.custName = '';\r\n $scope.members.custPhoneNumber = '';\r\n };\r\n\r\n $scope.updatePhoneNumber = function (e) {\r\n var strPhoneNumber = $scope.members.custPhoneNumber != undefined ? $scope.members.custPhoneNumber : '';\r\n if (strPhoneNumber.length == 3 && e.keyCode != 8 && strPhoneNumber.indexOf(\"-\") == -1) {\r\n $scope.members.custPhoneNumber += \"-\";\r\n }\r\n };\r\n\r\n $scope.openTooltip = function (e, text) {\r\n e.stopPropagation();\r\n\r\n csPopupService.toolTip(text, '');\r\n }\r\n\r\n $scope.transferP2PTransaction = function (req) {\r\n\r\n lobbyUiService.loader.show();\r\n\r\n return csDataService.transferP2PTransaction(req)\r\n .then(function () {\r\n //success;\r\n googleAnalyticsService.trackPage('/p2p/p2pMoney/confirm_transfer');\r\n\r\n csPopupService.success('איש הקשר שבחרת נדרש לאשר את קבלת התשלום בתוך 3 ימי עסקים לצורך השלמת הפעולה', 'בקשתך התקבלה')\r\n .then(function () {\r\n lobbyUiService.go('dw.p2p-home');\r\n });\r\n\r\n //console.log(JSON.stringify(data));\r\n },\r\n function (error) {\r\n //fail;\r\n errorService.handleError(error);\r\n }).finally(function () {\r\n lobbyUiService.loader.hide();\r\n });\r\n }\r\n\r\n $scope.formatPhoneDash = function () {\r\n\r\n if ($scope.formTransfer.uPhoneNumber.$error.pattern) {\r\n csPopupService.error('מספר הטלפון שהוזן אינו תקין').then(function (res) {\r\n if (res != null) {\r\n $scope.clearRecipient();\r\n }\r\n });\r\n }\r\n\r\n var strPhoneNumber = $scope.members.custPhoneNumber;\r\n\r\n $scope.members.custPhoneNumber = p2pFormatPhoneNumber.formatPhone(strPhoneNumber, true);\r\n\r\n $scope.checkCustomerPhoneAndCallBpm598();\r\n\r\n };\r\n\r\n $scope.approveTrans = function () {\r\n\r\n if ($scope.formTransfer.uPhoneNumber.$error.required) {\r\n csPopupService.error(\"יש להקליד מס' טלפון נייד של מקבל התשלום \");\r\n return;\r\n }\r\n\r\n if (!$scope.members.isCustomerInCal) {\r\n return;\r\n }\r\n\r\n if ($scope.validateAmount() && $scope.validateNumberOfPayments() && $scope.formTransfer.$valid) {\r\n\r\n csPopupService.areYouSure('אני מאשר את ביצוע התשלום', 'אישור הפעולה')\r\n .then(function (res) {\r\n\r\n if (res != null && res == true) {\r\n\r\n var req = {\r\n TransactionAmount: $scope.members.amountTransfer,\r\n Card4LastDigits: $scope.members.cardSelected.LastFourDigits,\r\n VerificationCode: $scope.members.agreedCode,\r\n Comment: $scope.members.remark,\r\n NumOfPayments: $scope.members.numOfPayments,\r\n ContactName: $scope.members.custName,\r\n ConfirmCheckbox: $scope.members.chkApprove\r\n }\r\n\r\n $scope.transferP2PTransaction(req);\r\n }\r\n });\r\n }\r\n };\r\n\r\n $scope.numPaymentsSelected = function () {\r\n //alert($scope.members.numOfPayments);\r\n };\r\n\r\n $scope.contacts = function () {\r\n\r\n $scope.clearRecipient();\r\n\r\n // Show Contact Picker\r\n var successCallback = function (result) {\r\n $timeout(function () {\r\n var _name = result.name.formatted;\r\n var _phoneNumbers = result.phoneNumbers;\r\n\r\n if (!_name || !_phoneNumbers) {\r\n csPopupService.error('לא ניתן להוסיף איש קשר זה');\r\n }\r\n\r\n if (_name.length > 15) {\r\n _name = _name.substr(0, 15) + '...';\r\n }\r\n $scope.members.custName = _name;\r\n\r\n // Show popup for select phone numbers from list of a contact\r\n csPopupService.phoneNumberPicker(_phoneNumbers)\r\n .then(function (selectedPhoneNum) {\r\n if (selectedPhoneNum != null) {\r\n $scope.members.custPhoneNumber = selectedPhoneNum;\r\n }\r\n\r\n $scope.addToFavoritesClass = 'favorite-empty-star-icon';\r\n\r\n $scope.addToFavoritesLabel = 'הוסף איש קשר למועדפים';\r\n\r\n $scope.checkCustomerPhoneAndCallBpm598();\r\n });\r\n\r\n\r\n }, 0);\r\n };\r\n var failedCallback = function () {\r\n csPopupService.error('לא ניתן להוסיף איש קשר זה');\r\n }\r\n navigator.contacts.pickContact(successCallback, failedCallback);\r\n\r\n };\r\n\r\n $scope.favorites = function () {\r\n lobbyUiService.go('dw.p2p-favorites');\r\n }\r\n\r\n $scope.addFavorite = function () {\r\n return p2pInsertNewFavorite.addFavorite(p2pFormatPhoneNumber.formatPhone($scope.members.custPhoneNumber, false), $scope.members.custName)\r\n .then(function () {\r\n //success;\r\n $scope.addToFavoritesClass = 'favorite-full-star-icon';\r\n $scope.addToFavoritesLabel = 'נוסף למועדפים';\r\n },\r\n function (error) {\r\n //fail;\r\n errorService.handleError(error);\r\n });\r\n }\r\n\r\n $scope.filterCards = function () {\r\n var copyAccounts = angular.copy(appData.BankAccounts);\r\n\r\n var cardsAfterFilter = [];\r\n\r\n _.each(copyAccounts, function (account) {\r\n var filterCards = _.filter(account.Cards, function (card) {\r\n return card.GoodCardHolderOwnerInd == true;\r\n });\r\n\r\n if (filterCards.length > 0) {\r\n account.Cards = filterCards;\r\n cardsAfterFilter.push.apply(cardsAfterFilter, account.Cards);\r\n }\r\n });\r\n\r\n $scope.cards = angular.copy(cardsAfterFilter);\r\n\r\n if ($scope.cards.length == 0) {\r\n csPopupService.error('לא נמצא כרטיס ממנו ניתן לבצע העברת כספים')\r\n .then(function () {\r\n $scope.goBack();\r\n //lobbyUiService.navigate('dw.p2p-home', { location: 'replace' });\r\n });\r\n } else {\r\n $scope.members.cardSelected = $scope.cards[0];\r\n }\r\n }\r\n\r\n $scope.slideChanged = function (index) {\r\n $scope.cards[index].isSelected = true;\r\n\r\n $scope.members.cardSelected = $scope.cards[index];\r\n };\r\n\r\n $scope.validateAmount = function () {\r\n if (!$scope.members.amountTransfer)\r\n return true;\r\n\r\n return $scope.members.amountTransfer >= $scope.members.minAmount.value && $scope.members.amountTransfer <= $scope.members.maxAmount.value;\r\n }\r\n\r\n $scope.validateNumberOfPayments = function () {\r\n\r\n if (!$scope.members.amountTransfer || ($scope.members.amountTransfer > 0 && $scope.members.numOfPayments == 1))\r\n return true;\r\n\r\n return $scope.members.numOfPayments > 1 && (parseInt($scope.members.amountTransfer) / $scope.members.numOfPayments) > 24;\r\n }\r\n\r\n $scope.init();\r\n }\r\n\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/services/csCommService.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .factory('csCommService', csCommService);\r\n\r\n csCommService.$inject = ['$state', '$rootScope', '$http', '$q', 'appSettings', 'connection'];\r\n\r\n function csCommService($state, $rootScope, $http, $q, appSettings, connection) {\r\n\r\n var versionAndOS = 'CurrentVersion=' + appSettings.version + '&OperatingSystem=' + appSettings.os;\r\n return {\r\n getMetaData: function getP2PMetaData() {\r\n return connection.genericConnection('GET', 'CalP2PMetaData?', versionAndOS, '');\r\n },\r\n checkCustomerInCal: function checkP2PCustomerInCal(data) {\r\n return connection.genericConnection('POST', 'CalP2PCheckCustomerInCal?', versionAndOS, data);\r\n },\r\n transferP2PTransaction: function transferP2PTransaction(data) {\r\n return connection.genericConnection('POST', 'TransferP2PTransaction?', versionAndOS, data);\r\n },\r\n manageFavorites: function manageFavorites(data) {\r\n return connection.genericConnection('POST', 'ManageFavorites?', versionAndOS, data);\r\n },\r\n getP2PTransactions: function getP2PTransactions(data) {\r\n return connection.genericConnection('POST', 'GetP2PTransactions?', versionAndOS, data);\r\n },\r\n approveP2PTransfer: function approveP2PTransfer(data) {\r\n return connection.genericConnection('POST', 'ApproveP2PTransfer?', versionAndOS, data);\r\n },\r\n manageContactsNames: function manageContactsNames(data) {\r\n return connection.genericConnection('POST', 'ManageContactsNames?', versionAndOS, data);\r\n }\r\n }\r\n }\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/services/csDataService.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .factory('csDataService', csDataService);\r\n\r\n csDataService.$inject = ['$state', '$rootScope', '$q', 'csCommService'];\r\n\r\n function csDataService($state, $rootScope, $q, csCommService) {\r\n\r\n var getMetaData = function () {\r\n return csCommService.getMetaData();\r\n }\r\n\r\n var checkCustomerInCal = function (data) {\r\n return csCommService.checkCustomerInCal(data);\r\n }\r\n\r\n var transferP2PTransaction = function (data) {\r\n return csCommService.transferP2PTransaction(data);\r\n }\r\n var manageFavorites = function (data) {\r\n return csCommService.manageFavorites(data);\r\n }\r\n return {\r\n getMetaData: getMetaData,\r\n checkCustomerInCal: checkCustomerInCal,\r\n transferP2PTransaction: transferP2PTransaction,\r\n manageFavorites: manageFavorites\r\n }\r\n }\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/services/csGeneralUtilsService.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .factory('csGeneralUtilsService', csGeneralUtilsService);\r\n\r\n function csGeneralUtilsService() {\r\n return {\r\n createPaymentsObj: function (p_maxNumPayments) {\r\n\r\n var tmpArray = [];\r\n for (var i = 0; i < p_maxNumPayments; i++) {\r\n tmpArray.push(i);\r\n }\r\n return tmpArray;\r\n }\r\n }\r\n }\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/services/csPopupService.js\r\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module(\"calP2P\")\r\n .factory('csPopupService', csPopupService);\r\n\r\n csPopupService.$inject = ['$timeout', '$ionicPopup', 'p2pValidateID', '$ionicBackdrop', '$q', 'p2pFormatPhoneNumber', 'googleAnalyticsService'];\r\n\r\n function csPopupService($timeout, $ionicPopup, p2pValidateID, $ionicBackdrop, $q, p2pFormatPhoneNumber, googleAnalyticsService) {\r\n\r\n return {\r\n typeIdWindow: function (scope1) {\r\n\r\n scope1.typeID = '';\r\n\r\n $timeout(function () {\r\n angular.element('input[id=idNumber]').prop('disabled', false);\r\n }, 1000);\r\n\r\n var extOptions =\r\n {\r\n cssClass: 'p2p-id-popup',\r\n title: '',\r\n scope: scope1,\r\n templateUrl: 'app/p2p/templates/typeIdPage.html',\r\n buttons: [\r\n {\r\n text: '',\r\n },\r\n {\r\n text: 'אתר לקוח',\r\n type: 'button-positive',\r\n onTap: function (e) {\r\n\r\n var idNum = angular.element('input[id=idNumber]').val();\r\n var leadingZero = \"\";\r\n var orgLength = idNum.length;\r\n if (orgLength > 2) {\r\n for (var i = 0; i < 9 - orgLength; i++) {\r\n leadingZero += \"0\";\r\n }\r\n }\r\n idNum = leadingZero + idNum;\r\n angular.element('input[id=idNumber]').val(idNum);\r\n\r\n var isValidID = p2pValidateID.validateID(idNum);\r\n if (idNum == null || idNum.length == 0 || !isValidID) {\r\n angular.element('#idNumberErrMsg').css('visibility', 'visible');\r\n e.preventDefault();\r\n } else {\r\n $ionicBackdrop.retain();\r\n\r\n $timeout(function () {\r\n $ionicBackdrop.release();\r\n }, 400);\r\n return idNum;\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n\r\n return $timeout(function () { return $ionicPopup.show(extOptions) }, 200);\r\n },\r\n phoneNumberPicker: function (p) {\r\n\r\n var _defer;\r\n\r\n if (p.length == 0) {\r\n _defer = $q.defer();\r\n _defer.resolve('לא נמצא');\r\n return _defer.promise;\r\n }\r\n\r\n if (p.length == 1) {\r\n _defer = $q.defer();\r\n _defer.resolve(p2pFormatPhoneNumber.formatPhone(p[0].value, true));\r\n return _defer.promise;\r\n }\r\n\r\n var buttonsArr = [];\r\n\r\n p.forEach(function (obj) {\r\n buttonsArr.push({\r\n text: p2pFormatPhoneNumber.formatPhone(obj.value, true),\r\n onTap: function () {\r\n return obj.value;\r\n }\r\n });\r\n });\r\n\r\n var closeImg = angular.element('');\r\n\r\n var extOptions =\r\n {\r\n cssClass: 'p2p-phone-numbers-popup',\r\n title: 'בחר מספר טלפון',\r\n template: closeImg,\r\n buttons: buttonsArr\r\n };\r\n\r\n return $timeout(function () {\r\n\r\n var _popup = $ionicPopup.show(extOptions);\r\n\r\n closeImg.on('click', function () {\r\n _popup.close();\r\n });\r\n\r\n return _popup;\r\n }, 200);\r\n },\r\n toolTip: function (text, title, buttonText) {\r\n var extOptions =\r\n {\r\n cssClass: 'p2p-tooltip-popup',\r\n title: (title) ? title : '',\r\n template: '
' + text + '
',\r\n buttons: [\r\n {\r\n text: (buttonText) ? buttonText : 'סגור',\r\n type: 'button-positive',\r\n onTap: function (e) {\r\n $ionicBackdrop.retain();\r\n\r\n $timeout(function () {\r\n $ionicBackdrop.release();\r\n }, 400);\r\n }\r\n }\r\n ],\r\n };\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n success: function (text, title, buttonText) {\r\n var extOptions =\r\n {\r\n cssClass: 'p2p-tooltip-popup',\r\n title: (title) ? title : '',\r\n template: '
' + text + '
',\r\n buttons: [\r\n {\r\n text: (buttonText) ? buttonText : 'סגור',\r\n type: 'button-positive',\r\n onTap: function (e) {\r\n $ionicBackdrop.retain();\r\n\r\n $timeout(function () {\r\n $ionicBackdrop.release();\r\n }, 400);\r\n }\r\n }\r\n ],\r\n };\r\n return $timeout(function () { $ionicPopup.show(extOptions); }, 200);\r\n },\r\n error: function (text, buttonText) {\r\n var extOptions =\r\n {\r\n cssClass: 'p2p-tooltip-popup',\r\n title: '',\r\n template: '
' + text + '
',\r\n buttons: [\r\n {\r\n text: (buttonText) ? buttonText : 'סגור',\r\n type: 'button-positive',\r\n onTap: function (e) {\r\n $ionicBackdrop.retain();\r\n\r\n $timeout(function () {\r\n $ionicBackdrop.release();\r\n }, 400);\r\n return true;\r\n }\r\n }\r\n ],\r\n };\r\n return $timeout(function () { return $ionicPopup.show(extOptions); }, 200);\r\n },\r\n areYouSure: function (text, title, buttonText) {\r\n var extOptions =\r\n {\r\n cssClass: 'p2p-ru-sure-popup',\r\n title: (title) ? title : '',\r\n template: '
' + text + '
',\r\n buttons: [\r\n {\r\n text: 'ביטול',\r\n type: 'button-positive',\r\n onTap: function (e) {\r\n $ionicBackdrop.retain();\r\n\r\n $timeout(function () {\r\n $ionicBackdrop.release();\r\n }, 400);\r\n return false;\r\n }\r\n },\r\n {\r\n text: (buttonText) ? buttonText : 'אישור',\r\n type: 'button-positive',\r\n onTap: function (e) {\r\n $ionicBackdrop.retain();\r\n\r\n $timeout(function () {\r\n $ionicBackdrop.release();\r\n }, 400);\r\n return true;\r\n }\r\n }\r\n ],\r\n };\r\n return $timeout(function () { return $ionicPopup.show(extOptions); }, 200);\r\n },\r\n openInfoPage: function () {\r\n var extOptions =\r\n {\r\n cssClass: 'p2p-popup-info-page',\r\n title: 'לקוחות Cal מעבירים ביניהם כסף
בלי לציין פרטי חשבון בנק',\r\n templateUrl: 'app/p2p/templates/p2pInfoPage.html',\r\n buttons: [\r\n {\r\n text: 'סגור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n return true;\r\n }\r\n }\r\n ]\r\n };\r\n\r\n googleAnalyticsService.insertEvent({ page: 'mobical info page', eventName: 'show help - enter', action: 'enter' });\r\n\r\n return $timeout(function () {\r\n\r\n return $ionicPopup.show(extOptions);\r\n }, 400);\r\n }\r\n\r\n }\r\n }\r\n\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/services/p2pFormatPhoneNumber.js\r\n(function (window, angular) {\r\n 'use strict';\r\n\r\n angular.module(\"calP2P\")\r\n .factory('p2pFormatPhoneNumber', p2pFormatPhoneNumber);\r\n\r\n function p2pFormatPhoneNumber() {\r\n\r\n var formatPhone = function (phoneNum, withDash) {\r\n\r\n var _phoneNum = phoneNum;\r\n\r\n if (_phoneNum == null || _phoneNum.length < 9) {\r\n return _phoneNum;\r\n }\r\n\r\n var generalExp = /^\\+972|\\+97-2|\\+|^972|\\ |\\-|\\(|\\)|N|,|;|#|\\*|\\/|/g; //.substring(\"+972 52-44-555-66\".replace(/\\+|972|\\ |\\-/gi, '').indexOf('5'))\r\n var leadingZeroesExp = /^0+/;\r\n\r\n _phoneNum = _phoneNum.replace(generalExp, '');\r\n\r\n _phoneNum = _phoneNum.replace(leadingZeroesExp, '');\r\n\r\n var formatMobile = false;\r\n\r\n if (_phoneNum.indexOf('5') == 0)\r\n formatMobile = true;\r\n\r\n if (formatMobile) {\r\n if (withDash)\r\n _phoneNum = '0'.concat(_phoneNum.substr(0, 2), \"-\", _phoneNum.substr(2));\r\n else\r\n _phoneNum = '0'.concat(_phoneNum.substr(0, 2), _phoneNum.substr(2));\r\n } else {\r\n if (withDash)\r\n _phoneNum = '0'.concat(_phoneNum.substr(0, 1), \"-\", _phoneNum.substr(1));\r\n else\r\n _phoneNum = '0'.concat(_phoneNum.substr(0, 1), _phoneNum.substr(1));\r\n }\r\n\r\n return _phoneNum;\r\n }\r\n\r\n return {\r\n formatPhone: formatPhone\r\n }\r\n\r\n }\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/services/p2pInsertNewFavorite.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .factory('p2pInsertNewFavorite', p2pInsertNewFavorite);\r\n\r\n p2pInsertNewFavorite.$inject = ['$state', '$rootScope', '$q', 'errorService', 'csDataService'];\r\n\r\n function p2pInsertNewFavorite($state, $rootScope, $q, errorService, csDataService) {\r\n\r\n var OperationType =\r\n {\r\n Get: 1,\r\n Insert: 2,\r\n Delete: 3\r\n }\r\n\r\n var addFavorite = function (_phoneNumber, _name) {\r\n\r\n var _defer = $q.defer();\r\n\r\n var req = {\r\n ReqOperation: OperationType.Insert,\r\n ContactPhoneNum: _phoneNumber,\r\n ContactName: _name\r\n }\r\n\r\n csDataService.manageFavorites(req)\r\n .then(function (data) {\r\n //success;\r\n var newFavorite = { ContactName: _name, ContactPhoneNum: _phoneNumber };\r\n\r\n _defer.resolve(newFavorite);\r\n },\r\n function (error) {\r\n //fail;\r\n _defer.reject(error);\r\n });\r\n\r\n return _defer.promise;\r\n\r\n }\r\n\r\n return {\r\n addFavorite: addFavorite\r\n }\r\n\r\n }\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/services/p2pMetaDataService.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .factory('p2pMetaDataService', p2pMetaDataService);\r\n\r\n p2pMetaDataService.$inject = ['$rootScope', 'errorService', 'stCacheService', 'csDataService', '_', '$q'];\r\n\r\n function p2pMetaDataService($rootScope, errorService, stCacheService, csDataService, _, $q) {\r\n var _metaData = function () {\r\n\r\n return stCacheService.get('p2pMetaData');\r\n };\r\n\r\n var _getMetaData = function (fromServer) {\r\n\r\n var _defer = $q.defer();\r\n\r\n var _cache = _metaData();\r\n\r\n if (_cache && !fromServer) {\r\n //console.log('meta data from cache');\r\n _defer.resolve(_cache);\r\n } else {\r\n //console.log('meta data from server');\r\n csDataService.getMetaData().then(\r\n function (response) {\r\n\r\n stCacheService.set('p2pMetaData', response);\r\n\r\n _defer.resolve(response);\r\n\r\n }, function (error) {\r\n\r\n _defer.reject(error);\r\n });\r\n }\r\n\r\n return _defer.promise;\r\n };\r\n\r\n\r\n var _metaDataService = {\r\n metaData: _metaData,\r\n getMetaData: _getMetaData\r\n };\r\n\r\n return _metaDataService;\r\n\r\n }\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/services/p2pParamsService.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .factory('p2pParamsService', p2pParamsService);\r\n\r\n function p2pParamsService() {\r\n\r\n var paramMembers =\r\n {\r\n custName: '',\r\n custPhoneNumber: '',\r\n cameFromFavorites: false\r\n }\r\n\r\n return {\r\n paramMembers: paramMembers\r\n }\r\n\r\n }\r\n})(window, window.angular);\r\n///#source 1 1 /app/p2p/services/p2pValidateID.js\r\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"calP2P\")\r\n .factory('p2pValidateID', p2pValidateID);\r\n\r\n function p2pValidateID() {\r\n\r\n var validateID = function (id) {\r\n\r\n var idnum = id;\r\n\r\n if (idnum == null || idnum.length < 3) {\r\n return false;\r\n }\r\n\r\n var idnum1 = idnum.substr(0, 1) * 1;\r\n var idnum2 = idnum.substr(1, 1) * 2;\r\n var idnum3 = idnum.substr(2, 1) * 1;\r\n var idnum4 = idnum.substr(3, 1) * 2;\r\n var idnum5 = idnum.substr(4, 1) * 1;\r\n var idnum6 = idnum.substr(5, 1) * 2;\r\n var idnum7 = idnum.substr(6, 1) * 1;\r\n var idnum8 = idnum.substr(7, 1) * 2;\r\n var idnum9 = idnum.substr(8, 1) * 1;\r\n\r\n if (idnum1 > 9)\r\n idnum1 = (idnum1 % 10) + 1;\r\n if (idnum2 > 9)\r\n idnum2 = (idnum2 % 10) + 1;\r\n if (idnum3 > 9)\r\n idnum3 = (idnum3 % 10) + 1;\r\n if (idnum4 > 9)\r\n idnum4 = (idnum4 % 10) + 1;\r\n if (idnum5 > 9)\r\n idnum5 = (idnum5 % 10) + 1;\r\n if (idnum6 > 9)\r\n idnum6 = (idnum6 % 10) + 1;\r\n if (idnum7 > 9)\r\n idnum7 = (idnum7 % 10) + 1;\r\n if (idnum8 > 9)\r\n idnum8 = (idnum8 % 10) + 1;\r\n if (idnum9 > 9)\r\n idnum9 = (idnum9 % 10) + 1;\r\n\r\n var sumval = idnum1 + idnum2 + idnum3 + idnum4 + idnum5 + idnum6 + idnum7 + idnum8 + idnum9;\r\n\r\n sumval = sumval % 10;\r\n if (sumval > 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n return {\r\n validateID: validateID\r\n }\r\n\r\n }\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers', [])\r\n .run(function ($rootScope, dvDataService, lobbyUiService, $state, $q, $ionicHistory) {\r\n\r\n var transitionTo = $state.transitionTo;\r\n\r\n $state.transitionTo = function (toState, toParams, options) {\r\n if (!toState) {\r\n return;\r\n }\r\n var fromState = $state.$current;\r\n var fromParams = $state.params;\r\n var to = toState.name || toState;\r\n\r\n var defaultRoute = dvData.routes.info;\r\n if (to.indexOf(defaultRoute) > -1) {\r\n var globalStorage = dvDataService.globalStorage(dvData.keys.globalStorageKey);\r\n\r\n //navigate to home\r\n if (to === defaultRoute) {\r\n if (fromState.name !== dvData.routes.homeTab) {\r\n if (globalStorage && globalStorage.isInfoApproved) {\r\n //event.preventDefault();\r\n $state.go(dvData.routes.home);\r\n return $q.reject(new Error('transition prvented'));\r\n }\r\n }\r\n else {\r\n //event.preventDefault(); \r\n //from dv home to info - > go to wallet lobby \r\n //$state.go('dw.wallet-home');\r\n $ionicHistory.goBack();\r\n return $q.reject(new Error('transition prvented'));\r\n }\r\n } \r\n } \r\n \r\n var toPayment = to.indexOf(dvData.routes.payment) > -1;\r\n var toApproval = to.indexOf(dvData.routes.approval) > -1;\r\n var toSend = to.indexOf(dvData.routes.send) > -1;\r\n var skipVoucherValidation = dvDataService.skipRouteValidation() || toPayment;\r\n var isPayment = fromState.name.indexOf(dvData.routes.payment) > -1;\r\n var isSend = fromState.name.indexOf(dvData.routes.send) > -1;\r\n var isWallet = fromState.name.indexOf('dw.wallet-home') > -1;\r\n\r\n if (isWallet) {\r\n if (toPayment || toSend || toApproval) {\r\n $state.go('dw.lobby');\r\n return $q.reject(new Error('transition prvented'));\r\n }\r\n }\r\n\r\n if (fromState.name.indexOf(dvData.routes.home) > -1) {\r\n if (toPayment || toSend || toApproval) {\r\n $state.go('dw.wallet-home');\r\n return $q.reject(new Error('transition prvented'));\r\n }\r\n }\r\n\r\n if (toApproval && !isSend) {\r\n //event.preventDefault();\r\n $state.go(dvData.routes.home);\r\n return $q.reject(new Error('transition prvented'));\r\n }\r\n\r\n if (isPayment || isSend) {\r\n // if (toParams) {\r\n if (!skipVoucherValidation) {\r\n if (lobbyUiService.connection.isLoggedIn()) {\r\n var buttonsLables = null;\r\n var content;\r\n if (isPayment) {\r\n content = 'יציאה מהמסך תמחק את כל הפרטים שהזנת.
לצאת בכל זאת?';\r\n buttonsLables = {\r\n OK: 'המשך',\r\n Cancel: 'ביטול'\r\n };\r\n }\r\n else {\r\n content = 'יציאה מהמסך תמחק את כל הפרטים למשלוח.
לצאת בכל זאת?';\r\n }\r\n\r\n routeValidationPopup(content, to, toParams, buttonsLables, '/vp/digital-voucher/step9/abort/');\r\n return $q.reject(new Error('transition prvented'));\r\n //event.preventDefault();\r\n }\r\n }\r\n //}\r\n else {\r\n if (isSend && toPayment) {\r\n $rootScope.$broadcast('voucherSaveState');\r\n }\r\n\r\n dvDataService.skipRouteValidation(false);\r\n }\r\n } \r\n\r\n if (!isPayment && toSend) {\r\n $state.go(dvData.routes.homeTab);\r\n return $q.reject(new Error('transition prvented'));\r\n }\r\n \r\n return transitionTo(toState, toParams, options);\r\n }\r\n\r\n $rootScope.$on('voucherSkipValidation', function (event, data) {\r\n dvDataService.skipRouteValidation(true);\r\n if (data && data.type !== 'navigate') {\r\n dvDataService.activateAbandon();\r\n }\r\n });\r\n \r\n $rootScope.voucherClosepopup = function () { \r\n dvDataService.closePopup();\r\n }; \r\n\r\n //get vouchers global data\r\n var dvData = dvDataService.getData();\r\n $rootScope.dvTitle = dvData.title;\r\n\r\n var routeValidationPopup = function (content, route, params, buttonsLables, analyticsContent) {\r\n dvDataService.popup(\r\n 'הידעת?', content, null, route, params, null, buttonsLables, analyticsContent);\r\n }\r\n\r\n //check is user approve info page\r\n $rootScope.$on('$stateChangeStart', function (event, toState, params, fromState) {\r\n\r\n });\r\n \r\n\r\n });\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers').config(digitalVouchersRoute);\r\n\r\n digitalVouchersRoute.$inject = ['$stateProvider'];\r\n\r\n function digitalVouchersRoute($stateProvider) {\r\n $stateProvider\r\n .state('dw.vouchers', {\r\n url: \"/vouchers/info\",\r\n analyticsUrl: '/vp/digital-voucher/step1/welcome/',\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/digitalVouchers/templates/dvInfo.html\",\r\n controller: \"dvInfoCtrl as dvInfo\" \r\n }\r\n }\r\n })\r\n .state('dw.vouchers-home', {\r\n cache: false,\r\n url: \"/vouchers/home\",\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/digitalVouchers/templates/dvTabs.html\",\r\n controller: \"dvTabsCtrl as dvTabs\"\r\n } \r\n }\r\n })\r\n .state('dw.vouchers-home.vouchers', {\r\n cache: false,\r\n url: \"/vouchers\",\r\n analyticsUrl:'/vp/digital-voucher/step2/show-brands/',\r\n views: {\r\n 'tabVouchers': {\r\n templateUrl: \"app/digitalVouchers/templates/dvVouchers.html\",\r\n controller: \"dvVouchersCtrl as dvVouchers\",\r\n resolve: {\r\n vouchers: function (dvDataService, $q, $state, $timeout) {\r\n var deferred = $q.defer();\r\n dvDataService.getAllDigitalVouchers().then(function (data) {\r\n deferred.resolve(data);\r\n }\r\n , function (e) { \r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .state('dw.vouchers-home.history', {\r\n cache: false,\r\n url: \"/history\",\r\n analyticsUrl: '/vp/digital-voucher/view-history/',\r\n views: {\r\n 'tabHistory': {\r\n templateUrl: \"app/digitalVouchers/templates/dvHistory.html\",\r\n controller: \"dvVouchersHistoryCtrl as dvVouchersHistory\",\r\n resolve: {\r\n history: function (lobbyUiService, dvDataService, $q, $timeout, appData) {\r\n var deferred = $q.defer();\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n $timeout(function () {\r\n lobbyUiService.go('dw.login', { nextPage: dvDataService.getData().routes.history });\r\n deferred.reject();\r\n return;\r\n });\r\n }\r\n else {\r\n var request = { idNumber: appData.CustomerInfo.Id };\r\n dvDataService.getHistoryForVouchers(request)\r\n .then(function (data) {\r\n deferred.resolve(data);\r\n }\r\n , function (e) {\r\n deferred.resolve(e);\r\n });\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .state('dw.vouchers-company', {\r\n cache: false,\r\n url: \"/vouchers/companyVouchers/:companyId\",\r\n analyticsUrl: \"vp/digital-voucher/step3/show-vouchers/\",\r\n paramsService: 'dvDataService',\r\n paramMethod: 'companyName',\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/digitalVouchers/templates/dvCompanyVouchers.html\",\r\n controller: \"dvCompanyVouchersCtrl as dvCompanyVouchers\",\r\n resolve: {\r\n companyVouchers: function (dvDataService, $state, $stateParams, $filter, $timeout, $q) {\r\n var deferred = $q.defer();\r\n var dvData = dvDataService.getData();\r\n\r\n var userStorage = dvDataService.userStorage(dvData.keys.userStorageKey);\r\n if (!userStorage) {\r\n $timeout(function () {\r\n $state.go(dvData.routes.home);\r\n })\r\n deferred.reject(); \r\n }\r\n var allVouchers = userStorage.vouchers;\r\n\r\n var company = $filter('filter')(allVouchers, function (item) {\r\n return item.CompanyId === $stateParams.companyId;\r\n })[0];\r\n\r\n dvDataService.selectedCompany(company);\r\n\r\n if (company.Vouchers.length === 1) {\r\n $timeout(function() {\r\n $state.go(dvData.routes.voucherDetails, { voucherId: company.Vouchers[0].VoucherId, isHistory:false });\r\n })\r\n deferred.reject();\r\n }\r\n else {\r\n $timeout(function () {\r\n deferred.resolve(company);\r\n });\r\n } \r\n return deferred.promise;\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .state('dw.vouchers-details', {\r\n cache: false,\r\n url: \"/vouchers/voucherDetails/:voucherId/:isHistory\",\r\n analyticsUrl: '/vp/digital-voucher/step4/voucher-terms/',\r\n paramsService: 'dvDataService',\r\n paramMethod: 'companyAndVoucherNameAndHistory',\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/digitalVouchers/templates/dvVoucherDetails.html\",\r\n controller: \"dvVoucherDetailsCtrl as dvVoucherDetails\",\r\n resolve: {\r\n voucherDetails: function (dvDataService, $q, $timeout, $state, $stateParams) {\r\n var deferred = $q.defer(); \r\n var company = dvDataService.selectedCompany();\r\n var dvData = dvDataService.getData();\r\n if (!company && !$stateParams.isHistory) {\r\n $timeout(function () {\r\n $state.go(dvData.routes.home);\r\n })\r\n deferred.reject();\r\n }\r\n var request = { voucherId: $stateParams.voucherId };\r\n\r\n var response; \r\n \r\n response = dvDataService.getDigitalVoucher(request);\r\n\r\n response.then(function (data) {\r\n dvDataService.selectedVoucher(data);\r\n deferred.resolve(data);\r\n }\r\n , function (e) { \r\n deferred.reject();\r\n });\r\n \r\n return deferred.promise;\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .state('dw.vouchers-payment', {\r\n cache: false,\r\n url: \"/vouchers/payment\",\r\n analyticsUrl: '/vp/digital-voucher/step5/enter-voucher-details/',\r\n paramsService: 'dvDataService',\r\n paramMethod: 'companyAndVoucherName',\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/digitalVouchers/templates/dvPayment.html\",\r\n controller: \"dvPaymentCtrl as dvPayment\",\r\n resolve: {\r\n payment: function (dvDataService) {\r\n return dvDataService.handleAuthentication(dvDataService.getData().routes.payment);\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .state('dw.vouchers-send', {\r\n cache: false,\r\n url: \"/vouchers/send\",\r\n analyticsUrl: '/vp/digital-voucher/step8/send-voucher/',\r\n paramsService: 'dvDataService',\r\n paramMethod: 'cNameVNameNVouchersNPayments',\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/digitalVouchers/templates/dvSendVoucher.html\",\r\n controller: \"dvSendCtrl as dvSend\",\r\n resolve: {\r\n send: function (dvDataService) {\r\n return dvDataService.handleAuthentication(dvDataService.getData().routes.payment);\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .state('dw.vouchers-approval', {\r\n cache: false,\r\n url: \"/vouchers/approval\",\r\n analyticsUrl: '/vp/digital-voucher/step12/voucher-succeed/',\r\n views: {\r\n 'contentBody': {\r\n templateUrl: \"app/digitalVouchers/templates/dvApproval.html\",\r\n controller: \"dvApprovalCtrl as dvApproval\",\r\n resolve: {\r\n approval: function (dvDataService) {\r\n return dvDataService.handleAuthentication(dvDataService.getData().routes.payment);\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .factory('dvDataService', dvDataService);\r\n\r\n function dvDataService($q, connection, $rootScope, lobbyUiService, errorService, $timeout, csPopupService) {\r\n var _data = {\r\n infoTitle: 'קל לקנות שובר דיגיטלי',\r\n companiesTitle: 'שוברים דיגיטליים',\r\n vouchersTitle: 'שוברים לבחירתך',\r\n voucherDetailsTitle: 'השובר שבחרתי',\r\n voucherDetailsHistoryTitle:'השובר שלך',\r\n paymentTitle: 'איך מתאים לך לשלם?',\r\n sendTitle: 'זהו, כבר מסיימים...',\r\n approvalTitle: 'סיכום רכישה',\r\n historyTitle: 'שוברים דיגיטליים',\r\n timeout: 20,\r\n keys: {\r\n globalStorageKey: 'dvInfoApproved',\r\n userStorageKey: 'dvUserStorage',\r\n vouchersStorageKey: 'dvVouchersStorage',\r\n selectedCompanyStorageKey: 'dvSelectedCompanyStorage',\r\n selectedVoucherStorageKey: 'selectedVoucherStorage',\r\n paymentStorageKey: 'paymentStorage',\r\n sentStorageKey: 'sentStorageKey',\r\n historyStorageKey: 'historyStorageKey'\r\n },\r\n routes: {\r\n info: 'dw.vouchers',\r\n home: 'dw.vouchers-home',\r\n homeTab: 'dw.vouchers-home.vouchers',\r\n history: 'dw.vouchers-home.history',\r\n companyVouchers: 'dw.vouchers-company',\r\n voucherDetails: 'dw.vouchers-details',\r\n payment: 'dw.vouchers-payment',\r\n send: 'dw.vouchers-send',\r\n approval: 'dw.vouchers-approval'\r\n },\r\n defaultVoucherLogo: 'content/images/general_voucher.png',\r\n contactTypes: {\r\n phone: 1,\r\n email: 2\r\n },\r\n analyticsPages: {\r\n step4: '/vp/digital-voucher/step4/voucher-terms/?brand={0}&vouchername={1}',\r\n step4Web: '/vp/digital-voucher/step4/voucher-leave-web/?brand={0}&vouchername={1}',\r\n step4Call: '/vp/digital-voucher/step4/voucher-call/?brand={0}&vouchername={1}',\r\n step6: '/vp/digital-voucher/step6/choose-card/?brand={0}&vouchername={1}&quantity={2}',\r\n step7: '/vp/digital-voucher/step7/choose-payments/?brand={0}&vouchername={1}&quantity={2}',\r\n step9: '/vp/digital-voucher/step9/click-to-confirm/?send-gift={0}'\r\n }\r\n };\r\n\r\n var _selectedCompany, _selectedVoucher;\r\n var _popup = [];\r\n var _timeout;\r\n var _isAbandon = false;\r\n var _innerStorage = {};\r\n var _skipRouteValidation = false;\r\n\r\n var _storage = function (key, value, storageObj) {\r\n if (value) {\r\n var val = JSON.stringify(value);\r\n try { \r\n storageObj.setItem(key, val);\r\n _innerStorage[key] = val;\r\n }\r\n catch (e) {\r\n _innerStorage[key] = val;\r\n }\r\n }\r\n\r\n if (value === null) {\r\n storageObj.removeItem(key);\r\n _innerStorage[key] = null;\r\n }\r\n\r\n var item = _innerStorage[key] || storageObj.getItem(key);\r\n\r\n if (item) {\r\n item = JSON.parse(item);\r\n } \r\n\r\n return item;\r\n }\r\n\r\n var globalStorage = function (key, value) {\r\n return _storage(key, value, window.localStorage);\r\n }\r\n\r\n var userStorage = function (key, value) {\r\n return _storage(key, value, window.sessionStorage);\r\n }\r\n\r\n var getAllDigitalVouchers = function () { \r\n var deferred = $q.defer();\r\n var user = userStorage(_data.keys.userStorageKey);\r\n\r\n if (user && user.vouchers) {\r\n deferred.resolve(user.vouchers);\r\n }\r\n else {\r\n lobbyUiService.loader.show();\r\n connection.getAllDigitalVouchers().then(function (data) {\r\n //data.Response.Status.Succeeded\r\n if (data && data.Response && data.Succeded) {\r\n //data.Response\r\n userStorage(_data.keys.userStorageKey, { vouchers: data.Data })\r\n deferred.resolve(data.Data);\r\n }\r\n else {\r\n errorPopup(data, 'dw.lobby');\r\n deferred.reject(data);\r\n }\r\n\r\n lobbyUiService.loader.hide(); \r\n \r\n }\r\n , function (error) { \r\n errorPopup(error, 'dw.lobby');\r\n deferred.reject(error);\r\n //errorService.handleError(error);\r\n });\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n var getDigitalVoucher = function (request) {\r\n var deferred = $q.defer();\r\n var vouchers = userStorage(_data.keys.vouchersStorageKey);\r\n\r\n if (vouchers) {\r\n var voucherDetails = vouchers[request.voucherId];\r\n if (voucherDetails) {\r\n deferred.resolve(voucherDetails);\r\n return deferred.promise;\r\n }\r\n }\r\n\r\n lobbyUiService.loader.show();\r\n connection.getDigitalVoucherDetails(request).then(function (data) {\r\n //data.Response.Status.Succeeded\r\n if (data && data.Response && data.Succeded) {\r\n //data.Response\r\n if (!vouchers) {\r\n vouchers = {};\r\n }\r\n\r\n vouchers[request.voucherId] = data;\r\n userStorage(_data.keys.vouchersStorageKey, vouchers)\r\n deferred.resolve(data);\r\n }\r\n else { \r\n var company = selectedCompany();\r\n if (company && company.Vouchers.length > 1) {\r\n errorPopup(data, _data.routes.companyVouchers, { companyId: company.CompanyId });\r\n }\r\n else {\r\n errorPopup(data, _data.routes.home);\r\n }\r\n deferred.reject(data);\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n }\r\n , function (error) {\r\n var company = selectedCompany();\r\n if (company && company.Vouchers.length > 1) {\r\n errorPopup(error, _data.routes.companyVouchers, { companyId: company.CompanyId });\r\n }\r\n else {\r\n errorPopup(error, _data.routes.home);\r\n }\r\n deferred.reject(error);\r\n //errorService.handleError(error);\r\n });\r\n\r\n\r\n return deferred.promise;\r\n }\r\n\r\n var getEligibilityForVoucher = function (request) {\r\n var deferred = $q.defer();\r\n lobbyUiService.loader.show();\r\n connection.getEligibilityForVoucher(request).then(function (data) {\r\n //data.Response.Status.Succeeded\r\n if (data && data.Response && data.Succeded) { \r\n deferred.resolve(data);\r\n }\r\n else {\r\n deferred.reject(data);\r\n errorPopup(data, _data.routes.home);\r\n //errorPopup(data, _data.routes.voucherDetails, { voucherId: _selectedVoucher.VoucherId, isHistory: false });\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n }\r\n , function (error) {\r\n if (!error[1]) {\r\n $rootScope.$broadcast('voucherSkipValidation');\r\n errorService.handleError(error, getEligibilityForVoucher);\r\n }\r\n else {\r\n errorPopup(error, _data.routes.home);\r\n //errorPopup(error, _data.routes.voucherDetails, { voucherId: _selectedVoucher.VoucherId, isHistory: false });\r\n }\r\n \r\n deferred.reject(error); \r\n });\r\n\r\n\r\n return deferred.promise;\r\n }\r\n\r\n var createPaymentForVouchers = function (request) {\r\n var deferred = $q.defer();\r\n lobbyUiService.loader.show();\r\n connection.createPaymentForVouchers(request).then(function (data) {\r\n //data.Response.Status.Succeeded\r\n if (data && data.Response && data.Succeded) {\r\n deferred.resolve(data);\r\n }\r\n else {\r\n errorPopup(data, _data.routes.payment);\r\n deferred.reject(data);\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n }\r\n , function (error) {\r\n if (!error[1]) {\r\n $rootScope.$broadcast('voucherSkipValidation');\r\n errorService.handleError(error, createPaymentForVouchers);\r\n }\r\n else {\r\n // errorPopup(error, _data.routes.payment);\r\n $rootScope.$broadcast('voucherSkipValidation');\r\n var v = selectedVoucher();\r\n errorPopup(error, _data.routes.voucherDetails, { voucherId: v.VoucherId, isHistory: false });\r\n }\r\n deferred.reject(error); \r\n });\r\n\r\n\r\n return deferred.promise; \r\n }\r\n\r\n var getHistoryForVouchers = function (request) {\r\n var deferred = $q.defer();\r\n lobbyUiService.loader.show();\r\n connection.getHistoryForVouchers(request).then(function (data) {\r\n //data.Response.Status.Succeeded\r\n if (data && data.Response && data.Succeded) {\r\n deferred.resolve(data);\r\n }\r\n else {\r\n errorPopup(data, _data.routes.homeTab, null, null, 'לבחירת שובר');\r\n deferred.reject(data);\r\n }\r\n\r\n lobbyUiService.loader.hide();\r\n\r\n }\r\n , function (error) {\r\n if (!error[1]) {\r\n $rootScope.$broadcast('voucherSkipValidation');\r\n errorService.handleError(error, getHistoryForVouchers);\r\n }\r\n else {\r\n errorPopup(error, _data.routes.homeTab);\r\n }\r\n\r\n deferred.reject(error); \r\n });\r\n\r\n\r\n return deferred.promise;\r\n }\r\n\r\n var getData = function() {\r\n return _data;\r\n }\r\n\r\n var selectedCompany = function (company) {\r\n if (company) {\r\n _selectedCompany = company;\r\n userStorage(_data.keys.selectedCompanyStorageKey, _selectedCompany)\r\n }\r\n\r\n if (!_selectedCompany) {\r\n _selectedCompany = userStorage(_data.keys.selectedCompanyStorageKey);\r\n }\r\n\r\n return _selectedCompany;\r\n }\r\n\r\n var removeSelectedCompany = function (company) {\r\n _selectedCompany = null;\r\n }\r\n\r\n var selectedVoucher = function (voucher) {\r\n if (voucher) {\r\n _selectedVoucher = voucher;\r\n userStorage(_data.keys.selectedVoucherStorageKey, _selectedVoucher)\r\n }\r\n\r\n if (!_selectedVoucher) {\r\n _selectedVoucher = userStorage(_data.keys.selectedVoucherStorageKey);\r\n }\r\n\r\n return _selectedVoucher;\r\n }\r\n\r\n var resetSelectedVoucher = function () {\r\n userStorage(_data.keys.selectedVoucherStorageKey, null);\r\n _selectedVoucher = null;\r\n }\r\n\r\n var popup = function (title, content, buttons, url, urlParams, hideXBtn, buttonsLables, analyticsContent) {\r\n _popup.push(lobbyUiService.popup.digitalVouchers(dvDataService, title, content, url, urlParams, buttons, hideXBtn, buttonsLables, analyticsContent));\r\n }\r\n\r\n var errorPopup = function (error, url, urlParams, content, buttonText) {\r\n var dialogBox = {\r\n Title: '',\r\n Content: content || 'בשל תקלה לא ניתן להשלים את הפעולה. יש לנסות שנית מאוחר יותר'\r\n };\r\n\r\n if (error && error[0] && error[0].response) {\r\n dialogBox = error[0].response.Response.DialogBox;\r\n }\r\n else if (error && error.Response.DialogBox) {\r\n dialogBox = error.Response.DialogBox;\r\n }\r\n \r\n lobbyUiService.loader.hide();\r\n\r\n var buttons;\r\n if (url) {\r\n buttons =\r\n [{\r\n text: buttonText || 'סגור',\r\n type: 'button-positive',\r\n onTap: function () {\r\n lobbyUiService.navigate(url, null, urlParams);\r\n }\r\n }];\r\n }\r\n\r\n popup(dialogBox.Title, dialogBox.Content, buttons, null, null, true);\r\n }\r\n\r\n var closePopup = function () {\r\n for (var i = 0; i < _popup.length; i++) {\r\n _popup[i].close(); \r\n }\r\n\r\n _popup = [];\r\n }\r\n\r\n var setExpiration = function() {\r\n _timeout = new Date(new Date().getTime() + (_data.timeout * 60000)); \r\n\r\n _checkTimeout();\r\n return _timeout;\r\n }\r\n\r\n var activateAbandon = function () {\r\n _timeout = null;\r\n _isAbandon = true;\r\n userStorage(_data.keys.paymentStorageKey, null);\r\n userStorage(_data.keys.sentStorageKey, null);\r\n }\r\n\r\n var clearAbandon = function () {\r\n _isAbandon = false;\r\n }\r\n\r\n var getAbandon = function () {\r\n return _isAbandon;\r\n }\r\n\r\n var _checkTimeout = function () {\r\n $timeout(function () { \r\n if (_isTimeout()) {\r\n var content = 'היי, נעלמת לנו :)
אבל אל דאגה – אפשר עדיין להזמין את השובר';\r\n var buttonText = 'הזמנת שובר';\r\n \r\n errorPopup('', _data.routes.voucherDetails, { voucherId: _selectedVoucher.VoucherId, isHistory: false }, content, buttonText);\r\n $rootScope.$broadcast('voucherSkipValidation');\r\n }\r\n else {\r\n _timeout && _checkTimeout();\r\n }\r\n }, 30000)\r\n }\r\n\r\n var _isTimeout = function () {\r\n if (_timeout) {\r\n return new Date().getTime() > _timeout;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n var contactSuccessCallback = function (result, contactType) {\r\n var deferred = $q.defer();\r\n $timeout(function () {\r\n var _name = result.name.formatted;\r\n var isPhone = contactType == _data.contactTypes.phone;\r\n var _contactData = isPhone ? result.phoneNumbers : result.emails;\r\n\r\n if (!_name || !_contactData) {\r\n csPopupService.error('לא ניתן להוסיף איש קשר זה');\r\n deferred.reject('לא ניתן להוסיף איש קשר זה');\r\n }\r\n\r\n if (isPhone) {\r\n // Show popup for select phone numbers from list of a contact\r\n return deferred.resolve(csPopupService.phoneNumberPicker(_contactData, true));\r\n }\r\n else {\r\n return deferred.resolve(_contactData[0].value);\r\n }\r\n });\r\n\r\n return deferred.promise;\r\n };\r\n var contactFailedCallback = function (contactError) {\r\n if (contactError.code == 20) {\r\n csPopupService.error('יש לאפשר גישה לאנשי קשר. גש/י אל הגדרות > ארנק Cal4U > אנשי קשר.');\r\n }\r\n else {\r\n csPopupService.error('לא ניתן להוסיף איש קשר זה');\r\n }\r\n }\r\n\r\n var chooseContact = function (contactType) {\r\n var deferred = $q.defer(); \r\n if (navigator.contacts) {\r\n navigator.contacts.pickContact(function (result) {\r\n contactSuccessCallback(result, contactType).then(function (phoneNumber) {\r\n deferred.resolve(phoneNumber);\r\n });\r\n }, contactFailedCallback);\r\n }\r\n else {\r\n $timeout(function () {\r\n var err = 'contact plugin not exists';\r\n console.log(err);\r\n deferred.reject(err);\r\n })\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n var skipRouteValidation = function (value) {\r\n if (angular.isDefined(value)) {\r\n _skipRouteValidation = value;\r\n }\r\n\r\n return _skipRouteValidation;\r\n }\r\n\r\n var handleAuthentication = function (returnRoute) {\r\n var deferred = $q.defer();\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n userStorage(_data.keys.paymentStorageKey, null);\r\n userStorage(_data.keys.sentStorageKey, null);\r\n $timeout(function () {\r\n lobbyUiService.go('dw.login', { nextPage: returnRoute });\r\n deferred.reject();\r\n return;\r\n });\r\n }\r\n\r\n deferred.resolve(true);\r\n\r\n return deferred.promise;\r\n }\r\n\r\n var companyAndVoucherName = function () {\r\n var company = selectedCompany();\r\n //var company = userStorage(_data.keys.dvSelectedCompanyStorage);\r\n var voucher = selectedVoucher();\r\n if (company && voucher) {\r\n return '?brand=' + company.CompanyName + '&vouchername=' + voucher.VoucherName;\r\n }\r\n }\r\n\r\n var companyName = function () {\r\n var company = selectedCompany();\r\n //var company = userStorage(_data.keys.dvSelectedCompanyStorage);\r\n if (company) {\r\n return '?brand=' + company.CompanyName;\r\n }\r\n }\r\n\r\n var cNameVNameNVouchersNPayments = function () {\r\n var company = selectedCompany();\r\n var voucher = selectedVoucher();\r\n var payment = userStorage(_data.keys.paymentStorageKey);\r\n\r\n if (company && voucher && payment) {\r\n return '?brand=' + company.CompanyName + '&vouchername=' + voucher.VoucherName + '&quantity=' + payment.numOfVouchers + '&payments=' + payment.selectedPayment;\r\n }\r\n }\r\n\r\n var companyAndVoucherNameAndHistory = function () {\r\n var company = selectedCompany();\r\n var voucher = selectedVoucher();\r\n var history = userStorage(_data.keys.historyStorageKey);\r\n if (history) {\r\n return '?brand=' + history.companyName + '&vouchername=' + voucher.VoucherName;\r\n }\r\n else\r\n {\r\n if (company && voucher) {\r\n return '?brand=' + company.CompanyName + '&vouchername=' + voucher.VoucherName;\r\n }\r\n }\r\n }\r\n\r\n return {\r\n getData: getData,\r\n getAllDigitalVouchers: getAllDigitalVouchers,\r\n getDigitalVoucher: getDigitalVoucher,\r\n getEligibilityForVoucher: getEligibilityForVoucher,\r\n createPaymentForVouchers: createPaymentForVouchers,\r\n getHistoryForVouchers: getHistoryForVouchers,\r\n globalStorage: globalStorage,\r\n userStorage: userStorage,\r\n selectedCompany: selectedCompany,\r\n selectedVoucher: selectedVoucher,\r\n resetSelectedVoucher: resetSelectedVoucher,\r\n popup: popup,\r\n errorPopup: errorPopup,\r\n closePopup: closePopup,\r\n setExpiration: setExpiration,\r\n activateAbandon: activateAbandon,\r\n clearAbandon: clearAbandon,\r\n getAbandon: getAbandon,\r\n chooseContact: chooseContact,\r\n skipRouteValidation: skipRouteValidation,\r\n handleAuthentication: handleAuthentication,\r\n removeSelectedCompany: removeSelectedCompany,\r\n companyAndVoucherName: companyAndVoucherName,\r\n companyName: companyName,\r\n cNameVNameNVouchersNPayments: cNameVNameNVouchersNPayments,\r\n companyAndVoucherNameAndHistory: companyAndVoucherNameAndHistory\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .directive('counter', function ($rootScope) {\r\n return { \r\n restrict: 'A', \r\n scope: {\r\n value: '=value',\r\n max: '=max'\r\n },\r\n template: '+\\\r\n \\\r\n -',\r\n link: function(scope ,element ,attributes) { \r\n // Make sure the value attribute is not missing. \r\n if( angular.isUndefined(scope.value)) { \r\n throw \"Missing the value attribute on the counter directive.\";\r\n }\r\n \r\n var min = angular.isUndefined(attributes.min) ? null : parseInt(attributes.min); \r\n var step = angular.isUndefined(attributes.step) ? 1 : parseInt(attributes.step);\r\n\r\n element.addClass('counter-container');\r\n \r\n // If the 'editable' attribute is set, we will make the field editable. \r\n\r\n scope.readonly = angular.isUndefined(attributes.editable) ? true : false;\r\n\r\n /**\r\n *\r\n Sets the value as an integer. \r\n \r\n */\r\n \r\n var setValue = function(val) { \r\n scope.value = parseInt(val); \r\n }\r\n\r\n // Set the value initially, as an integer. \r\n\r\n setValue(scope.value); \r\n\r\n /**\r\n *\r\n Decrement the value and make sure we stay within the limits, if defined. \r\n */\r\n\r\n scope.minus = function() { \r\n if (min && (scope.value <= min || scope.value - step <= min) \r\n || min === 0 && scope.value < 1 ) { \r\n\r\n setValue(min);\r\n return false;\r\n }\r\n\r\n setValue(scope.value - step); \r\n };\r\n \r\n /**\r\n *\r\n Increment the value and make sure we stay within the limits, if defined. \r\n \r\n */\r\n \r\n scope.plus = function () {\r\n var max = scope.max;\r\n if ( max && (scope.value > max || scope.value + step > max)) { \r\n setValue(max);\r\n $rootScope.$broadcast('counterPlusLimit');\r\n return false;\r\n }\r\n \r\n setValue(scope.value + step); \r\n };\r\n \r\n /**\r\n *\r\n This is only triggered when the field is manually edited by the user. \r\n *\r\n Where we can perform some validation and make sure that they enter the \r\n *\r\n correct values from within the restrictions. \r\n */\r\n \r\n scope.changed = function () {\r\n var max = scope.max;\r\n // If the user decides to delete the number, we will set it to 0. \r\n\r\n if ( !scope.value) {\r\n setValue(0);\r\n }\r\n\r\n //Check if what's typed is numeric or if it has any letters. \r\n\r\n if ( /[0-9]/.test(scope.value)) { \r\n setValue(\r\n scope.value\r\n ); \r\n }\r\n else\r\n { \r\n setValue(scope.min); \r\n }\r\n\r\n //If a minimum is set, let's make sure we're within the limit. \r\n\r\n if(min && (scope.value <= min || scope.value - step <= min)) { \r\n setValue(min);\r\n return false;\r\n }\r\n \r\n //If a maximum is set, let's make sure we're within the limit. \r\n\r\n if (max && (scope.value >= max || scope.value + step >= max)) { \r\n setValue(max);\r\n\r\n return false;\r\n }\r\n \r\n //Re-set the value as an integer. \r\n\r\n setValue(scope.value); \r\n };\r\n }\r\n }\r\n });\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .directive('companyThumbnail', function () {\r\n return {\r\n restrict: 'A',\r\n scope: { company: '=' },\r\n replace: true,\r\n template: '
\\\r\n
\\\r\n
{{::company.CompanyName}}
\\\r\n
',\r\n link: function (scope, element, attributes) {\r\n scope.defaultLogo = 'content/images/general_logo.png';\r\n }\r\n }\r\n })\r\n .directive('noTag', function () {\r\n return { \r\n replace: true,\r\n transclude: true,\r\n \r\n link: function (scope, element, attrs, ctrls, $transclude) {\r\n /*$transclude(function (clone, scope) {\r\n element.append(clone);\r\n });*/\r\n }\r\n }\r\n });\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .directive('externalLink', function () {\r\n return {\r\n restrict: 'A' ,\r\n link: function (scope, element, attributes) {\r\n element.on('click', function (e) {\r\n e.preventDefault();\r\n var targetUrl = element.attr('href');\r\n window.open(targetUrl, '_system');\r\n })\r\n }\r\n }\r\n });\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers').directive('accessibleForm', function ($timeout, $ionicScrollDelegate) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, elem) {\r\n\r\n // set up event handler on the form element\r\n elem.on('submit', function () {\r\n\r\n // find the first invalid element\r\n var firstInvalid = elem[0].querySelector('.ng-invalid');\r\n\r\n // if we find one, set focus\r\n if (firstInvalid) {\r\n $timeout(function () {\r\n var top = getOffset(firstInvalid).top - 100; \r\n $ionicScrollDelegate.$getByHandle('senderScroll').scrollTo(0, top, true);\r\n firstInvalid.focus();\r\n }) \r\n }\r\n });\r\n\r\n function getOffset(el) {\r\n var _x = 0;\r\n var _y = 0;\r\n while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {\r\n _x += el.offsetLeft - el.scrollLeft;\r\n _y += el.offsetTop - el.scrollTop;\r\n el = el.offsetParent;\r\n }\r\n return { top: _y, left: _x };\r\n } \r\n\r\n }\r\n };\r\n });\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .controller('dvInfoCtrl', dvInfoCtrl);\r\n\r\n dvInfoCtrl.$inject = [\r\n '$scope', \r\n '$state',\r\n 'dvDataService',\r\n 'googleAnalyticsService'\r\n ];\r\n\r\n function dvInfoCtrl($scope, $state, dvDataService, googleAnalyticsService) {\r\n\r\n var dvInfo = this; \r\n\r\n var dvData = dvDataService.getData();\r\n dvInfo.title = dvData.infoTitle;\r\n\r\n dvInfo.formData = {\r\n isInfoApproved: false\r\n }; \r\n\r\n dvInfo.approveInfo = function () {\r\n if (dvInfo.formData.isInfoApproved) {\r\n dvDataService.globalStorage(dvData.keys.globalStorageKey, { isInfoApproved: true });\r\n }\r\n\r\n $state.go(dvData.routes.homeTab);\r\n } \r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .controller('dvTabsCtrl', dvTabsCtrl);\r\n\r\n dvTabsCtrl.$inject = [\r\n '$scope',\r\n 'dvDataService' \r\n ];\r\n\r\n function dvTabsCtrl($scope, dvDataService) {\r\n\r\n var dvTabs = this;\r\n\r\n\r\n var _data = dvDataService.getData();\r\n dvTabs.Title = _data.companiesTitle;\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .controller('dvVouchersCtrl', dvVouchersCtrl);\r\n\r\n dvVouchersCtrl.$inject = [\r\n '$scope',\r\n 'dvDataService',\r\n 'vouchers',\r\n '$filter',\r\n '$timeout',\r\n '$ionicSideMenuDelegate'\r\n ];\r\n\r\n function dvVouchersCtrl($scope, dvDataService, vouchers, $filter, $timeout, $ionicSideMenuDelegate) {\r\n var dvVouchers = this;\r\n\r\n dvVouchers.vouchers = vouchers;\r\n\r\n var _data = dvDataService.getData();\r\n dvVouchers.title = _data.companiesTitle;\r\n //clean prev session \r\n dvDataService.userStorage(_data.keys.selectedCompanyStorageKey, null);\r\n dvDataService.userStorage(_data.keys.selectedVoucherStorageKey, null);\r\n dvDataService.userStorage(_data.keys.vouchersStorageKey, null);\r\n dvDataService.userStorage(_data.keys.paymentStorageKey, null);\r\n dvDataService.userStorage(_data.keys.sentStorageKey, null);\r\n\r\n $timeout(function () {\r\n $ionicSideMenuDelegate.canDragContent(false);\r\n });\r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n viewData.enableBack = true;\r\n });\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .controller('dvCompanyVouchersCtrl', dvCompanyVouchersCtrl);\r\n\r\n dvCompanyVouchersCtrl.$inject = [\r\n '$scope', \r\n 'dvDataService', \r\n 'companyVouchers',\r\n '$filter',\r\n '$state',\r\n '$timeout'\r\n ];\r\n\r\n function dvCompanyVouchersCtrl($scope, dvDataService, companyVouchers, $filter, $state, $timeout) {\r\n\r\n var dvCompanyVouchers = this;\r\n\r\n var dvData = dvDataService.getData();\r\n dvCompanyVouchers.title = dvData.vouchersTitle;\r\n\r\n dvDataService.selectedCompany(companyVouchers);\r\n\r\n companyVouchers.Vouchers = $filter('filter')(companyVouchers.Vouchers, function (item) {\r\n return item.VoucherAmountFinal > 0;\r\n });\r\n\r\n $timeout(function () {\r\n var content = $(\".dvcv-vouchers\");\r\n content.css('top', $(\".dvcv-title\").offset().top);\r\n content.show();\r\n });\r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n viewData.enableBack = true;\r\n })\r\n\r\n dvCompanyVouchers.company = companyVouchers;\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .controller('dvVoucherDetailsCtrl', dvVoucherDetailsCtrl);\r\n\r\n dvVoucherDetailsCtrl.$inject = [\r\n '$scope', \r\n 'dvDataService', \r\n 'voucherDetails',\r\n '$stateParams',\r\n 'lobbyUiService',\r\n 'googleAnalyticsService'\r\n ];\r\n\r\n function dvVoucherDetailsCtrl($scope, dvDataService, voucherDetails, $stateParams, lobbyUiService, googleAnalyticsService) {\r\n\r\n var dvVoucherDetails = this;\r\n var giftArray = \"\";\r\n \r\n // dvVoucherDetails.company = dvDataService.selectedCompany() || { CompanyName: $stateParams.companyName};\r\n dvVoucherDetails.isHistory = JSON.parse($stateParams.isHistory);\r\n\r\n var _data = dvDataService.getData();\r\n if (dvVoucherDetails.isHistory) {\r\n dvVoucherDetails.history = dvDataService.userStorage(_data.keys.historyStorageKey);\r\n \r\n }\r\n dvVoucherDetails.company = dvDataService.selectedCompany() ||\r\n { CompanyName: dvVoucherDetails.history && dvVoucherDetails.history.companyName };\r\n\r\n dvVoucherDetails.voucher = voucherDetails;\r\n voucherDetails.VoucherId = $stateParams.voucherId;\r\n voucherDetails.VoucherNumber = dvVoucherDetails.history ? dvVoucherDetails.history.voucherNumber : '';\r\n //dvDataService.selectedVoucher(voucherDetails); \r\n \r\n dvVoucherDetails.title = _data.voucherDetailsTitle;\r\n dvVoucherDetails.historyTitle = _data.voucherDetailsHistoryTitle;\r\n\r\n dvVoucherDetails.defaultLogo = _data.defaultVoucherLogo;\r\n\r\n dvVoucherDetails.nextPage = function () {\r\n dvDataService.clearAbandon();\r\n lobbyUiService.go(_data.routes.payment);\r\n }\r\n \r\n dvVoucherDetails.checkIfNull=function(field)\r\n {\r\n if (field == '' || field == null)\r\n return false\r\n else\r\n return true;\r\n }\r\n\r\n dvVoucherDetails.leaveToWeb = function () {\r\n googleAnalyticsService.trackPage(String.format(_data.analyticsPages.step4Web, dvVoucherDetails.company.CompanyName,dvVoucherDetails.voucher.VoucherName));\r\n }\r\n\r\n dvVoucherDetails.voucherCall = function () {\r\n googleAnalyticsService.trackPage(String.format(_data.analyticsPages.step4Call, dvVoucherDetails.company.CompanyName, dvVoucherDetails.voucher.VoucherName));\r\n }\r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n viewData.enableBack = true;\r\n });\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .controller('dvPaymentCtrl', dvPaymentCtrl);\r\n\r\n dvPaymentCtrl.$inject = [\r\n '$scope',\r\n '$q',\r\n '$state',\r\n '$rootScope',\r\n '$filter',\r\n 'appData',\r\n 'dvDataService',\r\n '$stateParams',\r\n 'lobbyUiService',\r\n 'googleAnalyticsService',\r\n ];\r\n\r\n function dvPaymentCtrl($scope, $q, $state, $rootScope, $filter, appData, dvDataService, $stateParams, lobbyUiService, googleAnalyticsService) {\r\n\r\n var dvPayment = this;\r\n\r\n var _data = dvDataService.getData();\r\n dvPayment.title = _data.paymentTitle;\r\n\r\n var payment = null;\r\n if (dvDataService.userStorage(_data.keys.paymentStorageKey)) {\r\n payment = dvDataService.userStorage(_data.keys.paymentStorageKey);\r\n }\r\n\r\n dvPayment.eligibility = payment || {\r\n numOfVouchers: 1,\r\n //numOfPayments: 1,\r\n selectedPayment:1\r\n };\r\n\r\n var CREDIT_TYPE = {\r\n REGULAR: 1,\r\n CREDIT: 2\r\n }\r\n\r\n dvPayment.initPaymentArray = function () {\r\n dvPayment.payments = [];\r\n dvPayment.payments.push({ num: 1, content: \"תשלום 1 (עסקה רגילה)\", type: CREDIT_TYPE.REGULAR });\r\n };\r\n\r\n dvPayment.initPaymentArray();\r\n\r\n dvDataService.skipRouteValidation(true);\r\n\r\n var isAuthorized = function () {\r\n if (!lobbyUiService.connection.isLoggedIn()) {\r\n lobbyUiService.go('dw.login', { nextPage: _data.routes.payment }, { location: 'replace' });\r\n return false;\r\n }\r\n\r\n if (!dvPayment.company || !dvPayment.voucher) {\r\n lobbyUiService.go(_data.routes.home);\r\n return false;\r\n }\r\n\r\n if (dvDataService.getAbandon()) {\r\n lobbyUiService.go(_data.routes.voucherDetails, { voucherId: dvPayment.voucher.VoucherId, isHistory: false });\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n var _data = dvDataService.getData();\r\n dvPayment.company = dvDataService.selectedCompany();\r\n dvPayment.voucher = dvDataService.selectedVoucher();\r\n\r\n var bankIndex = appData.selectedBankAccountIndex || 0;\r\n var currentBankAccount = null;\r\n if (appData.BankAccounts) {\r\n currentBankAccount = appData.BankAccounts[bankIndex];\r\n }\r\n\r\n if (!isAuthorized()) {\r\n return;\r\n }\r\n\r\n if (appData.BankAccounts) {\r\n var cards = [];\r\n for (var i = 0; i < appData.BankAccounts.length; i++) {\r\n cards = cards.concat(appData.BankAccounts[i].Cards);\r\n }\r\n\r\n dvPayment.cards = _.filter(cards, function (card) {\r\n return card.CreditProductsInd == true;\r\n });\r\n\r\n if (dvPayment.cards.length === 0) {\r\n return;\r\n }\r\n \r\n var selectedCard = currentBankAccount.Cards[appData.shownCardIndex];\r\n if (dvPayment.cards.indexOf(selectedCard) > -1) {\r\n dvPayment.selectedCard = currentBankAccount.Cards[appData.shownCardIndex].Id;\r\n }\r\n else {\r\n dvPayment.selectedCard = dvPayment.cards[0].Id;\r\n }\r\n }\r\n\r\n dvPayment.changeNumOfPayment = function()\r\n {\r\n dvPayment.initPaymentArray();\r\n if (dvPayment.voucher) {\r\n dvPayment.totalSum = parseFloat((dvPayment.eligibility.numOfVouchers * dvPayment.voucher.VoucherAmountFinal).toFixed(2));\r\n if (dvPayment.totalSum > dvPayment.eligibility.minAmountForCredit) {\r\n dvPayment.eligibility.numberOfPayments = dvPayment.totalSum / dvPayment.eligibility.minAmountForPayment;\r\n if (dvPayment.eligibility.numberOfPayments > dvPayment.eligibility.maxNumberOfPayments)\r\n dvPayment.eligibility.numberOfPayments = 18;\r\n for (var i = parseInt(dvPayment.eligibility.minNumberOfPayments) ; i <= dvPayment.eligibility.numberOfPayments; i++) {\r\n dvPayment.payments.push({ num: i, content: \" תשלומים (קרדיט)\", type: CREDIT_TYPE.CREDIT });\r\n }\r\n }\r\n\r\n var selected = dvPayment.payments.filter(function (item) {\r\n return item.num == dvPayment.eligibility.selectedPayment;\r\n });\r\n\r\n if (selected.length === 0) {\r\n dvPayment.eligibility.selectedPayment = -1;\r\n dvPayment.payments.unshift({ num: -1, content: 'בחר מספר תשלומים' });\r\n }\r\n else {\r\n dvPayment.eligibility.selectedPayment = selected[0].num;\r\n }\r\n }\r\n }\r\n\r\n $scope.$on('counterPlusLimit', function () {\r\n if (!dvPayment.eligibility.numOfVouchersLimit) {\r\n dvPayment.eligibility.numOfVouchersLimit = 1;\r\n }\r\n\r\n dvPayment.eligibility.numOfVouchersLimit += 1;\r\n });\r\n\r\n $scope.$watch('dvPayment.eligibility.numOfVouchers', function (newValue, oldValue) {\r\n dvPayment.eligibility.numOfVouchersLimit = dvPayment.eligibility.numOfVouchers;\r\n dvPayment.changeNumOfPayment();\r\n });\r\n\r\n\r\n dvPayment.onCardChange = function () {\r\n googleAnalyticsService.trackPage(String.format(_data.analyticsPages.step6, dvPayment.company.CompanyName, dvPayment.voucher.VoucherName, dvPayment.eligibility.numOfVouchers));\r\n //conversionService.fireDigitalVouchersPerformance();\r\n\r\n var selectedIndex;\r\n for (var i = 0; i < appData.BankAccounts.length; i++) {\r\n var card = $filter('filter')(appData.BankAccounts[i].Cards, function (item) {\r\n var isMatch = item.Id === dvPayment.selectedCard;\r\n if (isMatch) {\r\n currentBankAccount = appData.BankAccounts[i];\r\n appData.selectedBankAccountIndex = i;\r\n selectedIndex = currentBankAccount.Cards.indexOf(item);\r\n }\r\n\r\n return isMatch;\r\n })[0];\r\n }\r\n \r\n appData.shownCardIndex = selectedIndex; \r\n }\r\n\r\n dvPayment.onPaymentChange = function () {\r\n googleAnalyticsService.trackPage(String.format(_data.analyticsPages.step7,dvPayment.company.CompanyName, dvPayment.voucher.VoucherName, dvPayment.eligibility.numOfVouchers));\r\n }\r\n\r\n dvPayment.nextPage = function () {\r\n if (dvPayment.eligibility.selectedPayment !== -1) {\r\n var paymentStorage = dvPayment.eligibility;\r\n paymentStorage.card = dvPayment.selectedCard;\r\n\r\n //card: dvPayment.selectedCard,\r\n\r\n //save state in session\r\n dvDataService.userStorage(_data.keys.paymentStorageKey, paymentStorage);\r\n\r\n $rootScope.$broadcast('voucherSkipValidation', { type: 'navigate' });\r\n $state.go(_data.routes.send);\r\n }\r\n\r\n }\r\n\r\n var getEligibilityForVoucher = function () {\r\n var deferred = $q.defer();\r\n var voucher = dvDataService.selectedVoucher();\r\n if (voucher) {\r\n var request = {\r\n voucherId: voucher.VoucherId \r\n }\r\n var eligibility = dvDataService.getEligibilityForVoucher(request); \r\n \r\n deferred.resolve(eligibility);\r\n }\r\n else {\r\n deferred.reject();\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n var errorPopup = function (content) {\r\n dvDataService.errorPopup(null, _data.routes.home, null, content);\r\n }\r\n\r\n var sendStorage = dvDataService.userStorage(_data.keys.sentStorageKey);\r\n if (sendStorage == null) {\r\n getEligibilityForVoucher()\r\n .then(function (data) {\r\n if (isNaN(data.Data.TotalNumberOfVouchers) || data.Data.TotalNumberOfVouchers == 0) {\r\n errorPopup(data.Data.Content);\r\n return;\r\n }\r\n\r\n dvDataService.skipRouteValidation(false);\r\n dvDataService.setExpiration();\r\n\r\n dvPayment.eligibility = {\r\n maxNumOfVouchers: data.Data.TotalNumberOfVouchers,\r\n content: data.Data.Content,\r\n minAmountForPayment: data.MinAmountForPayment,\r\n minAmountForCredit: data.MinAmountForCredit,\r\n maxNumberOfPayments: data.MaxNumberOfPayments,\r\n minNumberOfPayments: data.MinNumberOfPayments,\r\n processId: data.Data.ProcessId,\r\n numOfVouchers: 1,\r\n selectedPayment: 1\r\n // numOfPayments: 1\r\n }\r\n \r\n\r\n dvPayment.changeNumOfPayment();\r\n lobbyUiService.loader.hide();\r\n }\r\n , function (e) {\r\n //error\r\n });\r\n }\r\n else {\r\n dvDataService.skipRouteValidation(false);\r\n }\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .controller('dvVouchersHistoryCtrl', dvVouchersHistoryCtrl);\r\n\r\n dvVouchersHistoryCtrl.$inject = [\r\n '$scope',\r\n '$timeout',\r\n '$state',\r\n 'dvDataService',\r\n 'history'\r\n ];\r\n\r\n function dvVouchersHistoryCtrl($scope, $timeout, $state, dvDataService, history) {\r\n\r\n var dvVouchersHistory = this;\r\n\r\n var _data = dvDataService.getData();\r\n dvVouchersHistory.title = _data.historyTitle;\r\n \r\n if (!history.Data) {\r\n return;\r\n }\r\n\r\n dvVouchersHistory.companies = history.Data;\r\n \r\n dvDataService.userStorage(_data.keys.selectedCompanyStorageKey, null);\r\n dvDataService.removeSelectedCompany();\r\n\r\n dvVouchersHistory.nextPage = function (c, v)\r\n {\r\n dvDataService.userStorage(_data.keys.historyStorageKey, {\r\n companyName: c.CompanyName,\r\n voucherNumber: v.VoucherNumber,\r\n isGift: v.IsGift,\r\n name2: v.Name2,\r\n customerServiceTelNum: history.CustomerServiceTelNum\r\n });\r\n $state.go(_data.routes.voucherDetails, { voucherId: v.VoucherId, isHistory: true });\r\n }\r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n viewData.enableBack = true;\r\n });\r\n \r\n $timeout(function () {\r\n $('.vouchers-history .dv-thumbnail:even').addClass('white');\r\n }); \r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .controller('dvSendCtrl', dvSendCtrl);\r\n\r\n dvSendCtrl.$inject = [\r\n '$scope',\r\n '$q',\r\n '$state',\r\n 'appData',\r\n 'dvDataService',\r\n '$stateParams',\r\n 'lobbyUiService',\r\n '$rootScope',\r\n 'googleAnalyticsService',\r\n '$timeout'\r\n ];\r\n\r\n function dvSendCtrl($scope, $q, $state, appData, dvDataService, $stateParams, lobbyUiService, $rootScope, googleAnalyticsService, $timeout) {\r\n\r\n var dvSend = this;\r\n\r\n dvSend.company = dvDataService.selectedCompany();\r\n dvSend.voucher = dvDataService.selectedVoucher(); \r\n \r\n var _data = dvDataService.getData();\r\n dvSend.Title = _data.sendTitle;\r\n\r\n var payment = dvDataService.userStorage(_data.keys.paymentStorageKey); \r\n\r\n if (!dvSend.company || !dvSend.voucher) {\r\n $rootScope.$broadcast('voucherSkipValidation');\r\n $state.go(_data.routes.home);\r\n return;\r\n } \r\n\r\n if (!payment) {\r\n $rootScope.$broadcast('voucherSkipValidation');\r\n $state.go(_data.routes.payment);\r\n return;\r\n }\r\n\r\n dvSend.defaultLogo = _data.defaultVoucherLogo;\r\n\r\n dvSend.sendTypes = {\r\n 'me':\r\n {\r\n value: 1\r\n },\r\n 'present': {\r\n value: 2\r\n }\r\n } \r\n\r\n var sendStorage = dvDataService.userStorage(_data.keys.sentStorageKey);\r\n\r\n dvSend.selectedType = (sendStorage && sendStorage.selectedType) || {\r\n value: 1\r\n };\r\n\r\n var initForm = function () { \r\n var phone = appData.CustomerInfo && appData.CustomerInfo.Phone;\r\n var reg = new RegExp('^(\\\\+972|0)5\\\\d{8}$');\r\n if (!reg.test(phone)) {\r\n phone = '';\r\n }\r\n\r\n dvSend.form = (sendStorage && sendStorage.form) || {\r\n senderPhone: phone,\r\n email: appData.CustomerInfo && appData.CustomerInfo.Email,\r\n sender: appData.CustomerInfo && (appData.CustomerInfo.FirstName + ' ' + appData.CustomerInfo.LastName)\r\n }; \r\n }\r\n\r\n $rootScope.$on('voucherSaveState', function () { \r\n dvDataService.userStorage(_data.keys.sentStorageKey, { selectedType: dvSend.selectedType, form: dvSend.form });\r\n\r\n });\r\n\r\n dvSend.isPresent = dvSend.selectedType.value === 2;\r\n dvSend.isPresentFirstLoad = true;\r\n\r\n initForm();\r\n\r\n $scope.$watch('dvSend.selectedType', function (newValue, oldValue) { \r\n if (newValue !== oldValue) {\r\n dvSend.isPresent = dvSend.selectedType.value === 2;\r\n if (dvSend.isPresentFirstLoad) {\r\n dvSend.isPresentFirstLoad = false;\r\n }\r\n if (!dvSend.isPresent)\r\n {\r\n dvSend.form.reciever = \"\";\r\n dvSend.form.phone = \"\";\r\n dvSend.form.recieverEmail = \"\";\r\n dvSend.form.freeText = \"\";\r\n }\r\n //dvSend.voucherForm.$setPristine();\r\n }\r\n }, true);\r\n\r\n dvSend.isSupportContacts = !!navigator.contacts;\r\n dvSend.chooseContact = function (model, contactType) {\r\n dvDataService.chooseContact(contactType).then(\r\n function (contactData) {\r\n dvSend.form[model] = contactData;\r\n }\r\n , function (e) {\r\n //dvDataService.errorPopup();\r\n });\r\n }\r\n\r\n dvSend.nextPage = function () {\r\n if (!dvSend.voucherForm.$valid) {\r\n $timeout(function () {\r\n var err = $.trim($('.dv-error:first').text());\r\n googleAnalyticsService.trackPage(String.format(_data.analyticsPages.step9, dvSend.isPresent + '&error=' + err));\r\n })\r\n return;\r\n }\r\n\r\n googleAnalyticsService.trackPage(String.format(_data.analyticsPages.step9, dvSend.isPresent));\r\n\r\n var sentStorage = {\r\n name: dvSend.isPresent ? dvSend.form.reciever : ''\r\n }\r\n\r\n /*dvDataService.userStorage(_data.keys.sentStorageKey, sentStorage);\r\n $rootScope.$broadcast('voucherSkipValidation');\r\n $state.go(_data.routes.approval);\r\n return;*/\r\n\r\n var payment = dvDataService.userStorage(_data.keys.paymentStorageKey);\r\n\r\n var request = {\r\n uniqueId: payment.card,\r\n amount: payment.numOfVouchers * dvSend.voucher.VoucherAmountFinal, \r\n //paymentsCount: payment.numOfPayments,\r\n paymentsCount: payment.selectedPayment,\r\n //creditType: payment.numOfPayments === 1 ? 1 : 6,\r\n creditType: payment.selectedPayment === 1 ? 1 : 6,\r\n bussinessInfo: dvSend.company.CompanyName,\r\n numberOfVouchers: payment.numOfVouchers,\r\n telNumber: dvSend.form.senderPhone,\r\n mailAddress: dvSend.form.email,\r\n isGift: dvSend.isPresent,\r\n name1: dvSend.form.sender,\r\n name2: dvSend.form.reciever,\r\n telNumber2: dvSend.form.phone,\r\n mailAddress2: dvSend.form.recieverEmail,\r\n freeText: dvSend.form.freeText,\r\n processId:payment.processId\r\n }\r\n dvDataService.createPaymentForVouchers(request).then(\r\n function (data) {\r\n var sentStorage = {\r\n name: dvSend.isPresent ? dvSend.form.reciever : '',\r\n codes: data && data.VouchersCode\r\n };\r\n\r\n dvDataService.userStorage(_data.keys.paymentStorageKey, null);\r\n //save state in session \r\n dvDataService.userStorage(_data.keys.sentStorageKey, sentStorage);\r\n\r\n $rootScope.$broadcast('voucherSkipValidation');\r\n $state.go(_data.routes.approval);\r\n },\r\n function (e) {\r\n //TODO \r\n });\r\n }\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module('digitalVouchers')\r\n .controller('dvApprovalCtrl', dvApprovalCtrl);\r\n\r\n dvApprovalCtrl.$inject = [\r\n '$scope',\r\n 'dvDataService', \r\n '$state',\r\n \r\n ];\r\n\r\n function dvApprovalCtrl($scope, dvDataService, $state) {\r\n\r\n var dvApproval = this;\r\n\r\n dvApproval.company = dvDataService.selectedCompany();\r\n dvApproval.voucher = dvDataService.selectedVoucher();\r\n dvDataService.resetSelectedVoucher();\r\n\r\n var _data = dvDataService.getData();\r\n dvApproval.title = _data.approvalTitle;\r\n\r\n dvApproval.sentStorage = dvDataService.userStorage(_data.keys.sentStorageKey);\r\n\r\n $scope.$on('$ionicView.beforeEnter', function (e, viewData) {\r\n viewData.enableBack = false;\r\n });\r\n }\r\n\r\n})(window, window.angular);\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('kycRefreshCustomerService', kycRefreshCustomerService);\r\n\r\n kycRefreshCustomerService.$inject = ['appData', 'connection', 'lobbyUiService', '$rootScope'];\r\n\r\n function kycRefreshCustomerService(appData, connection, lobbyUiService, $rootScope) {\r\n var _self;\r\n var init = function () {\r\n $rootScope.$on('accountLoggedIn', this.refreshCustomerDetails); \r\n }\r\n\r\n\r\n function refreshCustomerDetails(bankAccounts) {\r\n var isBankCard = false;\r\n for (var i = 0; i < bankAccounts.length; ++i) {\r\n if (bankAccounts[i].BankCode == \"12\" || bankAccounts[i].BankCode == \"10\") { // Poalim or Leumi\r\n isBankCard = true;\r\n break;\r\n }\r\n }\r\n var popupDialogBox = isBankCard ?\r\n 'כדי להמשיך לצפות במידע ולבצע פעולות, יש לוודא שהפרטים שלך שקיימים אצלנו הם העדכניים ביותר (הוראה 411 של בנק ישראל). כדי לצפות בפרטים ולעדכן אותם במידת הצורך, פשוט לוחצים על הכפתור. חשוב! פרטיך יעודכנו עבור כלל הכרטיסים ב-Cal, למעט כרטיסים בנקאיים של בנק פועלים ולאומי שהונפקו בשיתוף עם Cal.'\r\n :\r\n 'כדי להמשיך לצפות במידע ולבצע פעולות, יש לוודא שהפרטים שלך שקיימים אצלנו הם העדכניים ביותר (הוראה 411 של בנק ישראל). כדי לצפות בפרטים ולעדכן אותם במידת הצורך, פשוט לוחצים על הכפתור';\r\n\r\n connection.refreshCustomerDetails().then(successCallBack, errorCallBack);\r\n\r\n function successCallBack(response) {\r\n var status = response.Response.Status.SeverityCode.toLowerCase();\r\n if (status === \"s\") {\r\n if (typeof (Storage) !== \"undefined\") {\r\n var lastTimeShown = localStorage.getItem(\"KycLastTimeShown\");\r\n if (lastTimeShown != null) {\r\n if (lastTimeShown != \"route from sms\") {\r\n // format date for REST request:\r\n lastTimeShown = new Date(lastTimeShown).toLocaleString('he');\r\n lastTimeShown = lastTimeShown.replace(/\\./g, \"/\");\r\n lastTimeShown = lastTimeShown.replace(/,/g, \"\");\r\n connection.getDateToShowPopUp(lastTimeShown).then(dateSuccessFunc, dateErrorFunc);\r\n }\r\n else { // route from sms: update storage and don't show popup\r\n var dateToShowPopup = new Date(); //current date and time\r\n localStorage.setItem(\"KycLastTimeShown\", dateToShowPopup);\r\n return;\r\n }\r\n }\r\n else {\r\n var dateToShowPopup = new Date(); //current date and time\r\n localStorage.setItem(\"KycLastTimeShown\", dateToShowPopup);\r\n showKycPopUp(popupDialogBox);\r\n }\r\n }\r\n else { // no support for web storage, show popup\r\n showKycPopUp(popupDialogBox);\r\n }\r\n }\r\n\r\n function dateSuccessFunc (response) {\r\n var dateToShowPopup = response.DateToShowPopup;\r\n if (dateToShowPopup != null) // kyc is active\r\n {\r\n //the next condition means dateToShowPopup is in date format rather than the number of days in between displaying the popup\r\n if (dateToShowPopup.search(\"/\") > 0 || dateToShowPopup.search(\":\") > 0) {\r\n localStorage.setItem(\"KycLastTimeShown\", new Date()); //the date should be the current date\r\n showKycPopUp(popupDialogBox);\r\n }\r\n else {\r\n // do not show the popup\r\n console.log(\"kycRefreshCustomerService.dateSuccessFunc(): connection.getDateToShowPopUp() returned a non-date value (the date to show the popup didn't heppen yet)\");\r\n }\r\n }\r\n else {\r\n // do not show the popup\r\n console.log(\"kycRefreshCustomerService.dateSuccessFunc(): connection.getDateToShowPopUp() returned null (the flag IsKycActive is set to false)\");\r\n }\r\n }\r\n\r\n function dateErrorFunc (error) {\r\n console.log(\"connection.getDateToShowPopUp() faliled. error: \" + error);\r\n }\r\n }\r\n\r\n function errorCallBack(error) {\r\n console.log(\"kycRefreshCustomerService.refreshCustomerDetails(): connection.refreshCustomerDetails() failed: \" + error);\r\n }\r\n\r\n function showKycPopUp(dialogBox) {\r\n var popup = {};\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"מאוחר יותר\",\r\n type: 'button-negative',\r\n onTap: function () {\r\n return;\r\n }\r\n });\r\n popup.btns.push(\r\n {\r\n text: \"לצפייה בפרטים\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n connection.executeBpm051().then(bpm051SuccessFunc, bpm051ErrorFunc)\r\n }\r\n });\r\n\r\n var bpm051SuccessFunc = function (response) {\r\n var status = response.ReturnedSeverityCode.toLowerCase();\r\n if (status == \"s\") {\r\n lobbyUiService.openExternal(response.UrlFormes, \"\", true);\r\n //console.log(\"bpm051 returned s_001\");\r\n }\r\n else if (status == \"i\") {\r\n var dialogBoxText = \"לא נדרש רענון לקוח, הנך מועבר להמשך פעילות\";\r\n showNextPopup(dialogBoxText);\r\n //console.log(\"bpm051 returned i_001\");\r\n }\r\n else {\r\n var dialogBoxText = \"לא ניתן להשלים את הפעולה כרגע, אנא נסה שנית מאוחר יותר.\";\r\n showNextPopup(dialogBoxText);\r\n //console.log(\"bpm051 returned status different than s_001 or i_001\");\r\n }\r\n }\r\n\r\n var bpm051ErrorFunc = function (error) {\r\n var dialogBoxText = \"לא ניתן להשלים את הפעולה כרגע, אנא נסה שנית מאוחר יותר.\";\r\n showPopup(dialogBoxText);\r\n console.log(\"kycRefreshCustomerService.showKycPopUp(): connection.executeBpm051() failed. response: \" + error);\r\n }\r\n\r\n var head = '
היי ' + appData.CustomerInfo.FirstName + ',
';\r\n lobbyUiService.popup.alert(head + dialogBox, null, null, null, popup.btns, true, \"kyc-refresh-popup\");\r\n }\r\n\r\n function showNextPopup(dialogbox) {\r\n var popup = {};\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"אישור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n return;\r\n }\r\n });\r\n lobbyUiService.popup.alert(dialogbox, null, null, null, popup.btns, true, null);\r\n }\r\n }\r\n\r\n return {\r\n refreshCustomerDetails: refreshCustomerDetails,\r\n init: init\r\n }\r\n }\r\n\r\n\r\n}\r\n)(window, angular);\r\n\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .factory('customerIndication', customerIndication)\r\n\r\n customerIndication.$inject = ['connection', 'lobbyUiService', '$timeout', '$q', 'appData'];\r\n function customerIndication(connection, lobbyUiService, $timeout, $q, appData) {\r\n var startTime;\r\n function getIndicationForCustomer() {\r\n //lobbyUiService.popup.marketingMessage(\"app/popups/templates/loan-proposal.html\", \"loan-popup\", true, [{\r\n // text: \"להלוואה מהירה > \",\r\n // type: 'button-positive',\r\n // onTap: function () {\r\n // return;\r\n // }\r\n //}]);\r\n var req = {};\r\n var indicationLocalStorage = localStorage.getItem(\"indications\");\r\n if (indicationLocalStorage && indicationLocalStorage != null && indicationLocalStorage != undefined) {\r\n req.indications = JSON.parse(indicationLocalStorage);\r\n }\r\n startTime = new Date();\r\n connection.getIndicationForCustomer(req).then(getIndicationForCustomerOnSuccess, getIndicationForCustomerOnError);\r\n }\r\n\r\n\r\n\r\n function getIndicationForCustomerOnSuccess(res) {\r\n var currentTime = new Date();\r\n var delta = (currentTime - startTime) / 1000;\r\n if (delta > 5) {\r\n return;\r\n }\r\n\r\n if (res.Indications != null) {\r\n setLocalStorage(res.Indications);\r\n }\r\n var severityCode = res.Response.Status.SeverityCode.toLowerCase();\r\n if (severityCode != null && (severityCode == \"i\" || severityCode == \"s\")) {\r\n if (res.Details != null) {\r\n\r\n\r\n //TODO Finish credit.\r\n if (res.Details.IndicationId == 1) {\r\n //TODO Remove Timeout ofc\r\n\r\n addAdditionalParamsToCreditPopup(res.Details);\r\n\r\n popUpSwitchCase(res.Details);\r\n var interval = setInterval(function () {\r\n if ($('#credit-popup-languages').length > 0) {\r\n $('#credit-popup-button').after(' התאריך שבחרת כבר עבר. יש לבחור תאריך עתידי');\r\n $('#creditRedErrorDate').hide();\r\n formatLanguageInput(res.Details.Languages);\r\n formatTextDateInput();\r\n clearInterval(interval);\r\n }\r\n }, 250)\r\n\r\n //formatTextDateInput();\r\n }\r\n else {\r\n popUpSwitchCase(res.Details)\r\n }\r\n\r\n }\r\n }\r\n }\r\n function getIndicationForCustomerOnError(err) {\r\n }\r\n\r\n\r\n // First, checks if it isn't implemented yet.\r\n if (!String.format) {\r\n String.format = function (format) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n return format.replace(/{(\\d+)}/g, function (match, number) {\r\n return typeof args[number] != 'undefined'\r\n ? args[number]\r\n : match\r\n ;\r\n });\r\n };\r\n }\r\n\r\n function addAdditionalParamsToCreditPopup(creditRes) {\r\n creditRes.IndicationText = String.format(creditRes.IndicationText, dateText, languagePicker);\r\n }\r\n\r\n var now1 = moment().format('YYYY-MM-DD');\r\n var future3Years = moment().add(3, 'years').format('YYYY-MM-DD');\r\n var future30Years = moment().add(30, 'years').format('YYYY-MM-DD');\r\n var dateText = '(לשינוי תוקף ההסכמה)';\r\n var dateInput =\r\n `
\r\n \r\n
`\r\n\r\n var languagePicker = '';\r\n function formatLanguageInput(selectValues) {\r\n $.each(selectValues, function (key, value) {\r\n var val = value.LangName + \" - \" + value.LangTranslate;\r\n $('#credit-popup-languages')\r\n .append($(\"\")\r\n .attr(\"value\", value.LangId)\r\n .text(val));\r\n });\r\n }\r\n var dateEdited = false;\r\n function formatTextDateInput() {\r\n $('#credit-popup-button').bind('click', '[data-editable]', function () {\r\n dateEdited = true;\r\n var $el = $(this);\r\n var $input = $(dateInput);\r\n $el.replaceWith($input);\r\n var date_input = document.getElementById('creditPopupDateInputPicker');\r\n var elementForDefaultDate = document.querySelector(\"#creditPopupDateInputPicker\");\r\n var defaultdate = moment().add(3, 'years').format(\"YYYY-MM-DD\");\r\n elementForDefaultDate.setAttribute('value', defaultdate);\r\n elementForDefaultDate.setAttribute('data-date', moment(defaultdate).format(\"DD/MM/YYYY\"));\r\n $(\"#creditPopupDateInputPicker\").val(defaultdate);\r\n\r\n\r\n //option 1\r\n // if (is_safari_or_chrome_on_ios) {\r\n // date_input.addEventListener('blur', updateValue);\r\n // function updateValue(e) {\r\n\r\n // var dateForServer2 = new Date($(\"#creditPopupDateInputPicker\").val());\r\n // var now = new Date().setHours(0, 0, 0, 0);\r\n // dateForServer2 < now ? $('#creditRedErrorDate').show() : $('#creditRedErrorDate').hide();\r\n\r\n // }\r\n // }\r\n\r\n\r\n date_input.onchange = function () {\r\n var dateFromInput = this.value;\r\n $timeout(function () {\r\n var elementForFormat = document.querySelector(\"#creditPopupDateInputPicker\");\r\n var dateTMP = moment(dateFromInput).format(\"DD/MM/YYYY\");\r\n var dateForServer2 = new Date($(\"#creditPopupDateInputPicker\").val());\r\n var now = new Date().setHours(0, 0, 0, 0);\r\n if (dateFromInput == null || dateFromInput == \"\") {\r\n dateFromInput = moment().add(3, 'years').format(\"YYYY-MM-DD\");\r\n dateTMP = moment(dateFromInput).format(\"DD/MM/YYYY\");\r\n }\r\n\r\n else if (dateForServer2 < now) {\r\n dateFromInput = moment().format(\"YYYY-MM-DD\");\r\n dateTMP = moment(dateFromInput).format(\"DD/MM/YYYY\");\r\n }\r\n $timeout(function () {\r\n elementForFormat.setAttribute('value', dateFromInput);\r\n elementForFormat.setAttribute('data-date', dateTMP);\r\n $(\"#creditPopupDateInputPicker\").val(dateFromInput);\r\n })\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n });\r\n }\r\n\r\n\r\n //get decision for template by indication Id\r\n function popUpSwitchCase(obj) {\r\n var popupButtons = initButtons(obj);\r\n switch (obj.IndicationId) {\r\n //Credit\r\n case 1:\r\n showPopUp(\"
\" + obj.IndicationText + \"
\", popupButtons, 'הסכמה לקבלת נתונים ממאגר אשראי', 'customer-ind-credit',\r\n `
לפי תקנה 5 לתקנות נתוני אשראי, התשע\"ח, 2017
`);\r\n break;\r\n //Banking\r\n case 2:\r\n showPopUp(obj.IndicationText, popupButtons, 'הסכמה לשימוש בנתונים בנקאיים', 'customer-ind-banking', null);\r\n break;\r\n //KYC\r\n case 3:\r\n showPopUp(obj.IndicationText, popupButtons, null, 'customer-ind-kyc', null); //no header here..\r\n break;\r\n //DEBT\r\n case 4:\r\n showPopUp(obj.IndicationText, popupButtons, null, 'cusotmer-ind-debt', null);//no header here..\r\n break;\r\n //Loan Proposal\r\n //case 5:\r\n // ga(\"set\", \"page\", \"/vp/loan-interstitial/\");\r\n // ga(\"send\", \"pageview\");\r\n // console.log(\"will show marketings\", obj);\r\n // lobbyUiService.popup.marketingMessage(\"app/popups/templates/loan-proposal.html\", \"loan-popup\", true, popupButtons);\r\n // break;\r\n }\r\n }\r\n function setLocalStorage(data) {\r\n localStorage.setItem(\"indications\", JSON.stringify(data));\r\n }\r\n function showPopUp(templateText, buttons, title, cssClass, subHeader) {\r\n lobbyUiService.popup.indicationMessage(templateText, subHeader, title, cssClass, null, null, buttons, false);\r\n }\r\n\r\n\r\n\r\n //updateBankingInfoConsent\r\n function updateBankingInfoConsent() {\r\n connection.updateBankingInfoConsent().then(updateBankingInfoConsentOnSuccess, updateBankingInfoConsentOnError);\r\n }\r\n function updateBankingInfoConsentOnSuccess(res) {\r\n }\r\n function updateBankingInfoConsentOnError(err) {\r\n }\r\n\r\n var debtLeadOpened = false;\r\n //openDebtLead\r\n function openDebtLead() {\r\n if (!debtLeadOpened) {\r\n debtLeadOpened = true;\r\n connection.openDebtLead().then(openDebtLeadOnSuccess, openDebtLeadOnError);\r\n }\r\n }\r\n function openDebtLeadOnSuccess(res) {\r\n lobbyUiService.popup.message('app/main/templates/debtLeadSuccess.html', null, null, 'debt-lead-success');\r\n debtLeadOpened = false;\r\n }\r\n function openDebtLeadOnError(err) {\r\n lobbyUiService.popup.message('app/main/templates/debtLeadFail.html', null, null, 'debt-lead-fail');\r\n }\r\n\r\n var is_safari_or_chrome_on_ios = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n var creditInfoConsentSent = false;\r\n //UpdateCreditInfoConsent\r\n function updateCreditInfoConsent() {\r\n\r\n if (!creditInfoConsentSent) {\r\n creditInfoConsentSent = true;\r\n var dateForServer;\r\n if (dateEdited) {\r\n dateForServer = new Date($(\"#creditPopupDateInputPicker\").val());\r\n }\r\n else {\r\n dateForServer = moment(\"31-12-2999\", \"DD-MM-YYYY\")\r\n }\r\n var languageId = $(\"#credit-popup-languages\").val();\r\n var req = {\r\n agrLanguage: languageId,\r\n agrLastDate: dateForServer,\r\n agrTypeCode: 20\r\n }\r\n connection.updateCreditInfoConsent(req).then(updateCreditInfoConsentOnSuccess, updateCreditInfoConsentOnError);\r\n }\r\n }\r\n function updateCreditInfoConsentOnSuccess(res) {\r\n creditInfoConsentSent = true;\r\n }\r\n function updateCreditInfoConsentOnError(err) {\r\n }\r\n\r\n\r\n //setDataForDebtPaymentPage\r\n function setDataForDebtPaymentPage() {\r\n connection.setDataForDebtPaymentPage().then(setDataForDebtPaymentPageOnSuccess, setDataForDebtPaymentPageOnError);\r\n }\r\n function setDataForDebtPaymentPageOnSuccess(res) {\r\n window.location.href = res.FullLink;\r\n }\r\n function setDataForDebtPaymentPageOnError(err) {\r\n }\r\n\r\n\r\n //refreshCustomer\r\n function refreshCustomer() {\r\n connection.executeBpm051().then(refreshCustomerOnSuccess, refreshCustomerOnError);\r\n }\r\n\r\n function refreshCustomerOnSuccess(res) {\r\n var status = res.ReturnedSeverityCode.toLowerCase();\r\n if (status == \"s\") {\r\n lobbyUiService.openExternal(res.UrlFormes, \"\", false);\r\n }\r\n else if (status == \"i\") {\r\n var dialogBoxText = \"לא נדרש רענון לקוח, הנך מועבר להמשך פעילות\";\r\n showNextPopup(dialogBoxText);\r\n }\r\n else {\r\n var dialogBoxText = \"לא ניתן להשלים את הפעולה כרגע, אנא נסה שנית מאוחר יותר.\";\r\n showNextPopup(dialogBoxText);\r\n }\r\n }\r\n\r\n function refreshCustomerOnError(err) {\r\n\r\n }\r\n\r\n function showNextPopup(dialogbox) {\r\n var popup = {};\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"אישור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n return;\r\n }\r\n });\r\n lobbyUiService.popup.alert(dialogbox, null, null, null, popup.btns, true, null);\r\n }\r\n\r\n\r\n function initButtons(obj) {\r\n var popupButtons = [];\r\n switch (obj.IndicationId) {\r\n case 1:\r\n popupButtons.push(\r\n {\r\n text: \"אני מאשר/ת\",\r\n type: 'button-positive',\r\n onTap: function (e) {\r\n\r\n if ($('#creditRedErrorDate').is(':visible')) {\r\n console.log(\"WILL RETURN\");\r\n const zz = document.querySelector(\"#creditRedErrorDate\");\r\n zz.classList.add(\"apply-shake\");\r\n zz.addEventListener(\"animationend\", (e) => {\r\n zz.classList.remove(\"apply-shake\");\r\n });\r\n e.preventDefault();\r\n return;\r\n }\r\n else {\r\n updateCreditInfoConsent();\r\n }\r\n }\r\n });\r\n popupButtons.push(\r\n {\r\n text: \"בפעם אחרת\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n return;\r\n }\r\n });\r\n break;\r\n case 2:\r\n popupButtons.push(\r\n {\r\n text: \"אני מאשר/ת\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n updateBankingInfoConsent()\r\n }\r\n });\r\n popupButtons.push(\r\n {\r\n text: \"בפעם אחרת\",\r\n type: 'button-negative',\r\n onTap: function () {\r\n return;\r\n }\r\n });\r\n break;\r\n case 3:\r\n popupButtons.push(\r\n {\r\n text: \"בפעם אחרת\",\r\n type: 'button-negative',\r\n onTap: function () {\r\n return;\r\n }\r\n });\r\n popupButtons.push(\r\n {\r\n text: \"לעדכון הפרטים\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n refreshCustomer();\r\n }\r\n });\r\n break;\r\n case 4:\r\n if (obj.PopupType == 1) {\r\n popupButtons.push(\r\n {\r\n text: \"לתשלום החוב באתר\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n setDataForDebtPaymentPage()\r\n return;\r\n }\r\n });\r\n }\r\n popupButtons.push(\r\n {\r\n text: \"מעדיף שתחזרו אליי\",\r\n type: 'button-negative',\r\n onTap: function () {\r\n openDebtLead()\r\n return;\r\n }\r\n });\r\n break;\r\n case 5:\r\n popupButtons.push(\r\n {\r\n text: \"להלוואה מהירה\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n goToLoanPageSSO(obj.IndicationText);\r\n }\r\n });\r\n popupButtons.push(\r\n {\r\n text: '',\r\n type: 'button-x',\r\n onTap: function () {\r\n return;\r\n }\r\n });\r\n }\r\n return popupButtons;\r\n }\r\n\r\n function goToLoanPageSSO(urlForEcreditLoanPopup) {\r\n console.log(\"custtype\", appData.CustomerInfo.CustTypeInd);\r\n var label;\r\n switch (appData.CustomerInfo.CustTypeInd) {\r\n case 1: label = 'A'; break;\r\n case 2: label = 'B'; break;\r\n case 3: label = 'D'; break;\r\n default: label = 'Err';\r\n }\r\n console.log(\"label\", label);\r\n ga('send', 'event', { eventCategory: \"מעברון הלוואות\", eventAction: 'להלוואה מהירה', eventLabel: label })\r\n window.open(urlForEcreditLoanPopup, \"_blank\").focus();\r\n }\r\n\r\n function creditCustomerIndication(scope, approveConsentcallBack, agreementId) {\r\n angular.extend(scope, {\r\n languageSelected: '1',\r\n showDeclineMsg: false,\r\n disabledApproveButton: false,\r\n datePicker: {\r\n now: moment().format('YYYY-MM-DD'),\r\n future3Years: moment().add(3, 'years').toDate(),\r\n future30Years: moment().add(30, 'years').format('YYYY-MM-DD'),\r\n changeDate: function () {\r\n console.log(\"changeDate HERE\");\r\n\r\n $timeout(function () {\r\n console.log(\"this.value\");\r\n console.log(\"this\", this);\r\n var dateFromInput = moment(new Date($(\"#creditPopupDateInputPicker\").val())).format(\"YYYY-MM-DD\");\r\n var elementForFormat = document.querySelector(\"#creditPopupDateInputPicker\");\r\n var dateTMP = moment(dateFromInput).format(\"DD/MM/YYYY\");\r\n var dateForServer2 = new Date($(\"#creditPopupDateInputPicker\").val());\r\n var now = new Date().setHours(0, 0, 0, 0);\r\n if (dateFromInput == null || dateFromInput == \"\") {\r\n dateFromInput = moment().add(3, 'years').format(\"YYYY-MM-DD\");\r\n dateTMP = moment(dateFromInput).format(\"DD/MM/YYYY\");\r\n }\r\n\r\n else if (dateForServer2 < now) {\r\n dateFromInput = moment().format(\"YYYY-MM-DD\");\r\n dateTMP = moment(dateFromInput).format(\"DD/MM/YYYY\");\r\n }\r\n $timeout(function () {\r\n elementForFormat.setAttribute('value', dateFromInput);\r\n elementForFormat.setAttribute('data-date', dateTMP);\r\n $(\"#creditPopupDateInputPicker\").val(dateFromInput);\r\n })\r\n });\r\n console.log(scope.datePicker.future3Years);\r\n },\r\n showDatePicker: false,\r\n\r\n toggleDatePicker: function () {\r\n scope.datePicker.showDatePicker = !scope.datePicker.showDatePicker;\r\n //this if i want to show normal date.\r\n $timeout(function () {\r\n var elementForDefaultDate = document.querySelector(\"#creditPopupDateInputPicker\");\r\n elementForDefaultDate.setAttribute('data-date', moment(scope.datePicker.future3Years).format(\"DD/MM/YYYY\"));\r\n });\r\n ga('send', 'event', { eventCategory: \"איסוף הסכמות למאגר אשראי בתהליך \" + scope.typeInd, eventAction: 'שינוי תוקף ההסכמה', eventLabel: '' })\r\n }\r\n },\r\n toggleDecline: function (isBackToApprove) {\r\n scope.showDeclineMsg = !scope.showDeclineMsg;\r\n if (isBackToApprove) {\r\n ga('send', 'event', { eventCategory: \"איסוף הסכמות למאגר אשראי בתהליך \" + scope.typeInd, eventAction: 'חזרה למסך אישור', eventLabel: '' })\r\n }\r\n else { //to cancel.\r\n ga('send', 'event', { eventCategory: \"איסוף הסכמות למאגר אשראי בתהליך \" + scope.typeInd, eventAction: 'לא מסכים/ה', eventLabel: '' })\r\n ga('send', 'event', { eventCategory: \"איסוף הסכמות למאגר אשראי בתהליך \" + scope.typeInd, eventAction: 'הופעת חלונית חסימה ללא הסכמה', eventLabel: '', nonInteraction: true })\r\n }\r\n\r\n\r\n },\r\n exitButton: {\r\n text: 'יציאה',\r\n type: 'button-positive',\r\n onTap: function ($event) {\r\n if ($event == \"closeManual\") {\r\n ga('send', 'event', { eventCategory: \"איסוף הסכמות למאגר אשראי בתהליך \" + scope.typeInd, eventAction: 'יציאה אחרי הודעת חסימה', eventLabel: '' })\r\n }\r\n return;\r\n }\r\n },\r\n approveCreditConsent: function (closePopup, closePopupVar1, closePopupVar2, lang, languages) {\r\n //if (!disabledApproveButton) {\r\n // disabledApproveButton = true;\r\n\r\n var dateForServer;\r\n if (scope.datePicker.showDatePicker) {\r\n console.log(\"datePickerShown\");\r\n dateForServer = new Date($(\"#creditPopupDateInputPicker\").val());\r\n console.log(\"dateForSErver\", dateForServer);\r\n dateForServer.setHours(0, 0, 0, 0)\r\n }\r\n else {\r\n console.log(\"datePickerNOTNOTShown\");\r\n dateForServer = null\r\n }\r\n\r\n\r\n var req = {\r\n agreementId: agreementId,\r\n cardUniqueId: scope.selectedCardForApprove,\r\n agrLastDate: dateForServer,\r\n languageId: lang,\r\n processType: 1,\r\n agrTypeCode: 20\r\n };\r\n connection.updateCreditInfoConsentAndCheckBDI(req).then(function (response) {\r\n console.log(\"response\", response);\r\n console.log(\"SUCCEEDED\");\r\n approveConsentcallBack.call();\r\n }, function (error) {\r\n console.log(\"error\", error);\r\n console.log(\"FAILEd\");\r\n var dialogBoxText = \"לא ניתן להשלים את הפעולה כרגע, אנא נסה שנית מאוחר יותר.\";\r\n showNextPopup(dialogBoxText);\r\n //errorService.handleError(error, $scope.goToStage4);\r\n }).finally(function () {\r\n //$scope.appData.inProcess = false;\r\n closePopup(closePopupVar1, closePopupVar2);\r\n ga('send', 'event', { eventCategory: \"איסוף הסכמות למאגר אשראי בתהליך \" + scope.typeInd, eventAction: 'מסכים/ה', eventLabel: 'שפה:' + languages[lang - 1].LanguageName })\r\n });\r\n\r\n // }\r\n }\r\n });\r\n var popup = {};\r\n popup.template = 'app/account/templates/popups/creditCustomerIndicatonsPopup.html';\r\n popup.btns = [];\r\n lobbyUiService.popup.messageWithScope(popup.template, null, null, null, null, null, popup.btns, false, scope);\r\n }\r\n\r\n function updateCreditInfoConsentAndCheckBDIOnSuccess(response, approveConsentcallBack) {\r\n\r\n }\r\n\r\n function updateCreditInfoConsentAndCheckBDIOnError() {\r\n\r\n }\r\n\r\n\r\n return {\r\n getIndicationForCustomer: getIndicationForCustomer,\r\n setDataForDebtPaymentPage: setDataForDebtPaymentPage,\r\n updateBankingInfoConsent: updateBankingInfoConsent,\r\n refreshCustomer: refreshCustomer,\r\n updateCreditInfoConsent: updateCreditInfoConsent,\r\n openDebtLead: openDebtLead,\r\n goToLoanPageSSO: goToLoanPageSSO,\r\n creditCustomerIndication: creditCustomerIndication\r\n }\r\n }\r\n})(window, window.angular);\r\n\n(function(n){\"use strict\";var t;/.cal-online.co.il|localhost/.test(n.location.host)||(t=document.createElement(\"script\"),t.src=\"https://restservices.cal-online.co.il/cal4u/api/calconnect/af\",document.body.appendChild(t))})(window);\r\n/*\r\n\r\n*/\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .directive(\"dwFairCredit\", dwFairCredit);\r\n\r\n dwFairCredit.$inject = ['lobbyUiService', 'appSettings', '$sce', 'appData', 'lobbyDataService', '$rootScope'];\r\n\r\n function dwFairCredit(lobbyUiService, appSettings, $sce, appData, lobbyDataService, $rootScope) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n scope: {\r\n index: '@',\r\n creditProduct: '@',\r\n cardDigits: '@',\r\n callbackFn: '&'\r\n\r\n },\r\n controller: function ($scope, appSettings, $sce, appData) {\r\n $scope.appData = appData,\r\n $scope.getCustEmail = function () {\r\n if ($scope.appData && $scope.appData.CustomerInfo && $scope.appData.CustomerInfo.Email) {\r\n return $scope.appData.CustomerInfo.Email;\r\n }\r\n else {\r\n return \"\";\r\n }\r\n },\r\n $scope.getCustPhone = function () {\r\n\r\n if ($scope.appData && $scope.appData.CustomerInfo && $scope.appData.CustomerInfo.Phone) {\r\n var custPhone = $scope.appData.CustomerInfo.Phone;\r\n if (custPhone.length === 10 && custPhone.startsWith('05')) {\r\n return $scope.appData.CustomerInfo.Phone;\r\n }\r\n else {\r\n return \"\";\r\n }\r\n\r\n }\r\n else {\r\n return \"\";\r\n }\r\n },\r\n $scope.getIndex = function () {\r\n if ($scope.index) {\r\n return $scope.index;\r\n }\r\n else {\r\n return \"\";\r\n }\r\n },\r\n $scope.getAuth = function () {\r\n\r\n if ($scope.appData.token) {\r\n return encodeURIComponent($scope.appData.token);\r\n }\r\n else if (sessionStorage.getItem(\"authToken\")) {\r\n return encodeURIComponent(JSON.parse(sessionStorage.getItem(\"authToken\")));\r\n }\r\n else if ($scope.appData.index) {\r\n return $scope.appData.index;\r\n }\r\n else {\r\n return \"\";\r\n }\r\n },\r\n $scope.getLast4Digits = function () {\r\n if ($scope.cardDigits) {\r\n return $scope.cardDigits;\r\n }\r\n return \"\";\r\n },\r\n $scope.getRequestedCreditProduct = function () {\r\n if ($scope.creditProduct) {\r\n return $scope.creditProduct;\r\n }\r\n return \"\";\r\n },\r\n\r\n $scope.receiveMessage = function (event) {\r\n\r\n if (event && event.data) {\r\n var msg = event.data;\r\n if (msg.fairCredit) {\r\n $scope.callbackFn();\r\n //To Do continue to next stage. Fair credit finished operation.\r\n window.removeEventListener(\"message\", $scope.receiveMessage, false);\r\n }\r\n }\r\n };\r\n \r\n $scope.fairCreditUrl = appSettings.fairCreditUrl +\"?index=\" + $scope.getIndex() + \"&custPhoneNum=\" + $scope.getCustPhone() + \"&custEmail=\" + $scope.getCustEmail() + \"&requestedCreditProduct=\" + $scope.getRequestedCreditProduct() + \"&cardLast4Digits=\" + $scope.getLast4Digits() + \"&authenticToken=\" + $scope.getAuth();\r\n \r\n window.addEventListener(\"message\", $scope.receiveMessage, false);\r\n\r\n\r\n\r\n },\r\n template: '',\r\n link: function ($scope, element) {\r\n\r\n }\r\n\r\n }\r\n }\r\n})(window, window.angular);\r\n\r\n\r\n\r\n\r\n\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('digitalWallet')\r\n .controller('updateMailCtrl', updateMailCtrl);\r\n\r\n updateMailCtrl.$inject = [\r\n 'connection', 'lobbyUiService', '$scope', '$location', '$ionicScrollDelegate', '$state', 'errorService', 'appData','dataService'\r\n ];\r\n\r\n function updateMailCtrl(connection, lobbyUiService, $scope, $location, $ionicScrollDelegate, $state, errorService, appData, dataService) {\r\n\r\n var vm = this;\r\n vm.title = \"עדכון כתובת מייל\";\r\n vm.userName = \"\";\r\n vm.custTypeInd = -1;\r\n vm.bankComment = {\r\n 2: \"כדי לעדכן את כתובת המייל שלך בכרטיסים הבנקאיים של בנק הפועלים יש לפנות לסניף הבנק שלך\",\r\n 3:\"כתובת המייל לכרטיסי בנק הפועלים לא תעודכן\"\r\n }\r\n vm.bankCommentLbl = \"\";\r\n $scope.$on('$ionicView.loaded', function () {\r\n \r\n });\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.updateMail' });\r\n return;\r\n }\r\n vm.getLoginType = function () {\r\n connection.getConnectAuth().then(function (res) {\r\n \r\n if (res.loginType && res.loginType === 1) {\r\n vm.getName();\r\n return;\r\n }\r\n vm.showLoginPopup();\r\n\r\n },\r\n function (err) {\r\n \r\n vm.showLoginPopup();\r\n }\r\n )\r\n }\r\n\r\n vm.getLoginType();\r\n\r\n\r\n vm.getName = function () {\r\n if (appData && appData.CustomerInfo && appData.CustomerInfo.FirstName && appData.CustomerInfo.FirstName.length > 0) {\r\n var firstName = appData.CustomerInfo.FirstName.trim();\r\n var lastName = (appData.CustomerInfo.LastName) ? appData.CustomerInfo.LastName.trim() : \"\";\r\n if (firstName && firstName !== \"\" && firstName.length > 0) {\r\n vm.userName = (firstName + \" \" + lastName).trim(' ');\r\n }\r\n }\r\n else {\r\n\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.updateMail' });\r\n }\r\n\r\n }\r\n\r\n vm.getEmail = function () {\r\n if (appData) {\r\n if (appData.CustomerInfo && appData.CustomerInfo.Email) {\r\n return appData.CustomerInfo.Email\r\n }\r\n else {\r\n return \"\";\r\n }\r\n }\r\n }\r\n vm.emailRegex = /^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$/;\r\n vm.saveEmail = function () {\r\n console.log(\"Email Saved\");\r\n var req = {};\r\n req.CustEmail = vm.email;\r\n req.IccSourceMessage = \"25\";\r\n lobbyUiService.loader.show();\r\n connection.updateCustomerInformation(req).then(function (response) {\r\n var res = response.Response.Status.SeverityCode.toLowerCase();\r\n var severity = response.Response.Status.SeverityNumber;\r\n if (res === \"s\" && severity === \"001\") {\r\n vm.showSuccessPopup();\r\n if (appData.CustomerInfo && appData.CustomerInfo.Email) {\r\n appData.CustomerInfo.Email = vm.email;\r\n sessionStorage.setItem('appData', JSON.stringify(appData));\r\n }\r\n \r\n\r\n }\r\n else if (res === \"s\" && severity === \"002\")\r\n {\r\n vm.showUnsuccessPopup();\r\n }\r\n else {\r\n console.log(res);\r\n errorService.handleError(response, null, \"payment-spread-popup\");\r\n\r\n }\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n console.log(error);\r\n errorService.handleError(error, null, \"payment-spread-popup\");\r\n lobbyUiService.loader.hide();\r\n });\r\n\r\n\r\n }\r\n\r\n vm.showSuccessPopup = function (text) {\r\n\r\n var popup = {\r\n };\r\n \r\n popup.title = \"\";\r\n \r\n if (vm.custTypeInd === 3) {\r\n popup.text = \"המייל עודכן בהצלחה עבור כרטיסים שהונפקו לך על ידי Cal. כדי לעדכן את המייל לכרטיסים שהונפקו לך ע\\\"י בנק פועלים, יש לפנות אל הבנקאי שלך.\"\r\n }\r\n else {\r\n popup.text = \"עדכנת את כתובת המייל בהצלחה!\";\r\n } \r\n \r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n lobbyUiService.go('dw.lobby');\r\n }\r\n }\r\n );\r\n lobbyUiService.popup.messageText(null, popup.text, popup.title, null, null, null, popup.btns, false);\r\n };\r\n\r\n vm.showLoginPopup = function (text) {\r\n\r\n var popup = {\r\n };\r\n popup.title = \"התחברות למערכת\";\r\n popup.text = \"על מנת שנוכל להציג לך את הפרטים, יש לבצע התחברות למערכת בעזרת תעודת זהות ו-4 ספרות אחרונות של הכרטיס בלבד.\";\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"להתחברות מחדש\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n connection.setToken(null);\r\n dataService.sessionManager.clear('authToken');\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.updateMail' });\r\n }\r\n },\r\n {\r\n text: \"לא תודה\",\r\n type: 'button-negative',\r\n onTap: function () {\r\n lobbyUiService.go('dw.lobby');\r\n }\r\n }\r\n\r\n );\r\n lobbyUiService.popup.messageText(null, popup.text, popup.title, null, null, null, popup.btns, false);\r\n };\r\n\r\n vm.customerIssuerTypeDisplay = function () {\r\n if (appData.CustomerInfo.CustTypeInd && appData.CustomerInfo.CustTypeInd == 2) {\r\n vm.custTypeInd = 2;\r\n vm.bankCommentLbl = vm.bankComment[\"2\"];\r\n \r\n }\r\n else if (appData.CustomerInfo.CustTypeInd && appData.CustomerInfo.CustTypeInd == 3) {\r\n vm.custTypeInd = 3;\r\n vm.bankCommentLbl = vm.bankComment[\"3\"];\r\n }\r\n }\r\n vm.showUnsuccessPopup = function (text) {\r\n\r\n var popup = {\r\n };\r\n\r\n popup.title = \"כתובת מייל לא עודכנה\";\r\n\r\n popup.text = \"לא הצלחנו לעדכן את כתובת המייל שלך במערכות, אפשר לפנות אלינו בצ'אט עם נציג ונשמח לעזור\";\r\n\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"סגור\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n lobbyUiService.go('dw.lobby');\r\n }\r\n }\r\n );\r\n lobbyUiService.popup.messageText(null, popup.text, popup.title, null, null, null, popup.btns, false);\r\n };\r\n\r\n //props\r\n vm.email = vm.getEmail();\r\n vm.customerIssuerTypeDisplay();\r\n\r\n }\r\n\r\n\r\n})();\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('digitalWallet')\r\n .controller('internetIdCtrl', internetIdCtrl);\r\n\r\n internetIdCtrl.$inject = [\r\n 'connection', 'lobbyUiService', '$scope', '$location', '$ionicScrollDelegate', '$state', 'errorService', 'appData', 'dataService','toastr'\r\n ];\r\n\r\n function internetIdCtrl(connection, lobbyUiService, $scope, $location, $ionicScrollDelegate, $state, errorService, appData, dataService,toastr) {\r\n\r\n var vm = this;\r\n vm.uniqueId;\r\n vm.cards = [];\r\n vm.title = \"קבלת מזהה אינטרנט\";\r\n vm.hideNavBar;\r\n vm.userName = \"\";\r\n vm.prodIntrID = \"\";\r\n vm.currentLastFourDigitsCard = \"\";\r\n $scope.appData.isLoggedIn = connection.isLoggedIn();\r\n if (!$scope.appData.isLoggedIn) {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.internetId' });\r\n return;\r\n }\r\n \r\n \r\n $scope.$on('$ionicView.beforeEnter', function () {\r\n vm.hideNavBar = lobbyUiService.hideNavBar();\r\n });\r\n\r\n $scope.$on('$ionicView.loaded', function () {\r\n vm.getCards();\r\n vm.getName();\r\n console.log('internetId');\r\n });\r\n\r\n\r\n\r\n\r\n vm.getName = function () {\r\n if (appData && appData.CustomerInfo && appData.CustomerInfo.FirstName && appData.CustomerInfo.FirstName.length > 0) {\r\n var firstName = appData.CustomerInfo.FirstName.trim();\r\n var lastName = (appData.CustomerInfo.LastName) ? appData.CustomerInfo.LastName.trim() : \"\";\r\n if (firstName && firstName !== \"\" && firstName.length > 0) {\r\n vm.userName = (firstName + \" \" + lastName).trim(' ');\r\n }\r\n }\r\n else {\r\n\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.internetId' });\r\n }\r\n\r\n }\r\n\r\n vm.getCards = function () {\r\n if (appData && appData.BankAccounts) {\r\n var bankAccountsArray = appData.BankAccounts;\r\n if (bankAccountsArray != undefined) {\r\n for (var i = 0; i < bankAccountsArray.length; i++) {\r\n vm.cards = vm.cards.concat(bankAccountsArray[i].Cards);\r\n }\r\n\r\n }\r\n }\r\n else {\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.internetId' });\r\n }\r\n }\r\n\r\n vm.copyToClipboard = function (str) {\r\n var el = document.createElement('textarea');\r\n el.value = str;\r\n el.setAttribute('readonly', '');\r\n el.style.position = 'absolute';\r\n el.style.left = '-9999px';\r\n document.body.appendChild(el);\r\n el.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(el);\r\n \r\n toastr.success('מזהה אינטרנט הועתק בהצלחה'); \r\n \r\n\r\n }\r\n\r\n vm.getInternetCode = function (last4Digits) {\r\n \r\n var req = {}; \r\n req.IdNumType = appData.CustomerInfo.IdNumType;\r\n req.Last4Digits = last4Digits,\r\n req.UserID = appData.CustomerInfo.Id;\r\n lobbyUiService.loader.show();\r\n connection.getInternetCode(req).then(function (response) {\r\n var res = response.Response.Status.SeverityCode.toLowerCase();\r\n if (res === \"s\") {\r\n vm.prodIntrID = response.ProdIntrID;\r\n vm.currentLastFourDigitsCard = req.Last4Digits;\r\n \r\n\r\n }\r\n else {\r\n \r\n errorService.handleError(response, null, \"payment-spread-popup\");\r\n\r\n }\r\n lobbyUiService.loader.hide();\r\n }, function (error) {\r\n \r\n errorService.handleError(error, null, \"payment-spread-popup\");\r\n lobbyUiService.loader.hide();\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n vm.showLoginPopup = function (text) {\r\n\r\n var popup = {\r\n };\r\n popup.title = \"התחברות למערכת\";\r\n popup.text = \"על מנת שנוכל להציג לך את הפרטים, יש לבצע התחברות למערכת בעזרת תעודת זהות ו-4 ספרות אחרונות של הכרטיס בלבד.\";\r\n popup.btns = [];\r\n popup.btns.push(\r\n {\r\n text: \"להתחברות מחדש\",\r\n type: 'button-positive',\r\n onTap: function () {\r\n connection.setToken(null);\r\n dataService.sessionManager.clear('authToken');\r\n lobbyUiService.go('dw.login', { nextPage: 'dw.internetId' });\r\n }\r\n },\r\n {\r\n text: \"לא תודה\",\r\n type: 'button-negative',\r\n onTap: function () {\r\n lobbyUiService.go('dw.lobby');\r\n }\r\n }\r\n\r\n );\r\n lobbyUiService.popup.messageText(null, popup.text, popup.title, null, null, null, popup.btns, false);\r\n }\r\n\r\n\r\n\r\n vm.operation = function () {\r\n console.log('vm.operation');\r\n }\r\n\r\n\r\n\r\n vm.getCard4DigitsByUniqueId = function (uniqueId)\r\n {\r\n vm.cards.forEach(function (item) {\r\n if (item.Id && (item.Id === uniqueId)) {\r\n vm.getInternetCode(item.LastFourDigits);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n vm.change = function (uniqueId) {\r\n vm.prodIntrID = \"\";\r\n vm.uniqueId = uniqueId;\r\n vm.getCard4DigitsByUniqueId(uniqueId);\r\n \r\n }\r\n\r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n\r\n})();\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('digitalWallet')\r\n .directive('dwCookieBanner', dwCookieBanner);\r\n\r\n dwCookieBanner.$inject = ['$window'];\r\n\r\n function dwCookieBanner($window) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive = {\r\n link: link,\r\n restrict: 'E',\r\n replace:true,\r\n template: ``,\r\n scope: {\r\n isShow : \"@\"\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n scope.isShow = false;\r\n $window.document.addEventListener('dialogClosed', function () {\r\n ga('send', 'event', { eventCategory: 'פופאפ קוקיס', eventAction: 'לחצן סגור', eventLabel: '' });\r\n console.log(`dialogClosed event`);\r\n scope.isShow = !scope.isShow;\r\n console.log(`dialogClosed : scope.isShow ${scope.isShow}`);\r\n console.log('[index]: dialog closed!');\r\n });\r\n\r\n $window.document.addEventListener('dialogOpened', function (e) {\r\n setTimeout(function () {\r\n ga('send', 'event', { eventCategory: 'פופאפ קוקיס', eventAction: 'הופעת פופאפ', eventLabel: '' });\r\n console.log('[index]: dialog opened!');\r\n }, 3000);\r\n });\r\n\r\n $window.document.addEventListener('dialogHeight', function (e) {\r\n try {\r\n scope.isShow = e.detail && parseInt(e.detail) > 0 ? !scope.isShow : false;\r\n console.log(`dialogHeight : scope.isShow ${scope.isShow}`);\r\n const iframe = angular.element('#using-cookies');\r\n iframe.style.height = e.detail + 'px';\r\n console.log(`[index]: wc height: ${e.detail}`);\r\n } catch (e) {\r\n\r\n }\r\n \r\n \r\n });\r\n\r\n $window.document.addEventListener('privatePolicy', function () {\r\n ga('send', 'event', { eventCategory: 'פופאפ קוקיס', eventAction: 'מדיניות הפרטיות', eventLabel: '' });\r\n console.log('[index]: private policy opened!');\r\n });\r\n }\r\n }\r\n\r\n})();\n(function (window, angular) {\r\n 'use strict';\r\n angular.module(\"digitalWallet\")\r\n .provider('toastrGlobal', toastrGlobalProvider);\r\n\r\n toastrGlobalProvider.$inject = ['toastrConfig'];\r\n\r\n function toastrGlobalProvider(toastrConfig) {\r\n this.init = function () {\r\n angular.extend(toastrConfig, {\r\n allowHtml: false,\r\n autoDismiss: false,\r\n closeButton: false,\r\n closeHtml: '',\r\n containerId: 'toast-container',\r\n extendedTimeOut: 1000,\r\n iconClasses: {\r\n error: 'toast-error',\r\n info: 'toast-info',\r\n success: 'toast-success',\r\n warning: 'toast-warning'\r\n },\r\n maxOpened: 0,\r\n messageClass: 'toast-message',\r\n newestOnTop: true,\r\n onHidden: null,\r\n onShown: null,\r\n onTap: null,\r\n positionClass: 'toast-bottom-full-width',\r\n preventDuplicates: false,\r\n preventOpenDuplicates: false,\r\n progressBar: false,\r\n tapToDismiss: true,\r\n target: 'body',\r\n templates: {\r\n toast: 'directives/toast/toast.html',\r\n progressbar: 'directives/progressbar/progressbar.html'\r\n },\r\n timeOut: 5000,\r\n titleClass: 'toast-title',\r\n toastClass: 'toast'\r\n });\r\n }\r\n\r\n this.$get = function () {\r\n return {\r\n init: this.init\r\n }\r\n };\r\n }\r\n})(window, window.angular);\n(function (window, angular) {\r\n \"use strict\";\r\n angular.module(\"blockCard\").controller(\"contactlessCtrl\", contactlessCtrl);\r\n\r\n contactlessCtrl.$inject = [\r\n \"lobbyUiService\",\r\n \"blockCardService\",\r\n \"$timeout\",\r\n \"appData\",\r\n \"lobbyCommService\",\r\n \"$sce\",\r\n \"errorService\",\r\n \"googleAnalyticsService\",\r\n \"$interval\",\r\n \"$stateParams\"\r\n ];\r\n\r\n function contactlessCtrl(\r\n lobbyUiService,\r\n blockCardService,\r\n $timeout,\r\n appData,\r\n lobbyCommService,\r\n $sce,\r\n errorService,\r\n googleAnalyticsService,\r\n $interval,\r\n $stateParams\r\n ) {\r\n var vm = this;\r\n vm.isDisable = true;\r\n vm.selectedCard = null;\r\n\r\n if (lobbyUiService.connection.isLoggedIn()) {\r\n ga('set', 'page', '/vp/contactless/moadon/one_card_cl/upgrade_approve');\r\n\r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.Contactless);\r\n vm.title = vm.operation.title;\r\n vm.isShowRegulation = false;\r\n vm.isConfimRegulation = false;\r\n vm.isProceesEnd = false;\r\n vm.isConfimRegulation = true;\r\n vm.uniqueIDChosen = 0;\r\n vm.fullName = appData.CustomerInfo.FirstName + \" \" + appData.CustomerInfo.LastName;\r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.Contactless);\r\n vm.steps = blockCardService.GetSteps(blockCardService.OperationEnum.Contactless, 0); //contactless, page 1\r\n vm.contactlessCardDeatils = [];\r\n getCards();\r\n } else {\r\n lobbyUiService.go(\"dw.login\", { nextPage: \"dw.contactless\", type: 2 }, { location: \"replace\" });\r\n }\r\n\r\n vm.getCustomerDetails = function (uniqueIDChosen) {\r\n var req = {};\r\n req.UniqueID = uniqueIDChosen;\r\n\r\n req.CardProcessType = blockCardService.OperationEnum.Contactless;\r\n var result = vm.getCustomerDeatilsFromCache(req.UniqueID);\r\n if (!result) {\r\n blockCardService.getCustomerDetailsWithoutServiceCache(req).then(function (response) {\r\n vm.userDeatils = response;\r\n vm.isDisable = false;\r\n\r\n if (vm.cardsAddressUpdated && vm.cardsAddressUpdated.includes(vm.uniqueId)) {\r\n vm.userDeatils.Address = vm.newAddressUpdated;\r\n }\r\n vm.contactlessCardDeatils.push(vm.userDeatils);\r\n blockCardService.GetSetUserDeatils(vm.userDeatils);\r\n });\r\n }\r\n };\r\n\r\n vm.updateCard = function () {\r\n var req = {};\r\n req.UniqueID = blockCardService.GetCurrentCard();\r\n req.PhoneNum = appData.CustomerInfo.Phone;\r\n req.CardProcessType = vm.operation.name;\r\n\r\n blockCardService.UpdateCardStatus(req).then(\r\n function (response) {\r\n ga('send', 'event', { eventCategory: 'contactless', eventAction: 'כרטיס אחד זכאי', eventLabel: 'מסך אישור – מועדון – אפשר לשדרג' });\r\n lobbyUiService.go(\"dw.contactlessCardEnd\", { clCardEndState: \"approve-cl-card\", uniqueID: req.UniqueID });\r\n },\r\n function (error) {\r\n lobbyUiService.go(\"dw.contactlessCardEnd\");\r\n }\r\n );\r\n };\r\n\r\n function getCards() {\r\n var req = {};\r\n req.CardProcessType = vm.operation.name;\r\n blockCardService.GetBlockedCardDetails(req).then(\r\n function (response) {\r\n var storedCardUid = localStorage.getItem(\"contactlessCardUid\");\r\n if (storedCardUid) {\r\n var match = response.filter(card => card.Id == storedCardUid);\r\n vm.selectedCard = match && match[0] ? match[0] : response[0];\r\n }\r\n else {\r\n vm.selectedCard = response[0];\r\n }\r\n\r\n var isConfirm = blockCardService.IsFromConfirm();\r\n\r\n if (isConfirm) {\r\n vm.uniqueId = blockCardService.GetSetUserDeatils().uniqueID;\r\n }\r\n else if ($stateParams.updateAddressRedirect) {\r\n var updateAddressRedirect = angular.fromJson($stateParams.updateAddressRedirect);\r\n vm.uniqueId = updateAddressRedirect.currentCardUid;\r\n vm.newAddressUpdated = updateAddressRedirect.newAddressUpdated;\r\n vm.cardsAddressUpdated = updateAddressRedirect.cardsAddressUpdated;\r\n }\r\n else {\r\n vm.uniqueId = vm.selectedCard.Id;\r\n }\r\n\r\n var obj = {};\r\n obj.uniqueIDChosen = vm.uniqueId;\r\n vm.getCustomerDetails(vm.uniqueId);\r\n },\r\n function (error) {\r\n try {\r\n var status = error[0].response.Response.Status;\r\n var SeverityCode = status.SeverityCode.toLowerCase();\r\n var SeverityNumber = status.SeverityNumber;\r\n\r\n if (SeverityCode === \"w\" && SeverityNumber === \"007\") {\r\n lobbyUiService.go(\"dw.contactlessCardEnd\", { clCardEndState: \"no-cl-card\" });\r\n } else {\r\n lobbyUiService.go(\"dw.contactlessCardEnd\");\r\n }\r\n } catch (e) {\r\n lobbyUiService.go(\"dw.contactlessCardEnd\");\r\n }\r\n }\r\n );\r\n }\r\n\r\n vm.getCustomerDeatilsFromCache = function (uniqueID) {\r\n for (var i = 0; i < vm.contactlessCardDeatils.length; i++) {\r\n if (vm.contactlessCardDeatils[i].uniqueID === uniqueID) {\r\n return vm.contactlessCardDeatils[i];\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n vm.goToChangeAddress = function () {\r\n ga('send', 'event', {\r\n eventCategory: 'contactless', eventAction: 'כרטיס אחד זכאי', eventLabel: 'מסך אישור – מועדון – לעדכון הכתובת'\r\n });\r\n\r\n localStorage.setItem(\"contactlessCardUid\", vm.selectedCard.Id);\r\n lobbyUiService.go(\"dw.update-address\", { contactless: true });\r\n };\r\n }\r\n})(window, window.angular);\r\n\n(function (window, angular) {\r\n \"use strict\";\r\n angular.module(\"blockCard\").controller(\"contactlessCardEndCtrl\", contactlessCardEndCtrl);\r\n\r\n contactlessCardEndCtrl.$inject = [\"$scope\", \"lobbyUiService\", \"blockCardService\", \"$rootScope\", \"$stateParams\", \"appData\", \"whatsAppNavigationService\"];\r\n\r\n function contactlessCardEndCtrl($scope, lobbyUiService, blockCardService, $rootScope, $stateParams, appData, whatsAppNavigationService) {\r\n var vm = this;\r\n\r\n if (lobbyUiService.connection.isLoggedIn()) {\r\n vm.operation = blockCardService.GetOperation(blockCardService.OperationEnum.Contactless);\r\n vm.title = vm.operation.title;\r\n vm.steps = blockCardService.GetSteps(blockCardService.OperationEnum.Contactless, 1);\r\n\r\n vm.clCardEndState = $stateParams.clCardEndState;\r\n vm.currentCard = getCurrentCard($stateParams.uniqueID);\r\n\r\n localStorage.removeItem(\"contactlessCardUid\");\r\n\r\n if (vm.clCardEndState == 'approve-cl-card') {\r\n ga('set', 'page', '/vp/contactless/moadon/one_card_cl/upgrade_success');\r\n } else if (vm.clCardEndState == 'no-cl-card') {\r\n ga('set', 'page', '/vp/contactless/moadon/one_card_cl/upgrade_not_needed');\r\n }\r\n } else {\r\n lobbyUiService.go(\"dw.login\", { nextPage: \"dw.contactless\", type: 2 }, { location: \"replace\" });\r\n }\r\n\r\n function getCurrentCard(uniqueID) {\r\n var bankAccounts = appData && appData.BankAccounts;\r\n var currentCard = null;\r\n\r\n if (bankAccounts) {\r\n bankAccounts.forEach(function (bankAccount) {\r\n var cards = bankAccount.Cards;\r\n\r\n cards.forEach(function (card) {\r\n if (uniqueID === card.Id) {\r\n currentCard = card;\r\n\r\n // stop loop\r\n return false;\r\n }\r\n })\r\n\r\n if (currentCard) {\r\n // stop loop\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n return currentCard;\r\n }\r\n\r\n vm.redirect = function (link) {\r\n if (vm.clCardEndState == 'approve-cl-card') {\r\n ga('send', 'event', {\r\n eventCategory: 'contactless', eventAction: 'כרטיס אחד זכאי', eventLabel: 'שדרוג הצליח – למידע נוסף'\r\n });\r\n } else if (vm.clCardEndState == 'no-cl-card') {\r\n ga('send', 'event', {\r\n eventCategory: 'contactless', eventAction: 'כרטיס אחד זכאי', eventLabel: 'שדרוג לא נחוץ – סגירה|סיימתי כאן'\r\n });\r\n }\r\n\r\n window.location.href = link;\r\n }\r\n\r\n vm.navToWhatsapp = function () {\r\n ga('send', 'event', {\r\n eventCategory: 'contactless', eventAction: 'כרטיס אחד זכאי', eventLabel: 'שדרוג לא נחוץ'\r\n });\r\n\r\n whatsAppNavigationService.navigate();\r\n }\r\n }\r\n})(window, window.angular);\r\n"],"file":"build-b04fd1bb62.js"}