{"version":3,"file":"main.js","mappings":"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","sources":["webpack://pingman.account/webpack/runtime/chunk loaded","webpack://pingman.account/./ReactApp/components/Alert.tsx","webpack://pingman.account/./ReactApp/models/api.ts","webpack://pingman.account/./ReactApp/context/AuthContext.tsx","webpack://pingman.account/./ReactApp/appSettings.ts","webpack://pingman.account/./ReactApp/components/Loader.tsx","webpack://pingman.account/./ReactApp/components/User/ChangePassword.tsx","webpack://pingman.account/./ReactApp/components/Layout/UserDropdown.tsx","webpack://pingman.account/./ReactApp/utils/BaseURL.ts","webpack://pingman.account/./ReactApp/components/Layout/MainNav.tsx","webpack://pingman.account/./ReactApp/models/OrderItemType.ts","webpack://pingman.account/./ReactApp/context/OrderContext.tsx","webpack://pingman.account/./ReactApp/utils/use-fastspring/useScript.ts","webpack://pingman.account/./ReactApp/utils/use-fastspring/index.ts","webpack://pingman.account/./ReactApp/context/CheckoutContext.tsx","webpack://pingman.account/./ReactApp/components/Layout/Checkout.tsx","webpack://pingman.account/./ReactApp/components/Layout/ShoppingCart.tsx","webpack://pingman.account/./ReactApp/context/CloudConnectContext.tsx","webpack://pingman.account/./ReactApp/components/Layout/SecondNav.tsx","webpack://pingman.account/./ReactApp/components/Layout/PageFooter.tsx","webpack://pingman.account/./ReactApp/containers/Layout.tsx","webpack://pingman.account/./ReactApp/models/LicenseTypes.ts","webpack://pingman.account/./ReactApp/context/KeycodesContext.tsx","webpack://pingman.account/./ReactApp/components/HomePage/ProductSummaryCard.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/EditableAccountName.tsx","webpack://pingman.account/./ReactApp/components/HomePage/CloudConnectGetStartedCard.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/SessionsStatusBar.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AgentsStatusBar.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AccountStatusBar.tsx","webpack://pingman.account/./ReactApp/containers/CloudConnectSummaryCard.tsx","webpack://pingman.account/./ReactApp/Containers/MultiProductCell.tsx","webpack://pingman.account/./ReactApp/containers/TempPasswordNag.tsx","webpack://pingman.account/./ReactApp/components/LicenseListPage/LicenseCard.tsx","webpack://pingman.account/./ReactApp/components/LicenseDetailPage/MaintButton.tsx","webpack://pingman.account/./ReactApp/components/LicenseDetailPage/MaintCard.tsx","webpack://pingman.account/./ReactApp/components/LicenseDetailPage/SubsCard.tsx","webpack://pingman.account/./ReactApp/context/ReleasesContext.tsx","webpack://pingman.account/./ReactApp/components/ReactTable/PlatformNameDisplay.tsx","webpack://pingman.account/./ReactApp/utils/ReleaseHelpers.ts","webpack://pingman.account/./ReactApp/components/LicenseDetailPage/DownloadList.tsx","webpack://pingman.account/./ReactApp/components/LicenseDetailPage/DownloadsCard.tsx","webpack://pingman.account/./ReactApp/containers/SingleProductCell.tsx","webpack://pingman.account/./ReactApp/containers/HomePage.tsx","webpack://pingman.account/./ReactApp/components/Login/LoginForm.tsx","webpack://pingman.account/./ReactApp/containers/LoginPage.tsx","webpack://pingman.account/./ReactApp/components/ProtectedRoute.tsx","webpack://pingman.account/./ReactApp/components/LicenseDetailPage/LicenseButton.tsx","webpack://pingman.account/./ReactApp/components/LicenseDetailPage/LicenseCard.tsx","webpack://pingman.account/./ReactApp/components/LicenseDetailPage/ConvertCard.tsx","webpack://pingman.account/./ReactApp/components/LicenseDetailPage/LicenseCell.tsx","webpack://pingman.account/./ReactApp/containers/LicenseDetailView.tsx","webpack://pingman.account/./ReactApp/components/LicenseListPage/LIcenseGrid.tsx","webpack://pingman.account/./ReactApp/components/LicenseListPage/LicenseList.tsx","webpack://pingman.account/./ReactApp/containers/LicenseListPage.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AgentSetup/CreateAgentForm.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AgentSetup/CreateFirstAgentForCluster.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AgentSetup/FinishCreatingControllerToCreateAgent.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/EditableAgentName.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/VersionGroupDropdown.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AgentListDetails.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AgentList.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AgentSetup/CreateYourFirstTrace.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AgentSetup/ManageAgentButton.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AgentSetup/UnconfiguredAgentCard.tsx","webpack://pingman.account/./ReactApp/components/Utils/ButtonSafety/ButtonWithConfirmationModal.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AgentViewerTargetDetails.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AgentViewer.tsx","webpack://pingman.account/./ReactApp/context/CloudConnectContactsContext.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/ContactManagement/ManageContactsList.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/ContactManagement/InviteContactForm.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/ContactManagement/ManageContactsModal.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/AccountStatusCard.tsx","webpack://pingman.account/./ReactApp/components/CloudConnect/EditAccountLimitsButton.tsx","webpack://pingman.account/./ReactApp/containers/CloudConnectDetailView.tsx","webpack://pingman.account/./ReactApp/utils/Pricing.ts","webpack://pingman.account/./ReactApp/components/CloudConnect/CloudConnectSubscriptionCard.tsx","webpack://pingman.account/./ReactApp/containers/CloudConnectPlanPicker.tsx","webpack://pingman.account/./ReactApp/containers/CloudConnectSelectPlan.tsx","webpack://pingman.account/./ReactApp/components/Reports/VersionGroupEditor.tsx","webpack://pingman.account/./ReactApp/components/Reports/VersionGroups.tsx","webpack://pingman.account/./ReactApp/components/OrderEditor/AccountKeySelectDropdown.tsx","webpack://pingman.account/./ReactApp/components/OrderEditor/OrderItemSelectDropdown.tsx","webpack://pingman.account/./ReactApp/components/OrderEditor/TermSelectDropdown.tsx","webpack://pingman.account/./ReactApp/components/OrderEditor/ExtraFieldNumberEditor.tsx","webpack://pingman.account/./ReactApp/components/OrderEditor/CustomOrderEditor.tsx","webpack://pingman.account/./ReactApp/components/Quotes/Quote.tsx","webpack://pingman.account/./ReactApp/app.tsx","webpack://pingman.account/./ReactApp/index.tsx","webpack://pingman.account/webpack/bootstrap","webpack://pingman.account/webpack/runtime/compat get default export","webpack://pingman.account/webpack/runtime/define property getters","webpack://pingman.account/webpack/runtime/global","webpack://pingman.account/webpack/runtime/hasOwnProperty shorthand","webpack://pingman.account/webpack/runtime/make namespace object","webpack://pingman.account/webpack/runtime/jsonp chunk loading","webpack://pingman.account/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import * as React from 'react'\nimport ReactSAlert from 'react-s-alert'\n\nexport interface IAlertProps {\n stack: any\n position: string\n effect: string\n timeout: number\n}\n\nconst Alert: React.StatelessComponent = (props) => {\n return \n}\n\nexport default Alert\n","/* tslint:disable */\n/* eslint-disable */\n//----------------------\n// \n// Generated using the NSwag toolchain v13.8.2.0 (NJsonSchema v10.2.1.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n// ReSharper disable InconsistentNaming\n\nimport axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\n\nexport class AccountController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n login(model: LoginModel): Promise {\n let url_ = this.baseUrl + \"/api/Account/Login\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(model);\n\n let options_ = {\n data: content_,\n method: \"POST\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processLogin(_response);\n });\n }\n\n protected processLogin(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = ServiceUser.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n logout(): Promise {\n let url_ = this.baseUrl + \"/api/Account/Logout\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n responseType: \"blob\",\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processLogout(_response);\n });\n }\n\n protected processLogout(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n return Promise.resolve({ fileName: fileName, status: status, data: response.data as Blob, headers: _headers });\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n logout2(): Promise {\n let url_ = this.baseUrl + \"/api/Account/Logout\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n responseType: \"blob\",\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processLogout2(_response);\n });\n }\n\n protected processLogout2(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n return Promise.resolve({ fileName: fileName, status: status, data: response.data as Blob, headers: _headers });\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n sendForgotPasswordEmail(Params: SendPasswordParams): Promise {\n let url_ = this.baseUrl + \"/api/Account/SendForgotPasswordEmail\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(Params);\n\n let options_ = {\n data: content_,\n responseType: \"blob\",\n method: \"POST\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processSendForgotPasswordEmail(_response);\n });\n }\n\n protected processSendForgotPasswordEmail(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n return Promise.resolve({ fileName: fileName, status: status, data: response.data as Blob, headers: _headers });\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getCurrentUser(): Promise {\n let url_ = this.baseUrl + \"/api/Account/GetCurrentUser\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetCurrentUser(_response);\n });\n }\n\n protected processGetCurrentUser(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = ServiceUser.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n changeEmailAddress(newAddress: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Account/ChangeEmailAddress?\";\n if (newAddress !== undefined)\n url_ += \"newAddress=\" + encodeURIComponent(\"\" + newAddress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processChangeEmailAddress(_response);\n });\n }\n\n protected processChangeEmailAddress(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = ServiceUser.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n changePassword(newPassword: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Account/ChangePassword?\";\n if (newPassword !== undefined)\n url_ += \"newPassword=\" + encodeURIComponent(\"\" + newPassword) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processChangePassword(_response);\n });\n }\n\n protected processChangePassword(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = ServiceUser.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n impersonateUser(impersonateEmail: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Account/ImpersonateUser?\";\n if (impersonateEmail !== undefined)\n url_ += \"impersonateEmail=\" + encodeURIComponent(\"\" + impersonateEmail) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processImpersonateUser(_response);\n });\n }\n\n protected processImpersonateUser(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = ServiceUser.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class CerebroController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n getItemsWithPrices(): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/pricing\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetItemsWithPrices(_response);\n });\n }\n\n protected processGetItemsWithPrices(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(OrderItemDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getCloudConnectAccountInfo(accountId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/account/{accountId}\";\n if (accountId === undefined || accountId === null)\n throw new Error(\"The parameter 'accountId' must be defined.\");\n url_ = url_.replace(\"{accountId}\", encodeURIComponent(\"\" + accountId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetCloudConnectAccountInfo(_response);\n });\n }\n\n protected processGetCloudConnectAccountInfo(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectAccountsDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getAllCloudConnectAccounts(): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/all-accounts\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetAllCloudConnectAccounts(_response);\n });\n }\n\n protected processGetAllCloudConnectAccounts(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CloudConnectAccountsDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n updateCloudSubscription(accountId: string | null, qty: number): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/account/{accountId}/update\";\n if (accountId === undefined || accountId === null)\n throw new Error(\"The parameter 'accountId' must be defined.\");\n url_ = url_.replace(\"{accountId}\", encodeURIComponent(\"\" + accountId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(qty);\n\n let options_ = {\n data: content_,\n method: \"POST\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processUpdateCloudSubscription(_response);\n });\n }\n\n protected processUpdateCloudSubscription(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getCloudConnectPaymentManagementURL(accountId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/account/{accountId}/manage\";\n if (accountId === undefined || accountId === null)\n throw new Error(\"The parameter 'accountId' must be defined.\");\n url_ = url_.replace(\"{accountId}\", encodeURIComponent(\"\" + accountId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetCloudConnectPaymentManagementURL(_response);\n });\n }\n\n protected processGetCloudConnectPaymentManagementURL(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getVersionGroups(): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/GetVersionGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetVersionGroups(_response);\n });\n }\n\n protected processGetVersionGroups(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(VersionGroupDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n updateVersionGroup(updatedVersionGroup: VersionGroupDTO): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/UpdateVersionGroup\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(updatedVersionGroup);\n\n let options_ = {\n data: content_,\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processUpdateVersionGroup(_response);\n });\n }\n\n protected processUpdateVersionGroup(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = VersionGroupDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n createVersionGroup(newVersionGroup: VersionGroupDTO): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/CreateVersionGroup\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(newVersionGroup);\n\n let options_ = {\n data: content_,\n method: \"POST\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCreateVersionGroup(_response);\n });\n }\n\n protected processCreateVersionGroup(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = VersionGroupDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n setVersionGroupAsDefault(versionGroupUniqueId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/SetVersionGroupAsDefault?\";\n if (versionGroupUniqueId !== undefined)\n url_ += \"versionGroupUniqueId=\" + encodeURIComponent(\"\" + versionGroupUniqueId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processSetVersionGroupAsDefault(_response);\n });\n }\n\n protected processSetVersionGroupAsDefault(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = VersionGroupDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n deleteVersionGroup(versionGroupUniqueId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/DeleteVersionGroup?\";\n if (versionGroupUniqueId !== undefined)\n url_ += \"versionGroupUniqueId=\" + encodeURIComponent(\"\" + versionGroupUniqueId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"DELETE\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processDeleteVersionGroup(_response);\n });\n }\n\n protected processDeleteVersionGroup(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getAgentProgramReleases(): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/GetAgentProgramReleases\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetAgentProgramReleases(_response);\n });\n }\n\n protected processGetAgentProgramReleases(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ProgramReleaseDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n createNewCloudConnectAccount(emailAddress: string | null | undefined, userName: string | null | undefined, companyName: string | null | undefined, sessionLimit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/cerebro/CreateNewCloudConnectAccount?\";\n if (emailAddress !== undefined)\n url_ += \"emailAddress=\" + encodeURIComponent(\"\" + emailAddress) + \"&\";\n if (userName !== undefined)\n url_ += \"userName=\" + encodeURIComponent(\"\" + userName) + \"&\";\n if (companyName !== undefined)\n url_ += \"companyName=\" + encodeURIComponent(\"\" + companyName) + \"&\";\n if (sessionLimit === null)\n throw new Error(\"The parameter 'sessionLimit' cannot be null.\");\n else if (sessionLimit !== undefined)\n url_ += \"sessionLimit=\" + encodeURIComponent(\"\" + sessionLimit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCreateNewCloudConnectAccount(_response);\n });\n }\n\n protected processCreateNewCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectAccountsDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class CloudConnectAccountController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n cloudConnectAccounts(): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCloudConnectAccounts(_response);\n });\n }\n\n protected processCloudConnectAccounts(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CloudConnectAccountsDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n createCloudConnectTrialAccount(): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/trial\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCreateCloudConnectTrialAccount(_response);\n });\n }\n\n protected processCreateCloudConnectTrialAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectAccountsDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getContactsForCloudConnectAccount(cloudconnectAccount: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/contacts\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetContactsForCloudConnectAccount(_response);\n });\n }\n\n protected processGetContactsForCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CloudConnectAccountContactDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n associateContactWithCloudConnectAccount(cloudconnectAccount: string | null, contactEmail: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/contacts?\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (contactEmail !== undefined)\n url_ += \"contactEmail=\" + encodeURIComponent(\"\" + contactEmail) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processAssociateContactWithCloudConnectAccount(_response);\n });\n }\n\n protected processAssociateContactWithCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectAccountContactDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n revokeContactsAccessToCloudConnectAccount(cloudconnectAccount: string | null, contactEmail: string): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/contacts\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(contactEmail);\n\n let options_ = {\n data: content_,\n method: \"DELETE\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processRevokeContactsAccessToCloudConnectAccount(_response);\n });\n }\n\n protected processRevokeContactsAccessToCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n role(cloudconnectAccount: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/role\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processRole(_response);\n });\n }\n\n protected processRole(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectAccountContactRoleDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n updateRoleForContact(cloudconnectAccount: string | null, emailAddress: string | null, newRole: CloudConnectAccountContactRoleDTO): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/contacts/{emailAddress}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (emailAddress === undefined || emailAddress === null)\n throw new Error(\"The parameter 'emailAddress' must be defined.\");\n url_ = url_.replace(\"{emailAddress}\", encodeURIComponent(\"\" + emailAddress));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(newRole);\n\n let options_ = {\n data: content_,\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processUpdateRoleForContact(_response);\n });\n }\n\n protected processUpdateRoleForContact(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectAccountContactDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getContactRolesForCloudConnectAccount(cloudconnectAccount: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/roles\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetContactRolesForCloudConnectAccount(_response);\n });\n }\n\n protected processGetContactRolesForCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CloudConnectAccountContactRoleDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n createContactRoleForCloudConnectAccount(cloudconnectAccount: string | null, role: CloudConnectAccountContactRoleDTO): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/roles\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(role);\n\n let options_ = {\n data: content_,\n method: \"POST\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCreateContactRoleForCloudConnectAccount(_response);\n });\n }\n\n protected processCreateContactRoleForCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectAccountContactRoleDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n updateRoleForCloudConnectAccount(cloudconnectAccount: string | null, oldName: string | null, updatedRole: CloudConnectAccountContactRoleDTO): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/roles/{oldName}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (oldName === undefined || oldName === null)\n throw new Error(\"The parameter 'oldName' must be defined.\");\n url_ = url_.replace(\"{oldName}\", encodeURIComponent(\"\" + oldName));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(updatedRole);\n\n let options_ = {\n data: content_,\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processUpdateRoleForCloudConnectAccount(_response);\n });\n }\n\n protected processUpdateRoleForCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectAccountContactRoleDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n deleteRoleForCloudConnectAccount(cloudconnectAccount: string | null, name: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/roles/{name}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (name === undefined || name === null)\n throw new Error(\"The parameter 'name' must be defined.\");\n url_ = url_.replace(\"{name}\", encodeURIComponent(\"\" + name));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"DELETE\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processDeleteRoleForCloudConnectAccount(_response);\n });\n }\n\n protected processDeleteRoleForCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getPermissionSetsForCloudConnectAccount(cloudconnectAccount: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/permissions\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetPermissionSetsForCloudConnectAccount(_response);\n });\n }\n\n protected processGetPermissionSetsForCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CloudConnectAccountPermissionSetDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n modifyLimitsForBetaCloudConnectAccount(cloudconnectAccount: string | null, newSessionLimit: number | undefined, newAgentLimit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/change-limit?\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (newSessionLimit === null)\n throw new Error(\"The parameter 'newSessionLimit' cannot be null.\");\n else if (newSessionLimit !== undefined)\n url_ += \"newSessionLimit=\" + encodeURIComponent(\"\" + newSessionLimit) + \"&\";\n if (newAgentLimit === null)\n throw new Error(\"The parameter 'newAgentLimit' cannot be null.\");\n else if (newAgentLimit !== undefined)\n url_ += \"newAgentLimit=\" + encodeURIComponent(\"\" + newAgentLimit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processModifyLimitsForBetaCloudConnectAccount(_response);\n });\n }\n\n protected processModifyLimitsForBetaCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectAccountsDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n createMagnetoActivator(cloudconnectAccount: string | null, name: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/magnetoactivators?\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (name !== undefined)\n url_ += \"name=\" + encodeURIComponent(\"\" + name) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCreateMagnetoActivator(_response);\n });\n }\n\n protected processCreateMagnetoActivator(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectMagnetoActivatorsDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n magnetoActivator(cloudconnectAccount: string | null, activatorId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/magnetoactivators/{activatorId}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (activatorId === undefined || activatorId === null)\n throw new Error(\"The parameter 'activatorId' must be defined.\");\n url_ = url_.replace(\"{activatorId}\", encodeURIComponent(\"\" + activatorId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processMagnetoActivator(_response);\n });\n }\n\n protected processMagnetoActivator(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectMagnetoActivatorsDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n deleteMagnetoActivator(cloudconnectAccount: string | null, activatorId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/cloudconnectaccounts/{cloudconnectAccount}/magnetoactivators/{activatorId}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (activatorId === undefined || activatorId === null)\n throw new Error(\"The parameter 'activatorId' must be defined.\");\n url_ = url_.replace(\"{activatorId}\", encodeURIComponent(\"\" + activatorId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"DELETE\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processDeleteMagnetoActivator(_response);\n });\n }\n\n protected processDeleteMagnetoActivator(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n magnetoActivatorsForAccount(cloudconnectAccount: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectAccount/magnetoactivators/{cloudconnectAccount}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processMagnetoActivatorsForAccount(_response);\n });\n }\n\n protected processMagnetoActivatorsForAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CloudConnectMagnetoActivatorsDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class CloudConnectEntitlementController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n activateMagneto(magnetoId: string | null | undefined, activationId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectEntitlement/ActivateMagneto?\";\n if (magnetoId !== undefined)\n url_ += \"magnetoId=\" + encodeURIComponent(\"\" + magnetoId) + \"&\";\n if (activationId !== undefined)\n url_ += \"activationId=\" + encodeURIComponent(\"\" + activationId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processActivateMagneto(_response);\n });\n }\n\n protected processActivateMagneto(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectMagnetoActivationResult.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getRelease(platform: number | undefined, version: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectEntitlement/GetRelease?\";\n if (platform === null)\n throw new Error(\"The parameter 'platform' cannot be null.\");\n else if (platform !== undefined)\n url_ += \"platform=\" + encodeURIComponent(\"\" + platform) + \"&\";\n if (version !== undefined)\n url_ += \"version=\" + encodeURIComponent(\"\" + version) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n responseType: \"blob\",\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetRelease(_response);\n });\n }\n\n protected processGetRelease(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n return Promise.resolve({ fileName: fileName, status: status, data: response.data as Blob, headers: _headers });\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getVersionGroups(): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectEntitlement/GetVersionGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetVersionGroups(_response);\n });\n }\n\n protected processGetVersionGroups(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(VersionGroupDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getVersionNumberForVersionGroupAndPlatform(versionGroupUniqueId: string | null | undefined, platform: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectEntitlement/GetVersionForVersionGroup?\";\n if (versionGroupUniqueId !== undefined)\n url_ += \"versionGroupUniqueId=\" + encodeURIComponent(\"\" + versionGroupUniqueId) + \"&\";\n if (platform === null)\n throw new Error(\"The parameter 'platform' cannot be null.\");\n else if (platform !== undefined)\n url_ += \"platform=\" + encodeURIComponent(\"\" + platform) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetVersionNumberForVersionGroupAndPlatform(_response);\n });\n }\n\n protected processGetVersionNumberForVersionGroupAndPlatform(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n actionGetEntitlement(accountId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectEntitlement/GetEntitlement/{accountId}\";\n if (accountId === undefined || accountId === null)\n throw new Error(\"The parameter 'accountId' must be defined.\");\n url_ = url_.replace(\"{accountId}\", encodeURIComponent(\"\" + accountId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processActionGetEntitlement(_response);\n });\n }\n\n protected processActionGetEntitlement(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = EntitlementResults.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n magnetoEntitlement(magnetoId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectEntitlement/magneto/{magnetoId}\";\n if (magnetoId === undefined || magnetoId === null)\n throw new Error(\"The parameter 'magnetoId' must be defined.\");\n url_ = url_.replace(\"{magnetoId}\", encodeURIComponent(\"\" + magnetoId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processMagnetoEntitlement(_response);\n });\n }\n\n protected processMagnetoEntitlement(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectMagnetoEntitlementResult.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getCloudConnectAccountForLicenseKey(licenseKey: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectEntitlement/migrate?\";\n if (licenseKey !== undefined)\n url_ += \"licenseKey=\" + encodeURIComponent(\"\" + licenseKey) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetCloudConnectAccountForLicenseKey(_response);\n });\n }\n\n protected processGetCloudConnectAccountForLicenseKey(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class CloudConnectSupportController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n getVersionGroups(): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectSupport/CloudConnectSupport/VersionGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetVersionGroups(_response);\n });\n }\n\n protected processGetVersionGroups(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(VersionGroupDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n updateVersionGroup(updatedVersionGroup: VersionGroupDTO): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectSupport/CloudConnectSupport/VersionGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(updatedVersionGroup);\n\n let options_ = {\n data: content_,\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processUpdateVersionGroup(_response);\n });\n }\n\n protected processUpdateVersionGroup(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = VersionGroupDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n createVersionGroup(newVersionGroup: VersionGroupDTO): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectSupport/CloudConnectSupport/VersionGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(newVersionGroup);\n\n let options_ = {\n data: content_,\n method: \"POST\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCreateVersionGroup(_response);\n });\n }\n\n protected processCreateVersionGroup(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = VersionGroupDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n setVersionGroupAsDefault(versionGroupUniqueId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectSupport/CloudConnectSupport/VersionGroups/{versionGroupUniqueId}/set-as-default\";\n if (versionGroupUniqueId === undefined || versionGroupUniqueId === null)\n throw new Error(\"The parameter 'versionGroupUniqueId' must be defined.\");\n url_ = url_.replace(\"{versionGroupUniqueId}\", encodeURIComponent(\"\" + versionGroupUniqueId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processSetVersionGroupAsDefault(_response);\n });\n }\n\n protected processSetVersionGroupAsDefault(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = VersionGroupDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n deleteVersionGroup(versionGroupUniqueId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectSupport/CloudConnectSupport/VersionGroups/{versionGroupUniqueId}\";\n if (versionGroupUniqueId === undefined || versionGroupUniqueId === null)\n throw new Error(\"The parameter 'versionGroupUniqueId' must be defined.\");\n url_ = url_.replace(\"{versionGroupUniqueId}\", encodeURIComponent(\"\" + versionGroupUniqueId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"DELETE\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processDeleteVersionGroup(_response);\n });\n }\n\n protected processDeleteVersionGroup(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getContactsForCloudConnectAccount(cloudconnectAccount: string | null): Promise {\n let url_ = this.baseUrl + \"/api/CloudConnectSupport/CloudConnectSupport/GetContactsForCloudConnectAccount/{cloudconnectAccount}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetContactsForCloudConnectAccount(_response);\n });\n }\n\n protected processGetContactsForCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ContactDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class CodegenController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n index(): Promise {\n let url_ = this.baseUrl + \"/api/Codegen\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processIndex(_response);\n });\n }\n\n protected processIndex(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n cSharp(): Promise {\n let url_ = this.baseUrl + \"/api/Codegen/CSharp\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCSharp(_response);\n });\n }\n\n protected processCSharp(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class FastspringCallbackController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n processEventId(eventId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/FastspringCallback/ProcessEventId?\";\n if (eventId !== undefined)\n url_ += \"eventId=\" + encodeURIComponent(\"\" + eventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processProcessEventId(_response);\n });\n }\n\n protected processProcessEventId(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n processEvent(type: string | null | undefined, data: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/FastspringCallback/ProcessEvent?\";\n if (type !== undefined)\n url_ += \"type=\" + encodeURIComponent(\"\" + type) + \"&\";\n if (data !== undefined)\n url_ += \"data=\" + encodeURIComponent(\"\" + data) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processProcessEvent(_response);\n });\n }\n\n protected processProcessEvent(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n webhook(): Promise {\n let url_ = this.baseUrl + \"/FastspringCallback/Webhook\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processWebhook(_response);\n });\n }\n\n protected processWebhook(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n generateLicense(formatted: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/FastspringCallback/GenerateLicense?\";\n if (formatted === null)\n throw new Error(\"The parameter 'formatted' cannot be null.\");\n else if (formatted !== undefined)\n url_ += \"formatted=\" + encodeURIComponent(\"\" + formatted) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGenerateLicense(_response);\n });\n }\n\n protected processGenerateLicense(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class HomeController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n download(searchCode: string | null, releaseId: number, embed: boolean, filename: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/Download/{searchcode}/{releaseId}/{embed}?\";\n if (searchCode === undefined || searchCode === null)\n throw new Error(\"The parameter 'searchCode' must be defined.\");\n url_ = url_.replace(\"{searchCode}\", encodeURIComponent(\"\" + searchCode));\n if (releaseId === undefined || releaseId === null)\n throw new Error(\"The parameter 'releaseId' must be defined.\");\n url_ = url_.replace(\"{releaseId}\", encodeURIComponent(\"\" + releaseId));\n if (embed === undefined || embed === null)\n throw new Error(\"The parameter 'embed' must be defined.\");\n url_ = url_.replace(\"{embed}\", encodeURIComponent(\"\" + embed));\n if (filename !== undefined)\n url_ += \"filename=\" + encodeURIComponent(\"\" + filename) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n responseType: \"blob\",\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processDownload(_response);\n });\n }\n\n protected processDownload(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n return Promise.resolve({ fileName: fileName, status: status, data: response.data as Blob, headers: _headers });\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n downloadAgent(configLinkID: string | null, platform: number | undefined, dummyFilename: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/DownloadAgent/{configLinkID}?\";\n if (configLinkID === undefined || configLinkID === null)\n throw new Error(\"The parameter 'configLinkID' must be defined.\");\n url_ = url_.replace(\"{configLinkID}\", encodeURIComponent(\"\" + configLinkID));\n if (platform === null)\n throw new Error(\"The parameter 'platform' cannot be null.\");\n else if (platform !== undefined)\n url_ += \"platform=\" + encodeURIComponent(\"\" + platform) + \"&\";\n if (dummyFilename !== undefined)\n url_ += \"dummyFilename=\" + encodeURIComponent(\"\" + dummyFilename) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n responseType: \"blob\",\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processDownloadAgent(_response);\n });\n }\n\n protected processDownloadAgent(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n return Promise.resolve({ fileName: fileName, status: status, data: response.data as Blob, headers: _headers });\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class KeycodesController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n getKeycodes(): Promise {\n let url_ = this.baseUrl + \"/api/Keycodes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetKeycodes(_response);\n });\n }\n\n protected processGetKeycodes(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(KeycodesDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getKeycode(searchCode: string | null): Promise {\n let url_ = this.baseUrl + \"/api/Keycodes/{searchCode}\";\n if (searchCode === undefined || searchCode === null)\n throw new Error(\"The parameter 'searchCode' must be defined.\");\n url_ = url_.replace(\"{searchCode}\", encodeURIComponent(\"\" + searchCode));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetKeycode(_response);\n });\n }\n\n protected processGetKeycode(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = KeycodesDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getKeycodeDetails(searchcode: string | null): Promise {\n let url_ = this.baseUrl + \"/api/Keycodes/Details/{searchcode}\";\n if (searchcode === undefined || searchcode === null)\n throw new Error(\"The parameter 'searchcode' must be defined.\");\n url_ = url_.replace(\"{searchcode}\", encodeURIComponent(\"\" + searchcode));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetKeycodeDetails(_response);\n });\n }\n\n protected processGetKeycodeDetails(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = KeycodeDetailsDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getReleases(): Promise {\n let url_ = this.baseUrl + \"/api/Keycodes/GetReleases\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetReleases(_response);\n });\n }\n\n protected processGetReleases(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ProgramReleaseDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class MagHubController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n getClustersForCloudConnectAccount(cloudconnectAccount: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/clusters\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetClustersForCloudConnectAccount(_response);\n });\n }\n\n protected processGetClustersForCloudConnectAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ClusterInfo.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getAgentsForCluster(cloudconnectAccount: string | null, clusterID: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/clusters/{clusterID}/agents\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (clusterID === undefined || clusterID === null)\n throw new Error(\"The parameter 'clusterID' must be defined.\");\n url_ = url_.replace(\"{clusterID}\", encodeURIComponent(\"\" + clusterID));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetAgentsForCluster(_response);\n });\n }\n\n protected processGetAgentsForCluster(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(SentinelInfo.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getCluster(cloudconnectAccount: string | null, clusterID: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/clusters/{clusterID}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (clusterID === undefined || clusterID === null)\n throw new Error(\"The parameter 'clusterID' must be defined.\");\n url_ = url_.replace(\"{clusterID}\", encodeURIComponent(\"\" + clusterID));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetCluster(_response);\n });\n }\n\n protected processGetCluster(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = ClusterInfo.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n createCluster(cloudconnectAccount: string | null, name: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/createcluster\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (name !== null && name !== undefined)\n content_.append(\"name\", name.toString());\n\n let options_ = {\n data: content_,\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCreateCluster(_response);\n });\n }\n\n protected processCreateCluster(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = ClusterInfo.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getAgent(cloudconnectAccount: string | null, agentId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/agents/{agentId}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (agentId === undefined || agentId === null)\n throw new Error(\"The parameter 'agentId' must be defined.\");\n url_ = url_.replace(\"{agentId}\", encodeURIComponent(\"\" + agentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetAgent(_response);\n });\n }\n\n protected processGetAgent(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = SentinelInfo.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n agentDownloadLink(cloudconnectAccount: string | null, agentId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/agents/{agentId}/download-link\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (agentId === undefined || agentId === null)\n throw new Error(\"The parameter 'agentId' must be defined.\");\n url_ = url_.replace(\"{agentId}\", encodeURIComponent(\"\" + agentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processAgentDownloadLink(_response);\n });\n }\n\n protected processAgentDownloadLink(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getAgentActivationLink(cloudconnectAccount: string | null, agentId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/agents/{agentId}/activation-link\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (agentId === undefined || agentId === null)\n throw new Error(\"The parameter 'agentId' must be defined.\");\n url_ = url_.replace(\"{agentId}\", encodeURIComponent(\"\" + agentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetAgentActivationLink(_response);\n });\n }\n\n protected processGetAgentActivationLink(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n createAgentForCluster(cloudconnectAccount: string | null, clusterID: string | null, name: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/clusters/{clusterID}/createagent\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (clusterID === undefined || clusterID === null)\n throw new Error(\"The parameter 'clusterID' must be defined.\");\n url_ = url_.replace(\"{clusterID}\", encodeURIComponent(\"\" + clusterID));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (name !== null && name !== undefined)\n content_.append(\"name\", name.toString());\n\n let options_ = {\n data: content_,\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCreateAgentForCluster(_response);\n });\n }\n\n protected processCreateAgentForCluster(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = SentinelInfo.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getTargetsForCluster(cloudconnectAccount: string | null, clusterId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/clusters/{clusterId}/targets\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (clusterId === undefined || clusterId === null)\n throw new Error(\"The parameter 'clusterId' must be defined.\");\n url_ = url_.replace(\"{clusterId}\", encodeURIComponent(\"\" + clusterId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetTargetsForCluster(_response);\n });\n }\n\n protected processGetTargetsForCluster(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(SessionInfo.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n editAgent(cloudconnectAccount: string | null, info: SentinelInfo): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/agents\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(info);\n\n let options_ = {\n data: content_,\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processEditAgent(_response);\n });\n }\n\n protected processEditAgent(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = SentinelInfo.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n clearMachineIDForSentinel(cloudconnectAccount: string | null, id: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/agents/{id}/clearmachineid\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processClearMachineIDForSentinel(_response);\n });\n }\n\n protected processClearMachineIDForSentinel(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = SentinelInfo.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n editCluster(cloudconnectAccount: string | null, clusterId: string | null, cluster: ClusterInfo): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/clusters/{clusterId}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (clusterId === undefined || clusterId === null)\n throw new Error(\"The parameter 'clusterId' must be defined.\");\n url_ = url_.replace(\"{clusterId}\", encodeURIComponent(\"\" + clusterId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(cluster);\n\n let options_ = {\n data: content_,\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processEditCluster(_response);\n });\n }\n\n protected processEditCluster(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = ClusterInfo.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n renameAccount(cloudconnectAccount: string | null, name: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/rename/{cloudconnectAccount}?\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (name !== undefined)\n url_ += \"name=\" + encodeURIComponent(\"\" + name) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"PATCH\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processRenameAccount(_response);\n });\n }\n\n protected processRenameAccount(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n deleteCluster(cloudconnectAccount: string | null, id: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/clusters/{id}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"DELETE\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processDeleteCluster(_response);\n });\n }\n\n protected processDeleteCluster(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n deleteAgent(cloudconnectAccount: string | null, id: string | null, uninstall: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/agents/{id}?\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (uninstall === null)\n throw new Error(\"The parameter 'uninstall' cannot be null.\");\n else if (uninstall !== undefined)\n url_ += \"uninstall=\" + encodeURIComponent(\"\" + uninstall) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"DELETE\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processDeleteAgent(_response);\n });\n }\n\n protected processDeleteAgent(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n deleteTarget(cloudconnectAccount: string | null, id: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/targets/{id}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"DELETE\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processDeleteTarget(_response);\n });\n }\n\n protected processDeleteTarget(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n forceAgentToReconnect(cloudconnectAccount: string | null, id: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/agents/{id}/force-reconnect\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processForceAgentToReconnect(_response);\n });\n }\n\n protected processForceAgentToReconnect(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n requestSupportTicketFromSentinel(cloudconnectAccount: string | null, sentinelID: string | null): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/agents/{sentinelID}/request-support-ticket\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (sentinelID === undefined || sentinelID === null)\n throw new Error(\"The parameter 'sentinelID' must be defined.\");\n url_ = url_.replace(\"{sentinelID}\", encodeURIComponent(\"\" + sentinelID));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processRequestSupportTicketFromSentinel(_response);\n });\n }\n\n protected processRequestSupportTicketFromSentinel(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getVersionGroups(): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/GetVersionGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetVersionGroups(_response);\n });\n }\n\n protected processGetVersionGroups(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(VersionGroupDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n pauseOveruseSessions(cloudconnectAccount: string | null, limit: number): Promise {\n let url_ = this.baseUrl + \"/api/MagHub/account/{cloudconnectAccount}/pauseoverusesessions/{limit}\";\n if (cloudconnectAccount === undefined || cloudconnectAccount === null)\n throw new Error(\"The parameter 'cloudconnectAccount' must be defined.\");\n url_ = url_.replace(\"{cloudconnectAccount}\", encodeURIComponent(\"\" + cloudconnectAccount));\n if (limit === undefined || limit === null)\n throw new Error(\"The parameter 'limit' must be defined.\");\n url_ = url_.replace(\"{limit}\", encodeURIComponent(\"\" + limit));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processPauseOveruseSessions(_response);\n });\n }\n\n protected processPauseOveruseSessions(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class OrderController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n cloudConnectSubscriptionStatus(accountId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/Order/CloudConnectSubscriptionStatus/{accountId}\";\n if (accountId === undefined || accountId === null)\n throw new Error(\"The parameter 'accountId' must be defined.\");\n url_ = url_.replace(\"{accountId}\", encodeURIComponent(\"\" + accountId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n responseType: \"blob\",\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCloudConnectSubscriptionStatus(_response);\n });\n }\n\n protected processCloudConnectSubscriptionStatus(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n return Promise.resolve({ fileName: fileName, status: status, data: response.data as Blob, headers: _headers });\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n uncancelSubscription(subscriptionID: string | null): Promise {\n let url_ = this.baseUrl + \"/api/Order/UncancelSubscription/{subscriptionID}\";\n if (subscriptionID === undefined || subscriptionID === null)\n throw new Error(\"The parameter 'subscriptionID' must be defined.\");\n url_ = url_.replace(\"{subscriptionID}\", encodeURIComponent(\"\" + subscriptionID));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processUncancelSubscription(_response);\n });\n }\n\n protected processUncancelSubscription(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n cancelSubscription(searchCode: string | null): Promise {\n let url_ = this.baseUrl + \"/api/Order/CancelSubscription/{searchCode}\";\n if (searchCode === undefined || searchCode === null)\n throw new Error(\"The parameter 'searchCode' must be defined.\");\n url_ = url_.replace(\"{searchCode}\", encodeURIComponent(\"\" + searchCode));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCancelSubscription(_response);\n });\n }\n\n protected processCancelSubscription(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n createNewCloudConnectSubscription(accountId: string | null, qty: number): Promise {\n let url_ = this.baseUrl + \"/api/Order/CreateNewCloudConnectSubscription/{accountId}/{qty}\";\n if (accountId === undefined || accountId === null)\n throw new Error(\"The parameter 'accountId' must be defined.\");\n url_ = url_.replace(\"{accountId}\", encodeURIComponent(\"\" + accountId));\n if (qty === undefined || qty === null)\n throw new Error(\"The parameter 'qty' must be defined.\");\n url_ = url_.replace(\"{qty}\", encodeURIComponent(\"\" + qty));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCreateNewCloudConnectSubscription(_response);\n });\n }\n\n protected processCreateNewCloudConnectSubscription(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CheckoutDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n changeCloudConnectSubscription(accountId: string | null, qty: number): Promise {\n let url_ = this.baseUrl + \"/api/Order/ChangeCloudConnectSubscription/{accountId}/{qty}\";\n if (accountId === undefined || accountId === null)\n throw new Error(\"The parameter 'accountId' must be defined.\");\n url_ = url_.replace(\"{accountId}\", encodeURIComponent(\"\" + accountId));\n if (qty === undefined || qty === null)\n throw new Error(\"The parameter 'qty' must be defined.\");\n url_ = url_.replace(\"{qty}\", encodeURIComponent(\"\" + qty));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processChangeCloudConnectSubscription(_response);\n });\n }\n\n protected processChangeCloudConnectSubscription(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n publishSignalRUpdated(accountId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/Order/PublishSignalRUpdated/{accountId}\";\n if (accountId === undefined || accountId === null)\n throw new Error(\"The parameter 'accountId' must be defined.\");\n url_ = url_.replace(\"{accountId}\", encodeURIComponent(\"\" + accountId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processPublishSignalRUpdated(_response);\n });\n }\n\n protected processPublishSignalRUpdated(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n resyncCloudconnectSubscription(accountId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/Order/ResyncCloudconnectSubscription/{accountId}\";\n if (accountId === undefined || accountId === null)\n throw new Error(\"The parameter 'accountId' must be defined.\");\n url_ = url_.replace(\"{accountId}\", encodeURIComponent(\"\" + accountId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"PATCH\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processResyncCloudconnectSubscription(_response);\n });\n }\n\n protected processResyncCloudconnectSubscription(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = CloudConnectAccountsDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getCloudConnectPaymentManagementURL(accountId: string | null): Promise {\n let url_ = this.baseUrl + \"/api/Order/GetCloudConnectPaymentManagementURL/{accountId}\";\n if (accountId === undefined || accountId === null)\n throw new Error(\"The parameter 'accountId' must be defined.\");\n url_ = url_.replace(\"{accountId}\", encodeURIComponent(\"\" + accountId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetCloudConnectPaymentManagementURL(_response);\n });\n }\n\n protected processGetCloudConnectPaymentManagementURL(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n addQtyToKeycode(searchcode: string | null, itemtype: number, qty: number): Promise {\n let url_ = this.baseUrl + \"/api/Order/AddQtyToKeycode/{searchcode}/{itemtype}/{qty}\";\n if (searchcode === undefined || searchcode === null)\n throw new Error(\"The parameter 'searchcode' must be defined.\");\n url_ = url_.replace(\"{searchcode}\", encodeURIComponent(\"\" + searchcode));\n if (itemtype === undefined || itemtype === null)\n throw new Error(\"The parameter 'itemtype' must be defined.\");\n url_ = url_.replace(\"{itemtype}\", encodeURIComponent(\"\" + itemtype));\n if (qty === undefined || qty === null)\n throw new Error(\"The parameter 'qty' must be defined.\");\n url_ = url_.replace(\"{qty}\", encodeURIComponent(\"\" + qty));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processAddQtyToKeycode(_response);\n });\n }\n\n protected processAddQtyToKeycode(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n addOrderLineRaw(newOrderLine: OrderLinesDTO): Promise {\n let url_ = this.baseUrl + \"/api/Order/AddOrderLineRaw\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(newOrderLine);\n\n let options_ = {\n data: content_,\n method: \"POST\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processAddOrderLineRaw(_response);\n });\n }\n\n protected processAddOrderLineRaw(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = OrderLinesDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n updateOrderLineRaw(updatedLine: OrderLinesDTO): Promise {\n let url_ = this.baseUrl + \"/api/Order/UpdateOrderLineRaw\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(updatedLine);\n\n let options_ = {\n data: content_,\n method: \"POST\",\n url: url_,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processUpdateOrderLineRaw(_response);\n });\n }\n\n protected processUpdateOrderLineRaw(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = OrderLinesDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n removeItemTypeFromKey(searchcode: string | null, itemtype: number): Promise {\n let url_ = this.baseUrl + \"/api/Order/RemoveItemTypeFromKey/{searchcode}/{itemtype}\";\n if (searchcode === undefined || searchcode === null)\n throw new Error(\"The parameter 'searchcode' must be defined.\");\n url_ = url_.replace(\"{searchcode}\", encodeURIComponent(\"\" + searchcode));\n if (itemtype === undefined || itemtype === null)\n throw new Error(\"The parameter 'itemtype' must be defined.\");\n url_ = url_.replace(\"{itemtype}\", encodeURIComponent(\"\" + itemtype));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"DELETE\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processRemoveItemTypeFromKey(_response);\n });\n }\n\n protected processRemoveItemTypeFromKey(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n removeItemsByProductAndType(productCode: string | null, itemtype: number): Promise {\n let url_ = this.baseUrl + \"/api/Order/RemoveItemsByProductAndType/{productCode}/{itemtype}\";\n if (productCode === undefined || productCode === null)\n throw new Error(\"The parameter 'productCode' must be defined.\");\n url_ = url_.replace(\"{productCode}\", encodeURIComponent(\"\" + productCode));\n if (itemtype === undefined || itemtype === null)\n throw new Error(\"The parameter 'itemtype' must be defined.\");\n url_ = url_.replace(\"{itemtype}\", encodeURIComponent(\"\" + itemtype));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"DELETE\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processRemoveItemsByProductAndType(_response);\n });\n }\n\n protected processRemoveItemsByProductAndType(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n removeItemEntryFromOrder(entry: number): Promise {\n let url_ = this.baseUrl + \"/api/Order/RemoveItemEntryFromOrder/{entry}\";\n if (entry === undefined || entry === null)\n throw new Error(\"The parameter 'entry' must be defined.\");\n url_ = url_.replace(\"{entry}\", encodeURIComponent(\"\" + entry));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"DELETE\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processRemoveItemEntryFromOrder(_response);\n });\n }\n\n protected processRemoveItemEntryFromOrder(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getOrder(): Promise {\n let url_ = this.baseUrl + \"/api/Order/GetOrder\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetOrder(_response);\n });\n }\n\n protected processGetOrder(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(OrderLinesDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n createQuote(): Promise {\n let url_ = this.baseUrl + \"/api/Order/CreateQuote\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCreateQuote(_response);\n });\n }\n\n protected processCreateQuote(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = resultData200 !== undefined ? resultData200 : null;\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n createOrderFromQuote(QuoteID: string | null): Promise {\n let url_ = this.baseUrl + \"/api/Order/CreateOrderFromQuote/{QuoteID}\";\n if (QuoteID === undefined || QuoteID === null)\n throw new Error(\"The parameter 'QuoteID' must be defined.\");\n url_ = url_.replace(\"{QuoteID}\", encodeURIComponent(\"\" + QuoteID));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCreateOrderFromQuote(_response);\n });\n }\n\n protected processCreateOrderFromQuote(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n clearCart(): Promise {\n let url_ = this.baseUrl + \"/api/Order/ClearCart\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processClearCart(_response);\n });\n }\n\n protected processClearCart(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n lockFastspringOrder(testMode: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Order/LockFastspringOrder?\";\n if (testMode === null)\n throw new Error(\"The parameter 'testMode' cannot be null.\");\n else if (testMode !== undefined)\n url_ += \"testMode=\" + encodeURIComponent(\"\" + testMode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processLockFastspringOrder(_response);\n });\n }\n\n protected processLockFastspringOrder(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CheckoutDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getItemsWithPrices(): Promise {\n let url_ = this.baseUrl + \"/api/Order/GetItemsWithPrices\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"GET\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetItemsWithPrices(_response);\n });\n }\n\n protected processGetItemsWithPrices(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(OrderItemDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n completeFastspringOrder(orderId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Order/CompleteFastspringOrder?\";\n if (orderId !== undefined)\n url_ += \"orderId=\" + encodeURIComponent(\"\" + orderId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processCompleteFastspringOrder(_response);\n });\n }\n\n protected processCompleteFastspringOrder(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n return Promise.resolve(null);\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class QuoteController {\n private instance: AxiosInstance;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, instance?: AxiosInstance) {\n this.instance = instance ? instance : axios;\n this.baseUrl = baseUrl ? baseUrl : \"\";\n }\n\n buildSecureFastspringOrder(QuoteID: string | null): Promise {\n let url_ = this.baseUrl + \"/api/Quote/BuildSecureFastspringOrder/{QuoteID}\";\n if (QuoteID === undefined || QuoteID === null)\n throw new Error(\"The parameter 'QuoteID' must be defined.\");\n url_ = url_.replace(\"{QuoteID}\", encodeURIComponent(\"\" + QuoteID));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processBuildSecureFastspringOrder(_response);\n });\n }\n\n protected processBuildSecureFastspringOrder(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CheckoutDTO.fromJS(item));\n }\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n\n getQuote(QuoteID: string | null): Promise {\n let url_ = this.baseUrl + \"/api/Quote/GetQuote/{QuoteID}\";\n if (QuoteID === undefined || QuoteID === null)\n throw new Error(\"The parameter 'QuoteID' must be defined.\");\n url_ = url_.replace(\"{QuoteID}\", encodeURIComponent(\"\" + QuoteID));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ = {\n method: \"POST\",\n url: url_,\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.instance.request(options_).then((_response: AxiosResponse) => {\n return this.processGetQuote(_response);\n });\n }\n\n protected processGetQuote(response: AxiosResponse): Promise {\n const status = response.status;\n let _headers: any = {};\n if (response.headers && typeof response.headers === \"object\") {\n for (let k in response.headers) {\n if (response.headers.hasOwnProperty(k)) {\n _headers[k] = response.headers[k];\n }\n }\n }\n if (status === 200) {\n //@ts-ignore\n const _responseText = response.data;\n let result200: any = null;\n let resultData200 = _responseText;\n result200 = QuoteDTO.fromJS(resultData200);\n return result200;\n } else if (status !== 200 && status !== 204) {\n //@ts-ignore\n const _responseText = response.data;\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }\n return Promise.resolve(null);\n }\n}\n\nexport class ServiceUser implements IServiceUser {\n Username!: string | undefined;\n EmailAddress!: string | undefined;\n Message!: string | undefined;\n Roles!: string[] | undefined;\n IsImpersonating!: boolean;\n IsUsingTempPassword!: boolean;\n\n constructor(data?: IServiceUser) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Username = _data[\"Username\"];\n this.EmailAddress = _data[\"EmailAddress\"];\n this.Message = _data[\"Message\"];\n if (Array.isArray(_data[\"Roles\"])) {\n this.Roles = [] as any;\n for (let item of _data[\"Roles\"])\n this.Roles!.push(item);\n }\n this.IsImpersonating = _data[\"IsImpersonating\"];\n this.IsUsingTempPassword = _data[\"IsUsingTempPassword\"];\n }\n }\n\n static fromJS(data: any): ServiceUser {\n data = typeof data === 'object' ? data : {};\n let result = new ServiceUser();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Username\"] = this.Username;\n data[\"EmailAddress\"] = this.EmailAddress;\n data[\"Message\"] = this.Message;\n if (Array.isArray(this.Roles)) {\n data[\"Roles\"] = [];\n for (let item of this.Roles)\n data[\"Roles\"].push(item);\n }\n data[\"IsImpersonating\"] = this.IsImpersonating;\n data[\"IsUsingTempPassword\"] = this.IsUsingTempPassword;\n return data;\n }\n}\n\nexport interface IServiceUser {\n Username: string | undefined;\n EmailAddress: string | undefined;\n Message: string | undefined;\n Roles: string[] | undefined;\n IsImpersonating: boolean;\n IsUsingTempPassword: boolean;\n}\n\nexport class LoginModel implements ILoginModel {\n Login!: string | undefined;\n Password!: string | undefined;\n RememberMe!: boolean;\n\n constructor(data?: ILoginModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Login = _data[\"Login\"];\n this.Password = _data[\"Password\"];\n this.RememberMe = _data[\"RememberMe\"];\n }\n }\n\n static fromJS(data: any): LoginModel {\n data = typeof data === 'object' ? data : {};\n let result = new LoginModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Login\"] = this.Login;\n data[\"Password\"] = this.Password;\n data[\"RememberMe\"] = this.RememberMe;\n return data;\n }\n}\n\nexport interface ILoginModel {\n Login: string | undefined;\n Password: string | undefined;\n RememberMe: boolean;\n}\n\nexport class SendPasswordParams implements ISendPasswordParams {\n Login!: string | undefined;\n ForceEvenIfRecentlySent!: boolean;\n\n constructor(data?: ISendPasswordParams) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Login = _data[\"Login\"];\n this.ForceEvenIfRecentlySent = _data[\"ForceEvenIfRecentlySent\"];\n }\n }\n\n static fromJS(data: any): SendPasswordParams {\n data = typeof data === 'object' ? data : {};\n let result = new SendPasswordParams();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Login\"] = this.Login;\n data[\"ForceEvenIfRecentlySent\"] = this.ForceEvenIfRecentlySent;\n return data;\n }\n}\n\nexport interface ISendPasswordParams {\n Login: string | undefined;\n ForceEvenIfRecentlySent: boolean;\n}\n\nexport class OrderItemDTO implements IOrderItemDTO {\n Id!: number;\n Name!: string | undefined;\n ShortName!: string | undefined;\n AdditionalText!: string | undefined;\n SellerPartNumber!: string | undefined;\n Program!: number;\n Type!: number;\n CustomPricingRule!: string | undefined;\n CanAddToPortalOrder!: boolean;\n Prices!: number[][] | undefined;\n\n constructor(data?: IOrderItemDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Id = _data[\"Id\"];\n this.Name = _data[\"Name\"];\n this.ShortName = _data[\"ShortName\"];\n this.AdditionalText = _data[\"AdditionalText\"];\n this.SellerPartNumber = _data[\"SellerPartNumber\"];\n this.Program = _data[\"Program\"];\n this.Type = _data[\"Type\"];\n this.CustomPricingRule = _data[\"CustomPricingRule\"];\n this.CanAddToPortalOrder = _data[\"CanAddToPortalOrder\"];\n if (Array.isArray(_data[\"Prices\"])) {\n this.Prices = [] as any;\n for (let item of _data[\"Prices\"])\n this.Prices!.push(item);\n }\n }\n }\n\n static fromJS(data: any): OrderItemDTO {\n data = typeof data === 'object' ? data : {};\n let result = new OrderItemDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Id\"] = this.Id;\n data[\"Name\"] = this.Name;\n data[\"ShortName\"] = this.ShortName;\n data[\"AdditionalText\"] = this.AdditionalText;\n data[\"SellerPartNumber\"] = this.SellerPartNumber;\n data[\"Program\"] = this.Program;\n data[\"Type\"] = this.Type;\n data[\"CustomPricingRule\"] = this.CustomPricingRule;\n data[\"CanAddToPortalOrder\"] = this.CanAddToPortalOrder;\n if (Array.isArray(this.Prices)) {\n data[\"Prices\"] = [];\n for (let item of this.Prices)\n data[\"Prices\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IOrderItemDTO {\n Id: number;\n Name: string | undefined;\n ShortName: string | undefined;\n AdditionalText: string | undefined;\n SellerPartNumber: string | undefined;\n Program: number;\n Type: number;\n CustomPricingRule: string | undefined;\n CanAddToPortalOrder: boolean;\n Prices: number[][] | undefined;\n}\n\nexport class CloudConnectAccountsDTO implements ICloudConnectAccountsDTO {\n UniqueId!: string | undefined;\n AgentLimit!: number;\n SessionLimit!: number;\n Name!: string | undefined;\n SubscriptionBegin!: Date | undefined;\n SubscriptionEnd!: Date | undefined;\n SubscriptionRenewalDate!: Date | undefined;\n SubscriptionRenewalMonths!: number | undefined;\n SubscriptionGracePeriod!: number | undefined;\n SubscriptionPaymentExpiration!: Date | undefined;\n SubscriptionStatusMessage!: string | undefined;\n SubscriptionRenewalPrice!: number | undefined;\n SubscriptionId!: string | undefined;\n SellerOrderId!: string | undefined;\n SubcriptionSellerId!: number | undefined;\n SubscriptionStatus!: SubscriptionStatusDTO | undefined;\n RemoteBundle!: boolean | undefined;\n RequiresSalesIntervention!: boolean | undefined;\n ProductType!: ProductType | undefined;\n\n constructor(data?: ICloudConnectAccountsDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.UniqueId = _data[\"UniqueId\"];\n this.AgentLimit = _data[\"AgentLimit\"];\n this.SessionLimit = _data[\"SessionLimit\"];\n this.Name = _data[\"Name\"];\n this.SubscriptionBegin = _data[\"SubscriptionBegin\"] ? new Date(_data[\"SubscriptionBegin\"].toString()) : undefined;\n this.SubscriptionEnd = _data[\"SubscriptionEnd\"] ? new Date(_data[\"SubscriptionEnd\"].toString()) : undefined;\n this.SubscriptionRenewalDate = _data[\"SubscriptionRenewalDate\"] ? new Date(_data[\"SubscriptionRenewalDate\"].toString()) : undefined;\n this.SubscriptionRenewalMonths = _data[\"SubscriptionRenewalMonths\"];\n this.SubscriptionGracePeriod = _data[\"SubscriptionGracePeriod\"];\n this.SubscriptionPaymentExpiration = _data[\"SubscriptionPaymentExpiration\"] ? new Date(_data[\"SubscriptionPaymentExpiration\"].toString()) : undefined;\n this.SubscriptionStatusMessage = _data[\"SubscriptionStatusMessage\"];\n this.SubscriptionRenewalPrice = _data[\"SubscriptionRenewalPrice\"];\n this.SubscriptionId = _data[\"SubscriptionId\"];\n this.SellerOrderId = _data[\"SellerOrderId\"];\n this.SubcriptionSellerId = _data[\"SubcriptionSellerId\"];\n this.SubscriptionStatus = _data[\"SubscriptionStatus\"];\n this.RemoteBundle = _data[\"RemoteBundle\"];\n this.RequiresSalesIntervention = _data[\"RequiresSalesIntervention\"];\n this.ProductType = _data[\"ProductType\"];\n }\n }\n\n static fromJS(data: any): CloudConnectAccountsDTO {\n data = typeof data === 'object' ? data : {};\n let result = new CloudConnectAccountsDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"UniqueId\"] = this.UniqueId;\n data[\"AgentLimit\"] = this.AgentLimit;\n data[\"SessionLimit\"] = this.SessionLimit;\n data[\"Name\"] = this.Name;\n data[\"SubscriptionBegin\"] = this.SubscriptionBegin ? this.SubscriptionBegin.toISOString() : undefined;\n data[\"SubscriptionEnd\"] = this.SubscriptionEnd ? this.SubscriptionEnd.toISOString() : undefined;\n data[\"SubscriptionRenewalDate\"] = this.SubscriptionRenewalDate ? this.SubscriptionRenewalDate.toISOString() : undefined;\n data[\"SubscriptionRenewalMonths\"] = this.SubscriptionRenewalMonths;\n data[\"SubscriptionGracePeriod\"] = this.SubscriptionGracePeriod;\n data[\"SubscriptionPaymentExpiration\"] = this.SubscriptionPaymentExpiration ? this.SubscriptionPaymentExpiration.toISOString() : undefined;\n data[\"SubscriptionStatusMessage\"] = this.SubscriptionStatusMessage;\n data[\"SubscriptionRenewalPrice\"] = this.SubscriptionRenewalPrice;\n data[\"SubscriptionId\"] = this.SubscriptionId;\n data[\"SellerOrderId\"] = this.SellerOrderId;\n data[\"SubcriptionSellerId\"] = this.SubcriptionSellerId;\n data[\"SubscriptionStatus\"] = this.SubscriptionStatus;\n data[\"RemoteBundle\"] = this.RemoteBundle;\n data[\"RequiresSalesIntervention\"] = this.RequiresSalesIntervention;\n data[\"ProductType\"] = this.ProductType;\n return data;\n }\n}\n\nexport interface ICloudConnectAccountsDTO {\n UniqueId: string | undefined;\n AgentLimit: number;\n SessionLimit: number;\n Name: string | undefined;\n SubscriptionBegin: Date | undefined;\n SubscriptionEnd: Date | undefined;\n SubscriptionRenewalDate: Date | undefined;\n SubscriptionRenewalMonths: number | undefined;\n SubscriptionGracePeriod: number | undefined;\n SubscriptionPaymentExpiration: Date | undefined;\n SubscriptionStatusMessage: string | undefined;\n SubscriptionRenewalPrice: number | undefined;\n SubscriptionId: string | undefined;\n SellerOrderId: string | undefined;\n SubcriptionSellerId: number | undefined;\n SubscriptionStatus: SubscriptionStatusDTO | undefined;\n RemoteBundle: boolean | undefined;\n RequiresSalesIntervention: boolean | undefined;\n ProductType: ProductType | undefined;\n}\n\nexport enum SubscriptionStatusDTO {\n Active = 0,\n Cancelled = 1,\n Terminated = 2,\n Failed = 3,\n}\n\nexport enum ProductType {\n Unknown = 0,\n Flex = 1,\n Sidekick = 2,\n}\n\nexport class VersionGroupDTO implements IVersionGroupDTO {\n Name!: string | undefined;\n UniqueId!: string | undefined;\n Public!: boolean;\n IsDefault!: boolean;\n Releases!: ProgramReleaseDTO[] | undefined;\n\n constructor(data?: IVersionGroupDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Name = _data[\"Name\"];\n this.UniqueId = _data[\"UniqueId\"];\n this.Public = _data[\"Public\"];\n this.IsDefault = _data[\"IsDefault\"];\n if (Array.isArray(_data[\"Releases\"])) {\n this.Releases = [] as any;\n for (let item of _data[\"Releases\"])\n this.Releases!.push(ProgramReleaseDTO.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): VersionGroupDTO {\n data = typeof data === 'object' ? data : {};\n let result = new VersionGroupDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Name\"] = this.Name;\n data[\"UniqueId\"] = this.UniqueId;\n data[\"Public\"] = this.Public;\n data[\"IsDefault\"] = this.IsDefault;\n if (Array.isArray(this.Releases)) {\n data[\"Releases\"] = [];\n for (let item of this.Releases)\n data[\"Releases\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IVersionGroupDTO {\n Name: string | undefined;\n UniqueId: string | undefined;\n Public: boolean;\n IsDefault: boolean;\n Releases: ProgramReleaseDTO[] | undefined;\n}\n\nexport class ProgramReleaseDTO implements IProgramReleaseDTO {\n Id!: number;\n Description!: string | undefined;\n Program!: number;\n ProgramCode!: string | undefined;\n Platform!: number;\n PlatformName!: string | undefined;\n VersionNumber!: string | undefined;\n VersionMatchString!: string | undefined;\n ReleaseDate!: Date;\n EligibilityDate!: Date;\n Prerelease!: boolean;\n Major!: boolean;\n OkForAgentDownload!: boolean;\n EmbedLicense!: boolean;\n PublicDownloadName!: string | undefined;\n PrivateDownloadTemplate!: string | undefined;\n ReleaseNotesUrl!: string | undefined;\n\n constructor(data?: IProgramReleaseDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Id = _data[\"Id\"];\n this.Description = _data[\"Description\"];\n this.Program = _data[\"Program\"];\n this.ProgramCode = _data[\"ProgramCode\"];\n this.Platform = _data[\"Platform\"];\n this.PlatformName = _data[\"PlatformName\"];\n this.VersionNumber = _data[\"VersionNumber\"];\n this.VersionMatchString = _data[\"VersionMatchString\"];\n this.ReleaseDate = _data[\"ReleaseDate\"] ? new Date(_data[\"ReleaseDate\"].toString()) : undefined;\n this.EligibilityDate = _data[\"EligibilityDate\"] ? new Date(_data[\"EligibilityDate\"].toString()) : undefined;\n this.Prerelease = _data[\"Prerelease\"];\n this.Major = _data[\"Major\"];\n this.OkForAgentDownload = _data[\"OkForAgentDownload\"];\n this.EmbedLicense = _data[\"EmbedLicense\"];\n this.PublicDownloadName = _data[\"PublicDownloadName\"];\n this.PrivateDownloadTemplate = _data[\"PrivateDownloadTemplate\"];\n this.ReleaseNotesUrl = _data[\"ReleaseNotesUrl\"];\n }\n }\n\n static fromJS(data: any): ProgramReleaseDTO {\n data = typeof data === 'object' ? data : {};\n let result = new ProgramReleaseDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Id\"] = this.Id;\n data[\"Description\"] = this.Description;\n data[\"Program\"] = this.Program;\n data[\"ProgramCode\"] = this.ProgramCode;\n data[\"Platform\"] = this.Platform;\n data[\"PlatformName\"] = this.PlatformName;\n data[\"VersionNumber\"] = this.VersionNumber;\n data[\"VersionMatchString\"] = this.VersionMatchString;\n data[\"ReleaseDate\"] = this.ReleaseDate ? this.ReleaseDate.toISOString() : undefined;\n data[\"EligibilityDate\"] = this.EligibilityDate ? this.EligibilityDate.toISOString() : undefined;\n data[\"Prerelease\"] = this.Prerelease;\n data[\"Major\"] = this.Major;\n data[\"OkForAgentDownload\"] = this.OkForAgentDownload;\n data[\"EmbedLicense\"] = this.EmbedLicense;\n data[\"PublicDownloadName\"] = this.PublicDownloadName;\n data[\"PrivateDownloadTemplate\"] = this.PrivateDownloadTemplate;\n data[\"ReleaseNotesUrl\"] = this.ReleaseNotesUrl;\n return data;\n }\n}\n\nexport interface IProgramReleaseDTO {\n Id: number;\n Description: string | undefined;\n Program: number;\n ProgramCode: string | undefined;\n Platform: number;\n PlatformName: string | undefined;\n VersionNumber: string | undefined;\n VersionMatchString: string | undefined;\n ReleaseDate: Date;\n EligibilityDate: Date;\n Prerelease: boolean;\n Major: boolean;\n OkForAgentDownload: boolean;\n EmbedLicense: boolean;\n PublicDownloadName: string | undefined;\n PrivateDownloadTemplate: string | undefined;\n ReleaseNotesUrl: string | undefined;\n}\n\nexport class CloudConnectAccountContactDTO implements ICloudConnectAccountContactDTO {\n Email!: string | undefined;\n Name!: string | undefined;\n Role!: CloudConnectAccountContactRoleDTO | undefined;\n\n constructor(data?: ICloudConnectAccountContactDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Email = _data[\"Email\"];\n this.Name = _data[\"Name\"];\n this.Role = _data[\"Role\"] ? CloudConnectAccountContactRoleDTO.fromJS(_data[\"Role\"]) : undefined;\n }\n }\n\n static fromJS(data: any): CloudConnectAccountContactDTO {\n data = typeof data === 'object' ? data : {};\n let result = new CloudConnectAccountContactDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Email\"] = this.Email;\n data[\"Name\"] = this.Name;\n data[\"Role\"] = this.Role ? this.Role.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ICloudConnectAccountContactDTO {\n Email: string | undefined;\n Name: string | undefined;\n Role: CloudConnectAccountContactRoleDTO | undefined;\n}\n\nexport class CloudConnectAccountContactRoleDTO implements ICloudConnectAccountContactRoleDTO {\n Name!: string | undefined;\n Permissions!: CloudConnectAccountPermissionSetDTO[] | undefined;\n\n constructor(data?: ICloudConnectAccountContactRoleDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Name = _data[\"Name\"];\n if (Array.isArray(_data[\"Permissions\"])) {\n this.Permissions = [] as any;\n for (let item of _data[\"Permissions\"])\n this.Permissions!.push(CloudConnectAccountPermissionSetDTO.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): CloudConnectAccountContactRoleDTO {\n data = typeof data === 'object' ? data : {};\n let result = new CloudConnectAccountContactRoleDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Name\"] = this.Name;\n if (Array.isArray(this.Permissions)) {\n data[\"Permissions\"] = [];\n for (let item of this.Permissions)\n data[\"Permissions\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ICloudConnectAccountContactRoleDTO {\n Name: string | undefined;\n Permissions: CloudConnectAccountPermissionSetDTO[] | undefined;\n}\n\nexport class CloudConnectAccountPermissionSetDTO implements ICloudConnectAccountPermissionSetDTO {\n Area!: CloudConnectAccountPermissionArea;\n Permission!: CloudConnectAccountPermissionType;\n\n constructor(data?: ICloudConnectAccountPermissionSetDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Area = _data[\"Area\"];\n this.Permission = _data[\"Permission\"];\n }\n }\n\n static fromJS(data: any): CloudConnectAccountPermissionSetDTO {\n data = typeof data === 'object' ? data : {};\n let result = new CloudConnectAccountPermissionSetDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Area\"] = this.Area;\n data[\"Permission\"] = this.Permission;\n return data;\n }\n}\n\nexport interface ICloudConnectAccountPermissionSetDTO {\n Area: CloudConnectAccountPermissionArea;\n Permission: CloudConnectAccountPermissionType;\n}\n\nexport enum CloudConnectAccountPermissionArea {\n Contacts = 0,\n Subscription = 1,\n Controllers = 2,\n Agents = 3,\n Targets = 4,\n}\n\nexport enum CloudConnectAccountPermissionType {\n Read = 0,\n Write = 1,\n}\n\nexport class CloudConnectMagnetoActivatorsDTO implements ICloudConnectMagnetoActivatorsDTO {\n Name!: string | undefined;\n UniqueId!: string | undefined;\n Created!: Date | undefined;\n Used!: Date | undefined;\n Notes!: string | undefined;\n IPAddress!: string | undefined;\n MagnetoUniqueId!: string | undefined;\n CloudConnectAccountGuid!: string | undefined;\n\n constructor(data?: ICloudConnectMagnetoActivatorsDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Name = _data[\"Name\"];\n this.UniqueId = _data[\"UniqueId\"];\n this.Created = _data[\"Created\"] ? new Date(_data[\"Created\"].toString()) : undefined;\n this.Used = _data[\"Used\"] ? new Date(_data[\"Used\"].toString()) : undefined;\n this.Notes = _data[\"Notes\"];\n this.IPAddress = _data[\"IPAddress\"];\n this.MagnetoUniqueId = _data[\"MagnetoUniqueId\"];\n this.CloudConnectAccountGuid = _data[\"CloudConnectAccountGuid\"];\n }\n }\n\n static fromJS(data: any): CloudConnectMagnetoActivatorsDTO {\n data = typeof data === 'object' ? data : {};\n let result = new CloudConnectMagnetoActivatorsDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Name\"] = this.Name;\n data[\"UniqueId\"] = this.UniqueId;\n data[\"Created\"] = this.Created ? this.Created.toISOString() : undefined;\n data[\"Used\"] = this.Used ? this.Used.toISOString() : undefined;\n data[\"Notes\"] = this.Notes;\n data[\"IPAddress\"] = this.IPAddress;\n data[\"MagnetoUniqueId\"] = this.MagnetoUniqueId;\n data[\"CloudConnectAccountGuid\"] = this.CloudConnectAccountGuid;\n return data;\n }\n}\n\nexport interface ICloudConnectMagnetoActivatorsDTO {\n Name: string | undefined;\n UniqueId: string | undefined;\n Created: Date | undefined;\n Used: Date | undefined;\n Notes: string | undefined;\n IPAddress: string | undefined;\n MagnetoUniqueId: string | undefined;\n CloudConnectAccountGuid: string | undefined;\n}\n\nexport class CloudConnectMagnetoActivationResult implements ICloudConnectMagnetoActivationResult {\n CloudConnectAccountGuid!: string | undefined;\n MagnetoUniqueId!: string | undefined;\n\n constructor(data?: ICloudConnectMagnetoActivationResult) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.CloudConnectAccountGuid = _data[\"CloudConnectAccountGuid\"];\n this.MagnetoUniqueId = _data[\"MagnetoUniqueId\"];\n }\n }\n\n static fromJS(data: any): CloudConnectMagnetoActivationResult {\n data = typeof data === 'object' ? data : {};\n let result = new CloudConnectMagnetoActivationResult();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"CloudConnectAccountGuid\"] = this.CloudConnectAccountGuid;\n data[\"MagnetoUniqueId\"] = this.MagnetoUniqueId;\n return data;\n }\n}\n\nexport interface ICloudConnectMagnetoActivationResult {\n CloudConnectAccountGuid: string | undefined;\n MagnetoUniqueId: string | undefined;\n}\n\nexport class EntitlementResults implements IEntitlementResults {\n Status!: string | undefined;\n AgentLimit!: number;\n SessionLimit!: number;\n\n constructor(data?: IEntitlementResults) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Status = _data[\"Status\"];\n this.AgentLimit = _data[\"AgentLimit\"];\n this.SessionLimit = _data[\"SessionLimit\"];\n }\n }\n\n static fromJS(data: any): EntitlementResults {\n data = typeof data === 'object' ? data : {};\n let result = new EntitlementResults();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Status\"] = this.Status;\n data[\"AgentLimit\"] = this.AgentLimit;\n data[\"SessionLimit\"] = this.SessionLimit;\n return data;\n }\n}\n\nexport interface IEntitlementResults {\n Status: string | undefined;\n AgentLimit: number;\n SessionLimit: number;\n}\n\nexport class CloudConnectMagnetoEntitlementResult implements ICloudConnectMagnetoEntitlementResult {\n AgentLimit!: number;\n SessionLimit!: number;\n\n constructor(data?: ICloudConnectMagnetoEntitlementResult) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.AgentLimit = _data[\"AgentLimit\"];\n this.SessionLimit = _data[\"SessionLimit\"];\n }\n }\n\n static fromJS(data: any): CloudConnectMagnetoEntitlementResult {\n data = typeof data === 'object' ? data : {};\n let result = new CloudConnectMagnetoEntitlementResult();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"AgentLimit\"] = this.AgentLimit;\n data[\"SessionLimit\"] = this.SessionLimit;\n return data;\n }\n}\n\nexport interface ICloudConnectMagnetoEntitlementResult {\n AgentLimit: number;\n SessionLimit: number;\n}\n\nexport class ContactDTO implements IContactDTO {\n Name!: string | undefined;\n EmailAddress!: string | undefined;\n\n constructor(data?: IContactDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Name = _data[\"Name\"];\n this.EmailAddress = _data[\"EmailAddress\"];\n }\n }\n\n static fromJS(data: any): ContactDTO {\n data = typeof data === 'object' ? data : {};\n let result = new ContactDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Name\"] = this.Name;\n data[\"EmailAddress\"] = this.EmailAddress;\n return data;\n }\n}\n\nexport interface IContactDTO {\n Name: string | undefined;\n EmailAddress: string | undefined;\n}\n\nexport class KeycodesDTO implements IKeycodesDTO {\n KeyCode!: string | undefined;\n SearchCode!: string | undefined;\n UserName!: string | undefined;\n MaintenanceGoodThrough!: Date | undefined;\n Created!: Date | undefined;\n Expires!: Date | undefined;\n KeyCount!: number;\n KeyCountText!: string | undefined;\n Program!: number;\n ProductCode!: string | undefined;\n ProductName!: string | undefined;\n ProgramId!: number;\n IsSubscription!: boolean;\n SubscriptionRenewalDate!: Date;\n SubscriptionStatus!: SubscriptionStatusDTO;\n SubscriptionRenewalPrice!: number;\n IsTemporary!: boolean;\n CustomPricingRule!: string | undefined;\n\n constructor(data?: IKeycodesDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.KeyCode = _data[\"KeyCode\"];\n this.SearchCode = _data[\"SearchCode\"];\n this.UserName = _data[\"UserName\"];\n this.MaintenanceGoodThrough = _data[\"MaintenanceGoodThrough\"] ? new Date(_data[\"MaintenanceGoodThrough\"].toString()) : undefined;\n this.Created = _data[\"Created\"] ? new Date(_data[\"Created\"].toString()) : undefined;\n this.Expires = _data[\"Expires\"] ? new Date(_data[\"Expires\"].toString()) : undefined;\n this.KeyCount = _data[\"KeyCount\"];\n this.KeyCountText = _data[\"KeyCountText\"];\n this.Program = _data[\"Program\"];\n this.ProductCode = _data[\"ProductCode\"];\n this.ProductName = _data[\"ProductName\"];\n this.ProgramId = _data[\"ProgramId\"];\n this.IsSubscription = _data[\"IsSubscription\"];\n this.SubscriptionRenewalDate = _data[\"SubscriptionRenewalDate\"] ? new Date(_data[\"SubscriptionRenewalDate\"].toString()) : undefined;\n this.SubscriptionStatus = _data[\"SubscriptionStatus\"];\n this.SubscriptionRenewalPrice = _data[\"SubscriptionRenewalPrice\"];\n this.IsTemporary = _data[\"IsTemporary\"];\n this.CustomPricingRule = _data[\"CustomPricingRule\"];\n }\n }\n\n static fromJS(data: any): KeycodesDTO {\n data = typeof data === 'object' ? data : {};\n let result = new KeycodesDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"KeyCode\"] = this.KeyCode;\n data[\"SearchCode\"] = this.SearchCode;\n data[\"UserName\"] = this.UserName;\n data[\"MaintenanceGoodThrough\"] = this.MaintenanceGoodThrough ? this.MaintenanceGoodThrough.toISOString() : undefined;\n data[\"Created\"] = this.Created ? this.Created.toISOString() : undefined;\n data[\"Expires\"] = this.Expires ? this.Expires.toISOString() : undefined;\n data[\"KeyCount\"] = this.KeyCount;\n data[\"KeyCountText\"] = this.KeyCountText;\n data[\"Program\"] = this.Program;\n data[\"ProductCode\"] = this.ProductCode;\n data[\"ProductName\"] = this.ProductName;\n data[\"ProgramId\"] = this.ProgramId;\n data[\"IsSubscription\"] = this.IsSubscription;\n data[\"SubscriptionRenewalDate\"] = this.SubscriptionRenewalDate ? this.SubscriptionRenewalDate.toISOString() : undefined;\n data[\"SubscriptionStatus\"] = this.SubscriptionStatus;\n data[\"SubscriptionRenewalPrice\"] = this.SubscriptionRenewalPrice;\n data[\"IsTemporary\"] = this.IsTemporary;\n data[\"CustomPricingRule\"] = this.CustomPricingRule;\n return data;\n }\n}\n\nexport interface IKeycodesDTO {\n KeyCode: string | undefined;\n SearchCode: string | undefined;\n UserName: string | undefined;\n MaintenanceGoodThrough: Date | undefined;\n Created: Date | undefined;\n Expires: Date | undefined;\n KeyCount: number;\n KeyCountText: string | undefined;\n Program: number;\n ProductCode: string | undefined;\n ProductName: string | undefined;\n ProgramId: number;\n IsSubscription: boolean;\n SubscriptionRenewalDate: Date;\n SubscriptionStatus: SubscriptionStatusDTO;\n SubscriptionRenewalPrice: number;\n IsTemporary: boolean;\n CustomPricingRule: string | undefined;\n}\n\nexport class KeycodeDetailsDTO extends KeycodesDTO implements IKeycodeDetailsDTO {\n Managed!: boolean;\n ManagedEnforceMode!: EnforcementModeDTO;\n DistMethod!: number;\n New_KeyCount!: number;\n New_KeyCountText!: string | undefined;\n New_MaintenanceGoodThrough!: Date;\n HasPendingUpgrade!: boolean;\n PendingExtensionYears!: number;\n HasPendingExtension!: boolean;\n SubscriptionId!: string | undefined;\n\n constructor(data?: IKeycodeDetailsDTO) {\n super(data);\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.Managed = _data[\"Managed\"];\n this.ManagedEnforceMode = _data[\"ManagedEnforceMode\"];\n this.DistMethod = _data[\"DistMethod\"];\n this.New_KeyCount = _data[\"New_KeyCount\"];\n this.New_KeyCountText = _data[\"New_KeyCountText\"];\n this.New_MaintenanceGoodThrough = _data[\"New_MaintenanceGoodThrough\"] ? new Date(_data[\"New_MaintenanceGoodThrough\"].toString()) : undefined;\n this.HasPendingUpgrade = _data[\"HasPendingUpgrade\"];\n this.PendingExtensionYears = _data[\"PendingExtensionYears\"];\n this.HasPendingExtension = _data[\"HasPendingExtension\"];\n this.SubscriptionId = _data[\"SubscriptionId\"];\n }\n }\n\n static fromJS(data: any): KeycodeDetailsDTO {\n data = typeof data === 'object' ? data : {};\n let result = new KeycodeDetailsDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Managed\"] = this.Managed;\n data[\"ManagedEnforceMode\"] = this.ManagedEnforceMode;\n data[\"DistMethod\"] = this.DistMethod;\n data[\"New_KeyCount\"] = this.New_KeyCount;\n data[\"New_KeyCountText\"] = this.New_KeyCountText;\n data[\"New_MaintenanceGoodThrough\"] = this.New_MaintenanceGoodThrough ? this.New_MaintenanceGoodThrough.toISOString() : undefined;\n data[\"HasPendingUpgrade\"] = this.HasPendingUpgrade;\n data[\"PendingExtensionYears\"] = this.PendingExtensionYears;\n data[\"HasPendingExtension\"] = this.HasPendingExtension;\n data[\"SubscriptionId\"] = this.SubscriptionId;\n super.toJSON(data);\n return data;\n }\n}\n\nexport interface IKeycodeDetailsDTO extends IKeycodesDTO {\n Managed: boolean;\n ManagedEnforceMode: EnforcementModeDTO;\n DistMethod: number;\n New_KeyCount: number;\n New_KeyCountText: string | undefined;\n New_MaintenanceGoodThrough: Date;\n HasPendingUpgrade: boolean;\n PendingExtensionYears: number;\n HasPendingExtension: boolean;\n SubscriptionId: string | undefined;\n}\n\nexport enum EnforcementModeDTO {\n Unknown = 0,\n AlwaysConcurrentInstall = 1,\n AlwaysConcurrentExec = 2,\n}\n\nexport class ClusterInfo implements IClusterInfo {\n ID!: string | undefined;\n License!: string | undefined;\n Name!: string | undefined;\n Usage!: ClientUsage | undefined;\n CloudConnectAccountGuid!: string | undefined;\n\n constructor(data?: IClusterInfo) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.ID = _data[\"ID\"];\n this.License = _data[\"License\"];\n this.Name = _data[\"Name\"];\n this.Usage = _data[\"Usage\"] ? ClientUsage.fromJS(_data[\"Usage\"]) : undefined;\n this.CloudConnectAccountGuid = _data[\"CloudConnectAccountGuid\"];\n }\n }\n\n static fromJS(data: any): ClusterInfo {\n data = typeof data === 'object' ? data : {};\n let result = new ClusterInfo();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"ID\"] = this.ID;\n data[\"License\"] = this.License;\n data[\"Name\"] = this.Name;\n data[\"Usage\"] = this.Usage ? this.Usage.toJSON() : undefined;\n data[\"CloudConnectAccountGuid\"] = this.CloudConnectAccountGuid;\n return data;\n }\n}\n\nexport interface IClusterInfo {\n ID: string | undefined;\n License: string | undefined;\n Name: string | undefined;\n Usage: ClientUsage | undefined;\n CloudConnectAccountGuid: string | undefined;\n}\n\nexport class ClientUsage implements IClientUsage {\n TotalMessages!: number;\n TotalBytes!: number;\n\n constructor(data?: IClientUsage) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.TotalMessages = _data[\"TotalMessages\"];\n this.TotalBytes = _data[\"TotalBytes\"];\n }\n }\n\n static fromJS(data: any): ClientUsage {\n data = typeof data === 'object' ? data : {};\n let result = new ClientUsage();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"TotalMessages\"] = this.TotalMessages;\n data[\"TotalBytes\"] = this.TotalBytes;\n return data;\n }\n}\n\nexport interface IClientUsage {\n TotalMessages: number;\n TotalBytes: number;\n}\n\nexport class SentinelInfo implements ISentinelInfo {\n ID!: number;\n ClusterID!: string | undefined;\n UniqueID!: string | undefined;\n MachineID!: string | undefined;\n Name!: string | undefined;\n IsTemplate!: boolean;\n IsOnline!: boolean;\n OpenSessions!: number;\n TotalSessions!: number;\n SecurityKey!: string | undefined;\n Configured!: boolean;\n LastMessageDateTime!: Date;\n Platform!: number;\n Version!: string | undefined;\n TargetVersion!: string | undefined;\n ServiceRunning!: boolean;\n MachineName!: string | undefined;\n VersionGroupUniqueId!: string | undefined;\n Usage!: ClientUsage | undefined;\n ClientDetails!: string | undefined;\n TicksOffset!: number;\n\n constructor(data?: ISentinelInfo) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.ID = _data[\"ID\"];\n this.ClusterID = _data[\"ClusterID\"];\n this.UniqueID = _data[\"UniqueID\"];\n this.MachineID = _data[\"MachineID\"];\n this.Name = _data[\"Name\"];\n this.IsTemplate = _data[\"IsTemplate\"];\n this.IsOnline = _data[\"IsOnline\"];\n this.OpenSessions = _data[\"OpenSessions\"];\n this.TotalSessions = _data[\"TotalSessions\"];\n this.SecurityKey = _data[\"SecurityKey\"];\n this.Configured = _data[\"Configured\"];\n this.LastMessageDateTime = _data[\"LastMessageDateTime\"] ? new Date(_data[\"LastMessageDateTime\"].toString()) : undefined;\n this.Platform = _data[\"Platform\"];\n this.Version = _data[\"Version\"];\n this.TargetVersion = _data[\"TargetVersion\"];\n this.ServiceRunning = _data[\"ServiceRunning\"];\n this.MachineName = _data[\"MachineName\"];\n this.VersionGroupUniqueId = _data[\"VersionGroupUniqueId\"];\n this.Usage = _data[\"Usage\"] ? ClientUsage.fromJS(_data[\"Usage\"]) : undefined;\n this.ClientDetails = _data[\"ClientDetails\"];\n this.TicksOffset = _data[\"TicksOffset\"];\n }\n }\n\n static fromJS(data: any): SentinelInfo {\n data = typeof data === 'object' ? data : {};\n let result = new SentinelInfo();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"ID\"] = this.ID;\n data[\"ClusterID\"] = this.ClusterID;\n data[\"UniqueID\"] = this.UniqueID;\n data[\"MachineID\"] = this.MachineID;\n data[\"Name\"] = this.Name;\n data[\"IsTemplate\"] = this.IsTemplate;\n data[\"IsOnline\"] = this.IsOnline;\n data[\"OpenSessions\"] = this.OpenSessions;\n data[\"TotalSessions\"] = this.TotalSessions;\n data[\"SecurityKey\"] = this.SecurityKey;\n data[\"Configured\"] = this.Configured;\n data[\"LastMessageDateTime\"] = this.LastMessageDateTime ? this.LastMessageDateTime.toISOString() : undefined;\n data[\"Platform\"] = this.Platform;\n data[\"Version\"] = this.Version;\n data[\"TargetVersion\"] = this.TargetVersion;\n data[\"ServiceRunning\"] = this.ServiceRunning;\n data[\"MachineName\"] = this.MachineName;\n data[\"VersionGroupUniqueId\"] = this.VersionGroupUniqueId;\n data[\"Usage\"] = this.Usage ? this.Usage.toJSON() : undefined;\n data[\"ClientDetails\"] = this.ClientDetails;\n data[\"TicksOffset\"] = this.TicksOffset;\n return data;\n }\n}\n\nexport interface ISentinelInfo {\n ID: number;\n ClusterID: string | undefined;\n UniqueID: string | undefined;\n MachineID: string | undefined;\n Name: string | undefined;\n IsTemplate: boolean;\n IsOnline: boolean;\n OpenSessions: number;\n TotalSessions: number;\n SecurityKey: string | undefined;\n Configured: boolean;\n LastMessageDateTime: Date;\n Platform: number;\n Version: string | undefined;\n TargetVersion: string | undefined;\n ServiceRunning: boolean;\n MachineName: string | undefined;\n VersionGroupUniqueId: string | undefined;\n Usage: ClientUsage | undefined;\n ClientDetails: string | undefined;\n TicksOffset: number;\n}\n\nexport class SessionInfo implements ISessionInfo {\n Id!: number;\n UniqueID!: string | undefined;\n MagnetoUniqueID!: string | undefined;\n SentinelUniqueID!: string | undefined;\n CloudConnectAccountUniqueID!: string | undefined;\n OriginalTarget!: string | undefined;\n TraceStatus!: TraceStatusEnumDTO;\n TraceInterval!: number;\n PacketType!: string | undefined;\n ConfigurationJSON!: string | undefined;\n ConfigurationID!: string | undefined;\n MostRecentData!: Date | undefined;\n LastContact!: Date | undefined;\n SessionStartedDateTime!: Date | undefined;\n SentinelLastHostUpdateID!: number;\n SentinelLastRouteID!: number;\n SentinelLastSampleSetID!: number;\n SentinelLastCommentUpdateID!: number;\n SentinelLastExceptionBundleID!: number;\n SentinelLastConfigUpdateID!: number;\n MagnetoLastHostUpdateID!: number;\n MagnetoLastRouteID!: number;\n MagnetoLastSampleSetID!: number;\n MagnetoLastCommentUpdateID!: number;\n MagnetoLastExceptionBundleID!: number;\n Usage!: ClientUsage | undefined;\n\n constructor(data?: ISessionInfo) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Id = _data[\"Id\"];\n this.UniqueID = _data[\"UniqueID\"];\n this.MagnetoUniqueID = _data[\"MagnetoUniqueID\"];\n this.SentinelUniqueID = _data[\"SentinelUniqueID\"];\n this.CloudConnectAccountUniqueID = _data[\"CloudConnectAccountUniqueID\"];\n this.OriginalTarget = _data[\"OriginalTarget\"];\n this.TraceStatus = _data[\"TraceStatus\"];\n this.TraceInterval = _data[\"TraceInterval\"];\n this.PacketType = _data[\"PacketType\"];\n this.ConfigurationJSON = _data[\"ConfigurationJSON\"];\n this.ConfigurationID = _data[\"ConfigurationID\"];\n this.MostRecentData = _data[\"MostRecentData\"] ? new Date(_data[\"MostRecentData\"].toString()) : undefined;\n this.LastContact = _data[\"LastContact\"] ? new Date(_data[\"LastContact\"].toString()) : undefined;\n this.SessionStartedDateTime = _data[\"SessionStartedDateTime\"] ? new Date(_data[\"SessionStartedDateTime\"].toString()) : undefined;\n this.SentinelLastHostUpdateID = _data[\"SentinelLastHostUpdateID\"];\n this.SentinelLastRouteID = _data[\"SentinelLastRouteID\"];\n this.SentinelLastSampleSetID = _data[\"SentinelLastSampleSetID\"];\n this.SentinelLastCommentUpdateID = _data[\"SentinelLastCommentUpdateID\"];\n this.SentinelLastExceptionBundleID = _data[\"SentinelLastExceptionBundleID\"];\n this.SentinelLastConfigUpdateID = _data[\"SentinelLastConfigUpdateID\"];\n this.MagnetoLastHostUpdateID = _data[\"MagnetoLastHostUpdateID\"];\n this.MagnetoLastRouteID = _data[\"MagnetoLastRouteID\"];\n this.MagnetoLastSampleSetID = _data[\"MagnetoLastSampleSetID\"];\n this.MagnetoLastCommentUpdateID = _data[\"MagnetoLastCommentUpdateID\"];\n this.MagnetoLastExceptionBundleID = _data[\"MagnetoLastExceptionBundleID\"];\n this.Usage = _data[\"Usage\"] ? ClientUsage.fromJS(_data[\"Usage\"]) : undefined;\n }\n }\n\n static fromJS(data: any): SessionInfo {\n data = typeof data === 'object' ? data : {};\n let result = new SessionInfo();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Id\"] = this.Id;\n data[\"UniqueID\"] = this.UniqueID;\n data[\"MagnetoUniqueID\"] = this.MagnetoUniqueID;\n data[\"SentinelUniqueID\"] = this.SentinelUniqueID;\n data[\"CloudConnectAccountUniqueID\"] = this.CloudConnectAccountUniqueID;\n data[\"OriginalTarget\"] = this.OriginalTarget;\n data[\"TraceStatus\"] = this.TraceStatus;\n data[\"TraceInterval\"] = this.TraceInterval;\n data[\"PacketType\"] = this.PacketType;\n data[\"ConfigurationJSON\"] = this.ConfigurationJSON;\n data[\"ConfigurationID\"] = this.ConfigurationID;\n data[\"MostRecentData\"] = this.MostRecentData ? this.MostRecentData.toISOString() : undefined;\n data[\"LastContact\"] = this.LastContact ? this.LastContact.toISOString() : undefined;\n data[\"SessionStartedDateTime\"] = this.SessionStartedDateTime ? this.SessionStartedDateTime.toISOString() : undefined;\n data[\"SentinelLastHostUpdateID\"] = this.SentinelLastHostUpdateID;\n data[\"SentinelLastRouteID\"] = this.SentinelLastRouteID;\n data[\"SentinelLastSampleSetID\"] = this.SentinelLastSampleSetID;\n data[\"SentinelLastCommentUpdateID\"] = this.SentinelLastCommentUpdateID;\n data[\"SentinelLastExceptionBundleID\"] = this.SentinelLastExceptionBundleID;\n data[\"SentinelLastConfigUpdateID\"] = this.SentinelLastConfigUpdateID;\n data[\"MagnetoLastHostUpdateID\"] = this.MagnetoLastHostUpdateID;\n data[\"MagnetoLastRouteID\"] = this.MagnetoLastRouteID;\n data[\"MagnetoLastSampleSetID\"] = this.MagnetoLastSampleSetID;\n data[\"MagnetoLastCommentUpdateID\"] = this.MagnetoLastCommentUpdateID;\n data[\"MagnetoLastExceptionBundleID\"] = this.MagnetoLastExceptionBundleID;\n data[\"Usage\"] = this.Usage ? this.Usage.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ISessionInfo {\n Id: number;\n UniqueID: string | undefined;\n MagnetoUniqueID: string | undefined;\n SentinelUniqueID: string | undefined;\n CloudConnectAccountUniqueID: string | undefined;\n OriginalTarget: string | undefined;\n TraceStatus: TraceStatusEnumDTO;\n TraceInterval: number;\n PacketType: string | undefined;\n ConfigurationJSON: string | undefined;\n ConfigurationID: string | undefined;\n MostRecentData: Date | undefined;\n LastContact: Date | undefined;\n SessionStartedDateTime: Date | undefined;\n SentinelLastHostUpdateID: number;\n SentinelLastRouteID: number;\n SentinelLastSampleSetID: number;\n SentinelLastCommentUpdateID: number;\n SentinelLastExceptionBundleID: number;\n SentinelLastConfigUpdateID: number;\n MagnetoLastHostUpdateID: number;\n MagnetoLastRouteID: number;\n MagnetoLastSampleSetID: number;\n MagnetoLastCommentUpdateID: number;\n MagnetoLastExceptionBundleID: number;\n Usage: ClientUsage | undefined;\n}\n\nexport enum TraceStatusEnumDTO {\n Running = 0,\n Paused = 1,\n AdminPause = 2,\n}\n\nexport class CheckoutDTO implements ICheckoutDTO {\n Payload!: string | undefined;\n Key!: string | undefined;\n\n constructor(data?: ICheckoutDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Payload = _data[\"Payload\"];\n this.Key = _data[\"Key\"];\n }\n }\n\n static fromJS(data: any): CheckoutDTO {\n data = typeof data === 'object' ? data : {};\n let result = new CheckoutDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Payload\"] = this.Payload;\n data[\"Key\"] = this.Key;\n return data;\n }\n}\n\nexport interface ICheckoutDTO {\n Payload: string | undefined;\n Key: string | undefined;\n}\n\nexport class OrderLinesDTO implements IOrderLinesDTO {\n Id!: number;\n Seq!: number;\n Item!: number;\n ItemName!: string | undefined;\n ItemType!: number;\n ItemTypeName!: string | undefined;\n ProductName!: string | undefined;\n ProductCode!: string | undefined;\n Years!: number | undefined;\n SubscriptionExpires!: Date | undefined;\n Qty!: number;\n Price!: number;\n SearchCode!: string | undefined;\n CloudConnectAccount!: string | undefined;\n OtherDetailsJson!: string | undefined;\n\n constructor(data?: IOrderLinesDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.Id = _data[\"Id\"];\n this.Seq = _data[\"Seq\"];\n this.Item = _data[\"Item\"];\n this.ItemName = _data[\"ItemName\"];\n this.ItemType = _data[\"ItemType\"];\n this.ItemTypeName = _data[\"ItemTypeName\"];\n this.ProductName = _data[\"ProductName\"];\n this.ProductCode = _data[\"ProductCode\"];\n this.Years = _data[\"Years\"];\n this.SubscriptionExpires = _data[\"SubscriptionExpires\"] ? new Date(_data[\"SubscriptionExpires\"].toString()) : undefined;\n this.Qty = _data[\"Qty\"];\n this.Price = _data[\"Price\"];\n this.SearchCode = _data[\"SearchCode\"];\n this.CloudConnectAccount = _data[\"CloudConnectAccount\"];\n this.OtherDetailsJson = _data[\"OtherDetailsJson\"];\n }\n }\n\n static fromJS(data: any): OrderLinesDTO {\n data = typeof data === 'object' ? data : {};\n let result = new OrderLinesDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"Id\"] = this.Id;\n data[\"Seq\"] = this.Seq;\n data[\"Item\"] = this.Item;\n data[\"ItemName\"] = this.ItemName;\n data[\"ItemType\"] = this.ItemType;\n data[\"ItemTypeName\"] = this.ItemTypeName;\n data[\"ProductName\"] = this.ProductName;\n data[\"ProductCode\"] = this.ProductCode;\n data[\"Years\"] = this.Years;\n data[\"SubscriptionExpires\"] = this.SubscriptionExpires ? this.SubscriptionExpires.toISOString() : undefined;\n data[\"Qty\"] = this.Qty;\n data[\"Price\"] = this.Price;\n data[\"SearchCode\"] = this.SearchCode;\n data[\"CloudConnectAccount\"] = this.CloudConnectAccount;\n data[\"OtherDetailsJson\"] = this.OtherDetailsJson;\n return data;\n }\n}\n\nexport interface IOrderLinesDTO {\n Id: number;\n Seq: number;\n Item: number;\n ItemName: string | undefined;\n ItemType: number;\n ItemTypeName: string | undefined;\n ProductName: string | undefined;\n ProductCode: string | undefined;\n Years: number | undefined;\n SubscriptionExpires: Date | undefined;\n Qty: number;\n Price: number;\n SearchCode: string | undefined;\n CloudConnectAccount: string | undefined;\n OtherDetailsJson: string | undefined;\n}\n\nexport class QuoteDTO implements IQuoteDTO {\n ContactName!: string | undefined;\n ContactEmail!: string | undefined;\n StartDate!: Date;\n QuoteNumber!: string | undefined;\n Total!: number;\n Expires!: Date;\n Lines!: QuoteLineDTO[] | undefined;\n QuoteLinkId!: string | undefined;\n\n constructor(data?: IQuoteDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.ContactName = _data[\"ContactName\"];\n this.ContactEmail = _data[\"ContactEmail\"];\n this.StartDate = _data[\"StartDate\"] ? new Date(_data[\"StartDate\"].toString()) : undefined;\n this.QuoteNumber = _data[\"QuoteNumber\"];\n this.Total = _data[\"Total\"];\n this.Expires = _data[\"Expires\"] ? new Date(_data[\"Expires\"].toString()) : undefined;\n if (Array.isArray(_data[\"Lines\"])) {\n this.Lines = [] as any;\n for (let item of _data[\"Lines\"])\n this.Lines!.push(QuoteLineDTO.fromJS(item));\n }\n this.QuoteLinkId = _data[\"QuoteLinkId\"];\n }\n }\n\n static fromJS(data: any): QuoteDTO {\n data = typeof data === 'object' ? data : {};\n let result = new QuoteDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"ContactName\"] = this.ContactName;\n data[\"ContactEmail\"] = this.ContactEmail;\n data[\"StartDate\"] = this.StartDate ? this.StartDate.toISOString() : undefined;\n data[\"QuoteNumber\"] = this.QuoteNumber;\n data[\"Total\"] = this.Total;\n data[\"Expires\"] = this.Expires ? this.Expires.toISOString() : undefined;\n if (Array.isArray(this.Lines)) {\n data[\"Lines\"] = [];\n for (let item of this.Lines)\n data[\"Lines\"].push(item.toJSON());\n }\n data[\"QuoteLinkId\"] = this.QuoteLinkId;\n return data;\n }\n}\n\nexport interface IQuoteDTO {\n ContactName: string | undefined;\n ContactEmail: string | undefined;\n StartDate: Date;\n QuoteNumber: string | undefined;\n Total: number;\n Expires: Date;\n Lines: QuoteLineDTO[] | undefined;\n QuoteLinkId: string | undefined;\n}\n\nexport class QuoteLineDTO implements IQuoteLineDTO {\n ItemName!: string | undefined;\n ItemDetails!: string | undefined;\n QtyFormatted!: string | undefined;\n Qty!: number;\n Each!: number;\n Price!: number;\n\n constructor(data?: IQuoteLineDTO) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.ItemName = _data[\"ItemName\"];\n this.ItemDetails = _data[\"ItemDetails\"];\n this.QtyFormatted = _data[\"QtyFormatted\"];\n this.Qty = _data[\"Qty\"];\n this.Each = _data[\"Each\"];\n this.Price = _data[\"Price\"];\n }\n }\n\n static fromJS(data: any): QuoteLineDTO {\n data = typeof data === 'object' ? data : {};\n let result = new QuoteLineDTO();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"ItemName\"] = this.ItemName;\n data[\"ItemDetails\"] = this.ItemDetails;\n data[\"QtyFormatted\"] = this.QtyFormatted;\n data[\"Qty\"] = this.Qty;\n data[\"Each\"] = this.Each;\n data[\"Price\"] = this.Price;\n return data;\n }\n}\n\nexport interface IQuoteLineDTO {\n ItemName: string | undefined;\n ItemDetails: string | undefined;\n QtyFormatted: string | undefined;\n Qty: number;\n Each: number;\n Price: number;\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new ApiException(message, status, response, headers, null);\n}","import * as React from 'react';\nimport { AccountController, LoginModel, SendPasswordParams } from '@app/models';\nimport { IServiceUser } from '@app/models';\nimport { IInitialStateDTO } from '@app/models';\nimport { withRouter } from \"react-router\";\nimport * as H from 'history';\nimport { useContext } from \"react\";\n\nexport interface PasswordState {\n good: boolean;\n message: string;\n strength: number;\n}\n\n\nexport interface AuthState {\n // State\n isAuth: boolean;\n username: string;\n emailAddress: string;\n error: string;\n isLoading: boolean;\n IsImpersonatingUser: boolean;\n IsUsingTempPassword: boolean;\n roles: string[];\n // Actions\n login: (username: string, password: string, rememberMe: boolean) => Promise;\n logout: () => Promise;\n forgotPassword: (username: string, force: boolean) => Promise;\n changeEmailAddress: (newAddress: string) => Promise;\n changePassword: (newPassword: string) => Promise;\n clearLastError: () => void;\n verifyPassword: (newPassword: string, verifyPassword: string) => PasswordState;\n hasRole: (roleName: string) => boolean;\n impersonate: (userEMail: string) => Promise;\n isStaff: boolean;\n}\n\n\nexport const AuthContext = React.createContext(null);\n\nclass AuthProviderInner extends React.Component<{\n history: H.History,\n location: H.Location,\n match: any,\n}, {\n isAuth: boolean,\n username: string,\n emailAddress: string,\n isImpersonatingUser: boolean,\n isUsingTempPassword: boolean,\n roles: string[],\n error: string,\n isLoading: boolean,\n isLoadingCount: number\n}> {\n constructor(props: any) {\n super(props);\n\n let initialModel = ((window as any).initialState as IInitialStateDTO);\n if (initialModel && initialModel.User && initialModel.User.Username) {\n this.state = {\n error: \"\",\n isAuth: true,\n username: initialModel.User.Username,\n isImpersonatingUser: initialModel.User.IsImpersonating,\n isUsingTempPassword: initialModel.User.IsUsingTempPassword,\n emailAddress: initialModel.User.EmailAddress || \"\",\n isLoading: false,\n isLoadingCount: 0,\n roles: initialModel.User.Roles || []\n };\n } else {\n this.state = {\n error: \"\",\n isAuth: false,\n username: \"\",\n isImpersonatingUser: false,\n isUsingTempPassword: false,\n isLoading: false,\n isLoadingCount: 0,\n emailAddress: \"\",\n roles: []\n };\n }\n }\n\n loadCurrentUser = () => {\n this.enterIsLoading();\n this.setState({ isLoading: true, isLoadingCount: this.state.isLoadingCount + 1 });\n const accountController = new AccountController();\n accountController.getCurrentUser().then(user => {\n this.setState({\n isAuth: !!user.Username,\n username: user.Username || \"\",\n emailAddress: user.EmailAddress || \"\",\n isImpersonatingUser: user.IsImpersonating,\n isUsingTempPassword: user.IsUsingTempPassword,\n roles: user.Roles || []\n });\n this.exitIsLoading();\n }).catch(error => {\n this.setState({ isAuth: false, username: \"\", emailAddress: \"\", roles: [] });\n this.exitIsLoading();\n });\n };\n\n componentWillMount() {\n // Use session cookies to get the current logged in user. May not exist (401 error then)\n this.loadCurrentUser();\n }\n\n enterIsLoading = () => {\n this.setState({\n isLoading: true,\n isLoadingCount: this.state.isLoadingCount + 1\n });\n };\n\n exitIsLoading = () => {\n this.setState({\n isLoading: this.state.isLoadingCount > 1,\n isLoadingCount: this.state.isLoadingCount < 1 ? 0 : this.state.isLoadingCount - 1\n });\n };\n\n forgotPassword = (username: string, force: boolean = false): Promise => {\n this.enterIsLoading();\n const accountController = new AccountController();\n let request = accountController.sendForgotPasswordEmail( new SendPasswordParams(\n {\n Login: username,\n ForceEvenIfRecentlySent: force\n })\n );\n request.then((resp) => {\n this.setState({\n error: (resp as any).Message,\n });\n this.exitIsLoading();\n }).catch((error) => {\n let message = error.message;\n if (error.response && error.response.data && error.response.data.Error) {\n message = error.response.data.Error;\n }\n this.setState({\n error: message\n });\n this.exitIsLoading();\n });\n return request;\n };\n\n login = (username: string, password: string, rememberMe: boolean): Promise => {\n this.enterIsLoading();\n const accountController = new AccountController();\n let request = accountController.login(\n new LoginModel({\n Login: username,\n Password: password,\n RememberMe: rememberMe\n }));\n request.then((resp) => {\n this.setState({\n isAuth: !!resp.Username,\n username: resp.Username || \"\",\n emailAddress: resp.EmailAddress || \"\",\n isImpersonatingUser: resp.IsImpersonating,\n isUsingTempPassword: resp.IsUsingTempPassword,\n error: resp.Message || \"\",\n roles: resp.Roles || [],\n });\n this.exitIsLoading();\n }).catch((error) => {\n let message = error.message;\n if (error.response && error.response.data && error.response.data.Error) {\n message = error.response.data.Error;\n }\n this.setState({\n isAuth: false,\n username: \"\",\n error: message,\n isUsingTempPassword: false,\n isImpersonatingUser: false,\n roles: [],\n });\n this.exitIsLoading();\n });\n return request;\n };\n\n logout = () => {\n this.enterIsLoading();\n const accountController = new AccountController();\n const request = accountController.logout();\n request.then(resp => {\n this.exitIsLoading();\n }).catch(resp => {\n this.exitIsLoading();\n });\n this.setState({\n username: \"\",\n emailAddress: \"\",\n isUsingTempPassword: false,\n roles: [],\n isAuth: false,\n isImpersonatingUser: false\n });\n this.props.history.push('/Login');\n return request;\n };\n\n changeEmailAddress = (newAddress: string): Promise => {\n this.enterIsLoading();\n const accountController = new AccountController();\n let request = accountController.changeEmailAddress(newAddress);\n request.then((resp) => {\n this.setState({\n isAuth: !!resp.Username,\n username: resp.Username || \"\",\n emailAddress: resp.EmailAddress || \"\",\n isImpersonatingUser: resp.IsImpersonating,\n isUsingTempPassword: resp.IsUsingTempPassword,\n roles: resp.Roles || [],\n error: resp.Message || \"\",\n });\n this.exitIsLoading();\n }).catch((error) => {\n let message = error.message;\n if (error.response && error.response.data && error.response.data.Error) {\n message = error.response.data.Error;\n }\n this.setState({\n error: message\n });\n this.exitIsLoading();\n });\n return request;\n };\n\n // This is super, uber, super simple. Probably needs a slightly better version to show real strength (like looking for the word \"password\")\n passwordStrength = (password: string) => {\n if (!password) return 0;\n return password.length;\n };\n\n verifyPassword = (newPassword: string, verifyPassword: string): PasswordState => {\n let result = {\n good: false,\n message: \"\",\n strength: this.passwordStrength(newPassword)\n };\n if (!newPassword) {\n result.message = \"Must specify a password\";\n } else if (newPassword != verifyPassword) {\n result.message = \"Passwords don't match\";\n } else {\n result.good = true;\n }\n return result;\n };\n\n changePassword = (newPassword: string): Promise => {\n this.enterIsLoading();\n const accountController = new AccountController();\n let request = accountController.changePassword(newPassword);\n request.then((resp) => {\n this.setState({\n isAuth: !!resp.Username,\n username: resp.Username || \"\",\n emailAddress: resp.EmailAddress || \"\",\n isImpersonatingUser: resp.IsImpersonating,\n isUsingTempPassword: resp.IsUsingTempPassword,\n roles: resp.Roles || [],\n error: resp.Message || \"\",\n });\n this.exitIsLoading();\n }).catch((error) => {\n let message = error.message;\n if (error.response && error.response.data && error.response.data.Error) {\n message = error.response.data.Error;\n }\n this.setState({\n error: message\n });\n this.exitIsLoading();\n });\n return request;\n };\n\n clearLastError = () => {\n this.setState({ error: \"\" });\n };\n\n hasRole = (roleName: string) => {\n return this.state.roles.indexOf(roleName) >= 0;\n };\n\n impersonate = (userEMail: string) => {\n this.enterIsLoading();\n const accountController = new AccountController();\n let request = accountController.impersonateUser(userEMail);\n request.then((resp) => {\n this.setState({\n isAuth: !!resp.Username,\n username: resp.Username || \"\",\n emailAddress: resp.EmailAddress || \"\",\n isImpersonatingUser: resp.IsImpersonating,\n isUsingTempPassword: resp.IsUsingTempPassword,\n roles: resp.Roles || [],\n error: resp.Message || \"\",\n });\n this.exitIsLoading();\n\n }).catch((error) => {\n let message = error.message;\n if (error.response && error.response.data && error.response.data.Error) {\n message = error.response.data.Error;\n }\n this.setState({\n error: message\n });\n this.exitIsLoading();\n });\n return request;\n };\n\n render() {\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nconst AuthProvider = withRouter(AuthProviderInner);\n\nconst AuthConsumer = AuthContext.Consumer;\nexport { AuthProvider, AuthConsumer };\n\nexport function withAuth(WrappedComponent: React.ComponentType) {\n return (props: any) => {\n const auth = useContext(AuthContext);\n return ();\n }\n}\n","import Alert from 'react-s-alert'\n\nexport class AppSettings {\n public AlertSettings: any = {}\n public ApplicationName: string = 'Pingman Tools Account'\n public ManagementUriPrefix: string = ''\n\n constructor() {\n window.onunhandledrejection = this.onunhandledrejection;\n }\n\n onunhandledrejection = async (msg: PromiseRejectionEvent) => {\n let message =\n (msg.reason?.response?.data?.Error) // From API on server\n ?? (msg.reason?.message)\n ?? (msg.reason);\n\n appSettings.error(message);\n };\n\n public info(msg: string, data?: any): void {\n Alert.info(msg, data)\n }\n public error(msg: string, data?: any): void {\n Alert.error(msg, data)\n }\n public warning(msg: string, data?: any): void {\n Alert.warning(msg, data)\n }\n public success(msg: string, data?: any): void {\n Alert.success(msg, data)\n }\n public close(id: number): void {\n Alert.close(id)\n }\n public closeAll(): void {\n Alert.closeAll()\n }\n}\n\nconst appSettings = new AppSettings()\n\nexport default appSettings\n","import \"../scss/components/loader.scss\";\nimport * as React from \"react\";\nimport { Component } from \"react\";\n\nexport interface IProps {\n show: boolean;\n}\n\nexport default class Loader extends Component {\n\n constructor(props: IProps) {\n super(props);\n }\n\n render() {\n\n return
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
;\n }\n}","import { Alert, Button, Col, Modal, ModalBody, ModalFooter, ModalHeader, Row } from \"reactstrap\";\nimport * as React from \"react\";\nimport { AuthContext, AuthState, PasswordState } from \"@app/context/AuthContext\";\nimport appSettings from \"@app/appSettings\";\nimport Loader from \"@app/components/Loader\";\n\ninterface IPasswordChangeProps {\n doClose: () => void;\n visible: boolean;\n}\n\ninterface IPasswordChangeState {\n newPassword: string;\n verifyPassword: string;\n passwordState: PasswordState;\n passwordChangeSubmitted: boolean;\n}\n\nexport default class ChangePassword extends React.Component {\n static contextType = AuthContext;\n\n constructor(props: IPasswordChangeProps) {\n super(props);\n this.state = {\n newPassword: \"\",\n verifyPassword: \"\",\n passwordState: {good: false, message: \"\", strength: 0},\n passwordChangeSubmitted: false,\n };\n }\n\n updatePasswordSettings = () => {\n const authState = this.context as AuthState;\n this.setState({passwordState: authState.verifyPassword(this.state.newPassword, this.state.verifyPassword)});\n };\n\n\n submitPasswordChange = (e: any) => {\n e.preventDefault();\n const authState = this.context as AuthState;\n this.updatePasswordSettings();\n this.setState({passwordChangeSubmitted: true});\n if (this.state.passwordState.good) {\n authState.changePassword(this.state.newPassword).then(() => {\n appSettings.success(\"Password changed!\");\n this.props.doClose();\n });\n }\n };\n\n public render() {\n const authState = (this.context as AuthState);\n return (\n \n \n \n Update Password\n \n
{\n this.submitPasswordChange(e);\n }\n }>\n \n
\n \n \n \n \n \n {\n this.setState({newPassword: e.target.value}, () => {\n this.updatePasswordSettings();\n });\n }}/>\n \n \n \n \n \n \n \n {\n this.setState({verifyPassword: e.target.value}, () => {\n this.updatePasswordSettings();\n });\n }}/>\n \n \n {this.state.passwordChangeSubmitted && this.state.passwordState.message && !this.state.passwordState.good &&\n }\n
\n
\n \n \n  \n \n \n
\n \n );\n }\n}","import * as React from 'react';\nimport {\n Dropdown,\n DropdownToggle,\n DropdownMenu,\n DropdownItem,\n Modal,\n ModalHeader,\n ModalBody,\n ModalFooter,\n} from 'reactstrap';\nimport { faUser } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { AuthContext, AuthConsumer, AuthState } from \"@app/context/AuthContext\";\nimport appSettings from \"@app/appSettings\";\nimport Loader from \"@app/components/Loader\";\nimport ChangePassword from \"@components/User/ChangePassword\";\n\nexport interface IUserDropdownProps {\n}\n\nexport interface IUserDropdownState {\n showPasswordEditor: boolean;\n showEmailEditor: boolean;\n showImpersonationEditor: boolean;\n newEmail: string;\n impersonatedUser: string;\n userDropOpen: boolean;\n}\n\nexport default class UserDropdown extends React.Component {\n\n static contextType = AuthContext;\n\n constructor(props: any) {\n super(props);\n this.state = {\n showEmailEditor: false,\n showPasswordEditor: false,\n showImpersonationEditor: false,\n newEmail: \"\",\n impersonatedUser: \"\",\n userDropOpen: false\n };\n }\n\n componentDidMount() {\n const authState = this.context as AuthState;\n this.setState({\n newEmail: authState.emailAddress\n });\n }\n\n closeModals = () => {\n this.setState({\n showEmailEditor: false,\n showPasswordEditor: false,\n showImpersonationEditor: false\n });\n const authState = this.context as AuthState;\n authState.clearLastError();\n };\n\n submitEmailChange = (e: any) => {\n const authState = this.context as AuthState;\n let origEmail = authState.emailAddress;\n authState.changeEmailAddress(this.state.newEmail).then(response => {\n appSettings.success(\"Email changed to \" + this.state.newEmail);\n appSettings.info(\"Notification email sent to \" + origEmail + \".\");\n this.closeModals();\n });\n };\n\n impersonateUser = (e: any) => {\n const authState = this.context as AuthState;\n authState.impersonate(this.state.impersonatedUser).then(response => {\n if (response.IsImpersonating)\n appSettings.success(\"Impersonating \" + this.state.impersonatedUser);\n else\n appSettings.success(\"Impersonation cleared.\");\n this.closeModals();\n }).catch(msg => \n {\n let errorMessage = (msg?.response?.data?.Error) || \"Couldn't impersonate \" + this.state.impersonatedUser;\n appSettings.error(errorMessage);\n });\n };\n\n toggleUserDropdown = () => {\n this.setState({\n userDropOpen: !this.state.userDropOpen\n });\n };\n\n public render() {\n\n return (\n \n {authState => authState && (\n\n \n \n  {authState.username}\n \n \n this.setState({showPasswordEditor: true})}>\n Change password\n \n this.setState({showEmailEditor: true})}>\n Change email\n \n authState.logout()}>Log out\n {authState.hasRole(\"Staff\") && (\n {/* alert(\"Need to finish this\")}>Clear passwords and logout*/}\n this.setState({showImpersonationEditor: true})}>Impersonate other\n user...\n )\n }\n \n \n\n\n {this.state.showEmailEditor && (\n \n \n \n Update Email Address\n \n \n
{\n e.preventDefault();\n this.submitEmailChange(e);\n }\n }>\n
\n \n {\n this.setState({newEmail: e.target.value});\n }}/>\n {authState.error &&
}\n
\n
\n
\n
\n \n \n  \n \n \n \n )}\n\n {this.state.showPasswordEditor && (\n this.closeModals()}/>\n )}\n\n {this.state.showImpersonationEditor && (\n \n \n \n Admin: Impersonate user\n \n \n
{\n e.preventDefault();\n this.impersonateUser(e);\n }\n }>\n
\n \n {\n this.setState({impersonatedUser: e.target.value});\n }}/>\n {authState.error &&\n
\n
}\n
\n
\n
\n
\n \n \n \n \n \n )}\n\n\n
)\n }\n
\n\n );\n }\n}\n\n","import urlJoin from 'url-join';\n\n// Get the base URL from the html page (it's populated by the render)\nconst urlRoot = document.getElementsByTagName('base')[0].getAttribute('href')!;\nexport const BaseURL = (relative: string) => {\n return urlJoin([urlRoot, relative]);\n}\n\nexport const FullURL = (relative: string) => {\n let port = window.location.port;\n if (port == \"80\" || port == \"443\" || port == \"\" || port == \"0\" || !port) {\n port = \"\";\n } else {\n port = \":\"+port;\n }\n \n // Unless we're on a non-standard port (dev machine), force https in quote url.\n let protocol = window.location.protocol;\n if (port == \"\" && !protocol.toLowerCase().startsWith(\"https\")) {\n protocol = \"https:\";\n }\n return protocol + \"//\" + urlJoin([window.location.hostname + port, BaseURL(relative)]); \n}\n\n","import * as React from \"react\";\nimport {\n Collapse,\n Navbar,\n NavbarBrand,\n NavbarToggler,\n Nav,\n NavItem,\n NavLink,\n Dropdown,\n DropdownToggle,\n DropdownMenu,\n DropdownItem, UncontrolledDropdown,\n} from \"reactstrap\";\nimport { Link } from \"react-router-dom\";\nimport { AuthState, PasswordState, withAuth } from \"@app/context/AuthContext\";\nimport UserDropdown from \"./UserDropdown\";\nimport { BaseURL } from \"@app/utils/BaseURL\";\n\n\nexport interface IMainNavProps {\n Auth: AuthState;\n}\n\nexport interface IMainNavState {\n showEmailEditor: boolean;\n showPasswordEditor: boolean;\n showImpersonationEditor: boolean;\n newEmail: string;\n newPassword: string;\n verifyPassword: string;\n passwordState: PasswordState;\n passwordChangeSubmitted: boolean;\n impersonatedUser: string;\n helpDropOpen: boolean;\n staffDropOpen: boolean;\n collapsed: boolean;\n cartVisible: boolean;\n}\n\nclass MainNav extends React.Component {\n\n constructor(props: any) {\n super(props);\n\n this.toggleHelpDropdown = this.toggleHelpDropdown.bind(this);\n this.toggleNavbar = this.toggleNavbar.bind(this);\n this.state = {\n showEmailEditor: false,\n showPasswordEditor: false,\n showImpersonationEditor: false,\n newEmail: \"\",\n newPassword: \"\",\n verifyPassword: \"\",\n passwordState: {good: false, message: \"\", strength: 0},\n passwordChangeSubmitted: false,\n impersonatedUser: \"\",\n helpDropOpen: false,\n staffDropOpen: false,\n collapsed: false,\n cartVisible: false\n };\n }\n\n componentDidMount() {\n this.setState({\n newEmail: this.props.Auth?.emailAddress\n });\n }\n\n contentRender = (props: any) => {\n return (\n
Custom content for itemId: {props.itemId}, text: {props.item.text}
\n );\n };\n\n toggleHelpDropdown() {\n this.setState({\n helpDropOpen: !this.state.helpDropOpen\n });\n }\n\n toggleNavbar() {\n this.setState({\n collapsed: !this.state.collapsed\n });\n }\n\n public render() {\n return (\n \n \n \"Logo\"\n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default withAuth(MainNav);\n\n","export enum OrderItemType {\n Upgrade = 1,\n ExtendMaintenance = 2,\n AddLicense = 3,\n NewSubscription = 4,\n RechargeSubscription = 5,\n NewLicense = 6,\n SubscriptionQuantityChange = 7,\n ConvertLicenseType = 8,\n CloudConnect = 9,\n RemoteBundle = 10\n}","import * as React from 'react';\nimport {\n CheckoutDTO,\n ICloudConnectAccountsDTO,\n IKeycodeDetailsDTO, IOrderItemDTO,\n IOrderLinesDTO,\n OrderController,\n OrderItemType, OrderLinesDTO, ProgramType\n} from '@app/models';\nimport appSettings from '@app/appSettings';\nimport { EventEmitter } from 'events';\nimport { useContext } from \"react\";\n\nexport interface OrderProps {\n user: string;\n}\n\nexport type InvoiceLine = {\n // These define the uniqueness\n Description: string;\n ProductName: string;\n ProductCode: string;\n // These are calculated based on the uniqueuness\n Qty: number;\n Price: number;\n Total: number;\n ItemType: number;\n otherDetails: any;\n}\nexport type GroupedLines = { product: string, lines: InvoiceLine[] };\n\nexport interface OrderState extends OrderStateData {\n OrderCompleted(orderId: string): Promise;\n orderLinesGrouped: () => GroupedLines[];\n AddQtyToKey(searchCode: string, itemType: OrderItemType, qty: number): Promise;\n CreateNewCloudConnectSubscription(account: ICloudConnectAccountsDTO, qty: number): Promise;\n ChangeCloudConnectSubscription(account: ICloudConnectAccountsDTO, qty: number): Promise;\n OnOrderUpdated: EventEmitter;\n ClearCart: () => Promise;\n RemoveItemById: (id: number) => Promise;\n RemoveItemsByProductAndType: (productCode: string, itemType: number) => Promise;\n RemoveItemByKeyAndType: (searchCode: string, itemType: number) => Promise;\n GetOrderForFastspring: () => Promise;\n GetPriceForLicense: (keyCode: IKeycodeDetailsDTO, qty: number, type: OrderItemType) => number;\n GetPriceForProgram: (program: ProgramType, qty: number, type: OrderItemType) => number;\n GetBestItemForLicense: (keyCode: IKeycodeDetailsDTO, type: OrderItemType) => IOrderItemDTO | undefined;\n GetBestItemForProgram: (program: ProgramType, type: OrderItemType) => IOrderItemDTO | undefined;\n GetTradeInValue: (keycode: IKeycodeDetailsDTO) => number;\n UncancelSubscription: (subscriptionID: string) => void;\n CancelSubscription: (keyCode: IKeycodeDetailsDTO) => void;\n GetCloudConnectManagementURL: (account: ICloudConnectAccountsDTO) => Promise;\n UpdateOrderLineRaw: (updatedLine: IOrderLinesDTO) => Promise;\n AddOrderLineRaw: (newLine: IOrderLinesDTO) => Promise;\n CreateQuote: () => Promise;\n CopyQuoteToOrder: (quoteID: string) => Promise;\n}\n\ninterface OrderStateData {\n isLoading: boolean;\n isLoadingCount: number;\n orderLines: IOrderLinesDTO[];\n items: IOrderItemDTO[];\n error: string;\n}\n\nexport const OrderContext = React.createContext(null);\n\nclass OrderProvider extends React.Component {\n constructor(props: OrderProps) {\n super(props);\n\n this.state = {\n isLoadingCount: 0,\n isLoading: false,\n orderLines: [],\n items: [],\n error: \"\"\n }\n }\n\n //create private event dispatcher\n private _onOrderUpdated = new EventEmitter();\n\n compareOrders = (oldOrder: IOrderLinesDTO[], newOrder: IOrderLinesDTO[]): string[] => {\n // Iterate all the order lines and grab any searchcodes that have changed.\n let result: string[] = [];\n for (let line of newOrder) {\n if (!line.SearchCode) continue;\n let json = JSON.stringify(line);\n if ((result.indexOf(line.SearchCode) < 0) && oldOrder.findIndex((compLine) => JSON.stringify(compLine).localeCompare(json) == 0) < 0) {\n // Not found, must have changed.\n result = result.concat(line.SearchCode);\n }\n }\n\n for (let line of oldOrder) {\n if (!line.SearchCode) continue;\n let json = JSON.stringify(line);\n if ((result.indexOf(line.SearchCode) < 0) && newOrder.findIndex((compLine) => JSON.stringify(compLine).localeCompare(json) == 0) < 0) {\n // Not found, must have changed.\n result = result.concat(line.SearchCode);\n }\n }\n\n return result;\n };\n\n UncancelSubscription = (subscriptionID: string) => {\n let ctrl = new OrderController();\n this.incIsLoading();\n let addPromise = ctrl.uncancelSubscription(subscriptionID);\n addPromise\n .then(() => {\n appSettings.success(\"Successfully reactivated subscription\");\n\n this.decIsLoading();\n })\n .catch((reason:any) => this.catchError(reason, \"uncanceling subscription\"));\n return addPromise;\n };\n\n CancelSubscription = (keyCode: IKeycodeDetailsDTO) => {\n if (keyCode.SearchCode) {\n let ctrl = new OrderController();\n ctrl.cancelSubscription(keyCode.SearchCode);\n }\n };\n\n\n // This will return an order that the will be passed to Fastspring (like the cart is). \n CreateNewCloudConnectSubscription = (account: ICloudConnectAccountsDTO, qty: number) => {\n let ctrl = new OrderController();\n this.incIsLoading();\n if (!account.UniqueId) throw new Error(\"Account doesn't have an ID - refresh.\");\n let addPromise = ctrl.createNewCloudConnectSubscription(account.UniqueId, qty);\n addPromise\n .then(() => {\n this.decIsLoading();\n })\n .catch((reason) => this.catchError(reason, \"creating new CloudConnect subscription\"));\n return addPromise;\n };\n\n ChangeCloudConnectSubscription = (account: ICloudConnectAccountsDTO, qty: number) => {\n let ctrl = new OrderController();\n this.incIsLoading();\n if (!account.UniqueId) throw new Error(\"Account doesn't have an ID - refresh.\");\n let addPromise = ctrl.changeCloudConnectSubscription(account.UniqueId, qty);\n addPromise\n .then(() => {\n this.decIsLoading();\n })\n .catch((reason) => this.catchError(reason, \"updating CloudConnect subscription\"));\n return addPromise;\n };\n\n GetCloudConnectManagementURL = (account: ICloudConnectAccountsDTO) => {\n let ctrl = new OrderController();\n this.incIsLoading();\n if (!account.UniqueId) throw new Error(\"Account doesn't have an ID - refresh.\");\n let urlPromise = ctrl.getCloudConnectPaymentManagementURL(account.UniqueId);\n urlPromise\n .then(() => {\n this.decIsLoading();\n })\n .catch((reason) => this.catchError(reason, \"getting a management URL\"));\n return urlPromise;\n }\n\n\n incIsLoading = () => {\n const newCount = this.state.isLoadingCount + 1;\n this.setState({\n isLoading: newCount != 0,\n isLoadingCount: newCount\n });\n };\n\n decIsLoading = () => {\n const newCount = this.state.isLoadingCount - 1;\n this.setState({\n isLoading: newCount != 0,\n isLoadingCount: newCount\n });\n };\n\n orderCompleted = (orderId: string) => {\n const orderController = new OrderController();\n const request = orderController.completeFastspringOrder(orderId);\n request.then(response => {\n // Reload the order\n this.loadOrder();\n // Also need to reload the rest of stuff, too...\n }).catch((reason) => this.catchError(reason, \"completing order\", false));\n return request;\n };\n \n compareItemPrices = (i1: IOrderItemDTO, i2: IOrderItemDTO) => {\n const p1 = (i1.Prices && i1.Prices.length > 0) ? i1.Prices[0][1] : 99999;\n const p2 = (i2.Prices && i2.Prices.length > 0) ? i2.Prices[0][1] : 99999;\n return p1-p2;\n };\n\n getBestItemForProgram = (program: ProgramType, type: OrderItemType) => {\n // Don't include anything with a custom pricing rule...\n let items = this.state.items.filter(i => i.Program == program && i.Type == type && !i.CustomPricingRule);\n if (items.length > 1) {\n // Filter it down.\n items = items\n .sort(this.compareItemPrices);\n }\n if (items.length == 0) return undefined;\n return items[0];\n };\n \n getBestItemForLicense = (keyCode: IKeycodeDetailsDTO, type: OrderItemType) => {\n let items = this.state.items.filter(i => i.Program == keyCode.Program && i.Type == type);\n if (items.length > 1) {\n // Filter it down.\n const keyRules = (keyCode.CustomPricingRule || \"\").replace(\",\",\";\").split(\";\");\n items = items\n .filter(i => \n !i.CustomPricingRule || keyRules.includes(i.CustomPricingRule))\n .sort(this.compareItemPrices);\n }\n if (items.length == 0) return undefined;\n return items[0];\n };\n \n getPriceForLicense = (keyCode: IKeycodeDetailsDTO, qty: number, type: OrderItemType) => {\n let item = this.getBestItemForLicense(keyCode, type);\n if (!item || !item.Prices) return 0;\n let tier = [...item.Prices].sort((a, b) => (b[0] - a[0])).find(a => a[0] <= qty);\n if (!tier) return 0;\n return tier[1];\n };\n\n getPriceForProgram = (program: ProgramType, qty: number, type: OrderItemType) => {\n let item = this.getBestItemForProgram(program, type);\n if (!item || !item.Prices) return 0;\n let tier = [...item.Prices].sort((a, b) => (b[0] - a[0])).find(a => a[0] <= qty);\n if (!tier) return 0;\n return tier[1];\n };\n \n getTradeInValue = (keyCode: IKeycodeDetailsDTO) => {\n let multipleCount = keyCode.KeyCount;\n\n // We don\"t yet know how to trade in site licenses.\n if (keyCode.KeyCount > 249) {\n return 0;\n }\n\n // Get the price for a new Standard license (for credit)\n let credit = this.getPriceForLicense(keyCode, OrderItemType.NewLicense, multipleCount);\n if (credit == 0) return 0;\n\n // If maintenance is expired, figure out what it takes to get it back on.\n let daysExpired = (new Date().getTime() - new Date(keyCode.New_MaintenanceGoodThrough).getTime()) / (1000 * 60 * 60 * 24);\n\n // Give a 10 day grace period for full tradein\n if (daysExpired > 10) {\n if (daysExpired > 365 + 10) {\n credit -= this.getPriceForLicense(keyCode, OrderItemType.Upgrade, multipleCount);\n }\n else {\n credit -= this.getPriceForLicense(keyCode, OrderItemType.ExtendMaintenance, multipleCount);\n }\n }\n return credit * multipleCount;\n };\n\n //\n // findPriceTier = (programId: number, qty: number): IProgramPricesDTO | undefined => {\n // // reverse the sort - we want to find the last one with a qty less than or equal to passed in.\n // return this.state.prices.filter(a => a.Program == programId).sort((a, b) => (b.Quantity - a.Quantity)).find(a => a.Quantity <= qty);\n // };\n\n loadItems = () => {\n const orderController = new OrderController();\n orderController.getItemsWithPrices().then(response => {\n this.setState({ items: response });\n }).catch((reason) => this.catchError(reason, \"loading prices\", false));\n };\n\n loadOrder = () => {\n this.incIsLoading();\n const orderController = new OrderController();\n orderController.getOrder().then(response => {\n // Get a list of all changed codes\n let changedCodes = this.compareOrders(this.state.orderLines, response);\n this.setState({\n error: \"\",\n orderLines: response\n });\n this.decIsLoading();\n if (changedCodes.length > 0) {\n // If we had any changed lines, call the event about it.\n this._onOrderUpdated.emit(\"keycodeUpdated\", changedCodes);\n }\n }).catch((reason) => {\n this.catchError(reason, \"loading order\", true);\n this.setState({\n orderLines: []\n });\n }\n );\n };\n\n catchError = (reason: any, task: string, clearLoading: boolean = true) => {\n let msg = reason;\n let showError = true;\n if (reason.response && reason.response.data && reason.response.data.Error) {\n msg = reason.response.data.Error;\n }\n if (reason.response && reason.response.status == 401) {\n showError = false;\n }\n if (clearLoading) this.decIsLoading();\n this.setState({\n error: msg\n });\n if (showError) {\n appSettings.error(\"Error \" + task + \": \" + msg);\n }\n };\n\n componentDidUpdate = (prevProps: OrderProps) => {\n if (prevProps.user != this.props.user) {\n this.loadOrder();\n this.loadItems();\n }\n }\n\n componentWillMount = () => {\n if (this.props.user) {\n this.loadOrder();\n this.loadItems();\n }\n }\n\n invoiceLineTotals = () => {\n // First, calculate all the totals (don't worry about grouping by product name yet)\n let totals: InvoiceLine[] = [];\n for (const line of this.state.orderLines) {\n let description = line.ItemTypeName;\n let total = totals.find(invoiceLine => invoiceLine.Description == description && invoiceLine.ProductName == line.ProductName);\n if (!total) {\n // We only allow 1 line of things with other details right now.\n let otherDetails: any = {};\n try {\n otherDetails = JSON.parse(line.OtherDetailsJson || \"{}\");\n } catch {\n }\n total = { ProductName: line.ProductName || \"\", ProductCode: line.ProductCode || \"\", Description: description || \"\", Price: 0, Qty: 0, Total: 0, ItemType: line.ItemType, otherDetails: otherDetails };\n totals = totals.concat(total);\n }\n total.Price = ((total.Price * total.Qty) + (line.Price * line.Qty)) / (line.Qty + total.Qty);\n total.Qty = (line.Qty + total.Qty);\n total.Total = total.Price * total.Qty;\n }\n return totals;\n };\n\n AddQtyToKey = (searchCode: string, itemType: OrderItemType, qty: number) => {\n let ctrl = new OrderController();\n this.incIsLoading();\n let addPromise = ctrl.addQtyToKeycode(searchCode, itemType, qty);\n addPromise\n .then(() => {\n this.loadOrder();\n this.decIsLoading();\n })\n .catch((reason) => this.catchError(reason, \"adding item to order\"));\n return addPromise;\n };\n\n AddOrderLineRaw = (newLine: IOrderLinesDTO) => {\n let ctrl = new OrderController();\n this.incIsLoading();\n let addPromise = ctrl.addOrderLineRaw(new OrderLinesDTO(newLine))\n addPromise\n .then(() => {\n this.loadOrder();\n this.decIsLoading();\n })\n .catch((reason) => this.catchError(reason, \"adding item to order\"));\n return addPromise;\n };\n\n UpdateOrderLineRaw = (updatedLine: IOrderLinesDTO) => {\n let ctrl = new OrderController();\n this.incIsLoading();\n let addPromise = ctrl.updateOrderLineRaw(new OrderLinesDTO(updatedLine))\n addPromise\n .then(() => {\n this.loadOrder();\n this.decIsLoading();\n })\n .catch((reason) => this.catchError(reason, \"updating item in order\"));\n return addPromise;\n };\n\n ClearCart = () => {\n let ctrl = new OrderController();\n this.incIsLoading();\n let clearPromise = ctrl.clearCart();\n clearPromise\n .then(() => {\n this.loadOrder();\n this.decIsLoading();\n })\n .catch((reason) => this.catchError(reason, \"clearing cart\"));\n return clearPromise;\n };\n\n RemoveItemById = (id: number) => {\n let ctrl = new OrderController();\n this.incIsLoading();\n let removePromise = ctrl.removeItemEntryFromOrder(id);\n removePromise\n .then(() => {\n this.loadOrder();\n this.decIsLoading();\n })\n .catch((reason) => this.catchError(reason, \"removing item from order\"));\n return removePromise;\n };\n\n\n RemoveItemByKeyAndType = (searchCode: string, itemType: number) => {\n let ctrl = new OrderController();\n this.incIsLoading();\n let removePromise = ctrl.removeItemTypeFromKey(searchCode, itemType);\n removePromise\n .then(() => {\n this.loadOrder();\n this.decIsLoading();\n })\n .catch(error => this.catchError(error, \"removing item from order\"));\n return removePromise;\n };\n\n RemoveItemsByProductAndType = (productCode: string, itemType: number) => {\n let ctrl = new OrderController();\n this.incIsLoading();\n let removePromise = ctrl.removeItemsByProductAndType(productCode, itemType);\n removePromise\n .then(() => {\n this.loadOrder();\n this.decIsLoading();\n })\n .catch(error => this.catchError(error, \"removing item from order\"));\n return removePromise;\n };\n\n orderLinesGroupedByProductName = () => {\n\n const totals = this.invoiceLineTotals();\n\n let result: GroupedLines[] = [];\n for (const total of totals) {\n let invoiceLine: GroupedLines;\n let invoiceIdx = result.findIndex(line => line.product == total.ProductName);\n if (invoiceIdx < 0) {\n invoiceLine = {\n product: total.ProductName,\n lines: [total]\n };\n result = result.concat(invoiceLine);\n } else {\n invoiceLine = result[invoiceIdx];\n invoiceLine.lines = invoiceLine.lines.concat(total);\n }\n }\n return result;\n };\n\n GetOrderForFastspring = () => {\n let ctrl = new OrderController();\n this.incIsLoading();\n let orderPromise = ctrl.lockFastspringOrder(true);\n orderPromise.then(() => {\n this.decIsLoading();\n // Could actually do the order here, but we're loading the library in the cart, not here.\n }).catch((reason) => this.catchError(reason, \"getting order for Fastspring\"));\n return orderPromise;\n };\n \n CreateQuote = () => {\n let ctrl = new OrderController();\n this.incIsLoading();\n let orderPromise = ctrl.createQuote();\n orderPromise.then(() => {\n this.decIsLoading();\n // Could actually do the order here, but we're loading the library in the cart, not here.\n }).catch((reason) => this.catchError(reason, \"creating quote\"));\n return orderPromise;\n }\n \n CopyQuoteToOrder = (quoteID: string) => {\n let ctrl = new OrderController();\n this.incIsLoading();\n let orderPromise = ctrl.createOrderFromQuote(quoteID);\n orderPromise.then(() => {\n this.decIsLoading();\n this.loadOrder();\n // Could actually do the order here, but we're loading the library in the cart, not here.\n }).catch((reason) => this.catchError(reason, \"copying order to quote\"));\n return orderPromise;\n }\n\n render() {\n return (\n \n {this.props.children}\n \n )\n }\n}\nconst OrderConsumer = OrderContext.Consumer;\nexport { OrderConsumer, OrderProvider };\n\nexport function withOrder(WrappedComponent: React.ComponentType) {\n return (props: any) => {\n const order = useContext(OrderContext);\n return ();\n }\n}\n","// Implementation based on https://usehooks.com/#useScript\n\nimport { useState, useEffect } from \"react\";\n\nconst cachedScripts: string[] = [];\ninterface Attributes {\n [key: string]: string;\n}\n\nfunction useScript(src: string, attributes: Attributes) {\n // Keeping track of script loaded and error state\n const [state, setState] = useState({\n error: false,\n loaded: false\n });\n\n useEffect(\n () => {\n // If cachedScripts array already includes src that means another instance ...\n // ... of this hook already loaded this script, so no need to load again.\n if (cachedScripts.includes(src)) {\n setState({\n error: false,\n loaded: true\n });\n return;\n } else {\n cachedScripts.push(src);\n\n // Create script\n const script = document.createElement(\"script\");\n script.src = src;\n script.async = true;\n\n if (attributes) {\n const attributeKeys = Object.keys(attributes);\n attributeKeys.forEach(key => {\n const value = attributes[key];\n if (value) {\n script.setAttribute(key, value);\n }\n });\n }\n\n // Script event listener callbacks for load and error\n const onScriptLoad = () => {\n setState({\n error: false,\n loaded: true\n });\n };\n\n const onScriptError = () => {\n // Remove from cachedScripts we can try loading again\n const index = cachedScripts.indexOf(src);\n if (index >= 0) {\n cachedScripts.splice(index, 1);\n }\n script.remove();\n\n setState({\n error: true,\n loaded: true\n });\n };\n\n script.addEventListener(\"load\", onScriptLoad);\n script.addEventListener(\"error\", onScriptError);\n\n // Add script to document body\n document.body.appendChild(script);\n\n // Remove event listeners on cleanup\n return () => {\n script.removeEventListener(\"load\", onScriptLoad);\n script.removeEventListener(\"error\", onScriptError);\n };\n }\n },\n [src] // Only re-run effect if script src changes\n );\n\n return [state.loaded, state.error];\n}\n\nexport default useScript;","import useScript from \"./useScript\";\n\nconst DEFAULT_SDK_URL =\n \"https://d1f8f9xcsvx3ha.cloudfront.net/sbl/0.7.6/fastspring-builder.min.js\";\n\ninterface fsParams {\n accessKey: string,\n storeFront: string,\n onPopupClose?: (orderInfo: any) => void,\n onError?: (code: string, error: string) => void,\n onWebhook?: (data: any) => void,\n sdkUrl?: string;\n}\n\nfunction useFastspring({accessKey, storeFront, onPopupClose, sdkUrl, onError, onWebhook}: fsParams) {\n const [loaded] = useScript(sdkUrl || DEFAULT_SDK_URL, {\n \"data-access-key\": accessKey,\n \"data-popup-closed\": \"onFSPopupClosed\",\n \"data-error-callback\": \"onFSErrorCallback\",\n \"data-popup-webhook-received\": \"onFSWebhookReceived\",\n \"data-storefront\": storeFront,\n id: \"fsc-api\",\n type: \"text/javascript\"\n });\n\n const fastspring = (window as any).fastspring;\n\n if (onPopupClose) {\n (window as any).onFSPopupClosed = onPopupClose;\n }\n \n if (onError) {\n (window as any).onFSErrorCallback = onError;\n }\n \n if (onWebhook) {\n (window as any).onFSWebhookReceived = onWebhook;\n }\n\n return { loaded, fastspring };\n}\n\nexport default useFastspring;","import * as React from \"react\";\nimport { Component, useState } from \"react\";\nimport appSettings from \"@app/appSettings\";\nimport { EventEmitter } from 'events';\nimport { OrderContext, OrderState } from \"@app/context/OrderContext\";\nimport { CheckoutDTO, IInitialStateDTO } from \"@app/models\";\nimport useFastspring from \"@utils/use-fastspring\";\n\n\ninterface WrapperProps {\n children: any;\n}\n\ninterface CheckoutProps {\n fastspring: any,\n fsLoaded: boolean;\n error?: string;\n fsEvents: EventEmitter;\n}\n\ninterface CheckoutState {\n checkoutInProgress: boolean,\n pendingOrder: any\n}\n\nexport interface ICheckoutContext {\n CheckoutFastspring: (order: CheckoutDTO[]) => void;\n CheckoutInProgress: boolean;\n}\n\nexport const CheckoutContext = React.createContext(null);\n\nconst CheckoutProvider = (props: WrapperProps) => {\n\n const events = new EventEmitter();\n const storeFront = ((window as any).initialState as IInitialStateDTO).FastspringStoreFrontPopup;\n const accessKey = ((window as any).initialState as IInitialStateDTO).FastspringSecretsId;\n const [error, setError] = useState(undefined);\n\n const {loaded, fastspring} = useFastspring({\n accessKey: accessKey,\n storeFront: storeFront,\n onError: (fsCode, fsError) => {\n setError(fsError);\n events.emit(\"error\", fsCode, fsError);\n },\n onPopupClose: orderInfo => {\n events.emit(\"popupClosed\", orderInfo);\n },\n onWebhook: data => {\n events.emit( \"webhook\", data);\n },\n sdkUrl: 'https://d1f8f9xcsvx3ha.cloudfront.net/sbl/0.8.3/fastspring-builder.min.js' // this is the default value\n });\n\n return (\n \n {props.children}\n \n );\n};\n\n\nclass CheckoutProvider_internal extends Component {\n static contextType = OrderContext;\n\n constructor(props: CheckoutProps) {\n super(props);\n this.state = {\n checkoutInProgress: false,\n pendingOrder: undefined\n };\n }\n\n componentWillMount() {\n this.props.fsEvents.addListener(\"error\", this.fastspringError);\n this.props.fsEvents.addListener(\"popupClosed\", this.fastspringPopupClosed);\n }\n\n componentWillUnmount() {\n this.props.fsEvents.removeListener(\"error\", this.fastspringError);\n this.props.fsEvents.removeListener(\"popupClosed\", this.fastspringPopupClosed);\n }\n\n fastspringError = (code: number, message: string) => {\n appSettings.error(\"Error calling fastspring: \" + message);\n this.setState({ checkoutInProgress: false });\n };\n\n fastspringPopupClosed = (orderInfo: any) => {\n\n // popup closed: Object {id: \"cbhpinwOS52LKQ5SMoU812\", reference: \"FUR161216-8786-75309\"}\n if (orderInfo && orderInfo.id) {\n const orderId = orderInfo.id;\n const orderState = this.context as OrderState;\n if (!orderState) return;\n orderState.OrderCompleted(orderId).then(() => {\n // Ideally, we'd get a notification from the server and not force a full reload, but\n // for now let's reload the page to make sure everything's fresh after order completion.\n window.location.reload();\n }\n );\n }\n\n this.setState({ checkoutInProgress: false });\n };\n\n\n checkOutFastspring = (order: CheckoutDTO[]) => {\n try {\n // If fastspring isn't loaded, let's load it now.\n if (!this.props.fastspring) {\n this.setState({\n checkoutInProgress: true,\n pendingOrder: order\n });\n return;\n }\n\n // Fastspring is loaded, let's check out\n this.props.fastspring.builder.reset(() => {\n \n // Recursive call for multi-part orders\n const checkout = (orders: CheckoutDTO[]) => {\n const firstOrder = orders.shift();\n if (!firstOrder) { return; }\n this.props.fastspring.builder.secure(firstOrder.Payload, firstOrder.Key, (obj: any) => {\n if (obj) {\n if (orders.length > 0) {\n checkout(orders);\n return;\n }\n this.props.fastspring.builder.checkout();\n this.setState({ checkoutInProgress: false });\n } else {\n }\n });\n };\n \n checkout(order);\n });\n } catch (e) {\n appSettings.error(\"Error submitting order to Fastspring: \" + e.message);\n }\n };\n\n render() {\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nconst CheckoutConsumer = CheckoutContext.Consumer;\nexport { CheckoutProvider, CheckoutConsumer };","import * as React from \"react\";\nimport { Component } from \"react\";\nimport { OrderConsumer, OrderState } from \"@app/context/OrderContext\";\nimport Loader from \"@app/components/Loader\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTimesCircle, faFilter } from \"@fortawesome/free-solid-svg-icons\";\nimport appSettings from \"@app/appSettings\";\nimport { Link } from \"react-router-dom\";\nimport { OrderItemType } from \"@app/models\";\nimport { CheckoutConsumer, CheckoutProvider, ICheckoutContext } from \"@app/context/CheckoutContext\";\nimport { Button, DropdownItem, DropdownMenu, DropdownToggle, UncontrolledButtonDropdown } from \"reactstrap\";\n\nexport interface IProps {\n onCloseCart: () => void;\n}\n\nexport default class Checkout extends Component {\n checkOutFastspring = (orderState: OrderState, checkoutState: ICheckoutContext) => {\n orderState.GetOrderForFastspring().then(response => {\n if (!checkoutState) return;\n checkoutState.CheckoutFastspring(response);\n }).catch(\n error =>\n appSettings.error(JSON.stringify(error))\n );\n };\n\n render() {\n return (\n \n {checkoutState => checkoutState &&\n \n {(orderState) => orderState && (orderState.orderLines.length > 0) &&\n \n \n {\n orderState.orderLinesGrouped().map((group) => (\n \n
{group.product}
\n {group.lines.map(line => {\n // Cloudconnect lines look a little different, so figure that out here.\n const isCC = line.ItemType == OrderItemType.CloudConnect;\n const isNewSubscription = line.ItemType == OrderItemType.CloudConnect || line.ItemType == OrderItemType.RemoteBundle || line.ItemType == OrderItemType.NewSubscription;\n const qty = isCC ? \"\" : line.Qty;\n const isCloud = line.ProductCode == \"Cloud\";\n let descr = \"\";\n if (isCC && !isCloud) {\n const traces = line.otherDetails.Traces || 0;\n const agents = line.otherDetails.Agents || 0;\n descr = \"CloudConnect: \" + [traces + \" traces\", agents > 0 ? agents + \" agents\" : \"\"].filter(s => !!s).join(\", \");\n descr += \" @ $\" + (line.Price * line.Qty).toFixed(2);\n } else if(isCloud){\n descr = line.Qty + \" Traces\" + \" @ $\" + line.Price.toFixed(2);\n } else {\n descr = line.Description + \" @ $\" + line.Price.toFixed(2);\n }\n if (isNewSubscription) {\n const term = line.otherDetails.Term || 1;\n if (term % 12 == 0) {\n const years = term / 12;\n if (years == 1) descr += \"/year\";\n else descr += \"/\" + years + \" years\";\n } else {\n if (term == 1) descr += \"/month\";\n else descr += \"/\" + term + \" months\";\n }\n }\n return (\n );\n }\n )}\n
\n ))\n }\n
\n \n {\n e.preventDefault();\n orderState.ClearCart();\n this.props.onCloseCart();\n }}>\n Total: ${orderState.orderLines.reduce((total, current) => {\n return total + current.Price * current.Qty;\n }, 0).toFixed(2)}\n \n
\n \n \n \n \n Other ways to pay\n Stripe (not yet active)\n Check/Purchase Order (not yet active)\n \n \n
\n }\n
}\n
\n
\n );\n }\n}","import * as React from \"react\";\nimport {\n Modal,\n ModalHeader,\n ModalBody,\n NavItem,\n Nav,\n} from \"reactstrap\";\nimport { AuthContext, PasswordState } from \"@app/context/AuthContext\";\nimport { OrderConsumer } from '@app/context/OrderContext';\nimport { faShoppingCart } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Checkout from '@app/components/Layout/Checkout';\nimport Button from \"reactstrap/lib/Button\";\n\n\nexport interface IProps {\n}\n\nexport interface IState {\n showEmailEditor: boolean;\n showPasswordEditor: boolean;\n showImpersonationEditor: boolean;\n newEmail: string;\n newPassword: string;\n verifyPassword: string;\n passwordState: PasswordState;\n passwordChangeSubmitted: boolean;\n impersonatedUser: string;\n helpDropOpen: boolean;\n collapsed: boolean;\n cartVisible: boolean;\n}\n\nexport default class ShoppingCart extends React.Component {\n\n static contextType = AuthContext;\n\n constructor(props:any) {\n super(props);\n this.state = {\n showEmailEditor: false,\n showPasswordEditor: false,\n showImpersonationEditor: false,\n newEmail: \"\",\n newPassword: \"\",\n verifyPassword: \"\",\n passwordState: { good: false, message: \"\", strength: 0 },\n passwordChangeSubmitted: false,\n impersonatedUser: \"\",\n helpDropOpen: false,\n collapsed: false,\n cartVisible: false\n };\n }\n public render() {\n return ( \n \n {(orderState) => orderState && (orderState.orderLines.length > 0) && \n \n \n {this.state.cartVisible &&\n \n { this.setState({ cartVisible: false }); }}>Shopping Cart\n \n { this.setState({ cartVisible: false }); }} />\n \n \n }\n \n }\n \n \n );\n }\n}\n","import { ClientUsage, ClusterInfo, ICloudConnectAccountsDTO, SentinelInfo } from '@app/models';\r\nimport { ICloudConnectMagnetoActivatorsDTO } from '@app/models';\r\nimport { ICloudConnectAccountContactRoleDTO } from '@app/models';\r\nimport { ISentinelInfo } from '@app/models';\r\nimport { IClusterInfo } from '@app/models';\r\nimport { ISessionInfo } from '@app/models';\r\nimport { MagHubController } from '@app/models';\r\nimport appSettings from '@app/appSettings';\r\n\r\nimport * as React from 'react';\r\nimport { HubConnectionBuilder, HubConnection, HubConnectionState } from '@aspnet/signalr';\r\nimport { BaseURL } from '@app/utils/BaseURL';\r\nimport { CloudConnectAccountController } from '@app/models';\r\n\r\n\r\nexport interface CloudConnectContextProps {\r\n user: string\r\n}\r\n\r\nexport interface CloudConnectContextState {\r\n error: string;\r\n isLoading: boolean;\r\n accounts: ICloudConnectAccountsDTO[];\r\n clusters: IClusterInfo[];\r\n agents: ISentinelInfo[];\r\n controllerActivators: ICloudConnectMagnetoActivatorsDTO[];\r\n targets: ISessionInfo[];\r\n sessionLimit: number;\r\n role: ICloudConnectAccountContactRoleDTO | undefined;\r\n setupStep: number;\r\n sessionCount: number;\r\n showWalkthrough: boolean;\r\n}\r\n\r\nexport interface CloudConnectContext {\r\n state: CloudConnectContextState;\r\n showCloudConnectStatuses: () => boolean;\r\n\r\n createCloudConnectTrialAccount: () => Promise;\r\n createCluster: (cloudconnectAccount: string, name: string) => Promise;\r\n createAgent: (clusterID: string, name: string) => Promise;\r\n createMagnetoActivator: (cloudconnectAccount: string, name: string) => Promise;\r\n\r\n getClustersForAccount: (accountId: string) => IClusterInfo[];\r\n getAgentsForAccount: (accountId: string) => ISentinelInfo[];\r\n getAgent: (agentId: string) => ISentinelInfo | undefined;\r\n getActivatorsForAccount: (accountId: string) => ICloudConnectMagnetoActivatorsDTO[];\r\n getTargetsForAccount: (accountId: string) => ISessionInfo[];\r\n getTargetsForAgent: (agentId: string) => ISessionInfo[];\r\n getTargetsForController: (controllerId: string) => ISessionInfo[];\r\n getAgentDownloadLink: (agent: ISentinelInfo) => Promise;\r\n getAgentActivationLink: (agent: ISentinelInfo) => Promise;\r\n\r\n editCluster: (updatedModel: IClusterInfo) => Promise;\r\n editAgent: (agent: ISentinelInfo) => Promise;\r\n editAgents: (agentsToUpdate: Map) => Promise;\r\n\r\n editAccountName: (account: string, newName: string) => Promise;\r\n editAccountLimits: (account: string, sessionLimit: number, agentLimit: number) => Promise\r\n\r\n deleteAgent: (agent: ISentinelInfo | null, uninstallAgent: boolean) => Promise;\r\n deleteTarget: (session: ISessionInfo) => Promise;\r\n deleteCluster: (cluster: IClusterInfo) => Promise;\r\n\r\n requestSupportTicketFromAgent: (agent: ISentinelInfo) => Promise;\r\n forceAgentToReconnect: (agentId: string) => Promise;\r\n\r\n registerMagnetoActivationCallback: (activatorUniqueId: string, callback: (activator: ICloudConnectMagnetoActivatorsDTO) => void) => void;\r\n unregisterMagnetoActivationCallbacks: (activatorUniqueId: string) => void;\r\n\r\n reload: () => void;\r\n clearMachineIDForSentinel: (agent: ISentinelInfo) => Promise;\r\n updateSessionCount: (sessionCount: number) => void;\r\n toggleShowWalkthrough: () => void;\r\n\r\n}\r\n\r\n\r\nexport const CloudConnectContext = React.createContext(null);\r\n\r\nclass CloudConnectProvider extends React.Component {\r\n\r\n private readonly maghubController: MagHubController\r\n = new MagHubController();\r\n\r\n private readonly cloudconnectAccountController: CloudConnectAccountController\r\n = new CloudConnectAccountController();\r\n\r\n private readonly notificationsHub: HubConnection = new HubConnectionBuilder()\r\n .withUrl(BaseURL(\"/notifications\"))\r\n .build();\r\n\r\n private readonly magnetoActivationCallbacks: Map = new Map();\r\n\r\n constructor(props: CloudConnectContextProps) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n error: '',\r\n accounts: new Array(),\r\n clusters: new Array(),\r\n agents: new Array(),\r\n controllerActivators: new Array(),\r\n targets: new Array(),\r\n sessionLimit: 100,\r\n role: undefined,\r\n setupStep: 0,\r\n sessionCount: -1,\r\n showWalkthrough: false\r\n };\r\n }\r\n\r\n infoToaster = (message: string, clearLoading: boolean = true) => {\r\n appSettings.success(message);\r\n this.setState({ isLoading: !clearLoading && this.state.isLoading });\r\n };\r\n\r\n catchError = (reason: any, task: string, clearLoading: boolean = true) => {\r\n let msg = reason;\r\n let showError = true;\r\n if (reason.response && reason.response.data && reason.response.data.Error) {\r\n msg = reason.response.data.Error;\r\n }\r\n if (reason.response && reason.response.status == 401) {\r\n showError = false;\r\n }\r\n this.setState({\r\n isLoading: clearLoading ? false : this.state.isLoading,\r\n error: msg\r\n });\r\n if (showError) {\r\n appSettings.error(\"Error \" + task + \": \" + msg);\r\n }\r\n };\r\n\r\n createControllerActivator = async (cloudconnectAccount: string, name: string) => {\r\n this.setState({ isLoading: true });\r\n try {\r\n const activator = await this.cloudconnectAccountController.createMagnetoActivator(cloudconnectAccount, name);\r\n this.setState({ controllerActivators: this.state.controllerActivators.concat(activator) });\r\n this.setupSubscriptions();\r\n this.setState({ isLoading: false });\r\n return activator;\r\n } catch (ex) {\r\n this.catchError(ex, 'Creating Magneto Activator');\r\n return null;\r\n }\r\n };\r\n\r\n createTrialCloudConnectAccount = async () => {\r\n this.setState({ isLoading: true });\r\n try {\r\n const account = await this.cloudconnectAccountController.createCloudConnectTrialAccount();\r\n this.setState({ accounts: this.state.accounts.concat(account) });\r\n this.setState({ isLoading: false });\r\n return account;\r\n } catch (ex) {\r\n this.catchError(ex, 'Creating Magneto Activator');\r\n return null;\r\n }\r\n };\r\n\r\n registerMagnetoActivationCallback = (activatorUniqueId: string, callback: any) => {\r\n if (!this.magnetoActivationCallbacks.has(activatorUniqueId)) {\r\n this.magnetoActivationCallbacks.set(activatorUniqueId, [callback]);\r\n } else {\r\n const callbacks = this.magnetoActivationCallbacks.get(activatorUniqueId);\r\n\r\n if (callbacks) {\r\n this.magnetoActivationCallbacks.set(activatorUniqueId, callbacks.concat(callback));\r\n }\r\n }\r\n };\r\n\r\n unregisterMagnetoActivationCallbacks = (activatorUniqueId: string) => {\r\n if (this.magnetoActivationCallbacks.has(activatorUniqueId)) {\r\n this.magnetoActivationCallbacks.delete(activatorUniqueId);\r\n } else {\r\n return;\r\n }\r\n };\r\n\r\n toggleShowWalkthrough() {\r\n this.setState({ showWalkthrough: !this.state.showWalkthrough });\r\n }\r\n\r\n updateSessionCount = (count: number) => {\r\n this.setState({\r\n sessionCount: count\r\n })\r\n }\r\n createCluster = async (cloudconnectAccount: string, name: string) => {\r\n this.setState({ isLoading: true });\r\n\r\n try {\r\n const cluster = await this.maghubController.createCluster(cloudconnectAccount, name);\r\n this.setState({ clusters: this.state.clusters.concat(cluster) });\r\n } catch (exception) {\r\n this.catchError(exception, 'Creating Cluster');\r\n }\r\n\r\n this.setState({ isLoading: false });\r\n };\r\n\r\n createAgent = async (clusterId: string, name: string) => {\r\n this.setState({ isLoading: true });\r\n try {\r\n const cluster = this.state.clusters.find(c => c.ID === clusterId);\r\n if (!cluster || !cluster.CloudConnectAccountGuid || !cluster.ID) throw new Error(\"Cluster \" + clusterId + \" not found\");\r\n const agent = await this.maghubController.createAgentForCluster(cluster.CloudConnectAccountGuid, cluster.ID, name);\r\n this.setState({ agents: this.state.agents.concat(agent) });\r\n this.infoToaster(`Successfully created agent with name of ${agent.Name} for Cluster: ${cluster.Name}`);\r\n return agent;\r\n } catch (exception) {\r\n this.catchError(exception, 'Creating agent');\r\n return undefined;\r\n }\r\n };\r\n\r\n async editCluster(updatedModel: IClusterInfo) {\r\n if (!updatedModel || !updatedModel.CloudConnectAccountGuid || !updatedModel.ID) throw new Error(\"editCluster must have values.\");\r\n await this.maghubController.editCluster(updatedModel.CloudConnectAccountGuid, updatedModel.ID, new ClusterInfo(updatedModel));\r\n await this.updateClusters(updatedModel.CloudConnectAccountGuid);\r\n }\r\n\r\n getAgentDownloadLink = async (agent: ISentinelInfo) => {\r\n const cluster = this.state.clusters.find(c => c.ID == agent.ClusterID);\r\n if (!cluster) throw new Error(\"Cluster \" + agent.ClusterID + \" for agent \" + agent.Name + \" not found.\");\r\n if (!cluster.CloudConnectAccountGuid || !agent.UniqueID) throw new Error(\"Agent has empty values.\");\r\n const accountId = cluster.CloudConnectAccountGuid;\r\n return await this.maghubController.agentDownloadLink(accountId, agent.UniqueID);\r\n };\r\n\r\n getAgentActivationLink = async (agent: ISentinelInfo) => {\r\n const cluster = this.state.clusters.find(c => c.ID == agent.ClusterID);\r\n if (!cluster) throw new Error(\"Cluster \" + agent.ClusterID + \" for agent \" + agent.Name + \" not found.\");\r\n if (!cluster.CloudConnectAccountGuid || !agent.UniqueID) throw new Error(\"Agent has empty values.\");\r\n const accountId = cluster.CloudConnectAccountGuid;\r\n return await this.maghubController.getAgentActivationLink(accountId, agent.UniqueID);\r\n };\r\n\r\n requestSupportTicketFromAgent = async (agent: ISentinelInfo) => {\r\n this.setState({ isLoading: true });\r\n try {\r\n const cluster = this.state.clusters.find(c => c.ID == agent.ClusterID);\r\n if (!cluster) throw new Error(\"Cluster \" + agent.ClusterID + \" for agent \" + agent.Name + \" not found.\");\r\n if (!cluster.CloudConnectAccountGuid || !agent.UniqueID) throw new Error(\"Agent has empty values.\");\r\n const accountId = cluster.CloudConnectAccountGuid;\r\n const response = await this.maghubController.requestSupportTicketFromSentinel(accountId, agent.UniqueID);\r\n appSettings.success(\"Support ticket requested from agent \" + agent.Name + \".\");\r\n return response;\r\n } catch (ex) {\r\n this.catchError(ex, 'Requesting support ticket');\r\n throw ex;\r\n } finally {\r\n this.setState({ isLoading: false });\r\n }\r\n };\r\n\r\n clearMachineIDForSentinel = async (agent: ISentinelInfo) => {\r\n this.setState({ isLoading: true });\r\n try {\r\n const cluster = this.state.clusters.find(c => c.ID == agent.ClusterID);\r\n if (!cluster) throw new Error(\"Cluster \" + agent.ClusterID + \" for agent \" + agent.Name + \" not found.\");\r\n if (!cluster.CloudConnectAccountGuid || !agent.UniqueID) throw new Error(\"Clearing machine for sentinel had empty values.\");\r\n const accountId = cluster.CloudConnectAccountGuid;\r\n const updatedAgent = await this.maghubController.clearMachineIDForSentinel(accountId, agent.UniqueID);\r\n this.updateAgentInList(updatedAgent);\r\n appSettings.success(\"Agent unlocked from machine - next connected machine will be allowed to connect as agent \" + agent.Name + \".\");\r\n return updatedAgent;\r\n } catch (ex) {\r\n this.catchError(ex, 'Clearing agent machine identifier');\r\n throw ex;\r\n } finally {\r\n this.setState({ isLoading: false });\r\n }\r\n };\r\n\r\n editAgent = async (agent: ISentinelInfo) => {\r\n const cluster = this.state.clusters.find(c => c.ID == agent.ClusterID);\r\n if (!cluster) throw new Error(\"Cluster \" + agent.ClusterID + \" for agent \" + agent.Name + \" not found.\");\r\n if (!cluster.CloudConnectAccountGuid || !agent.UniqueID) throw new Error(\"Clearing machine for sentinel had empty values.\");\r\n const accountId = cluster.CloudConnectAccountGuid;\r\n const updatedAgent = await this.maghubController.editAgent(accountId, new SentinelInfo(agent));\r\n this.updateAgentInList(updatedAgent);\r\n };\r\n\r\n private updateAgentInList = (updatedAgent: ISentinelInfo) => {\r\n const agentIndex = this.state.agents.findIndex((a) => a.UniqueID == updatedAgent.UniqueID);\r\n if (agentIndex >= 0) {\r\n let newArray = this.state.agents.slice(0); // Copy the array\r\n // Looks like usage always comes over null, so copy it from the old one.\r\n if (!updatedAgent.Usage && newArray[agentIndex].Usage) {\r\n updatedAgent.Usage = new ClientUsage(newArray[agentIndex].Usage);\r\n }\r\n newArray[agentIndex] = updatedAgent;\r\n this.setState({ agents: newArray });\r\n }\r\n };\r\n\r\n // makes request to the MagHub to update\r\n editAgents = async (agentsToUpdate: Map) => {\r\n const errors = new Set();\r\n const promises = new Array>();\r\n\r\n const agents = Array.from(agentsToUpdate.values());\r\n for (let i = 0; i < agents.length; i++) {\r\n let agent = agents[i];\r\n const cluster = this.state.clusters.find(c => c.ID == agent.ClusterID);\r\n if (!cluster) throw new Error(\"Cluster \" + agent.ClusterID + \" for agent \" + agent.Name + \" not found.\");\r\n const accountId = cluster.CloudConnectAccountGuid;\r\n if (agent && accountId && agent.UniqueID ) {\r\n promises.push(this.maghubController.editAgent(accountId, new SentinelInfo(agent)).catch((reason) => {\r\n // typescript can't tell this is defined \r\n if (agent && agent.UniqueID) {\r\n errors.add(agent.UniqueID);\r\n }\r\n }));\r\n }\r\n }\r\n await Promise.all(agentsToUpdate);\r\n\r\n const newAgents = this.state.agents.map((a) => {\r\n if (!a || !a.UniqueID || errors.has(a.UniqueID)) {\r\n return a;\r\n }\r\n\r\n let updatedAgent = agentsToUpdate.get(a.UniqueID);\r\n\r\n if (updatedAgent) {\r\n return updatedAgent;\r\n } else {\r\n return a;\r\n }\r\n });\r\n\r\n if (newAgents) {\r\n this.setState({ agents: newAgents });\r\n }\r\n };\r\n\r\n // only to be used for beta accounts \r\n editAccountLimits = async (account: string, sessionLimit: number, agentLimit: number) => {\r\n const updatedAccount = await this.cloudconnectAccountController.modifyLimitsForBetaCloudConnectAccount(account, sessionLimit, agentLimit);\r\n const otherAccounts = this.state.accounts.filter(acc => acc.UniqueId !== account);\r\n this.setState({ accounts: [...otherAccounts, updatedAccount] });\r\n };\r\n\r\n deleteAgent = async (agentToDelete: ISentinelInfo | null, uninstallAgent: boolean) => {\r\n if (!agentToDelete) {\r\n return;\r\n }\r\n const cluster = this.state.clusters.find(c => c.ID == agentToDelete.ClusterID);\r\n if (!cluster) throw new Error(\"Cluster \" + agentToDelete.ClusterID + \" for agent \" + agentToDelete.Name + \" not found.\");\r\n if (!cluster.CloudConnectAccountGuid || !agentToDelete.UniqueID) throw new Error(\"Missing values deleting agent\");\r\n try {\r\n await this.maghubController.deleteAgent(cluster.CloudConnectAccountGuid, agentToDelete.UniqueID, uninstallAgent);\r\n await this.updateAgents(cluster.CloudConnectAccountGuid);\r\n this.infoToaster(`Successfully deleted CloudConnect Agent: ${agentToDelete.Name} from ${cluster.Name}`);\r\n } catch (exception) {\r\n this.catchError(exception, 'deleting CloudConnect agent', false);\r\n }\r\n };\r\n\r\n deleteTarget = async (sessionToDelete: ISessionInfo) => {\r\n try {\r\n const agent = this.state.agents.find(a => a.UniqueID == sessionToDelete.SentinelUniqueID);\r\n if (!agent) return;\r\n const cluster = this.state.clusters.find(c => c.ID === agent.ClusterID);\r\n if (!cluster) return;\r\n if (!cluster.CloudConnectAccountGuid || !sessionToDelete.UniqueID) throw new Error(\"Missing cluster values deleting target\");\r\n await this.maghubController.deleteTarget(cluster.CloudConnectAccountGuid, sessionToDelete.UniqueID);\r\n await this.updateTargets(cluster.CloudConnectAccountGuid);\r\n\r\n // Make sure target is deleted.\r\n const copyOfSessions = [...this.state.targets];\r\n const sessionsIndex = copyOfSessions.findIndex(s => s.UniqueID === sessionToDelete.UniqueID);\r\n if (sessionsIndex >= 0) {\r\n copyOfSessions.splice(sessionsIndex, 1);\r\n this.setState({\r\n targets: copyOfSessions\r\n });\r\n }\r\n this.infoToaster(`Successfully deleted Target: ${sessionToDelete.OriginalTarget} on Agent: ${agent.Name}`);\r\n } catch (exception) {\r\n this.catchError(exception, 'deleting CloudConnect session', false);\r\n }\r\n };\r\n\r\n deleteCluster = async (cluster: IClusterInfo) => {\r\n if (!cluster.CloudConnectAccountGuid || !cluster.ID) throw new Error(\"Cluster has missing identifier\");\r\n await this.maghubController.deleteCluster(cluster.CloudConnectAccountGuid, cluster.ID);\r\n await this.updateClusters(cluster.CloudConnectAccountGuid);\r\n };\r\n\r\n editAccountName = async (accountToEdit: string, newName: string) => {\r\n try {\r\n this.setState({isLoading: true});\r\n await this.maghubController.renameAccount(accountToEdit, newName);\r\n this.setState({accounts: await this.getCloudConnectAccounts()});\r\n } catch (exception) {\r\n this.catchError(exception, 'renaming account');\r\n } finally {\r\n this.setState({isLoading: false});\r\n }\r\n };\r\n\r\n init = async () => {\r\n this.setState({ isLoading: true });\r\n\r\n let accounts = await this.getCloudConnectAccounts() ?? [];\r\n\r\n let clusters: IClusterInfo[] = [];\r\n let agents = new Array();\r\n let targets = new Array();\r\n \r\n let initPromises = new Array();\r\n for (let account of accounts) {\r\n if (!account.UniqueId) continue;\r\n\r\n initPromises.push(this.maghubController.getClustersForCloudConnectAccount(account.UniqueId)\r\n .then(newClusters => {\r\n if (!newClusters) return;\r\n clusters = [...clusters, ...newClusters];\r\n })\r\n .catch(er => this.catchError(er, 'Error initializing CloudConnectContext / agent groups', false)));\r\n }\r\n\r\n Promise.all(initPromises).then(() => {\r\n // Targets and agents are cluster-related. Pull for all clusters after we've gotten the list of clusters (and everything account-related)\r\n let loadClusterPromises = new Array();\r\n\r\n for (let cluster of clusters) {\r\n if (!cluster.ID || !cluster.CloudConnectAccountGuid) continue;\r\n\r\n loadClusterPromises.push(\r\n this.maghubController.getAgentsForCluster(cluster.CloudConnectAccountGuid, cluster.ID)\r\n .then(newAgents => {\r\n if (!newAgents) return;\r\n agents = [...agents, ...newAgents];\r\n })\r\n .catch(er => this.catchError(er, 'Error initializing CloudConnectContext / agents', false)));\r\n\r\n loadClusterPromises.push(\r\n this.maghubController.getTargetsForCluster(cluster.CloudConnectAccountGuid, cluster.ID)\r\n .then(newTargets => {\r\n if (!newTargets) return;\r\n targets = [...targets, ...newTargets];\r\n })\r\n .catch(er => this.catchError(er, 'Error initializing CloudConnectContext / targets', false)));\r\n }\r\n\r\n Promise.all(loadClusterPromises).then(async () => {\r\n this.setState({\r\n clusters: clusters,\r\n accounts: accounts,\r\n agents: agents,\r\n targets: targets\r\n });\r\n\r\n await this.initSignalR();\r\n this.setState({ isLoading: false });\r\n })\r\n })\r\n };\r\n\r\n handleCloudConnectAccountUpdated = async (cloudconnectAccount: string) => {\r\n this.setState({accounts: await this.getCloudConnectAccounts()});\r\n\r\n // these promises rely on the promises above (controllers & clusters in state) \r\n await Promise.all([this.updateAgents(cloudconnectAccount), this.updateTargets(cloudconnectAccount)]);\r\n };\r\n\r\n getCloudConnectAccounts = async () => {\r\n try {\r\n const accounts = await this.cloudconnectAccountController.cloudConnectAccounts();\r\n return accounts;\r\n } catch (e) {\r\n this.catchError(e, 'loading CloudConnect subscriptions', false);\r\n return [];\r\n }\r\n };\r\n\r\n getMagnetoActivatorsForAccount = async (accountId: string) => {\r\n try {\r\n return await this.cloudconnectAccountController.magnetoActivatorsForAccount(accountId);\r\n } catch (e) {\r\n this.catchError(e, 'getting Magneto activator', false);\r\n return undefined;\r\n }\r\n };\r\n\r\n reload = () => this.init();\r\n\r\n showCloudConnectStatuses = () => this.state.isLoading && this.state.accounts.length > 0 || (this.state.accounts.length > 0);\r\n\r\n initSignalR = async () => {\r\n if (this.notificationsHub.state === HubConnectionState.Disconnected) {\r\n await this.notificationsHub.start();\r\n } else {\r\n await this.notificationsHub.stop();\r\n await this.notificationsHub.start();\r\n }\r\n this.notificationsHub.on(\"Pong\", _ => console.log('pong'));\r\n this.notificationsHub.on('CloudConnectAccountUpdated', this.handleCloudConnectAccountUpdated);\r\n await this.notificationsHub.invoke('Ping');\r\n this.setupSubscriptions();\r\n };\r\n\r\n\r\n setupSubscriptions = () => {\r\n this.subscribeToAllCloudConnectAccountsInState();\r\n };\r\n\r\n subscribeToAllCloudConnectAccountsInState = () => {\r\n for (let account of this.state.accounts) {\r\n if (!account.UniqueId) continue;\r\n this.subscribeToCloudConnectAccountUpdates(account.UniqueId);\r\n }\r\n };\r\n\r\n subscribeToClusterUpdates = (uniqueID: string) => this.notificationsHub.send('Subscribe', 'Cluster', uniqueID);\r\n\r\n subscribeToCloudConnectAccountUpdates = (uniqueID: string) => this.notificationsHub.send('Subscribe', 'CloudConnectAccount', uniqueID);\r\n\r\n subscribeToAgentUpdates = (uniqueID: string) => this.notificationsHub.send('Subscribe', 'Sentinel', uniqueID);\r\n\r\n subscribeToControllerUpdates = (uniqueID: string) => this.notificationsHub.send('Subscribe', 'Magneto', uniqueID);\r\n\r\n updateClusters = async (cloudconnectAccount: string) => {\r\n const newClusters = await this.maghubController.getClustersForCloudConnectAccount(cloudconnectAccount);\r\n const otherAccountsClusters = this.state.clusters.filter(c => c.CloudConnectAccountGuid !== cloudconnectAccount);\r\n this.setState({ clusters: [...otherAccountsClusters, ...newClusters] });\r\n };\r\n\r\n updateAgents = async (cloudconnectAccount: string) => {\r\n const clustersForCloudConnectAccount = this.state.clusters.filter(c => c.CloudConnectAccountGuid === cloudconnectAccount);\r\n const otherAgents = this.state.agents.filter(a => clustersForCloudConnectAccount.filter(c => c.ID === a.ClusterID).length === 0);\r\n let updatedAgentsForCloudConnectAccount = new Array();\r\n\r\n for (let cluster of clustersForCloudConnectAccount) {\r\n if (!cluster.ID) continue;\r\n const agentsForCluster = await this.maghubController.getAgentsForCluster(cloudconnectAccount, cluster.ID);\r\n updatedAgentsForCloudConnectAccount = [...updatedAgentsForCloudConnectAccount, ...agentsForCluster];\r\n }\r\n\r\n this.setState({ agents: [...otherAgents, ...updatedAgentsForCloudConnectAccount] });\r\n };\r\n\r\n updateTargets = async (cloudconnectAccount: string) => {\r\n const clustersForCloudConnectAccount = this.state.clusters.filter(c => c.CloudConnectAccountGuid === cloudconnectAccount);\r\n const otherTargets = this.state.targets.filter(t => t.CloudConnectAccountUniqueID !== cloudconnectAccount);\r\n let updatedTargetsForCloudConnectAccount = new Array();\r\n\r\n for (let cluster of clustersForCloudConnectAccount) {\r\n if (!cluster.ID) continue;\r\n const targetsForCluster = await this.maghubController.getTargetsForCluster(cloudconnectAccount, cluster.ID);\r\n updatedTargetsForCloudConnectAccount = [...updatedTargetsForCloudConnectAccount, ...targetsForCluster];\r\n }\r\n\r\n this.setState({ targets: [...otherTargets, ...updatedTargetsForCloudConnectAccount] });\r\n };\r\n\r\n forceAgentToReconnect = async (agentId: string) => {\r\n const agent = this.state.agents.find(c => c.UniqueID === agentId);\r\n\r\n if (agent) {\r\n const cluster = this.state.clusters.find(c => c.ID === agent.ClusterID);\r\n\r\n if (cluster && cluster.CloudConnectAccountGuid && agent.UniqueID) {\r\n await this.maghubController.forceAgentToReconnect(cluster.CloudConnectAccountGuid, agent.UniqueID)\r\n appSettings.info(\"Agent will be disconnected for a few seconds.\");\r\n }\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: CloudConnectContextProps, prevState: CloudConnectContextState) {\r\n if (prevProps.user !== this.props.user && !this.state.isLoading) {\r\n // Reload cloudconnect if the user changes\r\n this.init();\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n if (this.props.user) {\r\n this.init();\r\n }\r\n };\r\n \r\n getTargetsForAccount = (account: string) => {\r\n const cerebroTargets = this.state.targets.filter(t => t.CloudConnectAccountUniqueID === account || t.CloudConnectAccountUniqueID === 'ce4eb401-0000-0000-0000-000000000000')\r\n return cerebroTargets;\r\n }\r\n\r\n render() {\r\n return (\r\n this.state.clusters.filter(c => c.CloudConnectAccountGuid === account),\r\n getActivatorsForAccount: (account) => this.state.controllerActivators.filter(a => a.CloudConnectAccountGuid === account),\r\n getAgentsForAccount: (account) => this.state.agents.filter(a => this.state.clusters.filter(c => c.CloudConnectAccountGuid === account).filter(c => c.ID === a.ClusterID).length > 0),\r\n getAgent: (agentId) => this.state.agents.find(a => a.UniqueID == agentId),\r\n getTargetsForAccount: this.getTargetsForAccount,\r\n getTargetsForAgent: (agentId) => this.state.targets.filter(t => t.SentinelUniqueID === agentId),\r\n getTargetsForController: (controllerId) => this.state.targets.filter(t => t.MagnetoUniqueID === controllerId),\r\n\r\n createAgent: this.createAgent,\r\n createCluster: this.createCluster,\r\n createCloudConnectTrialAccount: this.createTrialCloudConnectAccount,\r\n createMagnetoActivator: this.createControllerActivator,\r\n\r\n editCluster: this.editCluster,\r\n editAgent: this.editAgent,\r\n editAgents: this.editAgents,\r\n editAccountName: this.editAccountName,\r\n editAccountLimits: this.editAccountLimits,\r\n\r\n deleteAgent: this.deleteAgent,\r\n deleteTarget: this.deleteTarget,\r\n deleteCluster: this.deleteCluster,\r\n\r\n registerMagnetoActivationCallback: this.registerMagnetoActivationCallback,\r\n unregisterMagnetoActivationCallbacks: this.unregisterMagnetoActivationCallbacks,\r\n\r\n forceAgentToReconnect: this.forceAgentToReconnect,\r\n\r\n reload: this.reload,\r\n requestSupportTicketFromAgent: this.requestSupportTicketFromAgent,\r\n\r\n updateSessionCount: this.updateSessionCount,\r\n toggleShowWalkthrough: this.toggleShowWalkthrough,\r\n clearMachineIDForSentinel: this.clearMachineIDForSentinel,\r\n }}\r\n >\r\n {this.props.children}\r\n \r\n );\r\n }\r\n\r\n\r\n // signalR related stuff \r\n\r\n //async setupSubscriptions(connection: SignalR.HubConnection) {\r\n\r\n // for (let controller of this.state.controllers) {\r\n // await connection.send('Subscribe', 'Magneto', controller.UniqueID)\r\n // }\r\n\r\n // for (let agent of this.state.agents) {\r\n // await connection.send('Subscribe', 'Sentinel', agent.UniqueID)\r\n // }\r\n //}\r\n\r\n //async setupSignalR() {\r\n\r\n // this.hubConnection = new SignalR.HubConnectionBuilder()\r\n // .withUrl(\"/notifications\")\r\n // .build()\r\n\r\n // await this.hubConnection.start()\r\n\r\n // this.hubConnection.on('StatusUpdate', this.handleStatusUpdate)\r\n // await this.setupSubscriptions(this.hubConnection)\r\n //}\r\n}\r\n\r\n\r\nconst CloudConnectConsumer = CloudConnectContext.Consumer;\r\nexport { CloudConnectProvider, CloudConnectConsumer };\r\n","import * as React from \"react\";\nimport {\n Navbar,\n Nav,\n NavItem,\n NavLink,\n Dropdown,\n DropdownItem,\n DropdownToggle,\n DropdownMenu, UncontrolledAlert\n} from \"reactstrap\";\nimport { Link } from \"react-router-dom\";\nimport { AuthContext, AuthConsumer } from \"@app/context/AuthContext\";\nimport ShoppingCart from \"./ShoppingCart\";\nimport { CloudConnectContext, CloudConnectConsumer } from '@app/context/CloudConnectContext'\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\n\nexport interface ISecondNavProps {\n}\n\nexport interface ISecondNavState {\n dropdownOpen: boolean,\n helpDropdownOpen: boolean\n}\n\nexport default class SecondNav extends React.Component {\n\n static contextType = AuthContext;\n\n constructor(props: ISecondNavProps) {\n super(props);\n this.toggle = this.toggle.bind(this);\n\n this.state = {\n dropdownOpen: false,\n helpDropdownOpen: false\n };\n }\n private isCurrentPage(link: string) {\n let currPath = window.location.pathname;\n if (currPath == link) {\n return true;\n } else {\n return false;\n }\n\n }\n\n toggle() {\n this.setState({\n dropdownOpen: !this.state.dropdownOpen\n });\n }\n\n toggleHelp = () => {\n this.setState({\n helpDropdownOpen: !this.state.helpDropdownOpen\n });\n }\n startWalkthrough() {\n localStorage.setItem(\"dismissedWalkthrough\", \"false\");\n }\n\n public render() {\n return (\n \n {authState => authState && (\n {authState.isAuth &&\n \n \n \n \n }\n
\n \n This portal (and related CloudConnect features) has been sunset (as of Nov 25th, 2021). Please visit PingPlotter Cloud for an improved replacement. If you have questions, please Cloud Migration Questions\"}>contact us.\n \n
\n
)\n }\n
\n );\n }\n}\n\n","import React from \"react\";\n\nconst PageFooter = () =>
\n
\n Copyright 1998-2022 Pingman Tools, LLC. All Rights Reserved.\n
\n
\n\nexport default PageFooter;\n\n \n","import * as React from 'react'\nimport Alert from '@components/Alert'\nimport { AuthConsumer } from '@app/context/AuthContext'\nimport { Container } from 'reactstrap'\nimport { Tooltip } from '@progress/kendo-react-tooltip'\nimport MainNav from '@app/components/Layout/MainNav';\nimport SecondNav from '@app/components/Layout/SecondNav';\nimport PageFooter from \"@components/Layout/PageFooter\";\n\nexport interface ILayoutProps {\n HideSecondNav?: boolean;\n children: any\n}\n\ninterface ILayoutState {\n cartVisible: boolean;\n}\n\nexport default class Layout extends React.Component {\n constructor(props: ILayoutProps) {\n super(props);\n this.state = {\n cartVisible: false\n };\n }\n \n public render() {\n const { children } = this.props\n return (\n \n \n {!this.props.HideSecondNav && }\n < Container fluid={true} >\n \n props.title && props.title != \"undefined\"}>\n \n {authState => (\n \n
\n
\n {\n // Show the impersonation status (and allow a cancel)\n authState?.IsImpersonatingUser && (\n \n )\n }\n
\n
\n {children}\n
\n )}\n
\n
\n \n \n
\n )\n }\n}\n","// Set the colors and more detailed name (could be path to filtered list or similar)\nexport type licenseTypes = \"PP_Pro\" | \"PP_Std\" | \"MultiPing\" | \"iSpeed\" | \"MP_Lite\" | \"Sidekick\" | \"UNKNOWN\";\n\nexport enum ProgramType {\n ptUNKNOWN = 0,\n ptPINGPLOTTER_STANDARD = 1,\n ptMULTIPING_LITE = 2,\n ptPINGPLOTTER_PRO = 3,\n ptMULTIPING = 4,\n ptISPEED = 5,\n ptCLOUDCONNECT = 110,\n ptREMOTEBUNDLE = 111,\n ptSIDEKICK = 112,\n ptSERVERCHECK = 127\n}\n\nexport const licenseTypeDetails: { [key in licenseTypes]: { name: string; title: string; color: string; sort: number; id: number } } = {\n \"PP_Pro\": { id: ProgramType.ptPINGPLOTTER_PRO, name: \"PingPlotter Pro\", title: \"Professional\", color: \"#0690CF\", sort: 1 },\n \"PP_Std\": { id: ProgramType.ptPINGPLOTTER_STANDARD, name: \"PingPlotter Standard\", title: \"Standard\", color: \"#EC8E16\", sort: 2 },\n \"MultiPing\": { id: ProgramType.ptMULTIPING, name: \"MultiPing\", title: \"MultiPing\", color: \"#6ABC3B\", sort: 3 },\n \"iSpeed\": { id: ProgramType.ptISPEED, name: \"iSpeed\", title: \"iSpeed\", color: \"grey\", sort: 4 },\n \"MP_Lite\": { id: ProgramType.ptMULTIPING_LITE, name: \"MPing Lite (never released)\", title: \"MPing Lite (never release)\", color: \"light-grey\", sort: 5 },\n \"Sidekick\": { id: ProgramType.ptSIDEKICK, name: \"Sidekick\", title: \"Sidekick\", color: \"#EC8E16\", sort:7},\n \"UNKNOWN\": { id: ProgramType.ptSERVERCHECK, name: \"Variable\", title: \"Uknown server-typed\", color: \"light-grey\", sort: 6 }\n};\n\n","import * as React from 'react';\nimport { KeycodesController } from '@app/models';\nimport { IKeycodesDTO, IOrderLinesDTO, licenseTypeDetails, licenseTypes, SubscriptionStatusDTO } from '@app/models';\nimport appSettings from '@app/appSettings';\n\nexport interface KeycodesProps {\n user: string;\n}\n\n// Set the colors and more detailed name (could be path to filtered list or similar)\nexport type KeycodeGroupNames = \"current\" | \"expiring\" | \"expired\" | \"needsupgrade\" | \"activesub\" | \"terminated\" | \"cancelling\";\n\nexport const KeycodeGroups: { [key in KeycodeGroupNames]: { name: string; color: string; sort: number } } = {\n \"current\": { name: \"Current\", color: \"rgba(8, 175, 44, 1)\", sort: 1 },\n \"expiring\": { name: \"Expiring\", color: \"yellow\", sort: 2 },\n \"expired\": { name: \"Recently Expired\", color: \"orange\", sort: 3 },\n \"needsupgrade\": { name: \"Expired over 1 year\", color: \"rgba(201, 79, 79, 1)\", sort: 4 },\n \"activesub\": { name: \"Recurring Subscription\", color: \"rgba(39, 165, 66, 1)\", sort: 5 },\n \"terminated\": { name: \"Cancelled\", color: \"rgba(102, 102, 102, 1)\", sort: 6 },\n \"cancelling\": { name: \"Recharge Problem\", color: \"rgba(229, 215, 21, 1))\", sort: 7 }\n};\n\nexport interface KeycodesState {\n Keycodes: IKeycodesDTO[];\n isLoading: boolean;\n clearFilters: () => void;\n setFilterToCart: (value: boolean) => void;\n setProductFilter: (newFilter: string) => void;\n getFilteredList: (currentOrder?: IOrderLinesDTO[]) => IKeycodesDTO[];\n getFilteredTitle: () => string;\n categoryForKey: (keyCode: IKeycodesDTO) => KeycodeGroupNames;\n setDefunctFilter: (visible: boolean) => void;\n getDefunctFilter: () => boolean;\n hasDefunctCount: () => number;\n}\n\nexport const KeycodesContext = React.createContext(null);\n\nclass KeycodesProvider extends React.Component {\n constructor(props: KeycodesProps) {\n super(props);\n\n this.state = {\n isLoading: true,\n error: \"\",\n keycodes: [],\n productFilter: \"\",\n filterToCart: false,\n defunctFilter: false\n }\n }\n\n catchError = (reason: any, task: string, clearLoading: boolean = true) => {\n let msg = reason;\n let showError = true;\n if (reason.response && reason.response.data && reason.response.data.Error) {\n msg = reason.response.data.Error;\n }\n if (reason.response && reason.response.status == 401) {\n showError = false;\n }\n this.setState({\n isLoading: clearLoading ? false : this.state.isLoading,\n error: msg\n });\n if (showError) {\n appSettings.error(\"Error \" + task + \": \" + msg);\n }\n };\n\n initialKeySorter = (a: IKeycodesDTO, b: IKeycodesDTO) => {\n var aSort = new Date(a.MaintenanceGoodThrough || new Date()).getTime();\n if (a.IsSubscription) aSort = new Date(a.SubscriptionRenewalDate).getTime();\n var bSort = new Date(b.MaintenanceGoodThrough || new Date()).getTime();\n if (b.IsSubscription) aSort = new Date(b.SubscriptionRenewalDate).getTime();\n if (bSort != aSort) return bSort - aSort;\n return b.KeyCount - a.KeyCount;\n };\n\n loadKeycodes = () => {\n this.setState({ isLoading: true });\n const keycodesController = new KeycodesController();\n keycodesController.getKeycodes().then(keycodesResp => {\n this.setState({\n isLoading: false,\n // Sort the keys as they come in - highest maintenance at top so flist\n keycodes: keycodesResp.sort(this.initialKeySorter),\n error: \"\"\n });\n }).catch(error => this.catchError(error, \"loading Licenses\", true));\n };\n\n categoryForKey = (keyCode: IKeycodesDTO): KeycodeGroupNames => {\n let diff = (new Date(keyCode.MaintenanceGoodThrough || new Date()).getTime()) - (new Date().getTime());\n let diffDays = Math.ceil(diff / (1000 * 3600 * 24));\n let status: KeycodeGroupNames = \"expired\";\n if (keyCode.IsSubscription) {\n if (keyCode.SubscriptionStatus == SubscriptionStatusDTO.Active) {\n status = \"activesub\";\n } else if (keyCode.SubscriptionStatus == SubscriptionStatusDTO.Failed) {\n status = \"cancelling\";\n } else {\n status = \"terminated\";\n }\n } else if (diffDays > 45) {\n status = \"current\";\n } else if (diffDays > 0) {\n status = \"expiring\";\n } else if (diffDays < -365) {\n status = \"needsupgrade\";\n }\n return status;\n };\n\n clearFilters = () => {\n this.setState({\n productFilter: \"\",\n filterToCart: false\n });\n };\n\n setProductFilter = (newFilter: string) => {\n this.setState({ productFilter: newFilter });\n };\n\n setFilterToCart = (value: boolean) => {\n this.setState({ filterToCart: value });\n };\n\n defunctCount = () => {\n return this.state.keycodes.length - this.state.keycodes.filter(this.defunctFilterInternal).length;\n }\n\n private defunctFilterInternal = (kc: IKeycodesDTO) => {\n if (kc.KeyCount == 0) return false;\n // If we have an expired subscription\n if ((kc.IsSubscription && kc.SubscriptionStatus != SubscriptionStatusDTO.Active) &&\n // And if we have more than one key in the list\n (this.state.keycodes.length > 1) &&\n // And it's been expired for more than 60 days\n ((new Date().getTime() - new Date(kc.SubscriptionRenewalDate).getTime()) / (1000 * 60 * 60 * 24) > 60)) return false;\n // Expired temp license.\n if (kc.IsTemporary && new Date(kc.MaintenanceGoodThrough || new Date()) <= new Date()) return false;\n return (kc.KeyCount != 0);\n }\n\n defunctFilter = (kc: IKeycodesDTO) => {\n const isDefunct = this.defunctFilterInternal(kc);\n return this.state.defunctFilter ? !isDefunct : isDefunct;\n }\n\n getFilteredList = (currentOrderLines?: IOrderLinesDTO[]) => {\n if (this.state.productFilter) {\n return this.state.keycodes.filter(this.defunctFilter).filter(kc => kc.ProductCode == this.state.productFilter);\n } if (this.state.filterToCart && currentOrderLines) {\n return this.state.keycodes.filter(this.defunctFilter).filter(key => currentOrderLines.findIndex((ol: IOrderLinesDTO) => { return ol.SearchCode == key.SearchCode }) >= 0);\n }\n return this.state.keycodes.filter(this.defunctFilter);\n };\n\n getFilteredTitle = () => {\n if (this.state.productFilter) {\n let productName = \"Unknown product: \" + this.state.productFilter;\n const t = licenseTypeDetails[this.state.productFilter as licenseTypes];\n if (t) {\n productName = t.name + \" only\";\n }\n return productName;\n } else if (this.state.filterToCart) {\n return \"Licenses with actions in cart\";\n\n } else {\n return \"All licenses\"\n }\n };\n\n componentDidUpdate(prevProps: KeycodesProps) {\n if (prevProps.user != this.props.user) {\n this.loadKeycodes();\n }\n };\n\n componentWillMount() {\n if (this.props.user) {\n this.loadKeycodes();\n }\n };\n\n render() {\n return (\n this.state.defunctFilter,\n setDefunctFilter: (visible: boolean) => this.setState({ defunctFilter: visible }),\n hasDefunctCount: this.defunctCount\n }}\n >\n {this.props.children}\n \n )\n }\n}\nconst KeycodesConsumer = KeycodesContext.Consumer;\nexport { KeycodesProvider, KeycodesConsumer }","import * as React from \"react\";\nimport { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { KeycodesState, KeycodesContext } from '@app/context/KeycodesContext';\nimport { SubscriptionStatusDTO } from \"@app/models\";\nimport {\n Card,\n CardBody,\n CardHeader,\n CardTitle,\n Col,\n Button,\n Row\n} from 'reactstrap';\nimport { BaseURL } from \"@app/utils/BaseURL\";\nimport { licenseTypes, licenseTypeDetails } from \"@app/models\";\nimport Progress from \"reactstrap/lib/Progress\";\n\ninterface IProps {\n productCode: licenseTypes\n}\n\ninterface IState {\n}\n\ninterface IProductSummary {\n code: licenseTypes,\n title: string,\n count: number,\n devices: number,\n onMaintCount: number,\n offMaintCount: number,\n activeSubCount: number,\n otherSubCount: number\n}\n\nexport default class ProductSummaryCard extends Component {\n static contextType = KeycodesContext;\n\n constructor(props: IProps) {\n super(props);\n\n this.state = {\n\n };\n }\n\n render() {\n\n const keycodesState = this.context as KeycodesState;\n\n let productKeys = keycodesState.Keycodes.filter(key => key.ProductCode === this.props.productCode);\n\n if (productKeys.length == 0) {\n return null\n }\n\n let product = (productKeys.reduce((result, item) => {\n let code = item.ProductCode as licenseTypes;\n let entry = result.find((entry) => entry.code == code);\n let devices = item.KeyCount;\n\n let onMaintCount = 0;\n let offMaintCount = 0;\n let activeSubCount = 0;\n let otherSubCount = 0;\n\n if (item.IsSubscription) {\n if (item.SubscriptionStatus == SubscriptionStatusDTO.Active) {\n activeSubCount = 1;\n } else {\n otherSubCount = 1;\n }\n } else {\n let onMaint = (new Date(item.MaintenanceGoodThrough || new Date()) > new Date()) ? true : false;\n\n if (onMaint) {\n onMaintCount = 1;\n } else {\n offMaintCount = 1;\n }\n }\n\n if (entry) {\n entry.count++;\n entry.devices += devices;\n entry.onMaintCount += onMaintCount;\n entry.offMaintCount += offMaintCount;\n entry.activeSubCount += activeSubCount;\n entry.otherSubCount += otherSubCount;\n } else {\n result.push({\n code: code,\n title: licenseTypeDetails[code].title,\n count: 1,\n devices: devices,\n onMaintCount: onMaintCount,\n offMaintCount: offMaintCount,\n activeSubCount: activeSubCount,\n otherSubCount: otherSubCount\n });\n }\n return result;\n },\n []\n ))[0];\n let showMaint = product.code != \"Sidekick\" && (product.offMaintCount + product.onMaintCount > 0);\n let showSubs = product.code != \"Sidekick\" && (product.activeSubCount + product.otherSubCount > 0);\n return (\n \n\n \n \n \n \n {((product.title === \"Professional\") || (product.title === \"Standard\")) ? \"PingPlotter \" + product.title : product.title}\n \n \n \n \n \n \n\n \n \n \n \n

\n {productKeys.length}\n

\n
\n TOTAL\n
\n \n {showMaint &&\n \n

\n {product.offMaintCount + product.onMaintCount}\n

\n
\n PERPETUAL\n
\n \n }\n {showSubs &&\n \n

\n {product.activeSubCount + product.otherSubCount}\n

\n
\n SUBSCRIPTION\n
\n \n }\n\n
\n {showMaint && \n \n \n \n
\n {product.onMaintCount} ACTIVE\n
\n \n \n
LICENSE{product.onMaintCount + product.offMaintCount > 1 ? \"S\" : \"\"}
\n \n \n
\n {product.offMaintCount} EXPIRED\n
\n \n
\n
}\n {showSubs && \n \n \n \n
\n {product.activeSubCount} ACTIVE\n
\n \n \n
SUBSCRIPTION{product.activeSubCount + product.otherSubCount ? \"S\" : \"\"}
\n \n \n
\n {product.otherSubCount} INACTIVE\n
\n \n
\n
}\n\n
\n
\n )\n }\n}\n\n","import * as React from \"react\";\r\nimport { Component } from \"react\";\r\nimport { CloudConnectConsumer, CloudConnectContext } from \"@app/context/CloudConnectContext\";\r\nimport { ICloudConnectAccountsDTO } from '@app/models';\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faEdit } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\ninterface IProps {\r\n accountId: string\r\n}\r\n\r\ninterface IState { }\r\n\r\nexport default class EditableAccountName extends Component {\r\n static contextType = CloudConnectContext;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n editAccountName = async (e: React.MouseEvent, account: ICloudConnectAccountsDTO) => {\r\n\r\n e.preventDefault();\r\n\r\n const context = this.context as CloudConnectContext;\r\n const newName = prompt(\"Enter a new account name\", account.Name);\r\n if (newName) {\r\n await context.editAccountName(account.UniqueId || \"\", newName);\r\n }\r\n return;\r\n };\r\n\r\n render() {\r\n const context = (this.context as CloudConnectContext);\r\n let account = context.state.accounts.filter(account => account.UniqueId === this.props.accountId)[0];\r\n return (\r\n \r\n {(cc) => {\r\n return (\r\n \r\n {this.editAccountName(e, account);}}>\r\n {' '}{account.Name ? account.Name : \"Enter a name for your CloudConnect subcription.\"}\r\n \r\n );\r\n }\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n","import * as React from \"react\";\nimport { Component } from \"react\";\nimport { Card, CardHeader, Button } from \"reactstrap\";\nimport CardTitle from \"reactstrap/lib/CardTitle\";\nimport CardBody from \"reactstrap/lib/CardBody\";\nimport { ICloudConnectAccountsDTO } from '@app/models'\nimport { Link } from \"react-router-dom\";\nimport EditableAccountName from \"../CloudConnect/EditableAccountName\";\n\ninterface IProps {\n account: ICloudConnectAccountsDTO\n}\n\ninterface IState {}\n\nexport default class CloudConnectGetStartedCard extends Component {\n constructor(props: IProps) {\n super(props);\n this.state = {\n };\n }\n render() {\n return (\n \n \n Activate CloudConnect\n \n \n \n

\n \n

\n

\n To start using CloudConnect, you must configure your first Controller. Click the button below to begin.\n

\n \n
\n
\n )\n }\n}\n\n","import * as React from \"react\";\nimport { Component } from \"react\";\nimport {\n Row,\n Col,\n Progress\n} from \"reactstrap\";\nimport { CloudConnectContext } from '@app/context/CloudConnectContext'\n\ninterface IProps {\n accountId: string\n}\n\ninterface IState { }\n\nexport default class SessionsStatusBar extends Component {\n static contextType = CloudConnectContext;\n constructor(props: IProps) {\n super(props);\n this.state = {};\n }\n\n render() {\n const context = this.context as CloudConnectContext;\n\n const account = context.state.accounts.filter(account => account.UniqueId === this.props.accountId)[0];\n \n const sessionLimit = account.SessionLimit >= 0 ? account.SessionLimit : 1; //If undefined set it to 1\n\n const openSessions = context.getTargetsForAccount(this.props.accountId).length;\n\n let availableTraces = sessionLimit - openSessions;\n\n let utilization = openSessions / sessionLimit * 100;\n\n return (\n 100 ? \"danger\" : utilization > 85 ? \"warning\" : \"primary\"} value={utilization} />\n \n \n
{openSessions} ACTIVE
\n \n \n
TRACES
\n \n \n
{availableTraces < 0 ? \"OVER LIMIT (of \"+sessionLimit+\") BY \" + Math.abs(availableTraces) : availableTraces +\" AVAILABLE (of \"+sessionLimit+\")\"}
\n \n
\n
)\n }\n}\n\n","import * as React from \"react\";\nimport { Component } from \"react\";\nimport {\n Row,\n Col,\n Progress\n} from \"reactstrap\";\nimport { CloudConnectContext } from '@app/context/CloudConnectContext'\n\n\ninterface IProps {\n accountId: string\n}\n\ninterface IState {\n}\n\nexport default class AgentsStatusBar extends Component {\n static contextType = CloudConnectContext;\n constructor(props: IProps) {\n super(props);\n this.state = {\n\n };\n }\n\n render() {\n const context = this.context as CloudConnectContext;\n\n let accAgents = context.getAgentsForAccount(this.props.accountId);\n\n let activeAgents = accAgents.filter(agent => agent.IsOnline == true);\n return (\n \n \n \n
{activeAgents.length} ACTIVE
\n \n \n
AGENTS
\n \n \n
{accAgents.length - activeAgents.length} IDLE
\n \n
\n
)\n }\n}\n\n","import * as React from \"react\";\nimport { Component } from \"react\";\nimport {\n Row,\n Col,\n} from \"reactstrap\";\nimport { CloudConnectContext } from \"@app/context/CloudConnectContext\";\nimport { SubscriptionStatusDTO } from \"@app/models\";\n\n\ninterface IProps {\n accountId: string\n}\n\ninterface IState {\n}\n\nexport default class AccountStatusBar extends Component {\n static contextType = CloudConnectContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {};\n }\n\n render() {\n const context = this.context as CloudConnectContext;\n const account = context.state.accounts.filter(account => account.UniqueId === this.props.accountId)[0];\n\n return (\n \n

\n {account.Name}\n

\n
\n NAME\n
\n \n {account.SessionLimit &&\n \n

\n {((account.SessionLimit > 1) &&\n (account.SubscriptionStatus === undefined ||\n account.SubscriptionStatus == SubscriptionStatusDTO.Terminated ||\n account.SubscriptionStatus == SubscriptionStatusDTO.Cancelled\n )) ? \"Free Beta\" :\n account.SessionLimit == 1 ? account.SessionLimit + \" Trace\" : account.SessionLimit + \" Traces\"}\n

\n
\n {account.SessionLimit == 1 ? \"PLAN\" : \"SUBSCRIPTION\"}\n
\n \n }\n
);\n }\n}\n\n","import * as React from \"react\"\nimport { Component } from 'react'\nimport { CloudConnectContext } from \"@app/context/CloudConnectContext\";\nimport {\n Card,\n CardBody,\n CardHeader,\n Row,\n Col\n} from \"reactstrap\";\nimport CardTitle from \"reactstrap/lib/CardTitle\";\nimport Button from \"reactstrap/lib/Button\";\nimport { Link } from \"react-router-dom\";\nimport SessionsStatusBar from \"@app/components/CloudConnect/SessionsStatusBar\";\nimport AgentsStatusBar from \"@app/components/CloudConnect/AgentsStatusBar\";\nimport AccountStatusBar from \"@app/components/CloudConnect/AccountStatusBar\";\n\ninterface IProps {\n accountId: string\n isCloud?: boolean\n}\n\ninterface IState {}\n\nexport default class CloudConnectSummaryCard extends Component {\n static contextType = CloudConnectContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n }\n }\n\n render() {\n const context = this.context as CloudConnectContext;\n const account = context.state.accounts.filter(account => account.UniqueId === this.props.accountId)[0];\n if (!account.UniqueId) return Account doesn't have a valid ID;\n const isCloud = this.props.isCloud;\n return (\n \n \n \n \n {isCloud && PingPlotter Cloud}\n {!isCloud && CloudConnect}\n \n \n {isCloud && }\n {!isCloud && }\n \n \n \n \n
\n \n
\n \n \n \n
\n \n
\n
\n
\n );\n }\n}","import * as React from 'react'\nimport {\n Row,\n Col\n} from 'reactstrap';\nimport { CloudConnectContext, CloudConnectConsumer } from '@app/context/CloudConnectContext'\nimport ProductSummaryCard from '@app/components/HomePage/ProductSummaryCard'\nimport { KeycodesContext } from '@app/context/KeycodesContext';\nimport CloudConnectGetStartedCard from '@app/components/HomePage/CloudConnectGetStartedCard';\nimport CloudConnectSummaryCard from '@app/containers/CloudConnectSummaryCard';\nimport { licenseTypes, IKeycodeDetailsDTO } from \"@app/models\";\n\n\ninterface IProps {\n keycodes: IKeycodeDetailsDTO[];\n\n}\n\ninterface IState {\n isLoading: boolean;\n}\n\nexport default class MultiProductCell extends React.Component {\n static contextType = KeycodesContext;\n constructor(props: any) {\n super(props)\n this.state = {\n isLoading: false,\n }\n }\n\n render() {\n // get distinct product codes\n const distinct = (value: string, index: number, self: string[]) => {\n return self.indexOf(value) === index;\n };\n let productCodes = this.props.keycodes.map(code => code.ProductCode || \"\").filter(distinct);\n\n return (\n \n {(cc: CloudConnectContext | null) => cc && !cc.state.isLoading && \n {cc.state.accounts.map(account => \n {((cc.getAgentsForAccount(account.UniqueId || \"\").length === 0) || (cc.getTargetsForAccount(account.UniqueId || \"\").length === 0)) ?\n \n :\n }\n )}\n }\n \n {productCodes.map(code => \n \n )}\n )\n }\n}","import * as React from \"react\"\nimport { Component } from 'react'\nimport { AuthContext, AuthState } from 'context/AuthContext';\nimport { Alert, Button, Row, Col } from 'reactstrap';\nimport ChangePassword from \"@components/User/ChangePassword\";\n\ninterface IProps {\n}\n\ninterface State {\n visible: boolean;\n passwordChangeDialogVisible: boolean;\n}\n\nexport default class TempPasswordNag extends Component {\n\n public readonly state: State = {\n visible: true,\n passwordChangeDialogVisible: false\n }\n\n static contextType = AuthContext;\n\n constructor(props: any) {\n super(props)\n }\n\n onDismiss = () => {\n this.setState({ visible: false });\n }\n\n\n render() {\n const authState = this.context as AuthState\n\n if (!authState || !authState.IsUsingTempPassword) {\n return \n } else {\n return (\n \n \n \n

\n You're logged in with a system generated password. Feel free to keep using it, or set your own password\n

\n \n \n {this.setState({passwordChangeDialogVisible: false})}} visible={this.state.passwordChangeDialogVisible}/>\n \n \n
\n
\n )\n }\n }\n}\n\n//
\n//

You're logged in with a system generated password.

\n//

\n// Feel free to use the same password next time or set your own permanent password with the button.\n//

\n// \n// Set permanent password\n// \n//
","import React from \"react\";\nimport { Component } from \"react\";\nimport { Card, CardHeader, CardBody, CardTitle, Row, Col, Button } from 'reactstrap';\nimport { OrderContext } from \"@app/context/OrderContext\";\nimport { faCopy } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { IKeycodesDTO, } from \"@app/models\";\nimport { BaseURL } from \"@app/utils/BaseURL\";\nimport * as CopyToClipboard from 'react-copy-to-clipboard';\nimport appSettings from \"@app/appSettings\";\nimport { Link } from \"react-router-dom\";\n\n\ninterface IProps {\n keycode: IKeycodesDTO;\n}\n\nexport default class LicenseCard extends Component {\n static contextType = OrderContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {};\n }\n\n render() {\n const keyCode = this.props.keycode;\n const isOnMaintenance = (new Date(keyCode.MaintenanceGoodThrough || new Date()) > new Date());\n return (\n \n \n \n \n {keyCode.KeyCountText}\n \n \n \n \n \n \n \n \n \n \n \n \n
\n {keyCode.KeyCode}  {\n appSettings.success(keyCode.KeyCode + \" in your clipboard!\");\n }}>\n
\n \n \n
\n Name: {keyCode.UserName}\n
\n
\n Created: {new Date(keyCode.Created || \"1980-01-01\").toLocaleDateString()}\n
\n \n \n
\n {keyCode.IsSubscription ? \"Subscription\" :\n keyCode.IsTemporary ? (\"Temporary: \"+new Date(keyCode.MaintenanceGoodThrough || new Date()).toLocaleDateString()):\n \n Maintenance: {isOnMaintenance ? Active :\n Expired}\n }\n
\n \n
\n\n\n \n
\n\n
\n
\n );\n }\n}","import React, { Component } from \"react\";\nimport { IKeycodeDetailsDTO, OrderItemType } from \"@app/models\";\nimport { OrderConsumer } from \"@app/context/OrderContext\";\nimport { Button, ButtonDropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reactstrap';\n\ninterface IProps {\n keycode: IKeycodeDetailsDTO;\n}\n\ninterface IState {\n dropdownOpen: boolean;\n}\n\nexport default class MaintButton extends Component {\n\n constructor(props: any) {\n super(props);\n this.toggleDropdown = this.toggleDropdown.bind(this);\n this.state = {\n dropdownOpen: false,\n }\n }\n toggleDropdown() {\n this.setState({\n dropdownOpen: !this.state.dropdownOpen\n });\n }\n render() {\n let now = new Date();\n const keyCode = this.props.keycode;\n if (keyCode.IsTemporary) return null;\n // If it's expiring in the next 10 days, or already expired, then force an upgrade.\n let upgradeDate = new Date(now.setFullYear(now.getFullYear() - 1));\n upgradeDate = new Date(now.setDate(upgradeDate.getDate() + 10)); // days beyond the limit of the month will wrap without having to worry about it.\n let upgradeNeeded = new Date(keyCode.New_MaintenanceGoodThrough).getTime() < upgradeDate.getTime();\n \n return (\n \n \n {(orderState) => {\n // Get all the licenses in the order with this type.\n if (!orderState) return null;\n const upgradeCount: number = (orderState && orderState.orderLines.filter(line => line.ItemType == OrderItemType.Upgrade && line.ProductCode == keyCode.ProductCode).reduce((prev, line) => { return prev + line.Qty; }, 0)) || 0;\n const extendCount: number = (orderState && orderState.orderLines.filter(line => line.ItemType == OrderItemType.ExtendMaintenance && line.ProductCode == keyCode.ProductCode).reduce((prev, line) => { return prev + line.Qty; }, 0)) || 0;\n const upgradePrice = orderState.GetPriceForLicense(keyCode, keyCode.KeyCount + upgradeCount, OrderItemType.Upgrade);\n const extendPrice = orderState.GetPriceForLicense(keyCode, keyCode.KeyCount + upgradeCount, OrderItemType.ExtendMaintenance);\n const curPriceMultiple = keyCode.KeyCount > 250 ? 1 : keyCode.KeyCount;\n const newPriceMultiple = keyCode.New_KeyCount > 250 ? 1 : keyCode.New_KeyCount;\n const hasPendingConversion = orderState.orderLines.find(ol => ol.SearchCode == keyCode.SearchCode && ol.ItemType == OrderItemType.ConvertLicenseType);\n return orderState && upgradePrice && !(hasPendingConversion && !upgradeNeeded) &&\n \n { orderState.AddQtyToKey(keyCode.SearchCode || \"\", upgradeNeeded ? OrderItemType.Upgrade : OrderItemType.ExtendMaintenance, 1); }}\n id=\"caret\"\n size=\"sm\"\n color={upgradeNeeded ? \"danger\" : \"success\" }\n outline>{upgradeNeeded ? \"Activate for $\" + (upgradePrice * curPriceMultiple).toFixed(2) : \"Add 1 year ($\"+(extendPrice * curPriceMultiple).toFixed(2) +\")\"}\n {!upgradeNeeded && \n \n \n {([1, 2, 3, 4, 5]).map(qty => {\n let price = orderState.GetPriceForLicense(keyCode, qty * newPriceMultiple + extendCount + upgradeCount, OrderItemType.ExtendMaintenance);\n if (!price) return null;\n return (\n { e.preventDefault(); orderState.AddQtyToKey(keyCode.SearchCode || \"\", OrderItemType.ExtendMaintenance, qty); }}\n >{qty} Year{qty > 1 && \"s\"} (${(qty * price * newPriceMultiple).toFixed(2)}{qty > 1 && \" - $\" + (price * newPriceMultiple).toFixed(2) + \"/ yr\"})\n );\n }\n )}\n\n }\n \n }\n }\n \n \n );\n }\n}","import React from \"react\";\nimport { Component } from \"react\";\nimport { Card, CardHeader, CardBody, CardTitle, Row, Col } from 'reactstrap';\nimport { OrderContext, OrderState } from \"@app/context/OrderContext\";\nimport { faTimesCircle, faCartPlus } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { IKeycodeDetailsDTO, OrderItemType } from \"@app/models\";\nimport MaintButton from \"./MaintButton\";\nimport { Link } from \"react-router-dom\";\n\ninterface IProps {\n keycode: IKeycodeDetailsDTO;\n}\n\nexport default class MaintCard extends Component {\n static contextType = OrderContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {};\n }\n\n render() {\n const keyCode = this.props.keycode;\n const orderState = (this.context as OrderState);\n const orderLines = orderState && orderState.orderLines.filter(line => (line.SearchCode == this.props.keycode.SearchCode));\n const licenseYears = orderLines.reduce((years, line) => line.ItemType == OrderItemType.ExtendMaintenance ? (line.Years || 0) + years : years, 0);\n const upgradeCost = orderLines.reduce((total, line) => line.ItemType == OrderItemType.Upgrade ? total + line.Price * line.Qty : total, 0);\n const maintCost = orderLines.reduce((total, line) => line.ItemType == OrderItemType.ExtendMaintenance ? total + line.Price * line.Qty : total, 0);\n const isOnMaintenance = (new Date(keyCode.MaintenanceGoodThrough || new Date()) > new Date());\n return (\n \n \n \n \n \n Maintenance Status\n \n \n \n \n \n \n \n \n\n
\n {keyCode.KeyCount == 0 ? \"This license was traded in or was deactivated.\" :\n \n {keyCode.UserName}'s maintenance {isOnMaintenance ? \"active until \" : \"expired on \"}{new Date(keyCode.MaintenanceGoodThrough || new Date()).toLocaleDateString()}.\n }\n
\n {keyCode.HasPendingUpgrade &&\n
Upgrade @ ${upgradeCost.toFixed(2)} {\n e.preventDefault();\n orderState.RemoveItemByKeyAndType(keyCode.SearchCode || \"\", OrderItemType.Upgrade);\n }}>\n \n
}\n {keyCode.HasPendingExtension &&
+{licenseYears} year{licenseYears > 1 ? \"s\" : \"\"} @ ${maintCost.toFixed(2)} {\n e.preventDefault();\n orderState.RemoveItemByKeyAndType(keyCode.SearchCode || \"\", OrderItemType.ExtendMaintenance);\n }}>\n \n
}\n {keyCode.MaintenanceGoodThrough && keyCode.New_MaintenanceGoodThrough > keyCode.MaintenanceGoodThrough &&\n
Maintenance: {new Date(keyCode.New_MaintenanceGoodThrough).toLocaleDateString()}\n
}\n
\n\n
\n );\n }\n}\n","import React from \"react\";\nimport { Component } from \"react\";\nimport { Card, CardHeader, CardBody, CardTitle, Row, Modal, ModalHeader, ModalFooter, ModalBody } from 'reactstrap';\nimport { faCartPlus } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { IKeycodeDetailsDTO, SubscriptionStatusDTO, ICloudConnectAccountsDTO, OrderItemType } from \"@app/models\";\nimport { OrderContext, OrderState, OrderConsumer } from \"@app/context/OrderContext\";\nimport Col from \"reactstrap/lib/Col\";\nimport Button from \"reactstrap/lib/Button\";\nimport { CloudConnectContext, CloudConnectConsumer } from \"../../context/CloudConnectContext\";\nimport { CheckoutConsumer, CheckoutProvider } from \"../../context/CheckoutContext\";\nimport Loader from \"../Loader\";\nimport appSettings from \"../../appSettings\";\nimport { Link } from \"react-router-dom\";\n\ninterface IProps {\n keycode: IKeycodeDetailsDTO;\n}\n\ninterface IState {\n showConfirmModal: boolean;\n confirmRecurring: number;\n confirmImmediate: number;\n}\n\nexport default class SubsCard extends Component {\n static contextType = OrderContext;\n\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n showConfirmModal: false,\n confirmImmediate: 0,\n confirmRecurring: 0,\n };\n }\n\n onConfirmCancel = (account: ICloudConnectAccountsDTO, order: OrderState) => {\n order.ChangeCloudConnectSubscription(account, 1).then(body => {\n appSettings.success('Successfully cancelled subscription');\n }).catch(e => {\n appSettings.success('Subscription not cancelled: ' + e.Message);\n });\n };\n\n openManagAccountURL = (account: ICloudConnectAccountsDTO, order: OrderState) => {\n order.GetCloudConnectManagementURL(account).then(body => {\n console.log('BODY', body);\n window.open(body);\n });\n };\n\n render() {\n const keyCode = this.props.keycode;\n const orderState = (this.context as OrderState);\n //const priceTier = orderState.GetPriceTier(keyCode.ProgramId, keyCode.KeyCount);\n //const curPrice = keyCode.SubscriptionRenewalPrice > 0 ? keyCode.SubscriptionRenewalPrice : priceTier && priceTier.SubscriptionPrice;\n const newPrice = orderState.GetPriceForLicense(keyCode, OrderItemType.NewSubscription, keyCode.New_KeyCount);\n let showSelectPlanBtn = true;\n if (window.location.href.includes('SelectPlan')) {\n showSelectPlanBtn = false;\n }\n return (\n \n {(order) => order && \n \n \n \n {(checkout) => checkout && \n \n {(cc: CloudConnectContext | null) => cc && !cc.state.isLoading && \n {cc.state.accounts.map(account => account.SubscriptionId === keyCode.SubscriptionId &&\n {\n \n \n \n \n \n Subscription {SubscriptionStatusDTO[keyCode.SubscriptionStatus]}\n \n \n \n {showSelectPlanBtn &&\n }\n \n \n \n \n {(keyCode.SubscriptionStatus == SubscriptionStatusDTO.Terminated) &&\n \n
Subscription Terminated
\n
To reactivate, please purchase\n a new subscription.\n
\n
}\n {(keyCode.SubscriptionStatus == SubscriptionStatusDTO.Cancelled) &&\n \n
Subscription Cancelled
\n
This subscription has been cancelled and will stop\n working {new Date(keyCode.SubscriptionRenewalDate).toLocaleDateString()}.\n
\n
orderState.UncancelSubscription(keyCode.SubscriptionId || \"\")}>Reactivate\n
\n
}\n {(keyCode.SubscriptionStatus == SubscriptionStatusDTO.Active || account.SubscriptionStatus == SubscriptionStatusDTO.Failed) &&\n \n This product\n bills ${((account.SubscriptionRenewalPrice && account.SubscriptionRenewalPrice || 0) * keyCode.KeyCount).toFixed(2)} on {new Date(keyCode.SubscriptionRenewalDate).toLocaleDateString()}\n\n {keyCode.New_KeyCount != null && keyCode.New_KeyCount != keyCode.KeyCount &&\n
\n New monthly:\n ${(((newPrice) || 0) * keyCode.New_KeyCount).toFixed(2)}\n
}\n
}\n
\n \n\n \n \n Confirm subscription change\n \n {!account.RemoteBundle &&\n \n You are about to cancel your CloudConnect subscription plan:\n
    \n
  • New CloudConnect concurrent trace count: 1
  • \n
  • New cost: {this.state.confirmRecurring > 0 ?\n (\n ${this.state.confirmRecurring.toFixed(2)}/month starting {new Date(account.SubscriptionRenewalDate || new Date()).toLocaleDateString()}\n )\n : (Free)}
  • \n {this.state.confirmImmediate &&\n
  • {this.state.confirmImmediate < 0 ? \"Refund\" : \"Charge\"} of ${Math.abs(this.state.confirmImmediate).toFixed(2)} today\n for difference\n through end of period.\n
  • \n }\n
\n Any immediate or recurring changes will happen using the payment method on\n file.\n
\n }{account.RemoteBundle &&\n \n You are about to cancel your Remote Bundle plan:\n
    \n
  • Your PingPlotter license key will become invalid
  • \n
  • You will no longer be able to use CloudConnect
  • \n
\n Any immediate or recurring changes will happen using the payment method on\n file.\n
\n }\n \n {' '}\n \n \n
\n
}\n
)}\n
}\n
\n
}\n
\n
\n
}\n
\n );\n }\n}","import * as React from 'react';\nimport { KeycodesController } from '@app/models';\nimport { IProgramReleaseDTO, IKeycodesDTO, SubscriptionStatusDTO } from '@app/models';\n\nexport interface ReleasesProps {\n user: string;\n}\n\nexport interface ReleasesState {\n Releases: IProgramReleaseDTO[];\n isLoading: boolean;\n getLatestReleasesForKeycode: (key: IKeycodesDTO) => IProgramReleaseDTO[];\n}\n\nexport const ReleasesContext = React.createContext(null);\n\nclass ReleasesProvider extends React.Component {\n constructor(props: ReleasesProps) {\n super(props);\n\n this.state = {\n isLoading: true,\n error: \"\",\n releases: []\n }\n }\n\n loadReleases = () => {\n this.setState({ isLoading: true });\n const keycodesController = new KeycodesController();\n keycodesController.getReleases().then(releasesResp => {\n this.setState({\n isLoading: false,\n releases: releasesResp,\n error: \"\"\n });\n }).catch(error => {\n this.setState({\n isLoading: false,\n error: error.message\n });\n });\n }\n\n getLatestReleasesForKeycode = (key: IKeycodesDTO): IProgramReleaseDTO[] => {\n if (key.KeyCount == 0) {\n return [];\n }\n\n return this.state.releases.filter(pr =>\n !pr.Prerelease &&\n pr.Program == key.Program &&\n (pr.EligibilityDate <= (key.MaintenanceGoodThrough || key.IsSubscription) && key.SubscriptionStatus == SubscriptionStatusDTO.Active)).reduce((prev, current) => {\n var idx = prev.findIndex(g => g.Platform == current.Platform);\n if (idx < 0) {\n prev.push(current);\n } else if (current.ReleaseDate > prev[idx].ReleaseDate) {\n prev[idx] = current;\n }\n return prev;\n }, []);\n }\n\n componentDidUpdate(prevProps: ReleasesProps) {\n if (prevProps.user != this.props.user) {\n this.loadReleases();\n }\n }\n\n componentWillMount() {\n if (this.props.user) {\n this.loadReleases();\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n )\n }\n}\nconst ReleasesConsumer = ReleasesContext.Consumer;\nexport { ReleasesProvider, ReleasesConsumer }","import React from 'react';\nimport { faApple, faWindows } from '@fortawesome/free-brands-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\ninterface FormatNameProps {\n platform: string;\n}\n\nexport const FormatPlatformName = (props: FormatNameProps) => {\n if (props.platform == \"Windows\") {\n return ();\n } else if (props.platform == \"Mac\") {\n return ();\n } else return (props.platform);\n};\n\nexport const FormatPlatformId = (platform: number) => {\n if (platform == 1) {\n return ();\n } else if (platform == 2) {\n return ();\n } else return ({platform});\n};\n","import { IProgramReleaseDTO, IKeycodesDTO } from \"@app/models\";\nimport sanitize from 'sanitize-filename';\n\n// Get rid of supurflous extra version stuff from the description so it's as short as possible based on context around it.\nexport function ShortenVersionNumber(releaseText: string) {\n return releaseText.replace(/PingPlotter|MultiPing|iSpeed|Pro|Standard|Std|Mac|Windows/ig, \"\").replace(\" \", \" \").trim();\n}\n\nexport function GetDownloadURL(release: IProgramReleaseDTO, keyCode: IKeycodesDTO, embed: boolean) {\n return \"/download/\" + keyCode.SearchCode + \"/\" + release.Id + \"/\" + (embed ? \"true\" : \"false\") + \"/\" + (\n embed\n ? sanitize((release.PrivateDownloadTemplate || \"\").replace(\"{{ UserName }}\", keyCode.UserName || \"unknown\"))\n : sanitize(release.PublicDownloadName || \"\"));\n}","import * as React from \"react\"\nimport { Component } from \"react\"\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid'\nimport { SortDescriptor } from \"@progress/kendo-data-query\"\nimport { IKeycodesDTO, IProgramReleaseDTO, SubscriptionStatusDTO } from \"@app/models\";\nimport { FormatPlatformName } from \"../ReactTable/PlatformNameDisplay\";\nimport Badge from \"reactstrap/lib/Badge\";\nimport { Link } from \"react-router-dom\";\nimport { ShortenVersionNumber, GetDownloadURL } from \"@app/utils/ReleaseHelpers\";\nimport ButtonGroup from \"reactstrap/lib/ButtonGroup\";\nimport Button from \"reactstrap/lib/Button\";\nimport { ReleaseFilter } from \"./DownloadsCard\";\nimport { CardBody } from \"reactstrap\";\n\ninterface IColumnMenuProps {\n onCloseMenu: Function | undefined;\n column: any;\n filter: ReleaseFilter;\n setFilter: (newFilter: ReleaseFilter) => void;\n}\n\ninterface IColumnMenuState {\n}\n\nexport class ColumnMenu extends React.Component {\n constructor(props: IColumnMenuProps) {\n super(props);\n this.state = {\n }\n }\n\n\n getHasAnyBeta = () => { return true; }\n\n handleMinorClick(show: boolean) {\n this.props.setFilter({ ...this.props.filter, showMinor: show });\n if (this.props.onCloseMenu) {\n this.props.onCloseMenu();\n }\n }\n\n handlePrereleaseClick(show: boolean) {\n this.props.setFilter({ ...this.props.filter, showPrerelease: show });\n if (this.props.onCloseMenu) {\n this.props.onCloseMenu();\n }\n }\n\n render() {\n return (\n
\n \n \n \n \n {this.getHasAnyBeta() && (\n \n \n \n \n )}\n
\n );\n }\n}\n\ninterface IProps {\n keyCode: IKeycodesDTO;\n releases: IProgramReleaseDTO[];\n filter: ReleaseFilter;\n setFilter: (newFilter: ReleaseFilter) => void;\n}\n\ninterface IState {\n sort: SortDescriptor[];\n}\n\nexport default class DownloadList extends Component {\n constructor(props: any) {\n super(props);\n this.state = {\n sort: []\n }\n }\n\n render() {\n if (this.props.keyCode.KeyCount == 0) {\n return No downloads for defunct license.;\n }\n if (this.props.keyCode.IsSubscription && (this.props.keyCode.SubscriptionStatus != SubscriptionStatusDTO.Active)) {\n return No downloads for expired / inactive subscriptions.;\n }\n return (\n
\n {\n this.setState({\n sort: e.sort\n });\n }}\n\n rowRender={(trElement, props) => {\n // const green = { backgroundColor: \"rgb(55, 180, 0,0.32)\" };\n let className = trElement.props.className;\n var release = props.dataItem as IProgramReleaseDTO;\n if (new Date(release.EligibilityDate) > new Date(this.props.keyCode.MaintenanceGoodThrough || new Date())) {\n if (className.indexOf(\"maint-expired\") < 0) className = className + \" maint-expired\";\n } else {\n className = className.replace(\" maint-expired\", \"\");\n }\n return React.cloneElement(trElement, { className: className }, trElement.props.children);\n }}\n >\n {\n const release = (props.dataItem as IProgramReleaseDTO);\n return ( {ShortenVersionNumber(release.Description || \"\")} {release.Prerelease && β} {!release.Major && minor});\n }}\n columnMenu={(props) => } />\n {new Date((props.dataItem as IProgramReleaseDTO).ReleaseDate).toLocaleDateString()}} />\n {\n const release = (props.dataItem as IProgramReleaseDTO);\n if (new Date(release.EligibilityDate) > new Date(this.props.keyCode.MaintenanceGoodThrough || new Date())) {\n return (Expired Maint);\n }\n return (\n {release.EmbedLicense && Private}\n {' '}Public\n );\n }\n } />\n \n
\n )\n }\n}\n","import * as React from \"react\";\nimport { Component, createRef } from \"react\";\nimport { IKeycodesDTO } from \"@app/models\";\nimport { ReleasesContext, ReleasesState } from \"@app/context/ReleasesContext\";\nimport DownloadList from \"./DownloadList\";\nimport {\n Nav,\n NavItem,\n} from \"reactstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faWindows, faApple } from \"@fortawesome/free-brands-svg-icons\";\nimport 'react-bootstrap-toggle/dist/bootstrap2-toggle.css';\nimport 'scss/components/DownloadsCard.scss';\n\ninterface IProps {\n keyCode: IKeycodesDTO;\n}\n\nexport interface ReleaseFilter {\n platform: string;\n showMinor: boolean;\n showPrerelease: boolean;\n}\n\ninterface IState {\n filter: ReleaseFilter;\n dropdownOpen: boolean;\n}\n\nexport default class DownloadsCard extends Component {\n static contextType = ReleasesContext;\n constructor(props: any) {\n super(props);\n this.toggle = this.toggle.bind(this);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleOutsideClick = this.handleOutsideClick.bind(this);\n this.state = {\n filter: {\n platform: \"Windows\",\n showMinor: false,\n showPrerelease: false,\n },\n dropdownOpen: false,\n }\n }\n\n //private getHasAnyBeta = () => {\n // const releaseState = (this.context as ReleasesState);\n // return releaseState.Releases.filter(r =>\n // r.PlatformName == this.state.platform &&\n // r.Program == this.props.keyCode.Program &&\n // r.Prerelease &&\n // (this.state.showMinor || r.Major)\n // ).length > 0;\n //}\n getHasAnyBeta = () => {\n return true;\n }\n\n private getReleases = () => {\n const releaseState = (this.context as ReleasesState);\n let programPlatformReleases = releaseState.Releases.filter(r =>\n r.PlatformName == this.state.filter.platform &&\n r.Program == this.props.keyCode.Program);\n\n let releases = programPlatformReleases.filter(r =>\n (this.state.filter.showMinor || r.Major) &&\n (this.state.filter.showPrerelease || !r.Prerelease)\n );\n\n // Make sure the most recent eligible download is on this list (even if it's a minor) if the\n // maintenance has expired.\n if (!this.state.filter.showMinor) {\n // Filter to just eligible\n var allEligible = programPlatformReleases.filter(r => new Date(r.EligibilityDate).getTime() <= new Date(this.props.keyCode.MaintenanceGoodThrough || new Date()).getTime());\n if (allEligible.length > 0) {\n // Get the newest from the list (could sort, but that's more expensive)\n let latestEligible = allEligible.reduce((prev, cur, idx) => new Date(cur.ReleaseDate).getTime() > new Date(prev.ReleaseDate).getTime() ? cur : prev, allEligible[0]);\n if (releases.indexOf(latestEligible) < 0) {\n releases.push(latestEligible);\n }\n }\n }\n // Sort by release date, then version number (shouldn't need a secondary sort, but just to be sure).\n return releases\n .sort((a, b) => {\n const da = new Date(a.ReleaseDate).getTime();\n const db = new Date(b.ReleaseDate).getTime();\n if (db - da == 0 && a.VersionNumber) {\n return a.VersionNumber.localeCompare(b.VersionNumber || \"\");\n }\n return db - da;\n });\n }\n\n private nodeRef = createRef()\n\n handleClick() {\n if (!this.state.dropdownOpen) {\n // attach/remove event handler\n document.addEventListener('click', this.handleOutsideClick, false);\n } else {\n document.removeEventListener('click', this.handleOutsideClick, false);\n }\n\n this.setState(prevState => ({\n dropdownOpen: !prevState.dropdownOpen,\n }));\n }\n\n handleOutsideClick(e: any) {\n if (this.nodeRef.current == e.target) {\n return;\n }\n\n this.handleClick();\n }\n\n toggle() {\n this.setState(prevState => ({\n dropdownOpen: !prevState.dropdownOpen\n }));\n }\n\n setFilter = (newFilter: ReleaseFilter) => {\n this.setState({ filter: newFilter });\n }\n\n render() {\n return (
\n \n \n
);\n }\n focus() {\n const node = this.nodeRef.current;\n console.log(\"pin\");\n if (node) {\n console.log(\"pow\");\n node.focus();\n }\n }\n}","import * as React from 'react'\nimport {\n Row,\n Col\n} from 'reactstrap';\nimport { CloudConnectContext, CloudConnectConsumer } from '@app/context/CloudConnectContext'\nimport CloudConnectSummaryCard from '@app/containers/CloudConnectSummaryCard';\nimport { IKeycodeDetailsDTO, ProgramType } from \"@app/models\";\nimport LicenseCard from '@app/components/LicenseListPage/LicenseCard';\nimport MaintCard from '@app/components/LicenseDetailPage/MaintCard';\nimport SubsCard from '@app/components/LicenseDetailPage/SubsCard';\nimport DownloadsCard from '@app/components/LicenseDetailPage/DownloadsCard';\nimport CloudConnectGetStartedCard from '@app/components/HomePage/CloudConnectGetStartedCard';\n\n\ninterface IProps {\n keycode: IKeycodeDetailsDTO;\n}\n\ninterface IState {\n}\n\nexport default class SingleProductCell extends React.Component {\n static contextType = CloudConnectContext;\n constructor(props: any) {\n super(props)\n this.state = {\n }\n }\n\n render() {\n return (\n \n \n \n {(cc: CloudConnectContext | null) => cc && !cc.state.isLoading && \n {cc.state.accounts.map(account => {((cc.getAgentsForAccount(account.UniqueId || \"\").length === 0) || (cc.getTargetsForAccount(account.UniqueId || \"\").length === 0)) ?\n \n :\n }\n )}\n }\n \n \n \n \n \n {!this.props.keycode.IsSubscription && !this.props.keycode.IsTemporary && this.props.keycode.Program != ProgramType.ptSIDEKICK &&\n \n \n \n }\n {this.props.keycode.IsSubscription &&\n \n \n \n }\n \n \n \n \n \n )\n }\n}\n","import * as React from \"react\"\nimport { Component } from \"react\";\nimport { KeycodesContext } from '@app/context/KeycodesContext';\nimport { IKeycodeDetailsDTO } from \"@app/models\";\nimport MultiProductCell from \"@app/Containers/MultiProductCell\";\nimport * as H from 'history';\nimport { CloudConnectContext, CloudConnectConsumer } from '@app/context/CloudConnectContext'\nimport TempPasswordNag from \"./TempPasswordNag\";\nimport SingleProductCell from \"./SingleProductCell\";\nimport CloudConnectSummaryCard from \"@app/containers/CloudConnectSummaryCard\";\n\ninterface IProps {\n history: H.History;\n location: H.Location;\n match: any;\n}\n\ninterface IState {\n renderError: Error | null;\n}\n\nexport default class HomePage extends Component {\n static contextType = KeycodesContext;\n constructor(props: IProps) {\n super(props);\n this.state = {\n renderError: null,\n };\n }\n componentDidCatch(error: Error | null, info: object) {\n // Display fallback UI\n this.setState({ renderError: error || new Error(\"error was swallowed during propogation\") });\n // You can also log the error to an error reporting service\n }\n\n render() {\n let keycodes = this.context.Keycodes as IKeycodeDetailsDTO[];\n return (\n

Account Summary

\n \n {keycodes.length === 0 && \n {(cc: CloudConnectContext | null) => cc && !cc.state.isLoading && \n {cc.state.accounts.map(account => {\n \n }\n )}\n }\n }\n {keycodes.length === 1 && }\n {keycodes.length > 1 && }\n
)\n }\n}","import * as React from 'react';\nimport { AuthContext, AuthState } from 'context/AuthContext';\nimport { Redirect } from 'react-router';\nimport Loader from '@components/Loader';\nimport {\n Row,\n Col,\n Card,\n CardHeader,\n CardTitle,\n CardBody,\n} from 'reactstrap';\n\ninterface ILoginPageProps {\n queryParams: any;\n history: any;\n lastForgotPasswordRequest: Date;\n lastForgotPasswordWasSent: boolean;\n passwordRequested: boolean;\n lastUsername: string;\n error: string;\n Errors: {\n username: string;\n password: string;\n };\n Fields: {\n username: string;\n password: string;\n remember_me: boolean;\n };\n handleInputChange: (event: React.ChangeEvent | React.ChangeEvent) => void;\n doForgotPassword: (username: string, force: boolean) => void;\n setUpAccount: (e: React.MouseEvent) => void;\n sendForgotEmail: (e: React.MouseEvent) => void;\n doLogin: () => void;\n}\n\nexport default class LoginForm extends React.Component {\n static contextType = AuthContext;\n\n constructor(props: ILoginPageProps) {\n super(props);\n }\n\n componentDidMount() {\n if (this.props.Fields.password && this.props.Fields.username) {\n this.props.doLogin();\n }\n }\n\n private submitLogin(e: React.FormEvent) {\n e.preventDefault();\n this.props.doLogin();\n }\n\n public render() {\n const authState = this.context as AuthState;\n return (\n \n \n {this.props.queryParams.ccactivate ? \"Log in to get started\" : \"Account Login\"}\n \n \n \n \n {authState.isAuth ?\n :\n
{\n this.submitLogin(e);\n }}>\n {\n authState.error &&
{authState.error}
\n }\n
\n \n \n {this.props.Errors.username &&\n
{this.props.Errors.username}
\n }\n\n
\n
\n \n \n {this.props.Errors.password &&\n
{this.props.Errors.password}
\n }\n
\n Remember login \n\n \n \n \n \n \n \n \n \n
\n }\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport { AuthContext, AuthState } from 'context/AuthContext';\nimport { withRouter } from 'react-router';\nimport Loader from '@components/Loader';\nimport * as timeago from 'timeago.js';\nimport \"../scss/components/LoginPage.scss\";\nimport * as queryString from 'query-string';\nimport {\n Row,\n Col,\n Alert,\n Button\n} from 'reactstrap';\nimport LoginForm from '@app/components/Login/LoginForm';\n\ninterface ILoginPageState {\n lastForgotPasswordRequest: Date;\n lastForgotPasswordWasSent: boolean;\n passwordRequested: boolean;\n showNewUserInstructions: boolean;\n lastUsername: string;\n error: string;\n showHelp: boolean;\n Errors: {\n username: string;\n password: string;\n };\n Fields: {\n username: string;\n password: string;\n remember_me: boolean;\n }\n}\n\nclass LoginPage extends React.Component {\n static contextType = AuthContext;\n\n constructor(props: any) {\n super(props);\n\n let queryParams = queryString.parse(this.props.location.search);\n\n let initialUsername = \"\";\n let initialPassword = \"\";\n\n // Username and password passed in.\n if (queryParams.u) {\n initialUsername = queryParams.u.toString();\n }\n if (queryParams.p) {\n initialPassword = queryParams.p.toString();\n }\n\n this.state = {\n error: \"\",\n passwordRequested: false,\n lastUsername: \"\",\n lastForgotPasswordRequest: new Date(1, 1),\n lastForgotPasswordWasSent: false,\n showHelp: false,\n showNewUserInstructions: false,\n Errors: {\n username: \"\",\n password: \"\",\n },\n Fields: {\n username: initialUsername,\n password: initialPassword,\n remember_me: false\n }\n };\n this.toggleHelp = this.toggleHelp.bind(this);\n }\n\n\n private doForgotPassword = (username: string, force: boolean = false) => {\n const authState = this.context as AuthState;\n let forgotPromise = authState.forgotPassword(username, force);\n forgotPromise.then((resp) => {\n this.setState({\n lastForgotPasswordRequest: new Date(resp.data.LastSent),\n lastForgotPasswordWasSent: resp.data.Sent,\n lastUsername: username,\n passwordRequested: true\n });\n });\n return forgotPromise;\n };\n\n private getRelativeSentTime(timeSent: Date) {\n return timeago.format(timeSent);\n }\n\n handleInputChange = (event: React.ChangeEvent | React.ChangeEvent) => {\n let target = event.target;\n let name = target.name;\n if (target.type === 'checkbox' && (target instanceof HTMLInputElement)) {\n this.setState({ Fields: { ...this.state.Fields, [name]: target.checked } });\n } else {\n this.setState({ Fields: { ...this.state.Fields, [name]: target.value } });\n }\n };\n\n private sendForgotEmail = (e: React.MouseEvent) => {\n const authState = this.context as AuthState;\n e.preventDefault();\n let errors = { username: \"\", password: \"\" };\n if (!this.state.Fields.username) {\n errors.username = \"What's your email address?\";\n }\n this.setState({ Errors: errors });\n\n if (errors.username) {\n authState.clearLastError();\n return;\n }\n this.doForgotPassword(this.state.Fields.username, false);\n };\n\n private setUpAccount = (e: React.MouseEvent) => {\n const authState = this.context as AuthState;\n e.preventDefault();\n let errors = { username: \"\", password: \"\" };\n if (!this.state.Fields.username) {\n errors.username = \"Enter the email address used when purchasing your license.\";\n this.setState({ showNewUserInstructions: true });\n }\n this.setState({ Errors: errors });\n\n if (errors.username) {\n authState.clearLastError();\n return;\n }\n this.doForgotPassword(this.state.Fields.username, false);\n };\n\n toggleHelp() {\n this.setState({ showHelp: !this.state.showHelp });\n }\n\n private doLogin = () => {\n let queryParams = queryString.parse(this.props.location.search);\n const authState = this.context as AuthState;\n let errors = { username: \"\", password: \"\" };\n if (!this.state.Fields.password) {\n errors.password = \"Password cannot be blank\";\n }\n if (!this.state.Fields.username) {\n errors.username = \"Your email address cannot be blank\";\n }\n this.setState({ Errors: errors });\n if (!errors.username && !errors.password) {\n let loginPromise = authState.login(this.state.Fields.username, this.state.Fields.password, this.state.Fields.remember_me);\n this.setState({\n passwordRequested: false\n });\n loginPromise.then(() => {\n // If we were redirected here, then go back to where we came from. There is a possible issue here with \n // someone being immediately redirected back because of no permissions, but we'll solve that when we get there.\n const redirectTo = (this.props.location.state && this.props.location.state.return) || \"/\";\n this.props.history.push(queryParams.ccactivate ? '/?ccactivate=1' : redirectTo);\n });\n } else {\n authState.clearLastError();\n }\n };\n\n public render() {\n const authState = this.context as AuthState;\n let queryParams = queryString.parse(this.props.location.search);\n return (\n {this.state.passwordRequested &&\n \n \n {this.state.lastForgotPasswordWasSent ?\n \n Check your email for login information We just sent a new email with your login information\n to {this.state.lastUsername}.\n You should receive a message from TalkToUs@pingman.com within the next minute or two.\n After you log in, you'll have the option to set a new password, but it's ok to\n use the auto-generated password too. If you're having issues logging in, please email our support team.\n \n :\n \n \n \n You should already have an email We emailed your login information\n to {this.state.lastUsername} {this.getRelativeSentTime(this.state.lastForgotPasswordRequest)}.\n If you didn't get a message from TalkToUs@pingman.com (or would like a resend), click\n the button to resend the password email. After you log in, you'll have the option to\n set a new password, but it's ok to use the auto-generated password too.\n \n \n \n \n \n \n }\n \n \n }\n {this.state.showNewUserInstructions && !this.state.passwordRequested && \n

\n To use CloudConnect, you need a current license for PingPlotter Pro (either\n a perpetual license on active maintenance, or a monthly subscription). If you have a license and have never\n logged in to your Pingman Tools account, then you can log in by entering your email address below and\n hitting \"Set up account\" again.\n

\n

\n If you don't have a PingPlotter Pro license, fulfillment is immediate on purchase, then\nyou'll be able to log in here. If you're evaluating, we do offer\n a 30 day money back guarantee.\n

\n

\n If you have questions or issues, please contact us at support@pingman.com!\n

\n\n
}\n\n {queryParams.ccactivate ? \n\n \n \n \n

\n Welcome to CloudConnect!\n

\n

\n CloudConnect is a\n PingPlotter add-on that enables remote data collection.\n

\n

\n What you need to get started\n

\n
    \n
  • \n PingPlotter Professional version 5.10.2 or higher\n
  • \n
  • \n Active maintenance or\n subscription.\n
  • \n
\n

\n Login with your existing Pingman Tools account, or enter the email address attached to your PingPlotter license and click Set up account.\n

\n

\n Once logged in, follow our {' '}\n getting started guide{' '}for step-by-step instructions on how to activate your first remote trace.\n

\n\n View the\n Getting Started Guide\n
\n\n \n\n \n \n \n
\n
\n :\n \n \n \n \n \n \n }\n\n {\n this.state.showHelp &&\n \n \n \n \n

Forgot password?

\n

Click the button and we'll set you up with a new password

\n {!authState.isAuth &&\n }\n \n \n

First time logging in?

\n

Enter the email used when your license was originally purchased and\n click \"Set up account\". We'll email you login information.

\n \n \n

Only have a license key?

\n

\n No access to the email you purchased with but still want to upgrade or\n download an older version? Enter your license key into this\n page.\n

\n

\n To update the email associated with your license(s), send\n us an email,\n and we'll get you set up.\n

\n \n
\n \n
\n }\n
\n
);\n }\n}\n\nexport default withRouter(LoginPage);\n","import * as React from 'react';\nimport { AuthConsumer } from 'context/AuthContext';\nimport { Route, Redirect, withRouter } from 'react-router';\n\nconst ProtectedRoute = ({component: Component, role, ...rest}: any) => {\n \n return (\n {(state) => (\n \n (state && state.isAuth && (!role || state.hasRole(role)))\n ? \n : \n }\n {...rest}\n />\n )}\n \n );\n};\nexport default withRouter(ProtectedRoute);","import React, { Component } from \"react\";\nimport { IKeycodeDetailsDTO, OrderItemType, SubscriptionStatusDTO } from \"@app/models\";\nimport { OrderConsumer } from \"@app/context/OrderContext\";\nimport { Button, ButtonDropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reactstrap';\n\ninterface IProps {\n keyCode: IKeycodeDetailsDTO;\n}\n\ninterface IState {\n dropdownOpen: boolean;\n}\nexport default class LicenseButton extends Component {\n //if(!props.keyCode || props.keyCode.Prices.length == 0 || props.keyCode.KeyCount >= 250 || props.keyCode.KeyCount <= 0) return null;\n //if (props.keyCode.IsSubscription && props.keyCode.SubscriptionStatus != SubscriptionStatusDTO.Active) return null;\n //if (!props.keyCode.IsSubscription && new Date(props.keyCode.New_MaintenanceGoodThrough) < new Date()) return null;\n constructor(props: IProps) {\n super(props);\n this.state = {\n dropdownOpen: false,\n }\n this.toggleDropdown = this.toggleDropdown.bind(this);\n }\n toggleDropdown() {\n this.setState({\n dropdownOpen: !this.state.dropdownOpen\n });\n }\n render() {\n let props = this.props;\n // No reason to allow actions on defunct (0 count) licenses\n if (props.keyCode.KeyCount == 0 || props.keyCode.IsTemporary) return null; \n // Expired susbscriptions have no need for actions\n if (props.keyCode.IsSubscription && props.keyCode.SubscriptionStatus != SubscriptionStatusDTO.Active) return null;\n return (\n \n {(orderState) => {\n // Get all the licenses in the order with this type.\n let typeCount: number = (orderState && orderState.orderLines.filter(line => line.ItemType == OrderItemType.AddLicense && line.ProductCode == props.keyCode.ProductCode).reduce((prev, line) => { return prev + line.Qty; }, 0)) || 0;\n if (!orderState) return null;\n var sellable = orderState.GetPriceForLicense(props.keyCode, 1, OrderItemType.AddLicense) > 0;\n \n return sellable && orderState && \n \n \n\n \n \n {([1, 2, 5, 10, 20]).map(qty => {\n const newPrice = orderState.GetPriceForLicense(props.keyCode, qty + typeCount, OrderItemType.AddLicense);\n if (!newPrice) return null;\n return (\n { e.preventDefault(); orderState.AddQtyToKey(props.keyCode.SearchCode || \"\", props.keyCode.IsSubscription ? OrderItemType.SubscriptionQuantityChange : OrderItemType.AddLicense, qty); }}\n >Add {qty} device{qty > 1 && \"s\"} (${(qty * newPrice).toFixed(2)}{qty > 1 && \" - $\" + newPrice.toFixed(2) + \" ea\"})\n )\n }\n )}\n\n \n \n\n \n }\n }\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Card, CardBody, CardHeader, CardTitle, Col, Row } from 'reactstrap';\nimport { OrderContext, OrderState } from \"@app/context/OrderContext\";\nimport { faCartPlus, faCopy, faTimesCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { IKeycodeDetailsDTO, OrderItemType, ProgramType } from \"@app/models\";\nimport LicenseButton from \"./LicenseButton\";\nimport { BaseURL } from \"@app/utils/BaseURL\";\nimport * as CopyToClipboard from 'react-copy-to-clipboard';\nimport appSettings from \"@app/appSettings\";\n\n\ninterface IProps {\n keycode: IKeycodeDetailsDTO;\n}\n\nexport default class LicenseCard extends Component {\n static contextType = OrderContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {};\n }\n\n render() {\n const keyCode = this.props.keycode;\n const orderState = (this.context as OrderState);\n const orderLines = orderState && orderState.orderLines.filter(line => (line.SearchCode == this.props.keycode.SearchCode));\n const newEach = orderLines.reduce((cost, line) => line.ItemType == OrderItemType.AddLicense ? line.Price + cost : cost, 0);\n const newTotal = orderLines.reduce((total, line) => line.ItemType == OrderItemType.AddLicense ? total + line.Price * line.Qty : total, 0);\n //const dmTEMPORARY = 3;\n return (\n \n \n \n \n {keyCode.ProductName}\n \n {keyCode.KeyCount < 250 &&\n \n \n }\n \n \n \n \n \n \n \n \n

\n {keyCode.UserName}\n

\n
\n\n {keyCode.KeyCode}  {\n appSettings.success(keyCode.KeyCode + \" in your clipboard!\");\n }}>\n
\n
\n\n
\n \n
\n \n \n

\n {keyCode.KeyCount} Device\n

\n
{keyCode.IsSubscription ? \"SUBSCRIPTION\" : \"LICENSE\"}
\n \n \n

\n {new Date(keyCode.Created || new Date()).toLocaleDateString()}\n

\n
\n CREATED\n
\n \n \n

\n {keyCode.Program == ProgramType.ptSIDEKICK ? (keyCode.Expires ? (new Date(keyCode.Expires || new Date())).toLocaleDateString() : \"Not yet used.\") :\n (new Date(keyCode.MaintenanceGoodThrough || new Date()) > new Date()) ? \"Active\" : \"Expired\"}\n

\n
\n {keyCode.Program == ProgramType.ptSIDEKICK ? ((new Date(keyCode.Expires || new Date()) > new Date()) ? \"ACTIVE\" : \"EXPIRED\") : \"MAINTENANCE\"}\n
\n \n\n {/*// No support for regenerating key yet, but leave room for it\n ((keyCode.IsSubscription && keyCode.SubscriptionStatus == SubscriptionStatusDTO.Active)\n || (new Date(keyCode.MaintenanceGoodThrough || new Date()) > new Date())\n )\n &&\n \n \n \n */}\n
\n {keyCode.IsTemporary &&
(Temporary, good\n through {new Date(keyCode.MaintenanceGoodThrough || new Date()).toLocaleDateString()})
}\n\n {keyCode.New_KeyCount > keyCode.KeyCount && (
\n +{keyCode.New_KeyCount - keyCode.KeyCount} @\n ${newTotal.toFixed(2)} {keyCode.New_KeyCount - keyCode.KeyCount > 1 &&\n (${newEach.toFixed(2)} ea)}\n {\n e.preventDefault();\n orderState.RemoveItemByKeyAndType(keyCode.SearchCode || \"\",keyCode.IsSubscription ? OrderItemType.SubscriptionQuantityChange : OrderItemType.AddLicense);\n }}>\n \n \n
)}\n\n {keyCode.New_KeyCount < keyCode.KeyCount && (
Trade-in pending in cart
)}\n
\n
\n );\n }\n}","import React from \"react\";\nimport { Component } from \"react\";\nimport { Card, CardHeader, CardBody, Row, Col, CardTitle } from 'reactstrap';\nimport { OrderContext, OrderState } from \"@app/context/OrderContext\";\nimport { IKeycodeDetailsDTO, OrderItemType, ProgramType } from \"@app/models\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCartPlus, faTimesCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport Button from \"reactstrap/lib/Button\";\n//import { Link } from \"react-router-dom\";\n\ninterface IProps {\n keycode: IKeycodeDetailsDTO;\n}\n\nexport default class ConvertCard extends Component {\n static contextType = OrderContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n };\n }\n render() {\n const keyCode = this.props.keycode;\n const orderState = (this.context as OrderState);\n const pendingConvert = orderState && orderState.orderLines.filter(line => (line.SearchCode == this.props.keycode.SearchCode && line.ItemType == OrderItemType.ConvertLicenseType));\n const hasPendingConvert = pendingConvert.length > 0;\n const newProPrice = orderState.GetPriceForProgram(ProgramType.ptPINGPLOTTER_PRO, keyCode.KeyCount, OrderItemType.NewLicense);\n if (!newProPrice) return null;\n const tradeInValue = orderState.GetTradeInValue(keyCode);\n return (\n \n \n {hasPendingConvert ?\n \n ${tradeInValue.toFixed(2)} Credit Added to Cart\n \n \n :\n\n \n \n \n ${tradeInValue.toFixed(2)} Credit Available\n \n \n \n\n \n \n \n \n }\n \n \n {hasPendingConvert ?\n \n Thank you for taking advantage of this offer. Your product will be converted PingPlotter Professional after you complete your purchase.\n \n \n :\n \n Convert your {keyCode.ProductName} {keyCode.KeyCountText} to PingPlotter Professional and save {Math.round((tradeInValue / (newProPrice + tradeInValue)) * 100)}% off the list price.\n \n }\n \n \n );\n }\n}","import * as React from \"react\";\nimport { Component } from \"react\";\nimport { IKeycodeDetailsDTO, ProgramType } from \"@app/models\";\nimport \"@app/scss/components/LicenseCell.scss\";\nimport { OrderContext, OrderConsumer } from \"@app/context/OrderContext\";\n\nimport DownloadsCard from \"./DownloadsCard\";\nimport { Row, Col } from 'reactstrap';\nimport MaintCard from \"@app/components/LicenseDetailPage/MaintCard\";\nimport LicenseCard from \"./LicenseCard\";\nimport SubsCard from \"./SubsCard\";\nimport ConvertCard from \"./ConvertCard\";\n\n//import DeviceCard from \"@app/components/LicenseDetailPage/DeviceCard\";\n\n\n/**************************************\n * ToDo:\n * - Look at the ability to delete a license card from the owner view - was not yet ported (not sure of how useful this is)\n * - Regeneration of license keys and limitations around that (including the hints)\n *\n * */\n\n\ninterface IProps {\n keycode: IKeycodeDetailsDTO; // Needs to be *new* DTO, but evolve in to it.\n}\n\ninterface IState {\n}\n\nexport default class LicenseCell extends Component {\n static contextType = OrderContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {};\n }\n\n render() {\n const keyCode = this.props.keycode;\n\n\n return (\n \n {(orderState) => orderState &&\n \n \n \n

\n Product Details\n

\n \n
\n \n \n \n \n \n {!keyCode.IsSubscription && !keyCode.IsTemporary && (keyCode.Program != ProgramType.ptSIDEKICK) &&\n \n }\n {keyCode.IsSubscription &&\n \n }\n {(keyCode.ProductCode == \"PP_Std\" || keyCode.ProductCode == \"MultiPing\")\n && !keyCode.IsTemporary\n && !keyCode.IsSubscription && keyCode.KeyCount > 0 && keyCode.KeyCount < 250\n && (orderState.GetTradeInValue(keyCode) > 0)\n && (!keyCode.IsTemporary)\n && \n }\n \n \n \n \n\n \n
\n }\n
\n\n );\n }\n}\n\n\n/**************\n\n\n IsSubscription) {\n $tooltipMsg = \"Subscription must be active.\";\n } else if (!$keyCode->IsSubscription && (round(@$keyCode->oldAttrs[\"KeyCount\"]) == 0)) {\n $tooltipMsg = \"Must have at least 1 license.\";\n }\n }\n ?>\n
\n \n
Managed || (($canDelete = $keyCode->CanDeleteLicenseCardFromOwnerView($order)))) {\n echo \"-topPadding\";\n echo ($keyCode->program->IsMultiPing() || (isset($canDelete) && $canDelete)) ? \" license-card-button-multiping-top-align-1button\" : \"\";\n }\n else {\n echo $keyCode->program->IsMultiPing() ? \" license-card-button-multiping-top-align-2buttons\" : \"\";\n } ?>\n \">\n\n CanDeleteLicenseCardFromOwnerView($order)) { ?>\n
\n KeyCode . \"' class='button btnLicenseActionDisabled columns small-12' title='$tooltipMsg'>Download Software...\";\n }\n else {\n echo \"Download Software...\";\n }\n ?>\n
\n\n program->IsPingPlotter()) { ?>\n
\n KeyCode . \"' class='button btnLicenseActionDisabled columns small-12' title='$tooltipMsg'>Activate Software...\";\n }\n // if the subscription is active, or if it is not active but the renewal date has not yet expired, then add the activate software button with full functionality\n else {\n echo \"Activate Software...\";\n\n if ((!$keyCode->IsSubscription) && ($keyCode->KeyCount == 0)) {\n foreach ($keyCode->orderLines as $line) {\n if (($line->item->Type == OrderItemType::ConvertLicenseType) && ($line->order->Status == OrderStatus::Completed)) { ?>\n
Exchanged for PingPlotter Pro\n on order->CompleteDate)) ?>
\n \n
KeyCode; ?>\" class=\"activate-software-console-dialog-status\">
\n
KeyCode; ?>\" class=\"activate-software-console hidden\" data-license-key=\"KeyCode; ?>\">
\n
\n\n
\n Managed) {\n if($disableConsoles) {\n echo \"Manage Deployment...\";\n }\n else {\n echo \"Manage Deployment...\";\n }\n ?>\n
\n
KeyCode; ?>\" class=\"management-console-dialog-operate\">
\n
KeyCode; ?>\" class=\"management-console-dialog-status\">
\n
\n
KeyCode; ?>\" class=\"management-console hidden\" data-license-key=\"KeyCode; ?>\">\n renderPartial('_managementConsole', array('keyCode' => $keyCode, 'sort' => 'Status ASC', 'page' => 1), false, false); ?>\n
\n
KeyCode; ?>\" class=\"clipboard-copy hidden\">
\n
\n \n \n
\n \n\n \n
\n ActionNeeded() || ($keyCode->HasPendingChanges)); ?>\n \n
\n \n
\n \n \n\n
\">\n
\n \n
\n DistMethod != DistMethod::dmTEMPORARY) {\n echo \"
\";\n if ($releaseNotesText) {\n if($keyCode->program->IsPingPlotter()) {\n echo \"We're always developing new features - \";\n echo \"$releaseNotesText\";\n }\n else if($keyCode->program->IsMultiPing()) {\n echo \"$releaseNotesText\";\n }\n }\n echo \"
\";\n }\n ?>\n\n
HasActiveMaintenance()) {\n // we don't want to show duplicate information, so if the orange warning box will appear, then we\n // want to hide the red box\n if (!$keyCode->IsSubscription || ($keyCode->IsSubscription && (($keyCode->SubscriptionStatus == Keycodes::subscrFailed)))) {\n if ((!$keyCode->IsSubscription) && ($keyCode->oldAttrs[\"KeyCount\"] > $keyCode->KeyCount)) {\n foreach ($keyCode->orderLines as $line) {\n if ($line->item->Type == OrderItemType::ConvertLicenseType) {\n $convertingToPro = true;\n break;\n }\n }\n }\n\n if(!$convertingToPro) {\n echo \" hidden\";\n }\n }\n // if its a subscription that is either terminated, or cancelled and the renewal date has passed, then change to red box\n else if(($keyCode->IsSubscription && (($keyCode->SubscriptionStatus == Keycodes::subscrTerminated) ||\n (($keyCode->SubscriptionStatus == Keycodes::subscrCancelled) && (strtotime($keyCode->SubscriptionRenewalDate) < time()))))) {\n echo \" license-inactive-box\";\n }\n }\n else if(!$keyCode->IsSubscription) {\n // TODO: put code to remove duplicate warning code for soon-to-be expire maintenance...?\n }\n\n // if this license has a key count of 0 (and its not a standard being converted to pro), then change to red box\n if(($keyCode->KeyCount == 0) && !($order && ($order->HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType)))) {\n echo \" license-inactive-box\";\n }\n ?>\">\n IsSubscription) && ($keyCode->KeyCount == 0)) { ?>\n orderLines as $line) {\n if (($line->item->Type == OrderItemType::ConvertLicenseType) && ($line->order->Status == OrderStatus::Completed)) { ?>\n
Exchanged for PingPlotter Pro\n on order->CompleteDate)) ?>
\n \n
Managed ? $keyCode->CountToDescriptionManaged($keyCode->KeyCount, $order) : $keyCode->countToDescription()); ?>\n KeyCount - $keyCode->oldAttrs[\"KeyCount\"];\n if ($addlLicCount != 0) {\n if ($keyCode->IsSubscription) { ?>\n  ( 0) ? (\"+\" . $addlLicCount) : (\"-\" . -$addlLicCount) ?>/month)\n
SubscriptionRenewalPrice <> 0) ? \"Current price: $\" . number_format($keyCode->SubscriptionRenewalPrice, 2) . \"/month \" : \"\" ?>\n (New price: $KeyCount * $keyCode->CalcSubscriptionRenewalPrice($keyCode->KeyCount), 2) ?>/month)\n
\n \n 0) { ?>\n  ( new)\n \n  (\n traded in @ $TradeInValue(), 2) ?> 1 ? \" each\" : \"\" ?>\n )\n \n \n IsSubscription) && ($keyCode->SubscriptionStatus == Keycodes::subscrActive) && ($keyCode->SubscriptionRenewalPrice <> 0)) { ?>\n
Monthly price: $SubscriptionRenewalPrice, 2) ?>\n \n
\n KeyCount == 0) && (($startIndex = stripos($keyCode->Note, \"This is a 0 device license because the last remaining key\")) !== FALSE)) {\n ?>\n
\n \" . substr($keyCode->Note, $startIndex, 154) . \"\";\n ?>\n
\n \n
\n IsSubscription) {\n if ($keyCode->SubscriptionStatus == Keycodes::subscrActive) { ?>\n Next billing on: SubscriptionRenewalDate)) ?>\n SubscriptionStatus == Keycodes::subscrCancelled) { ?>\n SubscriptionRenewalDate) < time()) { ?>\n Subscription cancelled, ended on: SubscriptionRenewalDate)) ?>\n \n Subscription cancelled, ends on: SubscriptionRenewalDate)) ?>\n \n SubscriptionStatus == Keycodes::subscrFailed) { ?>\n SubscriptionRenewalDate) < time()) { ?>\n Last payment failed, subscription ended on: SubscriptionRenewalDate)) ?>\n \n Last payment failed, subscription ends on: SubscriptionRenewalDate)) ?>\n \n SubscriptionStatus == Keycodes::subscrTerminated) { ?>\n SubscriptionRenewalDate) < time()) { ?>\n Subscription ended on: SubscriptionRenewalDate)) ?>\n \n Subscription ended\n \n \n DistMethod == DistMethod::dmTEMPORARY) {\n echo \"Temporary License Expires: \" . date('M jS, Y', strtotime($keyCode->Expires));\n // \"check out the latest release here!\"\n } else {\n if ($expired) {\n echo \"Maintenance expired on: \" . date('M jS, Y', strtotime($keyCode->MaintenanceGoodThrough));\n }\n else {\n echo \"Maintenance active until: \" . date('M jS, Y', strtotime($keyCode->MaintenanceGoodThrough));\n }\n } ?>\n \n PendingExtensionYears > 0) { ?>\n  (PendingExtensionYears ?>\n yearPendingExtensionYears > 1 ? \"s\" : \"\" ?> added)\n \n \n
\n HasPendingChanges) && ($order)) { ?>\n orderLines as $line) {\n if ($line->Keycode == $keyCode->KeyID) { ?>\n
\n
\n $Qty * $line->Price, 2) ?>\n ID ?>\">\n   \n \n \n Qty, 0) ?>\n item->Type == OrderItemType::SubscriptionQuantityChange ? ($line->Qty < 0) ? \"Reduce license count\" : (\"more license\" . ($line->Qty > 1 ? \"s\" : \"\") . \" (prorated)\") :\n ($line->item->Type == OrderItemType::ConvertLicenseType) ? $line->item->Name : $line->item->type->Name ?>\n Price > 0) && ($line->Qty > 1)) { ?>@ $Price, 2) ?> ea\n \n item->Type == OrderItemType::ConvertLicenseType) { ?>\n
\n Your new PingPlotter Pro license will be available immediately after purchase and this\n license\n will\n be KeyCount == 0 ? \"deactivated\" : \"changed to a \" . $keyCode->CountToDescription() ?>.
Your new license will have a full year of upgrades and maintenance, through\n .\n
\n \n
\n
\n IsSubscription) && ($line->item->Type == OrderItemType::SubscriptionQuantityChange)) { ?>\n
\n
\n
0) { ?>\n $Qty * $line->Price, 2) ?> is the prorated cost\n for Qty, 0) ?> new licenseQty > 1 ? \"s\" : \"\" ?>\n for SubscriptionDaysTillRenew() ?> days till your next renewal.\n Your new licenseQty > 1 ? \"s\" : \"\" ?> will be available immediately.\n
\n
Your next automatic renewal is\n still SubscriptionRenewalDate)) ?>\n and will now be\n $KeyCount * $keyCode->CalcSubscriptionRenewalPrice($keyCode->KeyCount), 2) ?>/month.\n \n This will reduce your license entitlement to a countToDescription() ?>.\n
\n
Your next automatic renewal is\n still SubscriptionRenewalDate)) ?>\n and will now be\n $KeyCount * $keyCode->CalcSubscriptionRenewalPrice($keyCode->KeyCount), 2) ?>/month.\n Use the \"GetTotalsByItem()) > 0) && ($order->lastTotalPrice == 0) ? \"Confirm Changes\" : \"Buy Now\" ?>\" button to confirm / complete this change.\n \n
\n
\n
\n \n \n
\n\n ActionNeeded() && ($keyCode->KeyCount > 0) && !($expired && $canRenewOrUpgrade && $convertingToPro)) { ?>\n
\n \n
\n IsSiteLicense()) {\n $price = $keyCode->program->PriceForVolume($keyCode->KeyCount)->UpgradePrice;\n } else {\n $extendCounts = // Don't include extensions for upgrades - just upgrade counts.\n min(Keycodes::ltMaxLicenseCount, @$total_counts[OrderItemType::Upgrade . '-' . $keyCode->Program] + $keyCode->KeyCount);\n $price = $keyCode->program->PriceForVolume($extendCounts)->UpgradePrice * $keyCode->KeyCount;\n }\n ?>\n
Expired Maintenance Plan: Your\n maintenance plan expired on\n oldAttrs[\"MaintenanceGoodThrough\"])) ?>.\n You are eligible for a reduced price upgrade, which also includes a year of\n priority support, version upgrades, and more.\n
\n Upgrade for\n $\n IsSiteLicense()) {\n $price = $keyCode->program->PriceForVolume($keyCode->KeyCount)->MaintenancePrice;\n } else {\n $extendCounts = @$total_counts[OrderItemType::ExtendMaintenance . '-' . $keyCode->Program] +\n @$total_counts[OrderItemType::Upgrade . '-' . $keyCode->Program] +\n $keyCode->KeyCount;\n $price = $keyCode->program->PriceForVolume($extendCounts)->MaintenancePrice * $keyCode->KeyCount;\n }\n ?>\n
Renew Expired Mainenance: Your\n maintenance plan expired on\n oldAttrs[\"MaintenanceGoodThrough\"])) ?>.\n Renewing your plan reactivates your access to version upgrades, priority support, and more.\n
\n Renew\n Maintenance (1 Year for $)\n \n \n MaintenanceGoodThrough) < strtotime(\"+30 days\", time())) && (strtotime($keyCode->MaintenanceGoodThrough) > time())) {\n if ($keyCode->IsSiteLicense()) {\n $price = $keyCode->program->PriceForVolume($keyCode->KeyCount)->MaintenancePrice;\n } else {\n $extendCounts = @$total_counts[OrderItemType::ExtendMaintenance . '-' . $keyCode->Program] +\n @$total_counts[OrderItemType::Upgrade . '-' . $keyCode->Program] +\n $keyCode->KeyCount;\n $price = $keyCode->program->PriceForVolume($extendCounts)->MaintenancePrice * $keyCode->KeyCount;\n }\n ?>\n
\n
Maintenance Expiring Soon: Your\n maintenance plan expires on\n oldAttrs[\"MaintenanceGoodThrough\"])) ?>.\n Renew now for uninterrupted priority support, all the latest updates, mobile superpowers,\n and other goodies.\n
\n Renew\n Maintenance (1 Year for $)\n \n\n IsSubscription) { ?>\n
\n SubscriptionStatus == Keycodes::subscrFailed) { ?>\n SubscriptionRenewalDate) < time()) { ?>\n
We were unable to charge your credit card, and\n your subscription ended on SubscriptionRenewalDate)) ?>. Please\n update your payment information to restore your network troubeshooting powers.\n
\n \n
We were unable to charge your credit card, which\n means your subscription will end on SubscriptionRenewalDate)) ?> unless you update your payment information. Please\n update this information for uninterrupted network troubeshooting powers.\n
\n \n \n Update\n Your Payment Information\n \n
\n Pro Upgrade Offer. Don't do on site licenses.\n // Only do till licenses is fully traded in.\n // Don't do on subscriptions\n // Don't do if there's no credit.\n // If more licenses have been added, or if more maintenance has been added, then don't convert (if they want that, they can buy more licenses elsewhere).\n if (($keyCode->Program == Programs::ptPINGPLOTTER_STANDARD) &&\n ($credit > 0) &&\n (!$keyCode->IsSubscription) &&\n !($order && ($order->HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ExtendMaintenance))) &&\n (!$keyCode->IsSiteLicense()) &&\n ($keyCode->KeyCount > 0) &&\n ($keyCode->KeyCount <= $keyCode->oldAttrs[\"KeyCount\"])) { ?>\n
IsSubscription && ($keyCode->SubscriptionStatus != Keycodes::subscrActive)) ? \" license-inactive-box\" : \"\" ?>\">\n
\n
\n HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType))) ? \"More \" : \"\" ?>\n Credit Available:\n Convert your licenseKeyCount, 2)) > 40) { ?>s to\n PingPlotter Pro and get KeyCount > 1 ? \"up to \" : \"\" ?>\n $KeyCount, 2) ?> trade-in credit towards the new\n licenseKeyCount, 2)) > 40) { ?>s\n - learn more!\n
\n findByPk(Programs::ptPINGPLOTTER_PRO);\n $alreadyInCartQty = @$total_counts[OrderItemType::ConvertLicenseType . '-' . $keyCode->Program];\n $price = $pro->PriceForVolume($keyCode->KeyCount + $alreadyInCartQty)->NewPrice - $credit;\n ?>\n KeyCount ?>\"\n class=\"green-split-btn btnLicenseActionA std-to-pro-upgrade\"\n title=\"Get $ credit per license as trade in value.\">Convert to Pro\n for $KeyCount, 2) ?>\n \n KeyID ?>\" tabindex=\"0\">\n \n \n
KeyID ?>\" >\n \n
\n
\n \n\n
\n \n\n \n
\n IsSubscription) {\n if (($keyCode->SubscriptionStatus == Keycodes::subscrActive)) {\n $price = $keyCode->CalcSubscriptionRenewalPrice($keyCode->KeyCount + 1);\n if ($price) {\n // in most cases, if key count is greater than 1, then allow them to remove a license from this subscription\n // in rarer cases, if this is a 0-device subscription license with 1 or more pending licenses added to the cart,\n // then also allow them to remove a license from this subscription\n if (($keyCode->KeyCount > 1) || ($keyCode->Managed && ($keyCode->ManagedEnforceMode == Keycodes::enforceConcurrentInstall) && ($keyCode->oldAttrs['KeyCount'] == 0) && ($keyCode->KeyCount >= 1))) { ?>\n Remove License\n \n KeyCount > 1) || ($keyCode->Managed && ($keyCode->ManagedEnforceMode == Keycodes::enforceConcurrentInstall) && ($keyCode->oldAttrs['KeyCount'] == 0) && ($keyCode->KeyCount >= 1))) ? \" small-6\" : \"small-12\" ?>\"\n title=\"Add another device to this license for $/month.\">Add License\n \n\n
\n KeyCode ?>\" tabindex=\"0\">\n Manage Subscription\n \n \n
KeyCode ?>\">\n
    \n SubscriptionStatus == Keycodes::subscrActive) || ($keyCode->SubscriptionStatus == Keycodes::subscrFailed)) { ?>\n
  • Update Payment Method
  • SubscriptionStatus == Keycodes::subscrActive) { ?>\n
  • Cancel
  • SubscriptionStatus == Keycodes::subscrCancelled) { ?>\n
  • Reactivate
  • \n
  • Billing History
  • \n
\n
\n
\n IsSiteLicense() && ($keyCode->KeyCount < Keycodes::ltMaxLicenseCount)) {\n $curLiceCount = @$total_counts[OrderItemType::AddLicense . '-' . $keyCode->Program];\n $price = $keyCode->program->PriceForVolume(min(Keycodes::ltMaxLicenseCount, $curLiceCount + 1))->NewPrice;\n\n if($price) {\n ?>\n HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType))) ? \"\" : \"href=\\\"#\\\"\"; ?>\n class=\"button IsSiteLicense() ? \"A\" : \"\";\n if($order && ($order->HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType))) {\n echo \"Disabled\";\n }\n else {\n echo \" add-license\"; //\n }\n ?>\" title=\"HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType))) {\n echo \"To add an additional license, you must first convert to Pro by completing the sale.\";\n }\n else {\n echo \"Add an additional license for $\" . number_format($price, 2) . \".\";\n }\n ?>\" tabindex=\"0\">\n Add License\n \n IsSiteLicense()) { ?>\n HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType))) {\n echo \"Disabled\\\"\";\n echo \" title=\\\"To add additional licenses, you must first convert to Pro by completing the sale.\\\">\";\n }\n else {\n echo \"\\\"\";\n echo \" data-jq-dropdown=\\\"#add-license-\" . $keyCode->KeyID . \"\\\">\";\n }\n ?>\n \n HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType)))) { ?>\n
KeyID ?>\" class=\"more-licenses-dropdown jq-dropdown jq-dropdown-anchor-right\">\n \n
HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType)))) {\n if ($keyCode->IsSiteLicense()) {\n $price = $keyCode->program->PriceForVolume($keyCode->KeyCount)->UpgradePrice;\n } else {\n // Don't include extensions for upgrades - just upgrade counts.\n $extendCounts = min([Keycodes::ltMaxLicenseCount, @$total_counts[OrderItemType::Upgrade . '-' . $keyCode->Program] + $keyCode->KeyCount]);\n $price = $keyCode->program->PriceForVolume($extendCounts)->UpgradePrice * $keyCode->KeyCount;\n } ?>\n .\">Upgrade Version\n IsSiteLicense()) {\n $baseCount = $keyCode->KeyCount;\n $multipleCount = 0;\n $price = $keyCode->program->PriceForVolume($keyCode->IsSiteLicense() ? $baseCount : min(Keycodes::ltMaxLicenseCount, $baseCount + $multipleCount))->MaintenancePrice;\n } else {\n $baseCount = @$total_counts[OrderItemType::ExtendMaintenance . '-' . $keyCode->Program] + @$total_counts[OrderItemType::Upgrade . '-' . $keyCode->Program];\n $multipleCount = $keyCode->KeyCount;\n $price = $keyCode->program->PriceForVolume($keyCode->IsSiteLicense() ? $baseCount : min(Keycodes::ltMaxLicenseCount, $baseCount + $multipleCount))->MaintenancePrice * $multipleCount;\n }\n\n // if the price is 0, in this case, its still possible that we're converting this license to pro, so then we will show the disabled add maintenance button\n if(($price > 0) || (($price == 0) && $order && $order->HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType))) { ?>\n HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType))) ? \"\" : \"href=\\\"#\\\"\"; ?> class=\"button IsSiteLicense() ? \"A\" : \"\";\n if($order && ($order->HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType))) {\n echo \"Disabled\";\n }\n else {\n echo \" extend-license\";\n }\n ?>\" title=\"HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType))) {\n echo \"To add additional maintenance, you must first convert to Pro by completing the sale.\";\n }\n else {\n echo \"Add 1 year of maintenance for $\" . number_format($price, 2) . \".\";\n }\n ?>\">\n Add 1 Year of Maintenance\n \n\n IsSiteLicense()) { ?>\n HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType))) {\n echo \"Disabled\\\"\";\n echo \" title=\\\"To add additional maintenance, you must first convert to Pro by completing the sale.\\\">\";\n }\n else {\n echo \"\\\"\";\n echo \" data-jq-dropdown=\\\"#maint-dropdown-\" . $keyCode->KeyID . \"\\\">\";\n }\n ?>\n \n HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType)))) { ?>\n
KeyID ?>\">\n \n
\n
\n
\n
\n\n Pro Upgrade Offer. Don't do on site licenses.\n // Only do till licenses is fully traded in.\n // If more licenses have been added, don't convert (if they want that, they can buy more licenses elsewhere).\n if (($keyCode->Program == Programs::ptPINGPLOTTER_STANDARD) && (!$keyCode->IsSubscription) && (!$keyCode->IsSiteLicense()) &&\n ($keyCode->KeyCount > 0) && ($keyCode->KeyCount <= $keyCode->oldAttrs[\"KeyCount\"])) // Don't show if maintenance expires within 30 days\n {\n // only show if offer not already in cart\n if (($order) && (!$order->HasItemTypeForKeycode($keyCode->KeyID, OrderItemType::ConvertLicenseType))) { ?>\n
\">\n
\n Credit Available:\n \n $KeyCount, 2) ?> for\n PingPlotter Pro\n \n
\n
\n \n \n \n
 
\n \n\n );\n }\n }\n\n\n AllowCardConsoleAccess();\n $expired = (!$keyCode->IsSubscription) && ((strtotime($keyCode->MaintenanceGoodThrough) < time()) && ($keyCode->DistMethod != DistMethod::dmTEMPORARY));\n $expiredClass = $expired ? \" maintenance-expired\" : \"\";\n $canRenewOrUpgrade = FALSE;\n $releaseNotesText = \"\";\n $highlightButton = FALSE;\n $showUpgrade = FALSE;\n $convertingToPro = FALSE;\n\n // Figure out upgrade eligibility\n if (($keyCode->DistMethod != DistMethod::dmTEMPORARY) && (count($keyCode->program->programPrices) > 0) &&\n ((!$keyCode->Managed && ($keyCode->oldAttrs['KeyCount'] > 0)) || $keyCode->Managed) &&\n // Only allow for regular users when there is a way to sell it. For admins, allow it anyway.\n (OrderItem::model()->exists('Program = :program and Type = :itemtype' . (Yii::app()->user->isImpersonating() ? \"\" : \" and (TRIM(SellerPartNumber) > '')\"), array(':program' => $keyCode->Program, ':itemtype' => OrderItemType::Upgrade)))) {\n\n if (count($keyCode->program->programReleases) > 0) {\n $latestRelease = $keyCode->program->programReleases[0];\n if ($latestRelease->ReleaseNotesURL > \"\") {\n if($keyCode->program->IsPingPlotter()) {\n $releaseNotesURL = $latestRelease->ReleaseNotesURL;\n\n // the release notes URL depends on if the operating system is windows or mac\n if($os) {\n if($os == ProgramPlatforms::Mac) {\n $releaseNotesURL = \"http://www.pingplotter.com/download/macos/release-notes.html\";\n }\n else {\n $releaseNotesURL = \"http://www.pingplotter.com/download/windows/release-notes.html\";\n }\n }\n\n $releaseNotesText = \"check out the latest release notes here!\";\n }\n else {\n $releaseNotesText = \"Check out the latest release notes here!\";\n }\n }\n }\n\n $showUpgrade = FALSE;\n $canRenewOrUpgrade = TRUE;\n if ($expired) {\n // If maintenance is expired, see if there was a release done after the expiration date. If so, then\n // show the release notes and make the button highlighted. If not, then don't show the release notes, and\n // make the upgrade button unhighlighted.\n $showUpgrade = TRUE;\n if (count($keyCode->program->programReleases) > 0) {\n $latestRelease = $keyCode->program->programReleases[0];\n if (strtotime($latestRelease->ReleaseDate) > strtotime($keyCode->MaintenanceGoodThrough)) {\n $highlightButton = TRUE;\n // We have a newer release.\n }\n }\n\n // Figure out if the maintenance is cheaper, or the upgrade is. Show the higher value (to the customer - most benefit, loweest price).\n $priceTier = $keyCode->program->PriceForVolume($keyCode->KeyCount);\n $daysExpired = (time() - strtotime($keyCode->MaintenanceGoodThrough)) / (60 * 60 * 24);\n\n if ((($daysExpired / 365) * $priceTier->MaintenancePrice) < ($priceTier->UpgradePrice - $priceTier->MaintenancePrice)) {\n if ($daysExpired < (365 - 2)) {\n // Make sure we have at least 2 days of maintenance - if there are fewer than that, do the upgrade instead.\n $showUpgrade = FALSE;\n }\n }\n }\n\n $total_counts = [];\n if ($order) {\n $total_counts = $order->GetQtyByProgramAndType();\n }\n}\n\n $credit = $keyCode->TradeInValue();\n\n // just before this view is rendered, if this is a managed master license, then ensure a correct slot calibration\n if($keyCode->Managed && ($keyCode->oldAttrs['KeyCount'] > 0)) {\n if(Yii::app()->db->getCurrentTransaction()) {\n $keyCode->EnsureSlotCalibration();\n }\n else {\n $transaction = Yii::app()->db->beginTransaction();\n try {\n $keyCode->EnsureSlotCalibration();\n $transaction->commit();\n }\n catch (Exception $e) {\n $transaction->rollBack();\n throw $e;\n }\n }\n}\n\n ?>\n *******/","import * as React from 'react';\nimport { Fragment } from 'react';\nimport '../scss/components/HomePage.scss';\nimport { IKeycodeDetailsDTO, KeycodesController } from '@app/models';\nimport Loader from '@app/components/Loader';\nimport LicenseCell from '@app/components/LicenseDetailPage/LicenseCell';\nimport { OrderState, OrderContext } from '@app/context/OrderContext';\n\nexport interface IProps {\n licenseKey: string;\n}\n\nexport interface IState {\n keyCode: IKeycodeDetailsDTO | undefined;\n isLoading: boolean;\n}\n\nexport default class LicenseDetailView extends React.Component {\n static contextType = OrderContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n isLoading: false,\n keyCode: undefined\n }\n }\n\n loadKeyCode = () => {\n this.setState({ isLoading: true });\n const keycodesController = new KeycodesController(\"\");\n keycodesController.getKeycodeDetails(this.props.licenseKey).then(keycodesResp => {\n this.setState({\n isLoading: false,\n keyCode: keycodesResp\n });\n }).catch(error => {\n this.setState({\n isLoading: false\n });\n });\n }\n\n componentDidMount() {\n this.loadKeyCode();\n const orderService = this.context as OrderState;\n orderService.OnOrderUpdated.addListener(\"keycodeUpdated\", this.orderUpdated);\n }\n\n componentWillUnmount() {\n const orderService = this.context as OrderState;\n if (orderService && orderService.OnOrderUpdated)\n orderService.OnOrderUpdated.removeListener(\"keycodeUpdated\", this.orderUpdated);\n }\n\n orderUpdated = (keysUpdated: string[]) => {\n if (keysUpdated.indexOf(this.props.licenseKey) >= 0) {\n this.loadKeyCode();\n }\n };\n\n\n public render() {\n return \n {this.state.isLoading && !this.state.keyCode &&
}\n
\n \n {this.state.keyCode &&\n \n }\n
\n
\n }\n}\n","import * as React from \"react\";\r\nimport { Component } from \"react\";\r\nimport \"@app/scss/components/LicenseList.scss\";\r\nimport { Grid, GridColumn as Column, GridRowClickEvent } from '@progress/kendo-react-grid';\r\nimport { SortDescriptor, filterBy } from \"@progress/kendo-data-query\";\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { Link } from \"react-router-dom\";\r\nimport { IKeycodesDTO, ProgramType, SubscriptionStatusDTO } from \"@app/models\";\r\nimport { Badge } from 'reactstrap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport PropTypes from 'prop-types';\r\nimport { faCircle } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\n\r\ninterface IProps {\r\n licenses: IKeycodesDTO[];\r\n}\r\n\r\ninterface IState {\r\n sort: SortDescriptor[];\r\n filter: any;\r\n}\r\n\r\nexport default class LicenseGrid extends Component {\r\n static contextTypes = {\r\n router: PropTypes.object\r\n };\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = { sort: [], filter: undefined };\r\n this.handleRowClick = this.handleRowClick.bind(this);\r\n }\r\n\r\n handleRowClick = (e: GridRowClickEvent) => {\r\n debugger;\r\n this.context.router.history.push(\"/Products/\" + e.dataItem.SearchCode);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {\r\n this.setState({\r\n filter: e.filter\r\n });\r\n }}\r\n scrollable={\"none\"}\r\n onRowClick={this.handleRowClick}\r\n sort={this.state.sort}\r\n onSortChange={(e) => {\r\n this.setState({\r\n sort: e.sort\r\n });\r\n }}\r\n >\r\n \r\n \r\n \r\n {\r\n return ({(props.dataItem as IKeycodesDTO).IsTemporary ? \"Temporary\" :\r\n (props.dataItem as IKeycodesDTO).Program == ProgramType.ptSIDEKICK ? \"Term Use\" :\r\n (props.dataItem as IKeycodesDTO).IsSubscription ? \"Subscription\" :\r\n \"Perpetual license\"});\r\n }}\r\n title=\"Type\" />\r\n \r\n {\r\n const row = (props.dataItem as IKeycodesDTO);\r\n let dotColor: string | undefined;\r\n if (row.Program == ProgramType.ptSIDEKICK) {\r\n if (row.Expires && new Date(row.Expires || new Date()) < new Date()) {\r\n dotColor = \"warning\";\r\n } else {\r\n dotColor = \"success\";\r\n }\r\n } else if (!row.IsSubscription) {\r\n if (new Date(row.MaintenanceGoodThrough || new Date()) < new Date()) {\r\n dotColor = \"warning\";\r\n } else {\r\n dotColor = \"success\";\r\n }\r\n }\r\n return \r\n {dotColor && {' '}}\r\n {row.IsSubscription ?\r\n (row.SubscriptionStatus == SubscriptionStatusDTO.Cancelled ? \"Subscription cancelled\" :\r\n row.SubscriptionStatus == SubscriptionStatusDTO.Terminated ? \"Subscription terminated\" :\r\n \"Subscription, renew \" + new Date(row.SubscriptionRenewalDate || new Date()).toLocaleDateString()) :\r\n (row.IsTemporary ?\r\n \"Temporary, through \" + new Date(row.Expires || new Date()).toLocaleDateString() : \r\n (row.Program == ProgramType.ptSIDEKICK ? (\"Expires \"+new Date(row.Expires || new Date()).toLocaleDateString())\r\n : new Date(row.MaintenanceGoodThrough || new Date()).toLocaleDateString()))}\r\n ;\r\n }} />\r\n \r\n \r\n GO\r\n }\r\n filterable={false} />\r\n \r\n \r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\nimport { Component } from \"react\";\nimport \"@app/scss/components/LicenseList.scss\";\nimport { SortDescriptor } from \"@progress/kendo-data-query\";\nimport { IKeycodesDTO } from \"@app/models\";\nimport {\n Nav,\n NavItem,\n NavLink\n} from 'reactstrap';\nimport LicenseGrid from \"./LIcenseGrid\";\nimport { Link } from \"react-router-dom\";\nimport Loader from \"../Loader\";\nimport { licenseTypes, licenseTypeDetails } from \"@app/models\";\nimport { KeycodesState, KeycodesContext } from \"@app/context/KeycodesContext\";\nimport Row from \"reactstrap/lib/Row\";\nimport Col from \"reactstrap/lib/Col\";\n\n\ninterface IProps {\n licenses: IKeycodesDTO[];\n type?: string;\n}\n\ninterface IState {\n sort: SortDescriptor[];\n filter: any;\n}\n\nexport default class LicenseList extends Component {\n static contextType = KeycodesContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n sort: [],\n filter: {\n showAll: true,\n edition: null\n },\n };\n }\n render() {\n const keycodesState = this.context as KeycodesState;\n // Get all the products for every key\n let productList = (keycodesState.Keycodes.reduce<{ code: licenseTypes, title: string, category: string, count: number, devices: number }[]>((result, item) => {\n var code = item.ProductCode as licenseTypes;\n var entry = result.find((entry) => entry.code == code);\n var devices = item.KeyCount;\n if (entry) {\n entry.count++;\n entry.devices += devices;\n } else {\n result.push({\n code: code,\n title: licenseTypeDetails[code].title,\n category: item.ProductCode || \"\",\n count: 1,\n devices: devices\n });\n }\n return result;\n },\n []\n ));\n return (\n
\n \n {!keycodesState.isLoading && \n \n \n \n \n {(keycodesState.hasDefunctCount() > 0) &&\n \n\n \n \n }\n \n key.ProductCode == this.state.filter.edition)} />\n
\n
}\n
\n );\n }\n}\n","import * as React from 'react'\nimport * as H from 'history';\nimport { withRouter } from 'react-router';\nimport { KeycodesContext, KeycodesState } from '@app/context/KeycodesContext';\nimport { OrderConsumer } from '@app/context/OrderContext';\nimport { Link } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faFilter } from '@fortawesome/free-solid-svg-icons';\nimport LicenseList from '@app/components/LicenseListPage/LicenseList';\n\ninterface IProps {\n history: H.History\n location: H.Location;\n match: any;\n type?: string;\n cartFilter?: boolean;\n}\n\ninterface IState {\n}\n\nclass LicenseListPage extends React.Component {\n static contextType = KeycodesContext;\n constructor(props: IProps) {\n super(props);\n this.state = {};\n }\n\n componentWillMount() {\n this.setFilters();\n }\n\n private setFilters() {\n const keycodesState = this.context as KeycodesState;\n keycodesState.clearFilters();\n\n if (this.props.type) {\n keycodesState.setProductFilter(this.props.type);\n }\n\n if (this.props.cartFilter) {\n keycodesState.setFilterToCart(true);\n }\n }\n\n componentDidUpdate(prevProps: IProps, prevState: IState) {\n if (prevProps.cartFilter != this.props.cartFilter || prevProps.type != this.props.type) {\n this.setFilters();\n }\n }\n public render() {\n const keycodesState = this.context as KeycodesState;\n return (\n \n

Product List\n {(this.props.type || this.props.cartFilter) && {' '}\n \n \n \n }\n

\n \n {(orderState) => orderState &&
\n \n
\n }
\n
\n );\n }\n}\n\nexport default withRouter(LicenseListPage);\n","import * as React from \"react\";\nimport {\n Row,\n Col,\n Card,\n CardHeader,\n CardTitle,\n CardFooter,\n CardBody,\n Form,\n Label,\n Input\n} from 'reactstrap';\n\nimport { CloudConnectContext } from '@app/context/CloudConnectContext';\nimport { IClusterInfo, ISentinelInfo } from \"@app/models\";\nimport Button from \"reactstrap/lib/Button\";\n\ninterface IProps {\n cluster: IClusterInfo;\n selectAgentCallback: (newAgent: ISentinelInfo | null) => void;\n}\n\ninterface IState {\n name: string\n}\n\nexport class CreateAgentForm extends React.Component {\n static contextType = CloudConnectContext;\n\n constructor(props: any) {\n super(props);\n this.state = {\n name: name\n };\n }\n\n handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n const context = this.context as CloudConnectContext;\n // name is the only thing we really let you choose right now when creating a controller\n const agent = await context.createAgent(this.props.cluster.ID || \"\", this.state.name);\n if (agent) {\n this.props.selectAgentCallback(agent);\n }\n };\n\n handleChange = (e: React.ChangeEvent) => {\n this.setState({name: e.target.value});\n };\n\n render() {\n return (\n
\n \n \n \n \n \n Create Agent\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n }\n } ","import * as React from \"react\"\nimport { Component } from 'react'\nimport { IClusterInfo } from \"@app/models\";\nimport { Card, CardBody, CardHeader, Button, UncontrolledTooltip } from \"reactstrap\";\nimport CardTitle from \"reactstrap/lib/CardTitle\";\nimport CardFooter from \"reactstrap/lib/CardFooter\";\n\ninterface IProps {\n cluster: IClusterInfo\n createAgent: () => void\n}\n\ninterface State {\n creatingAgent: boolean\n}\n\nexport default class CreateFirstAgentForCluster extends Component {\n\n constructor(props: IProps) {\n super(props);\n\n this.state = {\n creatingAgent: false,\n }\n }\n\n\n render() {\n var helpUrl = window.location.pathname;\n if (!helpUrl.includes(\"tour\")) {\n helpUrl += \"/tour/\";\n }\n\n return (\n \n \n \n Create Agent\n \n \n Agents are PingPlotter instances deployed to remote machines and controlled by you. They trace from the remote machine to targets and relay the information back to your controller instance of PingPlotter. For more information on how to deploy an agent, check out our guided tour.\n \n \n \n \n

\n The second step after activating a contoller is deploying an agent.\n

\n

\n Agents are PingPlotter instances deployed to remote machines and controlled by you.\n They trace from the remote machine to targets and relay the information back to your controller instance of PingPlotter.\n

\n
\n \n \n \n
\n )\n\n }\n}","import * as React from \"react\"\nimport { Component } from 'react'\nimport { Card, CardBody, CardHeader, CardTitle } from \"reactstrap\";\n\ninterface IProps {\n}\n\ninterface State {\n}\n\nexport default class FinishCreatingYourControllerToCreateAgent extends Component {\n\n constructor(props: IProps) {\n super(props);\n }\n \n render() {\n return (\n \n \n \n Deploy Agent\n \n \n \n

\n The second step after activating a contoller is deploying an agent. \n

\n

\n Agents are PingPlotter instances deployed to remote machines and controlled by you. \n They trace from the remote machine to targets and relay the information back to your controller instance of PingPlotter. \n

\n
\n
\n )\n\n }\n}","import * as React from \"react\";\r\nimport { Component } from \"react\";\r\nimport { CloudConnectConsumer, CloudConnectContext } from \"@app/context/CloudConnectContext\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faEdit } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { ISentinelInfo } from '@app/models';\r\nimport Button from \"reactstrap/lib/Button\";\r\n\r\ninterface IProps {\r\n agentId: string;\r\n showName: boolean;\r\n}\r\n\r\ninterface IState { }\r\n\r\nexport default class EditableAgentName extends Component {\r\n static contextType = CloudConnectContext;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n editAgentName = async (e: React.MouseEvent, agent: ISentinelInfo) => {\r\n\r\n e.preventDefault();\r\n\r\n if (!agent) {\r\n return;\r\n }\r\n\r\n const newName = prompt('Enter a new agent name.', agent.Name);\r\n if (newName) {\r\n await this.context.editAgent({ ...agent, Name: newName });\r\n }\r\n return;\r\n };\r\n\r\n\r\n render() {\r\n const context = (this.context as CloudConnectContext);\r\n const agent = context.getAgent(this.props.agentId);\r\n if (agent) {\r\n return (\r\n \r\n {(cc) => {\r\n return (\r\n \r\n {this.props.showName ? \r\n { this.editAgentName(e, agent) }}>\r\n \r\n {agent.Name ? agent.Name : \"Enter agent name.\"}\r\n \r\n : \r\n \r\n }\r\n \r\n );\r\n }\r\n }\r\n \r\n );\r\n } else {\r\n return (null);\r\n }\r\n\r\n }\r\n}\r\n\r\n","import * as React from \"react\";\nimport { Component } from \"react\";\nimport { ComboBox, ComboBoxChangeEvent } from '@progress/kendo-react-dropdowns';\nimport { IVersionGroupDTO, MagHubController } from \"@app/models\";\nimport Button from \"reactstrap/lib/Button\";\nimport { Col, Row } from \"reactstrap\";\n\ninterface IProps {\n label: string\n currentVersionGroupUniqueId: string\n handleSave: (newVersionGroupUniqueId: string) => any\n}\n\ninterface IState {\n versionGroups: IVersionGroupDTO[]\n currentSelected: string\n}\n\nexport default class VersionGroupDropdown extends Component {\n\n private magHubController: MagHubController\n = new MagHubController();\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n versionGroups: new Array(),\n currentSelected: this.props.currentVersionGroupUniqueId\n }\n }\n\n componentDidMount = () => {\n this.magHubController.getVersionGroups().then(versionGroups => {\n this.setState({\n versionGroups: versionGroups,\n });\n });\n }\n\n onChange = (e: ComboBoxChangeEvent) => {\n const selectedName = e.target.value;\n\n const selectedVersionGroup = this.state.versionGroups.find(vg => vg.Name === selectedName);\n\n if (selectedVersionGroup) {\n this.setState({ currentSelected: selectedVersionGroup.UniqueId || \"\"})\n }\n }\n\n render() {\n const versionGroupNames = [...this.state.versionGroups].map(vg => vg.Name);\n\n let selectedName = '';\n\n let selected = this.state.versionGroups.find(vg => vg.UniqueId === this.state.currentSelected);\n\n if (!selected) {\n selected = this.state.versionGroups.find(vg => vg.IsDefault)\n if (!selected) {\n selectedName = 'No version group';\n } else {\n selectedName = selected.Name || \"\"\n }\n } else {\n selectedName = selected.Name || \"\"\n }\n\n return (\n \n \n \n {this.props.label}\n \n \n \n {this.props.currentVersionGroupUniqueId !== this.state.currentSelected &&\n \n }\n \n \n );\n }\n}\n\n","import * as React from \"react\";\nimport { Component } from \"react\";\nimport { GridDetailRowProps } from \"@progress/kendo-react-grid\";\nimport { CloudConnectContext } from \"@app/context/CloudConnectContext\";\nimport { ISentinelInfo } from \"@app/models\";\nimport { Badge, Button, Modal, ModalBody, ModalFooter, ModalHeader, Row, Input, InputGroup } from \"reactstrap\";\nimport { FormatPlatformId } from \"@components/ReactTable/PlatformNameDisplay\";\nimport EditableAgentName from \"./EditableAgentName\";\nimport Col from \"reactstrap/lib/Col\";\nimport VersionGroupDropdown from \"./VersionGroupDropdown\";\nimport { AuthConsumer, AuthState } from \"@app/context/AuthContext\";\nimport { faEnvelope, faHistory, faSync, faUnlock } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport appSettings from \"@app/appSettings\";\n\ninterface IDetailRowState {\n newNameValue: string | undefined;\n showing: boolean;\n uninstallAgent: boolean;\n}\n\nexport class AgentListDetails extends Component {\n static contextType = CloudConnectContext;\n\n constructor(props: GridDetailRowProps) {\n super(props);\n\n this.state = {\n newNameValue: props.dataItem.Name,\n showing: false,\n uninstallAgent: false\n };\n }\n\n toggle = () => {\n this.setState({showing: !this.state.showing});\n };\n\n toggleUninstallState = () => {\n this.setState({uninstallAgent: !this.state.uninstallAgent});\n };\n\n handleDeleteAgent = (e: React.MouseEvent, agentId: string) => {\n e.preventDefault();\n\n const ccContext = (this.context as CloudConnectContext);\n const agent = ccContext.getAgent(agentId);\n debugger;\n if (agent) {\n ccContext.deleteAgent(agent, this.state.uninstallAgent);\n }\n };\n\n saveEdits = () => {\n if (this.props.dataItem.Name != this.state.newNameValue) {\n this.props.dataItem.editName({...this.props.dataItem, Name: this.state.newNameValue});\n }\n };\n\n handleVersionGroupUpdated = async (newVersionGroupUniqueId: string) => {\n const context = this.context as CloudConnectContext;\n const agent = this.props.dataItem as ISentinelInfo;\n const updatedAgent: ISentinelInfo = { ...agent, VersionGroupUniqueId: newVersionGroupUniqueId };\n await context.editAgent(updatedAgent);\n };\n\n forceToReconnect = async (e: React.MouseEvent) => {\n e.preventDefault();\n\n const context = this.context as CloudConnectContext;\n const agent = this.props.dataItem as ISentinelInfo;\n await context.forceAgentToReconnect(agent.UniqueID || \"\");\n };\n\n clearAgentMachineId = async (e: React.MouseEvent) => {\n e.preventDefault();\n\n const context = this.context as CloudConnectContext;\n const agent = this.props.dataItem as ISentinelInfo;\n await context.clearMachineIDForSentinel(agent);\n };\n\n requestSupportTicket = async (e: React.MouseEvent) => {\n e.preventDefault();\n const context = this.context as CloudConnectContext;\n const agent = this.props.dataItem as ISentinelInfo;\n await context.requestSupportTicketFromAgent(agent);\n };\n\n\n render() {\n const context = this.context as CloudConnectContext;\n const agent = this.props.dataItem as ISentinelInfo;\n const agentID = agent.UniqueID;\n if (!agentID) return No Agent ID;\n const targets = context.getTargetsForAgent(agentID);\n const lastMessageTime = new Date(agent.LastMessageDateTime);\n return (
this.props.dataItem.select()}>\n \n Delete agent\n \n

\n {agent ? agent.Name : ''}\n

\n Deleting this agent severs the connection between your account and the agent.\n PingPlotter will remain installed on the remote machine, but all of this agent's traces will be removed.\n
\n \n \n {(authContext: AuthState | null) => authContext && authContext.isStaff &&\n \n \n Uninstall Agent\n \n }\n \n  \n \n\n \n
\n \n \n

\n Status: {agent.IsOnline ? \"Online\" : agent.Configured ? \"Offline\" : \"Pending deployment\"}{' '}\n {!agent.IsOnline && agent.Configured && \n \n \n }\n

\n

Active traces: {targets.length}

\n\n \n \n \n \n \n \n \n \n \n
\n {agent.Version && \n \n

\n Running\n Version: {agent.Version} {FormatPlatformId(agent.Platform)} {agent.TargetVersion && agent.TargetVersion != agent.Version &&\n
(pending update to {agent.TargetVersion})
}\n

\n \n {(auth: AuthState | null) => auth && auth.isStaff &&\n \n }\n \n \n
}\n {agent.MachineName && \n \n

\n Machine Name: {agent.MachineName} {agent.ServiceRunning && (running as service)}\n

\n \n
}\n \n \n {agent.IsOnline ?\n
\n

\n Online now\n {' '}\n \n \n \n {' '}\n \n {(auth: AuthState | null) => auth && auth.isStaff &&\n \n \n }\n \n

\n
\n :\n

\n Offline\n {' '}\n Last\n connect: {lastMessageTime.getFullYear() < 1900 ? \"---\" : lastMessageTime.toLocaleString()}\n

\n }\n\n\n {agent.Usage && \n

Messages: {agent.Usage.TotalMessages}

\n

Bytes sent: {agent.Usage.TotalBytes}

\n
}\n \n {(auth: AuthState | null) => auth && auth.isStaff &&\n \n

staff:\n  \n appSettings.success(text + \" in clipboard\")}>\n SentinelID: {agent.ID}\n \n appSettings.success(text + \" in clipboard\")}>\n SentinelUniqueID: {agent.UniqueID}\n \n  \n \n  \n appSettings.success(text + \" in clipboard\")}>\n {agentID.substr(0, 4)}…\n \n  \n appSettings.success(text + \" in clipboard\")}>\n Cluster {(agent.ClusterID || \"\").substr(0, 6)}…\n \n

\n
\n }\n
\n\n \n
\n
);\n }\n}","import * as React from \"react\";\nimport { Component } from \"react\";\nimport { Badge, Button, Card, CardHeader, CardTitle, Row, UncontrolledTooltip } from 'reactstrap';\nimport {\n Grid,\n GridColumn as Column,\n GridExpandChangeEvent,\n GridFilterChangeEvent,\n GridRowClickEvent,\n GridSortChangeEvent\n} from '@progress/kendo-react-grid';\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from '@progress/kendo-data-query';\nimport \"@app/scss/components/LicenseList.scss\";\nimport '@progress/kendo-theme-bootstrap/scss/grid.scss';\nimport { CloudConnectContext } from '@app/context/CloudConnectContext';\nimport { ISentinelInfo } from '@app/models';\nimport Col from \"reactstrap/lib/Col\";\nimport { CreateAgentForm } from '@app/components/CloudConnect/AgentSetup/CreateAgentForm';\nimport FirstAgentForCluster from \"@app/components/CloudConnect/AgentSetup/CreateFirstAgentForCluster\";\nimport FinishCreatingControllerToCreateAgent\n from '@app/components/CloudConnect/AgentSetup/FinishCreatingControllerToCreateAgent';\nimport CardBody from \"reactstrap/lib/CardBody\";\nimport TimeAgo from \"react-timeago\";\nimport { AgentListDetails } from \"@components/CloudConnect/AgentListDetails\";\n\n\ninterface IAgentListProps {\n onlineFilterable: boolean;\n usageStatsVisible: boolean;\n clusterId: string;\n accountId: string;\n agentSelectedHandler: (agent: ISentinelInfo | null) => void;\n}\n\ninterface State {\n sort: SortDescriptor[]\n filter: CompositeFilterDescriptor | undefined\n editItem: any\n editField: any\n selectedID: any | null;\n creatingAgent: boolean,\n expanded: string[]\n}\n\nexport default class AgentList extends Component {\n static contextType = CloudConnectContext;\n\n constructor(props: any) {\n super(props);\n\n this.state = {\n sort: new Array(),\n filter: undefined,\n editItem: undefined,\n editField: undefined,\n selectedID: null,\n creatingAgent: false,\n expanded: []\n };\n }\n\n getLastMessageDateTimeString = (agent: ISentinelInfo) => {\n if (!agent.Configured) {\n return 'Never';\n } else {\n // The MagHub sends over values with a year of '1' for agents that have never cleanly disconnected\n // or have never been configured. It's possible that an agent has always been closed \n // by a server deployment, which doesn't cleanly persist this value. \n if (new Date(agent.LastMessageDateTime).getFullYear() <= 1) {\n return 'Unknown';\n }\n\n return new Date(agent.LastMessageDateTime).toLocaleString();\n }\n };\n \n getStatusCode = (agent: ISentinelInfo) => {\n if (!agent.Configured) {\n return \"Pending\";\n }\n if (agent.IsOnline) {\n return \"Active\";\n } else {\n return \"Offline\";\n }\n };\n\n getStatus = (agent: ISentinelInfo) => {\n if (!agent.Configured) {\n return Pending
How to deploy
;\n }\n\n if (agent.IsOnline) {\n if (agent.OpenSessions > 0) {\n return Active;\n } else {\n return Active
How to trace
;\n }\n } else {\n return Offline
since
;\n }\n\n };\n\n getSessionCount = (agent: ISentinelInfo) => {\n const context = this.context as CloudConnectContext;\n if (!agent.UniqueID) throw new Error(\"Missing agent ID\");\n const targets = context.getTargetsForAgent(agent.UniqueID);\n return targets.length;\n };\n\n handleSortChange = (e: GridSortChangeEvent) => {\n this.setState({ sort: e.sort });\n };\n\n handleFilterChange = (e: GridFilterChangeEvent) => {\n this.setState({ filter: e.filter });\n };\n\n performTransforms = (items: ISentinelInfo[]) => {\n if (this.state.filter) {\n return orderBy(filterBy(items, this.state.filter), this.state.sort);\n } else {\n return orderBy(items, this.state.sort);\n }\n };\n\n handleRowClick = (e: GridRowClickEvent) => {\n e.dataItem.select();\n };\n\n private ensureAgentSelected = () => {\n const ccContext = this.context as CloudConnectContext;\n if (!ccContext) return;\n const agents = ccContext.getAgentsForAccount(this.props.accountId);\n if (agents.length == 0) {\n if (this.state.selectedID) {\n this.setState({ selectedID: null }, () => this.props.agentSelectedHandler(null));\n }\n } else {\n if (!this.state.selectedID || !agents.find(a => a.UniqueID == this.state.selectedID)) {\n const selAgent = agents[0];\n this.setState({\n selectedID: selAgent.UniqueID\n }, () => this.props.agentSelectedHandler(selAgent)\n );\n }\n }\n };\n\n componentWillMount = () => {\n this.ensureAgentSelected();\n };\n\n componentDidUpdate = () => {\n this.ensureAgentSelected();\n };\n\n createAgent = () => {\n this.setState({ creatingAgent: true });\n };\n\n selectAgentAfterCreation = (agent: ISentinelInfo | null) => {\n this.setState({\n creatingAgent: false\n });\n if (agent) {\n this.setState({\n selectedID: agent.UniqueID\n });\n this.props.agentSelectedHandler(agent);\n }\n };\n\n expandChange = (event: GridExpandChangeEvent) => {\n const agent = event.dataItem as ISentinelInfo;\n if (!agent.UniqueID) throw new Error(\"Missing agent ID\");\n const id = agent.UniqueID;\n if (event.value) {\n this.setState({\n expanded: [...this.state.expanded, id]\n });\n event.dataItem.select();\n } else {\n this.setState({\n expanded: this.state.expanded.filter(e => e != id)\n });\n }\n };\n\n editName = (agent: ISentinelInfo) => {\n const ccContext = this.context as CloudConnectContext;\n ccContext.editAgent(agent);\n };\n\n render() {\n const ccContext = this.context as CloudConnectContext;\n if (!ccContext) return;\n const ccState = ccContext.state;\n // no cluster ID yet.\n if (this.props.clusterId === '') {\n return (\n \n );\n }\n\n if (this.state.creatingAgent) {\n return (\n c.ID === this.props.clusterId)[0]}\n selectAgentCallback={this.selectAgentAfterCreation} />\n );\n }\n\n const allAgents = ccContext.getAgentsForAccount(this.props.accountId);\n const agents = this.performTransforms(allAgents.map((item) => ({\n ...item,\n selected: item.UniqueID === this.state.selectedID,\n inEdit: item === this.state.editItem,\n expanded: this.state.expanded.find(e => e == item.UniqueID),\n editName: this.editName,\n sessionCount: this.getSessionCount(item),\n Status: this.getStatusCode(item) + \" \" + item.UniqueID,\n select: () => {this.setState({selectedID: item.UniqueID}, () => this.props.agentSelectedHandler(item))}\n })));\n var helpUrl = window.location.pathname;\n if (!helpUrl.includes(\"tour\")) {\n helpUrl += \"/tour/\";\n }\n\n if (allAgents.length == 0) {\n return (\n c.ID === this.props.clusterId)[0]}\n createAgent={this.createAgent} />\n );\n }\n\n return (\n \n\n \n \n \n \n \n \n Agents\n \n \n Agents are PingPlotter instances deployed to remote machines and controlled by you. They trace from the remote machine to targets and relay the information back to your controller instance of PingPlotter. For more information on how to deploy an agent, check out our guided tour.\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n

\n All\n

\n
\n AGENTS\n
\n \n \n

\n {agents.length}\n

\n
\n TOTAL\n
\n \n
\n
\n \n \n {this.getStatus((props.dataItem as ISentinelInfo))}} title=\"Status\"\n filterable={this.props.onlineFilterable}\n sortable={true}\n field=\"Status\"\n />\n \n\n {this.props.usageStatsVisible &&\n \n \n \n \n }\n \n
\n );\n }\n}","import * as React from \"react\"\nimport { Component } from 'react'\nimport { Card, CardBody, CardHeader, CardTitle } from \"reactstrap\";\n\ninterface IProps {\n}\n\ninterface State {\n}\n\nexport default class CreateYourFirstTrace extends Component {\n\n constructor(props: IProps) {\n super(props);\n }\n \n render() {\n return (\n \n \n Start a Trace\n \n \n

\n The final step in the CloudConnect setup process is starting your first trace. \n

\n

\n Traces are what PingPlotter does best. The term refers to the continual traceroute performed by PingPlotter.\n They are especially important for CloudConnect because the amount you pay for the service depends and the number of traces you want to run at any given time. \n

\n
\n
\n )\n\n }\n}","import * as React from \"react\";\nimport { DropdownToggle, DropdownMenu, DropdownItem, Dropdown, Modal, ModalBody, ModalHeader, ModalFooter, Button, Input, InputGroup } from 'reactstrap';\nimport \"@app/scss/components/LicenseList.scss\";\nimport '@progress/kendo-theme-bootstrap/scss/grid.scss';\nimport copy from 'copy-to-clipboard';\nimport appSettings from \"@app/appSettings\";\nimport { CloudConnectContext } from \"@app/context/CloudConnectContext\";\nimport { AuthConsumer, AuthState } from \"../../../context/AuthContext\";\n\ninterface AgentBtnProps {\n agentId: string;\n}\n\ninterface AgentBtnState {\n configureDropdownOpen: boolean\n showing: boolean\n loadingAgentLink: boolean\n agentDownloadPage: string,\n uninstallAgent: boolean\n}\n\nexport class ManageAgentButton extends React.Component {\n static contextType = CloudConnectContext;\n\n constructor(props: any) {\n super(props);\n this.state = {\n configureDropdownOpen: false,\n agentDownloadPage: \"\",\n loadingAgentLink: false,\n showing: false,\n uninstallAgent: false\n };\n }\n\n handleDeleteAgent = (e: React.MouseEvent) => {\n e.preventDefault();\n\n const ccContext = (this.context as CloudConnectContext);\n const agent = ccContext.getAgent(this.props.agentId);\n if (agent) {\n ccContext.deleteAgent(agent, this.state.uninstallAgent);\n }\n };\n\n toggleUninstallState = () => {\n this.setState({ uninstallAgent: !this.state.uninstallAgent })\n }\n\n handleGetAgentDownloadLink = async (e: React.MouseEvent) => {\n // Be careful here - we can't do an async or callback on this or the page won't open - needs to be because\n // of a user click.\n if (this.state.agentDownloadPage && !this.state.loadingAgentLink) {\n // Try opening in new window\n if (!window.open(this.state.agentDownloadPage, \"_blank\")) {\n // If nogo, open in this one.\n window.open(this.state.agentDownloadPage);\n }\n }\n };\n\n loadDownloadPageURL = async () => {\n const ccContext = this.context as CloudConnectContext;\n const agent = ccContext.getAgent(this.props.agentId);\n if (!agent) return;\n this.setState({ loadingAgentLink: true });\n let url = await ccContext.getAgentDownloadLink(agent);\n\n this.setState({\n agentDownloadPage: url,\n loadingAgentLink: false\n });\n\n };\n\n componentWillMount = () => {\n this.loadDownloadPageURL();\n };\n\n componentDidUpdate = (prevProps: AgentBtnProps) => {\n if (prevProps.agentId != this.props.agentId && !this.state.loadingAgentLink) {\n this.loadDownloadPageURL();\n }\n };\n\n\n handleCopyActivationLink = async () => {\n if (copy(await this.buildPingPlotterProtocolUrl())) {\n appSettings.success(\"Activation link copied to clipboard. Paste it in to a URL bar in a browser on the agent machine (must have PingPlotter already)\");\n } else {\n appSettings.error(\"Copy not successful\");\n }\n }\n\n buildPingPlotterProtocolUrl = async () => {\n const ccContext = (this.context as CloudConnectContext);\n const agent = ccContext.getAgent(this.props.agentId);\n if (!agent) return \"\";\n return await ccContext.getAgentActivationLink(agent);\n }\n\n toggleConfigureDropDown = () => this.setState({ configureDropdownOpen: !this.state.configureDropdownOpen });\n\n\n toggle = () => {\n this.setState({ configureDropdownOpen: false })\n this.setState({ showing: !this.state.showing })\n }\n\n render() {\n\n const context = this.context as CloudConnectContext;\n const agent = context.getAgent(this.props.agentId);\n\n return (\n
\n \n Delete agent\n \n

\n {agent ? agent.Name : ''}\n

\n Deleting this agent severs the connection between your account and the agent.\n PingPlotter will remain installed on the remote machine, but all of this agent's traces will be removed.\n
\n \n \n {(authContext: AuthState | null) => authContext && authContext.isStaff &&\n \n \n Uninstall Agent\n \n }\n \n  \n \n\n \n
\n\n \n \n MANAGE\n \n \n Deploy\n {!this.state.loadingAgentLink} this.handleGetAgentDownloadLink(e)}>Download Agent\n this.handleCopyActivationLink()}>\n Copy activation link\n \n \n Deactivate this agent\n \n \n
\n );\n }\n}","import * as React from \"react\";\nimport { Component } from 'react';\nimport {\n Card,\n CardBody,\n CardHeader,\n Row,\n Col,\n Button,\n} from \"reactstrap\";\nimport CardTitle from \"reactstrap/lib/CardTitle\";\nimport CardFooter from \"reactstrap/lib/CardFooter\";\nimport { CloudConnectContext } from \"@app/context/CloudConnectContext\";\nimport { ManageAgentButton } from \"./ManageAgentButton\";\nimport Loader from \"@components/Loader\";\nimport * as CopyToClipboard from 'react-copy-to-clipboard';\nimport appSettings from \"@app/appSettings\";\n\ninterface IProps {\n agentId: string\n}\n\ninterface State {\n loadingAgentLink: boolean;\n agentDownloadPage: string;\n agentActivationLink: string;\n}\n\nexport default class UnconfiguredAgentCard extends Component {\n static contextType = CloudConnectContext;\n\n constructor(props: IProps) {\n super(props);\n\n this.state = {\n agentDownloadPage: \"\",\n agentActivationLink: \"\",\n loadingAgentLink: false\n };\n }\n\n loadDownloadPageURL = async () => {\n const ccContext = this.context as CloudConnectContext;\n const agent = ccContext.getAgent(this.props.agentId);\n if (!agent) return;\n this.setState({loadingAgentLink: true});\n let url = await ccContext.getAgentDownloadLink(agent);\n let link = await ccContext.getAgentActivationLink(agent);\n this.setState({\n agentDownloadPage: url,\n loadingAgentLink: false,\n agentActivationLink: link\n });\n\n };\n\n componentWillMount = () => {\n this.loadDownloadPageURL();\n };\n\n componentDidUpdate = (prevProps: IProps) => {\n if (prevProps.agentId != this.props.agentId && !this.state.loadingAgentLink) {\n this.loadDownloadPageURL();\n }\n };\n\n render() {\n const ccContext = this.context as CloudConnectContext;\n const agent = ccContext.getAgent(this.props.agentId);\n\n const context = this.context;\n\n if (!context) {\n return ;\n }\n\n if (this.state.loadingAgentLink || !agent) {\n return ;\n }\n\n return (\n \n \n \n \n \n \n Deploy Agent\n \n \n \n {agent && }\n \n \n\n \n \n \n

\n {agent.Name}\n

\n

\n To deploy this agent, download and\n install PingPlotter on the remote machine you wish to trace from.\n

\n

\n If you already have PingPlotter installed on your agent machine, paste\n \n {\n e.preventDefault();\n appSettings.success(\"Powerup \" + this.state.agentActivationLink + \" copied to clipboard\");\n }}> this link\n into the browser on the agent machine.\n

\n
\n \n \n\n {/* */}\n \n
\n );\n\n }\n}","import * as React from \"react\"\nimport { Component } from 'react'\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from \"reactstrap\";\n\ninterface IProps {\n handleOkay: () => void;\n buttonText: string;\n buttonSize: string;\n buttonClassName: string;\n modalBody: string;\n modalTitle: string;\n modalClassName: string;\n}\n\ninterface State {\n showing: boolean\n}\n\nexport default class ButtonWithConfirmationModal extends Component {\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n showing: false\n };\n\n }\n\n toggle = () => this.setState({ showing: !this.state.showing });\n\n handleOkay = (e: React.MouseEvent) => {\n e.preventDefault();\n this.props.handleOkay();\n this.toggle();\n }\n\n handleButtonClick = (e: React.MouseEvent) => {\n e.preventDefault();\n this.toggle();\n }\n\n render() {\n\n return (\n
\n {this.state.showing &&\n \n {this.props.modalTitle}\n \n {this.props.modalBody}\n \n \n {' '}\n \n \n \n }\n \n
\n )\n\n\n }\n}","import * as React from \"react\";\nimport { Component } from \"react\";\nimport { GridDetailRowProps } from \"@progress/kendo-react-grid\";\nimport { CloudConnectContext } from \"@app/context/CloudConnectContext\";\nimport { ISessionRow } from \"@components/CloudConnect/AgentViewer\";\nimport { TraceStatusEnumDTO } from \"@app/models\";\nimport { Badge } from \"reactstrap\";\nimport { AuthConsumer, AuthState } from \"@app/context/AuthContext\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport appSettings from \"@app/appSettings\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faHistory } from \"@fortawesome/free-solid-svg-icons\";\n\ninterface IDetailRowState {\n}\n\nexport class AgentViewerTargetDetails extends Component {\n static contextType = CloudConnectContext;\n\n constructor(props: GridDetailRowProps) {\n super(props);\n\n this.state = {\n };\n }\n\n render() {\n var sessionRow = this.props.dataItem as ISessionRow;\n \n// const context = this.context as CloudConnectContext;\n return (
\n

\n Status: {TraceStatusEnumDTO[sessionRow.TraceStatus]}\n

\n

\n Controller: {sessionRow.controllerName}\n

\n

\n Trace Interval: {sessionRow.TraceInterval / 1000} seconds\n

\n

\n Packet Type: {sessionRow.PacketType}\n

\n

\n Traces waiting: {sessionRow.SentinelLastSampleSetID - sessionRow.MagnetoLastSampleSetID}\n

\n \n {(auth: AuthState | null) => auth && auth.isStaff &&\n \n

staff:\n  \n appSettings.success(text + \" in clipboard\")}>\n SessionID: {sessionRow.Id}\n \n  \n \n

\n
\n }\n
\n
);\n }\n}","import * as React from \"react\";\r\nimport { Card, CardBody, CardHeader, Row, Col, CardTitle, UncontrolledTooltip } from 'reactstrap';\r\nimport \"@app/scss/components/LicenseList.scss\";\r\nimport '@progress/kendo-theme-bootstrap/scss/grid.scss';\r\nimport { CloudConnectContext } from '@app/context/CloudConnectContext';\r\nimport CreateYourFirstTrace from \"./AgentSetup/CreateYourFirstTrace\";\r\nimport UnconfiguredAgentCard from \"./AgentSetup/UnconfiguredAgentCard\";\r\nimport { ManageAgentButton } from \"./AgentSetup/ManageAgentButton\";\r\nimport ButtonWithConfirmationModal from \"../Utils/ButtonSafety/ButtonWithConfirmationModal\";\r\nimport { Grid, GridColumn as Column, GridExpandChangeEvent } from '@progress/kendo-react-grid';\r\nimport { AgentViewerTargetDetails } from \"@components/CloudConnect/AgentViewerTargetDetails\";\r\nimport { ISessionInfo } from \"@app/models\";\r\n\r\n\r\ninterface AgentViewerProps {\r\n accountId: string;\r\n agentId: string;\r\n gettingStarted: boolean;\r\n}\r\n\r\ninterface AgentViewerState {\r\n configureDropdownOpen: boolean;\r\n expanded: string[];\r\n}\r\n\r\nexport interface ISessionRow extends ISessionInfo {\r\n controllerName: string;\r\n expanded: boolean;\r\n}\r\n\r\nexport class AgentViewer extends React.Component {\r\n static contextType = CloudConnectContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n configureDropdownOpen: false,\r\n expanded: [],\r\n };\r\n }\r\n\r\n componentDidUpdate() {\r\n const ccContext = (this.context as CloudConnectContext);\r\n const sessions: ISessionRow[] = ccContext.getTargetsForAgent(this.props.agentId)\r\n .map((s) => {\r\n // Add the extra \"expanded\" field to the data item. Can still be cast as a SessionInfo\r\n // Add the controller name lookup, too.\r\n return {\r\n ...s,\r\n controllerName: 'Cloud',\r\n expanded: this.state.expanded.indexOf(s.UniqueID || \"\") >= 0\r\n };\r\n });\r\n if (ccContext.state.sessionCount != sessions.length) {\r\n ccContext.updateSessionCount(sessions.length);\r\n }\r\n }\r\n\r\n expandChange = (event: GridExpandChangeEvent) => {\r\n const session = event.dataItem as ISessionInfo;\r\n const id = session.UniqueID;\r\n if (event.value) {\r\n this.setState({\r\n expanded: [...this.state.expanded, id || \"\"]\r\n });\r\n } else {\r\n this.setState({\r\n expanded: this.state.expanded.filter(e => e != id)\r\n });\r\n }\r\n };\r\n\r\n render() {\r\n const ccContext = (this.context as CloudConnectContext);\r\n const agent = ccContext.getAgent(this.props.agentId);\r\n if (this.props.gettingStarted) {\r\n return ;\r\n }\r\n if (agent) {\r\n if (!agent.MachineID || agent.MachineID.length === 0) {\r\n return ;\r\n }\r\n }\r\n const sessions: ISessionRow[] = ccContext.getTargetsForAgent(this.props.agentId)\r\n .map((s) => {\r\n // Add the extra \"expanded\" field to the data item. Can still be cast as a SessionInfo\r\n // Add the controller name lookup, too.\r\n return {\r\n ...s,\r\n controllerName: 'Cloud',\r\n expanded: this.state.expanded.indexOf(s.UniqueID || \"\") >= 0\r\n };\r\n });\r\n var helpUrl = window.location.pathname;\r\n if (!helpUrl.includes(\"tour\")) {\r\n helpUrl += \"/tour/\";\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Traces\r\n \r\n \r\n Remote Traces function just like local ones, only they can be modified and monitored by a Controller. For more information on how to start a remote trace, check out our guided tour.\r\n \r\n \r\n \r\n \r\n {agent && }\r\n \r\n \r\n \r\n \r\n {agent &&\r\n sessions && \r\n {sessions.length === 0 ?

\r\n Agent not tracing\r\n

\r\n

\r\n To start a trace on this agent, open your PingPlotter Controller, select {agent.Name} from\r\n the agent dropdown, enter your target name, and hit enter to start a trace.\r\n

\r\n : \r\n \r\n

\r\n {agent.Name}\r\n

\r\n
AGENT
\r\n \r\n \r\n

\r\n {sessions.length}\r\n

\r\n
TOTAL
\r\n
}\r\n
}\r\n {!agent &&

\r\n Click a row in the Agent list to display its details here.\r\n

}\r\n
\r\n {sessions &&\r\n sessions.length > 0 && \r\n \r\n {\r\n return (\r\n ccContext.deleteTarget(props.dataItem)}\r\n />\r\n );\r\n }\r\n } />\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}","import { CloudConnectAccountContactRoleDTO, ICloudConnectAccountsDTO } from '@app/models';\nimport appSettings from '@app/appSettings';\nimport * as React from 'react';\nimport { CloudConnectContext } from './CloudConnectContext';\nimport { ICloudConnectAccountContactDTO, ICloudConnectAccountContactRoleDTO, ICloudConnectAccountPermissionSetDTO, CloudConnectAccountPermissionArea, CloudConnectAccountPermissionType } from '@app/models';\nimport { CloudConnectAccountController } from '@app/models';\n\n\n\nexport interface CloudConnectContactsContextProps {\n account: ICloudConnectAccountsDTO;\n isStaff: boolean;\n}\n\nexport interface CloudConnectContactsContextState {\n isLoading: boolean;\n error: string;\n contacts: ICloudConnectAccountContactDTO[];\n roles: ICloudConnectAccountContactRoleDTO[];\n permissionSets: ICloudConnectAccountPermissionSetDTO[];\n currentRole: ICloudConnectAccountContactRoleDTO | undefined;\n}\n\nexport interface CloudConnectContactsContext {\n isLoading: boolean;\n currentRole: ICloudConnectAccountContactRoleDTO | undefined;\n contacts: ICloudConnectAccountContactDTO[];\n roles: ICloudConnectAccountContactRoleDTO[];\n permissionSets: ICloudConnectAccountPermissionSetDTO[];\n account: ICloudConnectAccountsDTO;\n associateContact: (email: string) => Promise;\n unassociateContact: (email: string) => Promise;\n getRoleForContact: (email: string) => ICloudConnectAccountContactRoleDTO | undefined;\n updateRoleForContact: (email: string, newRole: ICloudConnectAccountContactRoleDTO) => void;\n doesCurrentUserHaveReadAccess: (area: CloudConnectAccountPermissionArea) => boolean;\n doesCurrentUserHaveWriteAccess: (area: CloudConnectAccountPermissionArea) => boolean;\n error: string;\n clearError: VoidFunction;\n setError: (error: string) => void;\n}\n\nexport const CloudConnectContactsContext = React.createContext(null);\n\nclass CloudConnectContactsProvider extends React.Component {\n static contextType = CloudConnectContext;\n\n private CloudConnectAccountController: CloudConnectAccountController\n = new CloudConnectAccountController();\n\n constructor(props: CloudConnectContactsContextProps) {\n super(props);\n this.state = {\n isLoading: false,\n error: '',\n contacts: new Array(),\n roles: new Array(),\n permissionSets: new Array(),\n currentRole: undefined,\n }\n }\n\n componentDidMount = () => {\n this.init();\n }\n\n init = async () => {\n this.setState({ isLoading: true });\n\n try {\n\n if (!this.props.account.UniqueId) return;\n \n const currentUsersRole = await this.CloudConnectAccountController.role(this.props.account.UniqueId);\n\n if (currentUsersRole) {\n this.setState({ currentRole: currentUsersRole });\n }\n\n const getContactsForAccount =\n this.CloudConnectAccountController.getContactsForCloudConnectAccount(this.props.account.UniqueId);\n\n const getRolesForAccount =\n this.CloudConnectAccountController.getContactRolesForCloudConnectAccount(this.props.account.UniqueId);\n\n const getPermissionSets =\n this.CloudConnectAccountController.getPermissionSetsForCloudConnectAccount(this.props.account.UniqueId);\n\n await Promise.all([getContactsForAccount, getRolesForAccount, getPermissionSets]);\n\n const contacts = await getContactsForAccount;\n if (contacts) {\n this.setState({ contacts: contacts });\n }\n\n const roles = await getRolesForAccount;\n if (roles) {\n this.setState({ roles: roles });\n }\n\n const permissions = await getPermissionSets;\n if (permissions) {\n this.setState({ permissionSets: permissions });\n }\n\n } catch (ex) {\n this.setState({ error: ex.message });\n }\n this.setState({ isLoading: false });\n\n }\n\n associateContact = async (email: string) => {\n if (!this.doesCurrentUserHaveWriteAccess(CloudConnectAccountPermissionArea.Contacts)) {\n this.setState({\n error: 'Access denied. You don\\'t have permission to change contact associations'\n });\n }\n\n await this.CloudConnectAccountController.associateContactWithCloudConnectAccount(\n this.props.account.UniqueId || \"\",\n email);\n\n await this.init();\n }\n\n unassociateContact = async (email: string) => {\n if (!this.doesCurrentUserHaveWriteAccess(CloudConnectAccountPermissionArea.Contacts)) {\n this.setState({\n error: 'Access denied. You don\\'t have permission to change contact associations'\n });\n }\n\n const contact = this.state.contacts.find(c => c.Email === email);\n\n let successful = true;\n\n if (!contact) {\n return;\n } else {\n try {\n await this.CloudConnectAccountController.revokeContactsAccessToCloudConnectAccount(\n this.props.account.UniqueId || \"\",\n email);\n } catch (ex) {\n this.setState({ error: ex.message });\n successful = false;\n }\n }\n\n if (successful) {\n this.clearError();\n }\n\n this.init();\n\n }\n\n getRoleForContact = (email: string) => {\n const contact = this.state.contacts.find(c => c.Email === email);\n if (contact) {\n return contact.Role;\n } else {\n this.setState({ error: `Could not find associated user with email address of ${email}` });\n return undefined;\n }\n }\n\n updateRoleForContact = async (email: string, newRole: ICloudConnectAccountContactRoleDTO) => {\n if (!this.doesCurrentUserHaveWriteAccess(CloudConnectAccountPermissionArea.Contacts)) {\n this.setState({ error: 'Access denied. You don\\'t have permission to change contact roles' });\n }\n\n let successful = true;\n\n try {\n await this.CloudConnectAccountController.updateRoleForContact(this.props.account.UniqueId || \"\", email, new CloudConnectAccountContactRoleDTO(newRole));\n } catch (ex) {\n this.setState({ error: ex.message });\n successful = false;\n }\n\n if (successful) {\n this.clearError();\n }\n\n await this.init();\n }\n\n doesCurrentUserHavePermission =\n (area: CloudConnectAccountPermissionArea, permission: CloudConnectAccountPermissionType) => {\n const role = this.state.currentRole;\n\n if (!role || !role.Permissions) {\n return false;\n }\n\n if (permission === CloudConnectAccountPermissionType.Read) {\n return !!(role.Permissions.find(p => p.Area == area));\n } else {\n return !!(role.Permissions.find(p => p.Area == area &&\n p.Permission == CloudConnectAccountPermissionType.Write));\n }\n }\n\n clearError = () => {\n this.setState({ error: '' });\n }\n\n setError = (err: string) => this.setState({ error: err });\n\n //createNewRole = async (name: string, permissions: ICloudConnectAccountPermissionSetDTO[]) => {\n // this.setState({ isLoading: true });\n\n // const newRole = {\n // Name: name,\n // Permissions: permissions\n // };\n\n // try {\n // await this.CloudConnectAccountController.postCreateContactRoleForCloudConnectAccount(\n // this.props.account.UniqueId,\n // newRole\n // );\n // } catch (ex) {\n // this.catchError(ex, \"Creating new role\", false);\n // }\n\n // this.setState({ isLoading: false });\n //}\n\n //updatePermissionsForRole = async (oldName: string , updatedRole: ICloudConnectAccountContactRoleDTO) => {\n // this.setState({ isLoading: true });\n // try {\n // await this.CloudConnectAccountController.patchUpdateRoleForCloudConnectAccount(this.props.account.UniqueId,\n // oldName,\n // updatedRole);\n // } catch (ex) {\n // this.catchError(ex, \"Updating role\", false);\n // }\n // this.setState({ isLoading: false });\n //}\n\n doesCurrentUserHaveWriteAccess = (area: CloudConnectAccountPermissionArea) => {\n const currentUsersRole = this.state.currentRole;\n\n if (!currentUsersRole || !currentUsersRole.Permissions) {\n return false;\n } else {\n return currentUsersRole.Permissions.filter(p => p.Area === area && p.Permission === CloudConnectAccountPermissionType.Write).length > 0;\n }\n }\n\n doesCurrentUserHaveReadAccess = (area: CloudConnectAccountPermissionArea) => {\n const currentUsersRole = this.state.currentRole;\n\n if (!currentUsersRole || !currentUsersRole.Permissions) {\n return false;\n } else {\n return currentUsersRole.Permissions.filter(p => p.Area === area).length > 0;\n }\n }\n\n infoToaster = (message: string, clearLoading: boolean = true) => {\n this.setState({ isLoading: !clearLoading && this.state.isLoading });\n };\n\n catchError = (reason: any, task: string, clearLoading: boolean = true) => {\n let msg = reason;\n let showError = true;\n if (reason.response && reason.response.data && reason.response.data.Error) {\n msg = reason.response.data.Error;\n }\n if (reason.response && reason.response.status == 401) {\n showError = false;\n }\n this.setState({\n isLoading: clearLoading ? false : this.state.isLoading,\n error: msg\n });\n if (showError) {\n appSettings.error(\"Error \" + task + \": \" + msg);\n }\n };\n\n render() {\n return (\n r.Name === 'Admin')[0] : this.state.currentRole,\n associateContact: this.associateContact,\n unassociateContact: this.unassociateContact,\n getRoleForContact: this.getRoleForContact,\n updateRoleForContact: this.updateRoleForContact,\n doesCurrentUserHaveReadAccess: this.doesCurrentUserHaveReadAccess,\n doesCurrentUserHaveWriteAccess: this.doesCurrentUserHaveReadAccess,\n roles: this.state.roles,\n contacts: this.state.contacts,\n permissionSets: this.state.permissionSets,\n account: this.props.account,\n isLoading: this.state.isLoading,\n error: this.state.error,\n clearError: this.clearError,\n setError: this.setError\n }}\n >\n {this.props.children}\n \n );\n }\n}\n\n\nconst CloudConnectContactsConsumer = CloudConnectContactsContext.Consumer;\nexport { CloudConnectContactsProvider, CloudConnectContactsConsumer };\n","import * as React from \"react\";\r\nimport { Component } from \"react\";\r\n\r\nimport { Grid, GridColumn, GridCellProps } from \"@progress/kendo-react-grid\";\r\nimport { CloudConnectContactsContext } from \"@app/context/CloudConnectContactsContext\";\r\nimport { ICloudConnectAccountContactRoleDTO } from \"@app/models\";\r\nimport Input from \"reactstrap/lib/Input\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nimport \"@app/scss/components/CloudConnect/ContactManagement/ManageContactModal.scss\";\r\n\r\n\r\nclass ContactListItem {\r\n constructor(email: string, name: string, admin: boolean, id: number) {\r\n this.email = email;\r\n this.name = name;\r\n this.admin = admin;\r\n this.id = id;\r\n }\r\n\r\n email: string;\r\n name: string;\r\n admin: boolean;\r\n // this id is pretty much an index. It's used for client side stuff ONLY. Irrelevant to the server.\r\n id: number;\r\n}\r\n\r\ninterface IProps {\r\n}\r\n\r\ninterface IState {\r\n}\r\n\r\nexport default class ManageContactsList extends Component {\r\n static contextType = CloudConnectContactsContext;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n items: new Array(),\r\n }\r\n }\r\n\r\n onAdminChanged = (e: React.ChangeEvent, item: ContactListItem) => {\r\n e.preventDefault();\r\n\r\n const context = this.context as CloudConnectContactsContext;\r\n const checked = e.target.checked;\r\n\r\n // Can't remove the only admin \r\n if (item.admin && context.contacts.filter(c => c.Role && c.Role.Name === 'Admin').length < 2) {\r\n context.setError('Can\\'t remove the only administrator on a CloudConnect subscription');\r\n return;\r\n }\r\n\r\n let role: ICloudConnectAccountContactRoleDTO | undefined;\r\n if (checked) {\r\n role = context.roles.find(r => r.Name == 'Admin');\r\n } else {\r\n role = context.roles.find(r => r.Name == 'User');\r\n }\r\n\r\n if (!role) {\r\n return;\r\n }\r\n\r\n context.updateRoleForContact(item.email, role);\r\n }\r\n\r\n onDelete = async (e: React.MouseEvent, item: ContactListItem) => {\r\n e.preventDefault();\r\n const context = this.context as CloudConnectContactsContext;\r\n\r\n if (item.admin) {\r\n if (context.contacts.filter(c => c.Role && c.Role.Name === 'Admin').length < 2) {\r\n context.setError('Can\\'t remove the only administrator on a CloudConnect subscription');\r\n return;\r\n }\r\n }\r\n\r\n await context.unassociateContact(item.email);\r\n }\r\n\r\n\r\n buildEmailCell = (props: GridCellProps) => {\r\n if (!props.dataItem) {\r\n return ;\r\n }\r\n\r\n const dataItem = props.dataItem;\r\n\r\n if (dataItem instanceof ContactListItem) {\r\n return ({dataItem.email});\r\n }\r\n return ;\r\n\r\n }\r\n\r\n buildNameCell = (props: GridCellProps) => {\r\n if (!props.dataItem) {\r\n return ;\r\n }\r\n\r\n const dataItem = props.dataItem;\r\n\r\n if (dataItem instanceof ContactListItem) {\r\n return ({dataItem.name});\r\n } else {\r\n return ();\r\n }\r\n }\r\n\r\n buildAdminCheckboxCell = (props: GridCellProps) => {\r\n if (!props.dataItem) {\r\n return ;\r\n }\r\n\r\n const dataItem = props.dataItem;\r\n\r\n if (dataItem instanceof ContactListItem) {\r\n return \r\n this.onAdminChanged(e, dataItem)}\r\n type={'checkbox'}\r\n checked={dataItem.admin}\r\n title={'Admin users have the ability to add, remove and update contacts, and modify the subscription'}\r\n />\r\n \r\n } else {\r\n return ();\r\n }\r\n }\r\n\r\n buildDeleteButton = (props: GridCellProps) => {\r\n\r\n if (!props.dataItem) {\r\n return ;\r\n }\r\n\r\n const dataItem = props.dataItem;\r\n\r\n if (dataItem instanceof ContactListItem) {\r\n return (\r\n \r\n this.onDelete(e, dataItem)} title=\"Revoke contact's access to this CloudConnect subscription\">\r\n \r\n \r\n \r\n );\r\n } else {\r\n return \r\n }\r\n }\r\n\r\n\r\n buildItemList = () => {\r\n const context = this.context as CloudConnectContactsContext;\r\n const results = new Array();\r\n results.push(...context.contacts.map((contact, index) => new ContactListItem(contact.Email || \"\", contact.Name || \"\", ((contact.Role) && (contact.Role.Name === 'Admin')) || false, index + 1)));\r\n return results;\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n","import * as React from \"react\";\r\nimport { Component } from \"react\";\r\n\r\nimport Input from \"reactstrap/lib/Input\";\r\nimport Button from \"reactstrap/lib/Button\";\r\nimport Form from \"reactstrap/lib/Form\";\r\nimport Label from \"reactstrap/lib/Label\";\r\nimport Col from \"reactstrap/lib/Col\";\r\nimport Row from \"reactstrap/lib/Row\";\r\n\r\nimport 'bootstrap';\r\nimport \"@app/scss/components/CloudConnect/ContactManagement/ManageContactModal.scss\";\r\n\r\nimport { CloudConnectContactsContext } from \"@app/context/CloudConnectContactsContext\";\r\n\r\n\r\ninterface IProps {\r\n finished: (cancelled: boolean) => void\r\n}\r\n\r\ninterface IState {\r\n emailToInvite: string;\r\n error: string\r\n}\r\n\r\nexport default class InviteContactForm extends Component {\r\n static contextType = CloudConnectContactsContext;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n emailToInvite: '',\r\n error: ''\r\n }\r\n }\r\n\r\n\r\n handleChange = (e: React.ChangeEvent) => {\r\n e.preventDefault();\r\n this.setState({ emailToInvite: e.target.value })\r\n }\r\n\r\n invite = async () => {\r\n const context = this.context as CloudConnectContactsContext;\r\n\r\n try {\r\n await context.associateContact(this.state.emailToInvite);\r\n this.props.finished(false);\r\n } catch (ex) {\r\n context.setError(ex.message);\r\n }\r\n }\r\n\r\n handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n await this.invite();\r\n }\r\n\r\n handleCancel = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n this.props.finished(true);\r\n }\r\n\r\n handleFinish = async (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n await this.invite();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n {this.state.error.length > 0 &&\r\n \r\n

\r\n There was an error inviting the email address entered:\r\n {this.state.error}\r\n

\r\n \r\n\r\n }\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\n","import * as React from \"react\";\nimport { Component } from \"react\";\nimport Modal from \"reactstrap/lib/Modal\";\nimport ModalHeader from \"reactstrap/lib/ModalHeader\";\nimport { CloudConnectContactsContext } from \"@app/context/CloudConnectContactsContext\";\nimport \"@app/scss/components/CloudConnect/ContactManagement/ManageContactModal.scss\";\nimport ModalBody from \"reactstrap/lib/ModalBody\";\nimport ModalFooter from \"reactstrap/lib/ModalFooter\";\nimport ManageContactsList from \"./ManageContactsList\";\nimport InviteContactForm from \"./InviteContactForm\";\nimport Button from \"reactstrap/lib/Button\";\nimport { CloudConnectAccountPermissionArea } from \"@app/models\";\nimport Loader from \"@app/components/Loader\";\n\n\ninterface IProps {\n showing: boolean;\n onToggle: () => any;\n}\n\ninterface IState {\n invitingContact: boolean\n}\n\nexport default class ManageContactsModal extends Component {\n static contextType = CloudConnectContactsContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n invitingContact: false,\n }\n }\n\n finishedInviting = (cancelled: boolean) => {\n const context = this.context as CloudConnectContactsContext;\n this.setState({ invitingContact: false });\n context.clearError();\n }\n\n handleInviteNewUser = (e: React.MouseEvent) => {\n e.preventDefault();\n const context = this.context as CloudConnectContactsContext;\n context.clearError();\n this.setState({ invitingContact: true });\n }\n\n\n\n render() {\n const context = this.context as CloudConnectContactsContext;\n const userIsAdmin = context.doesCurrentUserHaveWriteAccess(CloudConnectAccountPermissionArea.Contacts);\n\n return (\n \n \n \n
context.clearError()}>\n

{this.state.invitingContact ? 'Give Contact Access' : userIsAdmin ? 'Manage Contacts' : 'Contacts'}

\n
\n
\n \n
\n

\n {this.state.invitingContact\n ? 'An email notification will be sent to the contact entered below, letting them know they\\'ve been added to your subscription.'\n : 'Contacts with access to this subscription.' + (context.account.Name && context.account.Name.length > 0 ? ` (${context.account.Name})` : '')}\n

\n
\n {context.error &&\n
\n \n {context.error}\n \n
\n }\n {this.state.invitingContact && }\n {!this.state.invitingContact && }\n
\n \n {userIsAdmin && !this.state.invitingContact\n && \n }\n \n
\n );\n }\n}\n\n","import * as React from \"react\";\nimport { Component } from \"react\";\nimport {\n Card,\n CardHeader,\n CardTitle,\n Row,\n Col,\n Button\n} from 'reactstrap';\nimport { Link } from \"react-router-dom\";\nimport { CloudConnectContext } from '@app/context/CloudConnectContext';\nimport EditableAccountName from \"./EditableAccountName\";\nimport CardBody from \"reactstrap/lib/CardBody\";\nimport AgentsStatusBar from \"./AgentsStatusBar\";\nimport SessionsStatusBar from \"./SessionsStatusBar\";\nimport { SubscriptionStatusDTO, CloudConnectAccountPermissionArea, ICloudConnectAccountsDTO } from \"@app/models\";\nimport ManageContactsModal from \"./ContactManagement/ManageContactsModal\";\nimport { CloudConnectContactsProvider, CloudConnectContactsConsumer, CloudConnectContactsContext } from \"@app/context/CloudConnectContactsContext\";\nimport { AuthConsumer, AuthState } from \"@app/context/AuthContext\";\nimport { OrderConsumer, OrderState } from \"@app/context/OrderContext\";\n\n\ninterface IProps {\n accountId: string\n}\n\ninterface IState {\n showManageContacts: boolean\n}\n\nexport default class AccountStatusCard extends Component {\n static contextType = CloudConnectContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n showManageContacts: false,\n };\n }\n\n manageContacts = (e: any) => {\n e.preventDefault();\n this.toggleModal()\n }\n\n toggleModal = () => {\n this.setState({ showManageContacts: !this.state.showManageContacts });\n }\n\n goToManagementPage = (account: ICloudConnectAccountsDTO, order: OrderState) => {\n order.GetCloudConnectManagementURL(account).then(response => {\n if (response) {\n (window as any).open(response);\n }\n }\n );\n };\n\n render() {\n const context = this.context as CloudConnectContext;\n const account = context.state.accounts.filter(account => account.UniqueId === this.props.accountId)[0];\n\n let showSelectPlanBtn = true;\n if (window.location.href.includes('SelectPlan')) {\n showSelectPlanBtn = false;\n }\n return (\n\n \n {(auth: AuthState | null) => auth &&\n \n \n {(contactsState: CloudConnectContactsContext | null) => contactsState &&\n \n }\n \n \n }\n \n \n \n \n {(auth: AuthState | null) => auth &&\n \n \n {(contactsState: CloudConnectContactsContext | null) => contactsState &&\n \n \n \n \n \n \n {contactsState.doesCurrentUserHaveWriteAccess(CloudConnectAccountPermissionArea.Contacts) && \n {account.SubscriptionId && \n {orderContext => {\n if (!orderContext) return null;\n if (!account) return null;\n return }\n }\n }\n \n {showSelectPlanBtn &&\n }\n {!showSelectPlanBtn &&\n }\n \n \n }\n \n \n \n \n }\n \n \n }\n \n\n \n \n \n {account.SessionLimit >=0 &&\n \n

\n {((account.SessionLimit > 1) &&\n (account.SubscriptionStatus === undefined ||\n account.SubscriptionStatus == SubscriptionStatusDTO.Terminated ||\n account.SubscriptionStatus == SubscriptionStatusDTO.Cancelled\n )) ? \"Free Beta\" :\n account.SessionLimit == 1 ? account.SessionLimit + \" Trace\" : account.SessionLimit + \" Traces\"}\n

\n
\n {account.SessionLimit == 1 ? \"PLAN\" : \"SUBSCRIPTION\"}\n
\n \n }\n {account.SubscriptionRenewalDate &&\n \n

\n {account.SubscriptionStatus == SubscriptionStatusDTO.Active && new Date(account.SubscriptionRenewalDate).toLocaleDateString()}\n

\n
\n {account.SubscriptionStatus == SubscriptionStatusDTO.Active && \"NEXT BILL\"}\n
\n \n }\n \n
\n\n \n
\n \n \n \n \n
\n
\n
\n
\n );\n }\n}\n\n\n","import * as React from \"react\";\nimport { Component } from \"react\";\nimport { Form, Label, Input, FormGroup, Modal, ModalHeader, ModalBody, ModalFooter, Button, Alert } from 'reactstrap';\nimport { ICloudConnectAccountsDTO, OrderController } from '@app/models';\nimport { CloudConnectContext } from '@app/context/CloudConnectContext';\nimport { AuthConsumer } from \"@app/context/AuthContext\";\n\ninterface IProps {\n account: ICloudConnectAccountsDTO\n context: CloudConnectContext\n}\n\ninterface IState {\n showing: boolean,\n sessionLimit: number,\n agentLimit: number,\n error: string\n}\n\nexport default class EditAccountLimitsButton extends Component {\n constructor(props: IProps) {\n super(props);\n this.state = {\n showing: false,\n sessionLimit: props.account.SessionLimit,\n agentLimit: props.account.AgentLimit,\n error: ''\n }\n }\n\n componentDidMount = async () => {\n };\n\n toggle = () => this.setState({ showing: !this.state.showing });\n\n handleOkay = async () => {\n try {\n if (!this.props.account.UniqueId) throw new Error(\"Account's ID is missing\");\n await this.props.context.editAccountLimits(this.props.account.UniqueId, this.state.sessionLimit, this.state.agentLimit);\n this.setState({ showing: false })\n }\n catch (ex) {\n this.setState({ error: ex.message });\n }\n }\n \n resyncSubscription = async () => {\n if (!this.props.account.UniqueId) throw new Error(\"Account's ID is missing\");\n var client = new OrderController();\n await client.resyncCloudconnectSubscription(this.props.account.UniqueId);\n this.props.context.reload();\n }\n\n agentLimitChangedHandler = (e: React.ChangeEvent) => {\n e.preventDefault();\n this.setState({ agentLimit: parseInt(e.currentTarget.value) });\n }\n\n sessionLimitChangedHandler = (e: React.ChangeEvent) => {\n e.preventDefault();\n this.setState({ sessionLimit: parseInt(e.currentTarget.value) });\n }\n\n render() {\n// const account = this.props.account;\n\n return (\n \n {authState => {\n // beta accounts don't have subscription ids, we don't want to edit an account with an actual subscription\n // if (account.SubscriptionId && account.SubscriptionId.length > 0) return null;\n if (!authState) return null;\n if (!authState.hasRole(\"Staff\")) return null;\n return (\n
\n {this.state.showing &&\n \n Edit limits for CloudConnect account\n \n {this.state.error.length > 0 &&\n

{this.state.error}

\n }\n {this.props.account.SubscriptionId && \n This account is connected to a subscription. Modifying the limits here will not change the tier\n or subscription cost. It may also show issues on the tier selection screen where the cost\n and the tiers don't match.\n }\n
\n \n \n \n \n \n \n \n \n
\n
\n \n {' '}\n {' '}\n \n \n
\n }\n \n
\n )\n }\n }\n
\n
\n );\n }\n}","import * as React from 'react';\r\nimport { Fragment } from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport * as H from 'history';\r\nimport { withRouter } from 'react-router';\r\nimport '../scss/components/HomePage.scss';\r\nimport { CloudConnectContext, CloudConnectConsumer } from '@app/context/CloudConnectContext';\r\nimport Loader from '@app/components/Loader';\r\nimport AgentList from '@app/components/CloudConnect/AgentList';\r\nimport { AgentViewer } from '@app/components/CloudConnect/AgentViewer';\r\nimport { ISentinelInfo } from '@app/models';\r\nimport { OrderConsumer } from '@app/context/OrderContext';\r\nimport AccountStatusCard from '@app/components/CloudConnect/AccountStatusCard';\r\nimport { AuthConsumer } from '@app/context/AuthContext';\r\nimport EditAccountLimitsButton from '@app/components/CloudConnect/EditAccountLimitsButton';\r\n\r\nexport interface IProps {\r\n history: H.History\r\n location: H.Location\r\n match: any\r\n cloudconnectAccountID: string,\r\n showWalkthrough: boolean,\r\n}\r\n\r\nexport interface IState {\r\n currentlyViewedAgentId: string;\r\n}\r\n\r\nclass CloudConnectDetailView extends React.Component {\r\n static contextType = CloudConnectContext;\r\n\r\n constructor(props: IProps) {\r\n super(props);\r\n this.state = {\r\n currentlyViewedAgentId: \"\",\r\n };\r\n\r\n this.handleAgentSelected = this.handleAgentSelected.bind(this);\r\n }\r\n\r\n handleAgentSelected(agent: ISentinelInfo | null) {\r\n this.setState({ currentlyViewedAgentId: (agent && agent.UniqueID) ? agent.UniqueID : \"\" });\r\n }\r\n \r\n render() {\r\n const context = this.context as CloudConnectContext;\r\n if (context.state.accounts.length == 0) { // Make sure we have some accounts\r\n return null;\r\n }\r\n\r\n const account =\r\n context.state.accounts.find(acc => acc.UniqueId === this.props.cloudconnectAccountID) ||\r\n context.state.accounts[0]; // If we can't find it, use the first one.\r\n \r\n if (!account.UniqueId) return Account has empty ID;\r\n\r\n const clusters = context.state.clusters.filter(c => c.CloudConnectAccountGuid == account.UniqueId);\r\n\r\n return (\r\n \r\n {(auth) => auth &&\r\n \r\n {(cc: CloudConnectContext | null) => cc && !cc.state.isLoading && < React.Fragment >\r\n

\r\n CloudConnect\r\n

\r\n \r\n \r\n {(order) => order &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Visit PingPlotter.Cloud - controllers are no longer necessary!\r\n \r\n {clusters.map(c =>\r\n \r\n \r\n \r\n \r\n )[0]}\r\n {clusters.length > 0 &&\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n \r\n
\r\n }\r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default withRouter(CloudConnectDetailView);\r\n\r\n\r\n","// These moved to the Order context because pricing moved there.\nexport function SubscriptionLengthToUnits(length?: number) {\n let term = \"month\";\n switch (length) {\n case undefined: break;\n case 12: term = \"year\"; break;\n case 24: term = \"2 years\"; break;\n case 36: term = \"3 years\"; break;\n case 48: term = \"4 years\"; break;\n case 60: term = \"5 years\"; break;\n default: {\n if (length > 1) {\n term = length + \" months\";\n }\n break;\n }\n }\n return term;\n}\n\n","import React from \"react\";\nimport { ICloudConnectAccountsDTO, OrderItemType, ProgramType, SubscriptionStatusDTO } from \"@app/models\";\nimport { OrderConsumer } from \"@app/context/OrderContext\";\nimport { Button, CardBody, Col, Row } from \"reactstrap\";\nimport { SubscriptionLengthToUnits } from \"@utils/Pricing\";\n\ninterface IProps {\n SubscriptionQuantity: number;\n CloudConnectAccount: ICloudConnectAccountsDTO;\n OnNewPlanSelected: (account: ICloudConnectAccountsDTO, qty: number, recurring: number, immediate: number) => void;\n}\n\nexport class CloudConnectSubscriptionCard extends React.Component {\n\n render = () => {\n if (!this.props.CloudConnectAccount) return null;\n\n let account = this.props.CloudConnectAccount;\n let renewDate = account.SubscriptionRenewalDate == null ? null : new Date(account.SubscriptionRenewalDate);\n let totalMonthsInSubscription = (this.props.CloudConnectAccount.SubscriptionRenewalMonths ?? 1);\n if (totalMonthsInSubscription == 0) totalMonthsInSubscription = 1;\n\n return (\n \n {(orderState) => {\n if (!orderState) return null;\n var subsPrice = orderState.GetPriceForProgram(ProgramType.ptCLOUDCONNECT, this.props.SubscriptionQuantity, OrderItemType.CloudConnect);\n var activeSub = account.SubscriptionStatus != SubscriptionStatusDTO.Active;\n const selected = this.props.CloudConnectAccount.SessionLimit == this.props.SubscriptionQuantity;\n var newPrice = subsPrice * this.props.SubscriptionQuantity * totalMonthsInSubscription;\n //If it's a remote bundle, we need to add the pro sub price to the cc sub price\n if (account.RemoteBundle) {\n var proMonthlyPrice = orderState.GetPriceForProgram(ProgramType.ptPINGPLOTTER_PRO, this.props.SubscriptionQuantity, OrderItemType.CloudConnect);\n if (!proMonthlyPrice || proMonthlyPrice == 0) return;\n newPrice += proMonthlyPrice * totalMonthsInSubscription;\n }\n // Calculate the days remaining and days left in plan.\n let chargeNow = 0;\n if (account.SubscriptionRenewalDate && account.SessionLimit > 1\n && (account.SubscriptionStatus == SubscriptionStatusDTO.Active || ((account.SubscriptionStatus == SubscriptionStatusDTO.Cancelled) && new Date(account.SubscriptionRenewalDate).getTime() > new Date().getTime()))) {\n const renewDate = new Date(account.SubscriptionRenewalDate);\n const startDate = new Date(account.SubscriptionRenewalDate);\n startDate.setMonth(renewDate.getMonth() - totalMonthsInSubscription);\n let daysRemaining = Math.round((renewDate.getTime() - new Date().getTime()) / (1000 * 60 * 60 * 24));\n if (daysRemaining < 0) daysRemaining = 0; // Don't give credit for un-charged renewals!\n const daysInPeriod = Math.round((renewDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24));\n // the charge amount is the new price - any remaining credit\n chargeNow = newPrice * (daysRemaining / daysInPeriod);\n if (account.SubscriptionRenewalPrice) chargeNow -= account.SubscriptionRenewalPrice * (daysRemaining / daysInPeriod);\n if (chargeNow < -(account.SubscriptionRenewalPrice || 0)) { chargeNow = -(account.SubscriptionRenewalPrice || 0)}\n\n // Stop giving refunds without asking us.\n if (chargeNow < 0) chargeNow = 0;\n }\n return (\n {account.SubscriptionStatusMessage == \"canceled\" &&\n \n \n \n

\n {this.props.SubscriptionQuantity == 1 ? 0 : this.props.SubscriptionQuantity}\n

\n

\n TRACE{this.props.SubscriptionQuantity == 1 ? \"\" : \"S\"}\n

\n \n \n

\n Cancelled Subscription\n

\n \n\n \n
\n
\n }\n {account.SubscriptionStatusMessage != \"canceled\" &&\n \n \n \n

\n {activeSub && this.props.SubscriptionQuantity == 1 ? 0 : this.props.SubscriptionQuantity}\n

\n

\n TRACE{this.props.SubscriptionQuantity == 1 && activeSub ? \"\" : \"S\"}\n

\n \n \n {activeSub && this.props.SubscriptionQuantity == 1 ?\n \n

\n Inactive Subscription\n

\n
\n :\n \n

\n {this.props.SubscriptionQuantity == 1 && !account.RemoteBundle ? \"Free plan\" :\n selected ? (account.SubscriptionRenewalPrice ? (\"$\" + account.SubscriptionRenewalPrice.toFixed(2) + \"/\" + SubscriptionLengthToUnits(account.SubscriptionRenewalMonths)) : \"Free during beta\") : \"$\" + newPrice.toFixed(2) + \"/\" + SubscriptionLengthToUnits(account.SubscriptionRenewalMonths)}\n

\n
    \n
  • \n Includes unlimited data transfer and agent deployments\n
  • \n
  • \n {account.RemoteBundle && Includes PingPlotter Professional latest version }\n {!account.RemoteBundle && Requires PingPlotter Professional version 5.9 or higher}\n
  • \n {renewDate != null && \n
  • \n Next payment on: {renewDate.toLocaleDateString()}\n
  • \n
    \n }\n
\n
\n }\n {selected ? :\n { this.props.OnNewPlanSelected(this.props.CloudConnectAccount, this.props.SubscriptionQuantity, newPrice, chargeNow); }}\n >{this.props.SubscriptionQuantity == 1 ? \"Cancel Subscription\" : \"Change to \"+this.props.SubscriptionQuantity + \" traces\"}\n }\n {!selected && \n {chargeNow != 0 && \n (${Math.abs(chargeNow).toFixed(2)} approximate {chargeNow < 0 ? \"credit\" : \"charge\"}{this.props.SubscriptionQuantity > 1 && \" at checkout\"})\n\n }\n }\n \n
\n
\n }\n
);\n }\n }\n
\n
);\n }\n}\n","import React from \"react\";\nimport {ICloudConnectAccountsDTO, SubscriptionStatusDTO} from \"@app/models\";\nimport {\n Button,\n ButtonGroup,\n Card,\n CardFooter,\n CardHeader,\n CardTitle,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader\n} from 'reactstrap';\nimport {CloudConnectSubscriptionCard} from \"@components/CloudConnect/CloudConnectSubscriptionCard\";\nimport {CheckoutConsumer, CheckoutProvider, ICheckoutContext} from \"@app/context/CheckoutContext\";\nimport {OrderConsumer, OrderState} from '@app/context/OrderContext';\nimport Loader from '@app/components/Loader';\nimport Collapse from \"reactstrap/lib/Collapse\";\nimport Row from \"reactstrap/lib/Row\";\nimport Col from \"reactstrap/lib/Col\";\nimport {Link} from \"react-router-dom\";\nimport appSettings from \"../appSettings\";\nimport {SubscriptionLengthToUnits} from \"@utils/Pricing\";\n\ninterface IProps {\n CloudConnectAccount: ICloudConnectAccountsDTO;\n}\n\nexport interface IState {\n activeTab: number;\n showConfirmCancelModal: boolean;\n showConfirmModal: boolean;\n confirmQty: number;\n confirmRecurring: number;\n confirmImmediate: number;\n}\n\nexport class CloudConnectPlanPicker extends React.Component {\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n activeTab: this.props.CloudConnectAccount.SessionLimit,\n showConfirmCancelModal: false,\n showConfirmModal: false,\n confirmQty: 0,\n confirmImmediate: 0,\n confirmRecurring: 0,\n };\n this.toggleTab = this.toggleTab.bind(this);\n this.onRadioBtnClick = this.onRadioBtnClick.bind(this);\n\n }\n\n toggleTab(tab: number) {\n if (this.state.activeTab !== tab) {\n this.setState({\n activeTab: tab\n });\n }\n }\n\n // When selecting a plan, if it's an active plan then we need to *change* it (and prompt for confirmation) with\n // the current credit card. If it's a *new* plan, then we need to prompt for a credit card. The path is slightly\n // different for each\n onNewPlanSelected = (account: ICloudConnectAccountsDTO, qty: number, order: OrderState, checkoutState: ICheckoutContext, recurringPrice: number, immediatePrice: number) => {\n if (account.SubscriptionRenewalPrice && account.SubscriptionRenewalDate && account.SubscriptionRenewalPrice > 0 &&\n (account.SubscriptionStatus == SubscriptionStatusDTO.Active || (account.SubscriptionStatus == null && (new Date(account.SubscriptionRenewalDate) > new Date())))) {\n // Existing plan with a recurring charge on it.\n this.setState({\n showConfirmModal: true,\n confirmQty: qty,\n confirmRecurring: recurringPrice,\n confirmImmediate: immediatePrice\n });\n } else {\n // New plan\n order.CreateNewCloudConnectSubscription(account, qty).then(securePayloads => {\n checkoutState.CheckoutFastspring(securePayloads);\n });\n }\n };\n\n onConfirmPlanSelected = (account: ICloudConnectAccountsDTO, qty: number, order: OrderState) => {\n order.ChangeCloudConnectSubscription(account, qty).then(order => {\n appSettings.success('Successfully updated subscription');\n }).catch(e => {\n appSettings.success('Subscription not cancelled ' + e.Message);\n });\n };\n\n goToManagementPage = (account: ICloudConnectAccountsDTO, order: OrderState) => {\n order.GetCloudConnectManagementURL(account).then(response => {\n (window as any).location = response;\n }\n );\n };\n\n onRadioBtnClick(count: number) {\n this.setState({activeTab: count});\n }\n\n render = () => {\n if (!this.props.CloudConnectAccount) return null;\n let account = this.props.CloudConnectAccount;\n\n let planCounts = [1, 10, 25, 50, 100, 250, 500, 1000];\n //Don't show 1 trace as an option anymore if the sub is active. Make them use the cancel subscription button. \n //For the ones that are on 'Classic' CC sub, it'll still give them a 1 trace entitlement, but the language won't really show that\n if (account.RemoteBundle || account.SubscriptionStatus == SubscriptionStatusDTO.Active) {\n planCounts.shift();\n }\n \n return (\n {(order) => order && \n \n \n \n {(checkout) => checkout && \n
\n {planCounts.map(count => \n \n \n \n this.onNewPlanSelected(acct, qty, order, checkout, recur, now)}/>\n \n \n )}\n
\n {account.SubscriptionStatus != SubscriptionStatusDTO.Active &&\n \n \n \n \n \n {account.Name}\n \n \n \n \n \n \n \n this.onNewPlanSelected(acct, qty, order, checkout, recur, now)}/>\n \n \n {account.SubscriptionStatusMessage != \"canceled\" && planCounts.map(count =>\n this.onRadioBtnClick(count)}>\n {count}
TRACE{count > 1 ? \"S\" : \"\"}\n )}\n
\n
\n
\n }\n {account.SubscriptionStatus == SubscriptionStatusDTO.Active &&\n \n \n \n \n \n {account.Name}\n \n \n \n \n \n \n \n \n \n \n this.onNewPlanSelected(acct, qty, order, checkout, recur, now)}/>\n \n \n {account.SubscriptionStatusMessage != \"canceled\" && planCounts.map(count =>\n this.onRadioBtnClick(count)}>\n {count}
TRACE{count > 1 ? \"S\" : \"\"}\n )}\n
\n
\n
\n }\n \n \n Confirm subscription change\n \n \n You are about\n to {(account.SubscriptionRenewalPrice && (this.state.confirmRecurring < account.SubscriptionRenewalPrice)) ? \"downgrade\" : \"upgrade\"} your\n plan:\n
    \n
  • New CloudConnect concurrent trace count: {this.state.confirmQty}
  • \n
  • New cost: {this.state.confirmRecurring > 0 ?\n (\n ${this.state.confirmRecurring.toFixed(2)}/{SubscriptionLengthToUnits(account.SubscriptionRenewalMonths)} starting {new Date(account.SubscriptionRenewalDate || new Date()).toLocaleDateString()}\n )\n : (Free)}
  • \n {this.state.confirmImmediate != 0 &&\n
  • {this.state.confirmImmediate < 0 ? \"Refund\" : \"Charge\"} of ${Math.abs(this.state.confirmImmediate).toFixed(2)} today\n for difference\n through end of period.\n
  • \n }\n
\n Any immediate or recurring changes will happen using the payment method on file.\n
\n \n {' '}\n \n \n
\n \n \n Confirm subscription cancellation\n \n \n You are about to cancel your CloudConnect plan:\n
    \n {/*This isn't actually true of 'Classic' CC subs that have a perpetual license key. May need to figure out how to handle for that*/}\n
  • Your PingPlotter license key will become invalid.
  • \n
  • You will no longer be able to use CloudConnect.
  • \n
\n Any immediate or recurring changes will happen using the payment method on file.\n
\n \n {' '}\n \n \n
\n\n
}\n
\n
\n
}\n
);\n };\n}","import * as React from 'react';\nimport { Fragment } from 'react';\nimport { Row, Col, Card, CardHeader, CardTitle, CardBody, } from 'reactstrap';\nimport * as H from 'history';\nimport '../scss/components/HomePage.scss';\nimport { CloudConnectConsumer, CloudConnectContext } from '@app/context/CloudConnectContext';\nimport { withRouter } from \"react-router\";\nimport { CloudConnectPlanPicker } from './CloudConnectPlanPicker';\nimport Loader from \"@components/Loader\";\n\nexport interface IProps {\n history: H.History;\n location: H.Location;\n match: any;\n cloudconnectAccountID: string;\n}\n\nexport interface IState {\n}\n\nclass CloudConnectSelectPlan extends React.Component {\n static contextType = CloudConnectContext;\n\n constructor(props: IProps) {\n super(props);\n this.state = {};\n }\n\n getAccount = () => {\n const ccContext = this.context as CloudConnectContext;\n \n // Make sure we have an account\n if (ccContext.state.accounts.length == 0) {\n return undefined;\n }\n\n // Find the account\n let account = ccContext.state.accounts.find(acc => acc.UniqueId === this.props.cloudconnectAccountID);\n // No match, so get the first one instead.\n if (!account) {\n account = ccContext.state.accounts[0];\n }\n return account;\n };\n\n render() {\n const account = this.getAccount();\n if (!account) return ;\n return (\n \n {(cc: CloudConnectContext | null) => cc &&\n \n\n

\n Manage CloudConnect Subscription\n

\n\n \n \n \n \n \n \n \n \n What is an Agent?\n \n \n \n

\n Agents are what you deploy to remote machines.\n They're basically a copy of PingPlotter you can control from your PingPlotter\n Professional instance.\n

\n
\n
\n \n \n \n \n \n What is a Trace?\n \n \n \n

\n When one of your agents tests a host, it's counted as a trace.\n CloudConnect subscription pricing is based on the number of traces you want to run at\n the same time.\n

\n
\n
\n \n
\n
\n }\n
\n );\n }\n}\n\nexport default withRouter(CloudConnectSelectPlan);\n\n\n","import * as React from 'react';\nimport { Fragment } from 'react';\nimport Loader from \"@components/Loader\";\nimport { IVersionGroupDTO, IProgramReleaseDTO, ProgramReleaseDTO } from \"@app/models\";\nimport { CloudConnectSupportController } from \"@app/models\";\nimport '@app/scss/components/VersionGroupEditor.scss';\nimport { ReleasesState, ReleasesContext } from '@app/context/ReleasesContext'\nimport Button from 'reactstrap/lib/Button';\nimport Input from 'reactstrap/lib/Input';\nimport { MultiSelect, MultiSelectChangeEvent } from '@progress/kendo-react-dropdowns';\nimport FormGroup from 'reactstrap/lib/FormGroup';\nimport Label from 'reactstrap/lib/Label';\nimport Card from 'reactstrap/lib/Card';\nimport CardHeader from 'reactstrap/lib/CardHeader';\nimport CardBody from 'reactstrap/lib/CardBody';\n\nexport interface IProps {\n versionGroup: IVersionGroupDTO;\n handleUpdate: (updatedGroup: IVersionGroupDTO, cancelled: boolean) => any\n}\n\nexport interface IState {\n isLoading: boolean;\n editedVersionGroup: IVersionGroupDTO | undefined;\n}\n\nexport default class VersionGroupEditor extends React.Component {\n static contextType = ReleasesContext\n\n supportController: CloudConnectSupportController\n = new CloudConnectSupportController();\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n isLoading: false,\n editedVersionGroup: undefined\n };\n }\n\n handleOkay = async () => {\n let updatedVersionGroup = this.props.versionGroup;\n\n let noChanges = true;\n\n if (this.state.editedVersionGroup) {\n noChanges = false;\n updatedVersionGroup = this.state.editedVersionGroup;\n }\n\n this.props.handleUpdate(updatedVersionGroup, noChanges);\n };\n\n createEditedVersion = (callback: () => void) => {\n if (this.state.editedVersionGroup) {\n return;\n } else {\n this.setState({ editedVersionGroup: { ...this.props.versionGroup } }, callback);\n }\n }\n\n handleCancel = () => this.props.handleUpdate(this.props.versionGroup, true);\n\n buildProgramMultiSelect = (selectedReleases: IProgramReleaseDTO[]) => {\n const context = this.context as ReleasesState;\n const platformsWithReleases = new Set(selectedReleases.map(sr => sr.Platform));\n const filteredReleases = [...context.Releases]\n // server returns ordered by datetime asc, we want desc here \n .reverse()\n .filter(r => r.Program == 3)\n // filter out platforms that currently have a selected release / version\n .filter(r => !platformsWithReleases.has(r.Platform))\n // filters out versions below 5.10.2 \n .filter(this.releasesFilter);\n\n\n return filteredReleases.map(r => this.buildProgramMultiSelectString(r));\n }\n\n releasesFilter = (release: IProgramReleaseDTO) => {\n if (!release.VersionNumber) return false;\n const parts = release.VersionNumber.split('.');\n\n if (parseInt(parts[0]) < 5) {\n return false;\n }\n\n if (parseInt(parts[1]) < 10) {\n return false;\n }\n\n return true;\n }\n\n buildProgramMultiSelectString = (programRelease: IProgramReleaseDTO) => `${programRelease.PlatformName} - ${programRelease.VersionNumber}`;\n\n getProgramFromMultiSelectString = (displayString: string) => {\n const context = this.context as ReleasesState;\n // horribly in-efficient\n let versionNumber = displayString.split('-')[1];\n versionNumber = versionNumber.slice(1, versionNumber.length);\n return context.Releases.find(r => r.VersionNumber === versionNumber);\n }\n\n\n handleMultiSelectChange = (e: MultiSelectChangeEvent) => {\n const releases = new Array();\n for (let val of e.target.value) {\n let release = this.getProgramFromMultiSelectString(val);\n if (release) {\n releases.push(release);\n }\n }\n\n if (!this.state.editedVersionGroup) {\n this.createEditedVersion(() => this.changeReleases(releases));\n return;\n } else {\n this.changeReleases(releases);\n }\n\n }\n\n changeReleases = (releases: IProgramReleaseDTO[]) => {\n if (this.state.editedVersionGroup) {\n this.setState({\n editedVersionGroup: {\n ...this.state.editedVersionGroup,\n Releases: releases.map(r => new ProgramReleaseDTO(r)),\n }\n });\n }\n }\n\n handleNameChange = (e: React.ChangeEvent) => {\n const name = e.target.value;\n\n if (!this.state.editedVersionGroup) {\n this.createEditedVersion(() => this.changeName(name));\n return\n } else {\n this.changeName(name);\n }\n }\n\n changeName = (name: string) => {\n if (this.state.editedVersionGroup) {\n this.setState({\n editedVersionGroup: {\n ...this.state.editedVersionGroup,\n Name: name\n }\n });\n }\n }\n\n handlePublicChange = (e: React.ChangeEvent) => {\n const checked = !!(e.target.checked);\n\n if (!this.state.editedVersionGroup) {\n this.createEditedVersion(() => this.changePublic(checked));\n return;\n } else {\n this.changePublic(checked);\n }\n\n }\n\n changePublic = (val: boolean) => {\n if (this.state.editedVersionGroup) {\n this.setState({\n editedVersionGroup: {\n ...this.state.editedVersionGroup,\n Public: val\n }\n });\n }\n }\n\n render = () => {\n if (!this.props.versionGroup) {\n return \n }\n\n if (this.state.isLoading) {\n return ()\n }\n\n let display = this.props.versionGroup;\n\n if (this.state.editedVersionGroup) {\n display = this.state.editedVersionGroup\n }\n\n return (\n \n {(display.Name || \"\").length > 0 ? `Version Group Editor: ${display.Name}` : `Creating New Version Group`}\n\n \n \n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n {' '}\n \n
\n
\n
\n
\n );\n }\n}\n\n\n\n","import * as React from 'react';\nimport { Fragment } from 'react';\nimport * as H from 'history';\nimport { withRouter } from \"react-router\";\nimport Loader from \"@components/Loader\";\nimport { IVersionGroupDTO, VersionGroupDTO, ProgramReleaseDTO } from \"@app/models\";\nimport { CloudConnectSupportController } from \"@app/models\";\nimport { filterBy } from \"@progress/kendo-data-query\";\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\nimport { AuthContext, AuthState } from \"@app/context/AuthContext\";\nimport VersionGroupEditor from './VersionGroupEditor';\nimport Button from 'reactstrap/lib/Button';\nimport Container from 'reactstrap/lib/Container';\nimport VersionGroupDropdown from '../CloudConnect/VersionGroupDropdown';\nimport ButtonWithConfirmationModal from '../Utils/ButtonSafety/ButtonWithConfirmationModal';\nimport Row from 'reactstrap/lib/Row';\nimport Col from 'reactstrap/lib/Col';\n\nexport interface IProps {\n history: H.History;\n location: H.Location;\n match: any;\n}\n\nexport interface IState {\n isLoading: boolean;\n items: IVersionGroupDTO[];\n filter: any;\n selectedGroup: IVersionGroupDTO | undefined;\n}\n\nclass VersionGroups extends React.Component {\n static contextType = AuthContext;\n\n supportController: CloudConnectSupportController\n = new CloudConnectSupportController();\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n isLoading: false,\n items: new Array(),\n filter: undefined,\n selectedGroup: undefined\n };\n }\n\n componentDidMount = () => {\n const context = this.context as AuthState;\n\n if (!context.isStaff) {\n return;\n }\n\n this.setState({ isLoading: true })\n\n this.load();\n }\n\n load = (clearSelection: boolean = true) => {\n this.supportController.getVersionGroups().then((items) => {\n this.setState({ items: items, isLoading: false });\n\n if (clearSelection) {\n this.setState({ selectedGroup: undefined });\n }\n });\n }\n\n handleOnClick = (selectedGroup: IVersionGroupDTO) => {\n this.setState({ selectedGroup: selectedGroup });\n }\n\n handleDelete = async (uniqueId: string) => {\n await this.supportController.deleteVersionGroup(uniqueId);\n\n this.load(this.state.selectedGroup && this.state.selectedGroup.UniqueId === uniqueId);\n }\n\n handleVersionGroupUpdate = async (updated: IVersionGroupDTO, cancelled: boolean) => {\n if (cancelled) {\n this.setState({ selectedGroup: undefined })\n return;\n }\n\n let promise: Promise\n\n // UniqueID is given by the server, so if we don't have one, we're creating a new version group\n if (!updated.UniqueId || updated.UniqueId.length === 0) {\n promise = this.supportController.createVersionGroup(new VersionGroupDTO(updated))\n } else {\n promise = this.supportController.updateVersionGroup(new VersionGroupDTO(updated));\n }\n\n await promise;\n\n this.load();\n }\n\n createNewVersionGroup = () => {\n const newVersionGroup = {\n Name: '',\n UniqueId: '',\n Public: false,\n IsDefault: false,\n Releases: new Array()\n }\n\n this.setState({ selectedGroup: new VersionGroupDTO(newVersionGroup) });\n }\n\n handleDefaultChanged = async (newDefaultUniqueId: string) => {\n await this.supportController.setVersionGroupAsDefault(newDefaultUniqueId);\n this.load(false);\n }\n\n\n render = () => {\n const context = this.context as AuthState;\n\n if (!context.isStaff) {\n return \n }\n\n if (this.state.isLoading) {\n return ()\n }\n\n const defaultVersionGroup = this.state.items.find(i => i.IsDefault);\n\n return (\n \n \n

\n CloudConnect Version Groups (Staff Only)\n

\n \n \n \n \n \n \n \n \n \n \n {\n this.setState({\n filter: e.filter\n });\n }}\n >\n \n this.handleOnClick(props.dataItem as IVersionGroupDTO)}>{props.dataItem.Name}}\n />\n {\n if (props.dataItem.IsDefault) {\n return \n }\n return this.handleDelete(props.dataItem.UniqueId)}\n buttonText={\"Delete\"}\n buttonClassName={'btn'}\n modalClassName={''}\n modalTitle={`Deleting version group ${props.dataItem.Name}`}\n buttonSize={\"sm\"}\n modalBody={\"Deleting this version group is irreversible - are you sure you'd like to delete it?\"} />\n \n }} filterable={false}\n />\n \n \n \n {this.state.selectedGroup &&\n \n \n \n \n \n\n }\n\n
\n
\n );\n }\n}\n\nexport default withRouter(VersionGroups);\n\n\n","import React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { GridCellProps } from \"@progress/kendo-react-grid/dist/npm/interfaces/GridCellProps\";\nimport { IKeycodesDTO, IOrderLinesDTO, OrderItemType } from \"@app/models\";\nimport { CloudConnectConsumer } from \"@app/context/CloudConnectContext\";\nimport { KeycodesConsumer } from \"@app/context/KeycodesContext\";\nimport { ListItemProps } from \"@progress/kendo-react-dropdowns/dist/npm/common/ListItem\";\n\ninterface ISDDProps extends GridCellProps {\n onChange?: (data: any) => void;\n}\n\ninterface ISDDState {\n\n}\n\nexport class AccountKeySelectDropdown extends React.Component {\n\n handleChange = (e: any) => {\n if (this.props.onChange) {\n this.props.onChange({\n dataItem: this.props.dataItem,\n field: this.props.field,\n syntheticEvent: e.syntheticEvent,\n value: e.target.value\n });\n }\n };\n\n keycodeDropdownRenderer = (li: React.ReactElement, itemProps: ListItemProps) => {\n var dataItem = itemProps.dataItem as IKeycodesDTO;\n return React.cloneElement(li, { ...li.props }, \n dataItem.KeyCode + \".. \" + \n dataItem.ProductCode + \" \" + \n (dataItem.IsSubscription ? \"(Subs) \" : \"\") +\n (dataItem.IsTemporary ? \"(Temp) \" : \"\") +\n dataItem.KeyCountText);\n }\n\n render() {\n const dataItem = this.props.dataItem as IOrderLinesDTO;\n const inEdit = this.props.dataItem[\"inEdit\"];\n\n if (dataItem.ItemType == OrderItemType.NewLicense || dataItem.ItemType == OrderItemType.NewSubscription) {\n return (new - create);\n }\n else if (dataItem.ItemType == OrderItemType.CloudConnect || dataItem.ItemType == OrderItemType.RemoteBundle) {\n return (\n // Use a CloudConnect dropdown.\n {(ccState) => {\n if (!ccState) return null;\n const accounts = ccState.state.accounts.map(cc => {return {...cc, Name: cc.Name || cc.UniqueId}}); // Name can be empty, so fill it in\n const selAccount = accounts.find(a => a.UniqueId == dataItem.CloudConnectAccount);\n if (!inEdit) {\n const accName = selAccount ? selAccount.Name : \"- no account -\";\n '';\n return {accName};\n }\n return \n \n ;\n }});\n } else {\n return (\n // Use a CloudConnect dropdown.\n {(keycodesState) => {\n if (!keycodesState) return null;\n const keycodes = keycodesState.Keycodes;\n const selKey = keycodes.find(a => a.SearchCode == dataItem.SearchCode);\n if (!inEdit) {\n const keyText = selKey ? selKey.KeyCode : \"- no keycode -\";\n return {keyText};\n }\n return \n \n ;\n }});\n }\n }\n}\n","import React from 'react';\nimport { DropDownList, ListItemProps } from '@progress/kendo-react-dropdowns';\nimport { GridCellProps } from \"@progress/kendo-react-grid/dist/npm/interfaces/GridCellProps\";\nimport { IOrderItemDTO, IOrderLinesDTO } from \"@app/models\";\nimport { OrderConsumer } from \"@app/context/OrderContext\";\nimport { DropDownListChangeEvent } from \"@progress/kendo-react-dropdowns/dist/npm/DropDownList/DropDownListProps\";\n\ninterface OIDDProps extends GridCellProps {\n}\n\ninterface OIDDState {\n\n}\n\nexport class OrderItemSelectDropdown extends React.Component {\n\n handleChange = (e: DropDownListChangeEvent) => {\n if (this.props.onChange) {\n this.props.onChange({\n dataItem: this.props.dataItem,\n field: this.props.field,\n syntheticEvent: e.syntheticEvent,\n value: e.target.value\n });\n }\n };\n\n itemRender = (li: React.ReactElement, itemProps: ListItemProps) => {\n// const index = itemProps.index;\n if (!(itemProps.dataItem as IOrderItemDTO).CanAddToPortalOrder) {\n // filter out any disabled entries.\n return null;\n }\n\n return React.cloneElement(li, li.props, li.props.children);\n }\n\n\n render() {\n const dataItem = this.props.dataItem as IOrderLinesDTO;\n const inEdit = this.props.dataItem[\"inEdit\"];\n\n return (\n {(orderState) => {\n if (!orderState) return null;\n const items = orderState.items.sort((a, b) => (a.Name || \"\").localeCompare(b.Name || \"\"));\n const selItem = items.find(a => a.Id == dataItem.Item);\n if (!inEdit) {\n const itemName = selItem ? selItem.Name : \"- no item -\";\n return {itemName};\n }\n return \n \n ;\n }}\n );\n }\n}\n","import React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { GridCellProps } from \"@progress/kendo-react-grid/dist/npm/interfaces/GridCellProps\";\nimport { IOrderLinesDTO } from \"@app/models\";\nimport { DropDownListChangeEvent } from \"@progress/kendo-react-dropdowns/dist/npm/DropDownList/DropDownListProps\";\n\ninterface TermDDProps extends GridCellProps {\n}\n\ninterface TermDDState {\n\n}\n\nexport class TermSelectDropdown extends React.Component {\n\n termLengths = [\n { text: '1 month', value: 1 },\n { text: '3 months', value: 3 },\n { text: '6 months', value: 6 },\n { text: '1 year', value: 12 },\n { text: '2 years', value: 24 },\n { text: '3 years', value: 36 },\n { text: '4 years', value: 48 },\n { text: '5 years', value: 60 },\n ];\n\n handleChange = (e: DropDownListChangeEvent) => {\n if (this.props.onChange) {\n this.props.onChange({\n dataItem: this.props.dataItem,\n field: this.props.field,\n syntheticEvent: e.syntheticEvent,\n value: e.target.value\n });\n }\n };\n \n render() {\n const dataItem = this.props.dataItem as IOrderLinesDTO;\n const inEdit = this.props.dataItem[\"inEdit\"];\n let props: any = {};\n try {\n props = JSON.parse(dataItem.OtherDetailsJson || \"{}\");\n } catch {\n }\n const curTermMonths = props.Term;\n const found = this.termLengths.find(f => f.value == curTermMonths);\n if (!inEdit) {\n return ({found?found.text:\"\"});\n }\n\n return (\n \n );\n }\n}\n","import React from 'react';\nimport { GridCellProps } from \"@progress/kendo-react-grid/dist/npm/interfaces/GridCellProps\";\nimport { IOrderLinesDTO } from \"@app/models\";\nimport { NumericTextBox, NumericTextBoxChangeEvent } from \"@progress/kendo-react-inputs\";\n\ninterface TermDDProps extends GridCellProps {\n}\n\ninterface TermDDState {\n\n}\n\nexport class ExtraFieldNumberEditor extends React.Component {\n\n handleChange = (event: NumericTextBoxChangeEvent) => {\n if (this.props.onChange) {\n this.props.onChange({\n syntheticEvent: event.syntheticEvent,\n dataItem: this.props.dataItem,\n field: this.props.field,\n value: event.value\n });\n }\n };\n\n render() {\n const dataItem = this.props.dataItem as IOrderLinesDTO;\n const inEdit = this.props.dataItem[\"inEdit\"];\n let props: any = {};\n try {\n props = JSON.parse(dataItem.OtherDetailsJson || \"{}\");\n } catch {\n }\n if (!this.props.field) return null;\n const curFieldValue = props[this.props.field];\n if (!inEdit) {\n return {curFieldValue};\n }\n\n return (\n \n );\n }\n}\n","import * as React from 'react';\nimport { Fragment } from 'react';\nimport * as H from 'history';\nimport { RouteComponentProps, withRouter } from \"react-router\";\nimport Loader from \"@components/Loader\";\nimport {\n ICloudConnectAccountsDTO,\n IKeycodesDTO,\n IOrderItemDTO,\n IOrderLinesDTO,\n OrderItemType,\n OrderLinesDTO\n} from \"@app/models\";\nimport { filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\nimport { Grid, GridColumn } from \"@progress/kendo-react-grid\";\nimport '@app/scss/components/CloudConnectUsage.scss';\nimport { AuthState, withAuth } from \"@app/context/AuthContext\";\nimport { OrderState, withOrder } from \"@app/context/OrderContext\";\nimport { GridCellProps } from \"@progress/kendo-react-grid/dist/npm/interfaces/GridCellProps\";\nimport { Button } from \"reactstrap\";\nimport { Popup } from \"@progress/kendo-react-popup\"\nimport { AccountKeySelectDropdown } from \"@components/OrderEditor/AccountKeySelectDropdown\";\nimport { OrderItemSelectDropdown } from \"@components/OrderEditor/OrderItemSelectDropdown\";\nimport { GridItemChangeEvent } from \"@progress/kendo-react-grid/dist/npm/interfaces/events\";\nimport { TermSelectDropdown } from \"@components/OrderEditor/TermSelectDropdown\";\nimport { ExtraFieldNumberEditor } from \"@components/OrderEditor/ExtraFieldNumberEditor\";\nimport { FullURL } from \"@utils/BaseURL\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport appSettings from \"@app/appSettings\";\n\nexport interface IProps extends RouteComponentProps {\n Auth: AuthState;\n Order: OrderState;\n history: H.History;\n location: H.Location;\n match: any;\n}\n\nexport interface IState {\n editingLine: IOrderLinesDTO | undefined;\n isLoading: boolean;\n sort: SortDescriptor[];\n filter: any;\n lastQuoteURL: string | undefined;\n}\n\nclass CustomOrderEditor extends React.Component {\n\n constructor(props: IProps) {\n super(props);\n this.state = {\n editingLine:undefined, \n isLoading: false,\n sort: [],\n filter: undefined,\n lastQuoteURL: undefined\n };\n }\n\n canImpersonate = () => {\n return this.props.Auth.hasRole(\"CanImpersonateUser\");\n }\n \n termColumn = (cellProps: GridCellProps) => {\n var extras = cellProps.dataItem as IOrderLinesDTO;\n let otherDetails: any = {};\n try {\n otherDetails = JSON.parse(extras.OtherDetailsJson || \"{}\");\n } catch {\n // No good value.\n }\n return {otherDetails.length};\n }\n \n add = async (dataItem: IOrderLinesDTO) => {\n // Create a new order item line\n await this.props.Order.AddOrderLineRaw(dataItem);\n this.setState({\n editingLine: undefined\n });\n }\n\n update = async (dataItem: IOrderLinesDTO) => {\n // Update an existing one.\n await this.props.Order.UpdateOrderLineRaw(dataItem);\n this.setState({\n editingLine: undefined\n });\n }\n \n discard = (dataItem: IOrderLinesDTO) => {\n this.setState({\n editingLine: undefined\n });\n }\n\n cancel = (dataItem: IOrderLinesDTO) => {\n this.setState({\n editingLine: undefined\n });\n }\n\n edit = (dataItem: IOrderLinesDTO) => {\n var newdataItem = {...dataItem, inEdit: true};\n this.setState({\n editingLine: newdataItem\n });\n }\n\n remove = async (dataItem: IOrderLinesDTO) => {\n await this.props.Order.RemoveItemById(dataItem.Id);\n this.setState({lastQuoteURL: undefined});\n }\n \n startNew = () => {\n let newItem = new OrderLinesDTO();\n (newItem as any)[\"inEdit\"] = true;\n this.setState({editingLine: newItem});\n }\n \n commandCell = (cellProps: GridCellProps) => {\n const dataItem = cellProps.dataItem as IOrderLinesDTO;\n const inEdit = (dataItem as any)[\"inEdit\"];\n const isNewItem = !dataItem.Id; \n\n return inEdit ? (\n \n isNewItem ? this.add(dataItem) : this.update(dataItem)}\n >\n {isNewItem ? 'Add' : 'Update'}\n \n isNewItem ? this.discard(dataItem) : this.cancel(dataItem)}\n >\n {isNewItem ? 'Discard' : 'Cancel'}\n \n \n ) : (\n \n this.edit(dataItem)}\n >\n Edit\n \n confirm('Confirm deleting: ' + dataItem.ProductName) &&\n this.remove(dataItem)\n }\n >\n Remove\n \n \n );\n }\n\n itemChange = (event: GridItemChangeEvent) => {\n if (!this.state.editingLine) return;\n let curLine = {...this.state.editingLine};\n let curExtraProps: any = {};\n try {\n curExtraProps = JSON.parse(curLine.OtherDetailsJson || \"{}\"); \n } catch {\n }\n\n if (event.field == \"OrderItemName\") \n {\n const newItem = event.value as IOrderItemDTO;\n curLine.Item = newItem.Id;\n curLine.ItemName = newItem.Name;\n curLine.ItemType = newItem.Type;\n curLine.ItemTypeName = \"(pending)\";\n } else if (event.field == \"Price\") {\n curLine.Price = event.value;\n } else if (event.field == \"Qty\") {\n curLine.Qty = event.value;\n } else if (event.field == \"TargetItem\") {\n if (curLine.ItemType == OrderItemType.CloudConnect || curLine.ItemType == OrderItemType.RemoteBundle) {\n curLine.CloudConnectAccount = (event.value as ICloudConnectAccountsDTO).UniqueId;\n } else {\n curLine.SearchCode = (event.value as IKeycodesDTO).SearchCode;\n }\n } else if (event.field == \"Term\") {\n curExtraProps.Term = event.value.value;\n } else if (event.field == \"Traces\") {\n curExtraProps.Traces = event.value;\n } else if (event.field == \"Agents\") {\n curExtraProps.Agents = event.value;\n }\n if ((curLine.ItemType == OrderItemType.CloudConnect || curLine.ItemType == OrderItemType.RemoteBundle) && curLine.ItemName != \"PingPlotter Cloud\") {\n curLine.Qty = 1; // Always have only 1 cloudconnect - Cloud uses qty as trace count\n }\n curLine.OtherDetailsJson = JSON.stringify(curExtraProps);\n this.setState({editingLine: {...curLine}});\n }\n \n createQuote = async () => {\n let quoteId = await this.props.Order.CreateQuote();\n let newUrl = FullURL(\"quote/\"+quoteId);\n this.setState({\n lastQuoteURL: newUrl\n });\n }\n\n importQuote = () => {\n var quoteID = prompt(\"Enter quote ID to import\");\n if (quoteID) {\n var parts = quoteID.split(\"/\");\n var quotePart = parts[parts.length-1];\n this.props.Order.CopyQuoteToOrder(quotePart);\n }\n }\n\n quoteButton: (HTMLButtonElement | undefined) = undefined;\n\n componentDidUpdate = (prevProps: Readonly, prevState: Readonly, snapshot?: any) => {\n if (this.state.lastQuoteURL) {\n if (this.state.editingLine || this.props.Order.orderLines.length == 0) {\n this.setState({lastQuoteURL: undefined});\n } \n }\n };\n\n render() {\n if (this.props.Auth.isLoading || (this.props.Order.isLoading && (this.props.Order.orderLines.length == 0))) return ;\n let lines = [...this.props.Order.orderLines];\n if (this.state.editingLine) {\n const matchLineId = this.state.editingLine.Id;\n const matchIdx = this.props.Order.orderLines.findIndex(ol => ol.Id == matchLineId);\n if (matchIdx >= 0) {\n lines[matchIdx] = this.state.editingLine;\n } else {\n lines.push(this.state.editingLine);\n }\n }\n\n return (\n \n

\n Edit order for {this.props.Auth.username} {this.props.Auth.emailAddress}\n

\n {\n this.setState({\n filter: e.filter\n });\n }}\n sort={this.state.sort}\n onSortChange={(e) => {\n this.setState({\n sort: e.sort\n });\n }}\n editField={\"inEdit\"}\n >\n \n \n \n \n \n \n \n \n \n \n
\n {!this.state.editingLine && \n {lines.length > 0 && \n \n \n
\n Quote link:  \n {appSettings.info(text + \" copied to clipboard\")}}>  \n Visit\n
\n
\n \n
}\n \n \n
\n }\n
\n );\n }\n}\n\nexport default withRouter(withAuth(withOrder(CustomOrderEditor)));\n","import * as React from 'react';\nimport { CheckoutDTO, IInitialStateDTO, QuoteController } from \"@app/models\";\nimport { RouteComponentProps, withRouter } from \"react-router\";\nimport { Layout } from \"@app/containers\";\nimport Loader from \"@components/Loader\";\nimport useFastspring from \"@utils/use-fastspring\";\nimport { Alert, Button, Card, CardBody, Col, Row } from \"reactstrap\";\nimport { useState } from \"react\";\n\ninterface myRouterParams {\n quoteId: string;\n}\n\ninterface QuoteProps extends RouteComponentProps {\n}\n\ninterface QuoteState {\n checkout?: CheckoutDTO[];\n internalError?: string;\n quoteLoadingTimerStarted: boolean;\n showExtraCheckoutInstructions: boolean;\n}\n\ninterface Quote_InternalProps {\n fastspring: any;\n quoteId: string;\n error?: string;\n fsLoaded: boolean;\n}\n\nclass Quote_internal extends React.Component {\n\n constructor(props: Quote_InternalProps) {\n super(props);\n\n this.state = {\n checkout: undefined,\n internalError: undefined,\n quoteLoadingTimerStarted: false,\n showExtraCheckoutInstructions: false\n };\n this.loadQuote();\n }\n\n getError = () => {\n return this.props.error || this.state.internalError;\n };\n\n loadQuote = async () => {\n const quoteId = this.props.quoteId;\n var ctrl = new QuoteController();\n\n try {\n var checkoutDTO = await ctrl.buildSecureFastspringOrder(quoteId);\n this.setState({checkout: checkoutDTO});\n this.checkout(checkoutDTO);\n } catch (error) {\n this.setState({internalError: error.response});\n }\n };\n\n checkout = (checkoutList: CheckoutDTO[]) => {\n if (!checkoutList) return;\n \n const checkout = checkoutList.shift();\n if (!checkout) {\n this.checkout(checkoutList);\n return;\n }\n \n this.props.fastspring.builder.secure(checkout.Payload || \"\", checkout.Key, (obj: any) => {\n if (obj) {\n if (checkoutList.length > 0) {\n this.checkout(checkoutList);\n return;\n }\n if (!this.getError()) {\n // Sometimes, checkout doesn't seem to work. Offer some help (and a manual checkout button).\n // This may be because of popup blocking, so hooking to a button might fix things.\n if (!this.state.quoteLoadingTimerStarted || !this.state.showExtraCheckoutInstructions) {\n this.setState({quoteLoadingTimerStarted: true});\n setTimeout(() => this.setState({showExtraCheckoutInstructions: true}),5000);\n }\n\n this.props.fastspring.builder.checkout();\n }\n } else {\n }\n }); \n };\n\n render() {\n return (\n \n
\n
\n \n  \n \n \n \n {(!this.state.checkout || !this.props.fsLoaded) ?\n Loading quote... :\n \n {this.getError()\n ? Error loading quote: {this.getError()}\n : !this.state.showExtraCheckoutInstructions ? \n Quote loaded - sending to Fastspring for invoice and payment processing. :\n
\n
\n \n
\n \n
\n }\n
}\n
\n
\n \n  \n
\n
\n );\n }\n}\n\n\nconst Quote = (props: QuoteProps) => {\n\n const storeFront = ((window as any).initialState as IInitialStateDTO).FastspringStoreFrontWeb;\n const accessKey = ((window as any).initialState as IInitialStateDTO).FastspringSecretsId;\n const [error, setError] = useState(undefined);\n\n const {loaded, fastspring} = useFastspring({\n accessKey: accessKey,\n storeFront: storeFront,\n onError: (fsCode, fsError) => {\n setError(fsError);\n },\n sdkUrl: 'https://d1f8f9xcsvx3ha.cloudfront.net/sbl/0.8.3/fastspring-builder.min.js' // this is the default value\n });\n\n return (\n \n );\n};\n\nexport default withRouter(Quote);\n\n","import * as React from 'react';\nimport { Switch, Route } from 'react-router-dom';\nimport { Layout, HomePage } from './containers';\nimport LoginPage from 'containers/LoginPage';\nimport { AuthProvider, AuthConsumer } from 'context/AuthContext';\nimport ProtectedRoute from '@components/ProtectedRoute';\nimport LicenseDetailView from './containers/LicenseDetailView';\nimport LicenseListPage from './containers/LicenseListPage';\nimport { KeycodesProvider } from './context/KeycodesContext';\nimport { CloudConnectProvider } from './context/CloudConnectContext';\nimport { ReleasesProvider } from './context/ReleasesContext';\nimport { OrderProvider } from './context/OrderContext';\nimport CloudConnectDetailView from './containers/CloudConnectDetailView';\nimport CloudConnectSelectPlan from \"@app/containers/CloudConnectSelectPlan\";\nimport VersionGroups from './components/Reports/VersionGroups';\nimport CustomOrderEditor from \"@components/OrderEditor/CustomOrderEditor\";\nimport Quote from \"@components/Quotes/Quote\";\n\nexport const App = () => (\n\n \n \n \n \n \n {authState => {\n if (!authState) return null;\n return \n \n \n {authState.isAuth && !authState.isStaff && !authState.IsImpersonatingUser ? \n

CloudConnect Portal has been retired!

\n We've retired this portal and moved to a new fully cloud-based platform. Please visit https://pingplotter.cloud\n
:\n \n \n \n }/>\n }/>\n \n \n }/>\n \n }\n />\n \n }\n />\n \n }\n />\n \n }\n />\n\n }\n />\n\n \n \n



Page {window.location.href} does not exist

\n


\n
}\n
\n
\n }}
\n
\n
\n
\n);\n","import 'react-s-alert/dist/s-alert-default.css';\nimport 'react-s-alert/dist/s-alert-css-effects/bouncyflip.css';\nimport './scss/site.scss';\nimport 'axios';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Router } from 'react-router-dom';\n// import { createBrowseHistory } from 'history'\nimport { AppContainer } from 'react-hot-loader';\n// import { configureStore } from './redux/store'\n// import { RootState } from 'redux/reducers'\nimport { App } from './app';\nimport Axios from 'axios';\nimport { createBrowserHistory } from 'history';\nimport 'hammerjs'; // Needed for click events to work in Kendo.\n\nimport 'bootstrap';\n\n// prepare store\n// const initialState = (window as any).initialReduxState as RootState\nlet baseUrl = document.getElementsByTagName('base')[0].getAttribute('href') || \"\";\nbaseUrl = baseUrl.replace(/\\/$/, \"\"); // remove trailing slash\nAxios.defaults.baseURL = baseUrl;\nconst history = createBrowserHistory({basename: baseUrl});\n\nAxios.interceptors.response.use(response => response, (error) => {\n if (error.response && error.response.status === 401 && (history.location.pathname != \"/Login\")) {\n // Redirect to login page if we're not already there.\n var destinationPath = history.location.pathname;\n history.push( {\n pathname: \"/Login\",\n state: { return: destinationPath }\n } );\n }\n return Promise.reject(error);\n});\n\n// const history = createBrowserHistory({basename: baseUrl })\n// const store = configureStore(history, false, initialState)\nconst rootEl = document.getElementById('react-app');\n\nconst render = (Component: any) => {\n ReactDOM.render(\n \n \n \n \n ,\n rootEl\n );\n};\n\nrender(App);\n\n// Hot Module Replacement API\ndeclare let module: { hot: any };\n\nif (module.hot) {\n module.hot.accept('./app', () => {\n render(App);\n });\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpingman_account\"] = self[\"webpackChunkpingman_account\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [736], () => (__webpack_require__(3658)))\n__webpack_require__.O(undefined, [736], () => (__webpack_require__(7294)))\nvar __webpack_exports__ = __webpack_require__.O(undefined, [736], () => (__webpack_require__(1163)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","props","stack","position","effect","timeout","SubscriptionStatusDTO","ProductType","baseUrl","instance","jsonParseReviver","undefined","this","login","model","url_","replace","options_","data","JSON","stringify","method","url","headers","request","then","_response","processLogin","response","status","_headers","k","hasOwnProperty","resultData200","ServiceUser","fromJS","throwException","Promise","resolve","logout","responseType","processLogout","contentDisposition","fileNameMatch","exec","fileName","length","logout2","processLogout2","sendForgotPasswordEmail","Params","processSendForgotPasswordEmail","getCurrentUser","processGetCurrentUser","changeEmailAddress","newAddress","encodeURIComponent","processChangeEmailAddress","changePassword","newPassword","processChangePassword","impersonateUser","impersonateEmail","processImpersonateUser","getItemsWithPrices","processGetItemsWithPrices","result200","Array","isArray","item","push","OrderItemDTO","getCloudConnectAccountInfo","accountId","Error","processGetCloudConnectAccountInfo","CloudConnectAccountsDTO","getAllCloudConnectAccounts","processGetAllCloudConnectAccounts","updateCloudSubscription","qty","processUpdateCloudSubscription","_responseText","getCloudConnectPaymentManagementURL","processGetCloudConnectPaymentManagementURL","getVersionGroups","processGetVersionGroups","VersionGroupDTO","updateVersionGroup","updatedVersionGroup","processUpdateVersionGroup","createVersionGroup","newVersionGroup","processCreateVersionGroup","setVersionGroupAsDefault","versionGroupUniqueId","processSetVersionGroupAsDefault","deleteVersionGroup","processDeleteVersionGroup","getAgentProgramReleases","processGetAgentProgramReleases","ProgramReleaseDTO","createNewCloudConnectAccount","emailAddress","userName","companyName","sessionLimit","processCreateNewCloudConnectAccount","cloudConnectAccounts","processCloudConnectAccounts","createCloudConnectTrialAccount","processCreateCloudConnectTrialAccount","getContactsForCloudConnectAccount","cloudconnectAccount","processGetContactsForCloudConnectAccount","CloudConnectAccountContactDTO","associateContactWithCloudConnectAccount","contactEmail","processAssociateContactWithCloudConnectAccount","revokeContactsAccessToCloudConnectAccount","processRevokeContactsAccessToCloudConnectAccount","role","processRole","CloudConnectAccountContactRoleDTO","updateRoleForContact","newRole","processUpdateRoleForContact","getContactRolesForCloudConnectAccount","processGetContactRolesForCloudConnectAccount","createContactRoleForCloudConnectAccount","processCreateContactRoleForCloudConnectAccount","updateRoleForCloudConnectAccount","oldName","updatedRole","processUpdateRoleForCloudConnectAccount","deleteRoleForCloudConnectAccount","name","processDeleteRoleForCloudConnectAccount","getPermissionSetsForCloudConnectAccount","processGetPermissionSetsForCloudConnectAccount","CloudConnectAccountPermissionSetDTO","modifyLimitsForBetaCloudConnectAccount","newSessionLimit","newAgentLimit","processModifyLimitsForBetaCloudConnectAccount","createMagnetoActivator","processCreateMagnetoActivator","CloudConnectMagnetoActivatorsDTO","magnetoActivator","activatorId","processMagnetoActivator","deleteMagnetoActivator","processDeleteMagnetoActivator","magnetoActivatorsForAccount","processMagnetoActivatorsForAccount","activateMagneto","magnetoId","activationId","processActivateMagneto","CloudConnectMagnetoActivationResult","getRelease","platform","version","processGetRelease","getVersionNumberForVersionGroupAndPlatform","processGetVersionNumberForVersionGroupAndPlatform","actionGetEntitlement","processActionGetEntitlement","EntitlementResults","magnetoEntitlement","processMagnetoEntitlement","CloudConnectMagnetoEntitlementResult","getCloudConnectAccountForLicenseKey","licenseKey","processGetCloudConnectAccountForLicenseKey","ContactDTO","index","processIndex","cSharp","processCSharp","processEventId","eventId","processProcessEventId","processEvent","type","processProcessEvent","webhook","processWebhook","generateLicense","formatted","processGenerateLicense","download","searchCode","releaseId","embed","filename","processDownload","downloadAgent","configLinkID","dummyFilename","processDownloadAgent","getKeycodes","processGetKeycodes","KeycodesDTO","getKeycode","processGetKeycode","getKeycodeDetails","searchcode","processGetKeycodeDetails","KeycodeDetailsDTO","getReleases","processGetReleases","getClustersForCloudConnectAccount","processGetClustersForCloudConnectAccount","ClusterInfo","getAgentsForCluster","clusterID","processGetAgentsForCluster","SentinelInfo","getCluster","processGetCluster","createCluster","content_","FormData","append","toString","processCreateCluster","getAgent","agentId","processGetAgent","agentDownloadLink","processAgentDownloadLink","getAgentActivationLink","processGetAgentActivationLink","createAgentForCluster","processCreateAgentForCluster","getTargetsForCluster","clusterId","processGetTargetsForCluster","SessionInfo","editAgent","info","processEditAgent","clearMachineIDForSentinel","id","processClearMachineIDForSentinel","editCluster","cluster","processEditCluster","renameAccount","processRenameAccount","deleteCluster","processDeleteCluster","deleteAgent","uninstall","processDeleteAgent","deleteTarget","processDeleteTarget","forceAgentToReconnect","processForceAgentToReconnect","requestSupportTicketFromSentinel","sentinelID","processRequestSupportTicketFromSentinel","pauseOveruseSessions","limit","processPauseOveruseSessions","cloudConnectSubscriptionStatus","processCloudConnectSubscriptionStatus","uncancelSubscription","subscriptionID","processUncancelSubscription","cancelSubscription","processCancelSubscription","createNewCloudConnectSubscription","processCreateNewCloudConnectSubscription","CheckoutDTO","changeCloudConnectSubscription","processChangeCloudConnectSubscription","publishSignalRUpdated","processPublishSignalRUpdated","resyncCloudconnectSubscription","processResyncCloudconnectSubscription","addQtyToKeycode","itemtype","processAddQtyToKeycode","addOrderLineRaw","newOrderLine","processAddOrderLineRaw","OrderLinesDTO","updateOrderLineRaw","updatedLine","processUpdateOrderLineRaw","removeItemTypeFromKey","processRemoveItemTypeFromKey","removeItemsByProductAndType","productCode","processRemoveItemsByProductAndType","removeItemEntryFromOrder","entry","processRemoveItemEntryFromOrder","getOrder","processGetOrder","createQuote","processCreateQuote","createOrderFromQuote","QuoteID","processCreateOrderFromQuote","clearCart","processClearCart","lockFastspringOrder","testMode","processLockFastspringOrder","completeFastspringOrder","orderId","processCompleteFastspringOrder","buildSecureFastspringOrder","processBuildSecureFastspringOrder","getQuote","processGetQuote","QuoteDTO","property","init","_data","Username","EmailAddress","Message","Roles","IsImpersonating","IsUsingTempPassword","result","toJSON","Login","Password","RememberMe","LoginModel","ForceEvenIfRecentlySent","SendPasswordParams","Id","Name","ShortName","AdditionalText","SellerPartNumber","Program","Type","CustomPricingRule","CanAddToPortalOrder","Prices","UniqueId","AgentLimit","SessionLimit","SubscriptionBegin","Date","SubscriptionEnd","SubscriptionRenewalDate","SubscriptionRenewalMonths","SubscriptionGracePeriod","SubscriptionPaymentExpiration","SubscriptionStatusMessage","SubscriptionRenewalPrice","SubscriptionId","SellerOrderId","SubcriptionSellerId","SubscriptionStatus","RemoteBundle","RequiresSalesIntervention","toISOString","CloudConnectAccountPermissionArea","CloudConnectAccountPermissionType","Public","IsDefault","Releases","Description","ProgramCode","Platform","PlatformName","VersionNumber","VersionMatchString","ReleaseDate","EligibilityDate","Prerelease","Major","OkForAgentDownload","EmbedLicense","PublicDownloadName","PrivateDownloadTemplate","ReleaseNotesUrl","Email","Role","Permissions","Area","Permission","EnforcementModeDTO","Created","Used","Notes","IPAddress","MagnetoUniqueId","CloudConnectAccountGuid","Status","KeyCode","SearchCode","UserName","MaintenanceGoodThrough","Expires","KeyCount","KeyCountText","ProductCode","ProductName","ProgramId","IsSubscription","IsTemporary","Managed","ManagedEnforceMode","DistMethod","New_KeyCount","New_KeyCountText","New_MaintenanceGoodThrough","HasPendingUpgrade","PendingExtensionYears","HasPendingExtension","TraceStatusEnumDTO","ID","License","Usage","ClientUsage","TotalMessages","TotalBytes","ClusterID","UniqueID","MachineID","IsTemplate","IsOnline","OpenSessions","TotalSessions","SecurityKey","Configured","LastMessageDateTime","Version","TargetVersion","ServiceRunning","MachineName","VersionGroupUniqueId","ClientDetails","TicksOffset","MagnetoUniqueID","SentinelUniqueID","CloudConnectAccountUniqueID","OriginalTarget","TraceStatus","TraceInterval","PacketType","ConfigurationJSON","ConfigurationID","MostRecentData","LastContact","SessionStartedDateTime","SentinelLastHostUpdateID","SentinelLastRouteID","SentinelLastSampleSetID","SentinelLastCommentUpdateID","SentinelLastExceptionBundleID","SentinelLastConfigUpdateID","MagnetoLastHostUpdateID","MagnetoLastRouteID","MagnetoLastSampleSetID","MagnetoLastCommentUpdateID","MagnetoLastExceptionBundleID","Payload","Key","Seq","Item","ItemName","ItemType","ItemTypeName","Years","SubscriptionExpires","Qty","Price","CloudConnectAccount","OtherDetailsJson","ContactName","ContactEmail","StartDate","QuoteNumber","Total","Lines","QuoteLineDTO","QuoteLinkId","ItemDetails","QtyFormatted","Each","message","isApiException","obj","ApiException","AuthContext","loadCurrentUser","enterIsLoading","setState","isLoading","isLoadingCount","state","AccountController","user","isAuth","username","isImpersonatingUser","isUsingTempPassword","roles","exitIsLoading","catch","error","forgotPassword","force","resp","password","rememberMe","history","passwordStrength","verifyPassword","good","strength","clearLastError","hasRole","roleName","indexOf","impersonate","userEMail","initialModel","window","initialState","User","componentWillMount","render","Provider","value","IsImpersonatingUser","isStaff","children","AuthProvider","AuthProviderInner","AuthConsumer","Consumer","withAuth","WrappedComponent","auth","useContext","Auth","appSettings","AlertSettings","ApplicationName","ManagementUriPrefix","onunhandledrejection","msg","reason","warning","success","close","closeAll","className","show","Component","updatePasswordSettings","authState","context","passwordState","submitPasswordChange","e","preventDefault","passwordChangeSubmitted","doClose","Modal","toggle","isOpen","visible","ModalHeader","onSubmit","ModalBody","Row","Col","htmlFor","autoFocus","maxLength","onChange","target","color","dangerouslySetInnerHTML","__html","ModalFooter","onClick","Button","contextType","closeModals","showEmailEditor","showPasswordEditor","showImpersonationEditor","submitEmailChange","origEmail","newEmail","impersonatedUser","errorMessage","toggleUserDropdown","userDropOpen","componentDidMount","Dropdown","inNavbar","direction","DropdownToggle","nav","caret","icon","DropdownMenu","right","DropdownItem","defaultValue","urlRoot","document","getElementsByTagName","getAttribute","BaseURL","relative","contentRender","style","padding","itemId","text","toggleHelpDropdown","bind","toggleNavbar","helpDropOpen","staffDropOpen","collapsed","cartVisible","Navbar","dark","expand","NavbarBrand","tag","to","alt","src","height","NavbarToggler","Collapse","navbar","Nav","NavItem","NavLink","href","UncontrolledDropdown","divider","OrderItemType","OrderContext","_onOrderUpdated","EventEmitter","compareOrders","oldOrder","newOrder","line","json","findIndex","compLine","localeCompare","concat","UncancelSubscription","ctrl","OrderController","incIsLoading","addPromise","decIsLoading","catchError","CancelSubscription","keyCode","CreateNewCloudConnectSubscription","account","ChangeCloudConnectSubscription","GetCloudConnectManagementURL","urlPromise","newCount","orderCompleted","loadOrder","compareItemPrices","i1","i2","getBestItemForProgram","program","items","filter","i","sort","getBestItemForLicense","split","includes","getPriceForLicense","tier","a","b","find","getPriceForProgram","getTradeInValue","multipleCount","credit","NewLicense","daysExpired","getTime","Upgrade","ExtendMaintenance","loadItems","changedCodes","orderLines","emit","task","clearLoading","showError","componentDidUpdate","prevProps","invoiceLineTotals","totals","description","total","invoiceLine","otherDetails","parse","AddQtyToKey","itemType","AddOrderLineRaw","newLine","UpdateOrderLineRaw","ClearCart","clearPromise","RemoveItemById","removePromise","RemoveItemByKeyAndType","RemoveItemsByProductAndType","orderLinesGroupedByProductName","invoiceIdx","product","lines","GetOrderForFastspring","orderPromise","CreateQuote","CopyQuoteToOrder","quoteID","orderLinesGrouped","OnOrderUpdated","GetTradeInValue","OrderCompleted","GetPriceForLicense","GetPriceForProgram","GetBestItemForLicense","GetBestItemForProgram","OrderConsumer","cachedScripts","accessKey","storeFront","onPopupClose","sdkUrl","onError","onWebhook","loaded","attributes","useEffect","createElement","async","Object","keys","forEach","key","setAttribute","splice","remove","addEventListener","body","appendChild","removeEventListener","fastspring","onFSPopupClosed","onFSErrorCallback","onFSWebhookReceived","CheckoutContext","CheckoutProvider","events","FastspringStoreFrontPopup","FastspringSecretsId","setError","CheckoutProvider_internal","fsLoaded","fsEvents","fastspringError","code","checkoutInProgress","fastspringPopupClosed","orderInfo","orderState","location","reload","checkOutFastspring","order","pendingOrder","builder","reset","checkout","orders","firstOrder","shift","secure","addListener","componentWillUnmount","removeListener","CheckoutFastspring","CheckoutInProgress","CheckoutConsumer","checkoutState","map","group","isCC","CloudConnect","isNewSubscription","NewSubscription","isCloud","descr","traces","Traces","agents","Agents","s","join","toFixed","term","Term","years","title","onCloseCart","reduce","current","UncontrolledButtonDropdown","header","disabled","block","fontSize","CloudConnectContext","maghubController","MagHubController","cloudconnectAccountController","CloudConnectAccountController","notificationsHub","withUrl","build","magnetoActivationCallbacks","Map","infoToaster","createControllerActivator","activator","controllerActivators","setupSubscriptions","createTrialCloudConnectAccount","accounts","registerMagnetoActivationCallback","activatorUniqueId","callback","has","callbacks","get","set","unregisterMagnetoActivationCallbacks","delete","updateSessionCount","count","sessionCount","clusters","createAgent","c","agent","getAgentDownloadLink","requestSupportTicketFromAgent","updatedAgent","updateAgentInList","agentIndex","newArray","slice","editAgents","agentsToUpdate","errors","Set","promises","from","values","add","all","newAgents","editAccountLimits","agentLimit","updatedAccount","otherAccounts","acc","agentToDelete","uninstallAgent","updateAgents","sessionToDelete","updateTargets","copyOfSessions","targets","sessionsIndex","updateClusters","editAccountName","accountToEdit","newName","getCloudConnectAccounts","initPromises","newClusters","er","loadClusterPromises","newTargets","initSignalR","handleCloudConnectAccountUpdated","getMagnetoActivatorsForAccount","showCloudConnectStatuses","start","stop","on","_","console","log","invoke","subscribeToAllCloudConnectAccountsInState","subscribeToCloudConnectAccountUpdates","subscribeToClusterUpdates","uniqueID","send","subscribeToAgentUpdates","subscribeToControllerUpdates","otherAccountsClusters","clustersForCloudConnectAccount","otherAgents","updatedAgentsForCloudConnectAccount","agentsForCluster","otherTargets","t","updatedTargetsForCloudConnectAccount","targetsForCluster","getTargetsForAccount","setupStep","showWalkthrough","toggleShowWalkthrough","updatedModel","prevState","getClustersForAccount","getActivatorsForAccount","getAgentsForAccount","getTargetsForAgent","getTargetsForController","controllerId","CloudConnectConsumer","toggleHelp","helpDropdownOpen","dropdownOpen","isCurrentPage","link","pathname","startWalkthrough","localStorage","setItem","cc","UncontrolledAlert","HideSecondNav","Container","fluid","openDelay","anchorElement","ProgramType","licenseTypeDetails","ptPINGPLOTTER_PRO","ptPINGPLOTTER_STANDARD","ptMULTIPING","ptISPEED","ptMULTIPING_LITE","ptSIDEKICK","ptSERVERCHECK","KeycodesContext","initialKeySorter","aSort","bSort","loadKeycodes","KeycodesController","keycodesResp","keycodes","categoryForKey","diff","diffDays","Math","ceil","Active","Failed","clearFilters","productFilter","filterToCart","setProductFilter","newFilter","setFilterToCart","defunctCount","defunctFilterInternal","kc","defunctFilter","isDefunct","getFilteredList","currentOrderLines","ol","getFilteredTitle","productName","Keycodes","getDefunctFilter","setDefunctFilter","hasDefunctCount","KeycodesConsumer","productKeys","devices","onMaintCount","offMaintCount","activeSubCount","otherSubCount","showMaint","showSubs","Card","CardHeader","CardTitle","width","toLowerCase","sm","size","outline","CardBody","Progress","xs","prompt","openSessions","availableTraces","utilization","abs","accAgents","activeAgents","Terminated","Cancelled","open","productCodes","self","lg","md","passwordChangeDialogVisible","onDismiss","keycode","isOnMaintenance","onCopy","cursor","toLocaleDateString","toggleDropdown","now","upgradeDate","setFullYear","getFullYear","setDate","getDate","upgradeNeeded","upgradeCount","prev","extendCount","upgradePrice","extendPrice","curPriceMultiple","newPriceMultiple","hasPendingConversion","ConvertLicenseType","ButtonDropdown","price","licenseYears","upgradeCost","maintCost","onConfirmCancel","openManagAccountURL","showConfirmModal","confirmImmediate","confirmRecurring","newPrice","showSelectPlanBtn","ReleasesContext","loadReleases","releasesResp","releases","getLatestReleasesForKeycode","pr","idx","g","FormatPlatformName","GetDownloadURL","release","getHasAnyBeta","handleMinorClick","setFilter","showMinor","onCloseMenu","handlePrereleaseClick","showPrerelease","ButtonGroup","active","scrollable","resizable","onSortChange","rowRender","trElement","dataItem","field","cell","trim","Badge","columnMenu","ColumnMenu","column","programPlatformReleases","r","allEligible","latestEligible","cur","da","db","nodeRef","createRef","handleClick","handleOutsideClick","tabs","focus","node","renderError","componentDidCatch","Fields","doLogin","submitLogin","queryParams","ccactivate","Errors","handleInputChange","placeholder","setUpAccount","doForgotPassword","forgotPromise","lastForgotPasswordRequest","LastSent","lastForgotPasswordWasSent","Sent","lastUsername","passwordRequested","event","HTMLInputElement","checked","sendForgotEmail","showNewUserInstructions","search","loginPromise","remember_me","redirectTo","return","initialUsername","initialPassword","u","p","showHelp","getRelativeSentTime","timeSent","offset","xl","display","LoginPage","component","rest","typeCount","AddLicense","SubscriptionQuantityChange","newEach","cost","newTotal","maxHeight","pendingConvert","hasPendingConvert","newProPrice","tradeInValue","round","loadKeyCode","orderUpdated","keysUpdated","orderService","Fragment","handleRowClick","router","licenses","sortable","onFilterChange","onRowClick","filterable","dotColor","row","contextTypes","showAll","edition","keycodesState","productList","category","setFilters","cartFilter","LicenseListPage","handleSubmit","selectAgentCallback","handleChange","Form","Label","Input","CardFooter","creatingAgent","helpUrl","UncontrolledTooltip","placement","autohide","editAgentName","showName","magHubController","versionGroups","selectedName","selectedVersionGroup","vg","currentSelected","currentVersionGroupUniqueId","versionGroupNames","selected","label","allowCustom","handleSave","showing","toggleUninstallState","handleDeleteAgent","ccContext","saveEdits","newNameValue","editName","handleVersionGroupUpdated","newVersionGroupUniqueId","forceToReconnect","clearAgentMachineId","requestSupportTicket","agentID","lastMessageTime","select","authContext","InputGroup","addon","opacity","toLocaleString","substr","getLastMessageDateTimeString","getStatusCode","getStatus","date","getSessionCount","handleSortChange","handleFilterChange","performTransforms","ensureAgentSelected","selectedID","agentSelectedHandler","selectAgentAfterCreation","expandChange","expanded","editItem","editField","ccState","FinishCreatingControllerToCreateAgent","CreateAgentForm","allAgents","inEdit","detail","AgentListDetails","expandField","onExpandChange","selectedField","onlineFilterable","usageStatsVisible","handleGetAgentDownloadLink","agentDownloadPage","loadingAgentLink","loadDownloadPageURL","handleCopyActivationLink","buildPingPlotterProtocolUrl","toggleConfigureDropDown","configureDropdownOpen","agentActivationLink","ManageAgentButton","handleOkay","handleButtonClick","modalClassName","modalTitle","modalBody","buttonSize","buttonClassName","buttonText","sessionRow","controllerName","sessions","gettingStarted","AgentViewerTargetDetails","editable","editor","CloudConnectContactsContext","currentUsersRole","currentRole","getContactsForAccount","getRolesForAccount","getPermissionSets","contacts","permissions","permissionSets","associateContact","email","doesCurrentUserHaveWriteAccess","Contacts","unassociateContact","contact","successful","clearError","getRoleForContact","doesCurrentUserHavePermission","area","permission","Read","Write","err","doesCurrentUserHaveReadAccess","CloudConnectContactsConsumer","admin","onAdminChanged","onDelete","buildEmailCell","ContactListItem","buildNameCell","buildAdminCheckboxCell","buildDeleteButton","buildItemList","results","rowHeight","emailToInvite","invite","finished","handleCancel","handleFinish","finishedInviting","cancelled","invitingContact","handleInviteNewUser","userIsAdmin","onToggle","manageContacts","toggleModal","showManageContacts","goToManagementPage","CloudConnectContactsProvider","contactsState","orderContext","resyncSubscription","agentLimitChangedHandler","parseInt","currentTarget","sessionLimitChangedHandler","FormGroup","for","currentlyViewedAgentId","handleAgentSelected","cloudconnectAccountID","AgentViewer","CloudConnectDetailView","SubscriptionLengthToUnits","renewDate","totalMonthsInSubscription","subsPrice","ptCLOUDCONNECT","SubscriptionQuantity","activeSub","proMonthlyPrice","chargeNow","startDate","setMonth","getMonth","daysRemaining","daysInPeriod","textDecoration","OnNewPlanSelected","onNewPlanSelected","recurringPrice","immediatePrice","confirmQty","securePayloads","onConfirmPlanSelected","planCounts","activeTab","onRadioBtnClick","CloudConnectSubscriptionCard","acct","recur","showConfirmCancelModal","toggleTab","tab","getAccount","CloudConnectPlanPicker","CloudConnectSelectPlan","supportController","CloudConnectSupportController","versionGroup","noChanges","editedVersionGroup","handleUpdate","createEditedVersion","buildProgramMultiSelect","selectedReleases","platformsWithReleases","sr","reverse","releasesFilter","buildProgramMultiSelectString","parts","programRelease","getProgramFromMultiSelectString","displayString","versionNumber","handleMultiSelectChange","val","changeReleases","handleNameChange","changeName","handlePublicChange","changePublic","required","defaultChecked","load","clearSelection","selectedGroup","handleOnClick","handleDelete","uniqueId","handleVersionGroupUpdate","updated","createNewVersionGroup","handleDefaultChanged","newDefaultUniqueId","defaultVersionGroup","marginBottom","enabled","hint","paddingTop","VersionGroups","syntheticEvent","keycodeDropdownRenderer","li","itemProps","selAccount","accName","textField","dataItemKey","popupSettings","selKey","keyText","itemRender","selItem","itemName","termLengths","curTermMonths","found","f","curFieldValue","canImpersonate","termColumn","cellProps","extras","Order","editingLine","update","discard","cancel","edit","newdataItem","lastQuoteURL","startNew","newItem","commandCell","isNewItem","confirm","itemChange","curLine","curExtraProps","quoteId","newUrl","port","protocol","startsWith","hostname","FullURL","importQuote","quotePart","quoteButton","snapshot","matchIdx","onItemChange","OrderItemSelectDropdown","AccountKeySelectDropdown","TermSelectDropdown","ExtraFieldNumberEditor","ref","anchorAlign","horizontal","vertical","popupAlign","anchor","readOnly","CustomOrderEditor","getError","internalError","loadQuote","QuoteController","checkoutDTO","checkoutList","quoteLoadingTimerStarted","showExtraCheckoutInstructions","setTimeout","stopPropagation","FastspringStoreFrontWeb","Quote_internal","match","params","basename","destinationPath","reject","rootEl","getElementById","path","KeycodesProvider","OrderProvider","ReleasesProvider","CloudConnectProvider","exact","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","n","getter","__esModule","d","definition","o","defineProperty","enumerable","globalThis","Function","prop","prototype","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}