{"version":3,"sources":["app.js","my-account.controller.js","my-account.service.js","downloads/downloads.controller.js","downloads/downloads.service.js","partner/partner-suspended.controller.js","partner/partner.service.js","licenses/licenses.controller.js","licenses/licenses.service.js","hosting/hosting.controller.js","partner-leasing/activity-report.controller.js","partner-leasing/lease-providers.controller.js","partner-leasing/leases.controller.js","partner-leasing/leases.service.js","partner-leasing/pricing-table.controller.js","partner-reselling/reseller-pricing-table.controller.js","partner-reselling/resellers.controller.js","partner-reselling/resellers.service.js","settings/account-contacts.controller.js","settings/account-info.controller.js","settings/account-logins.controller.js","settings/account-preferences.controller.js","settings/account.service.js","settings/cards-on-file.controller.js","settings/cards-on-file.service.js","settings/settings.controller.js","orders/invoices-unpaid.controller.js","orders/invoices.controller.js","orders/invoices.service.js","orders/orders.controller.js","orders/payments.service.js","orders/price-quotes.controller.js","orders/price-quotes.service.js","orders/scheduled-payments.controller.js","support/support-ticket-report.controller.js","support/support.controller.js","support/support.service.js","support/ticket-modals.controller.js","licenses/high-availability/ha-billing-report.js","licenses/high-availability/ha-licenses.controller.js","licenses/high-availability/ha.service.js"],"names":["angular","$stateProvider","$urlRouterProvider","url","templateUrl","controller","data","pageTitle","views","otherwise","$q","$scope","$log","$timeout","myAccountService","partnerService","cacheControl","$window","$state","authenticationService","$rootScope","vm","this","clearCacheAndReloadPage","clearAllCaches","location","reload","refresh","isLoading","getAreaPermissions","getPartnershipDetails","arr","areaPermissions","Sections","notifications","Notifications","partnerInfo","calculatePartnershipVars","err","isLoggedIn","loadingError","canAssignResellerLicenses","canStartLeases","hookAdded","showLoginOverlay","ShowLoginOverlay","pi","isActiveReseller","Reseller","IsActive","isInactiveReseller","PartnerReseller","isSuspendedReseller","IsSuspended","isActiveLeaseProvider","LeaseProvider","isInactiveLeaseProvider","PartnerLeases","isSuspendedLeaseProvider","isActiveHighAvailabilityPartner","HighAvailabilityPartner","isInactiveHighAvailabilityPartner","isSuspendedHighAvailabilityPartner","generateNewAuthKey","generateNewAuthKeyPromise","then","bootstrap","Modal","getOrCreateInstance","document","getElementById","hide","showGenerateNewAuthKeyModal","show","RecalculateAllFloatLabelControls","$on","event","refreshToken","$http","promise1","processLoginChangeEvent","getCache","remove","urlBase","clearCached","apiRootUrl","get","cache","response","$broadcast","downloadsService","accountCtrl","getAll","downloads","smartermailCurrentDownloads","mailVersions","smartertrackCurrentDownloads","trackVersions","smarterstatsCurrentDownloads","statsVersions","filter","itemsPerPage","currentPageMail","currentPageTrack","currentPageStats","reverse","filteredMailItems","filteredTrackItems","filteredStatsItems","totalFilteredMailItems","length","totalFilteredTrackItems","totalFilteredStatsItems","reject","$location","goToInvoices","path","$applyAsync","partnershipDetailsPromise","clearCachedItems","post","JSON","stringify","licenses","notify","getLicenses","trialLicenseKeys","Trials","licenseKeys","Licenses","dateOnServer","Date","now","paging","page","search","selectedLicenseKey","totalFilteredItems","filteredLicenseKeys","getCsvData","newArr","i","lk","addonNames","j","Addons","DisplayName","push","LicenseKey","product","Product","addons","up","UpgradeProtectionExpiresUtc","moment","format","server","Server","lastActivatedIpAddress","LastActivatedIpAddress","getCsvHeader","getPurchaseLink","test","isExpired","expires","isExpiringSoon","soon","setDate","getDate","isExpiringVerySoon","modalShowPage","modalPage","resetActivations","resetActivationModal","$invalid","reason","licenseKeyResetReason","licenseKeyResetReasonOther","isSending","ActivationsLeft","error","showDetailsModal","item","startPage","$setPristine","$setUntouched","sort","keyName","sortKey","_isExpired","_isExpiringSoon","_isExpiringVerySoon","_upgradeProtectionCategory","licenseKey","LicenseKeyString","Reason","getLicensesSupport","hostingService","paymentsService","selectedService","selectedAgentCount","cancelSite","isProcessing","ServiceID","clearServiceCache","changeAdminPassword","changeAdminPwForm","resetAdminPassword","selectedAdminUser","newAdminPassword","statusText","changePlan","endTrial","popup","modal","UserLimit","getAdminUsers","adminUsers","confirmAdminPassword","hostedAdvancedOptionsForm","selectedPaymentMethod","PaymentType","subscribeForm","selectedPaymentMethodForChange","paymentMethodForm","temp","Bindings","newDomainBindings","hostedDomainsForm","hostedChangePlanForm","updateCalculatedPriceChangeForUpgrade","getServices","services","Services","showBindingWarnings","Status","BindingWarnings","HasUnpaidInvoices","refreshInvoicesAndClosePayModal","resubscribeBeforeCancel","saveAdvancedOptions","AdvancedOptions","savePaymentMethod","savePaymentMethodExistingCard","result","paymentResult","savePaymentMethodNewCard","clearPaymentMethodsCache","savePaymentMethodNoCard","selectService","setBindings","subscribe","subscribeExistingCard","subscribeNewCard","changePlanUpdating","calculatePriceChangeForUpgrade","changePlanMonthlyCost","NewMonthlyCost","changePlanUpgradeCost","UpgradeCost","leaseProviderService","refreshData","getActivityReport","activityReportItems","Items","e","status","window","href","csvHeader","csvData","items","a","LeaseId","Description","recalcLeaseItems","lease","msrp","cost","Msrp","PartnerCost","keysToRemove","Addon","AddonsByCategory","addonCategoryKey","hasOwnProperty","addonId","cat","k","addon","ProductId","undefined","TotalCost","mode","leases","leaseSearch","currentPage","filteredLeases","selectedLease","newLease","upgradeLease","emailPattern","agreement","subject","body","type","isAccepted","doLeaseStop","stopLease","clearLeaseCache","selectedLeaseMode","doLeaseUpgrade","addonIds","modifyLease","sendEmailToCustomer","doStartLease","leaseStart","startLease","Email","CustomerName","CustomData","done","MasterProductName","leaseid","start","StartDate","email","machineName","MachineName","monthlyCost","customerName","customId","CustomId","customData","recalcStartLeaseItems","recalcUpgradeLeaseItems","all","getActiveLeases","values","showTermsCondition","ShowTermsAgreementOverlay","selectLease","selectedLeaseHistory","resendDone","Tab","getLeaseHistory","history","showLeaseStart","availableProductInfo","getProductsAvailable","categories","showLeaseStop","showLeaseUpgrade","Products","prod","Category","addonCat","ap","addonInfo","s","selectedAddon","leaseView","showTermsAgreementOverlay","getAgreement","Body","Subject","Type","getActiveLeasesPromise","getProductsAvailablePromise","getPricingTablePromise","getActivityReportPromise","Leases","ProductLines","referenceData","sendEmail","productId","EmailAddress","ReferenceData","SendEmail","AddonIds","leaseId","SendEmailToEndUser","History","getPricingTable","Categories","pricingTable","category","CategoryName","Name","CostToPartner","resellersService","getPricingTableCsvHeader","getPricingTableCsvData","id","name","SuggestedRetailPrice","mmrp","MinimumRetailPrice","customers","filteredCount","filteredItems","recalc","doSort","assignLicense","assignLicenseForm","assignLicenseKey","assignEmail","assignSpecificLicense","assignSpecificLicenseForm","selectedLicense","attachFocusEvents","focusEventsAttached","addEventListener","focus","generateShortNameForLicense","lic","formattedDate","DatePurchasedUtc","getCustomerCsvData","license","company","DateAssignedUtc","DateUpgradeProtectionExpiresUtc","InvoiceId","MaxBuild","getCustomerCsvHeader","getUnassignedLicenseCsvData","unassignedLicenses","purchased","invoice","getUnassignedLicenseCsvHeader","isUpgradeProtectionActive","clearCache","removeAll","getUnassignedLicenses","getCustomers","resendCustomerLicenseEmail","resendLicenseEmail","selectedCustomerLicense","selectCustomer","customer","selectedCustomer","selectCustomerLicense","selectLicense","showAssignModal","assignEmailConfirm","showAssignSpecificLicense","p1","p2","dataFactory","Customers","emailAddress","accountService","Reload","getAccountSettings","contacts","Contacts","isPrimaryAccountHolder","IsPrimaryAccountHolder","isSaving","isDeleting","countryList","geographicLocations","countries","stateList","statesByCountry","viewContact","contact","selectedContact","copy","ContactsViewForm","addContact","EmailAlerts","SummaryInvoice","ImportantNotices","Invoice","saveContact","success","deleteContact","ContactId","doDeleteContact","details","loggedInAsEmailAddress","getLoggedInEmail","SaveInfo","setAccountPropertiesForm","saveAccountInfo","Details","ShowChangeLoginEmail","newCredentials","AccountInfoChangeEmailForm","ShowChangeLoginPassword","AccountInfoChangePwForm","ShowChangeUserLoginPassword","changeUserLoginModalForm","DoChangeLoginEmail","saveLoginEmail","setLoggedInEmail","NewEmailAddress","RefreshLoginTopArea","DoChangeLoginPassword","saveLoginPassword","DoChangeUserLoginPassword","saveUserLoginPassword","authorizedLogins","selectedLogin","UserId","AuthorizedLogins","viewLogin","login","LoginsViewForm","addLogin","Permissions","ActivateLicenses","Purchase","ViewInvoices","ResellerFunctions","LeaseProviderFunctions","saveLogin","deleteLogin","doDeleteLogin","saveEmailPreferences","RefreshToken","localStorage","getItem","sessionStorage","delete","cardsOnFileService","angularPaymentService","cards","getCardsOnFile","Cards","showAutoCharge","ShowAutoCharge","autoChargePaymentMethodId","accountDetails","attachFocusEvent","focusEventAttached","ccNumber","ccName","offsetParent","viewCard","card","selectedCard","CardViewForm","addCard","ExpirationMonth","getMonth","ExpirationYear","getFullYear","Country","AddressCountryCode","Address1","AddressStreet1","Address2","AddressStreet2","City","AddressCity","State","AddressState","ZipCode","AddressZip","saveCard","dt","dtMoment","add","isBefore","deleteCard","PaymentMethodId","doDeleteCard","formattedCardNumber","firstTwo","lastFour","cardTypeName","fullNumber","FirstTwo","LastFour","cardFromNumber","invoices","getInvoices","ShowInDue","unpaidInvoices","total","Total","totalAmount","filteredInvoices","generatingDownload","selectInvoice","selectedInvoice","sendInvoiceEmail","InvoiceNumber","emailToSend","modalPayInvoice","payExistingCard","payNewCard","downloadPdf","DownloadUrl","allInvoices","allInvoicesSearch","created","DateCreatedUtc","invoiceViewEmail","invoicesPromise","Invoices","invoiceNumber","paymentMethod","SecurityCode","CardNumber","NameOnCard","SaveCard","paymentMethodsPromise","paymentMethodsWithExpiredPromise","getPaymentMethods","retVal","Methods","UniqueId","ExpirationDate","getPaymentMethodsWithExpired","IncludeExpired","invoiceLaterText","ticketService","pricequotes","getPriceQuotes","quotes","priceQuotesOriginal","active","rowClass","DateExpiresUtc","within15Days","b","priceQuotes","selectedPriceQuote","requestQuoteData","viewPriceQuote","quote","priceQuoteSendEmailForm","modalShowPaymentPage","getPrimaryEmail","primaryEmail","sendThroughEmail","PriceQuoteGuid","modalPayQuoteZero","payInvoiceZero","Successful","submitTickets","modalPayQuote","payInvoiceLater","submitFeedback","Company","Phone","phone","Message","message","promises","userEmail","customerEmail","OriginalProductId","IsEmergency","IsInstall","IsTraining","FromAddress","CCAddress","rawBody","IsHtml","IsFree","submitTicket","isFree","ListPrice","getPriceQuotesPromise","PriceQuotes","priceQuoteGuid","scheduledPayments","cardFirstTwo","cardLastFour","supportService","AllTickets","getAllTickets","skipSpinner","getSupportInventory","getRsaas","getOpenSupportTickets","getAllTicketsWithRSAA","ticketSummary","rsaAgreements","openTickets","Tickets","allTickets","startRsaa","newRsaa","tosAccepted","startRsaaForm","allTicketsSearch","filteredTickets","ticketPaging","pagedItems","isChanged","selectedRdpType","rdpPassChanged","secondaryPassChanged","webInterfacePassChanged","goToOrConnectPassChanged","doEditRsaa","editRsaaForm","editRsaa","selectedRsaa","results","resetCache","doStartRsaa","console","log","$error","AllowWebInterface","AllowRemoteDesktop","doViewTicket","element","scope","ticket","viewTicket","formatSupportLine","p","TicketNumber","DateIssueStartedUtc","goToPurchaseSupport","setItem","$$absUrl","display","selectRsaa","startEmergencyTicket","startTicket","valueChanged","rdpType","inputChecker","passType","ticketnumber","getSupportInventoryPromise","getRsaasPromise","getAllTicketsPromise","getTicketsAndRsaaPromise","rsaa","licenseService","upload","cancelTicketReply","messages","cancelMessage","New","uploadAttachmentFunction","attachment","tn","isLast","callback","fileDetails","FileSize","size","File","sendTicketAttachment","Success","files","refreshViewedTicket","Ticket","refreshTicket","TicketID","support","showMessage","ticketMessageId","msgItem","ReplyId","MessageBody","Expanded","getMessageBody","getMessageAttachments","msg","attch","replace","Attachments","showReply","ticketReplyForm","fromEmail","userAddress","hasMail","hasTrack","hasStats","hasHosted","ProductLicenses","sendingButtonMode","acceptedFileTypes","acceptedFileExtensions","checkPartnerships","IsActivePartner","getEmailAddresses","custAddress","hostedData","licenseData","SmarterMail","SmarterStats","SmarterTrack","idx","MaskedKey","substring","ShortProduct","indexOf","jdx","TrialExpiresUtc","trial","goToModifyLicense","hasActiveTrial","hasLicenses","hideMessage","invalidParser","invalidFiles","pattern","parsedString","match","loadLicenses","needsLicense","newTicket","removeFile","index","splice","removeInvalidFiles","count","Selections","ccEmail","newTicketForm","$apply","submitReply","detail","sendReply","attachments","funcs","License","querySelectorAll","forEach","button","disabled","newTicketModal","getMessages","msgs","Messages","CreationDateUtc","StartDateUtc","IsLocked","ticketMessagesForm","$stateParams","highAvailabilityPartnerService","licenseId","getActiveLicenses","find","l","LicenseId","refreshLicenses","licenseSearch","filteredLicenses","startModal","state","productOptions","selectedProduct","selectedAddons","clusterName","onPage1Next","haStartModalForm","priceNotes","addonsByCategory","addonIndex","addonByCategory","productIndex","PriceNotes","onPage2Next","startLicense","async","recalculatePage1Items","modifyModal","haModifyModalForm","onPage1Back","modifyLicense","doLicenseStop","stopLicense","showBillingDetails","billingDetailsLicense","showHighAvailabilityStart","products","showLicenseStop","showLicenseUpgrade","productOptionIndex","newAddonIds","newAddonIdsIndexed","existingAddonSelections","addonSelection","addonCategoryIndex","addonCategory","addonOptionIndex","addonOption","getActiveLicensesPromise"],"mappings":"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","file":"my-account.min.js","sourcesContent":["(function () {\n\n angular\n .module('smartertoolsApp')\n .config(['$stateProvider', '$urlRouterProvider', configureStateProvider]);\n\n function configureStateProvider($stateProvider, $urlRouterProvider) {\n // noinspection JSAnnotator\n $stateProvider\n .state('hosting',\n {\n url: '/hosting',\n templateUrl: '/app/my-account/hosting/hosting.html',\n controller: 'hostedServicesController as hosting'\n })\n .state('price-quotes',\n {\n url: '/price-quotes',\n templateUrl: '/app/my-account/orders/price-quotes.html',\n controller: 'ordersController as orders'\n })\n .state('downloads',\n {\n url: '/downloads',\n templateUrl: '/app/my-account/downloads/downloads.html',\n controller: 'downloadsListController as downloads'\n })\n .state('invoices',\n {\n url: '/invoices',\n templateUrl: '/app/my-account/orders/orders.html',\n controller: 'ordersController as orders'\n })\n\n .state('lease-providers',\n {\n url: '/lease-providers',\n templateUrl: '/app/my-account/partner-leasing/lease-providers.no-preload.html',\n controller: 'leaseProviderController as leaseprovider'\n })\n .state('lease-pricing-table',\n {\n url: '/lease-pricing-table',\n templateUrl: '/app/my-account/partner-leasing/pricing-table.no-preload.html',\n controller: 'leaseProviderController as leaseprovider'\n })\n .state('lease-activity-report',\n {\n url: '/lease-activity-report',\n templateUrl: '/app/my-account/partner-leasing/activity-report.no-preload.html',\n controller: 'leaseProviderController as leaseprovider'\n })\n .state('licenses',\n {\n url: '/licenses',\n templateUrl: '/app/my-account/licenses/licenses.html',\n controller: 'licenseKeyController as licenses'\n })\n .state('licenses.billing-report',\n {\n url: '/licenses/billing-report/{licenseId}',\n data: { pageTitle: \"Billing Report\" },\n views: {\n \"@\": {\n templateUrl: \"/app/my-account/licenses/high-availability/ha-billing-report.html\",\n }\n }\n })\n\n .state('resellers',\n {\n url: '/resellers',\n templateUrl: '/app/my-account/partner-reselling/resellers.no-preload.html',\n controller: 'resellersController as resellers'\n })\n .state('reseller-pricing-table',\n {\n url: '/reseller-pricing-table',\n templateUrl: '/app/my-account/partner-reselling/reseller-pricing-table.no-preload.html',\n controller: 'resellersController as resellers'\n })\n .state('settings',\n {\n url: '/settings',\n templateUrl: '/app/my-account/settings/settings.html',\n controller: 'settingsController as settings'\n })\n .state('support',\n {\n url: '/support',\n templateUrl: '/app/my-account/support/support.html',\n controller: 'supportController as support'\n })\n .state('partner-suspended',\n {\n url: '/partner-suspended',\n templateUrl: '/app/my-account/partner/partner-suspended.html',\n controller: 'partnerSuspendedController as partnersuspended'\n });\n $urlRouterProvider.otherwise('/settings');\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('myAccountController',\n [\n '$q', '$scope', '$log', '$timeout', 'myAccountService', 'partnerService', 'cacheControl', '$window', '$state', 'authenticationService', '$rootScope',\n myAccountController\n ]);\n\n function myAccountController($q, $scope, $log, $timeout, myAccountService, partnerService, cacheControl, $window, $state, authenticationService, $rootScope) {\n const vm = this;\n vm.isLoading = 0;\n vm.isLoggedIn = myAccountService.isLoggedIn;\n vm.areaPermissions = {};\n vm.notifications = {};\n vm.partnerInfo = null;\n vm.canAssignResellerLicenses = false;\n vm.canStartLeases = false;\n vm.hookAdded = false;\n vm.$state = $state;\n\n // Functions\n vm.clearCacheAndReloadPage = clearCacheAndReloadPage;\n vm.showLoginOverlay = showLoginOverlay;\n vm.calculatePartnershipVars = calculatePartnershipVars;\n vm.refresh = refresh;\n vm.generateNewAuthKey = generateNewAuthKey;\n vm.showGenerateNewAuthKeyModal = showGenerateNewAuthKeyModal;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n refresh();\n\n $rootScope.$on('myAccountService:changed', function (event, data) {\n refresh();\n });\n }\n\n function clearCacheAndReloadPage() {\n cacheControl.clearAllCaches();\n $window.location.reload();\n }\n\n function showLoginOverlay() {\n ShowLoginOverlay(function () {\n });\n }\n\n function calculatePartnershipVars() {\n const pi = vm.partnerInfo;\n\n vm.isActiveReseller = pi.Reseller && pi.Reseller.IsActive;\n vm.isInactiveReseller = pi.Reseller && !pi.Reseller.IsActive;\n vm.canAssignResellerLicenses = (vm.isActiveReseller || vm.isInactiveReseller) && vm.areaPermissions.PartnerReseller;\n vm.isSuspendedReseller = pi.Reseller && pi.Reseller.IsSuspended;\n\n vm.isActiveLeaseProvider = pi.LeaseProvider && pi.LeaseProvider.IsActive;\n vm.isInactiveLeaseProvider = pi.LeaseProvider && !pi.LeaseProvider.IsActive;\n vm.canStartLeases = vm.isActiveLeaseProvider && vm.areaPermissions.PartnerLeases;\n vm.isSuspendedLeaseProvider = pi.LeaseProvider && pi.LeaseProvider.IsSuspended;\n\n vm.isActiveHighAvailabilityPartner = pi.HighAvailabilityPartner && pi.HighAvailabilityPartner.IsActive;\n vm.isInactiveHighAvailabilityPartner = pi.HighAvailabilityPartner && !pi.HighAvailabilityPartner.IsActive;\n vm.isSuspendedHighAvailabilityPartner = pi.HighAvailabilityPartner && pi.HighAvailabilityPartner.IsSuspended;\n }\n\n function showGenerateNewAuthKeyModal() {\n bootstrap.Modal.getOrCreateInstance(document.getElementById('generate-auth-key-modal')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function generateNewAuthKey() {\n partnerService.generateNewAuthKeyPromise().then(() => {\n bootstrap.Modal.getOrCreateInstance(document.getElementById('generate-auth-key-modal')).hide();\n clearCacheAndReloadPage();\n });\n }\n\n function refresh() {\n vm.isLoading++;\n\n $q\n .all([\n myAccountService.getAreaPermissions(),\n partnerService.getPartnershipDetails()\n ])\n .then(arr => {\n let data = arr[0];\n vm.areaPermissions = data.Sections;\n vm.notifications = data.Notifications;\n\n data = arr[1];\n vm.partnerInfo = data;\n vm.calculatePartnershipVars();\n\n vm.isLoading--;\n })\n .catch(err => {\n if (err === 'No Refresh Token')\n vm.isLoggedIn = false;\n else\n vm.loadingError = 'There was a problem loading this information. Please try again later.';\n vm.isLoading--;\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .service('myAccountService',\n [\n 'cacheControl', 'refreshToken', '$http', 'authenticationService', '$rootScope', '$window',\n myAccountService\n ]);\n\n function myAccountService(cacheControl, refreshToken, $http, authenticationService, $rootScope, $window) {\n const vm = this;\n vm.urlBase = apiRootUrl;\n vm.isLoggedIn = authenticationService.isLoggedIn();\n let promise1;\n\n // Functions\n vm.getAreaPermissions = getAreaPermissions;\n vm.processLoginChangeEvent = processLoginChangeEvent;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n $rootScope.$on('authentication:logged-in', (event, data) => {\n processLoginChangeEvent();\n $rootScope.$broadcast('myAccountService:changed', {});\n $window.location.reload();\n });\n $rootScope.$on('authentication:logged-out', (event, data) => {\n processLoginChangeEvent();\n $rootScope.$broadcast('myAccountService:changed', {});\n $window.location = \"/\";\n });\n }\n\n function getAreaPermissions() {\n promise1 = refreshToken.refreshToken()\n .then(() => {\n promise1 = null;\n return $http.get(`${vm.urlBase}v1/account/area-permissions`, {cache: cacheControl.getCache('myAccountCache')});\n })\n .then(response => {\n promise1 = null;\n return response.data;\n });\n return promise1;\n }\n\n function processLoginChangeEvent() {\n cacheControl.getCache('myAccountCache').remove(vm.urlBase + 'v1/account/area-permissions');\n refreshToken.clearCached();\n vm.isLoggedIn = authenticationService.isLoggedIn();\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('downloadsListController', ['$scope', '$timeout', 'downloadsService', downloadsListController]);\n\n function downloadsListController($scope, $timeout, downloadsService) {\n const vm = this;\n vm.itemsPerPage = 10;\n vm.currentPageMail = 1;\n vm.currentPageTrack = 1;\n vm.currentPageStats = 1;\n vm.reverse = true;\n vm.filteredMailItems = [];\n vm.filteredTrackItems = [];\n vm.filteredStatsItems = [];\n vm.totalFilteredMailItems = vm.filteredMailItems ? vm.filteredMailItems.length : 0;\n vm.totalFilteredTrackItems = vm.filteredTrackItems ? vm.filteredTrackItems.length : 0;\n vm.totalFilteredStatsItems = vm.filteredStatsItems ? vm.filteredStatsItems.length : 0;\n\n // Functions\n vm.refresh = refresh;\n vm.filter = filter;\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refresh();\n $scope.$on('cache-clear', (event, data) => { refresh(); });\n }\n\n function refresh() {\n $scope.accountCtrl.isLoading++;\n downloadsService.getAll('smartermail', 100)\n .then((downloads) => {\n $scope.accountCtrl.isLoading--;\n vm.smartermailCurrentDownloads = downloads.mailVersions;\n vm.smartertrackCurrentDownloads = downloads.trackVersions;\n vm.smarterstatsCurrentDownloads = downloads.statsVersions;\n vm.filter();\n })\n .catch((err) => {\n $scope.accountCtrl.isLoading--;\n });\n }\n\n function filter() {\n $timeout(() => {\n vm.totalFilteredMailItems = vm.filteredMailItems ? vm.filteredMailItems.length : 0;\n vm.totalFilteredTrackItems = vm.filteredTrackItems ? vm.filteredTrackItems.length : 0;\n vm.totalFilteredStatsItems = vm.filteredStatsItems ? vm.filteredStatsItems.length : 0;\n }, 10);\n };\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .service('downloadsService', ['$http', 'refreshToken', '$log', 'cacheControl', '$q', downloadsService]);\n\n function downloadsService($http, refreshToken, $log, cacheControl, $q) {\n var vm = this;\n vm.urlBase = apiRootUrl;\n\n // Functions\n vm.getAll = getAll;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n }\n\n function getAll() {\n return refreshToken.refreshToken()\n .then(() => $http.get(vm.urlBase + 'v1/build-downloads-complete', { cache: cacheControl.getCache('downloadsMailCache') }))\n .then((response) => response.data)\n .catch((err) => { $q.reject(err); });\n };\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('partnerSuspendedController', ['$scope', '$location', partnerSuspendedController]);\n\n function partnerSuspendedController($scope, $location) {\n var vm = this;\n vm.goToInvoices = goToInvoices;\n\n // -----------------------------------------------\n\n function goToInvoices() {\n $location.path('/Invoices');\n $scope.$applyAsync();\n }\n }\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .factory('partnerService', ['$http', 'refreshToken', 'cacheControl', partnerService]);\n\n function partnerService($http, refreshToken, cacheControl) {\n var urlBase = apiRootUrl;\n var partnershipDetailsPromise;\n\n return {\n clearCachedItems: clearCachedItems,\n getPartnershipDetails: getPartnershipDetails,\n generateNewAuthKeyPromise: generateNewAuthKeyPromise\n };\n\n // -----------------------------------------------\n\n function clearCachedItems() {\n cacheControl.getCache('myAccountCache').remove('v1/account/partnership-details');\n }\n\n function generateNewAuthKeyPromise() {\n return $http.post(`${urlBase}v1/account/partnership-generate-new-auth-key`, JSON.stringify({}));\n }\n\n function getPartnershipDetails() {\n if (partnershipDetailsPromise)\n return partnershipDetailsPromise;\n partnershipDetailsPromise =\n refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/partnership-details`, {cache: cacheControl.getCache('myAccountCache')}))\n .then((response) => response.data);\n return partnershipDetailsPromise;\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('licenseKeyController', ['$scope', '$timeout', 'licenseKeyService', 'notificationFactory', licenseKeyController]);\n\n function licenseKeyController($scope, $timeout, licenses, notify) {\n var vm = this;\n vm.dateOnServer = Date.now();\n vm.paging = {page: 1, itemsPerPage: 10};\n vm.search = '';\n vm.selectedLicenseKey = null;\n vm.totalFilteredItems = 0;\n\n // Functions\n vm.filter = filter;\n vm.getCsvData = getCsvData;\n vm.getCsvHeader = getCsvHeader;\n vm.getPurchaseLink = getPurchaseLink;\n vm.isExpired = isExpired;\n vm.isExpiringSoon = isExpiringSoon;\n vm.isExpiringVerySoon = isExpiringVerySoon;\n vm.modalShowPage = modalShowPage;\n vm.refresh = refresh;\n vm.resetActivations = resetActivations;\n vm.showDetailsModal = showDetailsModal;\n vm.sort = sort;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refresh();\n $scope.$on('cache-clear', (event, data) => {\n refresh();\n });\n }\n\n function filter() {\n $timeout(function () {\n vm.totalFilteredItems = vm.filteredLicenseKeys ? vm.filteredLicenseKeys.length : 0;\n }, 10);\n }\n\n function getCsvData() {\n var newArr = [];\n for (let i = 0; i < vm.licenseKeys.length; i++) {\n const lk = vm.licenseKeys[i];\n let addonNames = '';\n for (let j = 0; j < lk.Addons.length; j++) {\n const a = lk.Addons[j];\n if (addonNames != '')\n addonNames += ', ';\n addonNames += a.DisplayName;\n }\n\n newArr.push({\n lk: lk.LicenseKey,\n product: lk.Product,\n addons: addonNames,\n up: lk.UpgradeProtectionExpiresUtc ? moment(lk.UpgradeProtectionExpiresUtc).format() : '',\n server: lk.Server,\n lastActivatedIpAddress: lk.LastActivatedIpAddress,\n });\n }\n return newArr;\n }\n\n function getCsvHeader() {\n return ['License Key', 'Product', 'Addons', 'Maintenance Expires', 'Server', 'Last Activated IP'];\n }\n\n function getPurchaseLink(lk) {\n if (lk == null || lk.Product == null)\n return '/purchase/select-product';\n const product = lk.Product;\n if (/^smartermail/i.test(product))\n return '/purchase/#/add/smartermail';\n if (/^smarterstats/i.test(product))\n return '/purchase/#/add/smarterstats';\n if (/^smartertrack/i.test(product))\n return '/purchase/#/add/smartertrack';\n return '/purchase/select-product';\n }\n\n function isExpired(expires) {\n return new Date(expires) < Date.now();\n }\n\n function isExpiringSoon(expires) {\n let soon = new Date();\n soon.setDate(soon.getDate() + 60);\n return !vm.isExpired(expires) && (new Date(expires) < soon);\n }\n\n function isExpiringVerySoon(expires) {\n let soon = new Date();\n soon.setDate(soon.getDate() + 15);\n return !vm.isExpired(expires) && (new Date(expires) < soon);\n }\n\n function modalShowPage(page) {\n vm.modalPage = page;\n }\n\n function refresh() {\n $scope.accountCtrl.isLoading++;\n licenses.getLicenses()\n .then((data) => {\n $scope.accountCtrl.isLoading--;\n vm.trialLicenseKeys = data.Trials;\n vm.licenseKeys = data.Licenses;\n vm.filter();\n })\n .catch((err) => {\n $scope.accountCtrl.isLoading--;\n });\n }\n\n function resetActivations() {\n if (vm.resetActivationModal.$invalid)\n return;\n\n var reason = vm.licenseKeyResetReason;\n if (reason == 'Other')\n reason = vm.licenseKeyResetReasonOther;\n if (!reason) {\n notify.error('A reason is required');\n return;\n }\n vm.isSending = true;\n licenses.resetActivations(vm.selectedLicenseKey.LicenseKey, reason)\n .then(() => {\n vm.isSending = false;\n vm.selectedLicenseKey.ActivationsLeft = 2;\n vm.modalShowPage('reset-activations-done');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem resetting activations. Please contact our sales team.');\n });\n }\n\n function showDetailsModal(item, startPage) {\n startPage = startPage || 'start';\n vm.selectedLicenseKey = item;\n vm.modalPage = startPage;\n vm.licenseKeyResetReason = '';\n vm.licenseKeyResetReasonOther = '';\n vm.isSending = false;\n vm.resetActivationModal.$setPristine();\n vm.resetActivationModal.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('licensekey-details-modal')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function sort(keyName) {\n vm.reverse = vm.sortKey !== keyName || !vm.reverse;\n vm.sortKey = keyName;\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .service('licenseKeyService', ['$http', 'refreshToken', 'cacheControl', '$q', licenseKeyService]);\n\n function licenseKeyService($http, refreshToken, cacheControl, $q) {\n var getAllPromise;\n var vm = this;\n vm.urlBase = apiRootUrl;\n\n // Functions\n vm.getLicenses = getLicenses;\n vm.resetActivations = resetActivations;\n vm.getLicensesSupport = getLicensesSupport;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n }\n\n function getLicenses() {\n //if (getAllPromise)\n //\treturn getAllPromise;\n getAllPromise = refreshToken.refreshToken()\n .then(() => $http.get(vm.urlBase + 'v1/account/licenses/all', {cache: cacheControl.getCache('licensesAllCache')}))\n .then((response) => {\n getAllPromise = null;\n response.data.Licenses = response.data.Licenses || [];\n for (let i = 0; i < response.data.Licenses.length; i++) {\n const item = response.data.Licenses[i];\n item._isExpired = isExpired(item.UpgradeProtectionExpiresUtc);\n item._isExpiringSoon = isExpiringSoon(item.UpgradeProtectionExpiresUtc);\n item._isExpiringVerySoon = isExpiringVerySoon(item.UpgradeProtectionExpiresUtc);\n item._upgradeProtectionCategory = '';\n if (item._isExpiringSoon)\n item._upgradeProtectionCategory = 'expiring-soon';\n else if (item._isExpired)\n item._upgradeProtectionCategory = 'expired';\n else \n item._upgradeProtectionCategory = 'active';\n }\n return response.data;\n })\n .catch((err) => {\n getAllPromise = null;\n $q.reject(err);\n });\n return getAllPromise;\n };\n\n function isExpired(expires) {\n return new Date(expires) < Date.now();\n }\n\n function isExpiringSoon(expires) {\n let soon = new Date();\n soon.setDate(soon.getDate() + 60);\n return !isExpired(expires) && (new Date(expires) < soon);\n }\n\n function isExpiringVerySoon(expires) {\n let soon = new Date();\n soon.setDate(soon.getDate() + 15);\n return !isExpired(expires) && (new Date(expires) < soon);\n }\n\n function getLicensesSupport() {\n getAllPromise = refreshToken.refreshToken()\n .then(() => $http.get(vm.urlBase + 'v1/account/licenses/all-support'))\n .then((response) => {\n getAllPromise = null;\n return response.data;\n })\n .catch((err) => {\n getAllPromise = null;\n $q.reject(err);\n });\n return getAllPromise;\n }\n\n function resetActivations(licenseKey, reason) {\n return refreshToken.refreshToken()\n .then(() => $http.post(vm.urlBase + 'v1/account/licenses/reset-activations',\n JSON.stringify({LicenseKeyString: licenseKey, Reason: reason})))\n .then((response) => response.data);\n };\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('hostedServicesController',\n [\n '$scope', '$timeout', 'hostingService', 'cacheControl', 'notificationFactory', '$window', 'payments',\n hostedServicesController\n ]);\n\n function hostedServicesController($scope, $timeout, hostingService, cacheControl, notify, $window, paymentsService) {\n const vm = this;\n vm.selectedService = null;\n vm.dateOnServer = Date.now();\n vm.selectedAgentCount = 5;\n\n // Functions\n vm.cancelSite = cancelSite;\n vm.changeAdminPassword = changeAdminPassword;\n vm.changePlan = changePlan;\n vm.endTrial = endTrial;\n vm.popup = popup;\n vm.refresh = refresh;\n vm.refreshInvoicesAndClosePayModal = refreshInvoicesAndClosePayModal;\n vm.resubscribeBeforeCancel = resubscribeBeforeCancel;\n vm.saveAdvancedOptions = saveAdvancedOptions;\n vm.savePaymentMethod = savePaymentMethod;\n vm.selectService = selectService;\n vm.setBindings = setBindings;\n vm.subscribe = subscribe;\n vm.updateCalculatedPriceChangeForUpgrade = updateCalculatedPriceChangeForUpgrade;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refresh();\n }\n\n function cancelSite() {\n vm.isProcessing = true;\n hostingService.cancelSite(vm.selectedService.ServiceID)\n .then(() => {\n vm.modalPage = 'results';\n vm.isProcessing = false;\n hostingService.clearServiceCache();\n vm.refresh();\n })\n .catch((err) => {\n notify.error('There was a problem cancelling your site. Please contact our sales team.');\n vm.isProcessing = false;\n });\n };\n\n function changeAdminPassword() {\n if (vm.changeAdminPwForm.$invalid)\n return;\n vm.isProcessing = true;\n hostingService.resetAdminPassword(vm.selectedService.ServiceID, vm.selectedAdminUser, vm.newAdminPassword)\n .then(() => {\n vm.modalPage = 'results';\n vm.isProcessing = false;\n })\n .catch((err) => {\n if (err.statusText)\n notify.error(`There was a problem saving your changes. ${err.statusText}`);\n else\n notify.error('There was a problem saving your changes.');\n vm.isProcessing = false;\n });\n };\n\n function changePlan() {\n vm.isProcessing = true;\n hostingService.changePlan(vm.selectedService.ServiceID, vm.selectedAgentCount)\n .then((data) => {\n vm.modalPage = 'results';\n vm.isProcessing = false;\n hostingService.clearServiceCache();\n vm.refresh();\n })\n .catch((err) => {\n vm.isProcessing = false;\n notify.error('There was a problem completing the transaction. Please contact our sales team for assistance.');\n });\n }\n\n function endTrial() {\n vm.isProcessing = true;\n hostingService.endTrial(vm.selectedService.ServiceID)\n .then(() => {\n vm.modalPage = 'results';\n vm.isProcessing = false;\n hostingService.clearServiceCache();\n vm.refresh();\n })\n .catch((err) => {\n notify.error('There was a problem ending your trial. Please contact our sales team.');\n vm.isProcessing = false;\n });\n };\n\n function popup(item, modal) {\n vm.selectedService = item;\n vm.selectedAgentCount = item.UserLimit;\n vm.modalPage = 'start';\n vm.isProcessing = false;\n switch (modal) {\n case 'hosted-services-change-admin-pw':\n hostingService.getAdminUsers(item.ServiceID)\n .then((adminUsers) => {\n vm.adminUsers = adminUsers;\n vm.newAdminPassword = vm.confirmAdminPassword = null;\n vm.changeAdminPwForm.$setPristine();\n vm.changeAdminPwForm.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById(modal)).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n });\n break;\n case 'hosted-services-advancedoptions':\n vm.hostedAdvancedOptionsForm.$setPristine();\n vm.hostedAdvancedOptionsForm.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById(modal)).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n break;\n case 'hosted-services-subscribe':\n vm.selectedPaymentMethod = {PaymentType: 'new'};\n vm.subscribeForm.$setPristine();\n vm.subscribeForm.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById(modal)).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n break;\n case 'hosted-services-update-payment':\n vm.selectedPaymentMethodForChange = {PaymentType: 'new'};\n vm.paymentMethodForm.$setPristine();\n vm.paymentMethodForm.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById(modal)).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n break;\n case 'hosted-services-domains':\n var temp = '';\n for (var i = 0; i < vm.selectedService.Bindings.length; i++) {\n if (temp != '')\n temp += '\\n';\n temp += vm.selectedService.Bindings[i];\n }\n vm.newDomainBindings = temp;\n vm.hostedDomainsForm.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById(modal)).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n break;\n case 'hosted-services-changeplan':\n vm.selectedAgentCount = vm.selectedService.UserLimit;\n vm.hostedChangePlanForm.$setPristine();\n vm.hostedChangePlanForm.$setUntouched();\n vm.updateCalculatedPriceChangeForUpgrade();\n bootstrap.Modal.getOrCreateInstance(document.getElementById(modal)).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n break;\n default:\n bootstrap.Modal.getOrCreateInstance(document.getElementById(modal)).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n break;\n }\n };\n\n function refresh() {\n $scope.accountCtrl.isLoading++;\n hostingService.getServices()\n .then((data) => {\n $scope.accountCtrl.isLoading--;\n vm.services = data.Services;\n if (vm.services) {\n for (var i = 0; i < vm.services.length; i++) {\n var item = vm.services[i];\n item.showBindingWarnings = item.Status == 'active' && item.BindingWarnings && item.BindingWarnings.length > 0;\n }\n }\n vm.HasUnpaidInvoices = data.HasUnpaidInvoices;\n })\n .catch((err) => {\n $scope.accountCtrl.isLoading--;\n });\n };\n\n function refreshInvoicesAndClosePayModal() {\n cacheControl.clearAllCaches();\n $window.location.reload();\n };\n\n function resubscribeBeforeCancel() {\n vm.isProcessing = true;\n hostingService.resubscribeBeforeCancel(vm.selectedService.ServiceID)\n .then((data) => {\n vm.modalPage = 'results';\n vm.isProcessing = false;\n hostingService.clearServiceCache();\n vm.refresh();\n })\n .catch((err) => {\n vm.isProcessing = false;\n notify.error('There was a problem completing the transaction. Please contact our sales team for assistance.');\n });\n }\n\n function saveAdvancedOptions() {\n if (vm.hostedAdvancedOptionsForm.$invalid)\n return;\n vm.isProcessing = true;\n hostingService.saveAdvancedOptions(vm.selectedService.ServiceID, vm.selectedService.AdvancedOptions)\n .then(() => {\n vm.modalPage = 'results';\n vm.isProcessing = false;\n })\n .catch((err) => {\n if (err.statusText)\n notify.error(`There was a problem saving your changes. ${err.statusText}`);\n else\n notify.error('There was a problem saving your changes.');\n vm.isProcessing = false;\n });\n }\n\n function savePaymentMethod() {\n vm.isProcessing = true;\n if (vm.selectedPaymentMethodForChange.PaymentType == 'card') {\n hostingService.savePaymentMethodExistingCard(vm.selectedService.ServiceID, vm.selectedPaymentMethodForChange)\n .then((result) => {\n vm.paymentResult = result;\n vm.isProcessing = false;\n vm.modalPage = 'results';\n hostingService.clearServiceCache();\n vm.refresh();\n })\n .catch((err) => {\n vm.isProcessing = false;\n if (err.statusText)\n notify.error(`There was a problem saving your changes. ${err.statusText}`);\n else\n notify.error('There was a problem saving your changes.');\n });\n } else if (vm.selectedPaymentMethodForChange.PaymentType == 'new') {\n hostingService.savePaymentMethodNewCard(vm.selectedService.ServiceID, vm.selectedPaymentMethodForChange)\n .then((result) => {\n vm.paymentResult = result;\n vm.isProcessing = false;\n vm.modalPage = 'results';\n hostingService.clearServiceCache();\n paymentsService.clearPaymentMethodsCache();\n vm.refresh();\n })\n .catch((err) => {\n vm.isProcessing = false;\n if (err.statusText)\n notify.error(`There was a problem saving your changes. ${err.statusText}`);\n else\n notify.error('There was a problem saving your changes.');\n });\n } else if (vm.selectedPaymentMethodForChange.PaymentType == \"invoice\") {\n hostingService.savePaymentMethodNoCard(vm.selectedService.ServiceID)\n .then((result) => {\n vm.paymentResult = result;\n vm.isProcessing = false;\n vm.modalPage = 'results';\n hostingService.clearServiceCache();\n vm.refresh();\n })\n .catch((err) => {\n vm.isProcessing = false;\n if (err.statusText)\n notify.error(`There was a problem saving your changes. ${err.statusText}`);\n else\n notify.error('There was a problem saving your changes.');\n });\n\n }\n };\n\n function selectService(item) {\n vm.selectedService = item;\n };\n\n function setBindings() {\n vm.isProcessing = true;\n hostingService.setBindings(vm.selectedService.ServiceID, vm.newDomainBindings)\n .then(() => {\n vm.modalPage = 'results';\n vm.isProcessing = false;\n hostingService.clearServiceCache();\n vm.refresh();\n })\n .catch((err) => {\n if (err.statusText)\n notify.error(`There was a problem saving your changes. ${err.statusText}`);\n else\n notify.error('There was a problem saving your changes.');\n vm.isProcessing = false;\n });\n }\n\n function subscribe() {\n vm.isProcessing = true;\n if (vm.selectedPaymentMethod.PaymentType == 'card') {\n hostingService.subscribeExistingCard(vm.selectedService.ServiceID, vm.selectedAgentCount, vm.selectedPaymentMethod)\n .then((result) => {\n vm.paymentResult = result;\n vm.isProcessing = false;\n vm.modalPage = 'results';\n hostingService.clearServiceCache();\n vm.refresh();\n })\n .catch((err) => {\n vm.isProcessing = false;\n if (err.statusText)\n notify.error(`There was a problem making the payment. ${err.statusText}`);\n else\n notify.error('There was a problem making the payment.');\n });\n } else if (vm.selectedPaymentMethod.PaymentType === 'new') {\n hostingService.subscribeNewCard(vm.selectedService.ServiceID, vm.selectedAgentCount, vm.selectedPaymentMethod)\n .then((result) => {\n vm.paymentResult = result;\n vm.isProcessing = false;\n vm.modalPage = 'results';\n hostingService.clearServiceCache();\n vm.refresh();\n })\n .catch((err) => {\n vm.isProcessing = false;\n if (err.statusText)\n notify.error(`There was a problem making the payment. ${err.statusText}`);\n else\n notify.error('There was a problem making the payment.');\n });\n }\n };\n\n function updateCalculatedPriceChangeForUpgrade() {\n vm.changePlanUpdating = true;\n hostingService.calculatePriceChangeForUpgrade(vm.selectedService.ServiceID, vm.selectedAgentCount)\n .then((data) => {\n vm.changePlanMonthlyCost = data.NewMonthlyCost;\n vm.changePlanUpgradeCost = data.UpgradeCost;\n vm.changePlanUpdating = false;\n })\n .catch((err) => {\n vm.changePlanMonthlyCost = null;\n vm.changePlanUpgradeCost = null;\n notify.error('There was a problem obtaining pricing information. Please contact our sales team for assistance.');\n });\n };\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('leaseActivityReportController', ['leaseProviderService', leaseActivityReportController]);\n\n function leaseActivityReportController(leaseProviderService) {\n var vm = this;\n vm.isLoading = true;\n\n // Functions\n vm.refreshData = refreshData;\n vm.csvHeader = csvHeader;\n vm.csvData = csvData;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refreshData();\n }\n\n function csvHeader() { return ['Date', 'Lease Id', 'Description']; }\n\n function csvData() {\n var items = [];\n for (let i = 0; i < vm.activityReportItems.length; i++) {\n const a = vm.activityReportItems[i];\n items.push([\n moment(a.Date).format(),\n a.LeaseId,\n a.Description\n ]);\n }\n return items;\n }\n\n function refreshData() {\n leaseProviderService.getActivityReport()\n .then((data) => {\n vm.activityReportItems = data.Items;\n vm.isLoading = false;\n })\n .catch((e) => {\n if (e.status == 403) {\n window.location.href = '/company/partners';\n return;\n }\n vm.loadingError = 'There was a problem loading this information. Please try again later.';\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('leaseProviderController', ['$scope', '$log', 'myAccountService', leaseProviderController]);\n\n function leaseProviderController($scope, $log, myAccountService) {\n const vm = this;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('leasesController',\n [\n '$scope', '$q', '$timeout', 'leaseProviderService', 'partnerService', 'notificationFactory', 'authenticationService', leasesController\n ]);\n\n function leasesController($scope, $q, $timeout, leaseProviderService, partnerService, notify, authenticationService) {\n const vm = this;\n vm.mode = 'main';\n vm.leases = null;\n vm.leaseSearch = '';\n vm.currentPage = 1;\n vm.filteredLeases = null;\n vm.itemsPerPage = 10;\n vm.partnerInfo = null;\n vm.selectedLease = null;\n vm.totalFilteredItems = 0;\n vm.isProcessing = false;\n vm.newLease = {};\n vm.upgradeLease = {};\n vm.emailPattern = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/;\n vm.agreement = { subject: '', body: '', type: '', isAccepted: false };\n\n // Functions\n vm.doLeaseStop = doLeaseStop;\n vm.doLeaseUpgrade = doLeaseUpgrade;\n vm.doStartLease = doStartLease;\n vm.filter = filter;\n vm.getCsvData = getCsvData;\n vm.getCsvHeader = getCsvHeader;\n vm.recalcStartLeaseItems = recalcStartLeaseItems;\n vm.recalcUpgradeLeaseItems = recalcUpgradeLeaseItems;\n vm.refreshData = refreshData;\n vm.selectLease = selectLease;\n vm.showLeaseStart = showLeaseStart;\n vm.showLeaseStop = showLeaseStop;\n vm.showLeaseUpgrade = showLeaseUpgrade;\n vm.showTermsAgreementOverlay = showTermsAgreementOverlay;\n vm.sort = sort;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refreshData();\n }\n\n function filter() {\n $timeout(() => { vm.totalFilteredItems = vm.filteredLeases ? vm.filteredLeases.length : 0; }, 10);\n }\n\n function sort(keyName) {\n vm.reverse = vm.sortKey !== keyName || !vm.reverse;\n vm.sortKey = keyName;\n }\n\n function getCsvHeader() {\n return ['Lease ID', 'Start Date', 'Email Address', 'Product', 'Addons', 'Machine Name', 'Last Activated IP', 'Monthly Cost to You', 'Customer Name', 'Custom ID', 'Custom Data'];\n }\n\n function getCsvData() {\n const items = [];\n for (let i = 0; i < vm.leases.length; i++) {\n const item = vm.leases[i];\n let addonNames = '';\n for (let j = 0; j < item.Addons.length; j++) {\n const a = item.Addons[j];\n if (addonNames != '')\n addonNames += ', ';\n addonNames += a.MasterProductName === 'Exchange ActiveSync' ? a.Product : a.MasterProductName;\n }\n items.push({\n leaseid: item.LeaseId,\n start: moment(item.StartDate).format(),\n email: item.Email,\n product: item.Product,\n addons: addonNames,\n machineName: item.MachineName,\n lastActivatedIpAddress: item.LastActivatedIpAddress,\n monthlyCost: '$' + item.TotalCost,\n customerName: item.CustomerName,\n customId: item.CustomId,\n customData: item.CustomData,\n\n });\n }\n return items;\n }\n\n\n function selectLease(item) {\n vm.selectedLeaseMode = 'start';\n vm.selectedLease = item;\n vm.selectedLeaseHistory = null;\n vm.isProcessing = false;\n vm.resendDone = false;\n vm.selectedLeaseHistory = [];\n bootstrap.Tab.getOrCreateInstance(document.getElementById('lease-details-tab')).show();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('lease-view-modal')).show();\n leaseProviderService.getLeaseHistory(vm.selectedLease.LeaseId)\n .then((history) => { vm.selectedLeaseHistory = history; });\n }\n\n function showLeaseStart() {\n vm.availableProductInfo = null;\n vm.newLease.done = false;\n vm.newLease.isSending = false;\n leaseProviderService.getProductsAvailable()\n .then((categories) => {\n vm.availableProductInfo = categories;\n vm.newLease = { Msrp: 0, TotalCost: 0, sendEmailToCustomer: true };\n vm.leaseStart.$setPristine();\n vm.leaseStart.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('lease-start-modal')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n });\n }\n\n function showLeaseStop() {\n vm.selectedLeaseMode = 'stop-confirmation';\n }\n\n function showLeaseUpgrade() {\n vm.availableProductInfo = null;\n leaseProviderService.getProductsAvailable()\n .then((categories) => {\n\n vm.availableProductInfo = categories;\n vm.upgradeLease = { Msrp: 0, TotalCost: 0, sendEmailToCustomer: true, LeaseId: vm.selectedLease.LeaseId, Addon: [] };\n\n // Select Product and addons\n for (let i = 0; i < categories.length; i++) {\n const cat = categories[i];\n for (let j = 0; j < cat.Products.length; j++) {\n const prod = cat.Products[j];\n if (prod.ProductId == vm.selectedLease.ProductId) {\n vm.upgradeLease.Category = cat;\n vm.upgradeLease.Product = prod;\n if (prod.AddonsByCategory) {\n for (let k = 0; k < prod.AddonsByCategory.length; k++) {\n\n const addonCat = prod.AddonsByCategory[k];\n for (let ap = 0; ap < addonCat.Addons.length; ap++) {\n const addonInfo = addonCat.Addons[ap];\n for (let s = 0; s < vm.selectedLease.Addons.length; s++) {\n const selectedAddon = vm.selectedLease.Addons[s];\n if (addonInfo.ProductId == selectedAddon.ProductId)\n vm.upgradeLease.Addon[k] = selectedAddon.ProductId;\n }\n }\n\n }\n }\n }\n }\n }\n\n vm.recalcUpgradeLeaseItems();\n vm.leaseView.$setPristine();\n vm.leaseView.$setUntouched();\n vm.selectedLeaseMode = 'upgrade-configure';\n $timeout(() => RecalculateAllFloatLabelControls());\n });\n }\n\n function doStartLease() {\n if (vm.leaseStart.$invalid)\n return;\n vm.newLease.isSending = true;\n const addonIds = [];\n for (let addonCategoryKey in vm.newLease.Addon) {\n if (!vm.newLease.Addon.hasOwnProperty(addonCategoryKey)) continue;\n const addonId = vm.newLease.Addon[addonCategoryKey];\n if (!addonId)\n continue;\n addonIds.push(addonId);\n }\n leaseProviderService.startLease(\n vm.newLease.Email,\n vm.newLease.CustomerName,\n vm.newLease.CustomData,\n vm.newLease.sendEmailToCustomer,\n vm.newLease.Product.ProductId,\n addonIds)\n .then((result) => {\n leaseProviderService.clearLeaseCache();\n vm.refreshData();\n vm.newLease.result = result;\n vm.newLease.isSending = false;\n vm.newLease.done = true;\n })\n .catch((err) => {\n vm.newLease.isSending = false;\n // notify here\n });\n }\n\n function doLeaseUpgrade() {\n vm.isProcessing = true;\n const addonIds = [];\n for (let addonCategoryKey in vm.upgradeLease.Addon) {\n if (!vm.upgradeLease.Addon.hasOwnProperty(addonCategoryKey)) continue;\n const addonId = vm.upgradeLease.Addon[addonCategoryKey];\n if (!addonId)\n continue;\n addonIds.push(addonId);\n }\n leaseProviderService.modifyLease(vm.upgradeLease.LeaseId, vm.upgradeLease.Product.ProductId, addonIds, vm.upgradeLease.sendEmailToCustomer)\n .then((result) => {\n leaseProviderService.clearLeaseCache();\n vm.refreshData();\n vm.isProcessing = false;\n vm.selectedLeaseMode = 'upgrade-result';\n })\n .catch((err) => {\n vm.isProcessing = false;\n notify.error(`There was a problem saving your changes. ${err.statusText}`);\n });\n }\n\n function doLeaseStop() {\n vm.isProcessing = true;\n leaseProviderService.stopLease(vm.selectedLease.LeaseId)\n .then((result) => {\n leaseProviderService.clearLeaseCache();\n vm.refreshData();\n vm.isProcessing = false;\n vm.selectedLeaseMode = 'stop-result';\n })\n .catch((err) => {\n vm.isProcessing = false;\n //TODO: notify\n });\n }\n\n function recalcStartLeaseItems() {\n recalcLeaseItems(vm.newLease);\n }\n\n function recalcUpgradeLeaseItems() {\n recalcLeaseItems(vm.upgradeLease);\n }\n\n function recalcLeaseItems(lease) {\n let msrp = 0;\n let cost = 0;\n if (lease.Product) {\n msrp += lease.Product.Msrp;\n cost += lease.Product.PartnerCost;\n const keysToRemove = [];\n if (lease.Addon && lease.Product.AddonsByCategory) {\n for (let addonCategoryKey in lease.Addon) {\n if (!lease.Addon.hasOwnProperty(addonCategoryKey)) continue;\n const addonId = lease.Addon[addonCategoryKey];\n if (!addonId)\n continue;\n const cat = lease.Product.AddonsByCategory[addonCategoryKey];\n if (cat && cat.Addons) {\n for (let k = 0; k < cat.Addons.length; k++) {\n const addon = cat.Addons[k];\n if (addon.ProductId == addonId) {\n msrp += addon.Msrp;\n cost += addon.PartnerCost;\n break;\n }\n }\n } else {\n keysToRemove.push(addonCategoryKey);\n }\n }\n }\n for (let i = 0; i < keysToRemove.length; i++) {\n lease.Addon[keysToRemove[i]] = undefined;\n }\n }\n lease.Msrp = msrp;\n lease.TotalCost = cost;\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function refreshData() {\n $scope.accountCtrl.isLoading += 2;\n $q.all(\n [\n leaseProviderService.getActiveLeases(),\n partnerService.getPartnershipDetails()\n ])\n .then((values) => {\n $scope.accountCtrl.isLoading -= 2;\n vm.leases = values[0];\n vm.partnerInfo = values[1];\n vm.filter();\n authenticationService.showTermsCondition((data) => {\n const showAgreement = data;\n if (showAgreement == true) {\n ShowTermsAgreementOverlay();\n }\n });\n })\n .catch((e) => {\n if (e.status == 403) {\n window.location.href = '/company/partners';\n return;\n }\n $scope.accountCtrl.isLoading -= 2;\n notify.error('There was a problem loading this information. Please try again later.');\n });\n }\n\n function showTermsAgreementOverlay() {\n authenticationService.getAgreement((data) => {\n vm.agreement.body = data.Body;\n vm.agreement.subject = data.Subject;\n vm.agreement.type = data.Type;\n const modal = bootstrap.Modal.getOrCreateInstance(document.getElementById('partner-agreement-resource'));\n modal.show();\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .factory('leaseProviderService', ['$http', 'refreshToken', 'cacheControl', '$rootScope', leaseProviderService]);\n\n function leaseProviderService($http, refreshToken, cacheControl, $rootScope) {\n const urlBase = apiRootUrl;\n let getActiveLeasesPromise;\n let getProductsAvailablePromise;\n let getPricingTablePromise;\n let getActivityReportPromise;\n\n return {\n clearLeaseCache: clearLeaseCache,\n getActiveLeases: getActiveLeases,\n getProductsAvailable: getProductsAvailable,\n startLease: startLease,\n modifyLease: modifyLease,\n getLeaseHistory: getLeaseHistory,\n stopLease: stopLease,\n getPricingTable: getPricingTable,\n getActivityReport: getActivityReport\n };\n\n // -----------------------------------------------\n\n function clearLeaseCache() {\n cacheControl.getCache('myAccountCache').remove(`${urlBase}v1/account/leases/active`);\n }\n\n function getActiveLeases() {\n if (getActiveLeasesPromise)\n return getActiveLeasesPromise;\n getActiveLeasesPromise = refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/leases/active`, { cache: cacheControl.getCache('myAccountCache') }))\n .then((response) => {\n getActiveLeasesPromise = null;\n return response.data.Leases;\n });\n return getActiveLeasesPromise;\n }\n\n function getProductsAvailable() {\n if (getProductsAvailablePromise)\n return getProductsAvailablePromise;\n getProductsAvailablePromise = refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/leases/product-table`, { cache: cacheControl.getCache('myAccountCache') }))\n .then((response) => {\n getProductsAvailablePromise = null;\n return response.data.ProductLines;\n });\n return getProductsAvailablePromise;\n }\n\n function startLease(email, customerName, referenceData, sendEmail, productId, addonIds) {\n return refreshToken.refreshToken()\n .then(() => $http.post(`${urlBase}v1/account/leases/start`,\n JSON.stringify({\n EmailAddress: email,\n CustomerName: customerName,\n ReferenceData: referenceData,\n SendEmail: sendEmail,\n ProductId: productId,\n AddonIds: addonIds\n })))\n .then((response) => {\n cacheControl.clearAllCaches();\n $rootScope.$broadcast('cache-clear', {});\n return response.data;\n });\n }\n\n function modifyLease(leaseId, productId, addonIds, sendEmailToCustomer) {\n return refreshToken.refreshToken()\n .then(() => $http.post(`${urlBase}v1/account/leases/modify`,\n JSON.stringify({\n LeaseId: leaseId,\n ProductId: productId,\n AddonIds: addonIds,\n SendEmailToEndUser: sendEmailToCustomer\n })))\n .then((response) => {\n cacheControl.clearAllCaches();\n $rootScope.$broadcast('cache-clear', {});\n return response.data;\n });\n }\n\n function getLeaseHistory(leaseId) {\n return refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/leases/${leaseId}/history`))\n .then((response) => response.data.History);\n }\n\n function stopLease(leaseId) {\n return refreshToken.refreshToken()\n .then(() => $http.post(`${urlBase}v1/account/leases/${leaseId}/stop`))\n .then((response) => {\n cacheControl.clearAllCaches();\n $rootScope.$broadcast('cache-clear', {});\n return response.data;\n });\n }\n\n function getPricingTable() {\n if (getPricingTablePromise)\n return getPricingTablePromise;\n getPricingTablePromise = refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/leases/pricing`, { cache: cacheControl.getCache('myAccountCache') }))\n .then((response) => {\n getPricingTablePromise = null;\n return response.data.Categories;\n });\n return getPricingTablePromise;\n }\n\n function getActivityReport() {\n if (getActivityReportPromise)\n return getActivityReportPromise;\n getActivityReportPromise = refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/leases/activity-report`))\n .then((response) => {\n getActivityReportPromise = null;\n return response.data;\n });\n return getActivityReportPromise;\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('leasePricingTableController', ['leaseProviderService', leasePricingTableController]);\n\n function leasePricingTableController(leaseProviderService) {\n const vm = this;\n vm.isLoading = true;\n\n // Functions\n vm.csvHeader = csvHeader;\n vm.csvData = csvData;\n vm.refreshData = refreshData;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refreshData();\n }\n\n function csvHeader() {\n return ['Category', 'ID', 'Product', 'Monthly Cost to You'];\n }\n\n function csvData() {\n const items = [];\n for (let i = 0; i < vm.pricingTable.length; i++) {\n const category = vm.pricingTable[i];\n for (let j = 0; j < category.Items.length; j++) {\n const a = category.Items[j];\n items.push([\n category.CategoryName,\n a.ProductId,\n a.Name,\n '$' + a.CostToPartner\n ]);\n }\n }\n return items;\n }\n\n function refreshData() {\n leaseProviderService\n .getPricingTable()\n .then((categories) => {\n vm.pricingTable = categories;\n vm.isLoading = false;\n })\n .catch((e) => {\n if (e.status == 403) {\n window.location.href = '/company/partners';\n return;\n }\n vm.loadingError = 'There was a problem loading this information. Please try again later.';\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('resellersPricingTableController', ['resellersService', resellersPricingTableController]);\n\n function resellersPricingTableController(resellersService) {\n const vm = this;\n vm.pricingTable = null;\n vm.isLoading = true;\n vm.loadingError = null;\n\n // Functions\n vm.getPricingTableCsvHeader = getPricingTableCsvHeader;\n vm.getPricingTableCsvData = getPricingTableCsvData;\n vm.refreshData = refreshData;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refreshData();\n }\n\n function getPricingTableCsvHeader() {\n return ['Category', 'ID', 'Product', 'Suggested Retail Price', 'Minimum Retail Price', 'Monthly Cost to You'];\n }\n\n function getPricingTableCsvData() {\n const items = [];\n for (let i = 0; i < vm.pricingTable.length; i++) {\n const category = vm.pricingTable[i];\n for (let j = 0; j < category.Items.length; j++) {\n const a = category.Items[j];\n items.push({\n category: category.CategoryName,\n id: a.ProductId,\n name: a.Name,\n msrp: '$' + a.SuggestedRetailPrice,\n mmrp: '$' + a.MinimumRetailPrice,\n cost: '$' + a.CostToPartner\n });\n }\n }\n return items;\n }\n\n function refreshData() {\n resellersService.getPricingTable()\n .then((categories) => {\n vm.pricingTable = categories;\n vm.isLoading = false;\n })\n .catch((e) => {\n if (e.status == 403) {\n window.location.href = '/company/partners';\n return;\n }\n vm.loadingError = 'There was a problem loading this information. Please try again later.';\n });\n }\n }\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('resellersController', ['$scope', '$q', '$timeout', 'resellersService', 'cacheControl', 'notificationFactory', 'authenticationService', resellersController]);\n\n function resellersController($scope, $q, $timeout, resellersService, cacheControl, notify, authenticationService) {\n const vm = this;\n vm.emailPattern = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/;\n vm.paging = {\n customers: {\n currentPage: 1,\n itemsPerPage: 10,\n search: '',\n reverse: false,\n sortKey: 'EmailAddress',\n filteredCount: 0,\n filteredItems: null,\n recalc: function () {\n $timeout(() => {\n vm.paging.customers.filteredCount = vm.paging.customers.filteredItems\n ? vm.paging.customers.filteredItems.length\n : 0;\n }, 10);\n },\n doSort: function (keyName) {\n vm.paging.customers.reverse = vm.paging.customers.sortKey !== keyName || !vm.paging.customers.reverse;\n vm.paging.customers.sortKey = keyName;\n }\n },\n licenses: {\n currentPage: 1,\n itemsPerPage: 10,\n search: '',\n reverse: true,\n sortKey: 'DatePurchasedUtc',\n filteredCount: 0,\n filteredItems: null,\n recalc: function () {\n $timeout(() => {\n vm.paging.licenses.filteredCount = vm.paging.licenses.filteredItems\n ? vm.paging.licenses.filteredItems.length\n : 0;\n }, 10);\n },\n doSort: function (keyName) {\n vm.paging.licenses.reverse = vm.paging.licenses.sortKey !== keyName || !vm.paging.licenses.reverse;\n vm.paging.licenses.sortKey = keyName;\n }\n }\n };\n vm.agreement = { subject: '', body: '', type: '', isAccepted: false };\n\n // Functions\n vm.assignLicense = assignLicense;\n vm.assignSpecificLicense = assignSpecificLicense;\n vm.attachFocusEvents = attachFocusEvents;\n vm.generateShortNameForLicense = generateShortNameForLicense;\n vm.getCustomerCsvData = getCustomerCsvData;\n vm.getCustomerCsvHeader = getCustomerCsvHeader;\n vm.getUnassignedLicenseCsvData = getUnassignedLicenseCsvData;\n vm.getUnassignedLicenseCsvHeader = getUnassignedLicenseCsvHeader;\n vm.isUpgradeProtectionActive = isUpgradeProtectionActive;\n vm.refreshData = refreshData;\n vm.resendCustomerLicenseEmail = resendCustomerLicenseEmail;\n vm.selectCustomer = selectCustomer;\n vm.selectCustomerLicense = selectCustomerLicense;\n vm.selectLicense = selectLicense;\n vm.showAssignModal = showAssignModal;\n vm.showAssignSpecificLicense = showAssignSpecificLicense;\n vm.showTermsAgreementOverlay = showTermsAgreementOverlay;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refreshData(true);\n }\n\n // Implementation\n function assignLicense() {\n if (vm.assignLicenseForm.$invalid || vm.isSending)\n return;\n vm.isSending = true;\n resellersService.assignLicense(vm.assignLicenseKey.LicenseKey, vm.assignEmail)\n .then((data) => {\n vm.modalPage = 'email-sent';\n vm.isSending = false;\n vm.refreshData(true);\n });\n }\n\n function assignSpecificLicense() {\n if (vm.assignSpecificLicenseForm.$invalid || vm.isSending)\n return;\n vm.isSending = true;\n resellersService.assignLicense(vm.selectedLicense.LicenseKey, vm.assignEmail)\n .then((data) => {\n vm.modalPage = 'email-sent';\n vm.isSending = false;\n vm.refreshData(true);\n });\n }\n\n function attachFocusEvents() {\n if (!vm.focusEventsAttached) {\n document.getElementById('reseller-assign-modal').addEventListener('shown.bs.modal', () => { document.getElementById('assignlicensekey').focus(); });\n vm.focusEventsAttached = true;\n }\n }\n\n function generateShortNameForLicense(lic) {\n const formattedDate = moment(lic.DatePurchasedUtc).format('l');\n return `${lic.Product} (purchased ${formattedDate})`;\n }\n\n function getCustomerCsvData() {\n const items = [];\n for (let i = 0; i < vm.customers.length; i++) {\n const item = vm.customers[i];\n for (let j = 0; j < item.Licenses.length; j++) {\n const license = item.Licenses[j];\n items.push([\n item.EmailAddress,\n item.Name,\n item.company,\n license.LicenseKey,\n license.Product,\n moment(license.DatePurchasedUtc).format(),\n license.DateAssignedUtc ? moment(license.DateAssignedUtc).format() : null,\n license.DateUpgradeProtectionExpiresUtc\n ? moment(license.DateUpgradeProtectionExpiresUtc).format()\n : null,\n license.InvoiceId,\n license.MaxBuild\n ]);\n }\n }\n return items;\n }\n\n function getCustomerCsvHeader() {\n return [\n 'Email Address', 'Name', 'Company', 'License Key', 'Product', 'Purchased', 'Assigned',\n 'Maintenance and Support Expires', 'Original Invoice #', 'Max Build'\n ];\n }\n\n function getUnassignedLicenseCsvData() {\n const items = [];\n for (let j = 0; j < vm.unassignedLicenses.length; j++) {\n const license = vm.unassignedLicenses[j];\n items.push({\n lk: license.LicenseKey,\n product: license.Product,\n purchased: moment(license.DatePurchasedUtc).format(),\n invoice: license.InvoiceId\n });\n }\n return items;\n }\n\n function getUnassignedLicenseCsvHeader() {\n return ['License Key', 'Product', 'Purchased', 'Original Invoice #'];\n }\n\n function isUpgradeProtectionActive(license) {\n if (license == null || !license.DateUpgradeProtectionExpiresUtc)\n return false;\n return (new Date(license.DateUpgradeProtectionExpiresUtc) > new Date());\n }\n\n function refreshData(clearCache) {\n if (clearCache) {\n cacheControl.getCache('resellerCache').removeAll();\n }\n $scope.accountCtrl.isLoading += 2;\n $q.all(\n [\n resellersService.getUnassignedLicenses(),\n resellersService.getCustomers()\n ])\n .then((values) => {\n $scope.accountCtrl.isLoading -= 2;\n vm.unassignedLicenses = values[0];\n vm.paging.licenses.recalc();\n vm.customers = values[1];\n\n //if (vm.isAccepted == false)\n //\tvm.showTermsCondition();\n authenticationService.showTermsCondition(\n (data) => {\n const showAgreement = data;\n if (showAgreement == true) {\n ShowTermsAgreementOverlay();\n }\n });\n vm.paging.customers.recalc();\n $scope.$applyAsync();\n })\n .catch((e) => {\n if (e.status == 403) {\n window.location.href = '/company/partners';\n return;\n }\n $scope.accountCtrl.isLoading -= 2;\n notify.error('There was a problem loading this information. Please try again later.');\n });\n }\n\n function resendCustomerLicenseEmail() {\n vm.isSending = true;\n resellersService.resendLicenseEmail(vm.selectedCustomerLicense.LicenseKey)\n .then((data) => {\n vm.modalPage = 'email-sent';\n vm.isSending = false;\n });\n }\n\n function selectCustomer(customer) {\n vm.modalPage = 'start';\n vm.selectedCustomer = customer;\n bootstrap.Modal.getOrCreateInstance(document.getElementById('reseller-customer-view-modal')).show();\n }\n\n function selectCustomerLicense(license) {\n vm.modalPage = 'license-detail';\n vm.selectedCustomerLicense = license;\n }\n\n function selectLicense(license) {\n vm.modalPage = 'start';\n vm.selectedLicense = license;\n bootstrap.Modal.getOrCreateInstance(document.getElementById('reseller-license-view-modal')).show();\n }\n\n function showAssignModal() {\n vm.modalPage = 'start';\n vm.isSending = false;\n vm.assignLicenseKey = null;\n vm.assignEmail = null;\n vm.assignEmailConfirm = null;\n vm.assignLicenseForm.$setPristine();\n vm.assignLicenseForm.$setUntouched();\n vm.attachFocusEvents();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('reseller-assign-modal')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function showAssignSpecificLicense() {\n vm.modalPage = 'assign';\n vm.isSending = false;\n vm.assignEmail = null;\n vm.assignEmailConfirm = null;\n vm.assignSpecificLicenseForm.$setPristine();\n vm.assignSpecificLicenseForm.$setUntouched();\n $timeout(() => {\n RecalculateAllFloatLabelControls();\n document.getElementById('assignSpecificEmail').focus();\n });\n }\n\n function showTermsAgreementOverlay() {\n authenticationService.getAgreement((data) => {\n vm.agreement.body = data.Body;\n vm.agreement.subject = data.Subject;\n vm.agreement.type = data.Type;\n bootstrap.Modal.getOrCreateInstance(document.getElementById('partner-agreement-resource')).show();\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .factory('resellersService', ['$http', 'refreshToken', 'cacheControl', '$rootScope', resellersService]);\n\n function resellersService($http, refreshToken, cacheControl, $rootScope) {\n const urlBase = apiRootUrl;\n let p1;\n let p2;\n let getPricingTablePromise;\n\n const dataFactory = {};\n dataFactory.getUnassignedLicenses = getUnassignedLicenses;\n dataFactory.getCustomers = getCustomers;\n dataFactory.getPricingTable = getPricingTable;\n dataFactory.resendLicenseEmail = resendLicenseEmail;\n dataFactory.assignLicense = assignLicense;\n return dataFactory;\n\n // -----------------------------------------------\n\n function getUnassignedLicenses(clearCache) {\n if (p1)\n return p1;\n if (clearCache)\n cacheControl.getCache('resellerCache').removeAll();\n p1 = refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/resellers/licenses/unassigned`, { cache: cacheControl.getCache('resellerCache') }))\n .then((response) => {\n p1 = null;\n return response.data.Licenses;\n });\n return p1;\n }\n\n function getCustomers(clearCache) {\n if (p2)\n return p2;\n if (clearCache)\n cacheControl.getCache('resellerCache').removeAll();\n p2 = refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/resellers/customers`, { cache: cacheControl.getCache('resellerCache') }))\n .then((response) => {\n p2 = null;\n return response.data.Customers;\n });\n return p2;\n }\n\n function getPricingTable() {\n if (getPricingTablePromise)\n return getPricingTablePromise;\n getPricingTablePromise = refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/resellers/pricing`, { cache: cacheControl.getCache('myAccountCache') }))\n .then((response) => {\n getPricingTablePromise = null;\n return response.data.Categories;\n });\n return getPricingTablePromise;\n }\n\n function resendLicenseEmail(licenseKey) {\n return refreshToken.refreshToken()\n .then(() => $http.post(`${urlBase}v1/account/resellers/resend-license-email`, JSON.stringify({ LicenseKey: licenseKey })))\n .then((response) => response.data);\n }\n\n function assignLicense(licenseKey, emailAddress) {\n return refreshToken.refreshToken()\n .then(() => $http.post(`${urlBase}v1/account/resellers/assign-license`, JSON.stringify({ LicenseKey: licenseKey, EmailAddress: emailAddress })))\n .then((response) => {\n cacheControl.clearAllCaches();\n $rootScope.$broadcast('cache-clear', {});\n return response.data;\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('accountContactsController', ['$scope', '$timeout', 'accountService', 'notificationFactory', accountContactsController]);\n\n function accountContactsController($scope, $timeout, accountService, notify) {\n const vm = this;\n vm.contacts = null;\n vm.isSaving = false;\n vm.isDeleting = false;\n vm.countryList = geographicLocations.countries;\n vm.stateList = geographicLocations.statesByCountry;\n\n // Functions\n vm.attachFocusEvents = attachFocusEvents;\n vm.Reload = Reload;\n vm.viewContact = viewContact;\n vm.addContact = addContact;\n vm.saveContact = saveContact;\n vm.deleteContact = deleteContact;\n vm.doDeleteContact = doDeleteContact;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n Reload();\n }\n\n function attachFocusEvents() {\n if (!vm.focusEventsAttached) {\n document.getElementById('account-contacts-view').addEventListener('shown.bs.modal', () => { document.getElementById('accountContactFirstName').focus(); });\n vm.focusEventsAttached = true;\n }\n }\n\n function Reload() {\n $scope.accountCtrl.isLoading++;\n accountService.getAccountSettings()\n .then((data) => {\n $scope.accountCtrl.isLoading--;\n vm.contacts = data.Contacts;\n vm.isPrimaryAccountHolder = data.IsPrimaryAccountHolder;\n $timeout(() => RecalculateAllFloatLabelControls());\n })\n .catch((err) => {\n $scope.accountCtrl.isLoading--;\n });\n\n }\n\n function viewContact(contact) {\n vm.selectedContact = angular.copy(contact);\n vm.isSaving = false;\n vm.isDeleting = false;\n vm.attachFocusEvents();\n vm.ContactsViewForm.$setPristine();\n vm.ContactsViewForm.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-contacts-view')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function addContact() {\n vm.selectedContact = { EmailAlerts: { SummaryInvoice: true, ImportantNotices: true, Invoice: true } };\n vm.isSaving = false;\n vm.isDeleting = false;\n vm.attachFocusEvents();\n vm.ContactsViewForm.$setPristine();\n vm.ContactsViewForm.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-contacts-view')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function saveContact() {\n if (vm.ContactsViewForm.$invalid)\n return;\n vm.isSaving = true;\n accountService.saveContact(vm.selectedContact)\n .then(() => {\n vm.isSaving = false;\n notify.success('Contact was updated.');\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-contacts-view')).hide();\n vm.Reload();\n })\n .catch(() => {\n vm.isSaving = false;\n notify.error('There was a problem updating the item.');\n });\n }\n\n function deleteContact() {\n if (vm.selectedContact.ContactId)\n vm.isDeleting = true;\n }\n\n function doDeleteContact() {\n vm.isSaving = true;\n accountService.deleteContact(vm.selectedContact)\n .then(() => {\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-contacts-view')).hide();\n vm.isDeleting = false;\n vm.isSaving = false;\n notify.success('Contact was deleted');\n vm.Reload();\n })\n .catch(() => {\n vm.isDeleting = false;\n vm.isSaving = false;\n notify.error('There was a problem updating the item.');\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('accountInfoController', ['$scope', '$timeout', 'accountService', 'notificationFactory', 'authenticationService', accountInfoController]);\n\n function accountInfoController($scope, $timeout, accountService, notify, authenticationService) {\n const vm = this;\n vm.details = null;\n vm.isPrimaryAccountHolder = false;\n vm.isSaving = false;\n vm.countryList = geographicLocations.countries;\n vm.stateList = geographicLocations.statesByCountry;\n vm.loggedInAsEmailAddress = authenticationService.getLoggedInEmail();\n\n // Functions\n vm.attachFocusEvents = attachFocusEvents;\n vm.SaveInfo = SaveInfo;\n vm.Reload = Reload;\n vm.ShowChangeLoginEmail = ShowChangeLoginEmail;\n vm.ShowChangeLoginPassword = ShowChangeLoginPassword;\n vm.ShowChangeUserLoginPassword = ShowChangeUserLoginPassword;\n vm.DoChangeLoginEmail = DoChangeLoginEmail;\n vm.DoChangeLoginPassword = DoChangeLoginPassword;\n vm.DoChangeUserLoginPassword = DoChangeUserLoginPassword;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.Reload();\n }\n\n function attachFocusEvents() {\n if (!vm.focusEventsAttached) {\n document.getElementById('change-login-email-modal')\n .addEventListener('shown.bs.modal', () => { document.getElementById('accountLoginCredsNewEmail').focus(); });\n document.getElementById('change-login-password-modal')\n .addEventListener('shown.bs.modal', () => { document.getElementById('accountLoginCredsOldPw').focus(); });\n document.getElementById('change-user-login-password-modal')\n .addEventListener('shown.bs.modal', () => { document.getElementById('accountUserLoginCredsOldPw').focus(); });\n vm.focusEventsAttached = true;\n }\n }\n\n function SaveInfo() {\n if (vm.setAccountPropertiesForm.$invalid)\n return;\n vm.isSaving = true;\n accountService.saveAccountInfo(vm.details)\n .then(() => {\n vm.isSaving = false;\n notify.success('Your information was updated.');\n })\n .catch(() => {\n vm.isSaving = false;\n notify.error('There was a problem updating your information.');\n });\n }\n\n function Reload() {\n $scope.accountCtrl.isLoading++;\n accountService.getAccountSettings()\n .then((data) => {\n $scope.accountCtrl.isLoading--;\n vm.details = data.Details;\n vm.isPrimaryAccountHolder = data.IsPrimaryAccountHolder;\n $timeout(() => RecalculateAllFloatLabelControls());\n })\n .catch((err) => { $scope.accountCtrl.isLoading--; });\n }\n\n function ShowChangeLoginEmail() {\n vm.isSaving = false;\n vm.newCredentials = { EmailAddress: vm.details.EmailAddress };\n vm.AccountInfoChangeEmailForm.$setPristine();\n vm.AccountInfoChangeEmailForm.$setUntouched();\n vm.attachFocusEvents();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('change-login-email-modal')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function ShowChangeLoginPassword() {\n vm.isSaving = false;\n vm.newCredentials = { EmailAddress: vm.details.EmailAddress };\n vm.AccountInfoChangePwForm.$setPristine();\n vm.AccountInfoChangePwForm.$setUntouched();\n vm.attachFocusEvents();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('change-login-password-modal')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function ShowChangeUserLoginPassword() {\n vm.isSaving = false;\n vm.newCredentials = { EmailAddress: vm.details.EmailAddress };\n vm.changeUserLoginModalForm.$setPristine();\n vm.changeUserLoginModalForm.$setUntouched();\n vm.attachFocusEvents();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('change-user-login-password-modal')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function DoChangeLoginEmail() {\n if (vm.AccountInfoChangeEmailForm.$invalid) {\n notify.error('Email addresses must match.');\n return;\n }\n vm.isSaving = true;\n accountService.saveLoginEmail(vm.newCredentials)\n .then(() => {\n vm.isSaving = false;\n authenticationService.setLoggedInEmail(vm.newCredentials.NewEmailAddress);\n RefreshLoginTopArea();\n vm.details.EmailAddress = vm.newCredentials.NewEmailAddress;\n notify.success('Your information was updated.');\n location.reload();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('change-login-email-modal')).hide();\n })\n .catch(() => {\n vm.isSaving = false;\n notify.error('There was a problem updating your information.');\n });\n }\n\n function DoChangeLoginPassword() {\n if (vm.AccountInfoChangePwForm.$invalid)\n return;\n vm.isSaving = true;\n accountService.saveLoginPassword(vm.newCredentials)\n .then(() => {\n vm.isSaving = false;\n bootstrap.Modal.getOrCreateInstance(document.getElementById('change-login-password-modal')).hide();\n notify.success('Your information was updated.');\n })\n .catch(() => {\n vm.isSaving = false;\n notify.error('There was a problem updating your information. Please check your information and try again.');\n });\n }\n\n function DoChangeUserLoginPassword() {\n if (vm.changeUserLoginModalForm.$invalid)\n return;\n vm.isSaving = true;\n accountService.saveUserLoginPassword(vm.newCredentials)\n .then(() => {\n vm.isSaving = false;\n bootstrap.Modal.getOrCreateInstance(document.getElementById('change-user-login-password-modal')).hide();\n notify.success('Your information was updated.');\n })\n .catch(() => {\n vm.isSaving = false;\n notify.error('There was a problem updating the information.');\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('accountLoginsController', ['$scope', '$timeout', 'accountService', 'notificationFactory', accountLoginsController]);\n\n function accountLoginsController($scope, $timeout, accountService, notify) {\n const vm = this;\n vm.authorizedLogins = null;\n vm.isSaving = false;\n vm.isPrimaryAccountHolder = false;\n\n // Functions\n vm.attachFocusEvents = attachFocusEvents;\n vm.Reload = Reload;\n vm.viewLogin = viewLogin;\n vm.addLogin = addLogin;\n vm.saveLogin = saveLogin;\n vm.deleteLogin = deleteLogin;\n vm.doDeleteLogin = doDeleteLogin;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.Reload();\n }\n\n function attachFocusEvents() {\n if (!vm.focusEventsAttached) {\n document.getElementById('account-logins-view')\n .addEventListener('shown.bs.modal', () => {\n if (vm.selectedLogin && vm.selectedLogin.UserId)\n document.getElementById('accountLoginFullName').focus();\n else\n document.getElementById('accountLoginEmail').focus();\n });\n vm.focusEventsAttached = true;\n }\n }\n\n function Reload() {\n $scope.accountCtrl.isLoading++;\n accountService.getAccountSettings()\n .then((data) => {\n $scope.accountCtrl.isLoading--;\n vm.authorizedLogins = data.AuthorizedLogins;\n vm.isPrimaryAccountHolder = data.IsPrimaryAccountHolder;\n $timeout(() => RecalculateAllFloatLabelControls());\n })\n .catch((err) => { $scope.accountCtrl.isLoading--; });\n }\n\n function viewLogin(login) {\n vm.selectedLogin = angular.copy(login);\n vm.isSaving = false;\n vm.isDeleting = false;\n vm.attachFocusEvents();\n vm.LoginsViewForm.$setPristine();\n vm.LoginsViewForm.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-logins-view')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function addLogin() {\n vm.selectedLogin = {\n Permissions: {\n ActivateLicenses: true,\n Purchase: true,\n ViewInvoices: true,\n ResellerFunctions: true,\n LeaseProviderFunctions: true\n },\n };\n vm.isSaving = false;\n vm.isDeleting = false;\n vm.attachFocusEvents();\n vm.LoginsViewForm.$setPristine();\n vm.LoginsViewForm.$setUntouched();\n $timeout(() => {\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-logins-view')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }, 50);\n }\n\n function saveLogin() {\n if (vm.LoginsViewForm.$invalid)\n return;\n vm.isSaving = true;\n accountService.saveLogin(vm.selectedLogin)\n .then(() => {\n vm.isSaving = false;\n notify.success('Authorized Login was updated.');\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-logins-view')).hide();\n vm.Reload();\n })\n .catch((response) => {\n vm.isSaving = false;\n notify.error((response && response.statusText) || 'There was a problem updating the item.');\n });\n }\n\n function deleteLogin() {\n if (vm.selectedLogin.UserId)\n vm.isDeleting = true;\n }\n\n function doDeleteLogin() {\n vm.isSaving = true;\n accountService.deleteLogin(vm.selectedLogin)\n .then(() => {\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-logins-view')).hide();\n vm.isDeleting = false;\n vm.isSaving = false;\n notify.success('Login was deleted');\n vm.Reload();\n })\n .catch(() => {\n vm.isDeleting = false;\n vm.isSaving = false;\n notify.error('There was a problem updating the item.');\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('accountPreferencesController', ['$scope', '$log', '$timeout', 'accountService', 'notificationFactory', 'authenticationService', accountPreferencesController]);\n\n function accountPreferencesController($scope, $log, $timeout, accountService, notify, authenticationService) {\n const vm = this;\n vm.details = null;\n vm.isSaving = false;\n vm.emailAddress = authenticationService.getLoggedInEmail();\n\n // Functions\n vm.Reload = Reload;\n vm.SaveInfo = SaveInfo;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.Reload();\n }\n\n function Reload() {\n $scope.accountCtrl.isLoading++;\n accountService.getAccountSettings()\n .then((data) => {\n $scope.accountCtrl.isLoading--;\n vm.details = data.Details;\n vm.isPrimaryAccountHolder = data.IsPrimaryAccountHolder;\n $timeout(() => RecalculateAllFloatLabelControls());\n })\n .catch((err) => { $scope.accountCtrl.isLoading--; });\n }\n\n function SaveInfo() {\n vm.isSaving = true;\n accountService.saveEmailPreferences(vm.details)\n .then(() => {\n vm.isSaving = false;\n notify.success('Your information was updated.');\n })\n .catch(() => {\n vm.isSaving = false;\n notify.error('There was a problem updating your information.');\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .factory('accountService', ['$q', '$http', 'refreshToken', accountService]);\n\n function accountService($q, $http, refreshToken) {\n const urlBase = apiRootUrl;\n let promise1;\n\n const dataFactory = {};\n dataFactory.getAccountSettings = getAccountSettings;\n dataFactory.saveAccountInfo = saveAccountInfo;\n dataFactory.saveLoginEmail = saveLoginEmail;\n dataFactory.saveLoginPassword = saveLoginPassword;\n dataFactory.saveUserLoginPassword = saveUserLoginPassword;\n dataFactory.saveEmailPreferences = saveEmailPreferences;\n dataFactory.saveContact = saveContact;\n dataFactory.deleteContact = deleteContact;\n dataFactory.saveLogin = saveLogin;\n dataFactory.deleteLogin = deleteLogin;\n return dataFactory;\n\n // -----------------------------------------------\n\n function getAccountSettings() {\n if (promise1)\n return promise1;\n promise1 = refreshToken.refreshToken()\n .then(() => $http.get(urlBase + 'v1/account/details'))\n .then((response) => {\n promise1 = null;\n return response.data;\n });\n return promise1;\n }\n\n function saveAccountInfo(details) {\n return refreshToken.refreshToken()\n .then(() => $http.post(urlBase + 'v1/account/details/account-info', JSON.stringify(details)))\n .then((response) => response.data);\n }\n\n function saveLoginEmail(details) {\n return refreshToken.refreshToken()\n .then(() => {\n details.RefreshToken = localStorage.getItem('stRefreshToken') || sessionStorage.getItem('stRefreshToken');\n return $http.post(urlBase + 'v1/account/details/change-email', JSON.stringify(details));\n })\n .then((response) => response.data);\n }\n\n function saveLoginPassword(details) {\n return refreshToken.refreshToken()\n .then(() => {\n details.RefreshToken = localStorage.getItem('stRefreshToken') || sessionStorage.getItem('stRefreshToken');\n return $http.post(urlBase + 'v1/account/details/change-password', JSON.stringify(details));\n })\n .then((response) => response.data);\n }\n\n function saveUserLoginPassword(details) {\n return refreshToken.refreshToken()\n .then(() => {\n details.RefreshToken = localStorage.getItem('stRefreshToken') || sessionStorage.getItem('stRefreshToken');\n return $http.post(urlBase + 'v1/account/logins/change-my-password', JSON.stringify(details));\n })\n .then((response) => response.data);\n }\n\n function saveEmailPreferences(details) {\n return refreshToken.refreshToken()\n .then(() => $http.post(urlBase + 'v1/account/details/email-preferences', JSON.stringify(details)))\n .then((response) => response.data);\n }\n\n function saveContact(contact) {\n return refreshToken.refreshToken()\n .then(() => {\n if (contact.ContactId)\n return $http.post(urlBase + 'v1/account/contacts/update', JSON.stringify(contact));\n else\n return $http.post(urlBase + 'v1/account/contacts/add', JSON.stringify(contact));\n })\n .then((response) => response.data);\n }\n\n function deleteContact(contact) {\n return refreshToken.refreshToken()\n .then(() => {\n if (contact.ContactId)\n return $http.delete(urlBase + 'v1/account/contacts/' + contact.ContactId);\n else\n $q.reject('Contact does not exist');\n })\n .then((response) => response.data);\n }\n\n function saveLogin(login) {\n return refreshToken.refreshToken()\n .then(() => {\n if (login.UserId)\n return $http.post(urlBase + 'v1/account/logins/update', JSON.stringify(login));\n else\n return $http.post(urlBase + 'v1/account/logins/add', JSON.stringify(login));\n })\n .then((response) => response.data);\n }\n\n function deleteLogin(login) {\n return refreshToken.refreshToken()\n .then(() => {\n if (login.UserId)\n return $http.delete(urlBase + 'v1/account/logins/' + login.UserId);\n else\n $q.reject('Login does not exist');\n })\n .then((response) => response.data);\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('accountCardsOnFileController',\n [\n '$scope', '$timeout', 'cardsOnFileService', 'notificationFactory', 'payment', 'myAccountService', 'accountService', 'payments', '$q',\n accountCardsOnFileController\n ]);\n\n function accountCardsOnFileController($scope, $timeout, cardsOnFileService, notify, angularPaymentService, myAccountService, accountService, paymentsService, $q) {\n const vm = this;\n vm.cards = null;\n vm.isSaving = false;\n vm.isDeleting = false;\n vm.countryList = geographicLocations.countries;\n vm.stateList = geographicLocations.statesByCountry;\n vm.areaPermissions = myAccountService.areaPermissions;\n\n // Functions\n vm.Reload = Reload;\n vm.attachFocusEvent = attachFocusEvent;\n vm.viewCard = viewCard;\n vm.addCard = addCard;\n vm.saveCard = saveCard;\n vm.deleteCard = deleteCard;\n vm.doDeleteCard = doDeleteCard;\n vm.formattedCardNumber = formattedCardNumber;\n vm.cardTypeName = cardTypeName;\n vm.isExpired = isExpired;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.Reload();\n }\n\n function Reload() {\n $scope.accountCtrl.isLoading++;\n $q\n .all(\n [\n cardsOnFileService.getCardsOnFile(),\n accountService.getAccountSettings()\n ])\n .then((values) => {\n $scope.accountCtrl.isLoading--;\n vm.cards = values[0].Cards;\n vm.showAutoCharge = values[0].ShowAutoCharge;\n vm.autoChargePaymentMethodId = values[0].autoChargePaymentMethodId;\n vm.accountDetails = values[1];\n $timeout(() => RecalculateAllFloatLabelControls());\n })\n .catch(function () {\n $scope.accountCtrl.isLoading--;\n notify.error('There was a problem loading this information. Please try again later.');\n });\n }\n\n function attachFocusEvent() {\n if (!vm.focusEventAttached) {\n document.getElementById('account-card-view')\n .addEventListener('shown.bs.modal', () => {\n const ccNumber = document.getElementById('CCNumber');\n const ccName = document.getElementById('CCName');\n\n if (ccNumber.offsetParent !== null) {\n ccNumber.focus();\n } else {\n ccName.focus();\n }\n });\n vm.focusEventAttached = true;\n }\n }\n\n function viewCard(card) {\n vm.selectedCard = angular.copy(card);\n vm.isSaving = false;\n vm.isDeleting = false;\n vm.attachFocusEvent();\n vm.CardViewForm.$setPristine();\n vm.CardViewForm.$setUntouched();\n $timeout(() => {\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-card-view')).show();\n RecalculateAllFloatLabelControls();\n }, 25);\n }\n\n function addCard() {\n if (vm.accountDetails && vm.accountDetails.Details) {\n vm.selectedCard = {\n ExpirationMonth: new Date().getMonth() + 1 + '',\n ExpirationYear: new Date().getFullYear() + 1 + '',\n Country: vm.accountDetails.Details.AddressCountryCode,\n Address1: vm.accountDetails.Details.AddressStreet1,\n Address2: vm.accountDetails.Details.AddressStreet2,\n City: vm.accountDetails.Details.AddressCity,\n State: vm.accountDetails.Details.AddressState,\n ZipCode: vm.accountDetails.Details.AddressZip\n };\n } else {\n vm.selectedCard = {\n ExpirationMonth: new Date().getMonth() + 1 + '',\n ExpirationYear: new Date().getFullYear() + 1 + '',\n Country: 'US'\n };\n }\n vm.isSaving = false;\n vm.isDeleting = false;\n vm.attachFocusEvent();\n vm.CardViewForm.$setPristine();\n vm.CardViewForm.$setUntouched();\n $timeout(() => {\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-card-view')).show();\n RecalculateAllFloatLabelControls();\n }, 25);\n }\n\n function saveCard() {\n if (vm.CardViewForm.$invalid)\n return;\n vm.isSaving = true;\n\n const dt = new Date(vm.selectedCard.ExpirationYear, vm.selectedCard.ExpirationMonth - 1, 1);\n const dtMoment = moment(dt);\n dtMoment.add(1, 'months');\n\n const isExpired = dtMoment.isBefore(new Date());\n if (isExpired) {\n notify.error('You cannot save an expired card.');\n return;\n }\n\n cardsOnFileService.saveCard(vm.selectedCard)\n .then(() => {\n vm.isSaving = false;\n notify.success('Card was updated.');\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-card-view')).hide();\n paymentsService.clearPaymentMethodsCache();\n vm.Reload();\n })\n .catch(() => {\n vm.isSaving = false;\n notify.error('There was a problem updating the item.');\n });\n }\n\n function deleteCard() {\n if (vm.selectedCard.PaymentMethodId)\n vm.isDeleting = true;\n }\n\n function doDeleteCard() {\n vm.isSaving = true;\n cardsOnFileService.deleteCard(vm.selectedCard)\n .then(() => {\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-card-view')).hide();\n vm.isDeleting = false;\n vm.isSaving = false;\n notify.success('Card was deleted');\n paymentsService.clearPaymentMethodsCache();\n vm.Reload();\n })\n .catch((err) => {\n bootstrap.Modal.getOrCreateInstance(document.getElementById('account-card-view')).hide();\n vm.isDeleting = false;\n vm.isSaving = false;\n if (err && err.statusText)\n notify.error('This card cannot be deleted. ' + err.statusText);\n else\n notify.error('There was a problem updating the item.');\n });\n }\n\n function formattedCardNumber(firstTwo, lastFour) {\n if (firstTwo && firstTwo[0] == '3')\n return firstTwo + 'xx xxxxxx x' + lastFour;\n else\n return firstTwo + 'xx xxxx xxxx ' + lastFour;\n }\n\n function cardTypeName(item) {\n const fullNumber = item.FirstTwo + '0000000000' + item.LastFour;\n const type = angularPaymentService.cardFromNumber(fullNumber);\n if (type && type.type == 'amex')\n return 'American Express';\n if (type && type.type == 'visa')\n return 'Visa';\n if (type && type.type == 'mastercard')\n return 'MasterCard';\n if (type && type.type == 'discover')\n return 'Discover';\n return 'Credit Card';\n }\n\n function isExpired(expires) { return new Date(expires) < new Date(); }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .factory('cardsOnFileService', ['$q', '$http', 'refreshToken', cardsOnFileService]);\n\n function cardsOnFileService($q, $http, refreshToken) {\n const urlBase = apiRootUrl;\n let promise1;\n\n const dataFactory = {};\n dataFactory.getCardsOnFile = getCardsOnFile;\n dataFactory.saveCard = saveCard;\n dataFactory.deleteCard = deleteCard;\n return dataFactory;\n\n // -----------------------------------------------\n\n function getCardsOnFile() {\n if (promise1)\n return promise1;\n promise1 = refreshToken.refreshToken()\n .then(() => $http.get(urlBase + 'v1/account/cards-on-file/all'))\n .then((response) => {\n promise1 = null;\n return response.data;\n });\n return promise1;\n }\n\n function saveCard(card) {\n return refreshToken.refreshToken()\n .then(() => {\n if (card.PaymentMethodId)\n return $http.post(urlBase + 'v1/account/cards-on-file/update', JSON.stringify(card));\n else\n return $http.post(urlBase + 'v1/account/cards-on-file/add', JSON.stringify(card));\n })\n .then((response) => response.data);\n }\n\n function deleteCard(card) {\n return refreshToken.refreshToken()\n .then(() => {\n if (card.PaymentMethodId)\n return $http.delete(urlBase + 'v1/account/cards-on-file/' + card.PaymentMethodId);\n else\n $q.reject('Card does not exist');\n })\n .then((response) => response.data);\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('settingsController', ['$scope', 'myAccountService', '$log', settingsController]);\n\n function settingsController($scope, myAccountService, $log) {\n const vm = this;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('unpaidInvoicesController', ['$scope', '$log', '$timeout', 'invoices', 'cacheControl', 'notificationFactory', '$window', unpaidInvoicesController]);\n\n function unpaidInvoicesController($scope, $log, $timeout, invoices, cacheControl, notify, $window) {\n var vm = this;\n vm.filteredInvoices = [];\n vm.totalFilteredItems = vm.filteredInvoices ? vm.filteredInvoices.length : 0;\n vm.currentPage = 1;\n vm.dateOnServer = Date.now();\n vm.itemsPerPage = 10;\n vm.sortKey = 'DateGeneratedUtc';\n vm.totalAmount = 0;\n vm.countryList = geographicLocations.countries;\n vm.stateList = geographicLocations.statesByCountry;\n vm.generatingDownload = false;\n\n // Functions\n vm.sort = sort;\n vm.filter = filter;\n vm.selectInvoice = selectInvoice;\n vm.modalShowPage = modalShowPage;\n vm.refresh = refresh;\n vm.sendEmail = sendEmail;\n vm.modalPayInvoice = modalPayInvoice;\n vm.refreshInvoicesAndClosePayModal = refreshInvoicesAndClosePayModal;\n vm.downloadPdf = downloadPdf;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refresh();\n $scope.$on('cache-clear', () => refresh());\n }\n\n function sort(keyName) {\n vm.reverse = vm.sortKey !== keyName || !vm.reverse;\n vm.sortKey = keyName;\n }\n\n function filter() {\n $timeout(() => {\n vm.totalFilteredItems = vm.filteredInvoices ? vm.filteredInvoices.length : 0;\n }, 10);\n }\n\n function selectInvoice(invoice) {\n vm.selectedInvoice = invoice;\n vm.modalPage = 'start';\n vm.isSending = false;\n bootstrap.Modal.getOrCreateInstance(document.getElementById('unpaid-view-modal')).show();\n }\n\n function modalShowPage(mode) {\n vm.modalPage = mode;\n if (mode === 'email') {\n $timeout(() => {\n document.getElementById('invoiceViewEmailSendAddr').focus();\n }, 100);\n }\n }\n\n function downloadPdf() {\n vm.generatingDownload = true;\n invoices.downloadPdf(vm.selectedInvoice.InvoiceNumber)\n .then((response) => {\n window.location.href = response.DownloadUrl;\n vm.generatingDownload = false;\n })\n .catch(() => {\n notify.error('Unable to generate PDF', 'Error!');\n vm.generatingDownload = false;\n });\n }\n\n function refresh() {\n $scope.accountCtrl.isLoading++;\n invoices.getInvoices()\n .then((invoices) => {\n $scope.accountCtrl.isLoading--;\n var newArr = [];\n for (let i = 0; i < invoices.length; i++) {\n const invoice = invoices[i];\n if (invoice.ShowInDue)\n newArr.push(invoice);\n }\n vm.unpaidInvoices = newArr;\n vm.filter();\n\n var total = 0;\n for (let i = 0; i < vm.unpaidInvoices.length; i++) {\n total += vm.unpaidInvoices[i].Total;\n }\n vm.totalAmount = total;\n })\n .catch((err) => {\n $scope.accountCtrl.isLoading--;\n });\n }\n\n function sendEmail() {\n vm.isSending = true;\n invoices.sendInvoiceEmail(vm.selectedInvoice.InvoiceNumber, vm.emailToSend)\n .then(() => {\n vm.isSending = false;\n vm.modalShowPage('email-sent');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem sending the email.');\n });\n }\n\n function modalPayInvoice() {\n vm.isSending = true;\n if (vm.selectedPaymentMethod.PaymentType === 'card') {\n invoices.payExistingCard(vm.selectedInvoice.InvoiceNumber, vm.selectedPaymentMethod)\n .then((result) => {\n vm.paymentResult = result;\n vm.isSending = false;\n vm.modalShowPage('pay-results');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem making the payment.');\n });\n } else if (vm.selectedPaymentMethod.PaymentType === 'new') {\n invoices.payNewCard(vm.selectedInvoice.InvoiceNumber, vm.selectedPaymentMethod)\n .then((result) => {\n vm.paymentResult = result;\n vm.isSending = false;\n vm.modalShowPage('pay-results');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem making the payment.');\n });\n }\n }\n\n function refreshInvoicesAndClosePayModal() {\n cacheControl.clearAllCaches();\n $window.location.reload();\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('invoiceListController', ['$scope', '$timeout', 'invoices', 'cacheControl', 'notificationFactory', '$window', 'authenticationService', invoiceListController]);\n\n function invoiceListController($scope, $timeout, invoices, cacheControl, notify, $window, authenticationService) {\n var vm = this;\n vm.allInvoicesSearch = '';\n vm.filteredInvoices = [];\n vm.totalFilteredItems = vm.filteredInvoices ? vm.filteredInvoices.length : 0;\n vm.currentPage = 1;\n vm.dateOnServer = Date.now();\n vm.itemsPerPage = 10;\n vm.sortKey = 'DateGeneratedUtc';\n vm.reverse = true;\n vm.countryList = geographicLocations.countries;\n vm.stateList = geographicLocations.statesByCountry;\n vm.generatingDownload = false;\n\n // Functions\n vm.refresh = refresh;\n vm.getCsvHeader = getCsvHeader;\n vm.getCsvData = getCsvData;\n vm.sort = sort;\n vm.filter = filter;\n vm.selectInvoice = selectInvoice;\n vm.modalShowPage = modalShowPage;\n vm.downloadPdf = downloadPdf;\n vm.sendEmail = sendEmail;\n vm.modalPayInvoice = modalPayInvoice;\n vm.refreshInvoicesAndClosePayModal = refreshInvoicesAndClosePayModal;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refresh();\n $scope.$on('cache-clear', (event, data) => {\n refresh();\n });\n }\n\n function refresh() {\n $scope.accountCtrl.isLoading++;\n invoices.getInvoices()\n .then((invoices) => {\n $scope.accountCtrl.isLoading--;\n vm.allInvoices = invoices;\n vm.filter();\n authenticationService.showTermsCondition(\n (data) => {\n var showAgreement = data;\n if (showAgreement == true) {\n ShowTermsAgreementOverlay();\n }\n });\n })\n .catch(function (err) {\n $scope.accountCtrl.isLoading--;\n });\n }\n\n function getCsvHeader() {\n return ['Invoice #', 'Created', 'Status', 'Total', 'Items'];\n }\n\n function getCsvData() {\n var newArr = [];\n for (var i = vm.allInvoices.length - 1; i >= 0; i--) {\n var invoice = vm.allInvoices[i];\n newArr.push({\n id: invoice.InvoiceNumber + '',\n created: invoice.DateCreatedUtc,\n status: invoice.Status,\n total: '$' + invoice.Total,\n items: invoice.Items.length\n });\n }\n return newArr;\n }\n\n function sort(keyName) {\n vm.reverse = vm.sortKey !== keyName || !vm.reverse;\n vm.sortKey = keyName;\n };\n\n function filter() {\n $timeout(() => vm.totalFilteredItems = vm.filteredInvoices ? vm.filteredInvoices.length : 0, 10);\n };\n\n function selectInvoice(invoice) {\n vm.selectedInvoice = invoice;\n vm.modalPage = 'start';\n vm.isSending = false;\n bootstrap.Modal.getOrCreateInstance(document.getElementById('invoice-view-modal')).show();\n };\n\n function modalShowPage(mode) {\n vm.modalPage = mode;\n if (mode == 'email') {\n $timeout(() => document.getElementById('invoiceViewEmailSendAddr').focus(), 100);\n }\n // TODO: Actions and focuses for whatever mode they selected\n }\n\n function downloadPdf() {\n vm.generatingDownload = true;\n invoices.downloadPdf(vm.selectedInvoice.InvoiceNumber)\n .then((response) => {\n window.location.href = response.DownloadUrl;\n vm.generatingDownload = false;\n })\n .catch(() => {\n notify.error('Unable to generate PDF', 'Error!');\n vm.generatingDownload = false;\n });\n }\n\n function sendEmail() {\n if (vm.invoiceViewEmail.$invalid)\n return;\n vm.isSending = true;\n invoices.sendInvoiceEmail(vm.selectedInvoice.InvoiceNumber, vm.emailToSend)\n .then(() => {\n vm.isSending = false;\n vm.modalShowPage('email-sent');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem sending the email.');\n });\n }\n\n function modalPayInvoice() {\n vm.isSending = true;\n if (vm.selectedPaymentMethod.PaymentType == 'card') {\n invoices.payExistingCard(vm.selectedInvoice.InvoiceNumber, vm.selectedPaymentMethod)\n .then((result) => {\n vm.paymentResult = result;\n vm.isSending = false;\n vm.modalShowPage('pay-results');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem making the payment.');\n });\n } else if (vm.selectedPaymentMethod.PaymentType == 'new') {\n invoices.payNewCard(vm.selectedInvoice.InvoiceNumber, vm.selectedPaymentMethod)\n .then((result) => {\n vm.paymentResult = result;\n vm.isSending = false;\n vm.modalShowPage('pay-results');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem making the payment.');\n });\n }\n }\n\n function refreshInvoicesAndClosePayModal() {\n cacheControl.clearAllCaches();\n $window.location.reload();\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .factory('invoices', ['$http', 'refreshToken', '$q', invoicesFactory]);\n\n function invoicesFactory($http, refreshToken, $q) {\n var urlBase = apiRootUrl;\n var invoicesPromise;\n\n return {\n getInvoices: getInvoices,\n downloadPdf: downloadPdf,\n sendInvoiceEmail: sendInvoiceEmail,\n payExistingCard: payExistingCard,\n payNewCard: payNewCard\n };\n\n // -----------------------------------------------\n\n function getInvoices() {\n if (invoicesPromise)\n return invoicesPromise;\n invoicesPromise = refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/invoices/all`))\n .then((response) => {\n invoicesPromise = null;\n return response.data.Invoices;\n })\n .catch((err) => {\n invoicesPromise = null;\n $q.reject(err);\n });\n return invoicesPromise;\n }\n\n function downloadPdf(invoiceNumber) {\n return refreshToken.refreshToken()\n .then(() => $http.post(`${urlBase}v1/account/invoices/generate-pdf`, JSON.stringify({ InvoiceNumber: invoiceNumber })))\n .then((response) => response.data);\n }\n\n function sendInvoiceEmail(invoiceNumber, emailAddress) {\n return refreshToken.refreshToken()\n .then(() => $http.post(`${urlBase}v1/account/invoices/send-email`,\n JSON.stringify({ InvoiceNumber: invoiceNumber, EmailAddress: emailAddress })))\n .then((response) => response.data);\n }\n\n function payExistingCard(invoiceNumber, paymentMethod) {\n return refreshToken.refreshToken()\n .then(() => $http.post(urlBase + 'v1/account/invoices/pay-existing-card',\n JSON.stringify({\n InvoiceNumber: invoiceNumber,\n PaymentMethodId: paymentMethod.PaymentMethodId,\n SecurityCode: paymentMethod.SecurityCode\n })))\n .then((response) => response.data);\n }\n\n function payNewCard(invoiceNumber, paymentMethod) {\n return refreshToken.refreshToken()\n .then(() => $http.post(urlBase + 'v1/account/invoices/pay-new-card',\n JSON.stringify({\n InvoiceNumber: invoiceNumber,\n CardNumber: paymentMethod.CardNumber,\n NameOnCard: paymentMethod.NameOnCard,\n ExpirationMonth: paymentMethod.ExpirationMonth,\n ExpirationYear: paymentMethod.ExpirationYear,\n SecurityCode: paymentMethod.SecurityCode,\n Country: paymentMethod.Country,\n Address1: paymentMethod.Address1,\n Address2: paymentMethod.Address2,\n City: paymentMethod.City,\n State: paymentMethod.State,\n ZipCode: paymentMethod.ZipCode,\n SaveCard: paymentMethod.SaveCard\n })))\n .then((response) => response.data);\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('ordersController', ['$scope', '$log', 'myAccountService', ordersController]);\n\n function ordersController($scope, $log, myAccountService) {\n var vm = this;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .factory('payments', ['$http', 'refreshToken', 'cacheControl', paymentsFactory]);\n\n function paymentsFactory($http, refreshToken, cacheControl) {\n var urlBase = apiRootUrl;\n var paymentMethodsPromise;\n var paymentMethodsWithExpiredPromise;\n\n return {\n getPaymentMethods: getPaymentMethods,\n clearPaymentMethodsCache: clearPaymentMethodsCache,\n getPaymentMethodsWithExpired: getPaymentMethodsWithExpired,\n invoiceLaterText:\n 'By clicking on the \"Pay Now\" box, you agree to remit payment ' +\n 'for any products or services purchased with SmarterTools ' +\n 'within 30 days. '\n };\n\n // -----------------------------------------------\n\n function getPaymentMethods() {\n if (paymentMethodsPromise)\n return paymentMethodsPromise;\n\n paymentMethodsPromise = refreshToken.refreshToken()\n .then(() => $http.post(`${urlBase}v1/cart/payment-methods`, JSON.stringify({}), { cache: cacheControl.getCache('paymentMethodsCache') }))\n .then(function (response) {\n var retVal = response.data.Methods;\n for (let i = 0; i < retVal.length; i++) {\n retVal[i].SecurityCode = retVal[i].SecurityCode || '';\n retVal[i].CardNumber = retVal[i].CardNumber || '';\n retVal[i].NameOnCard = retVal[i].NameOnCard || '';\n retVal[i].SaveCard = retVal[i].SaveCard || false;\n retVal[i].UniqueId = retVal[i].PaymentType + ':' + retVal[i].PaymentMethodId;\n if (retVal[i].ExpirationDate)\n retVal[i].ExpirationDate = new Date(retVal[i].ExpirationDate);\n }\n paymentMethodsPromise = null;\n return retVal;\n });\n return paymentMethodsPromise;\n }\n\n function clearPaymentMethodsCache() {\n cacheControl.getCache('paymentMethodsCache').remove(urlBase.urlBase + 'v1/cart/payment-methods');\n }\n\n function getPaymentMethodsWithExpired() {\n if (paymentMethodsWithExpiredPromise)\n return paymentMethodsWithExpiredPromise;\n paymentMethodsWithExpiredPromise = refreshToken.refreshToken()\n .then(() => $http.post(urlBase + 'v1/cart/payment-methods', JSON.stringify({ IncludeExpired: true }), { cache: cacheControl.getCache('paymentMethodsCache') }))\n .then((response) => {\n var retVal = response.data.Methods;\n for (let i = 0; i < retVal.length; i++) {\n retVal[i].SecurityCode = retVal[i].SecurityCode || '';\n retVal[i].CardNumber = retVal[i].CardNumber || '';\n retVal[i].NameOnCard = retVal[i].NameOnCard || '';\n retVal[i].SaveCard = retVal[i].SaveCard || false;\n retVal[i].UniqueId = retVal[i].PaymentType + ':' + retVal[i].id;\n if (retVal[i].ExpirationDate)\n retVal[i].ExpirationDate = new Date(retVal[i].ExpirationDate);\n }\n paymentMethodsWithExpiredPromise = null;\n return retVal;\n });\n return paymentMethodsWithExpiredPromise;\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('priceQuotesCtrl', ['$scope', '$timeout', 'ticketService', '$q', 'authenticationService', 'pricequotes', 'cacheControl', 'notificationFactory', '$window', '$http', priceQuotesCtrl]);\n\n function priceQuotesCtrl($scope, $timeout, ticketService, $q, authenticationService, pricequotes, cacheControl, notify, $window, $http) {\n var vm = this;\n vm.selectedPriceQuote = null;\n vm.dateOnServer = Date.now();\n vm.requestQuoteData = {\n status: null\n };\n\n // Functions\n vm.refresh = refresh;\n vm.viewPriceQuote = viewPriceQuote;\n vm.modalShowPage = modalShowPage;\n vm.modalShowPaymentPage = modalShowPaymentPage;\n vm.getPrimaryEmail = getPrimaryEmail;\n vm.sendEmail = sendEmail;\n vm.modalPayQuoteZero = modalPayQuoteZero;\n vm.modalPayQuote = modalPayQuote;\n vm.refreshInvoicesAndClosePayModal = refreshInvoicesAndClosePayModal;\n vm.submitFeedback = submitFeedback;\n vm.submitTickets = submitTickets;\n vm.customerEmail = authenticationService.getLoggedInEmail();\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refresh();\n $scope.$on('cache-clear', function (event, data) {\n refresh();\n });\n vm.getPrimaryEmail();\n }\n\n function isExpired(value, index, array) {\n return value.DateExpiresUtc < Date.now();\n }\n\n function isNotExpired(value, index, array) {\n return value.DateExpiresUtc >= Date.now();\n }\n\n function refresh() {\n var now = +new Date();\n var oneDay = 60 * 60 * 24 * 1000;\n\n $scope.accountCtrl.isLoading++;\n pricequotes.getPriceQuotes()\n .then(function (quotes) {\n $scope.accountCtrl.isLoading--;\n vm.priceQuotesOriginal = quotes;\n var active = [];\n for (let i = 0; i < quotes.length; i++) {\n var item = quotes[i];\n item.rowClass = '';\n if (new Date(item.DateExpiresUtc) < Date.now()) {\n active.push(item);\n item.rowClass = 'mark-danger';\n } else {\n active.push(item);\n var within15Days = (new Date(item.DateExpiresUtc) < (Date.now() + (oneDay * 15)));\n item.rowClass = within15Days ? 'mark-warning' : '';\n }\n }\n active.sort((a, b) => new Date(b.DateExpiresUtc) - new Date(a.DateExpiresUtc));\n vm.priceQuotes = active;\n authenticationService.showTermsCondition((data) => {\n var showAgreement = data;\n if (showAgreement == true) {\n ShowTermsAgreementOverlay();\n }\n });\n })\n .catch((err) => $scope.accountCtrl.isLoading--);\n }\n\n function viewPriceQuote(quote) {\n quote.isExpired = new Date(quote.DateExpiresUtc) < Date.now();\n vm.selectedPriceQuote = quote;\n vm.modalPage = 'start';\n vm.isSending = false;\n bootstrap.Modal.getOrCreateInstance(document.getElementById('priceQuotes-view-modal')).show();\n }\n\n function submitFeedback() {\n vm.requestQuoteData.status = 'submitting';\n\n $http\n .post(apiRootUrl + 'v1/feedback/price-quote-request', JSON.stringify({\n Name: vm.requestQuoteData.name,\n Email: vm.requestQuoteData.email,\n Company: vm.requestQuoteData.company,\n Phone: vm.requestQuoteData.phone,\n Message: vm.requestQuoteData.message,\n }))\n .then((response) => {\n vm.requestQuoteData.status = 'done';\n $scope.$applyAsync();\n }, () => {\n });\n }\n\n function modalShowPaymentPage() {\n if (vm.selectedPriceQuote.Total <= 0)\n vm.modalShowPage('pay-zero');\n else\n vm.modalShowPage('pay');\n }\n\n function modalShowPage(mode) {\n vm.modalPage = mode;\n if (mode === 'email') {\n vm.priceQuoteSendEmailForm.$setPristine();\n vm.priceQuoteSendEmailForm.$setUntouched();\n $timeout(() => document.getElementById('PriceQuoteSendEmailAddress').focus(), 100);\n }\n }\n\n function sendEmail() {\n if (vm.priceQuoteSendEmailForm.$invalid)\n return;\n vm.isSending = true;\n pricequotes.sendThroughEmail(vm.selectedPriceQuote.PriceQuoteGuid, vm.emailToSend)\n .then(() => {\n vm.isSending = false;\n vm.modalShowPage('email-sent');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem sending the email.');\n });\n }\n\n function modalPayQuoteZero() {\n vm.isSending = true;\n pricequotes.payInvoiceZero(vm.selectedPriceQuote.PriceQuoteGuid)\n .then((result) => {\n if (result.Successful === true)\n vm.submitTickets();\n vm.paymentResult = result;\n vm.isSending = false;\n vm.modalShowPage('pay-results');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem making the payment.');\n });\n }\n\n function modalPayQuote() {\n vm.isSending = true;\n if (vm.selectedPaymentMethod.PaymentType === 'card') {\n pricequotes.payExistingCard(vm.selectedPriceQuote.PriceQuoteGuid, vm.selectedPaymentMethod)\n .then((result) => {\n if (result.Successful === true)\n vm.submitTickets();\n vm.paymentResult = result;\n vm.isSending = false;\n vm.modalShowPage('pay-results');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem making the payment.');\n });\n } else if (vm.selectedPaymentMethod.PaymentType === 'new') {\n pricequotes.payNewCard(vm.selectedPriceQuote.PriceQuoteGuid, vm.selectedPaymentMethod)\n .then((result) => {\n if (result.Successful === true)\n vm.submitTickets();\n vm.paymentResult = result;\n vm.isSending = false;\n vm.modalShowPage('pay-results');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem making the payment.');\n });\n } else if (vm.selectedPaymentMethod.PaymentType === 'invoice') {\n pricequotes.payInvoiceLater(vm.selectedPriceQuote.PriceQuoteGuid)\n .then((result) => {\n if (result.Successful === true)\n vm.submitTickets();\n vm.paymentResult = result;\n vm.isSending = false;\n vm.modalShowPage('pay-results');\n })\n .catch(() => {\n vm.isSending = false;\n notify.error('There was a problem making the payment.');\n });\n }\n }\n\n function refreshInvoicesAndClosePayModal() {\n cacheControl.clearAllCaches();\n $window.location.reload();\n }\n\n function getPrimaryEmail() {\n ticketService.getAccountSettings()\n .then(data => {\n if (data) {\n vm.primaryEmail = data.Details.EmailAddress;\n }\n });\n }\n\n function submitTickets() {\n var details = {};\n var promises = [];\n // customer email is actually the logged in user email, so handle accordingly.\n var userEmail = vm.customerEmail === vm.primaryEmail\n ? ''\n : vm.customerEmail;\n\n for (var i = 0; i < vm.selectedPriceQuote.Items.length; i++) {\n var item = vm.selectedPriceQuote.Items[i];\n\n switch (item.OriginalProductId) {\n case 1207:\n details = {\n IsEmergency: false,\n IsInstall: true,\n IsTraining: false,\n FromAddress: vm.primaryEmail,\n CCAddress: userEmail,\n Subject: 'SmarterTools Installation Assistance',\n rawBody: vm.primaryEmail + ' has submitted an Installation Assistance request.',\n Body: vm.primaryEmail + ' has submitted an Installation Assistance request.',\n IsHtml: false,\n IsFree: true\n };\n promises.push(ticketService.submitTicket(details));\n break;\n case 788:\n isFree = item.ListPrice <= 0;\n details = {\n IsEmergency: false,\n IsInstall: true,\n IsTraining: false,\n FromAddress: vm.primaryEmail,\n CCAddress: userEmail,\n Subject: 'SmarterTools Installation Assistance',\n rawBody: vm.primaryEmail + ' has submitted an Installation Assistance request.',\n Body: vm.primaryEmail + ' has submitted an Installation Assistance request.',\n IsHtml: false,\n IsFree: isFree\n };\n promises.push(ticketService.submitTicket(details));\n break;\n case 789:\n details = {\n IsEmergency: false,\n IsInstall: false,\n IsTraining: true,\n FromAddress: vm.primaryEmail,\n CCAddress: userEmail,\n Subject: 'SmarterTools Product Training',\n rawBody: vm.primaryEmail + ' has purchased Product Training.',\n Body: vm.primaryEmail + ' has purchased Product Training.',\n IsHtml: false,\n IsFree: isFree\n };\n promises.push(ticketService.submitTicket(details));\n break;\n }\n }\n\n if (!promises.length)\n return;\n\n $q.all(promises)\n .then((arr) => {\n })\n .catch(() => {\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .factory('pricequotes', ['$http', 'refreshToken', '$log', 'cacheControl', '$q', '$rootScope', pricequotes]);\n\n function pricequotes($http, refreshToken, $log, cacheControl, $q, $rootScope) {\n var urlBase = apiRootUrl;\n var getPriceQuotesPromise;\n\n var dataFactory = {};\n dataFactory.getPriceQuotes = getPriceQuotes;\n dataFactory.sendThroughEmail = sendThroughEmail;\n dataFactory.payInvoiceZero = payInvoiceZero;\n dataFactory.payInvoiceLater = payInvoiceLater;\n dataFactory.payExistingCard = payExistingCard;\n dataFactory.payNewCard = payNewCard;\n return dataFactory;\n\n // -----------------------------------------------\n\n function getPriceQuotes() {\n if (getPriceQuotesPromise)\n return getPriceQuotesPromise;\n getPriceQuotesPromise = refreshToken.refreshToken()\n .then(() => $http.get(urlBase + 'v1/account/pricequotes/all', {cache: cacheControl.getCache('invoiceCache')}))\n .then(function (response) {\n getPriceQuotesPromise = null;\n return response.data.PriceQuotes;\n })\n .catch(function (err) {\n getPriceQuotesPromise = null;\n $q.reject(err);\n });\n return getPriceQuotesPromise;\n }\n\n function sendThroughEmail(priceQuoteGuid, emailAddress) {\n return refreshToken.refreshToken()\n .then(() => $http.post(urlBase + 'v1/account/pricequotes/send-email',\n JSON.stringify({PriceQuoteGuid: priceQuoteGuid, EmailAddress: emailAddress})))\n .then((response) => response.data);\n }\n\n function payInvoiceZero(priceQuoteGuid) {\n return refreshToken.refreshToken()\n .then(() => $http.post(urlBase + 'v1/account/pricequotes/pay-zero', JSON.stringify({PriceQuoteGuid: priceQuoteGuid})))\n .then((response) => {\n cacheControl.clearAllCaches();\n $rootScope.$broadcast('cache-clear', {});\n return response.data;\n });\n }\n\n function payInvoiceLater(priceQuoteGuid) {\n return refreshToken.refreshToken()\n .then(() => $http.post(urlBase + 'v1/account/pricequotes/pay-invoice-later', JSON.stringify({PriceQuoteGuid: priceQuoteGuid})))\n .then((response) => {\n cacheControl.clearAllCaches();\n $rootScope.$broadcast('cache-clear', {});\n return response.data;\n });\n }\n\n function payExistingCard(priceQuoteGuid, paymentMethod) {\n return refreshToken.refreshToken()\n .then(() => $http.post(urlBase + 'v1/account/pricequotes/pay-existing-card',\n JSON.stringify({\n PriceQuoteGuid: priceQuoteGuid,\n PaymentMethodId: paymentMethod.PaymentMethodId,\n SecurityCode: paymentMethod.SecurityCode\n })))\n .then((response) => {\n cacheControl.clearAllCaches();\n $rootScope.$broadcast('cache-clear', {});\n return response.data;\n });\n }\n\n function payNewCard(priceQuoteGuid, paymentMethod) {\n return refreshToken.refreshToken()\n .then(() => $http.post(urlBase + 'v1/account/pricequotes/pay-new-card',\n JSON.stringify({\n PriceQuoteGuid: priceQuoteGuid,\n CardNumber: paymentMethod.CardNumber,\n NameOnCard: paymentMethod.NameOnCard,\n ExpirationMonth: paymentMethod.ExpirationMonth,\n ExpirationYear: paymentMethod.ExpirationYear,\n SecurityCode: paymentMethod.SecurityCode,\n Country: paymentMethod.Country,\n Address1: paymentMethod.Address1,\n Address2: paymentMethod.Address2,\n City: paymentMethod.City,\n State: paymentMethod.State,\n ZipCode: paymentMethod.ZipCode,\n SaveCard: paymentMethod.SaveCard\n })))\n .then((response) => {\n cacheControl.clearAllCaches();\n $rootScope.$broadcast('cache-clear', {});\n return response.data;\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('scheduledPaymentCtrl', ['$scope', 'invoices', scheduledPaymentCtrl]);\n\n function scheduledPaymentCtrl($scope, invoices) {\n const vm = this;\n vm.scheduledPayments = invoices.scheduledPayments;\n vm.dateOnServer = Date.now();\n\n // Functions\n vm.formattedCardNumber = formattedCardNumber;\n vm.isExpired = isExpired;\n\n // -----------------------------------------------\n\n function formattedCardNumber(item) {\n if (item.cardFirstTwo == '37')\n return `${item.cardFirstTwo}xx xxxxxx x${item.cardLastFour}`;\n else\n return `${item.cardFirstTwo}xx xxxx xxxx ${item.cardLastFour}`;\n }\n\n function isExpired(expires) {\n return expires < Date.now();\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('supportTicketReportController', ['supportService', '$rootScope', supportTicketReportController]);\n\n function supportTicketReportController(supportService, $rootScope) {\n const vm = this;\n vm.AllTickets = null;\n vm.isLoading = true;\n vm.loadingError = null;\n\n // Functions\n vm.refreshData = refreshData;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n $rootScope.$on('authentication:logged-in', () => vm.refreshData());\n $rootScope.$on('authentication:logged-out', () => vm.refreshData());\n vm.refreshData();\n }\n\n function refreshData() {\n supportService.getAllTickets()\n .then((data) => {\n vm.AllTickets = data;\n vm.isLoading = false;\n })\n .catch(() => {\n vm.loadingError = 'There was a problem loading this information. Please try again later.';\n });\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('supportController',\n [\n '$scope', '$timeout', '$location', 'supportService', 'notificationFactory', '$q', '$rootScope',\n supportController\n ]);\n\n function supportController($scope, $timeout, $location, supportService, notify, $q, $rootScope) {\n const vm = this;\n vm.allTicketsSearch = '';\n vm.filteredTickets = [];\n vm.totalFilteredItems = vm.filteredTickets ? vm.filteredTickets.length : 0;\n vm.ticketPaging = { page: 1, itemsPerPage: 10, pagedItems: {} };\n vm.isChanged = false;\n vm.selectedRdpType = null;\n vm.rdpPassChanged = false;\n vm.secondaryPassChanged = false;\n vm.webInterfacePassChanged = true;\n vm.goToOrConnectPassChanged = false;\n\n // Functions\n vm.doEditRsaa = doEditRsaa;\n vm.doStartRsaa = doStartRsaa;\n vm.doViewTicket = doViewTicket;\n vm.formatSupportLine = formatSupportLine;\n vm.goToPurchaseSupport = goToPurchaseSupport;\n vm.refresh = refresh;\n vm.selectRsaa = selectRsaa;\n vm.startRsaa = startRsaa;\n vm.startEmergencyTicket = startEmergencyTicket;\n vm.startTicket = startTicket;\n vm.valueChanged = valueChanged;\n vm.inputChecker = inputChecker;\n vm.sort = sort;\n vm.filter = filter;\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refresh();\n\n $rootScope.$on('ticketModalsController:submitted', (event, data) => {\n supportService.resetCache();\n refresh(true);\n });\n\n $rootScope.$on('ticketModalsController:showRsaa', (event, data) => {\n vm.newRsaa = { TicketNumber: data.ticketnumber };\n startRsaa();\n refresh(true);\n });\n }\n\n function sort(keyName) {\n vm.reverse = vm.sortKey !== keyName || !vm.reverse;\n vm.sortKey = keyName;\n };\n\n function filter() {\n $timeout(() => {\n vm.totalFilteredItems = vm.filteredInvoices ? vm.filteredInvoices.length : 0;\n }, 10);\n };\n\n function doEditRsaa() {\n if (vm.editRsaaForm.$invalid)\n return;\n supportService.editRsaa(vm.selectedRsaa)\n .then((results) => {\n supportService.resetCache();\n vm.refresh();\n });\n }\n\n function doStartRsaa() {\n if (vm.startRsaaForm.$invalid) {\n console.log(vm.startRsaaForm.$error);\n return;\n }\n if (!vm.newRsaa.AllowWebInterface && !vm.newRsaa.AllowRemoteDesktop) {\n notify.error('The purpose of an RSAA is to allow SmarterTools to connect to your system. At least one connection option must be checked.');\n return;\n }\n supportService.startRsaa(vm.newRsaa)\n .then((results) => {\n supportService.resetCache();\n vm.refresh(true);\n vm.modalPage = 'results';\n })\n .catch((err) => {\n notify.error('There was an error creating the RSAA. Please contact us for assistance.');\n return;\n });\n }\n\n function doViewTicket(item) {\n angular.element(document.getElementById('ticketMsgModalCtlFinder')).scope().ticket.viewTicket(item);\n }\n\n function formatSupportLine(p) {\n return p.TicketNumber + ': ' + p.Subject + ' (' + moment(p.DateIssueStartedUtc).format('L') + ')';\n }\n\n function goToPurchaseSupport() {\n sessionStorage.setItem('addProduct_back',\n JSON.stringify({\n url: $location.$$absUrl,\n display: 'Technical Support'\n }));\n location.href = '/purchase/#/add/support';\n }\n\n function refresh(skipSpinner) {\n if (!skipSpinner) $scope.accountCtrl.isLoading += 4;\n $q\n .all([\n supportService.getSupportInventory(),\n supportService.getRsaas(),\n supportService.getOpenSupportTickets(),\n supportService.getAllTicketsWithRSAA()\n ])\n .then((arr) => {\n vm.ticketSummary = arr[0];\n vm.rsaAgreements = arr[1];\n vm.openTickets = arr[2].Tickets;\n vm.allTickets = arr[3].Tickets;\n\n if (!skipSpinner) $scope.accountCtrl.isLoading -= 4;\n })\n .catch((err) => {\n if (!skipSpinner) $scope.accountCtrl.isLoading -= 4;\n notify.error('There was an error loading this page. Please try again in a few minutes. If this error persists, please contact us.');\n });\n }\n\n function selectRsaa(item) {\n vm.modalPage = 'step1';\n vm.selectedRsaa = item;\n vm.editRsaaForm.$setPristine();\n vm.editRsaaForm.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('rsaa-edit')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function startEmergencyTicket() {\n bootstrap.Modal.getOrCreateInstance(document.getElementById('emergency-ticket-modal')).show();\n }\n\n function startTicket() {\n angular.element(document.getElementById('newTicketModalCtlFinder')).scope().ticket.startTicket();\n }\n\n function startRsaa() {\n if (vm.newRsaa == undefined)\n vm.newRsaa = {};\n //else\n // vm.newRsaa.AllowWebInterface = true;\n vm.modalPage = 'step1';\n vm.tosAccepted = false;\n\n if (vm.startRsaaForm) {\n vm.startRsaaForm.$setPristine();\n vm.startRsaaForm.$setUntouched();\n }\n\n bootstrap.Modal.getOrCreateInstance(document.getElementById('rsaa-start')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function valueChanged(rdpType) {\n vm.isChanged = true;\n vm.selectedRdpType = rdpType;\n }\n\n function inputChecker(passType) {\n if (passType === 'rdp')\n vm.rdpPassChanged = true;\n if (passType === 'secondary')\n vm.secondaryPassChanged = true;\n if (passType === 'webInterface')\n vm.webInterfacePassChanged = true;\n if (passType === 'goToOrConnect')\n vm.goToOrConnectPassChanged = true;\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .service('supportService', ['$http', 'refreshToken', 'cacheControl', '$q', supportService]);\n\n function supportService($http, refreshToken, cacheControl, $q) {\n const vm = this;\n vm.urlBase = apiRootUrl;\n let getSupportInventoryPromise;\n let getRsaasPromise;\n let getAllTicketsPromise;\n let getTicketsAndRsaaPromise;\n\n // Functions\n vm.getSupportInventory = getSupportInventory;\n vm.getRsaas = getRsaas;\n vm.startRsaa = startRsaa;\n vm.getOpenSupportTickets = getOpenSupportTickets;\n vm.resetCache = resetCache;\n vm.doEditRsaa = editRsaa;\n vm.getAllTickets = getAllTickets;\n vm.getAllTicketsWithRSAA = getAllTicketsWithRSAA;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n }\n\n function getSupportInventory() {\n if (getSupportInventoryPromise)\n return getSupportInventoryPromise;\n getSupportInventoryPromise = refreshToken.refreshToken()\n .then(() => $http.get(vm.urlBase + 'v1/account/support/inventory', {cache: cacheControl.getCache('invoiceCache')}))\n .then((response) => {\n getSupportInventoryPromise = null;\n return response.data.Items;\n })\n .catch((err) => {\n getSupportInventoryPromise = null;\n $q.reject(err);\n });\n return getSupportInventoryPromise;\n }\n\n function resetCache() {\n cacheControl.getCache('invoiceCache').remove(vm.urlBase + 'v2/account/support/rsaas');\n cacheControl.getCache('invoiceCache').remove(vm.urlBase + 'v1/account/support/inventory');\n cacheControl.getCache('invoiceCache').remove(vm.urlBase + 'v2/account/support/all-tickets');\n cacheControl.getCache('rsaaTicketCache').remove(vm.urlBase + 'v2/account/support/tickets-with-rsaa');\n }\n\n function getRsaas() {\n if (getRsaasPromise)\n return getRsaasPromise;\n getRsaasPromise = refreshToken.refreshToken()\n .then(() => $http.get(vm.urlBase + 'v2/account/support/rsaas', {cache: cacheControl.getCache('invoiceCache')}))\n .then((response) => {\n getRsaasPromise = null;\n return response.data.Items;\n })\n .catch((err) => {\n getRsaasPromise = null;\n $q.reject(err);\n });\n return getRsaasPromise;\n }\n\n function getAllTickets() {\n if (getAllTicketsPromise)\n return getAllTicketsPromise;\n getAllTicketsPromise = refreshToken.refreshToken()\n .then(() => $http.get(vm.urlBase + 'v2/account/support/all-tickets', {cache: cacheControl.getCache('invoiceCache')}))\n .then((response) => {\n getAllTicketsPromise = null;\n return response.data;\n })\n .catch((err) => {\n getAllTicketsPromise = null;\n $q.reject(err);\n });\n return getAllTicketsPromise;\n }\n\n function getAllTicketsWithRSAA() {\n if (getTicketsAndRsaaPromise)\n return getTicketsAndRsaaPromise;\n getTicketsAndRsaaPromise = refreshToken.refreshToken()\n .then(() => $http.get(vm.urlBase + 'v2/account/support/tickets-with-rsaa', {cache: cacheControl.getCache('rsaaTicketCache')}))\n .then((response) => {\n getTicketsAndRsaaPromise = null;\n return response.data;\n })\n .catch((err) => {\n getTicketsAndRsaaPromise = null;\n $q.reject(err);\n });\n return getTicketsAndRsaaPromise;\n }\n\n function getOpenSupportTickets() {\n return refreshToken.refreshToken()\n .then(() => $http.get(vm.urlBase + 'v2/account/support/open-tickets'))\n .then((response) => response.data);\n }\n\n function startRsaa(rsaa) {\n return refreshToken.refreshToken()\n .then(() => $http.post(vm.urlBase + 'v2/account/support/start-rsaa', JSON.stringify(rsaa)))\n .then((response) => response.data);\n }\n\n function editRsaa(rsaa) {\n return refreshToken.refreshToken()\n .then(() => $http.post(vm.urlBase + 'v2/account/support/edit-rsaa', JSON.stringify(rsaa)))\n .then((response) => response.data);\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('ticketModalsController',\n [\n '$scope', '$location', '$q', '$timeout', 'hostingService', 'licenseKeyService', 'ticketService', 'userPartnerService', 'notificationFactory', 'authenticationService', 'Upload', '$rootScope', 'supportService',\n ticketModalsController\n ]);\n\n function ticketModalsController($scope, $location, $q, $timeout, hostingService, licenseService, ticketService, partnerService, notify, authenticationService, upload, $rootScope, supportService) {\n const vm = this;\n vm.hasMail = false;\n vm.hasTrack = false;\n vm.hasStats = false;\n vm.hasHosted = false;\n vm.Licenses = {};\n vm.Trials = {};\n vm.ProductLicenses = [];\n vm.startRsaa = false;\n vm.sendingButtonMode = 'send';\n vm.acceptedFileTypes =\n 'text/html,' +\n 'image/jpg,' +\n 'image/jpeg,' +\n 'videos/*,' +\n 'application/pdf,' +\n 'application/x-7z-compressed,' +\n 'chemical/x-cmdf,' +\n 'application/pkcs7-signature,' +\n 'application/xcap-diff+xml,' +\n 'text/csv,' +\n 'application/vnd.oasis.opendocument.database,' +\n 'application/x-msaccess,' +\n 'image/png,' +\n 'application/atom+xml,' +\n 'application/x-rar-compressed,' +\n 'text/x-vcard,' +\n 'text/calendar,' +\n 'application/zip,' +\n 'application/vnd.ctc-posml,' +\n 'application/vnd.ms-excel.sheet.macroenabled.12,' +\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,' +\n 'application/vnd.ms-excel,' +\n 'application/vnd.groove-tool-template,' +\n 'image/tiff,' +\n 'application/rtf,' +\n 'video/mp4,' +\n 'application/mp4,' +\n 'application/json,' +\n 'image/gif,' +\n 'message/rfc822.application/vnd.openxmlformats-officedocument.wordprocessingml.document,' +\n 'application/msword';\n vm.acceptedFileExtensions =\n '.7z,.mdf,.b19,.bak,.smime,.p7s,.p7s,.citavitx,.config,.csv,.db,.doc,.docx,.dtt,.eml,.eps,.evtx,.pfx,.gif,.grp,.html,.jpeg,.hdr,.jpg,.json,.log,.mov,.mp3,.mp4,.msg,.mssql,.pdf,.png,.rtf,.rtfd,.sqlite,.srf,.tiff,.tpl,.txt,.xls,.xlsx,.xlsm,.xml,.pml,.zip,.rar,.vcf,.ics';\n\n // Functions\n vm.checkPartnerships = checkPartnerships;\n vm.getEmailAddresses = getEmailAddresses;\n vm.getLicenses = getLicenses;\n vm.goToModifyLicense = goToModifyLicense;\n vm.hasActiveTrial = hasActiveTrial;\n vm.hasLicenses = hasLicenses;\n vm.hideMessage = hideMessage;\n vm.invalidParser = invalidParser;\n vm.loadLicenses = loadLicenses;\n vm.needsLicense = needsLicense;\n vm.refreshViewedTicket = refreshViewedTicket;\n vm.removeFile = removeFile;\n vm.removeInvalidFiles = removeInvalidFiles;\n vm.showMessage = showMessage;\n vm.startTicket = startTicket;\n vm.submitReply = doSubmitReply;\n vm.submitTicket = doSubmitTicket;\n vm.viewTicket = viewTicket;\n activate();\n\n // ------------------------------------------------------------------\n\n function activate() {\n vm.checkPartnerships();\n vm.getLicenses();\n vm.getEmailAddresses();\n }\n\n function cancelTicketReply() {\n vm.messages.page = 'view';\n vm.messages.cancelMessage = null;\n vm.messages.New = null;\n }\n\n function checkPartnerships() {\n partnerService.getPartnershipDetails()\n .then((data) => {\n vm.IsActivePartner = data && data.IsActivePartner;\n });\n }\n\n function invalidParser(invalidFiles) {\n const pattern = /\\.[0-9a-z]{1,5}$/i;\n var parsedString = '';\n for (let i = 0; i < invalidFiles.length; i++) {\n parsedString += invalidFiles[i].name.match(pattern);\n if (i < invalidFiles.length - 1)\n parsedString += ', ';\n }\n return invalidFiles.length > 1 ? parsedString + ' are' : parsedString + ' is';\n }\n\n function removeInvalidFiles() {\n if ($scope.invalidFiles != undefined) {\n const count = $scope.invalidFiles.length;\n $scope.invalidFiles.splice(0, count);\n }\n }\n\n function removeFile(index) {\n $scope.files.splice(index, 1);\n }\n\n function doSubmitReply() {\n if (vm.ticketReplyForm.$invalid)\n return;\n\n if (!vm.messages)\n return;\n\n vm.sendingButtonMode = 'sending';\n $scope.$applyAsync();\n\n const detail = {\n TicketNumber: vm.messages.Ticket.TicketNumber,\n Subject: vm.messages.New.Subject,\n FromAddress: vm.messages.New.fromEmail,\n CCAddress: vm.messages.New.ccEmail,\n Body: vm.messages.New.Body\n };\n\n ticketService.sendReply(detail)\n .then((response) => {\n if (!response.Success) {\n notify.error('There was a problem submitting the ticket reply.');\n vm.sendingButtonMode = 'send';\n $scope.$applyAsync();\n return;\n } else {\n var callback = () => {\n $scope.$applyAsync();\n supportService.resetCache();\n refreshViewedTicket();\n var ticket = vm.messages.Ticket;\n viewTicket(ticket);\n };\n\n var attachments = $scope.files;\n if (attachments && attachments.length) {\n\n var funcs = [];\n var i;\n for (i = 0; i < attachments.length; i++) {\n funcs.push(uploadAttachmentFunction(attachments[i], vm.messages.Ticket.TicketNumber, i == attachments.length - 1, callback));\n }\n for (i = funcs.length - 1; i >= 0; i--) {\n funcs[i]();\n }\n } else\n callback();\n\n vm.sendingButtonMode = 'send';\n $scope.$applyAsync();\n }\n\n })\n .catch((err) => {\n notify.error('There was a problem replying to the ticket.');\n vm.sendingButtonMode = 'send';\n $scope.$applyAsync();\n return;\n });\n }\n\n function doSubmitTicket() {\n if (vm.newTicketForm.$invalid)\n return;\n\n if (!vm.newTicket.product) {\n notify.error('A product is required to submit a ticket.');\n return;\n }\n\n if (vm.needsLicense() && !vm.newTicket.license) {\n notify.error('A license with an active Maintenance and Support is required to submit a ticket.');\n return;\n }\n\n var details = {\n IsEmergency: false,\n FromAddress: vm.newTicket.fromEmail,\n CCAddress: vm.newTicket.ccEmail,\n Subject: vm.newTicket.subject,\n Body: vm.newTicket.message,\n IsHtml: false,\n Product: vm.newTicket.product,\n License: vm.newTicket.product === 'Hosted SmarterTrack' || vm.newTicket.product === 'Active Partner'\n ? ''\n : vm.newTicket.license\n };\n\n document.querySelectorAll('button').forEach(button => {\n button.disabled = true;\n });\n $scope.accountCtrl.isLoading += 1;\n\n ticketService.submitTicket(details)\n .then((data) => {\n if (!data.Success) {\n notify.error('There was an error creating the ticket. Please contact us for assistance.');\n return;\n } else {\n var attachments = $scope.files;\n vm.newTicket.TicketNumber = data.TicketNumber;\n var callback = () => {\n $scope.$applyAsync();\n $rootScope.$broadcast('ticketModalsController:submitted', {});\n\n if (typeof refresh === 'function')\n refresh(true);\n vm.newTicket.modalPage = 'result';\n\n document.querySelectorAll('button').forEach(button => {\n button.disabled = false;\n });\n $scope.accountCtrl.isLoading -= 1;\n };\n\n if (attachments && attachments.length) {\n var funcs = [];\n var i;\n for (i = 0; i < attachments.length; i++) {\n funcs.push(uploadAttachmentFunction(attachments[i], vm.newTicket.TicketNumber, i == attachments.length - 1, callback));\n }\n for (i = funcs.length - 1; i >= 0; i--) {\n funcs[i]();\n }\n } else\n callback();\n }\n\n })\n .catch((err) => {\n notify.error('There was an error creating the ticket. Please contact us for assistance.');\n\n document.querySelectorAll('button').forEach(button => {\n button.disabled = false;\n });\n $scope.accountCtrl.isLoading -= 1;\n });\n }\n\n function uploadAttachmentFunction(attachment, tn, isLast, callback) {\n return () => {\n var fileDetails = {\n FileSize: attachment.size,\n TicketNumber: tn,\n File: attachment\n };\n\n if (isLast) {\n ticketService.sendTicketAttachment(fileDetails)\n .then((data) => {\n if (!data.Success) {\n notify.error('There was an error adding an attachment to the ticket. Please contact us for assistance.');\n return;\n } else {\n $scope.files = [];\n if (typeof callback === 'function') callback();\n }\n });\n\n } else {\n ticketService.sendTicketAttachment(fileDetails)\n .then((data) => {\n if (!data.Success) {\n notify.error('There was an error adding an attachment to the ticket. Please contact us for assistance.');\n return;\n }\n });\n }\n }\n }\n\n function getEmailAddresses() {\n ticketService.getAccountSettings()\n .then(function (data) {\n vm.custAddress = data.Details.EmailAddress;\n vm.userAddress = authenticationService.getLoggedInEmail();\n });\n }\n\n function hasLicenses() {\n return vm.Licenses && (\n (vm.Licenses.SmarterMail && vm.Licenses.SmarterMail.length) ||\n (vm.Licenses.SmarterStats && vm.Licenses.SmarterStats.length) ||\n (vm.Licenses.SmarterTrack && vm.Licenses.SmarterTrack.length));\n }\n\n function hasActiveTrial() {\n return vm.Trials && (\n (vm.Trials.SmarterMail && vm.Trials.SmarterMail.length) ||\n (vm.Trials.SmarterStats && vm.Trials.SmarterStats.length) ||\n (vm.Trials.SmarterTrack && vm.Trials.SmarterTrack.length));\n }\n\n function getLicenses() {\n $scope.accountCtrl.isLoading += 2;\n\n $q\n .all([\n hostingService.getServices(),\n licenseService.getLicensesSupport()\n ])\n .then((arr) => {\n const hostedData = arr[0];\n const licenseData = arr[1];\n\n vm.Licenses = {\n 'SmarterMail': [],\n 'SmarterStats': [],\n 'SmarterTrack': []\n };\n\n vm.Trials = {\n 'SmarterMail': [],\n 'SmarterStats': [],\n 'SmarterTrack': []\n };\n\n const now = new Date();\n\n if (hostedData.Services) {\n for (let i = 0; i < hostedData.Services.length; i++) {\n if (hostedData.Services[i].Status === 'active' ||\n hostedData.Services[i].Status === 'trial') {\n vm.hasHosted = true;\n break;\n }\n }\n }\n for (let idx = 0; idx < licenseData.Licenses.length; idx++) {\n const expires = new Date(licenseData.Licenses[idx].UpgradeProtectionExpiresUtc);\n if (now < expires) {\n const license = licenseData.Licenses[idx];\n license.MaskedKey = license.LicenseKey.substring(0, 6) +\n '-*******-' +\n license.LicenseKey.substring(35);\n\n if (license.ShortProduct.indexOf('SmarterMail') > -1) {\n vm.hasMail = true;\n vm.Licenses.SmarterMail.push(license);\n } else if (license.ShortProduct.indexOf('SmarterTrack') > -1) {\n vm.hasTrack = true;\n vm.Licenses.SmarterTrack.push(license);\n } else if (license.ShortProduct.indexOf('SmarterStats') > -1) {\n vm.hasStats = true;\n vm.Licenses.SmarterStats.push(license);\n }\n }\n }\n for (let jdx = 0; jdx < licenseData.Trials.length; jdx++) {\n const trialExpires = new Date(licenseData.Trials[jdx].TrialExpiresUtc);\n if (now < trialExpires) {\n const trial = licenseData.Trials[jdx];\n trial.MaskedKey = trial.LicenseKey.substring(0, 6) +\n '-*******-' +\n trial.LicenseKey.substring(35);\n\n if (trial.ShortProduct.indexOf('SmarterMail') > -1) {\n vm.hasMail = true;\n vm.Trials.SmarterMail.push(trial);\n } else if (trial.ShortProduct.indexOf('SmarterTrack') > -1) {\n vm.hasTrack = true;\n vm.Trials.SmarterTrack.push(trial);\n } else if (trial.ShortProduct.indexOf('SmarterStats') > -1) {\n vm.hasStats = true;\n vm.Trials.SmarterStats.push(trial);\n }\n }\n }\n\n $scope.accountCtrl.isLoading -= 2;\n\n $scope.$applyAsync();\n })\n .catch((err) => {\n $scope.accountCtrl.isLoading -= 2;\n });\n }\n\n function goToModifyLicense() {\n sessionStorage.setItem('modifyLicense_back',\n JSON.stringify({\n url: $location.$$absUrl,\n display: 'Technical Support'\n }));\n location.href = '/purchase/#/modify-license';\n }\n\n function hideMessage(ticketMessageId) {\n let msgItem;\n for (let i = 0; i < vm.messages.items.length; i++) {\n if (vm.messages.items[i].ReplyId === ticketMessageId) {\n msgItem = vm.messages.items[i];\n break;\n }\n }\n\n if (!msgItem)\n return;\n\n msgItem.Expanded = false;\n }\n\n function needsLicense() {\n if (!vm.newTicket || !vm.newTicket.product || vm.newTicket.product === ''\n || vm.newTicket.product === 'Active Partner' || vm.newTicket.product === 'Hosted SmarterTrack')\n return false;\n\n return true;\n }\n\n function loadLicenses() {\n $scope.$applyAsync();\n }\n\n function refreshViewedTicket() {\n if (!vm.messages || !vm.messages.Ticket)\n return;\n\n ticketService.refreshTicket(vm.messages.Ticket.TicketID)\n .then((result) => {\n if (!result) return;\n\n vm.messages.Ticket = result;\n\n if ($scope && $scope.support) {\n if ($scope.support.openTickets) {\n for (let i = 0; i < $scope.support.openTickets.length; i++) {\n if ($scope.support.openTickets[i].TicketID === vm.messages.Ticket.TicketID) {\n $scope.support.openTickets[i] = result;\n break;\n }\n }\n }\n\n if ($scope.support.allTickets) {\n for (let i = 0; i < $scope.support.allTickets.length; i++) {\n if ($scope.support.allTickets[i].TicketID === vm.messages.Ticket.TicketID) {\n $scope.support.allTickets[i] = result;\n break;\n }\n }\n }\n }\n });\n }\n\n function showMessage(ticketMessageId) {\n let msgItem;\n for (let i = 0; i < vm.messages.items.length; i++) {\n if (vm.messages.items[i].ReplyId === ticketMessageId) {\n msgItem = vm.messages.items[i];\n break;\n }\n }\n\n if (!msgItem)\n return;\n\n if (msgItem.MessageBody) {\n msgItem.Expanded = true;\n return;\n }\n\n $q.all([\n ticketService.getMessageBody(ticketMessageId),\n ticketService.getMessageAttachments(ticketMessageId)\n ])\n .then((arr) => {\n const msg = arr[0];\n const attch = arr[1];\n\n msgItem.Expanded = true;\n msgItem.MessageBody = msg.Body.replace(/\\r/, '')\n .replace(/\\n/g, '
');\n msgItem.Attachments = attch.Attachments;\n\n })\n .catch((err) => {\n notify.error('There was a problem retrieving the ticket message.');\n return;\n });\n }\n\n function showReply() {\n if (!vm.messages)\n return;\n\n vm.messages.page = 'replyTo';\n\n vm.ticketReplyForm.$setPristine();\n vm.ticketReplyForm.$setUntouched();\n\n vm.messages.New = {\n Subject: vm.messages.Ticket.Subject,\n fromEmail: vm.userAddress,\n Body: ''\n };\n\n vm.messages.cancelMessage = cancelTicketReply;\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function startTicket() {\n vm.newTicket = {\n Selections: { Product: 'support' },\n Licenses: [],\n modalPage: 'details',\n fromEmail: vm.custAddress\n };\n if (vm.userAddress !== vm.custAddress)\n vm.newTicket.ccEmail = vm.userAddress;\n\n vm.newTicketForm.$setPristine();\n vm.newTicketForm.$setUntouched();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('new-ticket-modal')).show();\n\n $timeout(() => {\n $scope.$apply();\n RecalculateAllFloatLabelControls();\n });\n }\n\n const newTicketModal = document.getElementById('new-ticket-modal');\n if (newTicketModal)\n newTicketModal.addEventListener('hidden.bs.modal', () => {\n if (vm.startRsaa)\n $rootScope.$broadcast('ticketModalsController:showRsaa', { ticketnumber: vm.newTicket.TicketNumber });\n });\n\n function viewTicket(details) {\n vm.messages = {};\n vm.messages.Ticket = details;\n vm.messages.page = 'view';\n vm.messages.showReply = showReply;\n\n ticketService.getMessages(details.TicketNumber, details.TicketID)\n .then((results) => {\n const msgs = results.Messages;\n msgs.sort((a, b) => {\n if (a.CreationDateUtc > b.CreationDateUtc)\n return -1;\n\n if (a.CreationDateUtc < b.CreationDateUtc)\n return 1;\n\n return 0;\n });\n\n vm.messages.Ticket.StartDateUtc = msgs[msgs.length - 1].CreationDateUtc;\n vm.messages.Ticket.IsLocked = results.IsLocked;\n vm.messages.items = msgs;\n\n showMessage(vm.messages.items[0].ReplyId);\n\n vm.ticketMessagesForm.$setPristine();\n vm.ticketMessagesForm.$setUntouched();\n\n bootstrap.Modal.getOrCreateInstance(document.getElementById('ticket-messages-modal')).show();\n\n $timeout(() => RecalculateAllFloatLabelControls());\n })\n .catch((err) => notify.error('There was a problem retrieving the ticket.'));\n }\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('haBillingReportController',\n [\n '$stateParams', '$scope', '$q', '$timeout', 'highAvailabilityPartnerService', 'partnerService', 'notificationFactory', 'authenticationService', haBillingReportController\n ]);\n\n function haBillingReportController($stateParams, $scope, $q, $timeout, highAvailabilityPartnerService, partnerService, notify, authenticationService) {\n const vm = this;\n vm.licenseId = $stateParams.licenseId;\n\n // Functions\n\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n refreshData();\n }\n\n function refreshData() {\n $scope.accountCtrl.isLoading++;\n highAvailabilityPartnerService.getActiveLicenses()\n .then(\n (licenses) => {\n vm.licenses = licenses;\n vm.license = licenses.find(l => l.LicenseId == vm.licenseId);\n $scope.accountCtrl.isLoading--;\n }\n )\n .catch((e) => {\n if (e.status == 403) {\n window.location.href = '/company/partners';\n return;\n }\n $scope.accountCtrl.isLoading--;\n notify.error('There was a problem loading this information. Please try again later.');\n });\n\n // Load license and callback data and billing info \n\n\n }\n }\n\n})(); ","(function () {\n\n angular\n .module('smartertoolsApp')\n .controller('highAvailabilityLicensesController',\n [\n '$scope', '$q', '$timeout', 'highAvailabilityPartnerService', 'partnerService', 'notificationFactory', 'authenticationService', highAvailabilityLicensesController\n ]);\n\n function highAvailabilityLicensesController($scope, $q, $timeout, highAvailabilityPartnerService, partnerService, notify, authenticationService) {\n const vm = this;\n vm.mode = 'main';\n vm.licenses = null;\n vm.licenseSearch = '';\n vm.currentPage = 1;\n vm.filteredLicenses = null;\n vm.itemsPerPage = 10;\n vm.partnerInfo = null;\n vm.selectedLease = null;\n vm.totalFilteredItems = 0;\n vm.isProcessing = false;\n vm.newLease = {};\n vm.upgradeLease = {};\n vm.emailPattern = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/;\n vm.agreement = {subject: '', body: '', type: '', isAccepted: false};\n vm.startModal = {\n state: 'loading',\n productOptions: [],\n selectedProduct: null,\n selectedAddons: [],\n clusterName: '',\n isSending: false,\n onPage1Next: onPage1Next,\n onPage2Next: onPage2Next,\n recalculatePage1Items: recalculatePage1Items,\n }\n vm.modifyModal = {\n state: 'loading',\n licenseId: null,\n productOptions: [],\n selectedProduct: null,\n selectedAddons: [],\n clusterName: '',\n isSending: false,\n onPage1Next: onModifyPage1Next,\n onPage1Back: onModifyPage1Back,\n onPage2Next: onModifyPage2Next,\n recalculatePage1Items: recalculateModifyPage1Items,\n }\n vm.paging = {page: 1, itemsPerPage: 10};\n\n // Functions\n vm.doLicenseStop = doLicenseStop;\n vm.filter = filter;\n vm.getCsvData = getCsvData;\n vm.getCsvHeader = getCsvHeader;\n vm.recalcStartLeaseItems = recalcStartLeaseItems;\n vm.refreshData = refreshData;\n vm.selectLease = selectLease;\n vm.showBillingDetails = showBillingDetails;\n vm.showHighAvailabilityStart = showHighAvailabilityStart;\n vm.showLicenseStop = showLicenseStop;\n vm.showLicenseUpgrade = showLicenseUpgrade;\n vm.showTermsAgreementOverlay = showTermsAgreementOverlay;\n vm.sort = sort;\n\n activate();\n\n // -----------------------------------------------\n\n function activate() {\n vm.refreshData();\n }\n\n function refreshData() {\n $scope.accountCtrl.isLoading += 2;\n $q.all(\n [\n refreshLicenses(),\n partnerService.getPartnershipDetails()\n ])\n .then((values) => {\n $scope.accountCtrl.isLoading -= 2;\n vm.partnerInfo = values[1];\n })\n .catch((e) => {\n if (e.status == 403) {\n window.location.href = '/company/partners';\n return;\n }\n $scope.accountCtrl.isLoading -= 2;\n notify.error('There was a problem loading this information. Please try again later.');\n });\n }\n\n function filter() {\n $timeout(() => {\n vm.totalFilteredItems = vm.filteredLicenses ? vm.filteredLicenses.length : 0;\n }, 10);\n }\n\n function refreshLicenses() {\n return highAvailabilityPartnerService.getActiveLicenses()\n .then((licenses) => {\n vm.licenses = licenses;\n vm.filter();\n });\n }\n\n function sort(keyName) {\n vm.reverse = vm.sortKey !== keyName || !vm.reverse;\n vm.sortKey = keyName;\n }\n\n function getCsvHeader() {\n return ['Lease ID', 'Start Date', 'Email Address', 'Product', 'Addons', 'Machine Name', 'Last Activated IP', 'Monthly Cost to You', 'Customer Name', 'Custom ID', 'Custom Data'];\n }\n\n function getCsvData() {\n let items = [];\n for (let i = 0; i < vm.licenses.length; i++) {\n const item = vm.licenses[i];\n let addonNames = '';\n for (let j = 0; j < item.Addons.length; j++) {\n const a = item.Addons[j];\n if (addonNames != '')\n addonNames += ', ';\n addonNames += a.MasterProductName == 'Exchange ActiveSync' ? a.Product : a.MasterProductName;\n }\n items.push({\n leaseid: item.LeaseId,\n start: moment(item.StartDate).format(),\n email: item.Email,\n product: item.Product,\n addons: addonNames,\n machineName: item.MachineName,\n lastActivatedIpAddress: item.LastActivatedIpAddress,\n monthlyCost: '$' + item.TotalCost,\n customerName: item.CustomerName,\n customId: item.CustomId,\n customData: item.CustomData,\n\n });\n }\n return items;\n }\n\n function selectLease(item) {\n vm.selectedLeaseMode = 'start';\n vm.selectedLease = item;\n vm.selectedLeaseHistory = null;\n vm.isProcessing = false;\n vm.resendDone = false;\n bootstrap.Tab.getOrCreateInstance(document.getElementById('lease-details-tab')).show();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('ha-license-view-modal')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function showLicenseStop() {\n vm.selectedLeaseMode = 'stop-confirmation';\n }\n\n function showLicenseUpgrade() {\n vm.availableProductInfo = null;\n\n highAvailabilityPartnerService.getProductsAvailable()\n .then((products) => {\n // From startLease\n vm.modifyModal.productOptions = products;\n for (let productOptionIndex in vm.modifyModal.productOptions) {\n let product = vm.modifyModal.productOptions[productOptionIndex];\n if (product.ProductId === vm.selectedLease.ProductId) {\n vm.modifyModal.selectedProduct = product;\n break;\n }\n }\n\n let newAddonIds = [];\n let newAddonIdsIndexed = [];\n let existingAddonSelections = vm.selectedLease.Addons;\n\n for (let addonSelection in existingAddonSelections) {\n let addon = existingAddonSelections[addonSelection];\n newAddonIds.push(addon.ProductId);\n }\n\n for (let addonCategoryIndex in vm.modifyModal.selectedProduct.AddonsByCategory) {\n const addonCategory = vm.modifyModal.selectedProduct.AddonsByCategory[addonCategoryIndex];\n for (let addonOptionIndex in addonCategory.Addons) {\n const addonOption = addonCategory.Addons[addonOptionIndex];\n\n if (newAddonIds.indexOf(addonOption.ProductId) !== -1) {\n newAddonIdsIndexed[addonCategoryIndex] = addonOption.ProductId;\n }\n }\n }\n\n vm.modifyModal.clusterName = vm.selectedLease.CustomData;\n vm.modifyModal.selectedAddons = newAddonIdsIndexed;\n vm.modifyModal.haModifyModalForm.$setPristine();\n vm.modifyModal.haModifyModalForm.$setUntouched();\n vm.modifyModal.state = 'page1';\n bootstrap.Modal.getOrCreateInstance(document.getElementById('ha-license-view-modal')).hide();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('ha-modify-modal')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n })\n .catch((err) => {\n console.error(err);\n bootstrap.Modal.getOrCreateInstance(document.getElementById('ha-license-view-modal')).hide();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('ha-modify-modal')).hide();\n });\n }\n\n\n function doLicenseStop() {\n vm.isProcessing = true;\n highAvailabilityPartnerService.stopLicense(vm.selectedLease.LicenseId)\n .then(async (result) => {\n highAvailabilityPartnerService.clearCache();\n await refreshLicenses();\n vm.isProcessing = false;\n vm.selectedLeaseMode = 'stop-result';\n })\n .catch((err) => {\n vm.isProcessing = false;\n //TODO: notify\n });\n }\n\n function recalcStartLeaseItems() {\n //recalcLeaseItems(vm.newLease);\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function showBillingDetails(license) {\n vm.billingDetailsLicense = license;\n bootstrap.Modal.getOrCreateInstance(document.getElementById('ha-license-view-modal')).hide();\n }\n\n function showTermsAgreementOverlay() {\n authenticationService.getAgreement((data) => {\n vm.agreement.body = data.Body;\n vm.agreement.subject = data.Subject;\n vm.agreement.type = data.Type;\n const modal = bootstrap.Modal.getOrCreateInstance(document.getElementById('ha-partner-agreement-resource'));\n modal.show();\n });\n }\n\n function showHighAvailabilityStart() {\n authenticationService.showTermsCondition((data) => {\n if (data) {\n ShowTermsAgreementOverlay();\n } else {\n highAvailabilityPartnerService.getProductsAvailable()\n .then((products) => {\n vm.startModal.productOptions = products;\n if (products.length === 1)\n vm.startModal.selectedProduct = products[0];\n vm.startModal.haStartModalForm.$setPristine();\n vm.startModal.haStartModalForm.$setUntouched();\n vm.startModal.state = 'page1';\n bootstrap.Modal.getOrCreateInstance(document.getElementById('ha-start-modal')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n });\n }\n });\n }\n\n function onPage1Next() {\n if (vm.startModal.haStartModalForm.$invalid)\n return;\n\n try {\n let priceNotes = [];\n vm.startModal.isSending = true;\n\n // Run through all options, and calculate pricing notes\n const addonsByCategory = vm.startModal.selectedProduct.AddonsByCategory;\n for (let addonIndex in addonsByCategory) {\n let addonByCategory = addonsByCategory[addonIndex].Addons;\n for (let productIndex in addonByCategory) {\n let product = addonByCategory[productIndex];\n if (vm.startModal.selectedAddons[addonIndex] == product.ProductId) {\n priceNotes.push(product)\n }\n }\n }\n\n vm.startModal.selectedProduct.PriceNotes = priceNotes;\n vm.startModal.state = 'page2';\n } finally {\n vm.startModal.isSending = false;\n }\n\n }\n\n function onPage2Next() {\n if (vm.startModal.haStartModalForm.$invalid)\n return;\n\n let addonIds = [];\n for (let addonCategoryKey in vm.startModal.selectedAddons) {\n if (!vm.startModal.selectedAddons.hasOwnProperty(addonCategoryKey)) continue;\n\n const addonId = vm.startModal.selectedAddons[addonCategoryKey];\n if (!addonId)\n continue;\n addonIds.push(addonId);\n }\n\n highAvailabilityPartnerService.startLicense(vm.startModal.clusterName, vm.startModal.selectedProduct.ProductId, addonIds)\n .then(async (result) => {\n highAvailabilityPartnerService.clearCache();\n await refreshLicenses();\n vm.startModal.result = result;\n vm.startModal.isSending = false;\n vm.startModal.done = true;\n vm.startModal.state = 'page3';\n })\n .catch((err) => {\n vm.startModal.isSending = false;\n });\n }\n\n function recalculatePage1Items() {\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function onModifyPage1Back() {\n bootstrap.Modal.getOrCreateInstance(document.getElementById('ha-modify-modal')).hide();\n bootstrap.Modal.getOrCreateInstance(document.getElementById('ha-license-view-modal')).show();\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n function onModifyPage1Next() {\n if (vm.modifyModal.haModifyModalForm.$invalid)\n return;\n\n try {\n let priceNotes = [];\n vm.modifyModal.isSending = true;\n\n // Run through all options, and calculate pricing notes\n const addonsByCategory = vm.modifyModal.selectedProduct.AddonsByCategory;\n for (let addonIndex in addonsByCategory) {\n let addonByCategory = addonsByCategory[addonIndex].Addons;\n for (let productIndex in addonByCategory) {\n let product = addonByCategory[productIndex];\n if (vm.modifyModal.selectedAddons[addonIndex] == product.ProductId) {\n priceNotes.push(product)\n }\n }\n }\n\n vm.modifyModal.selectedProduct.PriceNotes = priceNotes;\n vm.modifyModal.state = 'page2';\n } finally {\n vm.modifyModal.isSending = false;\n }\n\n }\n\n function onModifyPage2Next() {\n if (vm.modifyModal.haModifyModalForm.$invalid)\n return;\n\n let addonIds = [];\n for (let addonCategoryKey in vm.modifyModal.selectedAddons) {\n if (!vm.modifyModal.selectedAddons.hasOwnProperty(addonCategoryKey)) continue;\n\n const addonId = vm.modifyModal.selectedAddons[addonCategoryKey];\n if (!addonId)\n continue;\n addonIds.push(addonId);\n }\n\n highAvailabilityPartnerService.modifyLicense(vm.selectedLease.LicenseId, vm.modifyModal.clusterName, vm.modifyModal.selectedProduct.ProductId, addonIds)\n .then(async (result) => {\n highAvailabilityPartnerService.clearCache();\n await refreshLicenses();\n vm.modifyModal.result = result;\n vm.modifyModal.isSending = false;\n vm.modifyModal.done = true;\n vm.modifyModal.state = 'page3';\n })\n .catch((err) => {\n vm.modifyModal.isSending = false;\n });\n }\n\n function recalculateModifyPage1Items() {\n $timeout(() => RecalculateAllFloatLabelControls());\n }\n\n }\n\n})();","(function () {\n\n angular\n .module('smartertoolsApp')\n .factory('highAvailabilityPartnerService', ['$http', 'refreshToken', 'cacheControl', '$rootScope', highAvailabilityPartnerService]);\n\n function highAvailabilityPartnerService($http, refreshToken, cacheControl, $rootScope) {\n const urlBase = apiRootUrl;\n let getActiveLicensesPromise;\n let getProductsAvailablePromise;\n\n return {\n clearCache: clearCache,\n getActiveLicenses: getActiveLicenses,\n getProductsAvailable: getProductsAvailable,\n startLicense: startLicense,\n stopLicense: stopLicense,\n modifyLicense: modifyLicense,\n };\n\n // -----------------------------------------------\n\n function clearCache() {\n cacheControl.getCache('myAccountCache').remove(`${urlBase}v1/account/high-availability/active`);\n }\n\n function getActiveLicenses() {\n if (getActiveLicensesPromise)\n return getActiveLicensesPromise;\n getActiveLicensesPromise = refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/high-availability/active`, {cache: cacheControl.getCache('myAccountCache')}))\n .then((response) => {\n getActiveLicensesPromise = null;\n return response.data.Licenses;\n });\n return getActiveLicensesPromise;\n }\n\n function getProductsAvailable() {\n if (getProductsAvailablePromise)\n return getProductsAvailablePromise;\n getProductsAvailablePromise = refreshToken.refreshToken()\n .then(() => $http.get(`${urlBase}v1/account/high-availability/product-table`, { cache: cacheControl.getCache('myAccountCache') }))\n .then((response) => {\n getProductsAvailablePromise = null;\n return response.data.Products;\n });\n return getProductsAvailablePromise;\n }\n\n function startLicense(referenceData, productId, addonIds) {\n return refreshToken.refreshToken()\n .then(() => $http.post(`${urlBase}v1/account/high-availability/start`,\n JSON.stringify({\n ReferenceData: referenceData,\n ProductId: productId,\n AddonIds: addonIds\n })))\n .then((response) => {\n cacheControl.clearAllCaches();\n $rootScope.$broadcast('cache-clear', {});\n return response.data;\n });\n }\n\n function stopLicense(leaseId) {\n return refreshToken.refreshToken()\n .then(() => $http.post(`${urlBase}v1/account/high-availability/${leaseId}/stop`))\n .then((response) => {\n cacheControl.clearAllCaches();\n $rootScope.$broadcast('cache-clear', {});\n return response.data;\n });\n }\n\n function modifyLicense(licenseId, referenceData, productId, addonIds) {\n return refreshToken.refreshToken()\n .then(() => $http.post(`${urlBase}v1/account/high-availability/modify`,\n JSON.stringify({\n LicenseId: licenseId,\n ReferenceData: referenceData,\n ProductId: productId,\n AddonIds: addonIds\n })))\n .then((response) => {\n cacheControl.clearAllCaches();\n $rootScope.$broadcast('cache-clear', {});\n return response.data;\n });\n }\n }\n\n})();"]}