{"version":3,"sources":["apps/partner-center-client/src/app/common/app-selection/paginated-app-activation-table/activate-app-table.service.ts","apps/partner-center-client/src/app/common/app-selection/paginated-app-activation-table/app-activation-table/activatable-row/activatable-row.component.ts","apps/partner-center-client/src/app/common/app-selection/paginated-app-activation-table/app-activation-table/activatable-row/activatable-row.component.html","apps/partner-center-client/src/app/common/app-selection/paginated-app-activation-table/app-activation-table/activation-table.component.ts","apps/partner-center-client/src/app/common/app-selection/paginated-app-activation-table/app-activation-table/activation-table.component.html","apps/partner-center-client/src/app/common/app-selection/paginated-app-activation-table/paginated-app-activation-table.service.ts","apps/partner-center-client/src/app/common/app-selection/paginated-app-activation-table/paginated-app-activation-table.component.ts","apps/partner-center-client/src/app/common/app-selection/paginated-app-activation-table/paginated-app-activation-table.component.html","apps/partner-center-client/src/app/common/pipes/format-discount.pipe.ts","apps/partner-center-client/src/app/common/table-pricing/table-pricing.component.ts","apps/partner-center-client/src/app/common/table-pricing/table-pricing.component.html","apps/partner-center-client/src/app/activation/core/injection-tokens.ts","apps/partner-center-client/src/app/activation/core/activate-app/interface.ts","apps/partner-center-client/src/app/activation/core/activate-app/utils.ts","apps/partner-center-client/src/app/activation/core/activate-app/activate-app-api.service.ts","apps/partner-center-client/src/app/activation/core/activate-app/activate-app.service.ts","apps/partner-center-client/src/app/activation/core/pending-activations.service.ts","apps/partner-center-client/src/app/activation/core/activation.service.ts","apps/partner-center-client/src/app/activation/core/activation-navigation.service.ts","apps/partner-center-client/src/app/activation/confirmation-page/activation-message-dialog/activation-message-dialog.component.ts","apps/partner-center-client/src/app/activation/confirmation-page/activation-message-dialog/activation-message-dialog.html","apps/partner-center-client/src/app/activation/core/product-order-form.store.service.ts","apps/partner-center-client/src/app/activation/confirmation-page/utils.ts","apps/partner-center-client/src/app/activation/confirmation-page/order-confirmation.service.ts","apps/partner-center-client/src/app/activation/confirmation-page/stairstep-order.service.ts","apps/partner-center-client/src/app/activation/order-form-page/custom-price.util.ts","apps/partner-center-client/src/app/activation/confirmation-page/order-summary/fulfillment-order-confirmation.service.ts","apps/partner-center-client/src/app/activation/confirmation-page/order-summary/order-summary.helper.ts","apps/partner-center-client/src/app/activation/confirmation-page/order-excess/order-excess.component.ts","apps/partner-center-client/src/app/activation/confirmation-page/order-excess/order-excess.component.html","apps/partner-center-client/src/app/activation/confirmation-page/collect-payment/collect-payment.component.ts","apps/partner-center-client/src/app/activation/confirmation-page/collect-payment/collect-payment.component.html","apps/partner-center-client/src/app/activation/confirmation-page/order-summary/order-summary.component.ts","apps/partner-center-client/src/app/activation/confirmation-page/order-summary/order-summary.component.html","apps/partner-center-client/src/app/activation/confirmation-page/order-confirmation-page/order-confirmation-page.component.ts","apps/partner-center-client/src/app/activation/confirmation-page/order-confirmation-page/order-confirmation-page.component.html","node_modules/@vendasta/godaddy/fesm2020/vendasta-godaddy.mjs","apps/partner-center-client/src/app/activation/dynamic-order-form-page/dynamic-order-form.service.ts","apps/partner-center-client/src/app/activation/dynamic-order-form-page/terms-of-service-dialog.component.ts","apps/partner-center-client/src/app/activation/dynamic-order-form-page/dynamic-order-form-page.component.ts","apps/partner-center-client/src/app/activation/dynamic-order-form-page/dynamic-order-form-page.component.html","apps/partner-center-client/src/app/activation/order-form-page/constants.ts","apps/partner-center-client/src/app/activation/order-form-page/interface.ts","apps/partner-center-client/src/app/activation/order-form-page/product-order-form.service.ts","apps/partner-center-client/src/app/activation/order-form-page/utils.ts","apps/partner-center-client/src/app/activation/order-form-page/order-form-page/apps-custom-price/apps-custom-price.component.ts","apps/partner-center-client/src/app/activation/order-form-page/order-form-page/apps-custom-price/apps-custom-price.component.html","apps/partner-center-client/src/app/activation/order-form-page/order-form-page/order-form-page.component.ts","apps/partner-center-client/src/app/activation/order-form-page/order-form-page/order-form-page.component.html","apps/partner-center-client/src/app/activation/order-submitted-page/order-submitted-page.component.ts","apps/partner-center-client/src/app/activation/order-submitted-page/order-submitted-page.component.html","apps/partner-center-client/src/app/activation/selection-page/activation-selection-page.component.ts","apps/partner-center-client/src/app/activation/selection-page/activation-selection-page.component.html","apps/partner-center-client/src/app/activation/selection-page/adapters.ts","apps/partner-center-client/src/app/activation/selection-page/activation-cart/activation-cart.component.ts","apps/partner-center-client/src/app/activation/selection-page/activation-cart/activation-cart.component.html","apps/partner-center-client/src/app/activation/selection-page/paginated-package-activation-table/package-activation-table.service.ts","apps/partner-center-client/src/app/activation/selection-page/paginated-package-activation-table/package-activation-table/table-row/activatable-package-row.component.ts","apps/partner-center-client/src/app/activation/selection-page/paginated-package-activation-table/package-activation-table/table-row/activatable-package-row.component.html","apps/partner-center-client/src/app/activation/selection-page/paginated-package-activation-table/package-activation-table/table-row/activatable-package-items-row.component.ts","apps/partner-center-client/src/app/activation/selection-page/paginated-package-activation-table/package-activation-table/table-row/activatable-package-items-row.component.html","apps/partner-center-client/src/app/activation/selection-page/paginated-package-activation-table/package-activation-table/package-activation-table.component.ts","apps/partner-center-client/src/app/activation/selection-page/paginated-package-activation-table/package-activation-table/package-activation-table.component.html","apps/partner-center-client/src/app/activation/selection-page/paginated-package-activation-table/paginated-package-activation-table.component.ts","apps/partner-center-client/src/app/activation/selection-page/paginated-package-activation-table/paginated-package-activation-table.component.html","apps/partner-center-client/src/app/activation/selection-page/custom-product-recommendations/custom-product-recommendations.component.ts","apps/partner-center-client/src/app/activation/selection-page/custom-product-recommendations/custom-product-recommendations.component.html","apps/partner-center-client/src/app/activation/activation-routing.module.ts","apps/partner-center-client/src/app/activation/confirmation-page/change-price-dialog/change-price-dialog.component.ts","apps/partner-center-client/src/app/activation/confirmation-page/change-price-dialog/change-price-dialog.component.html","apps/partner-center-client/src/app/activation/confirmation-page/interface.ts","apps/partner-center-client/src/app/activation/confirmation-page/activation-price-summary/activation-price-summary.component.ts","apps/partner-center-client/src/app/activation/confirmation-page/activation-price-summary/activation-price-summary.component.html","apps/partner-center-client/src/app/activation/confirmation-page/activation-price/activation-price.component.ts","apps/partner-center-client/src/app/activation/confirmation-page/activation-price/activation-price.component.html","apps/partner-center-client/src/app/activation/confirmation-page/price-override.pipe.ts","apps/partner-center-client/src/app/activation/order-form-page/order-form-page/apps-custom-price-form/apps-custom-price-form.component.ts","apps/partner-center-client/src/app/activation/order-form-page/order-form-page/apps-custom-price-form/apps-custom-price-form.component.html","apps/partner-center-client/src/app/activation/activation.module.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport { PageEvent } from '@angular/material/paginator';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, shareReplay } from 'rxjs/operators';\nimport { ActivatableItem, SelectedItem, SelectedItems, SortDirection } from '../../../activation/core/interface';\nimport {\n doItemsHaveRestrictionReasons,\n filterRestrictedItems,\n pageArray,\n searchActivatableItems,\n sortActivatableItems,\n} from '../../../activation/core/utils';\nimport { Activation } from '../../../core/account.service';\nimport { ActivationPricingServiceInterface } from './activation-pricing-service-interface';\nimport { ActivationServiceInterface } from './activation-service-interface';\nimport { ActivationPricingServiceInterfaceToken, ActivationServiceInterfaceToken } from './tokens';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ActivateAppTableService {\n readonly activatableItems$: Observable;\n readonly selectedItems$: Observable;\n readonly unavailableCount$: Observable;\n readonly totalItems$: Observable;\n readonly areItemsUnavailable$: Observable;\n readonly pageOptions$: Observable;\n readonly hidePricing$: Observable;\n readonly activations$: Observable;\n\n private nameSort$$: BehaviorSubject = new BehaviorSubject('ASCENDING');\n private showRestricted$$: BehaviorSubject = new BehaviorSubject(false);\n private searchTerm$$: BehaviorSubject = new BehaviorSubject('');\n private paged$$: BehaviorSubject = new BehaviorSubject(undefined);\n\n get showingRestrictedProducts$(): Observable {\n return this.showRestricted$$.asObservable();\n }\n\n // Please note, the 2 interfaces are set up to allow use to inject the services. By injecting these 2 tokens, we can switch out the\n // services that provide data to the table, and allow more generic of use cases.\n constructor(\n @Inject(ActivationServiceInterfaceToken) private activationService: ActivationServiceInterface,\n @Inject(ActivationPricingServiceInterfaceToken) private activationPricingService: ActivationPricingServiceInterface,\n ) {\n this.selectedItems$ = this.activationService.selectedItems$;\n this.hidePricing$ = this.activationPricingService.hidePricing$;\n this.pageOptions$ = of([25, 50, 100, 200, 500]);\n const unfilteredActivatableItems$ = this.activationService.activatableItems$;\n const filteredActivatableItems$ = unfilteredActivatableItems$.pipe(\n map((activatableItems) => {\n return filterRestrictedItems(activatableItems);\n }),\n shareReplay(1),\n );\n\n const restrictedActivatableItems$ = combineLatest([\n filteredActivatableItems$,\n unfilteredActivatableItems$,\n this.showRestricted$$,\n ]).pipe(\n map(([filtered, unfiltered, showRestricted]) => {\n return showRestricted ? unfiltered : filtered;\n }),\n );\n\n this.unavailableCount$ = combineLatest([filteredActivatableItems$, unfilteredActivatableItems$]).pipe(\n map(([filtered, unfiltered]) => {\n return unfiltered.length - filtered.length;\n }),\n );\n\n this.areItemsUnavailable$ = unfilteredActivatableItems$.pipe(\n map((activatableItems) => {\n return doItemsHaveRestrictionReasons(activatableItems);\n }),\n shareReplay(1),\n );\n\n // searchTermDelayed$ used to reduce the number of times we search the list\n // (useful to not make repeated calls while a user is typing)\n const searchTermDelayed$ = this.searchTerm$$.pipe(debounceTime(200), distinctUntilChanged()) as Observable;\n const searchedActivatableItems$ = combineLatest([restrictedActivatableItems$, searchTermDelayed$]).pipe(\n map(([activatableItems, searchTerm]) => {\n return searchActivatableItems(activatableItems, searchTerm);\n }),\n shareReplay(1),\n );\n\n this.totalItems$ = searchedActivatableItems$.pipe(map((items) => (items ? items.length : 0)));\n\n const sortedActivatableItems$ = combineLatest([searchedActivatableItems$, this.nameSort$$]).pipe(\n map(([activatableItems, sortDirection]) => {\n return sortActivatableItems(activatableItems, sortDirection);\n }),\n shareReplay(1),\n );\n\n this.activatableItems$ = combineLatest([sortedActivatableItems$, this.paged$$]).pipe(\n map(([sortedItems, pageEvent]) => {\n return pageArray(sortedItems, pageEvent, 50);\n }),\n );\n\n this.activations$ = this.activationService.activations$;\n }\n\n sortByName(order: SortDirection): void {\n this.nameSort$$.next(order);\n }\n\n setSearchTerm(searchTerm: string): void {\n this.searchTerm$$.next(searchTerm);\n }\n\n setPage(page: PageEvent): void {\n this.paged$$.next(page);\n }\n\n setShowingRestrictedProducts(showRestricted: boolean): void {\n this.showRestricted$$.next(showRestricted);\n }\n\n selectItem(selectedItem: SelectedItem): void {\n this.activationService.selectItem(selectedItem);\n }\n\n toggleShowingRestricted(): void {\n this.setShowingRestrictedProducts(!this.showRestricted$$.getValue());\n }\n}\n","import { NgClass, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AppAndAddonActivationStatus } from '@vendasta/accounts/legacy';\nimport { BillingUiModule } from '@vendasta/billing-ui';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { IconComponent, VaIconModule } from '@vendasta/uikit';\nimport { ActivatableItem, ActivationStatus, Edition, SelectedItem } from '../../../../../activation/core/interface';\nimport { isAppActive } from '../../../../../activation/core/utils';\nimport { AppIDs } from '../../../../../constants';\nimport { GoogleWorkspaceSeatAddonIds } from '../../../../../marketplace-app/global-brands-constants';\n\ninterface CheckboxClickEvent {\n appId: string;\n currentQuantity: number;\n allowMultiActivations: boolean;\n}\n\ninterface QuantityChangeEvent {\n appId: string;\n newQuantity: number;\n allowMultiActivations: boolean;\n}\n\ninterface EditionChangeEvent {\n edition: Edition;\n appId: string;\n currentQuantity: number;\n}\n\n@Component({\n standalone: true,\n imports: [\n NgClass,\n MatCheckboxModule,\n VaIconModule,\n MatSelectModule,\n TranslateModule,\n FormsModule,\n MatInputModule,\n BillingUiModule,\n MatIconModule,\n IconComponent,\n NgIf,\n ],\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[app-activatable-row]',\n templateUrl: './activatable-row.component.html',\n styleUrls: ['./activatable-row.component.scss'],\n // This page is using OnPush change Detection do not remove\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ActivatableRowComponent implements OnInit {\n @Input() quantity = 0;\n @Input() indented = false;\n @Input() hidePricing: boolean;\n @Input() removableItems?: boolean = false;\n @Input() features: any = [];\n\n @Output() itemSelectionChanged: EventEmitter = new EventEmitter();\n @Output() itemDeleteClicked: EventEmitter = new EventEmitter();\n item: ActivatableItem;\n dynamicClass: { [cls: string]: boolean } = {};\n appCanBeSelected: boolean;\n isActive: boolean;\n activeCount: number;\n isPending: boolean;\n isCancelled: boolean;\n cancelledStatus = ActivationStatus.CANCELED;\n\n usesEditions: boolean;\n currentlySelectedEdition: Edition;\n filteredEditions: Edition[] = [];\n\n listingBuilderProduct = AppIDs.ListingBuilder;\n\n @Input()\n set currentlySelectedEditionId(editionId: string) {\n if (this.item && this.item.editionData && this.item.editionData.editions) {\n const selectedEdition = this.item.editionData.editions.find((edition) => edition.editionId === editionId);\n this.currentlySelectedEdition = selectedEdition || this.item.editionData.editions[0];\n } else {\n this.currentlySelectedEdition = null;\n }\n }\n\n @Input()\n set activatableItem(item: ActivatableItem) {\n this.dynamicClass = {\n disabled: Boolean(item && item.restrictedReason),\n };\n this.item = item;\n if (this.item && this.item.pricing) {\n this.item.pricing.isProratedToParent = GoogleWorkspaceSeatAddonIds.some((addonId) => addonId === item.appId);\n }\n\n if (!item) {\n return;\n }\n }\n\n constructor(private analyticsService: ProductAnalyticsService) {}\n\n ngOnInit(): void {\n const item = this.item;\n\n const activeStatus = (item.activeState || []).find((s) => s && s.status === AppAndAddonActivationStatus.ACTIVATED);\n if (activeStatus) {\n this.isActive = true;\n this.activeCount = activeStatus.count;\n } else {\n this.isActive = false;\n this.activeCount = 0;\n }\n\n this.usesEditions = item.editionData && item.editionData.usesEditions;\n if (this.usesEditions && item.editionData.editions.length > 0) {\n if (activeStatus) {\n this.currentlySelectedEdition = item.editionData.editions.find(\n (edition) => edition.editionId === (item.editionId || ''),\n );\n } else if (!this.currentlySelectedEdition) {\n if (this.currentlySelectedEditionId) {\n const selectedEdition = item.editionData.editions.find(\n (edition) => edition.editionId === this.currentlySelectedEditionId,\n );\n this.currentlySelectedEdition = selectedEdition || item.editionData.editions[0];\n } else {\n this.currentlySelectedEdition = item.editionData.editions[0];\n }\n }\n this.filteredEditions = item.editionData.editions;\n } else {\n this.currentlySelectedEdition = null;\n }\n\n this.isPending = Boolean(\n (item.activeState || []).find((s) => s && s.status === AppAndAddonActivationStatus.PENDING),\n );\n this.isCancelled = Boolean(\n (item.activeState || []).find((s) => s && s.status === AppAndAddonActivationStatus.CANCELED),\n );\n const isActive = isAppActive(item.appId, item.activeState, item.isTrial);\n this.appCanBeSelected = (!isActive || item.allowMultipleActivations) && !item.isActiveAccount;\n }\n\n onItemQuantityChanged({ appId, newQuantity, allowMultiActivations }: QuantityChangeEvent): void {\n newQuantity = Number(newQuantity || 0); // Input gives us a string\n if (isNaN(newQuantity)) {\n // conversion from string failed (they somehow typed garbage in the input field)\n newQuantity = 0;\n }\n if (newQuantity > 1 && !allowMultiActivations) {\n newQuantity = 1;\n }\n this.itemSelectionChanged.emit({ appId: appId, quantity: newQuantity });\n }\n\n onCheckboxChanged(\n event: MatCheckboxChange,\n { appId, currentQuantity, allowMultiActivations }: CheckboxClickEvent,\n ): void {\n this.analyticsService.trackEvent('clicked-product-checkbox', '', 'click');\n const checked = event.checked;\n currentQuantity = currentQuantity || 0;\n\n if (!checked) {\n this.itemSelectionChanged.emit({ appId: appId, quantity: 0 });\n } else {\n const selectedItem = {\n appId: appId,\n quantity: allowMultiActivations || currentQuantity === 0 ? currentQuantity + 1 : currentQuantity,\n editionId: this.currentlySelectedEdition?.editionId || null,\n };\n this.itemSelectionChanged.emit(selectedItem);\n }\n }\n\n onEditionSelectionChange($event: EditionChangeEvent): void {\n if ($event.currentQuantity > 0) {\n this.itemSelectionChanged.emit({\n appId: $event.appId,\n quantity: 1,\n editionId: $event.edition ? $event.edition.editionId : null,\n });\n }\n }\n}\n","\n
\n 0 || !appCanBeSelected\"\n [disabled]=\"!!(!appCanBeSelected || item.restrictedReason)\"\n type=\"checkbox\"\n (change)=\"\n onCheckboxChanged($event, {\n appId: item.appId,\n currentQuantity: quantity || 0,\n allowMultiActivations: item.allowMultipleActivations\n })\n \"\n >\n \n
\n
\n \n {{ item.name }}\n

\n
\n
\n

\n {{ item.name }}\n \n \n {{ edition.editionName }}\n \n \n

\n
\n \n {{ item.descriptor }}\n \n \n {{ 'APP_SELECTION.ACTIVATION_TABLE.CURRENTLY_PENDING' | translate }}\n \n \n {{ 'MANAGE_ACCOUNTS.ACTIVATION_HISTORY.CANCELED' | translate }}\n \n
\n
\n\n\n\n \n
\n \n
\n \n \n \n \n
\n\n\n \n
\n clear\n
\n \n
\n\n\n \n \n {{ item.restrictedReason }}\n \n\n","import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgClass, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\nimport { ActivatableItem, SelectedItem, SelectedItems, SortDirection } from '../../../../activation/core/interface';\nimport { ActivateAppTableService } from '../activate-app-table.service';\nimport { ActivatableRowComponent } from './activatable-row/activatable-row.component';\n\n@Component({\n standalone: true,\n imports: [\n AsyncPipe,\n CdkVirtualScrollViewport,\n MatIconModule,\n TranslateModule,\n NgClass,\n ActivatableRowComponent,\n CdkVirtualForOf,\n NgIf,\n CdkFixedSizeVirtualScroll,\n ],\n selector: 'app-activation-table',\n templateUrl: './activation-table.component.html',\n styleUrls: ['./activation-table.component.scss'],\n // This page is using OnPush change Detection do not remove\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ActivationTableComponent implements OnInit {\n private set nameSortOrder(sort: SortDirection) {\n this._nameSortOrder = sort;\n this.sortIndicator = sort === 'ASCENDING' ? 'arrow_upward' : 'arrow_downward';\n }\n\n private get nameSortOrder(): SortDirection {\n return this._nameSortOrder;\n }\n\n @Input() set activatableItems(value: ActivatableItem[]) {\n const flatItems = [];\n for (let i = 0; i < value.length; i++) {\n flatItems.push(value[i]);\n for (let j = 0; j < value[i].children.length; j++) {\n value[i].children[j].parentAppId = value[i].appId;\n flatItems.push(value[i].children[j]);\n }\n }\n this.flatItems = flatItems;\n this.scrollToTop();\n }\n\n @Input() hidePricing: boolean;\n @Input() removableItems?: boolean = false;\n @Input() features: any = [];\n\n @Output() sortChanged: EventEmitter = new EventEmitter();\n @Output() itemCheckboxClicked: EventEmitter = new EventEmitter();\n @Output() itemDeleteClicked: EventEmitter = new EventEmitter();\n\n flatItems: ActivatableItem[];\n\n sortIndicator = 'arrow_upward';\n selectedItems$: Observable;\n private _nameSortOrder: SortDirection = 'ASCENDING';\n partnerCurrency$: Observable;\n\n constructor(private tableService: ActivateAppTableService) {}\n\n ngOnInit(): void {\n this.selectedItems$ = this.tableService.selectedItems$.pipe(shareReplay(1));\n }\n\n private scrollToTop(): void {\n const scrollLocation = document.querySelector('#virtual-scroll-viewport');\n if (scrollLocation) {\n scrollLocation.scrollTo(0, 0);\n }\n }\n\n sortItems(): void {\n if (this.nameSortOrder === 'ASCENDING') {\n this.nameSortOrder = 'DESCENDING';\n } else {\n this.nameSortOrder = 'ASCENDING';\n }\n this.sortChanged.emit(this.nameSortOrder);\n }\n\n // Ensure we don't unnecessaryily re-render activatable items\n uniqueActivatableItem(index: number, activatableItem: ActivatableItem): string {\n const pricing = activatableItem.pricing;\n const lenString = `${pricing && pricing.prices ? pricing.prices.length : 0}`;\n return `${activatableItem.appId}${activatableItem.name}${lenString}`;\n }\n\n onItemSelectionChanged(selectedItem: SelectedItem): void {\n this.itemCheckboxClicked.emit(selectedItem);\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n {{ sortIndicator }}\n \n
\n
\n \n {{ 'APP_SELECTION.ACTIVATION_TABLE.PRODUCT_ADDON_NAME' | translate }}\n \n
\n
\n
\n
\n {{ 'COMMON.PRICING.QUANTITY' | translate }}\n
\n
\n
\n \n {{ 'COMMON.PRICING.WHOLESALE_PRICING' | translate }}\n \n
\n
\n
\n \n
\n
\n
\n","import { Injectable } from '@angular/core';\nimport { ActivatableItem } from '../../../activation/core/interface';\nimport { Activation } from '../../../core/account.service';\n\n@Injectable()\nexport class PaginatedAppActivationTableService {\n static expandActiveProducts([activatableItems, activations]: [ActivatableItem[], Activation[]]): ActivatableItem[] {\n // Helper to get all the accounts to add to the activatable items\n const expandActiveProductsHelper = function (\n items: ActivatableItem[],\n activatableItem: ActivatableItem,\n ): ActivatableItem[] {\n items.push(activatableItem);\n\n // Expand the activations into the activatableItems\n if (activatableItem.allowMultipleActivations) {\n items = items.concat(\n activations\n // Grab activations that correspond to the activatableItem\n .filter((activation) => activation.appId === activatableItem.appId)\n // Add the corresponding ActivatableItem with the activationDescriptor\n .map((account) => ({\n ...activatableItem,\n descriptor: account.activationDescriptor,\n isActiveAccount: true,\n })),\n );\n }\n\n return items;\n };\n\n return activatableItems.reduce(expandActiveProductsHelper, []);\n }\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { RouterLink } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { UIKitModule, VaSearchBoxModule } from '@vendasta/uikit';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { ActivatableItem, SelectedItem, SortDirection } from '../../../activation/core/interface';\nimport { ActivateAppTableService } from './activate-app-table.service';\nimport { ActivationTableComponent } from './app-activation-table';\nimport { PaginatedAppActivationTableService } from './paginated-app-activation-table.service';\n\n@Component({\n standalone: true,\n imports: [\n AsyncPipe,\n NgIf,\n VaSearchBoxModule,\n TranslateModule,\n ActivationTableComponent,\n MatPaginatorModule,\n UIKitModule,\n RouterLink,\n ],\n selector: 'app-paginated-app-activation-table',\n templateUrl: './paginated-app-activation-table.component.html',\n styleUrls: ['./paginated-app-activation-table.component.scss'],\n providers: [ActivateAppTableService],\n})\nexport class PaginatedAppActivationTableComponent implements OnInit {\n @Input() includeActiveAccounts: boolean;\n @Input() features: any = [];\n\n activatableItems$: Observable;\n totalItems$: Observable;\n hasUnavailableItems$: Observable;\n pageOptions$: Observable;\n showingRestrictedProducts$: Observable;\n hidePricing$: Observable;\n\n @ViewChild(MatPaginator) paginator: MatPaginator;\n\n constructor(private tableService: ActivateAppTableService) {}\n\n ngOnInit(): void {\n this.activatableItems$ = combineLatest([\n this.tableService.activatableItems$,\n this.tableService.activations$.pipe(startWith([])),\n ]).pipe(map(PaginatedAppActivationTableService.expandActiveProducts));\n\n this.totalItems$ = this.tableService.totalItems$;\n this.hasUnavailableItems$ = this.tableService.areItemsUnavailable$;\n this.pageOptions$ = this.tableService.pageOptions$;\n this.showingRestrictedProducts$ = this.tableService.showingRestrictedProducts$;\n }\n\n onProductPage(pageEvent: PageEvent): void {\n this.tableService.setPage(pageEvent);\n }\n\n onProductSearchTermChanged(term: string): void {\n this.tableService.setSearchTerm(term);\n // Fix for searching on a page other than the first page\n this.paginator.firstPage();\n }\n\n onProductSortOrderChanged(order: SortDirection): void {\n this.tableService.sortByName(order);\n }\n\n onItemSelected(selectedItem: SelectedItem): void {\n this.tableService.selectItem(selectedItem);\n }\n\n toggleRestrictedItems(): void {\n this.tableService.toggleShowingRestricted();\n }\n}\n","\n \n
\n 0; else noProducts\"\n [activatableItems]=\"activatableItems\"\n [hidePricing]=\"hidePricing$ | async\"\n [features]=\"features\"\n (sortChanged)=\"onProductSortOrderChanged($event)\"\n (itemCheckboxClicked)=\"onItemSelected($event)\"\n >\n
\n
\n \n
\n
\n\n\n \n\n\n

\n {{ 'APP_SELECTION.ACTIVATION_TABLE.NO_PRODUCTS' | translate }}\n \n {{ 'APP_SELECTION.ACTIVATION_TABLE.VIEW_AND_ENABLE_PRODUCTS' | translate }}\n \n

\n
\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Currency, Discount, DiscountType } from '@galaxy/billing';\nimport { formatDisplayPrice } from '@vendasta/shared';\nimport { formatDate, formatting } from './format-date.pipe';\n\n/*\n * Format a discount for display.\n *\n * Usage:\n * discount | formatDiscount\n * Examples:\n * {{ { amount: 100, discountType: 'FIXED_AMOUNT', start: '2019-12-12' } | formatDiscount: 'USD' }}\n * formats to: $1.00 off starting 2019-12-12\n *\n * {{ { amount: 15, discountType: 'PERCENT', start: '2019-08-01' end: '2019-09-01' } | formatDiscount: 'USD' }}\n * formats to: 15% off starting 2019-08-01 to 2019-09-01\n */\n@Pipe({ standalone: true, name: 'formatDiscount' })\nexport class FormatDiscountPipe implements PipeTransform {\n transform(discount: Discount, currency: Currency): string {\n if (!discount) {\n return 'N/A';\n }\n\n const amount = formatDiscountAmount(discount.amount, discount.discountType, currency);\n\n let off = 'off';\n switch (discount.discountType) {\n case DiscountType.FIXED_NUMBER_OF_UNITS: {\n off = 'free units';\n if (discount.resetEachPeriod) {\n off += ' per period';\n }\n break;\n }\n case DiscountType.FIXED_AMOUNT_PER_UNIT: {\n off = 'off each unit';\n break;\n }\n }\n\n const start = formatDate(discount.start, formatting.date, '', true);\n const dateRange =\n discount.end.valueOf() !== new Date('0001-01-01T00:00:00Z').valueOf()\n ? `${start} to ${formatDate(discount.end, formatting.date, '', true)}`\n : start;\n\n return `${amount} ${off} starting ${dateRange}`;\n }\n}\n\nfunction formatDiscountAmount(amount: number, rule: DiscountType, currency: Currency): string {\n if ([DiscountType.FIXED_AMOUNT, DiscountType.FIXED_AMOUNT_PER_UNIT].includes(rule)) {\n return formatDisplayPrice(amount, currency, null, true, false, true, false);\n } else if (rule === DiscountType.PERCENT_AMOUNT) {\n return amount.toString() + '%';\n }\n return amount.toString();\n}\n","import { AsyncPipe, NgClass, NgForOf, NgIf } from '@angular/common';\nimport { Component, Inject, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Discount, DiscountService, ListDiscountsRequestFiltersInterface } from '@galaxy/billing';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyPopoverModule } from '@vendasta/galaxy/popover';\nimport { EMPTY, Observable, of } from 'rxjs';\nimport { catchError, expand, publishReplay, reduce, refCount, switchMap } from 'rxjs/operators';\nimport { FormatDiscountPipe } from '../pipes/format-discount.pipe';\nimport { Pricing, PricingMessageContainer } from './interface';\nimport { getPricingMessageContainers } from './utils';\n\n@Component({\n standalone: true,\n imports: [NgIf, NgClass, NgForOf, MatIconModule, GalaxyPopoverModule, TranslateModule, AsyncPipe, FormatDiscountPipe],\n selector: 'app-activation-table-pricing',\n templateUrl: './table-pricing.component.html',\n styleUrls: ['./table-pricing.component.scss'],\n})\nexport class TablePricingComponent {\n containerLength = 0;\n _pricing: Pricing;\n\n pricingMessageContainers: PricingMessageContainer;\n isProratedToParent: boolean;\n showPricingPopover = false;\n discounts$: Observable;\n\n @Input() billingId: string;\n\n /* Only compute messages once whenever pricing is set.\n * A setter was chosen because it ensures the necessary computation only happens once.\n * If a function was used, it would be called on every change detection cycle unnecessarily.\n */\n @Input()\n set pricing(p: Pricing) {\n this._pricing = p;\n if (p) {\n this.isProratedToParent = p.isProratedToParent;\n }\n this.pricingMessageContainers = getPricingMessageContainers(p);\n this.containerLength = this.pricingMessageContainers?.pricingMessages\n ? this.pricingMessageContainers.pricingMessages.length\n : 0;\n }\n\n get pricing(): Pricing {\n return this._pricing;\n }\n\n constructor(\n @Inject('PARTNER_ID') readonly partnerId$: Observable,\n private discountService: DiscountService,\n ) {}\n\n private fetchAllDiscounts(pid: string, sku: string): Observable {\n const pageSize = 50;\n const filters: ListDiscountsRequestFiltersInterface = {\n merchantId: pid,\n expiry: new Date(),\n skus: [sku],\n };\n\n return this.discountService.list(filters, '', pageSize).pipe(\n expand((resp) => {\n if ((resp?.results || []).length >= pageSize) {\n return this.discountService.list(filters, resp.nextCursor, pageSize);\n } else {\n return EMPTY;\n }\n }),\n reduce((prev, curr) => {\n const discounts = curr?.results || [];\n return prev.concat(discounts);\n }, [] as Discount[]),\n );\n }\n\n private getDiscounts(): Observable {\n return this.partnerId$.pipe(\n switchMap((pid) => {\n return this.fetchAllDiscounts(pid, this.billingId);\n }),\n catchError(() => of([])),\n publishReplay(1),\n refCount(),\n );\n }\n\n itemInfoIconEnter(): void {\n if (this.discounts$ === undefined) {\n this.discounts$ = this.getDiscounts();\n }\n this.showPricingPopover = true;\n }\n\n itemInfoIconLeave(): void {\n this.showPricingPopover = false;\n }\n}\n","\n 0\">\n 1\n }\"\n *ngFor=\"let msg of data.pricingMessageContainers.pricingMessages; let i = index\"\n >\n 1 }\">\n {{ msg }}\n \n \n \n info_outline\n \n \n\n \n
\n
\n {{ 'TABLE_PRICING.WHOLESALE_PRICING_INFORMATION' | translate }}\n
\n
\n
\n {{ msg }}\n
\n
\n
\n
\n \n {{ 'TABLE_PRICING.ACTIVE_DISCOUNTS' | translate }}\n \n
\n
    \n
  • \n {{ disc | formatDiscount: _pricing?.currency }}\n
  • \n
\n
\n
\n \n \n
* {{ 'TABLE_PRICING.PRORATED' | translate }}
\n
\n 0\">\n
\n {{ commitment }}\n
\n
\n\n\n\n\n","import { InjectionToken } from '@angular/core';\n\nexport const VBC_HOST = new InjectionToken('VBC host for given environment');\n","import { FieldBase } from '@vendasta/store';\n\nexport enum OrderType {\n ADDON = 'ADDON',\n APPLICATION = 'APPLICATION',\n}\n\nexport interface Order {\n appId: string;\n parentAppId: string;\n businessId: string;\n name: string;\n type: OrderType;\n commonFields: FieldBase[];\n customFields: FieldBase[];\n usesOrderForm: boolean;\n editionId?: string;\n}\n\nexport interface ActivationResult {\n appId: string;\n editionId?: string;\n parentAppId?: string;\n name: string;\n businessId: string;\n isSuccess?: boolean;\n errorMessage?: string;\n error?: Error;\n}\n","import { ControlType, FieldBase } from '@vendasta/store';\nimport { getResellerItemUniqueId, isAddon } from '../../../core/reseller';\nimport { CommonFormSection, ResellerItemOrderForm } from '../../order-form-page';\nimport { ActivatableItem, SelectedItems } from '../interface';\nimport { Order, OrderType } from './interface';\n\nexport function combineArrays(arr1: T[], arr2: T[]): T[] {\n return (arr1 || []).concat(arr2 || []);\n}\n\nexport function convertActivatableItemsIntoOrders(\n businessId: string,\n activatableItems: ActivatableItem[],\n selectedItems: SelectedItems,\n): Order[] {\n if (\n !activatableItems ||\n activatableItems.length === 0 ||\n !selectedItems ||\n Array.from(selectedItems.keys()).length === 0\n ) {\n return [];\n }\n const selectedItemIds = Array.from(selectedItems.keys());\n const activatableItemMap = activatableItemArrayToMap(activatableItems);\n\n const orders = [];\n selectedItemIds.forEach((id) => {\n const quantity = selectedItems.get(id) ? selectedItems.get(id).quantity : 0;\n const activatableItem = activatableItemMap.get(id);\n if (!activatableItem || quantity <= 0) {\n return;\n }\n const order = {\n appId: activatableItem.appId,\n parentAppId: activatableItem.parentAppId,\n businessId: businessId,\n name: activatableItem.name,\n type: activatableItem.parentAppId ? 'ADDON' : 'APPLICATION',\n commonFields: [],\n customFields: [],\n usesOrderForm: activatableItem.usesOrderForm,\n } as Order;\n\n if (selectedItems.get(id) && selectedItems.get(id).quantity) {\n order.editionId = selectedItems.get(id).editionId;\n }\n\n orders.push(...duplicateItems(order, quantity));\n });\n return orders;\n}\n\nexport function convertResellerItemOrderFormToOrders(\n businessId: string,\n resellerItemOrders: ResellerItemOrderForm[],\n selectedItems: SelectedItems,\n): Order[] {\n const resellerItemOrdersById = groupResellerItemOrdersById(resellerItemOrders);\n if (!resellerItemOrdersById) {\n return [];\n }\n return Array.from(resellerItemOrdersById.entries())\n .map(([resellerItemId, resellerItems]) => {\n let quantity = 0;\n let editionId;\n if (selectedItems && selectedItems.get(resellerItemId)) {\n const selectedItem = selectedItems.get(resellerItemId);\n quantity = selectedItem.quantity;\n editionId = selectedItem.editionId;\n }\n return buildOrders(businessId, resellerItems, quantity, editionId);\n })\n .reduce((flatArray, arr) => {\n flatArray.push(...arr);\n return flatArray;\n }, [])\n .filter(Boolean);\n}\n\nfunction buildOrders(\n businessId: string,\n resellerOrders: ResellerItemOrderForm[],\n quantity: number,\n editionId?: string,\n): Order[] {\n if (quantity <= 0) {\n return [];\n }\n if (resellerOrders.length === 1 && quantity > 1) {\n // There is only a single order form for multiple addon activations\n return getOrderFromResellerItemsWithQuantity(businessId, resellerOrders[0], quantity, editionId);\n } else if (resellerOrders.length >= quantity) {\n // There is one order form per activation (multi-activate addon with multiple forms)\n return resellerOrders\n .map((resellerItem) => getOrderFromResellerItemsWithQuantity(businessId, resellerItem, 1, editionId))\n .filter(Boolean)\n .reduce((acc, curr) => {\n acc.push(...curr);\n return acc;\n }, []);\n } else {\n return [];\n }\n}\n\nexport function groupResellerItemOrdersById(\n resellerItemOrderForms: ResellerItemOrderForm[],\n): Map {\n return (resellerItemOrderForms || []).reduce((m, curr) => {\n const resellerItemId = getResellerItemUniqueId(curr);\n const currentArray = m.get(resellerItemId) || [];\n m.set(resellerItemId, currentArray.concat(curr));\n return m;\n }, new Map());\n}\n\nexport function getOrderFromResellerItem(\n businessId: string,\n resellerItemOrder: ResellerItemOrderForm,\n editionId?: string,\n): Order {\n if (!resellerItemOrder) {\n return undefined;\n }\n const commonFields = flattenCommonFormSectionFields(resellerItemOrder.commonFields || []);\n const customFields = resellerItemOrder.customFields || [];\n\n let parentAppId: string;\n let appId: string;\n if (isAddon(resellerItemOrder)) {\n appId = resellerItemOrder.addonId;\n parentAppId = resellerItemOrder.appId;\n } else {\n appId = resellerItemOrder.appId;\n }\n return {\n appId: appId,\n parentAppId: parentAppId,\n businessId: businessId,\n name: resellerItemOrder.name,\n type: isAddon(resellerItemOrder) ? OrderType.ADDON : OrderType.APPLICATION,\n commonFields: commonFields,\n customFields: customFields,\n usesOrderForm: resellerItemOrder.usesCustomizationForm || resellerItemOrder.usesActivationSpecificEntryUrl,\n editionId: editionId,\n };\n}\n\nexport function duplicateItems(item: T, quantity: number): T[] {\n if (quantity <= 0) {\n return [];\n }\n const items: T[] = [];\n for (let i = 0; i < quantity; i++) {\n items.push({ ...(item as any) });\n }\n return items;\n}\n\nexport function getOrderFromResellerItemsWithQuantity(\n businessId: string,\n resellerItemOrder: ResellerItemOrderForm,\n quantity: number,\n editionId?: string,\n): Order[] {\n if (!resellerItemOrder) {\n return [];\n }\n const order = getOrderFromResellerItem(businessId, resellerItemOrder, editionId);\n return duplicateItems(order, quantity);\n}\n\nfunction flattenCommonFormSectionFields(commonFormSections: CommonFormSection[]): FieldBase[] {\n if (!commonFormSections) {\n return [];\n }\n const commonFormFields: FieldBase[] = [];\n commonFormSections.forEach((section) => commonFormFields.push(...section.fields));\n return commonFormFields;\n}\n\ninterface OrderFormField {\n field_id: string;\n field_type: ControlType;\n answer: unknown;\n description: string;\n label: string;\n}\n\n// convert order into api map\nexport function convertOrderFormFields(orderFormFields: FieldBase[]): OrderFormField[] {\n if (!orderFormFields) {\n return [];\n }\n return orderFormFields.map((orderFormField) => {\n return {\n field_id: orderFormField.id,\n field_type: orderFormField.controlType,\n answer: orderFormField.value,\n description: orderFormField.description,\n label: orderFormField.label,\n };\n });\n}\n\nexport function activatableItemArrayToMap(activatableItems: ActivatableItem[]): Map {\n return (activatableItems || []).reduce((m, curr) => {\n m.set(curr.appId, curr);\n return m;\n }, new Map());\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { first, map, shareReplay, switchMap } from 'rxjs/operators';\nimport { VBC_HOST } from '../injection-tokens';\nimport { Order } from './interface';\nimport { convertOrderFormFields } from './utils';\n\n// Used to pluck the order form id from the api request\nconst ORDER_FORM_SUBMISSION_ID = 'orderFormSubmissionId';\n\n@Injectable()\nexport class ActivateAppApiService {\n private submitOrderFormUrl: string;\n\n constructor(\n @Inject(VBC_HOST) private vbcHost: string,\n @Inject('PARTNER_ID') private readonly partnerId$: Observable,\n private httpClient: HttpClient,\n ) {\n this.submitOrderFormUrl = `${this.vbcHost}/ajax/v1/orderFormSubmission/create/`;\n }\n\n createOrderForm(order: Order): Observable {\n return this.partnerId$.pipe(\n first(),\n switchMap((partnerId) => {\n const commonFields = convertOrderFormFields(order.commonFields || []);\n const customFields = convertOrderFormFields(order.customFields || []);\n const data = {\n partnerId: partnerId,\n accountGroupId: order.businessId,\n productId: order.appId,\n commonFields: commonFields,\n customFields: customFields,\n };\n return this.httpClient.post<{ data: { [ORDER_FORM_SUBMISSION_ID]: string } }>(this.submitOrderFormUrl, data, {\n withCredentials: true,\n });\n }),\n map((resp: { data: { [ORDER_FORM_SUBMISSION_ID]: string } }) => {\n return resp.data.orderFormSubmissionId;\n }),\n shareReplay(1),\n );\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Blame, BlameSource, OrderFulfillmentService, OrderItemParameters } from '@vendasta/order-fulfillment';\nimport { combineLatest, from, Observable, of, Subject } from 'rxjs';\nimport { catchError, last, map, mergeMap, scan, switchMap, take } from 'rxjs/operators';\nimport { AuthService, JWT } from '../../../core/auth/auth.service';\nimport { ActivateAppApiService } from './activate-app-api.service';\nimport { ActivationResult, Order } from './interface';\n\nexport interface OrderWithOrderFormSubmissionId {\n order: Order;\n submissionId: string;\n}\n\ninterface OrderWithActivationAndSubmissionIds {\n order: Order;\n submissionId: string;\n activationId: string;\n}\n\n@Injectable()\nexport class ActivateAppService {\n readonly errors$: Observable;\n readonly successes$: Observable;\n\n private errors$$: Subject = new Subject();\n private successes$$: Subject = new Subject();\n private blameSource$: Observable;\n constructor(\n private activateAppApiService: ActivateAppApiService,\n private orderFulfillmentService: OrderFulfillmentService,\n private authService: AuthService,\n @Inject('PARTNER_ID') private readonly partnerId$: Observable,\n ) {\n this.errors$ = this.errors$$.asObservable();\n this.successes$ = this.successes$$.asObservable();\n this.blameSource$ = this.authService.decodedAuthToken$.pipe(\n take(1),\n map((token: JWT) => {\n return token\n ? new Blame({\n source: BlameSource.BLAME_SOURCE_USER,\n sourceIdentifier: token ? token.sub : '',\n })\n : null;\n }),\n );\n }\n\n /**\n * Filters through a list of orders and transforms them into a list of orders with order form submission ids\n *\n * @param orders {Order[]} A list of orders\n * @return {Observable} An observable for a list of OrderWithOrderFormSubmissionId objects\n *\n */\n createArrayOfOrdersWithSubmissionId$(orders: Order[]): Observable {\n if (!orders || orders.length === 0) {\n throw Error('activateOrders calls with no orders');\n }\n\n const flatOrdersWithSubmissionId$ = from(orders).pipe(\n mergeMap((order) => {\n return this.submitOrderForm$(order).pipe(\n catchError((err) => {\n return of(\n this.convertErrorIntoActivationError(order.appId, order.businessId, order.name, err.message, err),\n );\n }),\n );\n }),\n );\n\n const arrayOfOrdersWithSubmissionIds$ = flatOrdersWithSubmissionId$.pipe(\n take(orders.length),\n scan((acc: OrderWithOrderFormSubmissionId[], curr: OrderWithOrderFormSubmissionId) => {\n acc.push(curr);\n return acc;\n }, []),\n last(),\n );\n\n return arrayOfOrdersWithSubmissionIds$;\n }\n\n /**\n * Activates apps using order fulfillment; only called when feature flag is set.\n *\n * @param orders {Order[]} A list of orders.\n *\n * @return {Observable} An observable of a string which contains the order id.\n */\n public activateOrderWithOrderFulfillment(orders: Order[]): Observable {\n const arrayOfOrdersWithSubmissionIds$ = this.createArrayOfOrdersWithSubmissionId$(orders);\n const orderItemParams$ = arrayOfOrdersWithSubmissionIds$.pipe(\n map((orderItems: OrderWithOrderFormSubmissionId[]) => {\n return orderItems\n .map((o) => {\n if (!o || !o.order) {\n return;\n }\n\n const { appId, businessId, editionId } = o.order;\n\n return {\n itemId: appId,\n orderFormSubmissionId: o.submissionId,\n businessId,\n editionId,\n } as OrderItemParameters;\n })\n .filter(Boolean);\n }),\n );\n\n return combineLatest([this.partnerId$, orderItemParams$]).pipe(\n take(1),\n switchMap(([pid, oip]) => this.createOrder(pid, oip)),\n );\n }\n\n /**\n * Activates apps using order fulfillment.\n *\n * @param partnerId - ID of the partner to create an order for.\n * @param orderItemParams - A list of order item parameters.\n *\n * @return {Observable} An observable of a string which contains the order id.\n */\n public createOrder(partnerId: string, orderItemParams: OrderItemParameters[]): Observable {\n return this.blameSource$.pipe(\n take(1),\n switchMap((blameSource) => {\n return this.orderFulfillmentService.createOrder(partnerId, orderItemParams, blameSource);\n }),\n );\n }\n\n /**\n * Submit the order form if the Order requires it.\n * If usesOrderForm is false, simply returns a result with no submission id\n * @param {Order} order\n * @returns {Observable}\n */\n private submitOrderForm$(order: Order): Observable {\n // Don't submit if the app doesn't use an order form\n if (!order.usesOrderForm) {\n return of({\n order: order,\n submissionId: '',\n });\n }\n\n return this.activateAppApiService.createOrderForm(order).pipe(\n map((submissionId) => {\n return {\n order: order,\n submissionId: submissionId,\n };\n }),\n );\n }\n\n private isActivationResult(result: ActivationResult): boolean {\n return (\n typeof result.isSuccess !== 'undefined' ||\n typeof result.error !== 'undefined' ||\n typeof result.errorMessage !== 'undefined'\n );\n }\n\n private convertOrderIntoActivationResult(\n order: OrderWithActivationAndSubmissionIds | ActivationResult,\n ): ActivationResult {\n if (this.isActivationResult(order as ActivationResult)) {\n return order as ActivationResult;\n }\n const o = (order as OrderWithActivationAndSubmissionIds).order;\n const result = {\n appId: o.appId,\n parentAppId: o.parentAppId,\n name: o.name,\n businessId: o.businessId,\n isSuccess: true,\n } as ActivationResult;\n if (o.editionId) {\n result.editionId = o.editionId;\n }\n return result;\n }\n\n private convertErrorIntoActivationError(\n appId: string,\n businessId: string,\n name: string,\n message: string,\n err: Error,\n ): ActivationResult {\n return {\n appId: appId,\n name: name,\n businessId: businessId,\n errorMessage: message,\n error: err,\n isSuccess: false,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DeclineReasons } from '@galaxy/billing';\nimport { AppType, MarketplaceAppService } from '@galaxy/marketplace-apps/v1';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Account, PendingActivation, PendingActivationStatus } from '@vendasta/accounts/legacy';\nimport { OrderFulfillmentService, OrderItem, OrderItemStatus, ValidationErrorCodes } from '@vendasta/order-fulfillment';\nimport { Cursor, PagedOrderItemsResponse } from '@vendasta/order-fulfillment/lib/order-fulfillment.service';\nimport { combineLatest, firstValueFrom, Observable, of } from 'rxjs';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\nimport { AccountService } from '../../core/account.service';\n\n/**\n * Describes the steps in the pending activation process.\n * Used as additional information for the general \"pending\" status.\n */\nexport enum PendingActivationStep {\n WAITING_ON_VENDOR = 0,\n VALIDATION_FAILED,\n CHARGE_FAILED,\n ACTIVATION_FAILED,\n}\n\n/**\n * The mapping of PendingActivationStep to the message to display to the user.\n */\nexport const PendingActivationStepMessages = {\n // Currently, we only show a special message when waiting on the vendor\n [PendingActivationStep.WAITING_ON_VENDOR]: 'Pending vendor approval',\n};\n\nexport interface PendingActivationDisplay {\n activationId: string;\n businessId: string;\n createdDate: Date;\n editionId?: string;\n itemId: string;\n orderFormSubmissionId: string;\n status: PendingActivationStatus;\n pendingActivationStep?: PendingActivationStep;\n updatedDate?: Date;\n rejectedReason?: string;\n orderId?: string;\n orderItemId?: string;\n appId?: string;\n addonId?: string;\n}\n\n// List containing all valid pending order item statuses\nconst OrderItemPendingStatuses: OrderItemStatus[] = [\n OrderItemStatus.ORDER_ITEM_STATUS_CREATED,\n OrderItemStatus.ORDER_ITEM_STATUS_CHARGED,\n OrderItemStatus.ORDER_ITEM_STATUS_CHARGE_SUCCESSFUL,\n OrderItemStatus.ORDER_ITEM_STATUS_PENDING_ACTIVATION,\n];\n\n// List containing all valid rejected order item statuses\nconst OrderItemRejectedStatuses: OrderItemStatus[] = [\n OrderItemStatus.ORDER_ITEM_STATUS_VALIDATION_FAILED,\n OrderItemStatus.ORDER_ITEM_STATUS_CHARGE_FAILED,\n];\n\n// Map of Order Item Statuses to user facing text\nconst RejectedOrderItemText: Map = new Map([\n [OrderItemStatus.ORDER_ITEM_STATUS_VALIDATION_FAILED, 'There was an error activating the product.'],\n [OrderItemStatus.ORDER_ITEM_STATUS_CHARGE_FAILED, 'There was an error charging for the product.'],\n]);\n\n// Map of Order Item Validation Error Codes to user facing text\nconst ValidationErrorOrderItemText: Map = new Map([\n [\n ValidationErrorCodes.VALIDATION_ERROR_CODES_INVALID_ENTRY_URL,\n 'ACCOUNTS.VALIDATION_ERROR_CODE_MESSAGES.INVALID_ENTRY_URL',\n ],\n [\n ValidationErrorCodes.VALIDATION_ERROR_CODES_ENTRY_URL_NOT_PROVIDED,\n 'ACCOUNTS.VALIDATION_ERROR_CODE_MESSAGES.URL_NOT_PROVIDED',\n ],\n [\n ValidationErrorCodes.VALIDATION_ERROR_CODES_INVALID_DEPENDENCY,\n 'ACCOUNTS.VALIDATION_ERROR_CODE_MESSAGES.INVALID_DEPENDENCY',\n ],\n [\n ValidationErrorCodes.VALIDATION_ERROR_CODES_ALREADY_ACTIVE,\n 'ACCOUNTS.VALIDATION_ERROR_CODE_MESSAGES.ALREADY_ACTIVE',\n ],\n [\n ValidationErrorCodes.VALIDATION_ERROR_CODES_NO_COUNTRY_INFORMATION,\n 'ACCOUNTS.VALIDATION_ERROR_CODE_MESSAGES.NO_COUNTRY_INFORMATION',\n ],\n [\n ValidationErrorCodes.VALIDATION_ERROR_CODES_UNSUPPORTED_COUNTRY,\n 'ACCOUNTS.VALIDATION_ERROR_CODE_MESSAGES.UNSUPPORTED_COUNTRY',\n ],\n [\n ValidationErrorCodes.VALIDATION_ERROR_CODES_APP_IS_SUSPENDED,\n 'ACCOUNTS.VALIDATION_ERROR_CODE_MESSAGES.APP_SUSPENDED',\n ],\n [\n ValidationErrorCodes.VALIDATION_ERROR_CODES_INVALID_EDITION,\n 'ACCOUNTS.VALIDATION_ERROR_CODE_MESSAGES.INVALID_EDITION',\n ],\n]);\n\n// List containing all valid Pending Activation Statuses\nconst PendingActivationStatuses: PendingActivationStatus[] = [\n PendingActivationStatus.PENDING,\n PendingActivationStatus.REJECTED,\n];\n\n// Default page size for fetching Order Items for business\nconst DEFAULT_PAGE_SIZE = 50;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PendingActivationsService {\n constructor(\n private accountService: AccountService,\n private orderFulfillmentService: OrderFulfillmentService,\n private translate: TranslateService,\n private marketplaceAppService: MarketplaceAppService,\n ) {}\n\n getPendingActivationsForBusiness(businessId: string): Observable {\n const pendingActivations$ = this.accountService.listPendingActivationsForBusiness(businessId).pipe(\n map((acts) => {\n return acts.filter(this.pendingActivationIsValid);\n }),\n );\n\n const pendingOrderItems$ = this.getOrderItemsForBusiness(businessId).pipe(\n map((orderItems: OrderItem[]) => {\n return orderItems.filter(this.orderItemIsValid);\n }),\n );\n\n // Remove duplicate entries.\n const filteredOrderItems$: Observable = combineLatest([pendingOrderItems$, pendingActivations$]).pipe(\n map(([orderItems, activations]) => {\n return orderItems.filter((oi) => {\n return !activations.some((act) => {\n const activation = act.addonId ? act.addonActivation : act.appActivation;\n return oi.activationId === act.activationId || oi.orderItemId === activation.billingOrderId;\n });\n });\n }),\n );\n\n // Blend results of order fulfillment service and accounts service together\n return combineLatest([pendingActivations$, filteredOrderItems$]).pipe(\n switchMap(async ([activations, orderItems]) => {\n const activationsDisplay = activations.map(this.convertPendingActivationToDisplay);\n const orderItemsDisplay = await Promise.all(\n orderItems.map(async (orderItem) => this.convertOrderItemToDisplay(orderItem)),\n );\n return [...activationsDisplay, ...orderItemsDisplay];\n }),\n map((displayActivations) => {\n return displayActivations.sort((a, b) => {\n return b.createdDate.getTime() - a.createdDate.getTime();\n });\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n /**\n * Get order items for a business, by calling to OrderFulfillmentService.\n *\n * @param businessId - ID of the business to get order items for.\n * @param [cursor] - Cursor of page to list\n * @param [prevOrderItems] - Size of page to list\n */\n private getOrderItemsForBusiness(\n businessId: string,\n cursor?: Cursor,\n prevOrderItems?: OrderItem[],\n ): Observable {\n return this.orderFulfillmentService.listOrderItemsForBusiness(businessId, cursor, DEFAULT_PAGE_SIZE).pipe(\n map((response: PagedOrderItemsResponse) => {\n let allOrderItems = prevOrderItems || [];\n\n const { orderItems, hasMore, nextCursor } = response;\n\n if (orderItems) {\n allOrderItems = allOrderItems.concat(orderItems);\n }\n\n return [allOrderItems, nextCursor, hasMore];\n }),\n switchMap(([allOrderItems, nextCursor, hasMore]: [OrderItem[], Cursor, boolean]) => {\n if (hasMore) {\n return this.getOrderItemsForBusiness(businessId, nextCursor, allOrderItems);\n } else {\n return of(allOrderItems);\n }\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n /**\n * Return the pendingActivations$ Observable.\n *\n * @return The combined OrderFulfillment and Accounts pending activations.\n */\n public getPendingActivations$(): Observable {\n return this.accountService.accountID$.pipe(\n switchMap((businessId: string) => {\n return this.getPendingActivationsForBusiness(businessId);\n }),\n );\n }\n\n /**\n * Convert a pending activation in Accounts to a PendingActivationDisplay item.\n *\n * @param item - Pending activation to convert.\n * @return The PendingActivationDisplay item with extracted details.\n */\n convertPendingActivationToDisplay = (item: PendingActivation): PendingActivationDisplay => {\n const {\n activationId,\n appId,\n addonId,\n appActivation,\n addonActivation,\n businessId,\n createdDate,\n updatedDate,\n status,\n rejectedReason,\n } = item;\n\n const isAddon = !!addonId;\n const activation = isAddon ? addonActivation : appActivation;\n const editionId = isAddon ? '' : (activation as Account).editionId;\n\n return {\n activationId,\n businessId,\n itemId: isAddon ? addonId : appId,\n editionId,\n orderFormSubmissionId: activation.orderFormSubmissionId,\n createdDate,\n updatedDate,\n status,\n pendingActivationStep: this.getPendingActivationPendingStep(item),\n rejectedReason,\n appId,\n addonId,\n };\n };\n\n /**\n * Convert a pending OrderFulfillment OrderItem to a PendingActivationDisplay item.\n *\n * @param item - Order Item to convert.\n * @return The PendingActivationDisplay item with extracted details.\n */\n convertOrderItemToDisplay = async (item: OrderItem): Promise => {\n const {\n activationId,\n businessId,\n itemId,\n editionId,\n orderFormSubmissionId,\n created,\n updated,\n status,\n orderId,\n orderItemId,\n validationErrorCodes,\n } = item;\n\n const isRejected = OrderItemRejectedStatuses.indexOf(status) > -1;\n const convertedStatus = isRejected ? PendingActivationStatus.REJECTED : PendingActivationStatus.PENDING;\n\n let rejectedReason;\n if (isRejected) {\n if (status === OrderItemStatus.ORDER_ITEM_STATUS_CHARGE_FAILED && item.chargeFailureCode) {\n rejectedReason = this.getChargeFailedReason(item.chargeFailureCode);\n } else {\n rejectedReason = validationErrorCodes\n ? this.getRejectionReasonFromValidationErrorCodes(validationErrorCodes)\n : RejectedOrderItemText.get(status);\n }\n }\n\n const app = await firstValueFrom(this.marketplaceAppService.getApp(itemId));\n const appId =\n app.type === AppType.APP_TYPE_APP || !app.type\n ? app.appId\n : app.restrictions?.appRequirement?.rules?.[0]?.appIds?.[0];\n const addonId = app.type === AppType.APP_TYPE_ADDON ? app.appId : null;\n\n return {\n activationId,\n businessId,\n createdDate: created,\n editionId,\n itemId,\n orderFormSubmissionId,\n rejectedReason,\n status: convertedStatus,\n pendingActivationStep: this.getOrderItemPendingStep(item),\n updatedDate: updated,\n orderId,\n orderItemId,\n appId,\n addonId,\n };\n };\n\n /**\n * Obtain rejection reasons from Order Item Validation Error codes\n *\n * @param validationErrorCodes - The validation error codes for an order item.\n * @return A string containing error code messages based on what codes are on a given order item.\n */\n getRejectionReasonFromValidationErrorCodes = (validationErrorCodes: ValidationErrorCodes[]): string => {\n const validationErrorText = validationErrorCodes\n .map((code) => {\n const untranslatedErrorText = ValidationErrorOrderItemText.get(code);\n return untranslatedErrorText ? this.translate.instant(untranslatedErrorText) : '';\n })\n .filter((errorText) => errorText);\n return validationErrorText && validationErrorText.length > 0\n ? validationErrorText.join('\\n\\n')\n : RejectedOrderItemText.get(OrderItemStatus.ORDER_ITEM_STATUS_VALIDATION_FAILED);\n };\n\n /**\n * Returns specific reason for stripe declining the charge for the activation.\n *\n * @param failureCode - the Code saved on the order item after the charge failed.\n */\n getChargeFailedReason(failureCode: string): string {\n return (\n DeclineReasons.get(failureCode)?.description ||\n RejectedOrderItemText.get(OrderItemStatus.ORDER_ITEM_STATUS_CHARGE_FAILED)\n );\n }\n\n /**\n * Returns the current PendingActivationStep given an order item\n * @param oi - the order item to get the step for\n */\n getOrderItemPendingStep(oi: OrderItem): PendingActivationStep {\n switch (oi.status) {\n case OrderItemStatus.ORDER_ITEM_STATUS_PENDING_ACTIVATION:\n return PendingActivationStep.WAITING_ON_VENDOR;\n case OrderItemStatus.ORDER_ITEM_STATUS_VALIDATION_FAILED:\n return PendingActivationStep.VALIDATION_FAILED;\n case OrderItemStatus.ORDER_ITEM_STATUS_CHARGE_FAILED:\n return PendingActivationStep.CHARGE_FAILED;\n case OrderItemStatus.ORDER_ITEM_STATUS_ACTIVATION_FAILED:\n return PendingActivationStep.ACTIVATION_FAILED;\n }\n }\n\n /**\n * Returns the current PendingActivationStep given a pending activation\n * @param pa - the pending activation to get the step for\n */\n getPendingActivationPendingStep(pa: PendingActivation): PendingActivationStep {\n switch (pa.status) {\n case PendingActivationStatus.PENDING:\n return PendingActivationStep.WAITING_ON_VENDOR;\n case PendingActivationStatus.REJECTED:\n return PendingActivationStep.ACTIVATION_FAILED;\n }\n }\n\n /**\n * Determine whether or not a pending activation is in a pending or rejected state, for display purposes.\n *\n * @param item - Pending activation to determine pending state.\n * @returns True if the pending activation is in a state that should be presented as pending.\n */\n pendingActivationIsValid(activation: PendingActivation): boolean {\n return PendingActivationStatuses.indexOf(activation.status) > -1;\n }\n\n /**\n * Determine whether or not an order item is in a pending or rejected state, for display purposes.\n *\n * @param item - Order item to determine pending state.\n * @returns True if the order item is in a state that should be presented as pending.\n */\n orderItemIsValid(item: OrderItem): boolean {\n return OrderItemPendingStatuses.indexOf(item.status) > -1 || OrderItemRejectedStatuses.indexOf(item.status) > -1;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { AccountGroupService, ProjectionFilter } from '@galaxy/account-group';\nimport { BillingService, ProductPricing } from '@galaxy/billing';\nimport { ItemWhitelabelService } from '@galaxy/inventory-ui';\nimport { AppPrices, AppPricingService } from '@galaxy/marketplace-apps';\nimport { EditionsService, MarketplaceAppService as MarketplaceAppsService } from '@galaxy/marketplace-apps/v1';\nimport { WhitelabelService } from '@galaxy/partner';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ListAppsAndAddonsActivationsStatusesForBusinessResponseAppsAndAddonsActivationStatusesInterface as ActivationStatusesInterface } from '@vendasta/accounts/legacy';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { PartnerAppEnablementStatusService } from '@vendasta/marketplace-packages';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { ResellerItem } from '@vendasta/store';\nimport { BehaviorSubject, combineLatest, EMPTY, merge, Observable, Subject } from 'rxjs';\nimport {\n catchError,\n distinctUntilChanged,\n filter,\n map,\n pluck,\n scan,\n shareReplay,\n skipWhile,\n startWith,\n switchMap,\n} from 'rxjs/operators';\nimport { ActivationServiceInterface } from '../../common/app-selection/paginated-app-activation-table/activation-service-interface';\nimport { AccountService, Activation } from '../../core/account.service';\nimport { PackageService } from '../../core/package.service';\nimport { ResellerItemService } from '../../core/reseller/reseller-item.service';\nimport { UniqueIdToItemIdAndQuantityMap } from '../order-form-page/interface';\nimport { ActivationParamService } from './activation-param.service';\nimport { ActivationPricingService } from './activation-pricing.service';\nimport { AppEditionService } from './app-edition.service';\nimport {\n ActivatableItem,\n ActivatableItemCount,\n ActivatablePackage,\n OrderFormType,\n ProductBoxItems,\n ProductEditionMap,\n QuantityEditionIdPair,\n SelectedItem,\n SelectedItemQueryParams,\n SelectedItems,\n} from './interface';\nimport { PendingActivationDisplay, PendingActivationsService } from './pending-activations.service';\nimport {\n addActivationToItems,\n assembleActivatablePackages,\n assembleActiveProducts,\n assembleAppCartItems,\n ClearEvent,\n convertExtractedQueryParamsToSelectedItems,\n convertResellerItemsToFlatActivatableItems,\n CurrentSelection,\n doItemsRequireOrderForm,\n extractIdsOfItemsUsingEditions,\n generateSelectedItemQueryParameters,\n mergeActivationsIntoProducts,\n nestActivatableItems,\n updateSelectedItems,\n} from './utils';\n\n@Injectable()\nexport class ActivationService implements ActivationServiceInterface {\n readonly activatableItems$: Observable;\n readonly activatableResellerItems$: Observable;\n readonly pricingMap$: Observable>;\n readonly appPriceMap$: Observable>;\n readonly accountGroupCountry$: Observable;\n readonly accountGroupId$: Observable;\n readonly partnerId$: Observable;\n readonly activeProducts$: Observable;\n readonly enabledPartnerFeatures$: Observable;\n readonly selectedItems$: Observable;\n readonly selectedItems$$ = new BehaviorSubject(new Map());\n readonly appCartItems$: Observable;\n readonly activatablePackages$: Observable;\n readonly unfilteredFlattenedActivatableItems$: Observable;\n readonly selectedItemsRequireOrderForm$: Observable;\n readonly appStatuses$: Observable;\n readonly accountGroupName$: Observable;\n readonly accountGroupMarketId$: Observable;\n readonly activations$: Observable;\n readonly selectedQueryParams$: Observable;\n private readonly pendingActivations$: Observable;\n\n readonly editionsMap$: Observable;\n\n private readonly itemSelectedEvents$$: Subject = new Subject();\n private readonly itemsAndQuantity$: Observable;\n private readonly clearSelectionEvent$$: Subject = new Subject();\n private readonly loadAppStatuses$$: Subject = new Subject();\n private readonly navigationSource$: Observable = this.paramService.navigationSource$;\n\n constructor(\n private resellerItemService: ResellerItemService,\n private activationPricingService: ActivationPricingService,\n private paramService: ActivationParamService,\n private whitelabelService: WhitelabelService,\n private accountService: AccountService,\n private packageService: PackageService,\n private accountGroupService: AccountGroupService,\n private editionService: AppEditionService,\n private pendingActivationsService: PendingActivationsService,\n private dialog: MatDialog,\n private billingService: BillingService,\n private marketplaceAppsService: MarketplaceAppsService,\n private editionsService: EditionsService,\n private appPricingService: AppPricingService,\n private enablementService: PartnerAppEnablementStatusService,\n private router: Router,\n private snackbarService: SnackbarService,\n private translateService: TranslateService,\n private itemWhitelabelService: ItemWhitelabelService,\n private analyticsService: ProductAnalyticsService,\n ) {\n this.activations$ = this.accountService.activations$;\n this.itemsAndQuantity$ = this.paramService.resellerItemQuantityMapFromUrl$;\n this.activatableResellerItems$ = this.resellerItemService\n .getActivatablePartnerDataWithoutSuspended()\n .pipe(distinctUntilChanged(), shareReplay(1));\n this.accountGroupId$ = this.paramService.accountGroupId$;\n this.partnerId$ = this.paramService.partnerId$;\n this.editionsMap$ = this.activatableResellerItems$.pipe(\n switchMap((ris) => {\n const ids = extractIdsOfItemsUsingEditions(ris);\n return this.editionService.getEditionsForApps(ids);\n }),\n shareReplay(1),\n );\n\n const partnerConfiguration$ = this.paramService.partnerId$.pipe(\n switchMap((partnerId) => this.whitelabelService.getConfiguration(partnerId, null)),\n shareReplay(1),\n );\n this.enabledPartnerFeatures$ = partnerConfiguration$.pipe(pluck('enabledFeatures'));\n\n this.pricingMap$ = this.activationPricingService.productPricingMap$;\n\n this.appPriceMap$ = this.activationPricingService.appPriceMap$;\n\n this.appStatuses$ = combineLatest([this.loadAppStatuses$$.pipe(startWith(undefined)), this.accountGroupId$]).pipe(\n switchMap(([_, accountId]) => this.accountService.getAppStatusesForBusiness(accountId)),\n shareReplay(1),\n );\n\n this.pendingActivations$ = this.pendingActivationsService.getPendingActivations$();\n\n const accountGroup$ = this.accountGroupId$.pipe(\n filter((a) => !!a),\n switchMap((agid) =>\n this.accountGroupService.get(\n agid,\n new ProjectionFilter({\n napData: true,\n accountGroupExternalIdentifiers: true,\n }),\n ),\n ),\n shareReplay(1),\n );\n const accountGroupNapData$ = accountGroup$.pipe(map((acc) => (acc ? acc.napData : undefined)));\n const accountGroupExternalIds$ = accountGroup$.pipe(map((acc) => (acc ? acc.externalIdentifiers : undefined)));\n\n this.accountGroupCountry$ = accountGroupNapData$.pipe(\n filter((nap) => !!nap),\n map((nap) => nap.country),\n );\n this.accountGroupName$ = accountGroupNapData$.pipe(\n filter((nap) => !!nap),\n map((nap) => nap.companyName),\n );\n this.accountGroupMarketId$ = accountGroupExternalIds$.pipe(\n filter((ids) => !!ids),\n map((ids) => ids.marketId || 'default'),\n );\n\n this.unfilteredFlattenedActivatableItems$ = combineLatest([\n this.activatableResellerItems$,\n this.pricingMap$,\n this.accountGroupCountry$,\n this.enabledPartnerFeatures$,\n this.appStatuses$,\n this.accountService.activations$.pipe(startWith([])),\n this.editionsMap$,\n this.pendingActivations$,\n this.appPriceMap$,\n this.activationPricingService.partnerCurrency$,\n ]).pipe(\n map(\n ([\n activatableResellerItems,\n pricingMap,\n country,\n enabledPartnerFeatures,\n appStatuses,\n activations,\n editionsMap,\n pendingActivations,\n appPriceMap,\n partnerCurrency,\n ]: [\n ResellerItem[],\n Map,\n string,\n string[],\n ActivationStatusesInterface[],\n Activation[],\n ProductEditionMap,\n PendingActivationDisplay[],\n Map,\n string,\n ]) => {\n const items = convertResellerItemsToFlatActivatableItems(\n activatableResellerItems,\n pricingMap,\n country,\n enabledPartnerFeatures,\n appStatuses,\n editionsMap,\n pendingActivations,\n appPriceMap,\n partnerCurrency,\n );\n return addActivationToItems(items, activations);\n },\n ),\n shareReplay(1),\n );\n\n this.activatableItems$ = this.unfilteredFlattenedActivatableItems$.pipe(\n map((items) => nestActivatableItems(items)),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n /*\n * Compute the selected items as a result from the url param selections, and further selections through user interaction\n */\n const startSelectedItems$ = this.itemsAndQuantity$.pipe(\n map((itemQuantityMap) => convertExtractedQueryParamsToSelectedItems(itemQuantityMap)),\n );\n const clearEvents$ = this.clearSelectionEvent$$.pipe(map(() => [{ clear: true }]));\n const selectionEvents$ = merge(startSelectedItems$, this.itemSelectedEvents$$);\n this.selectedItems$ = this.selectedItems$$.asObservable();\n\n const allSelections$ = merge(selectionEvents$, clearEvents$);\n const updatedSelectedItems$ = combineLatest([allSelections$, this.activatableItems$, this.appStatuses$]).pipe(\n map(\n ([events, items, status]: [\n SelectedItem[] | ClearEvent[],\n ActivatableItem[],\n ActivationStatusesInterface[],\n ]) => {\n // Convert an array of events into individual events\n return events.map((event) => {\n const currentSelection: CurrentSelection = {\n event: event,\n items: items,\n appStatus: status,\n };\n return currentSelection;\n });\n },\n ),\n scan(\n (selectedItems, selectionEvents) =>\n selectionEvents.reduce((sis, se) => updateSelectedItems(sis, se), selectedItems),\n new Map() as SelectedItems,\n ),\n startWith(new Map()),\n shareReplay(1),\n );\n\n updatedSelectedItems$.subscribe((selectedItems) => this.selectedItems$$.next(selectedItems));\n\n /*\n * Done computing selected items\n */\n\n this.selectedItemsRequireOrderForm$ = combineLatest([\n // Prevent navigating to the next page before selectedItems has been properly set to contain\n // the items specified in the url parameters.\n this.selectedItems$.pipe(skipWhile((items) => items.size === 0)),\n this.unfilteredFlattenedActivatableItems$,\n this.appStatuses$,\n ]).pipe(\n map(\n ([selectedItems, flatActivatableItems, appStatuses]: [\n SelectedItems,\n ActivatableItem[],\n ActivationStatusesInterface[],\n ]) => {\n const selectedItemIds = Array.from(selectedItems.keys());\n return doItemsRequireOrderForm(selectedItemIds, flatActivatableItems, appStatuses);\n },\n ),\n catchError((err) => {\n this.snackbarService.errorSnack(err.message);\n return EMPTY;\n }),\n );\n\n this.activeProducts$ = combineLatest([\n this.activatableResellerItems$.pipe(startWith([])),\n this.appStatuses$,\n this.accountService.activations$,\n this.editionsMap$,\n ]).pipe(\n map(([items, appStatuses, activations, editionMap]) => {\n const products = assembleActiveProducts(items, appStatuses);\n return mergeActivationsIntoProducts(activations, products, editionMap);\n }),\n shareReplay(1),\n );\n\n this.appCartItems$ = combineLatest([\n this.selectedItems$,\n this.unfilteredFlattenedActivatableItems$,\n this.editionsMap$,\n this.appStatuses$,\n this.activations$.pipe(startWith([])),\n ]).pipe(\n map(([selectedItems, activatableItems, editionsMap, appStatuses, activations]) => {\n const currentTime = new Date();\n return assembleAppCartItems(\n selectedItems,\n activatableItems,\n editionsMap,\n appStatuses,\n activations,\n currentTime,\n );\n }),\n shareReplay(1),\n );\n\n const packages$ = this.paramService.marketId$.pipe(\n filter((id) => !!id),\n distinctUntilChanged(),\n switchMap((marketId) => this.packageService.getPackagesForMarket$(marketId)),\n );\n\n this.activatablePackages$ = combineLatest([\n packages$,\n this.unfilteredFlattenedActivatableItems$,\n this.appStatuses$,\n this.activations$.pipe(startWith([])),\n ]).pipe(map((argumentsForAssemblePackages) => assembleActivatablePackages(...argumentsForAssemblePackages)));\n\n this.selectedQueryParams$ = combineLatest([\n this.unfilteredFlattenedActivatableItems$,\n this.selectedItems$,\n this.partnerId$,\n this.accountGroupId$,\n this.activeProducts$,\n this.paramService.navigationSource$,\n ]).pipe(\n map((argumentsForQueryParams) => generateSelectedItemQueryParameters(...argumentsForQueryParams)),\n shareReplay(1),\n );\n }\n\n selectItem(selectedItem: SelectedItem): void {\n this.itemSelectedEvents$$.next([selectedItem]);\n }\n\n selectItems(selectedItems: SelectedItem[]): void {\n this.itemSelectedEvents$$.next(selectedItems);\n }\n\n clearSelections(): void {\n this.clearSelectionEvent$$.next();\n this.loadAppStatuses$$.next();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationExtras, Router } from '@angular/router';\nimport { Order } from '@vendasta/sales-orders';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map, shareReplay, take } from 'rxjs/operators';\nimport { ActivationParamService } from './activation-param.service';\nimport { ActivationService } from './activation.service';\nimport { OrderFormType } from './interface';\n\nexport interface NavigationLink {\n url: string;\n navOptions?: NavigationExtras;\n windowNavigation?: boolean;\n}\n\nexport interface NavigationLinkMap {\n selection: NavigationLink;\n orderForm: NavigationLink;\n dynamicOrderForm: NavigationLink;\n confirmation: NavigationLink;\n manageAccounts: NavigationLink;\n accountDetails: NavigationLink;\n orderSubmitted: NavigationLink;\n}\n\ntype ActivationStep = 'selection' | 'dynamic-order-form' | 'order-form' | 'confirmation';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ActivationNavigationService {\n private readonly navigationMap$: Observable;\n\n constructor(\n private activationService: ActivationService,\n private router: Router,\n private paramService: ActivationParamService,\n ) {\n this.navigationMap$ = this.activationService.selectedQueryParams$.pipe(\n map((queryParams) => {\n const agid = queryParams.accountGroupId;\n return {\n selection: {\n url: `businesses/accounts/${agid}/activation`,\n navOptions: { queryParams },\n },\n orderForm: {\n url: `businesses/accounts/${agid}/activation/order-form`,\n navOptions: { queryParams },\n },\n dynamicOrderForm: {\n url: `businesses/accounts/${agid}/activation/dynamic-order-form`,\n navOptions: { queryParams },\n },\n confirmation: {\n url: `businesses/accounts/${agid}/activation/confirmation`,\n navOptions: { queryParams },\n },\n manageAccounts: { url: `/manage-accounts` },\n accountDetails: { url: `/businesses/accounts/${agid}/details` },\n orderSubmitted: {\n url: `/businesses/accounts/${agid}/order-submitted-page`,\n },\n };\n }),\n shareReplay(1),\n );\n }\n\n navigateToNextStep(fromStep: ActivationStep, order?: Order): void {\n combineLatest([\n this.navigationMap$,\n this.activationService.selectedItemsRequireOrderForm$,\n this.paramService.navigationSource$,\n ])\n .pipe(take(1))\n .subscribe(([navigationMap, itemsRequireOrderForm, navigationSource]) => {\n const navigationSelection = getNextNavigationStep(\n fromStep,\n itemsRequireOrderForm,\n navigationMap,\n navigationSource,\n order,\n );\n this.clearSelectionsIfFromStepIsConfirm(fromStep);\n this.navigateToSelection(navigationSelection);\n });\n }\n\n navigateToPreviousStep(fromStep: ActivationStep): void {\n combineLatest([\n this.navigationMap$,\n this.activationService.selectedItemsRequireOrderForm$,\n this.paramService.navigationSource$,\n ])\n .pipe(take(1))\n .subscribe(([navigationMap, itemsRequireOrderForm, navigationSource]) => {\n const navigationSelection = getPreviousNavigationStep(\n fromStep,\n navigationSource,\n navigationMap,\n itemsRequireOrderForm,\n );\n this.navigateToSelection(navigationSelection);\n });\n }\n\n clearSelectionsIfFromStepIsConfirm(fromStep: ActivationStep): void {\n if (fromStep === 'confirmation') {\n this.activationService.clearSelections();\n }\n }\n\n navigateToSelection(navigationSelection: NavigationLink): void {\n if (navigationSelection) {\n if (navigationSelection.windowNavigation) {\n window.location.href = navigationSelection.url;\n } else {\n this.router.navigate([navigationSelection.url], navigationSelection.navOptions);\n }\n }\n }\n}\n\nexport function getNextNavigationStep(\n fromStep: ActivationStep,\n itemsRequireOrderForm: OrderFormType,\n navigationMap: NavigationLinkMap,\n navigationSource: string,\n order?: Order,\n): NavigationLink {\n let navigationSelection: NavigationLink;\n switch (fromStep) {\n case 'selection':\n if (itemsRequireOrderForm === OrderFormType.DYNAMIC) {\n navigationSelection = navigationMap.dynamicOrderForm;\n } else if (itemsRequireOrderForm === OrderFormType.COMMON || itemsRequireOrderForm === OrderFormType.CUSTOM) {\n navigationSelection = navigationMap.orderForm;\n } else {\n navigationSelection = navigationMap.confirmation;\n }\n break;\n case 'dynamic-order-form':\n navigationSelection = navigationMap.orderForm;\n break;\n case 'order-form':\n navigationSelection = navigationMap.confirmation;\n break;\n case 'confirmation':\n if (navigationSource === 'account-create') {\n navigationSelection = navigationMap.manageAccounts;\n } else {\n if (order) {\n navigationSelection = navigationMap.orderSubmitted;\n navigationSelection.navOptions = {\n queryParams: { orderId: order.orderId, accountGroupId: order.businessId },\n };\n } else {\n navigationSelection = navigationMap.accountDetails;\n }\n }\n break;\n }\n return navigationSelection;\n}\n\nexport function getPreviousNavigationStep(\n fromStep: ActivationStep,\n navigationSource: string,\n navigationMap: NavigationLinkMap,\n itemsRequireOrderForm: OrderFormType,\n): NavigationLink {\n let navigationSelection: NavigationLink;\n switch (fromStep) {\n case 'selection':\n if (navigationSource === 'account-create') {\n navigationSelection = navigationMap.manageAccounts;\n } else {\n navigationSelection = navigationMap.accountDetails;\n }\n break;\n case 'dynamic-order-form':\n if (navigationSource === 'account-create') {\n // If we got to the order form from account-create, go back to manage accounts\n navigationSelection = navigationMap.manageAccounts;\n } else {\n navigationSelection = navigationMap.selection;\n }\n break;\n case 'order-form':\n if (navigationSource === 'account-create') {\n // If we got to the order form from account-create, go back to manage accounts\n navigationSelection = navigationMap.manageAccounts;\n } else if (itemsRequireOrderForm === OrderFormType.DYNAMIC) {\n navigationSelection = navigationMap.dynamicOrderForm;\n } else if (navigationSource === 'account-details-edit-resubmit') {\n navigationSelection = navigationMap.accountDetails;\n } else {\n navigationSelection = navigationMap.selection;\n }\n break;\n case 'confirmation':\n if (\n itemsRequireOrderForm === OrderFormType.COMMON ||\n itemsRequireOrderForm === OrderFormType.CUSTOM ||\n itemsRequireOrderForm === OrderFormType.DYNAMIC\n ) {\n navigationSelection = navigationMap.orderForm;\n } else if (navigationSource === 'account-create') {\n // If from account create, go back to manage account\n navigationSelection = navigationMap.manageAccounts;\n } else {\n navigationSelection = navigationMap.selection;\n }\n break;\n }\n return navigationSelection;\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { EnvironmentService } from '@galaxy/core';\nimport { googleTransferAppId } from '../../../marketplace-app/global-brands-constants';\n\nexport interface ActivationMessageDialogData {\n apps: {\n name: string;\n icon: string;\n appId: string;\n type: ActivationMessageSupportedApps;\n }[];\n}\n\nexport enum ActivationMessageSupportedApps {\n WORKSPACE = 1,\n OFFICE,\n}\n\n@Component({\n templateUrl: './activation-message-dialog.html',\n styleUrls: ['./activation-message-dialog.component.scss'],\n})\nexport class ActivationMessageDialogComponent implements OnInit {\n hasGoogleTransferApp = false;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: ActivationMessageDialogData,\n public dialogRef: MatDialogRef,\n private environmentService: EnvironmentService,\n ) {}\n\n ngOnInit(): void {\n const env = this.environmentService.getEnvironment();\n\n this.data.apps.map((app) => {\n if (app.appId === googleTransferAppId[env]) {\n this.hasGoogleTransferApp = true;\n }\n });\n }\n\n get activationMessageSupportedApps(): typeof ActivationMessageSupportedApps {\n return ActivationMessageSupportedApps;\n }\n}\n","
\n check_circle_outline\n
{{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_MESSAGE_DIALOG.TITLE' | translate }}
\n
\n\n
\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_MESSAGE_DIALOG.COMPLETE_SETUP' | translate }}\n
\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_MESSAGE_DIALOG.PRODUCTS_HAVE_IMPORTANT_INFO' | translate }}\n
\n
\n \n
\n \n
{{ app.name }}
\n
\n \n
\n
\n
\n \n
    \n
  • {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_MESSAGE_DIALOG.DOMAIN_VERIFICATION' | translate }}
  • \n
  • \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_MESSAGE_DIALOG.ACCESS_TO_MAP_GOOGLE_USER' | translate: {appName:\n 'COMMON.BUSINESS_APP' | translate} }}\n
  • \n
\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_MESSAGE_DIALOG.NEED_HELP_GOOGLE' | translate }}\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_MESSAGE_DIALOG.CONTACT_SUPPORT_AT' | translate }}\n 1-844-955-6650\n
\n
\n
\n \n \n
\n
\n

\n \n
    \n
  • {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_MESSAGE_DIALOG.DOMAIN_VERIFICATION' | translate }}
  • \n
  • \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_MESSAGE_DIALOG.ACCESS_TO_MAP_OFFICE_365_LICENSE' | translate }}\n
  • \n
\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_MESSAGE_DIALOG.NEED_HELP_OFFICE_365' | translate }}\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_MESSAGE_DIALOG.CONTACT_SUPPORT_AT' | translate }}\n 1-844-955-6650\n
\n
\n
\n
\n\n \n\n","import { Injectable } from '@angular/core';\nimport { Order } from '@vendasta/sales-orders';\nimport { CustomFieldsAnswer, CustomFieldsAnswers } from '@vendasta/store';\nimport { Observable, Subject } from 'rxjs';\nimport { first, map, startWith, switchMap } from 'rxjs/operators';\nimport { AccountService } from '../../core/account.service';\nimport { ResellerItemOrderForm } from '../order-form-page/';\nimport { ActivationParamService } from './activation-param.service';\n\ntype CacheableFieldType = 'addon' | 'app' | 'order';\n\n// The sole purpose of this service is to cache the order form submissions between the order form page and confirmation page\n@Injectable({ providedIn: 'root' })\nexport class ProductOrderFormStoreService {\n readonly cachedAppOrderForms$: Observable;\n readonly cachedAddonOrderForms$: Observable;\n\n readonly cachedOrder$: Observable;\n\n private accountGroupId$: Observable;\n private orderFormSaved$$: Subject = new Subject(); // used to refresh saved order form values.\n\n private dynamicOrderFormSaved$$: Subject = new Subject();\n\n constructor(\n private activationParamService: ActivationParamService,\n private accountService: AccountService,\n ) {\n this.accountGroupId$ = this.activationParamService.accountGroupId$;\n\n this.cachedAppOrderForms$ = this.savedOrderFormStream$('app');\n this.cachedAddonOrderForms$ = this.savedOrderFormStream$('addon');\n\n this.cachedOrder$ = this.savedOrderStream$('order');\n }\n\n static buildKeyForDynamicOrderForm(accountGroupId: string, appId: string): string {\n return `dynamic-${accountGroupId}-${appId}`;\n }\n\n cacheOrder(order: Order): void {\n this.saveOrder('order', order);\n }\n\n clearOrderCache(): void {\n this.accountGroupId$.pipe(first()).subscribe((accountGroupId) => {\n const key = this.buildKey(accountGroupId, 'order');\n window.sessionStorage.removeItem(key);\n this.orderFormSaved$$.next();\n });\n }\n\n // build a unique key for storage based on the account group id and the list of selected products.\n private buildKey(accountGroupId: string, type: CacheableFieldType): string {\n return `${accountGroupId}-${type}`;\n }\n\n // Return an order form stream calculated from the given type\n private savedOrderFormStream$(type: CacheableFieldType): Observable {\n return this.orderFormSaved$$.pipe(\n startWith(undefined), // ensure we get the initial value\n switchMap(() => this.accountGroupId$),\n map((accountGroupId) => {\n const key = this.buildKey(accountGroupId, type);\n const orderFormJson = window.sessionStorage.getItem(key);\n if (orderFormJson) {\n return JSON.parse(orderFormJson);\n }\n }),\n );\n }\n\n private saveOrder(type: CacheableFieldType, order: Order): void {\n this.accountService.accountID$.pipe(first()).subscribe((accountGroupId) => {\n const key = this.buildKey(accountGroupId, type);\n const orderJson = JSON.stringify(order);\n window.sessionStorage.setItem(key, orderJson);\n this.orderFormSaved$$.next();\n });\n }\n\n // Return an order form stream calculated from the given type\n private savedOrderStream$(type: CacheableFieldType): Observable {\n return this.orderFormSaved$$.pipe(\n startWith(undefined), // ensure we get the initial value\n switchMap(() => this.accountGroupId$),\n map((accountGroupId) => {\n const key = this.buildKey(accountGroupId, type);\n const orderJson = window.sessionStorage.getItem(key);\n if (orderJson) {\n return JSON.parse(orderJson);\n }\n }),\n );\n }\n\n // Caches the value set in a custom/dynamic order form workflow to be prefilled by the order form component, overwriting the previous value\n cacheDynamicOrderForm(appId: string, customFieldsAnswers: CustomFieldsAnswer[]): void {\n this.accountGroupId$.pipe(first()).subscribe((accountGroupId) => {\n const key = ProductOrderFormStoreService.buildKeyForDynamicOrderForm(accountGroupId, appId);\n window.sessionStorage.setItem(key, JSON.stringify(customFieldsAnswers));\n this.dynamicOrderFormSaved$$.next();\n });\n }\n\n // Gets the order form custom field info for a given product\n getDynamicOrderForm$(appId: string): Observable {\n return this.dynamicOrderFormSaved$$.pipe(\n startWith(undefined),\n switchMap(() => this.accountGroupId$),\n map((accountGroupId) => {\n const key = ProductOrderFormStoreService.buildKeyForDynamicOrderForm(accountGroupId, appId);\n const orderFormJson = window.sessionStorage.getItem(key);\n if (orderFormJson) {\n const fieldAnswer = JSON.parse(orderFormJson);\n return [\n {\n productID: appId,\n customFieldsAnswers: fieldAnswer,\n },\n ];\n }\n }),\n );\n }\n}\n","import { ProductPricing } from '@galaxy/billing';\nimport { Environment } from '@galaxy/core';\nimport { AppPrices } from '@galaxy/marketplace-apps';\nimport {\n AppAndAddonActivationStatus,\n ListAppsAndAddonsActivationsStatusesForBusinessResponseAppsAndAddonsActivationStatusesInterface as ActivationStatusesInterface,\n} from '@vendasta/accounts/legacy';\nimport { ResellerItem } from '@vendasta/store';\nimport { Activation } from '../../core/account.service';\nimport { ActivationResult, Order } from '../core/activate-app/interface';\nimport {\n activatableItemArrayToMap,\n combineArrays,\n convertActivatableItemsIntoOrders,\n convertResellerItemOrderFormToOrders,\n} from '../core/activate-app/utils';\nimport {\n ActivatableItem,\n AppIdToEditionIdToEditionMap,\n Edition,\n isValidEditionId,\n ProductEditionMap,\n QuantityEditionIdPair,\n SelectedItems,\n} from '../core/interface';\nimport { isAppActive } from '../core/utils';\nimport { ResellerItemOrderForm } from '../order-form-page';\nimport { ActivationError, OrderConfirmationItem } from './interface';\n\nexport function convertResellerItemsToSummaries(\n selectedItems: SelectedItems,\n resellerItemMap: Map,\n appPriceMap: Map,\n partnerCurrency: string,\n env: Environment,\n retailProductPricingMap: Map,\n marketCurrency: string,\n): OrderConfirmationItem[] {\n if (!selectedItems || !resellerItemMap) {\n return [];\n }\n return Array.from(selectedItems.keys()).reduce((acc, key) => {\n const quantityEditionPair = selectedItems.get(key);\n let quantity = 0;\n let editionId = null;\n if (quantityEditionPair) {\n quantity = quantityEditionPair.quantity;\n editionId = isValidEditionId(quantityEditionPair.editionId) ? quantityEditionPair.editionId : null;\n }\n\n const ri = resellerItemMap.get(key);\n if (!ri) {\n return acc;\n }\n\n const sku = editionId ? `${ri.billingId}:${editionId}` : ri.billingId;\n const productPricing = retailProductPricingMap ? retailProductPricingMap.get(sku) : undefined;\n const activationMessage = ri.orderForm ? ri.orderForm.activationMessage : undefined;\n\n const orderConfirmationItem = {\n name: ri.name,\n appId: ri.appId,\n addonId: ri.addonId,\n icon: ri.icon,\n quantity: quantity,\n activationMessage: activationMessage,\n requiresApproval: ri.activationRequiresApproval,\n editionId: editionId,\n tagline: ri.tagline,\n appPrices: appPriceMap.get(ri.addonId || ri.appId),\n partnerCurrency: partnerCurrency,\n retailTotal: (productPricing?.pricingRules[0]?.price ?? 0) * (quantity ?? 0),\n productPricing: productPricing,\n marketCurrency: marketCurrency,\n } as OrderConfirmationItem;\n\n acc.push(orderConfirmationItem);\n return acc;\n }, []);\n}\n\nexport function filterOutActiveSelectedItems(\n selectedItems: SelectedItems,\n appStatuses: ActivationStatusesInterface[],\n resellerItemMap: Map,\n activations: Activation[],\n): SelectedItems {\n return Array.from(selectedItems.keys()).reduce((m, appId) => {\n let isTrial = false;\n if (activations) {\n const activation = activations.find((act) => act.appId === appId);\n isTrial = activation && activation.trial;\n }\n const isActive = isAppActive(appId, appStatuses, isTrial);\n const allowMultiActivate = resellerItemMap.get(appId) && resellerItemMap.get(appId).allowMultipleActivations;\n if (!isActive || allowMultiActivate) {\n m.set(appId, selectedItems.get(appId));\n }\n return m;\n }, new Map() as SelectedItems);\n}\n\n/** Given a list of product names, will shorthand them\n * For example, if given ['app1', 'app2', 'app1'] will return ['app1 (2)', 'app2']\n * @param {string[]} names: array of string names\n * @returns {string[]}: shorthand names\n */\nexport function combineNames(names: string[]): string[] {\n const resultMap: Map = new Map();\n const outputNames: string[] = [];\n names.forEach((name) => {\n resultMap.set(name, (resultMap.get(name) || 0) + 1);\n });\n\n resultMap.forEach((num, name) => {\n const quantity = resultMap.get(name);\n const countString = num !== 1 ? `( ${quantity} )` : '';\n outputNames.push(`${name} ${countString}`);\n });\n return outputNames;\n}\n\nexport function getFailedActivationErrorMessage(failedActivations: ActivationResult[]): ActivationError | undefined {\n if (!failedActivations || failedActivations.length === 0) {\n return;\n }\n const failedActivationNames = failedActivations.map((a) => a.name);\n let errorMessage = '';\n failedActivations.forEach((a) => {\n if (a.errorMessage) {\n errorMessage = errorMessage ? `${errorMessage}\\n\\t${a.errorMessage}` : a.errorMessage;\n }\n });\n const itemNames = combineNames(failedActivationNames);\n return {\n appNames: itemNames,\n errorMessage: errorMessage,\n type: 'activationFailure',\n openFailureDialog: true,\n } as ActivationError;\n}\n\nexport function filterStringMap(m: Map, filterStrings: string[]): Map {\n if (!m) {\n return new Map();\n }\n return Array.from(m.entries()).reduce((thisMap, [id, value]) => {\n if (filterStrings.indexOf(id) < 0) {\n thisMap.set(id, value);\n return thisMap;\n }\n }, new Map());\n}\n\nexport function getAppsThatCantBeReactivated(\n appStatuses: ActivationStatusesInterface[],\n activatableItemMap: Map,\n): string[] {\n const activeStatues = [\n AppAndAddonActivationStatus.ACTIVATED,\n AppAndAddonActivationStatus.CANCELED,\n AppAndAddonActivationStatus.PENDING,\n ];\n return (appStatuses || []).reduce((arr, status) => {\n const alreadyActive = activeStatues.indexOf(status.status) >= 0;\n const activatableItem = activatableItemMap.get(status.appId);\n if (!activatableItem) {\n arr.push(status.appId);\n } else if (alreadyActive && !activatableItem.allowMultipleActivations && !activatableItem.isTrial) {\n arr.push(status.appId);\n }\n return arr;\n }, []);\n}\n\nexport function convertEverythingIntoOrders(\n businessId: string,\n appForms: ResellerItemOrderForm[],\n addonForms: ResellerItemOrderForm[],\n selectedItems: SelectedItems,\n activatableItems: ActivatableItem[],\n appStatuses: ActivationStatusesInterface[],\n): Order[] {\n const activatableItemMap = activatableItemArrayToMap(activatableItems);\n const appsThatCantBeReactivated = getAppsThatCantBeReactivated(appStatuses, activatableItemMap);\n const selectedItemsThatCanBeActivated = filterStringMap(selectedItems, appsThatCantBeReactivated);\n\n const allForms = combineArrays(appForms, addonForms);\n const ordersWithForms = convertResellerItemOrderFormToOrders(businessId, allForms, selectedItemsThatCanBeActivated);\n\n const ordersWithFormIds = (ordersWithForms || []).map((order) => order.appId);\n const filteredSelectedItems = filterStringMap(selectedItemsThatCanBeActivated, ordersWithFormIds);\n\n const ordersWithoutForms = convertActivatableItemsIntoOrders(businessId, activatableItems, filteredSelectedItems);\n return combineArrays(ordersWithForms, ordersWithoutForms);\n}\n\nexport function convertAppIdEditionsMapToEditionIdEditionMap(\n appIdEditionsMap: ProductEditionMap,\n): AppIdToEditionIdToEditionMap {\n const appIdToEditionIdToEditionMap = new Map>();\n if (!appIdEditionsMap) {\n return appIdToEditionIdToEditionMap;\n }\n appIdEditionsMap.forEach((editions, appId) => {\n const editionIdToEditionMap = new Map();\n editions.forEach((edition) => editionIdToEditionMap.set(edition.editionId, edition));\n appIdToEditionIdToEditionMap.set(appId, editionIdToEditionMap);\n });\n return appIdToEditionIdToEditionMap;\n}\n","import { Injectable } from '@angular/core';\nimport { BillingStrategy, ProductPricing } from '@galaxy/billing';\nimport { EnvironmentService } from '@galaxy/core';\nimport { ItemWhitelabelService } from '@galaxy/inventory-ui';\nimport { AppPrices } from '@galaxy/marketplace-apps';\nimport { ListAppsAndAddonsActivationsStatusesForBusinessResponseAppsAndAddonsActivationStatusesInterface as ActivationStatusesInterface } from '@vendasta/accounts/legacy';\nimport { Order as SalesOrder } from '@vendasta/sales-orders';\nimport { ResellerItem } from '@vendasta/store';\nimport { combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, switchMap, take } from 'rxjs/operators';\nimport { resellerArrayToMap } from '../../core/reseller/utils';\nimport { ActivationParamService } from '../core/activation-param.service';\nimport { ActivationPricingService } from '../core/activation-pricing.service';\nimport { ActivationService } from '../core/activation.service';\nimport { AppIdToEditionIdToEditionMap, SelectedItems } from '../core/interface';\nimport { ProductOrderFormStoreService } from '../core/product-order-form.store.service';\nimport { OrderConfirmationItem } from './interface';\nimport {\n convertAppIdEditionsMapToEditionIdEditionMap,\n convertResellerItemsToSummaries,\n filterOutActiveSelectedItems,\n} from './utils';\n\n@Injectable()\nexport class OrderConfirmationService {\n readonly orderConfirmationItems$: Observable;\n readonly hidePricing$: Observable;\n readonly productIsInstantBilledMap$: Observable>;\n readonly userCanEditBillingInfo$: Observable;\n readonly billingInfoConfigured$: Observable;\n readonly editionIdToEditionMap$: Observable;\n\n readonly retailProductPricingMap$: Observable>;\n readonly appPriceMap$: Observable>;\n readonly partnerCurrency$: Observable;\n readonly marketCurrency$: Observable;\n\n readonly salesOrder$: Observable;\n\n private selectedItems$: Observable;\n private resellerItemMap$: Observable>;\n private appStatus$: Observable;\n\n constructor(\n private activationService: ActivationService,\n private activationPricingService: ActivationPricingService,\n private activationParamsService: ActivationParamService,\n private productOrderFormService: ProductOrderFormStoreService,\n private environmentService: EnvironmentService,\n private itemWhitelabelService: ItemWhitelabelService,\n ) {\n this.hidePricing$ = this.activationPricingService.hidePricing$;\n this.userCanEditBillingInfo$ = this.activationPricingService.userCanEditBillingInfo$;\n this.billingInfoConfigured$ = this.activationPricingService.billingInfoConfigured$;\n this.salesOrder$ = this.productOrderFormService.cachedOrder$;\n this.appStatus$ = this.activationService.appStatuses$;\n this.retailProductPricingMap$ = this.activationPricingService.retailProductPricingMap$;\n this.appPriceMap$ = this.activationPricingService.appPriceMap$;\n this.partnerCurrency$ = this.activationPricingService.partnerCurrency$;\n this.marketCurrency$ = this.activationPricingService.marketCurrency$;\n\n this.resellerItemMap$ = this.activationService.activatableResellerItems$.pipe(\n map((resellerItems) => {\n return resellerArrayToMap(resellerItems);\n }),\n );\n\n this.selectedItems$ = combineLatest([\n this.activationService.selectedItems$,\n this.resellerItemMap$,\n this.appStatus$,\n this.activationService.activations$,\n ]).pipe(\n map(([selectedItems, resellerItemMap, appStatus, activations]) => {\n return filterOutActiveSelectedItems(selectedItems, appStatus, resellerItemMap, activations);\n }),\n distinctUntilChanged(),\n shareReplay(1),\n );\n\n this.productIsInstantBilledMap$ = combineLatest([\n this.resellerItemMap$,\n this.activationService.pricingMap$,\n this.selectedItems$,\n ]).pipe(\n map(([resellerItemMap, pricingMap, items]) => {\n return createProductBillingStrategyMap(items, pricingMap, resellerItemMap);\n }),\n distinctUntilChanged(),\n shareReplay(1),\n );\n\n const orderConfirmationItems$ = combineLatest([\n this.selectedItems$,\n this.resellerItemMap$,\n this.appPriceMap$,\n this.partnerCurrency$,\n this.retailProductPricingMap$,\n this.marketCurrency$,\n ]).pipe(\n map(([selectedItems, resellerItemMap, appPriceMap, partnerCurrency, productPricingMap, marketCurrency]) => {\n return convertResellerItemsToSummaries(\n selectedItems,\n resellerItemMap,\n appPriceMap,\n partnerCurrency,\n this.environmentService.getEnvironment(),\n productPricingMap,\n marketCurrency,\n );\n }),\n );\n this.orderConfirmationItems$ = combineLatest([\n orderConfirmationItems$,\n this.activationParamsService.marketId$,\n ]).pipe(\n take(1),\n switchMap(([orderItems, marketId]) => {\n return this.itemWhitelabelService.whitelabelItems$(orderItems, marketId);\n }),\n );\n\n this.editionIdToEditionMap$ = this.activationService.editionsMap$.pipe(\n map((edMap) => convertAppIdEditionsMapToEditionIdEditionMap(edMap)),\n );\n }\n\n setContractStartDate(startDate: Date): void {\n this.salesOrder$.pipe(take(1)).subscribe((order) => {\n this.productOrderFormService.cacheOrder({ ...order, requestedActivation: startDate } as SalesOrder);\n });\n }\n\n clearSalesOrderCache(): void {\n this.productOrderFormService.clearOrderCache();\n }\n}\n\nexport function createProductBillingStrategyMap(\n items: SelectedItems,\n pricingMap: Map,\n resellerItemMap: Map,\n): Map {\n if (!pricingMap || pricingMap.size <= 0 || !items || items.size <= 0) {\n return;\n }\n const keys = Array.from(items.keys());\n const productIsInstantBilledMap = new Map();\n keys.forEach((key) => {\n const resellerItem = resellerItemMap.get(key);\n if (resellerItem) {\n const productPricing = pricingMap.get(resellerItem.billingId);\n if (productPricing) {\n productIsInstantBilledMap.set(key, productPricing.strategy);\n }\n }\n });\n return productIsInstantBilledMap;\n}\n","import { Injectable } from '@angular/core';\nimport {\n BillingApiService,\n CanCreateSubscriptionsRequestInterface,\n ListProductSummariesRequestInterface,\n ProductSummary,\n SubscribeValidationStatus,\n ValidateResponseInterface,\n} from '@galaxy/billing';\nimport { getFrequencyValueForEdition } from '@vendasta/billing-ui';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { Pricing, TieredPrice } from '../../common/table-pricing/interface';\nimport { buildPricingString } from '../../common/table-pricing/utils';\nimport { PartnerService } from '../../core/partner.service';\nimport { ActivationService } from '../core/activation.service';\nimport { ActivatableItem } from '../core/interface';\nimport { OrderConfirmationItem } from './interface';\n\nexport interface FormattedTierPrice {\n tierRange: string;\n tierPrice: string;\n}\nexport interface OrderBreakdownItem {\n productName: string;\n pricing: Pricing;\n tierPricing: FormattedTierPrice[];\n activations: number;\n totalCost: number;\n orderItem: OrderConfirmationItem;\n frequency: string;\n}\n\nexport interface OrderSummary {\n orderItems: OrderBreakdownItem[];\n orderCostFrequency: Map;\n}\n\n@Injectable()\nexport class StairstepOrderService {\n private productSummaries$: Observable;\n private activatableItems$: Observable;\n private orderValidationResponse$: Observable;\n\n constructor(\n private activationService: ActivationService,\n private billingService: BillingApiService,\n private partnerService: PartnerService,\n ) {\n this.activatableItems$ = this.activationService.activatableItems$;\n\n const today = new Date();\n const startDate = new Date(today.getFullYear(), today.getMonth(), 1);\n const endDate = new Date(today.getFullYear(), today.getMonth() + 1, 0, 23, 59, 59);\n const pageSize = 1000;\n\n const productSummariesRequest: ListProductSummariesRequestInterface = {\n merchantId: this.partnerService.partnerId,\n startDate: startDate,\n endDate: endDate,\n pageSize: pageSize,\n };\n\n this.productSummaries$ = this.billingService\n .listProductSummaries(productSummariesRequest)\n .pipe(map((response) => response.results));\n }\n\n buildSubscriptionRequest(orderItems: OrderConfirmationItem[]): CanCreateSubscriptionsRequestInterface {\n const skuInput = {};\n orderItems\n .filter((orderItem) => orderItem.addonId === undefined || orderItem.addonId === null)\n .forEach((appItem) => {\n skuInput[this.buildProductSKU(appItem)] = appItem.quantity;\n });\n\n return {\n merchantId: this.partnerService.partnerId,\n skus: skuInput,\n };\n }\n\n orderRequiresBillingInfo(orderItems$: Observable): Observable {\n return orderItems$.pipe(\n switchMap((items) =>\n this.billingService.canCreateSubscriptions(this.buildSubscriptionRequest(items)).pipe(\n map((response) => {\n const stairStepStatus = SubscribeValidationStatus.SUBSCRIBE_VALIDATION_STATUS_WILL_CAUSE_FUTURE_CHARGES;\n const validResponses =\n response.validationResponse !== undefined\n ? response.validationResponse.filter(\n (validationResponse) => validationResponse.code.status === stairStepStatus,\n )\n : [];\n return validResponses.length > 0;\n }),\n ),\n ),\n );\n }\n\n getOrderBreakDown(orderItems: OrderConfirmationItem[]): Observable {\n const skuInput = {};\n orderItems\n .filter((orderItem) => orderItem.addonId === undefined || orderItem.addonId === null)\n .forEach((appItem) => {\n skuInput[this.buildProductSKU(appItem)] = appItem.quantity;\n });\n\n const subscriptionCheckRequest: CanCreateSubscriptionsRequestInterface = {\n merchantId: this.partnerService.partnerId,\n skus: skuInput,\n };\n\n this.orderValidationResponse$ = this.billingService\n .canCreateSubscriptions(subscriptionCheckRequest)\n .pipe(map((response) => response.validationResponse));\n\n return combineLatest([this.productSummaries$, this.activatableItems$, this.orderValidationResponse$]).pipe(\n map(([productSummaries, activatableItems, validationResponses]) => {\n return this.buildOrderBreakDownFromValidationResponse(\n orderItems,\n productSummaries,\n activatableItems,\n validationResponses,\n );\n }),\n );\n }\n\n buildOrderBreakDownFromValidationResponse(\n orderItems: OrderConfirmationItem[],\n productSummaries: ProductSummary[],\n activatableItems: ActivatableItem[],\n validationResponses: ValidateResponseInterface[],\n ): OrderSummary {\n const orderBreakDown: OrderBreakdownItem[] = [];\n const orderFreqTotals: Map = new Map([\n ['one_time', 0],\n ['monthly', 0],\n ['yearly', 0],\n ]);\n\n const stairStepStatus = SubscribeValidationStatus.SUBSCRIBE_VALIDATION_STATUS_WILL_CAUSE_FUTURE_CHARGES;\n if (validationResponses !== undefined && validationResponses.length > 0) {\n validationResponses\n .filter((validationResponse) => validationResponse.code.status === stairStepStatus)\n .forEach((validationResponse) => {\n const orderItem = orderItems.find((i) => this.buildProductSKU(i) === validationResponse.sku);\n const activatableItem = activatableItems.find(\n (i) => i.appId === this.buildAppIdFromSku(validationResponse.sku),\n );\n\n const productSku = this.buildProductSKU(orderItem);\n const productSummary = productSummaries.find((i) => i.sku === productSku);\n const tierPricing = this.getPricingForOrderItem(orderItem, activatableItem);\n\n const item = orderItem;\n const itemPricing = activatableItem.pricing;\n const itemTierPricing = this.buildTierPricing(tierPricing);\n const itemActivations = productSummary\n ? productSummary.totalQuantity + orderItem.quantity\n : orderItem.quantity;\n const itemTotalCost = this.getStepTierPriceForOrderItem(\n tierPricing.frequency,\n tierPricing.prices,\n productSummary,\n );\n\n if (itemTotalCost <= 0) {\n return;\n }\n\n orderFreqTotals.set(\n tierPricing.frequency.toLowerCase(),\n orderFreqTotals.get(tierPricing.frequency.toLowerCase()) + itemTotalCost,\n );\n\n const currentItem: OrderBreakdownItem = {\n productName: item.name,\n pricing: itemPricing,\n tierPricing: itemTierPricing,\n activations: itemActivations,\n totalCost: itemTotalCost,\n orderItem: item,\n frequency: getFrequencyValueForEdition(\n item.appPrices.pricesForContexts['wholesale'],\n item.partnerCurrency,\n item.editionId || '',\n ),\n };\n\n orderBreakDown.push(currentItem);\n });\n }\n return { orderItems: orderBreakDown, orderCostFrequency: orderFreqTotals };\n }\n\n buildProductSKU(orderItem: OrderConfirmationItem): string {\n let productSku = orderItem.appId;\n if (orderItem.editionId !== null && orderItem.editionId !== '') {\n productSku = productSku + ':' + orderItem.editionId;\n }\n\n return productSku;\n }\n\n getPricingForOrderItem(orderItem: OrderConfirmationItem, activatableItem: ActivatableItem): Pricing {\n let itemPricing: Pricing;\n\n if (!activatableItem.editionData.usesEditions) {\n return activatableItem.pricing;\n }\n\n const orderEdition = activatableItem.editionData.editions.filter((edition) => {\n const orderEditionId = orderItem.editionId === null ? '' : orderItem.editionId;\n return edition.editionId === orderEditionId;\n });\n if (orderEdition.length > 0) {\n itemPricing = orderEdition[0].pricing;\n }\n return itemPricing;\n }\n\n buildRangeString(min: number, max: number): string {\n const quantityMax = max && max >= 0 ? String(max) : '∞';\n const quantityMin = min && min >= 0 ? String(min) : '0';\n\n if (max && max < 0) {\n return `${quantityMin} and over`;\n }\n\n return `${quantityMin} to ${quantityMax}`;\n }\n\n buildTierPricing(pricing: Pricing): FormattedTierPrice[] {\n const tierPrices: FormattedTierPrice[] = [];\n\n pricing.prices.forEach((tier) => {\n const range = this.buildRangeString(tier.quantityMin, tier.quantityMax);\n const price = buildPricingString(tier, tier.price, pricing.currency, pricing.frequency);\n tierPrices.push({ tierRange: range, tierPrice: price });\n });\n\n return tierPrices;\n }\n\n getStepTierPriceForOrderItem(\n itemTierFrequency: string,\n itemTierPricing: TieredPrice[],\n productSummary: ProductSummary,\n ): number {\n if (\n !(productSummary === undefined || productSummary === null) &&\n !(productSummary.totalAmount === undefined || productSummary.totalAmount === null)\n ) {\n return productSummary.totalAmount;\n }\n\n let itemStepTierPrice = 0;\n const estimatedQuantity =\n productSummary === undefined ||\n productSummary === null ||\n productSummary.totalQuantity === undefined ||\n productSummary.totalQuantity === null\n ? 1\n : productSummary.totalQuantity + 1;\n\n if (itemTierPricing) {\n itemTierPricing.forEach((price) => {\n const computedMaxQuantity: number = price.quantityMax < 0 ? Number.MAX_SAFE_INTEGER : price.quantityMax;\n if (estimatedQuantity <= computedMaxQuantity && estimatedQuantity >= price.quantityMin) {\n itemStepTierPrice = price.price;\n }\n });\n }\n return itemStepTierPrice;\n }\n\n getOrderItemsCurrency(orderItems: OrderConfirmationItem[]): string {\n let result = '';\n if (orderItems.length > 0) {\n result = orderItems[0].partnerCurrency;\n while (result === null || result === undefined) {\n result = orderItems[0].partnerCurrency;\n }\n }\n return result;\n }\n\n buildAppIdFromSku(sku: string): string {\n return sku.split(':')[0];\n }\n}\n","import { InventoryItemWithPricing, ItemRowChangeEvent, UpdateLineItemFromItemRow } from '@galaxy/inventory-ui';\nimport { getPriceValueForEdition, setInstanceAppPrice } from '@vendasta/billing-ui';\nimport { Cost, LineItem, Order } from '@vendasta/sales-orders';\nimport { convertCentsToDollars } from '@vendasta/shared';\nimport { OrderConfirmationItem } from '../confirmation-page/interface';\n\nexport const CENTS_DOLLAR = 100;\nexport function getInitInputValue(order: Order, orderItem: OrderConfirmationItem): number {\n const appId = orderItem.addonId ? orderItem.addonId : orderItem.appId;\n let formFieldValue = convertCentsToDollars(\n getPriceValueForEdition(\n orderItem?.appPrices.pricesForContexts['wholesale'],\n orderItem?.partnerCurrency,\n orderItem?.editionId || '',\n true,\n ) || 0,\n );\n order.lineItems.forEach((lineItem) => {\n if (\n lineItem?.appKey?.appId === appId &&\n lineItem?.appKey?.editionId === orderItem.editionId &&\n lineItem?.cost?.customPrice\n ) {\n formFieldValue = lineItem.cost.customPrice / CENTS_DOLLAR;\n }\n });\n return formFieldValue;\n}\n\nexport function updateOrderCustomPrice(newValue: number, order: Order, orderItem: OrderConfirmationItem): void {\n order.lineItems.forEach((lineItem, i) => {\n if (matchLineItemWithOrderItem(lineItem, orderItem)) {\n lineItem.cost = new Cost({ customPrice: Math.round(Number(newValue) * CENTS_DOLLAR) });\n order.lineItems[i] = lineItem;\n let appPrice = orderItem.appPrices.pricesForContexts['wholesale'];\n appPrice = setInstanceAppPrice(\n appPrice,\n orderItem.partnerCurrency,\n newValue * CENTS_DOLLAR,\n orderItem.editionId || '',\n );\n orderItem.effectiveAppPrice = appPrice;\n }\n });\n}\n\nexport function updateOrderCustomPriceFromItem(order: Order, orderItem: OrderConfirmationItem): void {\n order.lineItems.forEach((lineItem, i) => {\n if (matchLineItemWithOrderItem(lineItem, orderItem)) {\n lineItem.cost = new Cost({\n customPrice: getPriceValueForEdition(\n orderItem.effectiveAppPrice || orderItem.appPrices.pricesForContexts['wholesale'],\n orderItem.partnerCurrency,\n orderItem.editionId || '',\n true,\n ),\n });\n order.lineItems[i] = lineItem;\n }\n });\n}\n\nexport function updateOrderCustomPricingFromItemRow(order: Order, event: ItemRowChangeEvent): void {\n if (event.action === 'update') {\n order.lineItems[event.item.index] = UpdateLineItemFromItemRow(order.lineItems[event.item.index], event.item);\n }\n}\n\nexport function updateOrderItemsWithCustomPrice(\n orderItems: OrderConfirmationItem[],\n order: Order,\n): OrderConfirmationItem[] {\n order?.lineItems?.forEach((lineItem) => {\n for (let i = 0; i < orderItems?.length; i++) {\n let appPrice = orderItems[i].appPrices.pricesForContexts['wholesale'];\n if (matchLineItemWithOrderItem(lineItem, orderItems[i]) && lineItem?.cost?.customPrice) {\n appPrice = setInstanceAppPrice(\n appPrice,\n orderItems[i].partnerCurrency,\n lineItem?.cost?.customPrice,\n orderItems[i].editionId || '',\n );\n orderItems[i].effectiveAppPrice = appPrice;\n }\n }\n });\n return orderItems;\n}\n\nexport function updatePricingTableItemsWithCustomPrice(\n items: InventoryItemWithPricing[],\n order: Order,\n): InventoryItemWithPricing[] {\n order?.lineItems?.forEach((lineItem) => {\n for (let i = 0; i < items?.length; i++) {\n if (matchLineItemWithBaseItem(lineItem, items[i])) {\n items[i].pricing = lineItem;\n }\n }\n });\n return items;\n}\n\nexport function matchLineItemWithBaseItem(lineItem: LineItem, item: InventoryItemWithPricing): boolean {\n const appId = item?.itemId || '';\n const editionId = item.type === 'app' ? item?.edition?.editionId || '' : '';\n const lineItemAppId = lineItem?.appKey?.appId || '';\n const lineItemEditionId = lineItem?.appKey?.editionId || '';\n return lineItemAppId === appId && lineItemEditionId === editionId;\n}\n\nexport function matchLineItemWithOrderItem(lineItem: LineItem, orderItem: OrderConfirmationItem): boolean {\n const appId = orderItem?.addonId || orderItem?.appId || '';\n const editionId = orderItem?.editionId || '';\n const lineItemAppId = lineItem?.appKey?.appId || '';\n const lineItemEditionId = lineItem?.appKey?.editionId || '';\n return lineItemAppId === appId && lineItemEditionId === editionId;\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { BrandingV2Interface, BrandingV2Service } from '@galaxy/partner';\nimport { OrderFulfillmentServiceInterface, OrderFulfillmentTableRow } from '@vendasta/orders';\nimport { DomainKeyValue, KeyValueTypes, SearchTaskRequestInterface, TaskSdkService } from '@vendasta/task';\nimport { TaskInterface } from '@vendasta/task/';\nimport { BehaviorSubject, forkJoin, Observable, of } from 'rxjs';\nimport { map, startWith, switchMap } from 'rxjs/operators';\nimport { PARTNER_ID_INJECTION_TOKEN } from '../../../core/constants';\nimport { OrderConfirmationItem } from '../interface';\n\nexport const VENDOR_TEMPLATE_TYPE = 'VendorTemplate';\nexport const PRODUCT_ID_METADATA_KEY = 'ProductId';\nexport const FULFILLING_PARTNER_ID_METADATA_KEY = 'FulfillingPartnerId';\n\n@Injectable()\nexport class FulfillmentOrderConfirmationService implements OrderFulfillmentServiceInterface {\n public readonly tableRows$: Observable;\n public readonly shouldShowOrderFulfillmentSection$: Observable;\n private orderItems$$: BehaviorSubject = new BehaviorSubject([]);\n\n constructor(\n private taskSdkService: TaskSdkService,\n @Inject(PARTNER_ID_INJECTION_TOKEN) private readonly partnerId$: Observable,\n private brandingService: BrandingV2Service,\n ) {\n this.tableRows$ = this.orderItems$$.pipe(\n startWith([]),\n switchMap((orderItems) => this.buildTableRows(orderItems)),\n );\n this.shouldShowOrderFulfillmentSection$ = this.tableRows$.pipe(map((tableRows) => Boolean(tableRows?.length > 0)));\n }\n\n /**\n * Determines the Fulfilling Partner Id from metadata. If it does not exist, uses the namespace to determine\n * @param template\n * @private\n */\n private static getFulfillingPartnerIdForTemplate(template: TaskInterface): string {\n let fulfillingPartnerId: string = DomainKeyValue?.fromKeyValue(template.metadata)\n ?.get(FULFILLING_PARTNER_ID_METADATA_KEY, KeyValueTypes.STRING)\n ?.toString();\n if (!fulfillingPartnerId) {\n fulfillingPartnerId = template.identity?.namespace?.split('/')[1] || '';\n }\n return fulfillingPartnerId;\n }\n\n setOrderItems(items: OrderConfirmationItem[]): void {\n this.orderItems$$.next(items);\n }\n\n private buildTableRows(items: OrderConfirmationItem[]): Observable {\n return this.fetchVendorTemplates(items).pipe(\n switchMap((vendorTemplates) => {\n if (vendorTemplates?.length > 0) {\n return this.fetchNamesForFulfillingPartners(vendorTemplates || []).pipe(\n switchMap((brandingMap) => {\n const appIdToNameMap: Map = new Map(\n items.map((item) => [item.appId, item.name]),\n );\n return this.convertVendorTemplateToOrderFulfillmentTableRow(vendorTemplates, brandingMap, appIdToNameMap);\n }),\n );\n }\n return of([]);\n }),\n );\n }\n\n private fetchVendorTemplates(items: OrderConfirmationItem[]): Observable {\n const productIds: string[] = items.map((item) => item.appId);\n const metadata: DomainKeyValue = new DomainKeyValue().set(\n PRODUCT_ID_METADATA_KEY,\n productIds,\n KeyValueTypes.STRING,\n );\n const request: SearchTaskRequestInterface = {\n types: [VENDOR_TEMPLATE_TYPE],\n cursor: '0',\n pageSize: 250,\n metadata: metadata.toKeyValue(),\n };\n return this.taskSdkService.search(request).pipe(map((resp) => resp.tasks));\n }\n\n private fetchNamesForFulfillingPartners(templates: TaskInterface[]): Observable> {\n const fulfillingPartnerIds: string[] =\n templates?.map((template) => FulfillmentOrderConfirmationService.getFulfillingPartnerIdForTemplate(template)) ||\n [];\n const uniqueFulfillingPartnerIds: string[] = Array.from(new Set(fulfillingPartnerIds))?.filter(Boolean);\n if (uniqueFulfillingPartnerIds?.length > 0) {\n return forkJoin(\n uniqueFulfillingPartnerIds.map((fulfillPartnerId) => this.brandingService.getBranding(fulfillPartnerId)),\n ).pipe(\n map((branding: BrandingV2Interface[]) => {\n const fulfillPartnerIdToPartnerNameMap: Map = new Map();\n for (let i = 0; i < uniqueFulfillingPartnerIds.length; i++) {\n fulfillPartnerIdToPartnerNameMap.set(uniqueFulfillingPartnerIds[i], branding[i]?.name || '');\n }\n return fulfillPartnerIdToPartnerNameMap;\n }),\n );\n }\n return of(new Map());\n }\n\n private convertVendorTemplateToOrderFulfillmentTableRow(\n vendorTemplates: TaskInterface[],\n brandingMap: Map,\n appIdToNameMap: Map,\n ): Observable {\n return this.partnerId$.pipe(\n map((currentPartnerId) => {\n return vendorTemplates?.map((template) => {\n const fulfillPartnerId: string =\n FulfillmentOrderConfirmationService.getFulfillingPartnerIdForTemplate(template);\n const productId: string = DomainKeyValue?.fromKeyValue(template.metadata)\n ?.get(PRODUCT_ID_METADATA_KEY, KeyValueTypes.STRING)\n ?.toString();\n return {\n template: template,\n serviceProviderName: brandingMap.get(fulfillPartnerId) || '',\n productName: appIdToNameMap.get(productId) || '',\n isCurrentPartner: fulfillPartnerId === currentPartnerId,\n } as OrderFulfillmentTableRow;\n });\n }),\n );\n }\n}\n","import { BillingStrategy } from '@galaxy/billing';\nimport { OrderConfirmationItem } from '../interface';\nimport { AppNameAndEditionNamePair } from './order-summary.component';\n\nexport function getBilledOrderItemsForStrategy(\n items: OrderConfirmationItem[],\n isInstantBilledMap: Map,\n billingStrategy: BillingStrategy,\n): OrderConfirmationItem[] {\n const instantBilledItems = [];\n if (!items || items.length === 0) {\n return [];\n }\n\n items.forEach((item) => {\n // Using the addonId for checking if the item is instant billed (rather than the parent app),\n // Falling back to the appId if there is no addonId\n if (billingStrategy === isInstantBilledMap.get(item.addonId || item.appId)) {\n instantBilledItems.push(item);\n }\n });\n return instantBilledItems;\n}\n\nexport function formatApprovalMessage(appAndEditionNames: AppNameAndEditionNamePair[]): string {\n if (!appAndEditionNames || appAndEditionNames.length === 0) {\n return '';\n }\n\n let s = '';\n appAndEditionNames.forEach((appAndEditionName) => {\n let names = `${appAndEditionName.appName}`;\n if (appAndEditionName.editionName) {\n names = `${names} ${appAndEditionName.editionName}`;\n }\n s = `${s} ${names}, `.trim();\n });\n s = s.substring(0, s.length - 1); // remove the last comma\n\n return s;\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { getPriceValueForEdition } from '@vendasta/billing-ui';\nimport { Observable } from 'rxjs';\nimport { OrderConfirmationItem } from '../interface';\nimport { OrderSummary, StairstepOrderService } from '../stairstep-order.service';\n\n@Component({\n selector: 'app-order-excess',\n templateUrl: './order-excess.component.html',\n styleUrls: ['./order-excess.component.scss'],\n})\nexport class OrderExcessComponent implements OnInit {\n orderSummary$: Observable;\n orderCurrency = '';\n\n @Input() orderConfirmationItems: OrderConfirmationItem[];\n\n constructor(private stairstepService: StairstepOrderService) {}\n\n ngOnInit(): void {\n // If the order items are free, don't bother checking stairstep prices\n const nonFreeOrderConfirmationItems = this.orderConfirmationItems.filter(\n (item) =>\n getPriceValueForEdition(\n item.appPrices.pricesForContexts['wholesale'],\n item.partnerCurrency,\n item.editionId || '',\n true,\n ) > 0,\n );\n this.orderSummary$ = this.stairstepService.getOrderBreakDown(nonFreeOrderConfirmationItems);\n this.orderCurrency = this.stairstepService.getOrderItemsCurrency(nonFreeOrderConfirmationItems);\n }\n}\n","
\n
0\">\n
\n
\n \n 1; else oneProduct\">\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_EXCESS.ACTIVATING_THIS_PRODUCT' | translate }}\n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_EXCESS.ACTIVATING_THESE_PRODUCTS' | translate }}\n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_EXCESS.WILL_PLACE_YOU_OVER_LIMIT' | translate }}\n \n
\n
\n
\n {{ 'COMMON.PRODUCT' | translate }}\n
\n
\n {{ 'COMMON.PRICING.WHOLESALE_COST' | translate }}\n
\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_EXCESS.NUM_PRODUCTS' | translate }}\n
\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_EXCESS.TOTAL_COST' | translate }}\n
\n
\n
\n
{{ purchase.productName }}
\n
\n
\n
{{ tier.tierRange }}
\n
{{ tier.tierPrice }}
\n
\n
\n
{{ purchase.activations }}
\n
\n
\n \n {{ 'COMMON.PRICING.STARTING_AT' | translate }}\n \n \n \n {{ purchase.totalCost | price: purchase.orderItem.purchaseCost.currency }}\n {{ purchase.frequency | titlecase }}\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
0\">\n
\n \n {{ freqPrice.value | price: $any(orderCurrency) }}\n \n {{ freqPrice.key | titlecase }}\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl, Validators } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport moment from 'moment';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AddUserDialogComponent, UserAction } from '../../../accounts/add-user-dialog.component';\nimport { User } from '../../../core/user';\n\nexport function setDateOnDateTime(current: Date, newDate: Date): Date {\n if (!current || !newDate) {\n return current || newDate || null;\n }\n newDate.setHours(current.getHours(), current.getMinutes(), current.getSeconds(), current.getMilliseconds());\n return newDate;\n}\n\nexport function setTimeOnDateTime(current: Date, newTime: string): Date {\n if (!current || !newTime) {\n return current || null;\n }\n const newDate = moment(\n `${current.getFullYear()}-${current.getMonth() + 1}-${current.getDate()}T${newTime}`,\n 'YYYY-MM-DDTHH:mm A',\n ).toDate();\n if (isNaN(newDate.getTime())) {\n return current;\n }\n return newDate;\n}\n\n@Component({\n selector: 'app-collect-payment',\n templateUrl: './collect-payment.component.html',\n styleUrls: ['./collect-payment.component.scss', '../order-summary/order-summary.component.scss'],\n})\nexport class CollectPaymentComponent implements OnInit, OnDestroy {\n @Input() requireApproval = false;\n @Output() requireApprovalChange: EventEmitter = new EventEmitter();\n\n @Input() users: User[];\n\n @Input() subjectId!: string;\n @Output() subjectIdChange: EventEmitter = new EventEmitter();\n\n @Input() hasExpiryDate!: boolean;\n @Output() hasExpiryDateChange: EventEmitter = new EventEmitter();\n\n @Input() expiryDate: Date;\n @Output() expiryDateChange: EventEmitter = new EventEmitter();\n\n @Input() accountGroupId: string;\n @Input() partnerId: string;\n\n private selectedUserId$$ = new BehaviorSubject('');\n selectedUserId$ = this.selectedUserId$$.asObservable();\n\n private destroyed$: ReplaySubject = new ReplaySubject(1);\n minDate = new Date();\n expiryTimeControl = new UntypedFormControl('', [Validators.required]);\n\n constructor(\n private readonly analyticsService: ProductAnalyticsService,\n public dialog: MatDialog,\n ) {}\n\n ngOnInit(): void {\n this.expiryTimeControl.setValue(this.expiryDate ? moment(this.expiryDate).format('HH:mm') : '17:00');\n this.expiryTimeControl.valueChanges\n .pipe(takeUntil(this.destroyed$))\n .subscribe((value) => this.handleExpiryTimeChange(value));\n\n this.selectedUserId$$.next(this.subjectId);\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n handleExpiryDateChange(date: Date): void {\n this.expiryDateChange.emit(setDateOnDateTime(this.expiryDate, new Date(date)));\n }\n\n handleExpiryTimeChange(time: string): void {\n this.expiryDateChange.emit(setTimeOnDateTime(this.expiryDate, time));\n }\n\n trackToggle(e): void {\n this.analyticsService.trackToggle('clicked-collect-order-payment', e.value);\n }\n\n preventBlur(e: Event): void {\n e.stopPropagation();\n e.preventDefault();\n }\n\n presentAddUsersDialog(): void {\n const dialogRef = this.dialog.open(AddUserDialogComponent, {\n width: '620px',\n });\n dialogRef.componentInstance.accountGroupId = this.accountGroupId;\n dialogRef.componentInstance.partnerId = this.partnerId;\n dialogRef.componentInstance.existingUsers = this.users;\n dialogRef.componentInstance.showCreateTab = true;\n dialogRef.afterClosed().subscribe((result) => {\n if (result?.action === UserAction.CREATE || result?.action === UserAction.ADD) {\n if (result?.users?.length === 0) {\n return;\n }\n const userId = result.users[0].userId;\n this.selectedUserId$$.next(userId);\n this.subjectIdChange.emit(userId);\n }\n });\n }\n}\n","\n
\n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.COLLECT_PAYMENT.DONT_NEED_TO_COLLECT' | translate }}\n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.COLLECT_PAYMENT.SEND_ORDER_TO_CUSTOMER' | translate }}\n \n
\n
\n
\n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.COLLECT_PAYMENT.SELECT_USER' | translate }}\n \n \n \n add\n {{ 'ACTIVATION.CONFIRMATION_PAGE.COLLECT_PAYMENT.ADD_USERS' | translate }}\n \n \n {{ user | userDisplayName }}\n \n \n \n
\n
\n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.COLLECT_PAYMENT.ADD_EXPIRY_DATE' | translate }}\n \n
\n \n
\n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.COLLECT_PAYMENT.SELECT_DATE' | translate }}\n \n \n \n \n \n
\n
\n \n
\n
\n \n
\n {{\n 'ACTIVATION.CONFIRMATION_PAGE.COLLECT_PAYMENT.EXPIRY_NOTICE'\n | translate\n : {\n name: user.name || user.email,\n date: expiryDate | date: 'MMMM d, yyyy',\n time: expiryDate | date: 'h:mm a'\n }\n }}\n
\n
\n
\n
\n
\n \n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.COLLECT_PAYMENT.DONT_NEED_TO_COLLECT_NOTICE' | translate }}\n
\n
\n\n\n
\n
\n
\n","import {\n Component,\n computed,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n signal,\n Signal,\n SimpleChanges,\n WritableSignal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { BillingStrategy, CreditBalance, CreditService, RetailCustomerConfiguration } from '@galaxy/billing';\nimport {\n InventoryItemWithPricing,\n LineItem as InventoryLineItem,\n LineItemCacheService,\n ItemRowChangeEvent,\n} from '@galaxy/inventory-ui';\nimport { getPriceValueForEdition } from '@vendasta/billing-ui';\nimport { OrderFulfillmentServiceInterfaceToken } from '@vendasta/orders';\nimport { Order, LineItem as OrderLineItem } from '@vendasta/sales-orders';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map, shareReplay, skipWhile, switchMap, take } from 'rxjs/operators';\nimport { AccountService } from '../../../core/account.service';\nimport { User } from '../../../core/user';\nimport { PreviewEmailDialogComponent } from '../../../preview-email-dialog/preview-email-dialog.component';\nimport { VConfigService } from '../../../vconfig/vconfig.service';\nimport { AppIdToEditionIdToEditionMap, isValidEditionId } from '../../core/interface';\nimport { ProductOrderFormStoreService } from '../../core/product-order-form.store.service';\nimport {\n updateOrderCustomPriceFromItem,\n updateOrderCustomPricingFromItemRow,\n updatePricingTableItemsWithCustomPrice,\n} from '../../order-form-page/custom-price.util';\nimport { OrderConfirmationItem } from '../interface';\nimport { FulfillmentOrderConfirmationService } from './fulfillment-order-confirmation.service';\nimport { formatApprovalMessage, getBilledOrderItemsForStrategy } from './order-summary.helper';\n\nconst emailSmbsProductActivatedKey = 'email_smbs_product_activated';\n\nexport interface OrderSubmission {\n order: Order;\n sendEmail: boolean;\n}\n\nexport interface AppNameAndEditionNamePair {\n appName: string;\n editionName?: string;\n}\n\n@Component({\n selector: 'app-order-summary',\n templateUrl: './order-summary.component.html',\n styleUrls: ['./order-summary.component.scss'],\n providers: [\n FulfillmentOrderConfirmationService,\n {\n provide: OrderFulfillmentServiceInterfaceToken,\n useExisting: FulfillmentOrderConfirmationService,\n },\n ],\n})\nexport class OrderSummaryComponent implements OnInit, OnChanges {\n private readonly cachedSalesOrder: Signal;\n private readonly cachedInventoryLineItems: WritableSignal;\n readonly editableOrder: WritableSignal;\n readonly pricingTableItems: Signal;\n\n @Input()\n set orderConfirmationItems(orderItems: OrderConfirmationItem[]) {\n orderItems = orderItems || [];\n const appNamesThatRequireApproval = this.assembleAppNamesForAppsThatRequireApproval(orderItems);\n this.approvalMessageCount = appNamesThatRequireApproval.length;\n this.orderContainsItemsThatAreNotFree = orderItems.some(\n (item) =>\n item.appPrices &&\n getPriceValueForEdition(\n item.appPrices.pricesForContexts['wholesale'],\n item.partnerCurrency,\n item.editionId || '',\n true,\n ) > 0,\n );\n this.approvalMessage = formatApprovalMessage(appNamesThatRequireApproval);\n this.orderItems = orderItems;\n\n const instantBilledOrderItems = getBilledOrderItemsForStrategy(\n this.orderItems,\n this.productIsInstantBilledMap,\n BillingStrategy.Instantly,\n );\n this.instantActivationItemSummaries = this.buildActivationItemSummaries(instantBilledOrderItems, this.editionsMap);\n const nonInstantBilledOrderItems = this.orderItems.filter(\n (item) => !instantBilledOrderItems.find((i) => i.appId === item.appId && i.addonId === item.addonId),\n );\n this.activationItemSummaries = this.buildActivationItemSummaries(nonInstantBilledOrderItems, this.editionsMap);\n this.fulfillmentOrderConfirmationService.setOrderItems(\n Array.from(new Set([...this.instantActivationItemSummaries, ...this.activationItemSummaries])),\n );\n this.allActivationSummaries = this.buildActivationItemSummaries(orderItems, this.editionsMap);\n }\n\n @Input() retailCustomerConfiguration!: RetailCustomerConfiguration;\n @Input() productIsInstantBilledMap: Map;\n @Input() userCanEditBillingInfo: boolean;\n @Input() stairStepOrderRequiresBilling: boolean;\n @Input() partnerId: string;\n @Input() billingInfoConfigured: boolean;\n @Input() submitDisabled: boolean;\n @Input() accountGroupId: string;\n @Input() hidePricing: boolean;\n @Input() editionsMap: AppIdToEditionIdToEditionMap;\n @Input() billingAutomationEnabled: boolean;\n\n @Output() submitClicked: EventEmitter = new EventEmitter();\n @Output() goBackClicked: EventEmitter = new EventEmitter();\n\n @Input() requireApproval!: boolean;\n @Output() requireApprovalChange: EventEmitter = new EventEmitter();\n\n @Input() approvalFromSubjectId: string;\n @Output() approvalFromSubjectIdChange: EventEmitter = new EventEmitter();\n\n @Input() hasExpiryDate!: boolean;\n @Output() hasExpiryDateChange: EventEmitter = new EventEmitter();\n\n @Input() expiryDate: Date;\n @Output() expiryDateChange: EventEmitter = new EventEmitter();\n\n @Input() contractStartDate: Date;\n @Input() marketCurrency: string;\n @Output() contractStartDateChange: EventEmitter = new EventEmitter();\n\n get activatingProductDisabled(): boolean {\n return (\n (!this.billingInfoConfigured &&\n this.instantActivationItemSummaries.length > 0 &&\n this.orderContainsItemsThatAreNotFree) ||\n (!this.billingInfoConfigured && this.stairStepOrderRequiresBilling)\n );\n }\n\n orderItems: OrderConfirmationItem[];\n orderContainsItemsThatAreNotFree: boolean;\n approvalMessage: string;\n approvalMessageCount: number;\n productIds: string[] = [];\n emailDisabled = true;\n emailUsersChecked: boolean;\n instantActivationItemSummaries: OrderConfirmationItem[] = [];\n activationItemSummaries: OrderConfirmationItem[] = [];\n allActivationSummaries: OrderConfirmationItem[] = [];\n\n users$: Observable;\n creditBalance$: Observable;\n dialogRef: MatDialogRef;\n minStartDate: Date = new Date();\n\n marketId$: Observable;\n valid = true;\n hasSufficientVCash$: Observable;\n wholesaleTotal$$: BehaviorSubject = new BehaviorSubject(0);\n\n constructor(\n private accountService: AccountService,\n private vconfigService: VConfigService,\n private creditService: CreditService,\n private productOrderFormService: ProductOrderFormStoreService,\n private fulfillmentOrderConfirmationService: FulfillmentOrderConfirmationService,\n private lineItemCacheService: LineItemCacheService,\n public dialog: MatDialog,\n ) {\n this.cachedSalesOrder = toSignal(this.productOrderFormService.cachedOrder$);\n this.cachedInventoryLineItems = signal(this.lineItemCacheService.readLineItems(this.accountGroupId));\n this.editableOrder = signal(\n buildEditableOrder(this.cachedSalesOrder(), this.cachedInventoryLineItems(), this.marketCurrency),\n );\n this.pricingTableItems = computed(() => {\n const cachedLineItems = this.cachedInventoryLineItems();\n const editableOrder = this.editableOrder();\n const pricingTableItems = this.buildPricingTableItemsFromLineItems(cachedLineItems);\n return updatePricingTableItemsWithCustomPrice(pricingTableItems, editableOrder);\n });\n }\n\n ngOnInit(): void {\n this.editableOrder.set(\n buildEditableOrder(this.cachedSalesOrder(), this.cachedInventoryLineItems(), this.marketCurrency),\n );\n const configKeys = [emailSmbsProductActivatedKey];\n this.accountService.account$\n .pipe(\n skipWhile((account) => !account.market_id),\n switchMap((account) => this.vconfigService.getConfigurations(this.partnerId, configKeys, account.market_id)),\n take(1),\n )\n .subscribe((config) => {\n this.emailUsersChecked = config[emailSmbsProductActivatedKey];\n this.emailDisabled = false;\n });\n\n this.marketId$ = this.accountService.account$.pipe(\n skipWhile((account) => !account?.market_id),\n map((account) => account.market_id),\n );\n\n this.creditBalance$ = this.creditService.getBalance(this.partnerId).pipe(shareReplay(1));\n this.users$ = this.accountService.users$.pipe(shareReplay(1));\n\n this.hasSufficientVCash$ = combineLatest([this.creditBalance$, this.wholesaleTotal$$]).pipe(\n map(([balance, total]) => balance?.amount >= total),\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes && changes['accountGroupId']) {\n this.cachedInventoryLineItems.set(this.lineItemCacheService.readLineItems(this.accountGroupId));\n this.editableOrder.set(\n buildEditableOrder(this.cachedSalesOrder(), this.cachedInventoryLineItems(), this.marketCurrency),\n );\n }\n }\n\n buildActivationItemSummaries(\n orderItems: OrderConfirmationItem[],\n editionsMap: AppIdToEditionIdToEditionMap,\n ): OrderConfirmationItem[] {\n if (!orderItems || orderItems.length === 0) {\n return [];\n }\n return orderItems.map((oi) => {\n if (this.orderConfirmationItemHasValidEditionId(oi)) {\n oi.editionName = editionsMap.get(oi.appId).get(oi.editionId).editionName;\n }\n return oi;\n });\n }\n\n buildPricingTableItemsFromLineItems(lineItems: InventoryLineItem[]): InventoryItemWithPricing[] {\n if (!lineItems?.length) {\n return [];\n }\n return lineItems.map((li): InventoryItemWithPricing => {\n return {\n itemId: li.itemId,\n edition: { editionId: li.editionId || '' },\n type: li.itemType,\n quantity: li.quantity,\n };\n });\n }\n\n async onSubmit(): Promise {\n this.submitClicked.emit({ order: this.editableOrder(), sendEmail: this.emailUsersChecked });\n }\n\n goBack(): void {\n this.goBackClicked.emit();\n }\n\n presentPreviewEmailDialog(): void {\n this.dialogRef = this.dialog.open(PreviewEmailDialogComponent);\n }\n\n assembleAppNamesForAppsThatRequireApproval(orderItems: OrderConfirmationItem[]): AppNameAndEditionNamePair[] {\n const appNamesThatRequireApproval: AppNameAndEditionNamePair[] = [];\n orderItems.forEach((item) => {\n if (item.requiresApproval) {\n const namesPair = { appName: item.name } as AppNameAndEditionNamePair;\n if (this.orderConfirmationItemHasValidEditionId(item)) {\n namesPair.editionName = this.editionsMap.get(item.appId).get(item.editionId).editionName;\n }\n appNamesThatRequireApproval.push(namesPair);\n }\n });\n\n return appNamesThatRequireApproval;\n }\n\n orderConfirmationItemHasValidEditionId(item: OrderConfirmationItem): boolean {\n if (!item) {\n return false;\n }\n const { editionId, appId } = item;\n const itemHasValidEditionId = isValidEditionId(editionId);\n const editionsEntry = this.editionsMap.get(appId);\n const editionDataIsInEditionsMap = !!(editionsEntry && editionsEntry.get(editionId));\n return itemHasValidEditionId && editionDataIsInEditionsMap;\n }\n\n updateOrderItem(item: OrderConfirmationItem): void {\n this.editableOrder.update((order) => {\n updateOrderCustomPriceFromItem(order, item);\n return order;\n });\n }\n\n updateOrderItemUsingItemRow(event: ItemRowChangeEvent): void {\n this.editableOrder.update((order) => {\n updateOrderCustomPricingFromItemRow(order, event);\n return order;\n });\n }\n\n handleContractStartDateChange(date: Date): void {\n this.editableOrder.update((order) => {\n return {\n ...order,\n requestedActivation: date,\n };\n });\n this.contractStartDateChange.emit(date);\n }\n\n setValidity(valid: boolean): void {\n this.valid = valid;\n }\n\n setWholesaleTotal(total: number): void {\n this.wholesaleTotal$$.next(total);\n }\n}\n\nexport function buildEditableOrder(\n cachedOrder: Order,\n cachedLineItems: InventoryLineItem[],\n marketCurrency: string,\n): Order {\n if (!cachedOrder || !cachedLineItems?.length) {\n return cachedOrder;\n }\n\n // Copy the cached order to create the base of the editable order\n const editableOrder = JSON.parse(JSON.stringify(cachedOrder));\n const cachedOrderLineItemsMap = cachedOrder.lineItems.reduce((map, lineItem) => {\n map.set(lineItem.appKey?.appId || lineItem.packageId, lineItem);\n return map;\n }, new Map());\n // Merge the cached order and cached line items into an editable order\n editableOrder.lineItems = cachedLineItems\n .map((cachedLineItem) => {\n const orderLineItem = cachedOrderLineItemsMap.get(cachedLineItem.itemId);\n if (cachedLineItem.itemType === 'package') {\n return new OrderLineItem({\n packageId: cachedLineItem.itemId,\n quantity: cachedLineItem.quantity,\n currencyCode: marketCurrency,\n });\n }\n return orderLineItem;\n })\n .filter(Boolean);\n return editableOrder;\n}\n","\n\n\n\n\n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.COLLECT_PAYMENT.TITLE' | translate }}\n \n \n \n \n \n\n\n\n\n \n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.PRODUCT_ACTIVATIONS.TITLE' | translate }}\n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.PRODUCT_ACTIVATIONS.SUBTITLE' | translate }}\n \n \n \n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.COLLECT_PAYMENT.SELECT_DATE' | translate }}\n \n \n \n \n \n\n
\n \n
\n \n \n {{\n 'ACTIVATION.CONFIRMATION_PAGE.PRODUCT_ACTIVATIONS.ACTIVATE_AFTER_PAYMENT'\n | translate\n : {\n date: contractStartDate | date: 'MMMM d, yyyy'\n }\n }}\n \n \n {{\n 'ACTIVATION.CONFIRMATION_PAGE.PRODUCT_ACTIVATIONS.ACTIVATE_ON_DATE'\n | translate\n : {\n date: contractStartDate | date: 'MMMM d, yyyy'\n }\n }}\n \n
\n
\n
\n
0\" class=\"confirm-purchase\">\n \n \n {{\n activationItemSummaries.length > 1\n ? ('ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.EMAIL_ALL_USERS_MULTI' | translate)\n : ('ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.EMAIL_ALL_USERS' | translate)\n }}\n \n Preview\n
\n
\n
\n
\n\n 0\">\n \n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.PRODUCT_ACTIVATIONS.TITLE' | translate }}\n \n \n \n
\n \n \n {{\n activationItemSummaries.length > 1\n ? ('ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.EMAIL_ALL_USERS_MULTI' | translate)\n : ('ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.EMAIL_ALL_USERS' | translate)\n }}\n \n Preview\n
\n
\n
\n
\n\n\n 0\">\n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.WHOLESALE_BILLING_INFO' | translate }}\n \n \n
\n
\n \n \n {{ approvalMessage }}\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.WILL_REQUIRE_CONFIRMATION' | translate }}\n {{\n approvalMessageCount > 1\n ? ('ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.WILL_REMAIN_PENDING_MULTI' | translate)\n : ('ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.WILL_REMAIN_PENDING' | translate)\n }}\n \n
\n
\n

\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.BILLED_TO' | translate }}\n

\n
\n
\n
\n \n
\n
\n
\n

\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.USING_CREDIT_CARD' | translate }}\n

\n
\n
\n
\n \n
\n
\n \n
0\">\n
\n
\n card_giftcard\n \n
\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.VCASH_WILL_BE_APPLIED' | translate }}\n
\n
\n
\n
\n
\n
\n\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.YOU_NEED_TO_ADD_BILLING_INFO' | translate }}\n
\n
\n
\n\n\n\n \n {{\n billingAutomationEnabled && requireApproval && !!approvalFromSubjectId\n ? ('ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.SEND_ORDER' | translate)\n : ('ACTIVATION.CONFIRMATION_PAGE.ORDER_SUMMARY.PURCHASE' | translate)\n }}\n \n \n {{ 'COMMON.ACTION_LABELS.BACK' | translate }}\n \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { BillingStrategy, RetailCustomerConfiguration, RetailCustomerConfigurationService } from '@galaxy/billing';\nimport { LineItemCacheService } from '@galaxy/inventory-ui';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { CommonProperties, ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { Order, Origin, Order as SalesOrder, SalesOrdersService } from '@vendasta/sales-orders';\nimport { Breadcrumbs } from '@vendasta/uikit';\nimport { BehaviorSubject, EMPTY, Observable, Subscription, combineLatest, of } from 'rxjs';\nimport {\n bufferTime,\n catchError,\n filter,\n finalize,\n first,\n map,\n shareReplay,\n switchMap,\n take,\n tap,\n} from 'rxjs/operators';\nimport { AccountService } from '../../../core/account.service';\nimport { GoogleWorkspaceAppIds, Office365AppIds } from '../../../marketplace-app/global-brands-constants';\nimport { ActivationSettingsApiService } from '../../activation-settings-api.service';\nimport { ActivateAppService } from '../../core/activate-app/activate-app.service';\nimport { ActivationNavigationService } from '../../core/activation-navigation.service';\nimport { ActivationParamService } from '../../core/activation-param.service';\nimport { ActivationService } from '../../core/activation.service';\nimport { ActivatableItem, AppIdToEditionIdToEditionMap } from '../../core/interface';\nimport {\n ActivationMessageDialogComponent,\n ActivationMessageDialogData,\n ActivationMessageSupportedApps,\n} from '../activation-message-dialog/activation-message-dialog.component';\nimport { OrderConfirmationItem } from '../interface';\nimport { OrderConfirmationService } from '../order-confirmation.service';\nimport { OrderSubmission } from '../order-summary/order-summary.component';\nimport { StairstepOrderService } from '../stairstep-order.service';\n\n@Component({\n selector: 'app-order-confirmation-page',\n templateUrl: './order-confirmation-page.component.html',\n})\nexport class OrderConfirmationPageComponent implements OnInit, OnDestroy {\n constructor(\n private productConfirmationService: OrderConfirmationService,\n private paramService: ActivationParamService,\n private snackbarService: SnackbarService,\n private activateAppService: ActivateAppService,\n private dialog: MatDialog,\n private activationService: ActivationService,\n private activationSettingsApiService: ActivationSettingsApiService,\n private activationNavigationService: ActivationNavigationService,\n private salesOrdersService: SalesOrdersService,\n private stairstepOrderService: StairstepOrderService,\n private accountService: AccountService,\n private analytics: ProductAnalyticsService,\n private readonly customerConfigService: RetailCustomerConfigurationService,\n private lineItemCacheService: LineItemCacheService,\n ) {}\n\n orderConfirmationItems$: Observable;\n hidePricing$: Observable;\n productIsInstantBilledMap$: Observable>;\n userCanEditBillingInfo$: Observable;\n billingInfoConfigured$: Observable;\n stairstepOrderRequiresBilling$: Observable;\n partnerId$: Observable;\n partnerId: string;\n accountGroupId$: Observable;\n accountGroupId: string;\n editionsMap$: Observable;\n featureFlags$: Observable;\n purchased: boolean;\n numOrderItems: number;\n billingAutomationEnabled$: Observable;\n marketCurrency$: Observable;\n\n salesOrder$: Observable;\n\n disableSubmitButton$$: BehaviorSubject = new BehaviorSubject(false);\n\n breadcrumbs: Breadcrumbs[];\n private subscriptions: Subscription[] = [];\n private activationMessageDialogRef: MatDialogRef;\n private activatableItems$: Observable;\n\n requireApproval = false;\n approvalFromSubjectId = '';\n hasExpiryDate = false;\n expiryDate = new Date();\n\n /**\n * Constructs a list of products IDs from an order.\n * @param order - the sales order to get product IDs for\n */\n static buildProductIdListFromSalesOrder(order: SalesOrder): string[] {\n return (\n order?.lineItems\n ?.map((li) => {\n return li.appKey?.appId;\n })\n ?.filter(Boolean) ?? []\n );\n }\n\n ngOnInit(): void {\n this.paramService.accountGroupId$.pipe(take(1)).subscribe((agid) => this.accountService.setCurrentAccountID(agid));\n this.orderConfirmationItems$ = this.productConfirmationService.orderConfirmationItems$;\n this.hidePricing$ = this.productConfirmationService.hidePricing$;\n this.productIsInstantBilledMap$ = this.productConfirmationService.productIsInstantBilledMap$;\n this.userCanEditBillingInfo$ = this.productConfirmationService.userCanEditBillingInfo$;\n this.billingInfoConfigured$ = this.productConfirmationService.billingInfoConfigured$;\n this.stairstepOrderRequiresBilling$ = this.stairstepOrderService.orderRequiresBillingInfo(\n this.orderConfirmationItems$,\n );\n\n this.partnerId$ = this.paramService.partnerId$;\n this.subscriptions.push(this.partnerId$.subscribe((pid) => (this.partnerId = pid)));\n this.accountGroupId$ = this.paramService.accountGroupId$;\n this.marketCurrency$ = this.productConfirmationService.marketCurrency$;\n this.subscriptions.push(this.accountGroupId$.subscribe((agid) => (this.accountGroupId = agid)));\n this.subscriptions.push(this.orderConfirmationItems$.subscribe((ocis) => (this.numOrderItems = ocis.length)));\n\n this.activatableItems$ = this.activationService.unfilteredFlattenedActivatableItems$;\n\n this.editionsMap$ = this.productConfirmationService.editionIdToEditionMap$;\n\n this.salesOrder$ = this.productConfirmationService.salesOrder$;\n // Listen for and display responses from activation\n this.subscriptions.push(\n this.activateAppService.successes$\n .pipe(\n bufferTime(1000),\n filter((successResults) => {\n return successResults && successResults.length > 0;\n }),\n )\n .subscribe((successResults) => {\n let message = (successResults || []).reduce((msg, curr) => {\n if (msg) {\n return `${msg} and ${curr.name}`;\n }\n return `${curr.name}`;\n }, '');\n message = `${message} activated successfully`;\n this.snackbarService.openSuccessSnack(message);\n }),\n );\n\n this.subscriptions.push(\n this.activateAppService.errors$\n .pipe(\n bufferTime(1000),\n filter((errorResults) => {\n return errorResults && errorResults.length > 0;\n }),\n )\n .subscribe((errorResults) => {\n let message = (errorResults || []).reduce((msg, curr) => {\n if (msg) {\n return `${msg} and ${curr.name}`;\n }\n return `${curr.name}`;\n }, '');\n message = `${message} failed activation`;\n this.snackbarService.openErrorSnack(message);\n }),\n );\n const retailConfig$ = this.customerConfigService.get(this.partnerId, this.accountGroupId).pipe(\n take(1),\n catchError((err) => {\n if (err.status === 404) {\n const retailConfig: RetailCustomerConfiguration = {\n merchantId: this.partnerId,\n customerId: this.accountGroupId,\n contactId: '',\n };\n return of(retailConfig);\n }\n }),\n shareReplay(1),\n );\n this.billingAutomationEnabled$ = retailConfig$.pipe(\n map((retailConfig) => {\n return retailConfig.autoGenerate && !retailConfig.useTemplateInvoice;\n }),\n );\n\n const billingUserId$ = retailConfig$.pipe(map((config) => (this.approvalFromSubjectId = config.contactId)));\n combineLatest([billingUserId$, this.accountService.users$])\n .pipe(\n filter(([_, users]) => !!users),\n take(1),\n map(([userId, users]) => users.find((user) => user.unifiedUserId === userId)),\n map((user) => user?.userId || ''),\n )\n .subscribe((subjectId) => (this.approvalFromSubjectId = subjectId));\n\n this.trackOrderFormStatus('order-confirmation-page-checkout-initiated');\n }\n\n /**\n * The function called when the submit button is clicked.\n *\n * @param event {OrderSubmission} An optional parameter for triggering email sending\n *\n */\n onSubmitClicked(event?: OrderSubmission): void {\n this.disableSubmitButton$$.next(true);\n\n const processOrder$ = this.billingAutomationEnabled$.pipe(\n map((billingAutomationEnabled) =>\n // You must have the feature flag enabled, billing automation enabled and the user must have specified that an approval is required to send to the customer.\n billingAutomationEnabled && this.requireApproval ? this.approvalFromSubjectId : null,\n ),\n switchMap((subjectId) =>\n this.createAndActivateOrSendToCustomer(\n subjectId,\n this.requireApproval && this.hasExpiryDate ? this.expiryDate : null,\n event.order,\n ).pipe(\n catchError(() => {\n this.snackbarService.openErrorSnack('SALES_ORDERS.ERRORS.ERROR_CREATE_ACTIVATION_ORDER');\n this.disableSubmitButton$$.next(false);\n return EMPTY;\n }),\n tap((_) => {\n this.purchased = true;\n if (!!subjectId && this.requireApproval) {\n this.analytics.trackEvent('send-order-for-approval', 'activate-products', 'purchase');\n this.snackbarService.openSuccessSnack('SALES_ORDERS.SUCCESS.SENT_FOR_APPROVAL');\n } else {\n this.analytics.trackEvent('create-order', 'activate-products', 'purchase');\n this.snackbarService.openSuccessSnack('SALES_ORDERS.SUCCESS.CREATE_ACTIVATION_ORDER');\n }\n }),\n ),\n ),\n );\n\n combineLatest([processOrder$, this.accountGroupId$])\n .pipe(\n take(1),\n switchMap(([orderId, businessId]) => {\n return combineLatest([\n this.salesOrdersService.get(orderId, businessId),\n this.activatableItems$,\n of(businessId),\n ]).pipe(take(1));\n }),\n // Track whether the cart had items with an order form.\n tap(() => this.trackOrderFormStatus('order-confirmation-page-checkout-finalized')),\n // Clear the cart and notify listeners\n tap(([order, activatableItems, businessId]) => {\n this.productConfirmationService.clearSalesOrderCache();\n this.lineItemCacheService.clearLineItemCache(businessId);\n this.activationSuccessfulAction(order, activatableItems, event.sendEmail);\n }),\n finalize(() => this.disableSubmitButton$$.next(false)),\n )\n .subscribe();\n }\n\n /**\n * Tracks whether the order currently has a product with an order form in it.\n * @param label The label to add to the event sent to the tracker.\n * @private\n */\n private trackOrderFormStatus(label: string): void {\n // Determine whether the order had an order form.\n this.activationService.appCartItems$.pipe(take(1)).subscribe((appCartItems) => {\n this.analytics.trackEvent(label, CommonProperties.ECOMMERCE, 'has-matching-item', 0, {\n hasAppWithOrderForm: !!appCartItems?.find((item) => item.activatableItem.usesOrderForm),\n });\n });\n }\n\n /**\n * Set order.origin to PC then create order\n * and send for customer approval\n * sales-orders API defaults to `Origin.SSC` if origin is not set.\n *\n * @param order\n * @param userId\n * @param expiry is when the offer sent to the user expires.\n */\n createAndSendToCustomer(order, userId, expiry: Date): Observable {\n order.origin = Origin.PC;\n return this.salesOrdersService.createAndSendToCustomer(order, userId, expiry);\n }\n\n /**\n * Creates auto-activatable order to activate products\n * or create and send to customer for approval if there is a userId.\n */\n createAndActivateOrSendToCustomer(userId: string, expiry: Date, order: Order): Observable {\n if (this.requireApproval) {\n return this.createAndSendToCustomer(order, userId, expiry);\n }\n return this.salesOrdersService.createAndActivateOrder(order);\n }\n\n /**\n * Notifies the user that the order was submitted successfully.\n *\n * If the order contained products which should display a post-activation dialog, the dialog is displayed.\n * Otherwise, an order successful toast message is displayed and the user is redirected to the account details screen\n */\n activationSuccessfulAction(\n order: SalesOrder,\n activatableItems: ActivatableItem[],\n sendEmailNotification = false,\n ): void {\n const activationMessageDialogData: ActivationMessageDialogData = {\n apps: [],\n };\n\n // TODO - should both products and packages be sent for activation emails?\n const productIds = OrderConfirmationPageComponent.buildProductIdListFromSalesOrder(order);\n if (productIds?.length > 0) {\n this.activationSettingsApiService\n .setNotificationSettings(order.businessId, productIds, sendEmailNotification)\n .pipe(first())\n .subscribe();\n }\n\n const hasGoogleWorkspaceItem = (appID) => GoogleWorkspaceAppIds.some((id) => id === appID);\n const googleWorkspaceItem = order.lineItems.find((a) => hasGoogleWorkspaceItem(a.appKey?.appId));\n const googleWorkspaceActivatableItem = (activatableItems || []).find(\n (a) => a.appId === googleWorkspaceItem?.appKey?.appId,\n );\n if (googleWorkspaceActivatableItem) {\n activationMessageDialogData.apps.push({\n name: googleWorkspaceActivatableItem.name,\n appId: googleWorkspaceActivatableItem.appId,\n icon: googleWorkspaceActivatableItem.icon || '',\n type: ActivationMessageSupportedApps.WORKSPACE,\n });\n }\n\n const hasOffice365Item = (appID) => Office365AppIds.some((id) => id === appID);\n const office365Item = order.lineItems.find((a) => hasOffice365Item(a.appKey?.appId));\n const office365ItemActivatableItem = (activatableItems || []).find((a) => a.appId === office365Item?.appKey?.appId);\n if (office365ItemActivatableItem) {\n activationMessageDialogData.apps.push({\n name: office365ItemActivatableItem.name,\n appId: office365ItemActivatableItem.appId,\n icon: office365ItemActivatableItem.icon || '',\n type: ActivationMessageSupportedApps.OFFICE,\n });\n }\n\n if (activationMessageDialogData.apps.length > 0) {\n this.activationMessageDialog(activationMessageDialogData);\n } else {\n this.activationNavigationService.navigateToNextStep('confirmation', order);\n }\n }\n\n activationMessageDialog(apps: ActivationMessageDialogData): void {\n this.activationMessageDialogRef = this.dialog.open(ActivationMessageDialogComponent, {\n width: '622px',\n data: apps,\n });\n this.activationMessageDialogRef.afterClosed().subscribe(() => {\n this.activationNavigationService.navigateToNextStep('confirmation');\n });\n }\n\n goBack(): void {\n this.activationNavigationService.navigateToPreviousStep('confirmation');\n }\n\n setContractStartDate(startDate: Date): void {\n this.productConfirmationService.setContractStartDate(startDate);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","\n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ORDER_CONFIRMATION_PAGE.CONFIRM_ORDER' | translate }}\n \n \n\n \n \n \n \n\n \n \n \n \n\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass DomainAddressMailing {\n static fromProto(proto) {\n let m = new DomainAddressMailing();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.address1 !== 'undefined') {\n toReturn['address1'] = this.address1;\n }\n if (typeof this.address2 !== 'undefined') {\n toReturn['address2'] = this.address2;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.postalCode !== 'undefined') {\n toReturn['postalCode'] = this.postalCode;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n return toReturn;\n }\n}\nclass DomainContactAdmin {\n static fromProto(proto) {\n let m = new DomainContactAdmin();\n m = Object.assign(m, proto);\n if (proto.addressMailing) {\n m.addressMailing = DomainAddressMailing.fromProto(proto.addressMailing);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.addressMailing !== 'undefined' && this.addressMailing !== null) {\n toReturn['addressMailing'] = 'toApiJson' in this.addressMailing ? this.addressMailing.toApiJson() : this.addressMailing;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.fax !== 'undefined') {\n toReturn['fax'] = this.fax;\n }\n if (typeof this.jobTitle !== 'undefined') {\n toReturn['jobTitle'] = this.jobTitle;\n }\n if (typeof this.nameFirst !== 'undefined') {\n toReturn['nameFirst'] = this.nameFirst;\n }\n if (typeof this.nameLast !== 'undefined') {\n toReturn['nameLast'] = this.nameLast;\n }\n if (typeof this.nameMiddle !== 'undefined') {\n toReturn['nameMiddle'] = this.nameMiddle;\n }\n if (typeof this.organization !== 'undefined') {\n toReturn['organization'] = this.organization;\n }\n if (typeof this.phone !== 'undefined') {\n toReturn['phone'] = this.phone;\n }\n return toReturn;\n }\n}\nclass DomainContactBilling {\n static fromProto(proto) {\n let m = new DomainContactBilling();\n m = Object.assign(m, proto);\n if (proto.addressMailing) {\n m.addressMailing = DomainAddressMailing.fromProto(proto.addressMailing);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.addressMailing !== 'undefined' && this.addressMailing !== null) {\n toReturn['addressMailing'] = 'toApiJson' in this.addressMailing ? this.addressMailing.toApiJson() : this.addressMailing;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.fax !== 'undefined') {\n toReturn['fax'] = this.fax;\n }\n if (typeof this.jobTitle !== 'undefined') {\n toReturn['jobTitle'] = this.jobTitle;\n }\n if (typeof this.nameFirst !== 'undefined') {\n toReturn['nameFirst'] = this.nameFirst;\n }\n if (typeof this.nameLast !== 'undefined') {\n toReturn['nameLast'] = this.nameLast;\n }\n if (typeof this.nameMiddle !== 'undefined') {\n toReturn['nameMiddle'] = this.nameMiddle;\n }\n if (typeof this.organization !== 'undefined') {\n toReturn['organization'] = this.organization;\n }\n if (typeof this.phone !== 'undefined') {\n toReturn['phone'] = this.phone;\n }\n return toReturn;\n }\n}\nclass DomainContactRegistrant {\n static fromProto(proto) {\n let m = new DomainContactRegistrant();\n m = Object.assign(m, proto);\n if (proto.addressMailing) {\n m.addressMailing = DomainAddressMailing.fromProto(proto.addressMailing);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.addressMailing !== 'undefined' && this.addressMailing !== null) {\n toReturn['addressMailing'] = 'toApiJson' in this.addressMailing ? this.addressMailing.toApiJson() : this.addressMailing;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.fax !== 'undefined') {\n toReturn['fax'] = this.fax;\n }\n if (typeof this.jobTitle !== 'undefined') {\n toReturn['jobTitle'] = this.jobTitle;\n }\n if (typeof this.nameFirst !== 'undefined') {\n toReturn['nameFirst'] = this.nameFirst;\n }\n if (typeof this.nameLast !== 'undefined') {\n toReturn['nameLast'] = this.nameLast;\n }\n if (typeof this.nameMiddle !== 'undefined') {\n toReturn['nameMiddle'] = this.nameMiddle;\n }\n if (typeof this.organization !== 'undefined') {\n toReturn['organization'] = this.organization;\n }\n if (typeof this.phone !== 'undefined') {\n toReturn['phone'] = this.phone;\n }\n return toReturn;\n }\n}\nclass DomainContactTech {\n static fromProto(proto) {\n let m = new DomainContactTech();\n m = Object.assign(m, proto);\n if (proto.addressMailing) {\n m.addressMailing = DomainAddressMailing.fromProto(proto.addressMailing);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.addressMailing !== 'undefined' && this.addressMailing !== null) {\n toReturn['addressMailing'] = 'toApiJson' in this.addressMailing ? this.addressMailing.toApiJson() : this.addressMailing;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.fax !== 'undefined') {\n toReturn['fax'] = this.fax;\n }\n if (typeof this.jobTitle !== 'undefined') {\n toReturn['jobTitle'] = this.jobTitle;\n }\n if (typeof this.nameFirst !== 'undefined') {\n toReturn['nameFirst'] = this.nameFirst;\n }\n if (typeof this.nameLast !== 'undefined') {\n toReturn['nameLast'] = this.nameLast;\n }\n if (typeof this.nameMiddle !== 'undefined') {\n toReturn['nameMiddle'] = this.nameMiddle;\n }\n if (typeof this.organization !== 'undefined') {\n toReturn['organization'] = this.organization;\n }\n if (typeof this.phone !== 'undefined') {\n toReturn['phone'] = this.phone;\n }\n return toReturn;\n }\n}\nclass Domain {\n static fromProto(proto) {\n let m = new Domain();\n m = Object.assign(m, proto);\n if (proto.contactAdmin) {\n m.contactAdmin = DomainContactAdmin.fromProto(proto.contactAdmin);\n }\n if (proto.contactBilling) {\n m.contactBilling = DomainContactBilling.fromProto(proto.contactBilling);\n }\n if (proto.contactRegistrant) {\n m.contactRegistrant = DomainContactRegistrant.fromProto(proto.contactRegistrant);\n }\n if (proto.contactTech) {\n m.contactTech = DomainContactTech.fromProto(proto.contactTech);\n }\n if (proto.createdAt) {\n m.createdAt = new Date(proto.createdAt);\n }\n if (proto.deletedAt) {\n m.deletedAt = new Date(proto.deletedAt);\n }\n if (proto.transferAwayEligibleAt) {\n m.transferAwayEligibleAt = new Date(proto.transferAwayEligibleAt);\n }\n if (proto.domainId) {\n m.domainId = parseInt(proto.domainId, 10);\n }\n if (proto.expires) {\n m.expires = new Date(proto.expires);\n }\n if (proto.renewDeadline) {\n m.renewDeadline = new Date(proto.renewDeadline);\n }\n if (proto.verifications) {\n m.verifications = DomainVerifications.fromProto(proto.verifications);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.authCode !== 'undefined') {\n toReturn['authCode'] = this.authCode;\n }\n if (typeof this.contactAdmin !== 'undefined' && this.contactAdmin !== null) {\n toReturn['contactAdmin'] = 'toApiJson' in this.contactAdmin ? this.contactAdmin.toApiJson() : this.contactAdmin;\n }\n if (typeof this.contactBilling !== 'undefined' && this.contactBilling !== null) {\n toReturn['contactBilling'] = 'toApiJson' in this.contactBilling ? this.contactBilling.toApiJson() : this.contactBilling;\n }\n if (typeof this.contactRegistrant !== 'undefined' && this.contactRegistrant !== null) {\n toReturn['contactRegistrant'] = 'toApiJson' in this.contactRegistrant ? this.contactRegistrant.toApiJson() : this.contactRegistrant;\n }\n if (typeof this.contactTech !== 'undefined' && this.contactTech !== null) {\n toReturn['contactTech'] = 'toApiJson' in this.contactTech ? this.contactTech.toApiJson() : this.contactTech;\n }\n if (typeof this.createdAt !== 'undefined' && this.createdAt !== null) {\n toReturn['createdAt'] = 'toApiJson' in this.createdAt ? this.createdAt.toApiJson() : this.createdAt;\n }\n if (typeof this.deletedAt !== 'undefined' && this.deletedAt !== null) {\n toReturn['deletedAt'] = 'toApiJson' in this.deletedAt ? this.deletedAt.toApiJson() : this.deletedAt;\n }\n if (typeof this.transferAwayEligibleAt !== 'undefined' && this.transferAwayEligibleAt !== null) {\n toReturn['transferAwayEligibleAt'] = 'toApiJson' in this.transferAwayEligibleAt ? this.transferAwayEligibleAt.toApiJson() : this.transferAwayEligibleAt;\n }\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.domainId !== 'undefined') {\n toReturn['domainId'] = this.domainId;\n }\n if (typeof this.expirationProtected !== 'undefined') {\n toReturn['expirationProtected'] = this.expirationProtected;\n }\n if (typeof this.expires !== 'undefined' && this.expires !== null) {\n toReturn['expires'] = 'toApiJson' in this.expires ? this.expires.toApiJson() : this.expires;\n }\n if (typeof this.exposeWhois !== 'undefined') {\n toReturn['exposeWhois'] = this.exposeWhois;\n }\n if (typeof this.holdRegistrar !== 'undefined') {\n toReturn['holdRegistrar'] = this.holdRegistrar;\n }\n if (typeof this.locked !== 'undefined') {\n toReturn['locked'] = this.locked;\n }\n if (typeof this.nameServers !== 'undefined') {\n toReturn['nameServers'] = this.nameServers;\n }\n if (typeof this.privacy !== 'undefined') {\n toReturn['privacy'] = this.privacy;\n }\n if (typeof this.renewAuto !== 'undefined') {\n toReturn['renewAuto'] = this.renewAuto;\n }\n if (typeof this.renewDeadline !== 'undefined' && this.renewDeadline !== null) {\n toReturn['renewDeadline'] = 'toApiJson' in this.renewDeadline ? this.renewDeadline.toApiJson() : this.renewDeadline;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.subaccountId !== 'undefined') {\n toReturn['subaccountId'] = this.subaccountId;\n }\n if (typeof this.transferProtected !== 'undefined') {\n toReturn['transferProtected'] = this.transferProtected;\n }\n if (typeof this.verifications !== 'undefined' && this.verifications !== null) {\n toReturn['verifications'] = 'toApiJson' in this.verifications ? this.verifications.toApiJson() : this.verifications;\n }\n return toReturn;\n }\n}\nclass DomainDomainName {\n static fromProto(proto) {\n let m = new DomainDomainName();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass DomainRealName {\n static fromProto(proto) {\n let m = new DomainRealName();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass DomainVerifications {\n static fromProto(proto) {\n let m = new DomainVerifications();\n m = Object.assign(m, proto);\n if (proto.domainName) {\n m.domainName = DomainDomainName.fromProto(proto.domainName);\n }\n if (proto.realName) {\n m.realName = DomainRealName.fromProto(proto.realName);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domainName !== 'undefined' && this.domainName !== null) {\n toReturn['domainName'] = 'toApiJson' in this.domainName ? this.domainName.toApiJson() : this.domainName;\n }\n if (typeof this.realName !== 'undefined' && this.realName !== null) {\n toReturn['realName'] = 'toApiJson' in this.realName ? this.realName.toApiJson() : this.realName;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FieldMask {\n static fromProto(proto) {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paths !== 'undefined') {\n toReturn['paths'] = this.paths;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar DNSRecordType = /*#__PURE__*/function (DNSRecordType) {\n DNSRecordType[DNSRecordType[\"DNS_RECORD_TYPE_ALL\"] = 0] = \"DNS_RECORD_TYPE_ALL\";\n DNSRecordType[DNSRecordType[\"DNS_RECORD_TYPE_A\"] = 1] = \"DNS_RECORD_TYPE_A\";\n DNSRecordType[DNSRecordType[\"DNS_RECORD_TYPE_AAAA\"] = 2] = \"DNS_RECORD_TYPE_AAAA\";\n DNSRecordType[DNSRecordType[\"DNS_RECORD_TYPE_CNAME\"] = 3] = \"DNS_RECORD_TYPE_CNAME\";\n DNSRecordType[DNSRecordType[\"DNS_RECORD_TYPE_MX\"] = 4] = \"DNS_RECORD_TYPE_MX\";\n DNSRecordType[DNSRecordType[\"DNS_RECORD_TYPE_NS\"] = 5] = \"DNS_RECORD_TYPE_NS\";\n DNSRecordType[DNSRecordType[\"DNS_RECORD_TYPE_SOA\"] = 6] = \"DNS_RECORD_TYPE_SOA\";\n DNSRecordType[DNSRecordType[\"DNS_RECORD_TYPE_SRV\"] = 7] = \"DNS_RECORD_TYPE_SRV\";\n DNSRecordType[DNSRecordType[\"DNS_RECORD_TYPE_TXT\"] = 8] = \"DNS_RECORD_TYPE_TXT\";\n return DNSRecordType;\n}(DNSRecordType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ContactAddressMailing {\n static fromProto(proto) {\n let m = new ContactAddressMailing();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.address1 !== 'undefined') {\n toReturn['address1'] = this.address1;\n }\n if (typeof this.address2 !== 'undefined') {\n toReturn['address2'] = this.address2;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.postalCode !== 'undefined') {\n toReturn['postalCode'] = this.postalCode;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n return toReturn;\n }\n}\nclass GetDomainAgreementsResponseAgreement {\n static fromProto(proto) {\n let m = new GetDomainAgreementsResponseAgreement();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.agreementKey !== 'undefined') {\n toReturn['agreementKey'] = this.agreementKey;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n return toReturn;\n }\n}\nclass Contact {\n static fromProto(proto) {\n let m = new Contact();\n m = Object.assign(m, proto);\n if (proto.addressMailing) {\n m.addressMailing = ContactAddressMailing.fromProto(proto.addressMailing);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.addressMailing !== 'undefined' && this.addressMailing !== null) {\n toReturn['addressMailing'] = 'toApiJson' in this.addressMailing ? this.addressMailing.toApiJson() : this.addressMailing;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.fax !== 'undefined') {\n toReturn['fax'] = this.fax;\n }\n if (typeof this.jobTitle !== 'undefined') {\n toReturn['jobTitle'] = this.jobTitle;\n }\n if (typeof this.nameFirst !== 'undefined') {\n toReturn['nameFirst'] = this.nameFirst;\n }\n if (typeof this.nameLast !== 'undefined') {\n toReturn['nameLast'] = this.nameLast;\n }\n if (typeof this.nameMiddle !== 'undefined') {\n toReturn['nameMiddle'] = this.nameMiddle;\n }\n if (typeof this.organization !== 'undefined') {\n toReturn['organization'] = this.organization;\n }\n if (typeof this.phone !== 'undefined') {\n toReturn['phone'] = this.phone;\n }\n return toReturn;\n }\n}\nclass DNSRecord {\n static fromProto(proto) {\n let m = new DNSRecord();\n m = Object.assign(m, proto);\n if (proto.ttl) {\n m.ttl = parseInt(proto.ttl, 10);\n }\n if (proto.priority) {\n m.priority = parseInt(proto.priority, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.data !== 'undefined') {\n toReturn['data'] = this.data;\n }\n if (typeof this.ttl !== 'undefined') {\n toReturn['ttl'] = this.ttl;\n }\n if (typeof this.priority !== 'undefined') {\n toReturn['priority'] = this.priority;\n }\n return toReturn;\n }\n}\nclass DeleteDNSRecordRequest {\n static fromProto(proto) {\n let m = new DeleteDNSRecordRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass ValidateDomainContactResponseField {\n static fromProto(proto) {\n let m = new ValidateDomainContactResponseField();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.message !== 'undefined') {\n toReturn['message'] = this.message;\n }\n if (typeof this.path !== 'undefined') {\n toReturn['path'] = this.path;\n }\n return toReturn;\n }\n}\nclass GetDomainAgreementsRequest {\n static fromProto(proto) {\n let m = new GetDomainAgreementsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.tlds !== 'undefined') {\n toReturn['tlds'] = this.tlds;\n }\n if (typeof this.privacy !== 'undefined') {\n toReturn['privacy'] = this.privacy;\n }\n return toReturn;\n }\n}\nclass GetDomainAgreementsResponse {\n static fromProto(proto) {\n let m = new GetDomainAgreementsResponse();\n m = Object.assign(m, proto);\n if (proto.agreements) {\n m.agreements = proto.agreements.map(GetDomainAgreementsResponseAgreement.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.agreements !== 'undefined' && this.agreements !== null) {\n toReturn['agreements'] = 'toApiJson' in this.agreements ? this.agreements.toApiJson() : this.agreements;\n }\n return toReturn;\n }\n}\nclass GetDomainAvailableRequest {\n static fromProto(proto) {\n let m = new GetDomainAvailableRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n return toReturn;\n }\n}\nclass GetDomainAvailableResponse {\n static fromProto(proto) {\n let m = new GetDomainAvailableResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.available !== 'undefined') {\n toReturn['available'] = this.available;\n }\n return toReturn;\n }\n}\nclass GetDomainRequest {\n static fromProto(proto) {\n let m = new GetDomainRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n return toReturn;\n }\n}\nclass GetDomainResponse {\n static fromProto(proto) {\n let m = new GetDomainResponse();\n m = Object.assign(m, proto);\n if (proto.domain) {\n m.domain = Domain.fromProto(proto.domain);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined' && this.domain !== null) {\n toReturn['domain'] = 'toApiJson' in this.domain ? this.domain.toApiJson() : this.domain;\n }\n return toReturn;\n }\n}\nclass GetDomainSuggestionAndPriceRequest {\n static fromProto(proto) {\n let m = new GetDomainSuggestionAndPriceRequest();\n m = Object.assign(m, proto);\n if (proto.limit) {\n m.limit = parseInt(proto.limit, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.tlds !== 'undefined') {\n toReturn['tlds'] = this.tlds;\n }\n if (typeof this.limit !== 'undefined') {\n toReturn['limit'] = this.limit;\n }\n return toReturn;\n }\n}\nclass GetDomainSuggestionAndPriceResponse {\n static fromProto(proto) {\n let m = new GetDomainSuggestionAndPriceResponse();\n m = Object.assign(m, proto);\n if (proto.suggestions) {\n m.suggestions = proto.suggestions.map(GetDomainSuggestionAndPriceResponseSuggestion.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.suggestions !== 'undefined' && this.suggestions !== null) {\n toReturn['suggestions'] = 'toApiJson' in this.suggestions ? this.suggestions.toApiJson() : this.suggestions;\n }\n return toReturn;\n }\n}\nclass ListDNSRecordsRequest {\n static fromProto(proto) {\n let m = new ListDNSRecordsRequest();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue(DNSRecordType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n return toReturn;\n }\n}\nclass ListDNSRecordsResponse {\n static fromProto(proto) {\n let m = new ListDNSRecordsResponse();\n m = Object.assign(m, proto);\n if (proto.dnsRecords) {\n m.dnsRecords = proto.dnsRecords.map(DNSRecord.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dnsRecords !== 'undefined' && this.dnsRecords !== null) {\n toReturn['dnsRecords'] = 'toApiJson' in this.dnsRecords ? this.dnsRecords.toApiJson() : this.dnsRecords;\n }\n return toReturn;\n }\n}\nclass ListDomainsByBusinessIDRequest {\n static fromProto(proto) {\n let m = new ListDomainsByBusinessIDRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass ListDomainsByBusinessIDResponse {\n static fromProto(proto) {\n let m = new ListDomainsByBusinessIDResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domains !== 'undefined') {\n toReturn['domains'] = this.domains;\n }\n return toReturn;\n }\n}\nclass PatchDomainRequest {\n static fromProto(proto) {\n let m = new PatchDomainRequest();\n m = Object.assign(m, proto);\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n if (typeof this.locked !== 'undefined') {\n toReturn['locked'] = this.locked;\n }\n return toReturn;\n }\n}\nclass PutDNSRecordRequest {\n static fromProto(proto) {\n let m = new PutDNSRecordRequest();\n m = Object.assign(m, proto);\n if (proto.dnsRecord) {\n m.dnsRecord = DNSRecord.fromProto(proto.dnsRecord);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.dnsRecord !== 'undefined' && this.dnsRecord !== null) {\n toReturn['dnsRecord'] = 'toApiJson' in this.dnsRecord ? this.dnsRecord.toApiJson() : this.dnsRecord;\n }\n return toReturn;\n }\n}\nclass RenewDomainRequest {\n static fromProto(proto) {\n let m = new RenewDomainRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n return toReturn;\n }\n}\nclass RenewDomainResponse {\n static fromProto(proto) {\n let m = new RenewDomainResponse();\n m = Object.assign(m, proto);\n if (proto.itemCount) {\n m.itemCount = parseInt(proto.itemCount, 10);\n }\n if (proto.orderId) {\n m.orderId = parseInt(proto.orderId, 10);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.itemCount !== 'undefined') {\n toReturn['itemCount'] = this.itemCount;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n return toReturn;\n }\n}\nclass ReplaceAllDNSRecordsRequest {\n static fromProto(proto) {\n let m = new ReplaceAllDNSRecordsRequest();\n m = Object.assign(m, proto);\n if (proto.dnsRecords) {\n m.dnsRecords = proto.dnsRecords.map(DNSRecord.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.dnsRecords !== 'undefined' && this.dnsRecords !== null) {\n toReturn['dnsRecords'] = 'toApiJson' in this.dnsRecords ? this.dnsRecords.toApiJson() : this.dnsRecords;\n }\n return toReturn;\n }\n}\nclass ReplaceDNSRecordsForTypeRequest {\n static fromProto(proto) {\n let m = new ReplaceDNSRecordsForTypeRequest();\n m = Object.assign(m, proto);\n if (proto.dnsRecords) {\n m.dnsRecords = proto.dnsRecords.map(DNSRecord.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.dnsRecords !== 'undefined' && this.dnsRecords !== null) {\n toReturn['dnsRecords'] = 'toApiJson' in this.dnsRecords ? this.dnsRecords.toApiJson() : this.dnsRecords;\n }\n return toReturn;\n }\n}\nclass GetDomainSuggestionAndPriceResponseSuggestion {\n static fromProto(proto) {\n let m = new GetDomainSuggestionAndPriceResponseSuggestion();\n m = Object.assign(m, proto);\n if (proto.price) {\n m.price = parseInt(proto.price, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.price !== 'undefined') {\n toReturn['price'] = this.price;\n }\n return toReturn;\n }\n}\nclass ValidateDomainContactRequest {\n static fromProto(proto) {\n let m = new ValidateDomainContactRequest();\n m = Object.assign(m, proto);\n if (proto.contactAdmin) {\n m.contactAdmin = Contact.fromProto(proto.contactAdmin);\n }\n if (proto.contactRegistrant) {\n m.contactRegistrant = Contact.fromProto(proto.contactRegistrant);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contactAdmin !== 'undefined' && this.contactAdmin !== null) {\n toReturn['contactAdmin'] = 'toApiJson' in this.contactAdmin ? this.contactAdmin.toApiJson() : this.contactAdmin;\n }\n if (typeof this.contactRegistrant !== 'undefined' && this.contactRegistrant !== null) {\n toReturn['contactRegistrant'] = 'toApiJson' in this.contactRegistrant ? this.contactRegistrant.toApiJson() : this.contactRegistrant;\n }\n if (typeof this.domains !== 'undefined') {\n toReturn['domains'] = this.domains;\n }\n return toReturn;\n }\n}\nclass ValidateDomainContactResponse {\n static fromProto(proto) {\n let m = new ValidateDomainContactResponse();\n m = Object.assign(m, proto);\n if (proto.fields) {\n m.fields = proto.fields.map(ValidateDomainContactResponseField.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fields !== 'undefined' && this.fields !== null) {\n toReturn['fields'] = 'toApiJson' in this.fields ? this.fields.toApiJson() : this.fields;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'godaddy-api.vendasta-local.com',\n 'test': '',\n 'demo': 'godaddy-api-demo.apigateway.co',\n 'prod': 'godaddy-api-prod.apigateway.co',\n 'production': 'godaddy-api-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(t) {\n return new (t || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet GoDaddyApiService = /*#__PURE__*/(() => {\n class GoDaddyApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getDomainSuggestionAndPrice(r) {\n const request = r.toApiJson ? r : new GetDomainSuggestionAndPriceRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/GetDomainSuggestionAndPrice\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetDomainSuggestionAndPriceResponse.fromProto(resp)));\n }\n listDnsRecords(r) {\n const request = r.toApiJson ? r : new ListDNSRecordsRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/ListDNSRecords\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListDNSRecordsResponse.fromProto(resp)));\n }\n putDnsRecord(r) {\n const request = r.toApiJson ? r : new PutDNSRecordRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/PutDNSRecord\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n replaceDnsRecordsForType(r) {\n const request = r.toApiJson ? r : new ReplaceDNSRecordsForTypeRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/ReplaceDNSRecordsForType\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n replaceAllDnsRecords(r) {\n const request = r.toApiJson ? r : new ReplaceAllDNSRecordsRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/ReplaceAllDNSRecords\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteDnsRecord(r) {\n const request = r.toApiJson ? r : new DeleteDNSRecordRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/DeleteDNSRecord\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getDomainAvailable(r) {\n const request = r.toApiJson ? r : new GetDomainAvailableRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/GetDomainAvailable\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetDomainAvailableResponse.fromProto(resp)));\n }\n getDomainAgreements(r) {\n const request = r.toApiJson ? r : new GetDomainAgreementsRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/GetDomainAgreements\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetDomainAgreementsResponse.fromProto(resp)));\n }\n validateDomainContact(r) {\n const request = r.toApiJson ? r : new ValidateDomainContactRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/ValidateDomainContact\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ValidateDomainContactResponse.fromProto(resp)));\n }\n listDomainsByBusinessId(r) {\n const request = r.toApiJson ? r : new ListDomainsByBusinessIDRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/ListDomainsByBusinessID\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListDomainsByBusinessIDResponse.fromProto(resp)));\n }\n patchDomain(r) {\n const request = r.toApiJson ? r : new PatchDomainRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/PatchDomain\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getDomain(r) {\n const request = r.toApiJson ? r : new GetDomainRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/GetDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetDomainResponse.fromProto(resp)));\n }\n renewDomain(r) {\n const request = r.toApiJson ? r : new RenewDomainRequest(r);\n return this.http.post(this._host + \"/godaddy.v1.GoDaddy/RenewDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RenewDomainResponse.fromProto(resp)));\n }\n }\n GoDaddyApiService.ɵfac = function GoDaddyApiService_Factory(t) {\n return new (t || GoDaddyApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n GoDaddyApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: GoDaddyApiService,\n factory: GoDaddyApiService.ɵfac,\n providedIn: 'root'\n });\n return GoDaddyApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet GoDaddyService = /*#__PURE__*/(() => {\n class GoDaddyService {\n constructor(goDaddyApiService) {\n this.goDaddyApiService = goDaddyApiService;\n }\n getDomainSuggestionAndPrice(domain, tlds, limit) {\n return this.goDaddyApiService.getDomainSuggestionAndPrice(new GetDomainSuggestionAndPriceRequest({\n domain: domain,\n tlds: tlds,\n limit: limit\n })).pipe(map(resp => {\n return resp.suggestions;\n }));\n }\n listDnsRecords(domain, partnerId, type) {\n return this.goDaddyApiService.listDnsRecords(new ListDNSRecordsRequest({\n domain: domain,\n partnerId: partnerId,\n type: type\n })).pipe(map(resp => {\n return resp.dnsRecords;\n }));\n }\n putDnsRecord(domain, partnerId, dnsRecord) {\n return this.goDaddyApiService.putDnsRecord(new PutDNSRecordRequest({\n domain: domain,\n partnerId: partnerId,\n dnsRecord: dnsRecord\n })).pipe(map(() => true));\n }\n replaceDnsRecordsForType(domain, type, dnsRecords) {\n return this.goDaddyApiService.replaceDnsRecordsForType(new ReplaceDNSRecordsForTypeRequest({\n domain: domain,\n type: type,\n dnsRecords: dnsRecords\n })).pipe(map(() => true));\n }\n replaceAllDnsRecords(domain, partnerId, dnsRecords) {\n return this.goDaddyApiService.replaceAllDnsRecords(new ReplaceAllDNSRecordsRequest({\n domain: domain,\n partnerId: partnerId,\n dnsRecords: dnsRecords\n })).pipe(map(() => true));\n }\n deleteDnsRecord(domain, type, name, partnerId) {\n return this.goDaddyApiService.deleteDnsRecord(new DeleteDNSRecordRequest({\n domain: domain,\n type: type,\n name: name,\n partnerId: partnerId\n })).pipe(map(() => true));\n }\n getDomainAvailable(domain) {\n return this.goDaddyApiService.getDomainAvailable(new GetDomainAvailableRequest({\n domain: domain\n })).pipe(map(resp => {\n return resp.available;\n }));\n }\n getDomainAgreements(tlds, privacy) {\n return this.goDaddyApiService.getDomainAgreements(new GetDomainAgreementsRequest({\n tlds: tlds,\n privacy: privacy\n })).pipe(map(resp => {\n return resp.agreements;\n }));\n }\n validateDomainContact(contactAdmin, contactRegistrant, domains) {\n return this.goDaddyApiService.validateDomainContact(new ValidateDomainContactRequest({\n contactAdmin: contactAdmin,\n contactRegistrant: contactRegistrant,\n domains: domains\n })).pipe(map(resp => {\n return resp.fields;\n }));\n }\n listDomainsByBusinessId(businessId) {\n return this.goDaddyApiService.listDomainsByBusinessId(new ListDomainsByBusinessIDRequest({\n businessId: businessId\n })).pipe(map(resp => {\n return resp.domains;\n }));\n }\n renewDomain(domain) {\n return this.goDaddyApiService.renewDomain(new RenewDomainRequest({\n domain: domain\n }));\n }\n }\n GoDaddyService.ɵfac = function GoDaddyService_Factory(t) {\n return new (t || GoDaddyService)(i0.ɵɵinject(GoDaddyApiService));\n };\n GoDaddyService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: GoDaddyService,\n factory: GoDaddyService.ɵfac,\n providedIn: 'root'\n });\n return GoDaddyService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Contact, ContactAddressMailing, DNSRecord, DNSRecordType, DeleteDNSRecordRequest, Domain, DomainAddressMailing, DomainContactAdmin, DomainContactBilling, DomainContactRegistrant, DomainContactTech, DomainDomainName, DomainRealName, DomainVerifications, FieldMask, GetDomainAgreementsRequest, GetDomainAgreementsResponse, GetDomainAgreementsResponseAgreement, GetDomainAvailableRequest, GetDomainAvailableResponse, GetDomainRequest, GetDomainResponse, GetDomainSuggestionAndPriceRequest, GetDomainSuggestionAndPriceResponse, GetDomainSuggestionAndPriceResponseSuggestion, GoDaddyApiService, GoDaddyService, HostService, ListDNSRecordsRequest, ListDNSRecordsResponse, ListDomainsByBusinessIDRequest, ListDomainsByBusinessIDResponse, PatchDomainRequest, PutDNSRecordRequest, RenewDomainRequest, RenewDomainResponse, ReplaceAllDNSRecordsRequest, ReplaceDNSRecordsForTypeRequest, ValidateDomainContactRequest, ValidateDomainContactResponse, ValidateDomainContactResponseField };\n","import { Injectable } from '@angular/core';\nimport { GoDaddyService } from '@vendasta/godaddy';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport interface DomainSearchResult {\n domain: string;\n available: boolean;\n parseError: string;\n}\n\nconst secondLevelDomainOnlyRegex = `^(([A-Za-z0-9-]+).?([A-Za-z-]*))$`;\nconst acceptedTLDsRegex = `^(?!://)[a-zA-Z0-9][a-zA-Z0-9-_]+(.(com|info|net|org|biz|click|link|futbol|club|rocks|xyz))?$`;\nexport const acceptedTLDs = ['com', 'info', 'org', 'net', 'biz', 'click', 'link', 'futbol', 'club', 'rocks', 'xyz'];\n\n@Injectable()\nexport class DynamicOrderFormService {\n constructor(private goDaddyService: GoDaddyService) {}\n\n getDomainSuggestions(domain: string, limit: number, tlds: string[]): Observable {\n return this.goDaddyService.getDomainSuggestionAndPrice(domain, tlds, limit).pipe(\n map((suggestions) => {\n if (suggestions) {\n return suggestions.map((suggestion) => {\n return {\n available: true,\n domain: suggestion.domain,\n parseError: '',\n };\n });\n }\n return [];\n }),\n );\n }\n\n checkDomainAvailability(domain: string): Observable {\n return this.goDaddyService.getDomainAvailable(domain).pipe(\n map((available) => {\n return {\n available: available || false,\n domain: domain,\n parseError: '',\n };\n }),\n );\n }\n\n getGoDaddyTermsOfService(domain: string): Observable {\n const tld = domain.split('.')[1];\n return this.goDaddyService.getDomainAgreements([tld], false).pipe(\n map((agreements) => {\n return agreements[0].content;\n }),\n );\n }\n}\n\n// Parses valid domains and tlds. the inputUrl may or may not have the tld extension\nexport function parseDomain(inputUrl: string): DomainSearchResult {\n const validatedInput: DomainSearchResult = {\n available: false,\n domain: '',\n parseError: '',\n };\n\n if (inputUrl.startsWith('-') || inputUrl.endsWith('-')) {\n validatedInput.parseError = 'Domain names cannot start or end with a hyphen';\n return validatedInput;\n }\n\n if (!inputUrl.match(secondLevelDomainOnlyRegex)) {\n validatedInput.parseError = 'Invalid domain name. Must be in the format domain.com, for example';\n return validatedInput;\n }\n\n let inputTLD = acceptedTLDs.find((tld) => inputUrl.endsWith('.' + tld));\n // use .com by default if no TLD was entered\n if (!inputTLD) {\n inputUrl = inputUrl + '.com';\n } else {\n inputTLD = '.' + inputTLD;\n }\n\n const domainOnly = inputUrl.split(inputTLD)[0];\n if (domainOnly.endsWith('-') || inputUrl.endsWith('-')) {\n validatedInput.parseError = 'Domain names cannot end with a hyphen';\n return validatedInput;\n } else if (domainOnly.length > 63) {\n validatedInput.parseError = 'Domain name length must be 63 characters or less';\n return validatedInput;\n }\n\n if (!inputUrl.match(acceptedTLDsRegex)) {\n validatedInput.parseError = 'That domain extension is not supported. Please see above for supported extensions.';\n return validatedInput;\n }\n\n validatedInput.domain = inputUrl;\n validatedInput.available = true;\n return validatedInput;\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport { DynamicOrderFormService } from './dynamic-order-form.service';\n\n@Component({\n template: `\n
\n \n
\n \n
\n
\n `,\n styleUrls: ['./terms-of-service-dialog.component.scss'],\n})\nexport class TermsOfServiceDialogComponent {\n termsOfService$: Observable;\n\n constructor(\n private dynamicOrderFormService: DynamicOrderFormService,\n public dialogRef: MatDialogRef,\n ) {\n this.termsOfService$ = this.dynamicOrderFormService.getGoDaddyTermsOfService('.com');\n }\n}\n","import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { interval, Observable, of, Subject } from 'rxjs';\nimport { catchError, filter, map, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { DynamicOrderFormAppIds } from '../../marketplace-app/global-brands-constants';\nimport { ActivationService } from '../core/activation.service';\nimport { acceptedTLDs, DomainSearchResult, DynamicOrderFormService, parseDomain } from './dynamic-order-form.service';\n\nimport { UntypedFormBuilder, UntypedFormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { CustomFieldsAnswer } from '@vendasta/store';\nimport { ProductService } from '../../core/product.service';\nimport { Product } from '../../core/product/product';\nimport { ActivationNavigationService } from '../core/activation-navigation.service';\nimport { ProductOrderFormStoreService } from '../core/product-order-form.store.service';\nimport { TermsOfServiceDialogComponent } from './terms-of-service-dialog.component';\n\n@Component({\n styleUrls: ['dynamic-order-form-page.component.scss'],\n templateUrl: './dynamic-order-form-page.component.html',\n})\nexport class DynamicOrderFormPageComponent implements OnInit, OnDestroy {\n constructor(\n private activationService: ActivationService,\n private dynamicOrderFormService: DynamicOrderFormService,\n private productService: ProductService,\n private router: Router,\n private orderFormStoreService: ProductOrderFormStoreService,\n private snackbarService: SnackbarService,\n private activationNavigationService: ActivationNavigationService,\n private formBuilder: UntypedFormBuilder,\n public dialog: MatDialog,\n ) {}\n\n domainSearchResult$: Observable;\n domainSuggestionResults$: Observable;\n displaySuggestions: boolean;\n product: Observable;\n urlTracking: string;\n godaddyForm: UntypedFormGroup;\n private ngUnsubscribe$$ = new Subject();\n\n @ViewChild('domainSearchText')\n domainSearchTextElement: ElementRef;\n\n ngOnInit(): void {\n this.godaddyForm = this.formBuilder.group({\n domain: [''],\n suggestedDomain: [''],\n tos: [false, Validators.requiredTrue],\n });\n this.godaddyForm.setValidators(this.InputProvidedValidation());\n\n // Remove radio selection on return to input box\n this.godaddyForm\n .get('domain')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe$$))\n .subscribe(() => {\n this.godaddyForm.get('suggestedDomain').setValue('');\n this.godaddyForm.get('domain').setErrors([{ invalidDomain: true }]);\n });\n\n this.product = this.activationService.selectedItems$.pipe(\n map((selectedItems) =>\n Array.from(selectedItems.keys()).find((item) => DynamicOrderFormAppIds.indexOf(item) !== -1),\n ),\n switchMap((appId) => this.productService.getProducts([appId])),\n filter((prods) => prods && prods.length > 0),\n map((prods) => prods[0]),\n );\n\n const selectSearchBoxSubscription = interval(100).subscribe(() => {\n if (this.domainSearchTextElement) {\n this.domainSearchTextElement.nativeElement.focus();\n selectSearchBoxSubscription.unsubscribe();\n }\n });\n\n this.domainSearchResult$ = of({\n domain: '',\n available: false,\n parseError: '',\n });\n\n this.urlTracking = this.router.url;\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe$$.next();\n this.ngUnsubscribe$$.complete();\n }\n\n suggestionClicked(): void {\n // suggested domains are valid choices\n this.godaddyForm.get('domain').setErrors(null);\n }\n\n submitDomain(inputDomain: string): void {\n if (inputDomain === '') {\n return;\n }\n const parseDomainResult = parseDomain(inputDomain);\n if (parseDomainResult.parseError !== '') {\n this.domainSearchResult$ = of({\n domain: '',\n available: false,\n parseError: parseDomainResult.parseError,\n });\n return;\n }\n this.displaySuggestions = true;\n this.domainSearchResult$ = this.dynamicOrderFormService.checkDomainAvailability(parseDomainResult.domain).pipe(\n tap((result) => {\n if (!result.available) {\n this.godaddyForm.get('domain').setErrors([{ invalidDomain: true }]);\n this.domainSuggestionResults$ = this.dynamicOrderFormService.getDomainSuggestions(\n parseDomainResult.domain,\n 6,\n acceptedTLDs,\n );\n } else {\n this.godaddyForm.get('domain').setValue(parseDomainResult.domain);\n this.godaddyForm.get('domain').setErrors(null);\n }\n return;\n }),\n catchError((err) => {\n this.snackbarService.errorSnack('Failed to look up domain. Please try again.');\n return of(err);\n }),\n );\n }\n\n nextStep(): void {\n this.cacheDynamicOrderFormData()\n .pipe(take(1))\n .subscribe((_) => {\n this.activationNavigationService.navigateToNextStep('dynamic-order-form');\n });\n }\n\n previousStep(): void {\n this.activationNavigationService.navigateToPreviousStep('dynamic-order-form');\n }\n\n // Either a radio button has been selected OR a domain has been input\n InputProvidedValidation(): ValidatorFn {\n return (): ValidationErrors => {\n return this.godaddyForm.get('suggestedDomain').value || this.godaddyForm.get('domain').value\n ? null\n : { noInput: true };\n };\n }\n\n openTermsOfServiceDialog(): void {\n this.dialog.open(TermsOfServiceDialogComponent, {\n width: '800px',\n });\n }\n\n private cacheDynamicOrderFormData(): Observable {\n const ready = new Subject();\n this.product.pipe(take(1)).subscribe((product) => {\n const chosenDomain = this.godaddyForm.get('suggestedDomain').value || this.godaddyForm.get('domain').value;\n\n const orderFormData: CustomFieldsAnswer[] = [{ fieldId: 'domain', answer: chosenDomain }];\n this.orderFormStoreService.cacheDynamicOrderForm(product.product_id, orderFormData);\n ready.next(true);\n });\n\n return ready.asObservable();\n }\n}\n","\n \n \n
\n \n \n
\n
\n \n
\n

{{ product.name }}

\n \n {{ product.tagline }}\n \n
\n
\n
\n \n
\n
\n info\n

\n {{ 'ACTIVATION.DYNAMIC_ORDER_FORM_PAGE.SUPPORTED_EXTENSIONS' | translate }}\n

\n
\n
\n
\n \n \n search\n \n
\n
\n
\n
\n
\n check_circle\n

\n {{\n 'ACTIVATION.DYNAMIC_ORDER_FORM_PAGE.DOMAIN_IS_AVAILABLE'\n | translate: { domain: searchResult.domain }\n }}\n

\n
\n
\n
\n error\n

\n {{\n 'ACTIVATION.DYNAMIC_ORDER_FORM_PAGE.DOMAIN_IS_NOT_AVAILABLE'\n | translate: { domain: searchResult.domain }\n }}\n

\n
\n
\n
\n {{ 'ACTIVATION.DYNAMIC_ORDER_FORM_PAGE.SUGGESTED_DOMAINS' | translate }}\n
\n
\n \n 0; else noSuggestions\"\n formControlName=\"suggestedDomain\"\n >\n
\n
\n \n {{ suggestion.domain }}\n \n
\n
\n \n \n
\n {{ 'ACTIVATION.DYNAMIC_ORDER_FORM_PAGE.NO_SUGGESTED_DOMAINS' | translate }}\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n error\n

{{ searchResult.parseError }}

\n
\n
\n

\n {{ 'ACTIVATION.DYNAMIC_ORDER_FORM_PAGE.SEARCH_FOR_ANOTHER_DOMAIN' | translate }}\n

\n
\n
\n
\n\n \n
\n \n
\n {{ 'ACTIVATION.DYNAMIC_ORDER_FORM_PAGE.SEARCHING_FOR_DOMAIN' | translate }}\n
\n
\n
\n \n
\n
\n \n
\n
\n \n {{ 'ACTIVATION.DYNAMIC_ORDER_FORM_PAGE.READ_AND_ACCEPTED_TERMS_OF_SERVICE' | translate }}\n \n {{ 'ACTIVATION.DYNAMIC_ORDER_FORM_PAGE.TERMS_OF_SERVICE' | translate }}\n \n {{ 'ACTIVATION.DYNAMIC_ORDER_FORM_PAGE.FOR_THIS_PRODUCT' | translate }}\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n \n
\n
\n","export const ORDER_FORM_OPTIONS = {\n bypassRequiredQuestions: false,\n readOnly: false,\n showOfficeUseQuestions: true,\n};\n\nexport const FILE_UPLOAD_URL = '/_ajax/v1/marketplace/file/upload';\n","import { FieldBase, ResellerItem } from '@vendasta/store';\nimport { Product } from '../../core/product/product';\n\nexport interface StatusMessage {\n text: string;\n type: 'warn' | 'info';\n}\n\nexport interface ItemIdAndQuantity {\n quantity: number;\n appId?: string;\n addonId?: string;\n editionId?: string;\n}\n\nexport type UniqueIdToItemIdAndQuantityMap = Map;\n\nexport interface CommonFormSection {\n sectionName: string;\n fields: FieldBase[];\n mdIconName: string; // For a list of mat-icons, visit https://material.io/icons/\n}\n\nexport class ProductOrderForm extends Product {\n commonFields: CommonFormSection[];\n customFields: FieldBase[];\n activationMessage: string;\n\n constructor(data: {\n product: Product;\n commonFields?: CommonFormSection[];\n customFields?: FieldBase[];\n activationMessage?: string;\n }) {\n super(data.product);\n this.commonFields = data.commonFields || [];\n this.customFields = data.customFields || [];\n this.activationMessage = data.activationMessage || '';\n }\n}\n\nexport class CommonFormGroup {\n section: CommonFormSection;\n data: any;\n\n constructor(section: CommonFormSection, data: any) {\n this.section = section;\n this.data = data;\n }\n}\n\nexport class ResellerItemOrderForm extends ResellerItem {\n commonFields: CommonFormSection[];\n customFields: FieldBase[];\n activationMessage: string;\n\n constructor(data: {\n product: ResellerItem;\n commonFields?: CommonFormSection[];\n customFields?: FieldBase[];\n activationMessage?: string;\n }) {\n super(data.product);\n this.commonFields = data.commonFields || [];\n this.customFields = data.customFields || [];\n this.activationMessage = data.activationMessage || '';\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n GetMultiOrderFormsResponseOrderFormContainerInterface as MPOrderFormContainerInterface,\n OrderForm,\n} from '@galaxy/marketplace-apps/v1';\nimport {\n CheckboxField,\n CommonFormData,\n DropdownField,\n FieldBase,\n FileUploadGroupField,\n ResellerItem,\n TextareaField,\n TextboxField,\n TextBoxFieldOptions,\n VBCUserField,\n VBCUserFieldOptions,\n} from '@vendasta/store';\nimport { Observable, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Account } from '../../core/account';\nimport { AccountService } from '../../core/account.service';\nimport { Salesperson } from '../../core/salesperson';\nimport { User } from '../../core/user';\nimport { FILE_UPLOAD_URL } from './constants';\nimport { CommonFormSection, ResellerItemOrderForm } from './interface';\n\nexport interface Activation {\n productId: string;\n name: string;\n isSuccess?: boolean;\n errorMessage?: string;\n}\n\n@Injectable()\nexport class ProductOrderFormService {\n constructor(private accountService: AccountService) {}\n\n static commonFieldsMap = {\n contact_email: 'Contact Email',\n contact_name: 'Contact Name',\n contact_phone_number: 'Contact Phone Number',\n business_account_group_id: 'Business Account Group ID',\n business_name: 'Business Name',\n business_address: 'Business Address',\n business_phone_number: 'Business Phone Number',\n business_website: 'Business Website',\n salesperson_name: 'Salesperson Name',\n salesperson_email: 'Salesperson Email',\n salesperson_phone_number: 'Salesperson Phone Number',\n };\n\n static allCommonFieldsMap = [\n 'contact_email',\n 'contact_name',\n 'contact_phone_number',\n 'business_account_group_id',\n 'business_name',\n 'business_address',\n 'business_phone_number',\n 'business_website',\n 'salesperson_name',\n 'salesperson_email',\n 'salesperson_phone_number',\n ];\n private fileUploadUrl = FILE_UPLOAD_URL;\n productIds: string[];\n subscriptions: Subscription[] = [];\n\n // We don't currently have a string data contract between vendor center and partner center in terms of forms fields.\n fieldTypeMap = {\n text: TextboxField,\n textbox: TextboxField,\n dropdown: DropdownField,\n checkbox: CheckboxField,\n file: FileUploadGroupField,\n textarea: TextareaField,\n vbcuser: VBCUserField,\n };\n\n static buildCustomEntryUrlForOrderForm(productID: string): TextBoxFieldOptions {\n return {\n id: 'custom-entry-url-' + productID,\n label: 'Custom Entry Url',\n type: 'text',\n required: true,\n regexValidator: '^(http://|https://).*',\n regexErrorMessage: 'Not in correct format. Should be prefixed with https or http.',\n textboxType: 'text',\n } as TextBoxFieldOptions;\n }\n\n static getFieldIds(commonFormSections: CommonFormSection[]): string[] {\n return commonFormSections.reduce((accumulator, section) => {\n accumulator.push(...section.fields.map((field) => field.id));\n return accumulator;\n }, []);\n }\n\n static getFirstCreatedUser(users: User[]): User {\n return users.reduce((first, current) => {\n return first && first.createdDateTime < current.createdDateTime ? first : current;\n }, null);\n }\n\n static extractCommonFieldData(account: Account, salesperson: Salesperson, user: User): CommonFormData {\n return {\n contact_email: user ? user.email : '',\n contact_name: user ? user.name : '',\n contact_phone_number: user ? user.phoneNumber : '',\n business_account_group_id: account ? account.account_group_id : '',\n business_name: account ? account.company_name : '',\n business_address: account ? account.fullAddress : '',\n business_phone_number: account && account.work_number && account.work_number.length ? account.work_number[0] : '',\n business_website: account ? account.website : '',\n salesperson_name: salesperson ? salesperson.name : '',\n salesperson_email: salesperson ? salesperson.email : '',\n salesperson_phone_number: salesperson ? salesperson.contactNumber : '',\n };\n }\n\n static pickActiveFieldData(activeFieldIds: string[], fieldData: Record): Record {\n return Object.keys(fieldData).reduce((accumulator, fieldId) => {\n if (activeFieldIds.indexOf(fieldId) >= 0) {\n accumulator[fieldId] = fieldData[fieldId];\n }\n return accumulator;\n }, {});\n }\n\n createResellerItem(\n resellerItem: ResellerItem,\n users: User[],\n orderForm: MPOrderFormContainerInterface,\n ): ResellerItemOrderForm {\n const resellerOrderForm = new ResellerItemOrderForm({ product: resellerItem });\n let entryUrlField = [];\n let customField = [];\n if (resellerItem.usesActivationSpecificEntryUrl) {\n entryUrlField = [new TextboxField(ProductOrderFormService.buildCustomEntryUrlForOrderForm(resellerItem.appId))];\n }\n\n if (resellerItem.usesCustomizationForm) {\n customField = this.buildCustomOrderFormFields(orderForm, users || []);\n resellerOrderForm.commonFields = this.buildCommonOrderFormFields(resellerItem);\n }\n resellerOrderForm.customFields = entryUrlField.concat(customField);\n resellerOrderForm.activationMessage = resellerItem.orderForm.activationMessage;\n if (orderForm) {\n resellerOrderForm.orderForm = new OrderForm(orderForm.orderForm);\n }\n return resellerOrderForm;\n }\n\n // extracts common field values from account data\n getCommonFieldValues(): Observable {\n return this.accountService.accountDetails$.pipe(\n map(({ account, users, salesperson }) => {\n const firstUser = users ? ProductOrderFormService.getFirstCreatedUser(users) : null;\n return ProductOrderFormService.extractCommonFieldData(account, salesperson, firstUser);\n }),\n );\n }\n\n getCustomProductEntryURl(purchasableOrderForm: ResellerItemOrderForm): string {\n let urlValue = '';\n const customEntryUrlField = purchasableOrderForm.customFields.find(\n (field) => field.id === 'custom-entry-url-' + purchasableOrderForm.appId,\n );\n if (customEntryUrlField) {\n urlValue = customEntryUrlField.value;\n }\n return urlValue;\n }\n\n buildCustomOrderFormFields(orderForm: MPOrderFormContainerInterface, users?: User[]): FieldBase[] {\n if (\n !!orderForm &&\n orderForm.orderForm &&\n orderForm.orderForm.orderForm &&\n orderForm.orderForm.orderForm.length > 0\n ) {\n return orderForm.orderForm.orderForm\n .filter((field) => this.fieldTypeMap[field.type])\n .map((field) => {\n const fieldClass = this.fieldTypeMap[field.type];\n switch (fieldClass) {\n case CheckboxField: {\n const checkField = new fieldClass(field);\n checkField.required = false;\n return new fieldClass(checkField);\n }\n case DropdownField: {\n const dropDown = new fieldClass(field);\n if (field.options) {\n dropDown.options = field.options.map((option) => {\n return { value: option, label: option };\n });\n }\n return dropDown;\n }\n case VBCUserField: {\n const fieldConfig = {\n description: field.description,\n id: field.id,\n required: field.required,\n type: field.type,\n label: field.label,\n users: users,\n } as VBCUserFieldOptions;\n return new fieldClass(fieldConfig);\n }\n case FileUploadGroupField:\n field = Object.assign({}, field); //Used to eliminate a pass by reference bug\n if (field.description) {\n field.description = field.description.concat('\\n');\n }\n if (!(field.description === undefined || field.description === null)) {\n field.description = field.description.concat(\n 'Max 5 files. Zip common files together if more are needed.',\n );\n }\n field.uploadUrl = this.fileUploadUrl;\n return new fieldClass(field);\n\n default:\n return new fieldClass(field);\n }\n });\n }\n return [];\n }\n\n buildCommonOrderFormFields(_resellerItem: ResellerItem): CommonFormSection[] {\n // For a list of mat-icons, visit https://material.io/icons/\n const businessSection = { sectionName: 'Business', mdIconName: 'business', fields: [] };\n const salespersonSection = { sectionName: 'Salesperson', mdIconName: 'account_circle', fields: [] };\n const contactSection = { sectionName: 'Contact', mdIconName: 'account_circle', fields: [] };\n\n ProductOrderFormService.allCommonFieldsMap.map((field) => {\n const fieldLabel = ProductOrderFormService.commonFieldsMap[field];\n // Check if we have this field in our field map\n if (fieldLabel) {\n const textField = new TextboxField({ id: field, label: fieldLabel, textboxType: 'text' });\n if (field.startsWith('contact')) {\n contactSection.fields.push(textField);\n }\n if (field.startsWith('business')) {\n businessSection.fields.push(textField);\n }\n if (field.startsWith('salesperson')) {\n salespersonSection.fields.push(textField);\n }\n }\n });\n\n return [businessSection, contactSection, salespersonSection].filter((section) => section.fields.length > 0);\n }\n\n destroyService(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","import {\n AppAndAddonActivationStatus,\n ListAppsAndAddonsActivationsStatusesForBusinessResponseAppsAndAddonsActivationStatusesInterface as ActivationStatusesInterface,\n} from '@vendasta/accounts/legacy';\nimport { ResellerItem } from '@vendasta/store';\nimport { getResellerItemUniqueId, resellerArrayToMap } from '../../core/reseller';\nimport { StatusMessage, UniqueIdToItemIdAndQuantityMap } from './interface';\n\nexport function getStatusMessage(\n status: ActivationStatusesInterface,\n name: string,\n allowMultipleActivations: boolean,\n): StatusMessage {\n const t = allowMultipleActivations ? 'info' : 'warn';\n const activationActionString = allowMultipleActivations\n ? 'More will be activated as a part of this order'\n : 'It will not be activated as part of this order';\n\n switch (status.status) {\n case AppAndAddonActivationStatus.ACTIVATED:\n return {\n text: `This account already has ${\n status.count > 1 ? status.count + ' ' + name + \"'s\" : name\n }. ${activationActionString}.`,\n type: t,\n };\n case AppAndAddonActivationStatus.PENDING:\n return {\n text: `This account already has ${\n status.count > 1 ? status.count + ' ' + name + \"'s\" : name\n } pending. ${activationActionString}.`,\n type: t,\n };\n }\n return undefined;\n}\n\n// Filter out reseller items that are not multi activatable if they are in the pending / activated state.\nexport function filterResellerItemsByStatuses(\n resellerItems: ResellerItem[],\n statuses: ActivationStatusesInterface[],\n): ResellerItem[] {\n if (!resellerItems) {\n return [];\n }\n\n if (!statuses) {\n return resellerItems;\n }\n\n const appStatusMap: Map = (resellerItems || []).reduce((m, curr) => {\n const id = getResellerItemUniqueId(curr);\n const riStatuses = statuses.filter((status) => status.appId === id);\n m.set(id, riStatuses);\n return m;\n }, new Map());\n\n return resellerItems.filter((ri) => {\n if (ri.allowMultipleActivations) {\n return true;\n }\n\n const id = getResellerItemUniqueId(ri);\n if (!appStatusMap.get(id)) {\n return true;\n }\n\n const riStatuses = appStatusMap.get(id);\n return !riStatuses.some(\n (s) => s.status === AppAndAddonActivationStatus.ACTIVATED || s.status === AppAndAddonActivationStatus.PENDING,\n );\n });\n}\n\n// Sort statusMessages by their type\nexport function sortStatusMessages(statusMessages: StatusMessage[]): StatusMessage[] {\n const warningMessages = (statusMessages || []).filter((m) => m.type === 'warn');\n const infoMessages = (statusMessages || []).filter((m) => m.type === 'info');\n return [...warningMessages, ...infoMessages];\n}\n\nexport function filterStatusMessagesInOrder(\n addons: ResellerItem[],\n apps: ResellerItem[],\n customProducts: ResellerItem[],\n statuses: ActivationStatusesInterface[],\n resellerItemMap: UniqueIdToItemIdAndQuantityMap,\n): StatusMessage[] {\n // Get Map of reseller items that are a part of this order\n const allResellerItems = [...apps, ...addons, ...customProducts];\n const filteredResellerItems = allResellerItems.filter((ri) => {\n return resellerItemMap.has(getResellerItemUniqueId(ri));\n });\n const riMap = resellerArrayToMap(filteredResellerItems);\n\n // Filter the statuses to only apps that are in this order\n const filteredStatuses = statuses.filter((status) => {\n return status && riMap.has(status.appId);\n });\n\n return filteredStatuses\n .map((status) => {\n const ri = riMap.get(status.appId);\n return getStatusMessage(status, ri ? ri.name : '', ri ? ri.allowMultipleActivations : false);\n })\n .filter(Boolean);\n}\n","import { Component, Input } from '@angular/core';\nimport { BillingStrategy } from '@galaxy/billing';\nimport { OrderConfirmationItem } from '../../../confirmation-page/interface';\nimport { AppIdToEditionIdToEditionMap, isValidEditionId } from '../../../core/interface';\n\n@Component({\n selector: 'app-order-form-apps-custom-price',\n templateUrl: './apps-custom-price.component.html',\n styleUrls: ['./apps-custom-price.component.scss'],\n})\nexport class AppsCustomPriceComponent {\n orderItems: OrderConfirmationItem[];\n instantActivationItemSummaries: OrderConfirmationItem[] = [];\n activationItemSummaries: OrderConfirmationItem[] = [];\n @Input() productIsInstantBilledMap: Map;\n @Input() userCanEditBillingInfo: boolean;\n @Input() stairStepOrderRequiresBilling: boolean;\n @Input() partnerId: string;\n @Input() billingInfoConfigured: boolean;\n @Input() submitDisabled: boolean;\n @Input() accountGroupId: string;\n @Input() hidePricing: boolean;\n @Input() editionsMap: AppIdToEditionIdToEditionMap;\n\n @Input()\n set orderConfirmationItems(orderItems: OrderConfirmationItem[]) {\n orderItems = orderItems || [];\n this.orderItems = orderItems.filter(\n (item) =>\n !item.priceOverride && item.appPrices.pricesForContexts['wholesale'].billingConfiguration.usesVariablePricing,\n );\n const instantBilledOrderItems = this.getBilledOrderItemsForStrategy(\n this.orderItems,\n this.productIsInstantBilledMap,\n BillingStrategy.Instantly,\n );\n this.instantActivationItemSummaries = this.buildActivationItemSummaries(instantBilledOrderItems, this.editionsMap);\n const nonInstantBilledOrderItems = this.orderItems.filter(\n (item) => !instantBilledOrderItems.find((i) => i.appId === item.appId && i.addonId === item.addonId),\n );\n this.activationItemSummaries = this.buildActivationItemSummaries(nonInstantBilledOrderItems, this.editionsMap);\n }\n\n buildActivationItemSummaries(\n orderItems: OrderConfirmationItem[],\n editionsMap: AppIdToEditionIdToEditionMap,\n ): OrderConfirmationItem[] {\n if (!orderItems?.length) {\n return [];\n }\n orderItems = orderItems.filter(\n (item) => item.appPrices.pricesForContexts['wholesale'].billingConfiguration.usesVariablePricing,\n );\n return orderItems.map((oi) => {\n if (this.orderConfirmationItemHasValidEditionId(oi)) {\n oi.editionName = editionsMap.get(oi.appId).get(oi.editionId).editionName;\n }\n return oi;\n });\n }\n orderConfirmationItemHasValidEditionId(item: OrderConfirmationItem): boolean {\n if (!item) {\n return false;\n }\n const { editionId, appId } = item;\n const itemHasValidEditionId = isValidEditionId(editionId);\n const editionsEntry = this.editionsMap.get(appId);\n const editionDataIsInEditionsMap = !!(editionsEntry && editionsEntry.get(editionId));\n return itemHasValidEditionId && editionDataIsInEditionsMap;\n }\n getBilledOrderItemsForStrategy(\n items: OrderConfirmationItem[],\n isInstantBilledMap: Map,\n billingStrategy: BillingStrategy,\n ): OrderConfirmationItem[] {\n return (items || []).filter((item) => billingStrategy === isInstantBilledMap.get(item.addonId || item.appId));\n }\n}\n","\n \n \n
\n \n
\n
\n\n \n \n
\n \n
\n
\n
\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { BillingStrategy } from '@galaxy/billing';\nimport { EnvironmentService } from '@galaxy/core';\nimport {\n GetMultiOrderFormsResponseOrderFormContainerInterface as MPOrderFormContainerInterface,\n MarketplaceAppsApiService,\n} from '@galaxy/marketplace-apps/v1';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BlamePackageActivation } from '@vendasta/accounts/legacy';\nimport { ProductActivationPrereqFormComponent } from '@vendasta/businesses';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport {\n FulfillmentOrderConfigApiService,\n GetFulfillmentOrderConfigRequest,\n ReleaseType,\n} from '@vendasta/marketplace-apps';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { Field, LineItem, Order } from '@vendasta/sales-orders';\nimport { SalesOrderFormComponent } from '@vendasta/sales-ui';\nimport {\n CommonFormData,\n CustomFieldsAnswers,\n IncludedCommonFormFieldsInterface,\n OrderFormFieldOptionsType,\n OrderFormInterface,\n OrderFormOptionsInterface,\n ProductInfoInterface,\n ResellerItem,\n} from '@vendasta/store';\nimport {\n BehaviorSubject,\n combineLatest,\n forkJoin,\n forkJoin as observableForkJoin,\n Observable,\n of as observableOf,\n of,\n Subscription,\n} from 'rxjs';\nimport {\n catchError,\n distinctUntilChanged,\n filter,\n first,\n map,\n publishReplay,\n refCount,\n shareReplay,\n skipWhile,\n switchMap,\n take,\n tap,\n} from 'rxjs/operators';\nimport { AppConfigService } from '../../../app-config.service';\nimport { ButtonDescriptor, VDialogComponent } from '../../../common/v-dialog.component';\nimport { AccountService } from '../../../core/account.service';\nimport { BillingApiService } from '../../../core/billing/billing-api.service';\nimport { PricingService } from '../../../core/billing/pricing.service';\nimport { PurchaseCost } from '../../../core/billing/purchase-cost';\nimport { HidePricingGuard } from '../../../core/guards/hide-pricing-guard.service';\nimport { getResellerItemUniqueId } from '../../../core/reseller';\nimport { ResellerItemService } from '../../../core/reseller/reseller-item.service';\nimport { BillingStrategy as DeprecatedStrategy } from '../../../core/subscription-level';\nimport { User } from '../../../core/user';\nimport { godaddyAppId, whitelabelDomainAppId } from '../../../marketplace-app/global-brands-constants';\nimport { OrderConfirmationItem } from '../../confirmation-page/interface';\nimport { OrderConfirmationService } from '../../confirmation-page/order-confirmation.service';\nimport { StairstepOrderService } from '../../confirmation-page/stairstep-order.service';\nimport { ActivationNavigationService } from '../../core/activation-navigation.service';\nimport { ActivationParamService } from '../../core/activation-param.service';\nimport { ActivationService } from '../../core/activation.service';\nimport { AppIdToEditionIdToEditionMap, OrderFormType } from '../../core/interface';\nimport { ProductOrderFormStoreService } from '../../core/product-order-form.store.service';\nimport { FILE_UPLOAD_URL, ORDER_FORM_OPTIONS } from '../constants';\nimport { ResellerItemOrderForm, StatusMessage } from '../interface';\nimport { ProductOrderFormService } from '../product-order-form.service';\nimport { filterStatusMessagesInOrder, sortStatusMessages } from '../utils';\n\ntype OrderFormSubmissionErrorType = 'activationFailure' | 'unknownFailure' | 'noAppsError' | 'invalidForm';\n\ninterface OrderFormSubmissionError {\n appNames: string[];\n type: OrderFormSubmissionErrorType;\n errorMessage: string;\n openFailureDialog: boolean;\n}\n\ninterface OrderData {\n orderForms: OrderFormInterface[];\n commonData: CommonFormData;\n answers: CustomFieldsAnswers[];\n options: OrderFormOptionsInterface;\n users: User[];\n}\n\n@Component({\n styleUrls: ['order-form-page.component.scss'],\n templateUrl: 'order-form-page.component.html',\n providers: [ProductOrderFormService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OrderFormPageComponent implements OnInit, OnDestroy {\n @ViewChild('salesOrderForm') salesOrderFormComponent: SalesOrderFormComponent;\n @ViewChild('productActivationPrereqForm')\n productActivationPrereqFormComponent: ProductActivationPrereqFormComponent;\n\n form: UntypedFormGroup = new UntypedFormGroup({});\n includedApps$: Observable;\n includedAddons$: Observable;\n mpOrderForms$: Observable;\n fileUploadUrl = FILE_UPLOAD_URL;\n productInfo: ProductInfoInterface[];\n options: OrderFormOptionsInterface;\n orderData$: Observable;\n isFormLoading = false;\n\n // checkoutItems are used to handle billing and activation restriction logic, and to find productInfo above\n checkoutItems: ResellerItemOrderForm[];\n addonCheckoutItems: ResellerItemOrderForm[];\n appCheckoutItems: ResellerItemOrderForm[];\n\n vDialog: MatDialogRef;\n hasItemsThatAreNotFree: boolean;\n accountGroupId$: Observable;\n accountGroupId = '';\n\n partnerId$: Observable;\n partnerId = '';\n marketId$: Observable;\n marketId = '';\n\n activationsRequiresApproval: string[];\n subscriptions: Subscription[] = [];\n\n // TODO: Rely solely on these\n appQuantityMap$: Observable>;\n addonQuantityMap$: Observable>;\n\n // verbose apps are all of the apps you are buying and the parent apps of any addons being bought\n verboseAppQuantityMap: Map;\n orderFormAndPrice$: Observable<{ orderForm: ResellerItemOrderForm; price: PurchaseCost }[]>;\n purchaseCosts: Map = new Map();\n hidePricing = true;\n hasInstantBillItems = false;\n hasContactSale: boolean;\n skus: string[];\n instantBillItemsSkus: string[];\n contactSalesSkus: string[];\n packageInfo$: Observable;\n statusMessages$: Observable;\n\n lineItems$: Observable;\n salesOrder$: Observable;\n productIds$: Observable = of([]);\n\n numCustomFormFields = 0;\n shouldDisplayBanner$: Observable;\n accountName$: Observable;\n resellerName$: Observable;\n\n //Order confirmation attributes\n orderConfirmationItems$: Observable;\n productIsInstantBilledMap$: Observable>;\n userCanEditBillingInfo$: Observable;\n billingInfoConfigured$: Observable;\n stairstepOrderRequiresBilling$: Observable;\n editionsMap$: Observable;\n salesOrderCached$$: BehaviorSubject = new BehaviorSubject(false);\n someProductHasWorkOrderEnabled$: Observable;\n\n constructor(\n private formService: ProductOrderFormService,\n private snackbarService: SnackbarService,\n private dialog: MatDialog,\n private resellerItemService: ResellerItemService,\n private accountService: AccountService,\n private hidePricingGuard: HidePricingGuard,\n private billingApiService: BillingApiService,\n private app: AppConfigService,\n private pricingService: PricingService,\n private orderParamService: ActivationParamService,\n private orderFormStoreService: ProductOrderFormStoreService,\n private activationService: ActivationService,\n private activationNavigationService: ActivationNavigationService,\n private environmentService: EnvironmentService,\n private appService: MarketplaceAppsApiService,\n private translate: TranslateService,\n private productAnalyticsService: ProductAnalyticsService,\n private productConfirmationService: OrderConfirmationService,\n private stairstepOrderService: StairstepOrderService,\n private formConfigService: FulfillmentOrderConfigApiService,\n ) {}\n\n private filterForAddons(addons: ResellerItem[], addonQuantityMap: Map): ResellerItem[] {\n return addons.filter((addon) => {\n if (addonQuantityMap.has(addon.addonId)) {\n if (!this.verboseAppQuantityMap.has(addon.appId)) {\n this.verboseAppQuantityMap.set(addon.appId, 0);\n }\n addon.quantity = addonQuantityMap.get(addon.addonId);\n return true;\n }\n return false;\n });\n }\n\n // Verbose apps are all of the apps you are buying and the parent apps of any addons being bought\n private filterForVerboseApps(apps: ResellerItem[]): ResellerItem[] {\n return this.filterForAppsGivenMap(apps, this.verboseAppQuantityMap);\n }\n\n private filterForAppsGivenMap(apps: ResellerItem[], verboseAppQuantityMap: Map): ResellerItem[] {\n return apps.filter((app) => {\n if (verboseAppQuantityMap.has(app.appId)) {\n app.quantity = verboseAppQuantityMap.get(app.appId);\n return true;\n }\n return false;\n });\n }\n\n // tslint:disable:no-string-literal\n ngOnInit(): void {\n // skip to next step if no items require order form\n this.subscriptions.push(\n this.activationService.selectedItemsRequireOrderForm$\n .pipe(first())\n .subscribe((requiresOrderForm: OrderFormType) => {\n if (requiresOrderForm === OrderFormType.NONE) {\n this.activationNavigationService.navigateToNextStep('order-form');\n }\n }),\n );\n this.accountGroupId$ = this.orderParamService.accountGroupId$;\n this.marketId$ = this.orderParamService.marketId$;\n this.partnerId$ = this.orderParamService.partnerId$;\n\n //Order form confirmation attributes\n this.orderConfirmationItems$ = this.productConfirmationService.orderConfirmationItems$;\n this.productIsInstantBilledMap$ = this.productConfirmationService.productIsInstantBilledMap$;\n this.userCanEditBillingInfo$ = this.productConfirmationService.userCanEditBillingInfo$;\n this.billingInfoConfigured$ = this.productConfirmationService.billingInfoConfigured$;\n this.editionsMap$ = this.productConfirmationService.editionIdToEditionMap$;\n this.stairstepOrderRequiresBilling$ = this.stairstepOrderService.orderRequiresBillingInfo(\n this.orderConfirmationItems$,\n );\n\n this.subscriptions.push(\n this.accountGroupId$.subscribe((agid) => {\n this.accountService.setCurrentAccountID(agid, false);\n this.accountGroupId = agid;\n }),\n );\n\n this.subscriptions.push(\n this.partnerId$.subscribe((pid) => {\n this.partnerId = pid;\n }),\n );\n\n this.subscriptions.push(\n this.marketId$.subscribe((mid) => {\n this.marketId = mid;\n }),\n );\n\n // grabs app and addon quantity and ids from the url query params\n const resellerItemQuantityMap$ = this.orderParamService.resellerItemQuantityMapFromUrl$.pipe(shareReplay(1));\n\n // splits the reseller items into separate app and addon quantity mappings\n this.appQuantityMap$ = resellerItemQuantityMap$.pipe(\n map((quantityMap) => {\n const appQuantityMap = new Map();\n\n Array.from(quantityMap.values()).forEach((itemQuantity) => {\n if (itemQuantity.appId && !itemQuantity.addonId) {\n appQuantityMap.set(getResellerItemUniqueId(itemQuantity), itemQuantity.quantity || 1);\n }\n });\n\n return appQuantityMap;\n }),\n shareReplay(1),\n );\n\n this.addonQuantityMap$ = resellerItemQuantityMap$.pipe(\n map((quantityMap) => {\n const addonQuantityMap = new Map();\n\n Array.from(quantityMap.values()).forEach((itemQuantity) => {\n if (itemQuantity.addonId) {\n addonQuantityMap.set(getResellerItemUniqueId(itemQuantity), itemQuantity.quantity || 1);\n }\n });\n\n return addonQuantityMap;\n }),\n shareReplay(1),\n );\n\n const statuses$ = this.accountGroupId$.pipe(\n distinctUntilChanged(),\n switchMap((accountGroupId) => {\n return this.accountService.getAppStatusesForBusiness(accountGroupId);\n }),\n shareReplay(1),\n );\n\n this.statusMessages$ = combineLatest([\n this.resellerItemService.getAddonData(),\n this.resellerItemService.getAppsForSelectedMarket(),\n this.resellerItemService.getCustomProductData(),\n statuses$,\n resellerItemQuantityMap$,\n ]).pipe(\n map(([addons, apps, cps, statuses, resellerItemMap]) =>\n filterStatusMessagesInOrder(addons, apps, cps, statuses, resellerItemMap),\n ),\n map(sortStatusMessages),\n );\n\n this.salesOrder$ = this.orderFormStoreService.cachedOrder$;\n\n const env = this.environmentService.getEnvironment();\n\n const dynamicFieldValues$ = this.appQuantityMap$.pipe(\n switchMap((items) => {\n if (items.has(godaddyAppId[env])) {\n return this.orderFormStoreService.getDynamicOrderForm$(godaddyAppId[env]);\n }\n if (items.has(whitelabelDomainAppId[env])) {\n return this.orderFormStoreService.getDynamicOrderForm$(whitelabelDomainAppId[env]);\n }\n return observableOf([]);\n }),\n );\n\n // Prefill the order form with previous field values, whether a dynamic step or previously cached order forms\n const answers$ = combineLatest([resellerItemQuantityMap$, this.salesOrder$, dynamicFieldValues$]).pipe(\n map(([resellerItemQuantityMap, salesOrder, dynamicFieldValues]) => {\n const customFieldsAnswers = (salesOrder?.customFields || []).map((customField) => {\n const transformedCustomField = {\n productID: customField.addonKey?.appId || customField.productId,\n addonKey: customField.addonKey,\n customFieldsAnswers: customField.fields,\n } as CustomFieldsAnswers;\n\n // prioritize the field values set from the dynamic/custom order resellerItem stage upon multi-activation on single account\n const isDynamicForm =\n customField.productId === godaddyAppId[env] || customField.productId === whitelabelDomainAppId[env];\n if (isDynamicForm && dynamicFieldValues) {\n dynamicFieldValues.forEach((thisCustomFieldsAnswers) => {\n thisCustomFieldsAnswers.customFieldsAnswers.forEach((fieldAnswer) => {\n transformedCustomField.customFieldsAnswers.push({\n answer: fieldAnswer.answer,\n fieldId: fieldAnswer.fieldId,\n });\n });\n });\n }\n\n customField.fields.forEach((field: Field) => {\n // TODO allow a particular field of the order form component to be disabled/readonly\n // GoDaddy/Domains uses dynamic cached values for the domain field\n if (!(field.fieldId === 'domain' && isDynamicForm && dynamicFieldValues)) {\n transformedCustomField.customFieldsAnswers.push({\n answer: field.answer,\n fieldId: field.fieldId,\n });\n }\n });\n\n return transformedCustomField;\n });\n\n // if there was no cached order form, look for the dynamic values in cache\n const dynamicStageValue =\n resellerItemQuantityMap.get(godaddyAppId[env]) || resellerItemQuantityMap.get(whitelabelDomainAppId[env]);\n if (dynamicStageValue && dynamicFieldValues) {\n const answers: CustomFieldsAnswers = {\n productID: dynamicStageValue.appId,\n customFieldsAnswers: [],\n };\n dynamicFieldValues.forEach((thisCustomFieldsAnswers) => {\n thisCustomFieldsAnswers.customFieldsAnswers.forEach((fieldAnswer) => {\n answers.customFieldsAnswers.push({\n answer: fieldAnswer.answer,\n fieldId: fieldAnswer.fieldId,\n displayOnly: fieldAnswer.fieldId === 'domain',\n });\n });\n });\n customFieldsAnswers.push(answers);\n }\n\n return customFieldsAnswers;\n }),\n );\n\n this.includedApps$ = combineLatest([\n this.resellerItemService.getAppsForSelectedMarket(),\n this.resellerItemService.getCustomProductData(),\n this.appQuantityMap$,\n ]).pipe(\n take(1),\n map(([apps, customApps, appQuantityMap]) => {\n this.verboseAppQuantityMap = new Map(appQuantityMap);\n const customProductsAndApps = ResellerItemService.combineCustomProductsAndApps(customApps, apps);\n return this.filterForAppsGivenMap(customProductsAndApps, appQuantityMap);\n }),\n );\n\n this.includedAddons$ = combineLatest([\n this.resellerItemService.getAddonData(),\n this.addonQuantityMap$,\n this.appQuantityMap$,\n ]).pipe(\n take(1),\n map(([addons, addonQuantityMap, appQuantityMap]) => {\n this.verboseAppQuantityMap = new Map(appQuantityMap);\n return this.filterForAddons(addons, addonQuantityMap);\n }),\n );\n\n this.lineItems$ = this.salesOrder$.pipe(\n filter((order) => Boolean(order)),\n take(1),\n map((order) => {\n return order.lineItems;\n }),\n );\n\n this.mpOrderForms$ = combineLatest([this.includedApps$, this.includedAddons$]).pipe(\n take(1),\n switchMap(([includedApps, includedAddons]) => {\n return this.getMarketplaceOrderForms(this.partnerId, includedApps, includedAddons);\n }),\n );\n\n // grabs app info for billing info and creating resellerItems for activation\n const commonData$ = combineLatest([\n this.resellerItemService.getAddonData(),\n this.resellerItemService.getAppsForSelectedMarket(),\n this.resellerItemService.getCustomProductData(),\n this.mpOrderForms$,\n this.appQuantityMap$,\n this.addonQuantityMap$,\n this.partnerId$,\n this.accountService.users$,\n ]).pipe(\n catchError(() => {\n this.failureDialog([], 'unknownFailure');\n return observableOf(null);\n }),\n switchMap(([allAddons, allApps, allCPs, orderForms, appQuantityMap, addonQuantityMap, partnerId, users]) => {\n const appsAndCustomProducts = ResellerItemService.combineCustomProductsAndApps(allCPs, allApps);\n const addons = this.filterForAddons(allAddons, addonQuantityMap);\n const verboseApps = this.filterForVerboseApps(appsAndCustomProducts);\n\n this.populateResellerItemInfo(verboseApps, addons, appQuantityMap, users, orderForms);\n this.pushBillingIdsToInstanceSkuList(addons);\n this.pushBillingIdsToInstanceSkuList(verboseApps);\n\n if (this.skus && this.skus.length > 0) {\n this.subscriptions.push(\n this.pricingService.getMultiProductPricing(partnerId, this.skus).subscribe((results) => {\n if (results) {\n for (const sku of this.skus) {\n if (\n results[sku] &&\n DeprecatedStrategy.fromBillingSDK(results[sku].strategy).isNonInvoicedStrategy()\n ) {\n this.hasInstantBillItems = true;\n this.instantBillItemsSkus.push(sku);\n }\n }\n }\n }),\n );\n }\n\n return this.formService.getCommonFieldValues().pipe(\n catchError(() => {\n this.failureDialog([], 'unknownFailure');\n return observableOf(null);\n }),\n );\n }),\n shareReplay(1),\n );\n\n this.orderFormAndPrice$ = combineLatest([this.hidePricingGuard.canActivate(), commonData$]).pipe(\n skipWhile(() => {\n return this.checkoutItems ? this.checkoutItems.length <= 0 : !this.checkoutItems;\n }),\n switchMap(([hidePricing, _]) => {\n this.hidePricing = hidePricing;\n return observableForkJoin(\n this.checkoutItems.map((item) => {\n if (!hidePricing && !item.appId.startsWith('CP-')) {\n const prevPurchaseCost = this.purchaseCosts.get(item.billingId);\n if (prevPurchaseCost) {\n return observableOf(prevPurchaseCost);\n }\n return this.billingApiService.getPurchaseCost(this.partnerId, item.billingId, item.quantity).pipe(\n map((price) => {\n if (price) {\n this.purchaseCosts.set(item.billingId, {\n orderForm: item,\n price: price,\n });\n return { orderForm: item, price: price };\n }\n const freq = item.billingFrequency === 'once' ? 'one time' : item.billingFrequency;\n return {\n orderForm: item,\n price: {\n billingFrequency: freq.toLowerCase(),\n totalCost: -1,\n currency: item.currency,\n },\n };\n }),\n );\n } else {\n const freq = item.billingFrequency === 'once' ? 'one time' : item.billingFrequency;\n const price = {\n billingFrequency: freq.toLowerCase(),\n totalCost: item.price * item.quantity,\n currency: item.currency,\n };\n return observableOf({ orderForm: item, price: price });\n }\n }),\n ).pipe(\n catchError(() => {\n this.failureDialog([], 'unknownFailure');\n return observableOf(null);\n }),\n );\n }),\n tap((orderPrice) => (this.hasItemsThatAreNotFree = orderPrice.some((order) => order.price.totalCost > 0))),\n shareReplay(1),\n );\n\n this.subscriptions.push(\n this.orderFormAndPrice$.subscribe((orderFormAndPrices) => {\n if (orderFormAndPrices) {\n orderFormAndPrices.forEach((orderFormAndPrice) => {\n if (orderFormAndPrice.price && orderFormAndPrice.price.totalCost === -1) {\n this.hasContactSale = true;\n this.contactSalesSkus.push(orderFormAndPrice.orderForm.billingId);\n }\n });\n }\n }),\n );\n\n const orderForms$ = combineLatest([this.mpOrderForms$, this.includedApps$, this.includedAddons$]).pipe(\n take(1),\n map(([mpOrderForms, apps, addons]) => {\n const items = apps.concat(addons);\n return items.reduce((forms, item) => {\n let commonFormRequiredFields: IncludedCommonFormFieldsInterface = {};\n let customFields: OrderFormFieldOptionsType[] = [];\n\n // check if the app has a custom entry URL in order to append it as a custom field\n if (item.usesActivationSpecificEntryUrl) {\n customFields.unshift(\n ProductOrderFormService.buildCustomEntryUrlForOrderForm(item.appId) as OrderFormFieldOptionsType,\n );\n }\n\n const mainId = item.addonId ? item.addonId : item.appId;\n const mpOrderForm = mpOrderForms.find((o) => o.appId === mainId);\n\n if (!!mpOrderForm || item.usesActivationSpecificEntryUrl) {\n if (!!mpOrderForm && mpOrderForm.orderForm) {\n if (mpOrderForm.orderForm.commonFormRequiredFields) {\n commonFormRequiredFields = mpOrderForm.orderForm.commonFormRequiredFields;\n }\n if (mpOrderForm.orderForm.orderForm && item.usesCustomizationForm) {\n customFields = customFields.concat(\n mpOrderForm.orderForm.orderForm.map(\n (f) =>\n ({\n ...f,\n options: f.optionsWithLabels,\n }) as OrderFormFieldOptionsType,\n ),\n );\n }\n }\n\n const createdForm: OrderFormInterface = {\n appId: item.appId,\n addonId: item.addonId,\n customFields: customFields,\n commonFormRequiredFields: commonFormRequiredFields,\n };\n forms.push(createdForm);\n if (item.addonId && mpOrderForm && mpOrderForm.orderForm && mpOrderForm.orderForm.separateOrderForms) {\n for (let i = 1; i < item.quantity; i++) {\n forms.push(createdForm);\n }\n }\n }\n forms?.forEach((form) => (this.numCustomFormFields += form.customFields.length));\n return forms;\n }, []);\n }),\n shareReplay(1),\n );\n\n this.orderData$ = combineLatest([orderForms$, commonData$, answers$, this.accountService.users$]).pipe(\n take(1),\n tap(([orderForms]) => orderForms.forEach((form) => (this.numCustomFormFields += form.customFields.length))),\n map(([orderForms, commonData, answers, users]) => {\n return {\n orderForms: orderForms,\n commonData: commonData,\n answers: answers,\n options: ORDER_FORM_OPTIONS,\n users: users,\n };\n }),\n shareReplay(1),\n );\n\n this.productIds$ = this.getProductIds$();\n\n this.shouldDisplayBanner$ = orderForms$.pipe(map((orderForms) => orderForms?.length > 0));\n\n this.accountName$ = this.accountService.account$.pipe(map((account) => account?.company_name || ''));\n this.resellerName$ = this.app.config$.pipe(map((config) => config?.partnerName || ''));\n\n this.someProductHasWorkOrderEnabled$ = this.getProductIds$().pipe(\n switchMap((productIds) => {\n const reqs = productIds.map((appId) => {\n return this.formConfigService.getFulfillmentOrderConfig(\n new GetFulfillmentOrderConfigRequest({\n appId: appId,\n release: ReleaseType.RELEASE_TYPE_PUBLISHED,\n projectionFilter: { includeFormConfig: true },\n }),\n );\n });\n return forkJoin(reqs);\n }),\n map((resps) => {\n return resps.some((resp) => resp?.config?.isEnabled || resp?.config?.usesFulfillmentForm);\n }),\n tap((someProductHasWorkOrderEnabled) => {\n if (someProductHasWorkOrderEnabled) {\n this.productAnalyticsService.trackEvent(\n 'order-form-product-uses-fulfillment-form',\n 'work-order',\n 'page-view',\n );\n }\n }),\n );\n }\n\n private getMarketplaceOrderForms(\n partnerId: string,\n apps: ResellerItem[],\n addons: ResellerItem[],\n ): Observable {\n let appAndAddonIds = apps.filter((app) => app.usesCustomizationForm && app.orderForm).map((app) => app.appId);\n appAndAddonIds = appAndAddonIds.concat(\n addons.filter((addon) => addon.usesCustomizationForm && addon.orderForm).map((addon) => addon.addonId),\n );\n if (appAndAddonIds.length > 0) {\n return this.appService.getMultiOrderForms({ partnerId: partnerId, appIds: appAndAddonIds }).pipe(\n take(1),\n map((resp) => resp.orderFormContainer || []),\n );\n }\n return observableOf([]);\n }\n\n private pushBillingIdsToInstanceSkuList(resellerItems: ResellerItem[]): void {\n if (resellerItems && resellerItems.length > 0) {\n this.skus.push(...resellerItems.map((item) => item.billingId));\n }\n }\n\n private hasCustomOrCommonFields(orderForms: ResellerItemOrderForm): boolean {\n return (\n (orderForms.customFields && orderForms.customFields.length > 0) ||\n (orderForms.commonFields && orderForms.commonFields.length > 0)\n );\n }\n\n private initializeInstanceVariables(): void {\n this.checkoutItems = [];\n this.activationsRequiresApproval = [];\n this.appCheckoutItems = [];\n this.addonCheckoutItems = [];\n this.skus = [];\n this.instantBillItemsSkus = [];\n this.contactSalesSkus = [];\n this.productInfo = [];\n }\n\n // populates the product info for the order form component and prepares the checkout items for activation\n private populateResellerItemInfo(\n products: ResellerItem[],\n addons: ResellerItem[],\n appIdQMap: Map,\n users: User[],\n orderForms: MPOrderFormContainerInterface[],\n ): void {\n this.initializeInstanceVariables();\n\n products.map((product) => {\n const combinedAddonResellerInfo: ResellerItemOrderForm[] = [];\n\n // build ResellerItem information for addons\n this.addonCheckoutItems = addons.reduce((addonCheckoutItems, addon) => {\n addon.currency = product.currency;\n if (addon.appId === product.appId) {\n const addonOrderForm = orderForms.find((o) => o.appId === addon.addonId);\n const addonResellerInfo: ResellerItemOrderForm = this.formService.createResellerItem(\n addon,\n users,\n addonOrderForm,\n );\n combinedAddonResellerInfo.push(addonResellerInfo);\n\n if (this.hasCustomOrCommonFields(addonResellerInfo)) {\n if (\n addonResellerInfo.quantity > 1 &&\n addonResellerInfo.orderForm &&\n addonResellerInfo.orderForm.separateOrderForms\n ) {\n for (let i = 0; i < addonResellerInfo.quantity; i++) {\n const separateAddonForm = this.formService.createResellerItem(addon, users, addonOrderForm);\n separateAddonForm.quantity = 1;\n addonCheckoutItems.push(separateAddonForm);\n }\n } else {\n addonCheckoutItems.push(addonResellerInfo);\n }\n } else {\n addonCheckoutItems.push(addonResellerInfo);\n }\n if (\n addon.activationRequiresApproval &&\n this.activationsRequiresApproval.indexOf(addonResellerInfo.name) < 0\n ) {\n this.activationsRequiresApproval.push(addon.name);\n }\n }\n return addonCheckoutItems;\n }, this.addonCheckoutItems);\n\n // handle the product's ResellerItem information\n const productOrderForm = orderForms.find((o) => o.appId === product.appId);\n const productResellerInfo: ResellerItemOrderForm = this.formService.createResellerItem(\n product,\n users,\n productOrderForm,\n );\n if (appIdQMap.has(product.appId)) {\n this.appCheckoutItems.push(productResellerInfo);\n this.checkoutItems.push(productResellerInfo);\n\n if (product.activationRequiresApproval) {\n this.activationsRequiresApproval.push(product.name);\n }\n }\n\n this.checkoutItems = this.checkoutItems.concat(combinedAddonResellerInfo);\n });\n\n // build the product info for each item being checked out, using only addons if they have an orderform\n this.checkoutItems.forEach((item) => {\n if (item.addonId) {\n const parentProductInfo = this.productInfo.find((product) => product.productId === item.appId);\n\n if (parentProductInfo) {\n // this case is to match an addon with a parent app\n parentProductInfo.addonInfo.push({\n addonId: item.addonId,\n name: item.name,\n });\n } else {\n // this case is to create addon product info that does not have a parent app being activated\n const parentApp = products.find((product) => product.appId === item.appId);\n this.productInfo.push({\n productId: item.appId,\n name: parentApp ? parentApp.name : '',\n tagline: parentApp ? parentApp.tagline : '',\n icon: parentApp ? parentApp.icon : '',\n addonInfo: [\n {\n addonId: item.addonId,\n name: item.name,\n },\n ],\n });\n }\n } else {\n // this case is for an app with no addon\n this.productInfo.push({\n productId: item.appId,\n name: item.name,\n tagline: item.tagline,\n icon: item.icon,\n addonInfo: [],\n });\n }\n });\n }\n\n private setAsTouched(group: UntypedFormGroup): void {\n group.markAsTouched();\n const controls = group.controls;\n for (const i in controls) {\n if (controls[i] instanceof UntypedFormControl) {\n controls[i].markAsTouched();\n } else if (controls[i] instanceof UntypedFormGroup) {\n this.setAsTouched(controls[i] as UntypedFormGroup);\n }\n }\n group.updateValueAndValidity({ onlySelf: true, emitEvent: true });\n }\n\n validateBillingOrder(\n instantBillItemSkus: string[],\n contactSalesSkus: string[],\n orderItems: ResellerItemOrderForm[],\n ): OrderFormSubmissionError | undefined {\n const hasInstantBillItems = instantBillItemSkus && instantBillItemSkus.length > 0;\n const hasContactSales = contactSalesSkus && contactSalesSkus.length > 0;\n if (hasInstantBillItems && hasContactSales) {\n const resultSkus = instantBillItemSkus.filter((x) => {\n return contactSalesSkus.indexOf(x) !== -1;\n });\n const uniqueResultSkus = Array.from(new Set(resultSkus));\n if (uniqueResultSkus.length > 0) {\n let names = [];\n uniqueResultSkus.forEach((sku) => {\n (orderItems || []).forEach((orderItem) => {\n if (orderItem.billingId === sku) {\n names.push(orderItem.name);\n }\n });\n });\n names = this.getFailedAppsDisplayContent(names);\n return {\n appNames: names,\n type: 'activationFailure',\n errorMessage:\n 'These product(s) are not available for purchase at your current subscription tier. Please contact sales for more information.',\n openFailureDialog: true,\n };\n }\n }\n }\n\n validateForm(form: UntypedFormGroup): OrderFormSubmissionError | undefined {\n if (!form.valid) {\n this.setAsTouched(form);\n return {\n appNames: [],\n type: 'invalidForm',\n errorMessage: 'some order form fields are invalid',\n openFailureDialog: false,\n };\n }\n }\n\n validate(): OrderFormSubmissionError | undefined {\n let err = this.validateBillingOrder(this.instantBillItemsSkus, this.contactSalesSkus, this.checkoutItems);\n if (err) {\n return err;\n }\n err = this.validateForm(this.form);\n if (err) {\n return err;\n }\n return undefined;\n }\n\n applyCustomEntryUrlIfFieldExists(orders: ResellerItemOrderForm[]): ResellerItemOrderForm[] {\n return orders.map((order) => {\n if (!order.isCustom) {\n return order;\n }\n const customEntryUrl = this.formService.getCustomProductEntryURl(order);\n if (customEntryUrl) {\n return { ...order, entryUrl: customEntryUrl };\n }\n return order;\n });\n }\n\n private cacheSalesOrder(): void {\n this.salesOrder$.pipe(take(1)).subscribe((order) => {\n this.orderFormStoreService.cacheOrder(\n new Order({\n ...order,\n customFields: this.salesOrderFormComponent.getCustomFormData(),\n commonFields: this.salesOrderFormComponent.getCommonFormData(),\n extraFields: this.salesOrderFormComponent.getExtraFieldsData(),\n }),\n );\n this.salesOrderCached$$.next(true);\n });\n }\n\n // Caches the reseller items with order form values so they can be read at other stages of activation\n cacheOrderForms(): void {\n this.checkoutItems.forEach((section: ResellerItemOrderForm) => {\n const prefillSectionKey = JSON.stringify([this.accountGroupId, section.addonId || section.appId]);\n window.sessionStorage.removeItem(prefillSectionKey);\n\n // remove the dynamic session item as its now saved on the cached app\n const dynamicPrefillSectionKey = ProductOrderFormStoreService.buildKeyForDynamicOrderForm(\n this.accountGroupId,\n section.appId,\n );\n window.sessionStorage.removeItem(dynamicPrefillSectionKey);\n });\n }\n\n onSubmit(): void {\n if (this.isFormLoading) {\n return;\n }\n\n const err = !this.salesOrderFormComponent.validateForm();\n if (err) {\n this.snackbarService.errorSnack(this.translate.instant('SALES_ORDERS.ERRORS.FORM_IS_NOT_VALID'));\n return;\n }\n\n if (this.productActivationPrereqFormComponent.businessActivationForm.invalid) {\n this.snackbarService.errorSnack(this.translate.instant('SALES_ORDERS.ERRORS.PRE_REQ_FORM_IS_NOT_VALID'));\n return;\n }\n\n this.cacheOrderForms();\n this.cacheSalesOrder();\n this.salesOrderCached$$\n .pipe(\n skipWhile((ready) => !ready),\n take(1),\n )\n .subscribe(() => this.activationNavigationService.navigateToNextStep('order-form'));\n }\n\n private getFailedAppsDisplayContent(inputs: string[]): string[] {\n // In the array of failed activations, there might be multiple entry of an product/addon,\n // for example: ['Prod', 'Addon', 'Addon']. This function will transform the array to ['Prod', 'Addon (2)'],\n // so that the dialog can show the information in a more readable way.\n const resultMap: Map = new Map();\n const outputString: string[] = [];\n inputs.forEach((input) => {\n resultMap.set(input, (resultMap.get(input) || 0) + 1);\n });\n\n resultMap.forEach((num, name) => {\n const countString = num !== 1 ? ' (' + resultMap.get(name) + ')' : '';\n outputString.push(' ' + name + countString);\n });\n return outputString;\n }\n\n failureDialog(productNames: string[], type: OrderFormSubmissionErrorType, errorMessage?: string): void {\n if (this.vDialog) {\n // There's already a failure dialog open. Don't open another on top of it.\n return;\n }\n let title = '';\n let contentHtml = '';\n const isSuccess = false;\n const buttons = [];\n switch (type) {\n case 'activationFailure':\n title = 'Oops, there was a problem activating some products!';\n contentHtml =\n '

The following products failed to Activate: ' +\n productNames +\n '

' +\n '

' +\n errorMessage +\n '

';\n break;\n case 'unknownFailure':\n title = 'Oops, something unexpected happened!';\n contentHtml = '

Please return to the previous page and try again later.

';\n break;\n case 'noAppsError':\n title =\n 'Oops, we could not load the order form! The cause could be that this account already has all of the products active';\n contentHtml =\n '

Please return to the previous page and try again.

' +\n '

' +\n 'If the problem persists, contact your Partner Success Manager or partnersuccess@vendasta.com.' +\n '

';\n break;\n }\n const goBack: ButtonDescriptor = {\n title: 'Return to Account Details',\n action: 'goBack',\n };\n buttons.push(goBack);\n this.vDialog = this.dialog.open(VDialogComponent, new MatDialogConfig());\n this.vDialog.componentInstance.isSuccess = isSuccess;\n this.vDialog.componentInstance.title = title;\n this.vDialog.componentInstance.contentHtml = contentHtml;\n this.vDialog.componentInstance.buttons = buttons;\n this.vDialog.afterClosed().subscribe((result) => {\n if (result === 'goBack') {\n this.activationNavigationService.navigateToPreviousStep('order-form');\n }\n });\n }\n\n private getProductIds$(): Observable {\n return this.salesOrder$.pipe(\n filter((order) => Boolean(order)),\n map((order) => {\n return order.lineItems.map((product) => product.appKey.appId);\n }),\n publishReplay(1),\n refCount(),\n );\n }\n\n updateFormLoadingStatus(loading: boolean): void {\n this.isFormLoading = loading;\n }\n\n goBack(): void {\n this.activationNavigationService.navigateToPreviousStep('order-form');\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n this.formService.destroyService();\n }\n}\n","\n \n Order form\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 \n \n
\n
\n","import { Component, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { FulfillmentOrderApiService } from '@vendasta/order-fulfillment';\nimport { OrderSubmittedComponent } from '@vendasta/orders';\nimport { Order as SalesOrder, SalesOrdersService } from '@vendasta/sales-orders';\nimport { User as LibUser } from '@vendasta/users';\nimport {\n SendEmailDialogComponent,\n SendEmailDialogResp,\n WorkOrderFormService,\n WorkOrderFormUnsavedChangesInterface,\n WorkOrderUnsavedChangesComponent,\n} from '@vendasta/work-order';\nimport { combineLatest, from, Observable, of, Subscription } from 'rxjs';\nimport { map, mergeMap, shareReplay, switchMap, take, toArray } from 'rxjs/operators';\nimport { AccountService } from '../../core/account.service';\nimport { PARTNER_ID_INJECTION_TOKEN } from '../../core/constants';\nimport { User } from '../../core/user';\n\n@Component({\n templateUrl: './order-submitted-page.component.html',\n styleUrls: ['./order-submitted-page.component.scss'],\n})\nexport class OrderSubmittedPageComponent implements OnInit, OnDestroy, WorkOrderFormUnsavedChangesInterface {\n users$: Observable;\n salesOrder$: Observable;\n salesOrderUrl$: Observable;\n accountDetailsUrl$: Observable;\n allUsers: LibUser[];\n partnerId: string;\n businessId: string;\n salesOrderId: string;\n private subscriptions: Subscription[] = [];\n\n @ViewChild('orderSubmittedComponent') orderSubmittedComponent: OrderSubmittedComponent;\n\n constructor(\n @Inject(PARTNER_ID_INJECTION_TOKEN) private readonly partnerId$: Observable,\n private accountService: AccountService,\n private salesOrderService: SalesOrdersService,\n private route: ActivatedRoute,\n private fulfillmentOrderService: FulfillmentOrderApiService,\n private snackbarService: SnackbarService,\n private workOrderFormService: WorkOrderFormService,\n public dialog: MatDialog,\n ) {}\n\n ngOnInit(): void {\n this.salesOrder$ = this.route.queryParams.pipe(\n take(1),\n switchMap((params: Params) => {\n this.businessId = params.accountGroupId;\n this.salesOrderId = params.orderId;\n return this.salesOrderService.get(params.orderId, params.accountGroupId);\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n this.subscriptions.push(\n combineLatest([this.route.queryParams, this.partnerId$])\n .pipe(\n switchMap(([params, partnerId]) => {\n this.partnerId = partnerId;\n this.businessId = params.accountGroupId;\n return this.accountService.loadUsers(params.accountGroupId, partnerId);\n }),\n )\n .subscribe((users: User[]) => {\n this.allUsers = users.map((user) => this.convertToLibUser(user));\n }),\n );\n\n this.salesOrderUrl$ = this.salesOrder$.pipe(\n map((salesOrder) => `/order-management/${salesOrder.businessId}/info/${salesOrder.orderId}`),\n );\n this.accountDetailsUrl$ = this.salesOrder$.pipe(map((order) => `/businesses/accounts/${order.businessId}/details`));\n\n this.users$ = this.accountService.users$;\n }\n\n getWorkOrderDetailsComponent(): WorkOrderUnsavedChangesComponent {\n return this.orderSubmittedComponent;\n }\n\n openSendEmailDialog(): void {\n const afterClosed$: Observable = this.dialog\n .open(SendEmailDialogComponent, {\n width: '600px',\n data: {\n allUsers: this.allUsers,\n partnerId: this.partnerId,\n businessId: this.businessId,\n allowUserManagement: true,\n },\n })\n .afterClosed();\n\n combineLatest([\n this.workOrderFormService.getOrdersToRenderFormsFor(this.salesOrderId, this.businessId, false),\n afterClosed$,\n ])\n .pipe(\n take(1),\n switchMap(([workOrders, resp]) => {\n if (!resp?.userIds || resp?.userIds?.length === 0) {\n return of(undefined);\n }\n const itemNames = workOrders.map((wo) => wo.appInfo.appName);\n return from(resp.userIds).pipe(\n mergeMap((userId) =>\n this.fulfillmentOrderService.sendFulfillmentOrder({\n businessId: this.businessId,\n salesOrderId: this.salesOrderId,\n userId: userId,\n itemNames: itemNames,\n }),\n ),\n toArray(),\n );\n }),\n )\n .subscribe({\n next: (resp) => {\n if (resp) {\n this.snackbarService.openSuccessSnack('Successfully sent email');\n }\n },\n error: () => this.snackbarService.openErrorSnack('Failed to send email'),\n });\n }\n\n public convertToLibUser(user: User): LibUser {\n return {\n userId: user.userId,\n unifiedId: user.unifiedUserId,\n email: user.email,\n firstName: user.firstName,\n lastName: user.lastName,\n phoneNumber: user.phoneNumber,\n } as LibUser;\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","\n \n \n {{ 'ACTIVATION.ORDER_SUBMITTED.ORDER_SUBMITTED' | translate }}\n \n \n \n \n \n \n \n \n \n \n\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AccountGroup, AccountGroupService, ProjectionFilter } from '@galaxy/account-group';\nimport { BillingService, Frequency, ProductPricing } from '@galaxy/billing';\nimport {\n ItemSelectorConfig,\n ItemSelectorFilterType,\n ItemWhitelabelService,\n SelectedItem,\n SelectionChange,\n SelectionChangeEventType,\n SelectionOptions,\n} from '@galaxy/inventory-ui';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CommonProperties, ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { LineItem as SalesLineItem, Order, Revenue, RevenueComponent, RevenuePeriod } from '@vendasta/sales-orders';\nimport moment from 'moment';\nimport { combineLatest, Observable, of, Subject, Subscription } from 'rxjs';\nimport { catchError, filter, map, shareReplay, startWith, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';\nimport { AppConfigService } from '../../app-config.service';\nimport { UnifiedTOSDialogComponent } from '../../common/tos-unified/unified-tos-dialog.component';\nimport { FeatureFlags } from '../../core/features';\nimport { UnifiedTOSService } from '../../core/tos-unified.service';\nimport { ManageStoreService } from '../../marketplace-app/store/manage-store.service';\nimport { ActivationNavigationService } from '../core/activation-navigation.service';\nimport { ActivationService } from '../core/activation.service';\nimport {\n ActivatableItem,\n ActivatableItemCount,\n ActivatablePackage,\n ActivationStatus,\n ProductBoxItems,\n} from '../core/interface';\nimport { ProductOrderFormStoreService } from '../core/product-order-form.store.service';\nimport { ActivatableItemCountToSelectedItem, ProductBoxItemsToSelectedItem } from './adapters';\n\nconst BASE_COMMON_FIELDS = [\n {\n id: 'business_account_group_id',\n name: 'Business ID',\n },\n {\n id: 'business_name',\n name: 'Business Name',\n },\n {\n id: 'business_address',\n name: 'Business Address',\n },\n {\n id: 'business_phone_number',\n name: 'Business Phone Number',\n },\n {\n id: 'business_website',\n name: 'Business Website',\n },\n {\n id: 'contact_name',\n name: 'Contact Name',\n },\n {\n id: 'contact_email',\n name: 'Contact Email',\n },\n {\n id: 'contact_phone_number',\n name: 'Contact Phone Number',\n },\n {\n id: 'salesperson_name',\n name: 'Salesperson Name',\n },\n {\n id: 'salesperson_email',\n name: 'Salesperson Email',\n },\n {\n id: 'salesperson_phone_number',\n name: 'Salesperson Phone Number',\n },\n];\n\n@Component({\n selector: 'app-activation-page',\n templateUrl: './activation-selection-page.component.html',\n styleUrls: ['./activation-selection-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ActivationSelectionPageComponent implements OnInit, OnDestroy {\n activeItems$: Observable;\n selectedAppCartItems$: Observable;\n appRetailPricingMap$: Observable<{ [sku: string]: ProductPricing }>;\n disableCheckout$: Observable;\n hidePricing$: Observable;\n marketId$: Observable;\n previousPageUrl$: Observable;\n previousPageName$: Observable;\n checkedOut: boolean;\n accountGroupId: string;\n selectedItemLength = 0;\n subscriptions: Subscription[] = [];\n accountGroup$: Observable;\n\n // product selector\n selectedItems$: Observable;\n immutableSelectedItems$: Observable;\n productSelectorConfig$: Observable;\n productSelectorDependenciesLoading$: Observable;\n cartConfig$: Observable;\n\n addItem$$ = new Subject();\n removeItem$$ = new Subject();\n\n // builds an order's line item from product and retail pricing info\n static buildLineItemForOrder(\n item: ActivatableItemCount,\n currencyCode: string,\n appRetailPricingMap: { [p: string]: ProductPricing },\n ): SalesLineItem {\n const retailPricing = appRetailPricingMap ? appRetailPricingMap[item.activatableItem.billingId] : null;\n // if we were unable to fetch the currency code from the retail config, attempt to get it from retail pricing\n if (!currencyCode && retailPricing?.currency) {\n currencyCode = retailPricing.currency;\n }\n const lineItem = ActivationSelectionPageComponent.buildDefaultFreeLineItemForOrder(item, currencyCode);\n if (!retailPricing) {\n // the order will be stamped down as \"free\" since we were unable to fetch proper retail pricing info\n return lineItem;\n }\n const price = retailPricing.pricingRules[0]?.price || 0;\n let itemFrequency: RevenuePeriod;\n switch (retailPricing.frequency) {\n case Frequency.Yearly:\n itemFrequency = RevenuePeriod.YEARLY;\n break;\n case Frequency.OneTime:\n itemFrequency = RevenuePeriod.ONETIME;\n break;\n default:\n itemFrequency = RevenuePeriod.MONTHLY;\n break;\n }\n\n const revenueComponents = [\n new RevenueComponent({\n value: price,\n period: itemFrequency,\n isStartingRevenue: retailPricing.isStartingPrice,\n }),\n ];\n if (retailPricing.setupFee > 0) {\n revenueComponents.push(\n new RevenueComponent({\n value: retailPricing.setupFee,\n period: RevenuePeriod.ONETIME,\n isStartingRevenue: false,\n }),\n );\n }\n\n lineItem.currentRevenue = new Revenue({\n revenueComponents: revenueComponents,\n });\n\n return lineItem;\n }\n\n static buildDefaultFreeLineItemForOrder(item: ActivatableItemCount, currencyCode: string): SalesLineItem {\n return new SalesLineItem({\n appKey: {\n appId: item.activatableItem?.appId,\n editionId: item.editionId,\n },\n quantity: item.quantity,\n // Default to free for now, will try to fetch retail pricing after\n currentRevenue: {\n revenueComponents: [{}],\n },\n /**\n * Default to false, as trials are currently not supported in this flow.\n * More investigation needs to be done, as selectedAppCartItems for selected products will have isTrial = true\n * when the account group already has a trial for that product.\n */\n isTrial: false,\n currencyCode: currencyCode,\n });\n }\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private activationService: ActivationService,\n @Inject('PARTNER_ID') readonly partnerId$: Observable,\n private activationNavigationService: ActivationNavigationService,\n private productStoreService: ProductOrderFormStoreService,\n private translate: TranslateService,\n private analytics: ProductAnalyticsService,\n private billingService: BillingService,\n private manageStoreService: ManageStoreService,\n public dialog: MatDialog,\n private tosService: UnifiedTOSService,\n private appConfigService: AppConfigService,\n private accountGroupService: AccountGroupService,\n @Inject(FeatureFlags.PCC_ITEM_SELECTOR_INCLUDES_PACKAGES)\n public readonly pccItemSelectorIncludesPackages$: Observable,\n private itemWhitelabelService: ItemWhitelabelService,\n ) {}\n\n ngOnInit(): void {\n this.showTOS();\n this.activationService.clearSelections();\n this.marketId$ = this.activationService.accountGroupMarketId$;\n\n this.cartConfig$ = combineLatest([this.partnerId$, this.marketId$]).pipe(\n map(([partnerId, marketId]) => {\n const config: SelectionOptions = {\n partnerId: partnerId,\n marketId: marketId,\n enforceDependencies: true,\n };\n return config;\n }),\n );\n\n this.activeItems$ = combineLatest([this.activationService.activeProducts$, this.marketId$]).pipe(\n switchMap(([activeProducts, marketId]) => {\n return this.itemWhitelabelService.whitelabelItems$(activeProducts, marketId);\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n this.selectedAppCartItems$ = combineLatest([this.activationService.appCartItems$, this.marketId$]).pipe(\n switchMap(([cartItems, marketId]) => {\n const activatableItems = cartItems.map((appItem) => appItem.activatableItem);\n return this.itemWhitelabelService.whitelabelItems$(activatableItems, marketId);\n }),\n withLatestFrom(this.activationService.appCartItems$),\n map(([whitelabelItems, cartItems]) => {\n return cartItems.map((cartItem) => {\n const whitelabelItem = whitelabelItems.find((item) => item.appId === cartItem.activatableItem.appId);\n return {\n ...cartItem,\n activatableItem: whitelabelItem,\n };\n });\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n this.appRetailPricingMap$ = combineLatest([this.selectedAppCartItems$, this.partnerId$, this.marketId$]).pipe(\n switchMap(([appItems, partnerId, marketId]) => {\n const billingIds = appItems.map((appItem) => appItem.activatableItem.billingId);\n return this.billingService.getMultiRetailPricing(partnerId, null, billingIds, marketId);\n }),\n catchError((_) => of(null)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n this.disableCheckout$ = this.initializeDisableCheckout$();\n\n this.subscriptions.push(this.activationService.accountGroupId$.subscribe((agid) => (this.accountGroupId = agid)));\n this.subscriptions.push(\n this.selectedAppCartItems$.subscribe((cartItems) => (this.selectedItemLength = cartItems.length)),\n );\n\n this.previousPageUrl$ = this.route.queryParams.pipe(\n map(({ navigationSource }) =>\n navigationSource === 'orders' ? '/order-management' : `/businesses/accounts/${this.accountGroupId}/details`,\n ),\n );\n this.previousPageName$ = combineLatest([this.activationService.accountGroupName$, this.route.queryParams]).pipe(\n map(([accountGroupName, { navigationSource }]) =>\n navigationSource === 'orders' ? this.translate.instant('SALES_ORDERS.ORDERS') : accountGroupName,\n ),\n );\n\n this.selectedItems$ = this.pccItemSelectorIncludesPackages$.pipe(\n switchMap((featureEnabled) => {\n const selectedItems$ = this.selectedAppCartItems$.pipe(\n map((items) => {\n return items.map((item) => ActivatableItemCountToSelectedItem(item)) || [];\n }),\n );\n // take(1) is to ensure we can load selected items from the query params initially but not break the\n // new package selector by continuing to emit the selected items\n return featureEnabled ? selectedItems$.pipe(take(1)) : selectedItems$;\n }),\n );\n this.immutableSelectedItems$ = this.activeItems$.pipe(\n map((items) => {\n // remove trials as they are not immutable and can be selected again\n const filteredItems = items?.filter((item) => !item.isTrial) || [];\n return filteredItems?.map((filteredItem) => ProductBoxItemsToSelectedItem(filteredItem)) || [];\n }),\n );\n\n this.accountGroup$ = this.accountGroupService.get(this.accountGroupId, new ProjectionFilter({ napData: true }));\n\n this.productSelectorConfig$ = combineLatest([\n this.partnerId$,\n this.marketId$,\n this.accountGroup$,\n this.pccItemSelectorIncludesPackages$,\n ]).pipe(\n map(([partnerId, marketId, accountGroup, packagesFeatureEnabled]) => {\n const itemTypesAvailable: ItemSelectorFilterType[] = ['products'];\n if (packagesFeatureEnabled) {\n itemTypesAvailable.push('packages');\n }\n return {\n partnerId: partnerId,\n marketId: marketId,\n businessId: this.accountGroupId,\n country: accountGroup.napData?.country,\n pageSize: 15,\n priceType: 'instance',\n itemTypesAvailable: itemTypesAvailable,\n };\n }),\n );\n\n this.productSelectorDependenciesLoading$ = combineLatest([\n this.immutableSelectedItems$,\n this.selectedItems$,\n this.productSelectorConfig$,\n ]).pipe(\n take(1),\n map(() => false),\n startWith(true),\n );\n\n this.setUpAddingRemovingItemStreams();\n }\n\n /**\n * This is responsible for determining if the terms of service should be shown to the user.\n *\n * The dialog will only be shown if the user:\n * 1. Hasn't accepted the TOS already.\n * 2. The partner is on a value based pricing (VBP) subscription.\n * 3. The user is not impersonating.\n *\n * If the user does not accept the terms of service, they will be sent back to the account details page.\n */\n get shouldShowTOS$(): Observable {\n const isImpersonated$ = this.appConfigService.config$.pipe(map((config) => config.isImpersonated));\n return this.tosService.tosDataLoaded$.pipe(\n filter((tosDataReady) => tosDataReady),\n switchMap(() => isImpersonated$),\n take(1),\n map((impersonated) => !this.tosService.hasAcceptedTOS && !this.tosService.isClassicSubscription && !impersonated),\n );\n }\n\n private showTOS(): void {\n this.shouldShowTOS$\n .pipe(\n switchMap((showTerms) =>\n showTerms\n ? this.dialog.open(UnifiedTOSDialogComponent, UnifiedTOSDialogComponent.config()).afterClosed()\n : of(true),\n ),\n )\n .subscribe((accepted) => {\n if (!accepted) {\n this.router.navigate(['../details'], { relativeTo: this.route });\n }\n });\n }\n\n removeSelectedApp(appId: string): void {\n const selection = {\n appId: appId,\n quantity: 0,\n };\n this.activationService.selectItem(selection);\n }\n\n checkoutSelected(): void {\n this.checkedOut = true;\n\n // we could use the response from appRetailPricingMap$ to get this, but this handles the case when that response is empty\n const currencyConfig$ = combineLatest([this.partnerId$, this.marketId$]).pipe(\n take(1),\n switchMap(([partnerId, marketId]) => {\n return this.manageStoreService.getRetailConfiguration(partnerId, marketId);\n }),\n catchError((_) => of(null)),\n );\n\n combineLatest([this.selectedAppCartItems$, this.appRetailPricingMap$, currencyConfig$])\n .pipe(\n switchMap(([appCartItems, appRetailPricingMap, currencyConfig]) => {\n this.analytics.trackEvent(\n 'activate-products-checkout-selected',\n CommonProperties.ECOMMERCE,\n 'has-matching-item',\n 0,\n {\n hasAppWithOrderForm: !!appCartItems?.find((item) => item.activatableItem.usesOrderForm),\n },\n );\n\n //filter to prevent checkout an already activated app when its addon is being activated\n const lineItems = appCartItems\n .filter((item) => {\n return (\n item.activatableItem.allowMultipleActivations ||\n (item.status !== ActivationStatus.ACTIVATED && item.status !== ActivationStatus.PENDING) ||\n item.isTrial ||\n item.activatableItem.editionData?.usesEditions\n );\n })\n .map((item) => {\n const currencyCode = currencyConfig?.currency || '';\n return ActivationSelectionPageComponent.buildLineItemForOrder(item, currencyCode, appRetailPricingMap);\n });\n\n return combineLatest([\n of(lineItems),\n this.marketId$,\n this.activationService.accountGroupId$,\n this.partnerId$,\n ]);\n }),\n map(([lineItems, marketId, businessId, partnerId]) => {\n const newCommonFields = BASE_COMMON_FIELDS.map((fieldItem) => ({\n field: {\n answer: 'null',\n description: '',\n field_id: fieldItem.id,\n field_type: 1,\n label: fieldItem.name,\n prefix: '',\n regex_error_message: '',\n regex_validator: '',\n suffix: '',\n },\n }));\n return new Order({\n businessId,\n marketId,\n partnerId,\n requestedActivation: moment().toDate(),\n lineItems: lineItems,\n commonFields: newCommonFields,\n tags: [this.translate.instant('SALES_ORDERS.MANUAL_ACTIVATION_TAG')],\n });\n }),\n take(1),\n tap((order) => {\n this.productStoreService.cacheOrder(order);\n this.activationNavigationService.navigateToNextStep('selection', order);\n }),\n )\n .subscribe();\n }\n\n initializeDisableCheckout$(): Observable {\n return this.selectedAppCartItems$.pipe(\n startWith([]),\n map((cartItems) => !cartItems.some((item) => item.quantity > 0)),\n );\n }\n\n selectedItemsChanged(selectionChange: SelectionChange): void {\n const updatedItem = selectionChange.updatedItem;\n if (selectionChange.eventType === SelectionChangeEventType.DESELECTED) {\n updatedItem.quantity = 0;\n this.removeItem$$.next(updatedItem.itemId);\n } else {\n this.addItem$$.next(updatedItem);\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n //TODO: remove this function once packages in the new item selector is officially released\n tabChanged($event: MatTabChangeEvent): void {\n if ($event.index === 0 && $event.tab.textLabel === 'Products') {\n this.analytics.trackEvent('clicked-products-tab', '', 'click');\n } else if ($event.index === 1 && $event.tab.textLabel === 'Packages') {\n this.analytics.trackEvent('clicked-packages-tab', '', 'click');\n }\n }\n\n private setUpAddingRemovingItemStreams(): void {\n const addSub = combineLatest([this.activationService.activatablePackages$, this.addItem$$])\n .pipe(map(([packages, selectedItem]) => this.addItem(packages, selectedItem)))\n .subscribe();\n\n const removeSub = combineLatest([this.activationService.activatablePackages$, this.removeItem$$])\n .pipe(map(([packages, item]) => this.removeItem(packages, item)))\n .subscribe();\n\n this.subscriptions.push(addSub, removeSub);\n }\n\n private addItem(packages: ActivatablePackage[], selectedItem: SelectedItem): void {\n if (selectedItem.type === 'package') {\n const activatablePackage = packages.find((pkg) => pkg.packageId === selectedItem.itemId);\n if (activatablePackage) {\n const selectedItems = activatablePackage.activatableItemCount.map((item) => ({\n appId: item.activatableItem.appId,\n editionId: item.editionId || '',\n quantity: item.quantity,\n }));\n this.activationService.selectItems(selectedItems);\n }\n } else {\n const editionId = selectedItem.type === 'app' ? selectedItem.edition?.editionId : undefined;\n this.activationService.selectItem({\n appId: selectedItem.itemId,\n editionId: editionId,\n quantity: selectedItem.quantity,\n });\n }\n }\n\n private removeItem(packages: ActivatablePackage[], selectedItemId: string): void {\n if (isPackageItemId(selectedItemId)) {\n const activatablePackage = packages.find((pkg) => pkg.packageId === selectedItemId);\n if (activatablePackage) {\n const selectedItems = activatablePackage.activatableItemCount.map((item) => ({\n appId: item.activatableItem.appId,\n quantity: 0,\n }));\n this.activationService.selectItems(selectedItems);\n }\n } else {\n this.activationService.selectItem({ appId: selectedItemId, quantity: 0 });\n }\n }\n}\n\nfunction isPackageItemId(itemId: string): boolean {\n return itemId.startsWith('SOL-');\n}\n","\n \n \n {{ 'ACTIVATION.SELECTION_PAGE.PACKAGE_ACTIVATION_TABLE.SELECT_PRODUCTS_TO_ACTIVATE' | translate }}\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
\n
\n
\n \n \n
\n\n
\n \n {{ 'ACTIVATION.SELECTION_PAGE.PACKAGE_ACTIVATION_TABLE.PROCEED_TO_NEXT_STEP' | translate }}\n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n","import { SelectedItem } from '@galaxy/inventory-ui';\nimport { ActivatableItemCount, ProductBoxItems } from '../core/interface';\n\nexport function ProductBoxItemsToSelectedItem(item: ProductBoxItems): SelectedItem {\n return {\n itemId: item.appId,\n type: 'app',\n name: item.name,\n iconUrl: item.icon,\n quantity: item.count,\n edition: {\n editionId: item.editionId,\n name: item.editionName,\n },\n };\n}\n\nexport function ActivatableItemCountToSelectedItem(item: ActivatableItemCount): SelectedItem {\n const base: Pick = {\n itemId: item.activatableItem.appId,\n name: item.activatableItem.name,\n iconUrl: item.activatableItem.icon,\n quantity: item.quantity,\n };\n if (item.activatableItem.parentAppId) {\n return {\n ...base,\n type: 'addon',\n parentItemId: item.activatableItem.parentAppId,\n };\n }\n return {\n ...base,\n type: 'app',\n edition: {\n editionId: item.editionId,\n name: item.editionName,\n },\n };\n}\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ItemSelectorServiceV2, SelectionOptions } from '@galaxy/inventory-ui';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { ActivatableItemCount, ActivationStatus, isValidEditionId } from '../../core/interface';\n\n@Component({\n selector: 'app-activation-cart',\n templateUrl: 'activation-cart.component.html',\n styleUrls: ['activation-cart.component.scss'],\n})\nexport class ActivationCartComponent implements OnChanges {\n @Input() appCartItems: ActivatableItemCount[];\n @Input() features: any;\n @Input() config!: SelectionOptions;\n\n @Output() removeApp: EventEmitter = new EventEmitter();\n\n activatedStatus = ActivationStatus.ACTIVATED;\n cancelledStatus = ActivationStatus.CANCELED;\n newItemIds: string[];\n\n constructor(\n private productAnalyticsService: ProductAnalyticsService,\n private itemSelectorService: ItemSelectorServiceV2,\n ) {}\n\n removeAppSelected(item: ActivatableItemCount): void {\n this.itemSelectorService.removeItemId(item.activatableItem.appId, 'user', this.config);\n this.removeApp.emit(item.activatableItem.appId);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.appCartItems) {\n this.newItemIds = this.getNewItemIds(changes.appCartItems.previousValue, changes.appCartItems.currentValue);\n }\n }\n\n showBadge(isTrial: boolean, editionId: string): boolean {\n const editionIdValid = isValidEditionId(editionId);\n return !isTrial && editionIdValid;\n }\n\n getNewItemIds(previousItems: ActivatableItemCount[], currentItems: ActivatableItemCount[]): string[] {\n if (currentItems && previousItems) {\n const currentIds = currentItems.map((item) => item.activatableItem.appId);\n const previousIds = previousItems.map((item) => item.activatableItem.appId);\n return currentIds.filter((id) => !previousIds.includes(id));\n } else if (currentItems) {\n return currentItems.map((item) => item.activatableItem.appId);\n }\n return [];\n }\n}\n","
\n
\n

\n {{ 'ACTIVATION.SELECTION_PAGE.ACTIVATION_CART.SELECTED_PRODUCTS' | translate }}\n

\n
\n\n \n \n
\n \n {{ 'ACTIVATION.SELECTION_PAGE.ACTIVATION_CART.NO_PRODUCTS_OR_PACKAGES_SELECTED' | translate }}\n \n
\n\n \n 0\"\n style=\"height: auto\"\n [ngClass]=\"{\n blink: newItemIds.indexOf(item?.activatableItem?.appId) >= 0\n }\"\n class=\"body-container blink\"\n >\n
\n
\n
\n
\n \n
\n \n

\n {{\n item?.activatableItem?.name +\n (showBadge(item.isTrial, item.editionId) && item.editionName ? ' | ' + item.editionName : '')\n }}\n 1\">({{ item.quantity }})\n

\n
\n
\n \n {{ 'ACTIVATION.SELECTION_PAGE.ACTIVATION_CART.CURRENTLY_ACTIVE' | translate }}\n
\n \n {{ 'ACTIVATION.SELECTION_PAGE.CANCELED' | translate }}\n
\n
\n \n
\n
\n \n \n \n \n\n","import { Injectable } from '@angular/core';\nimport { PageEvent } from '@angular/material/paginator';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, shareReplay } from 'rxjs/operators';\nimport { ActivationPricingService } from '../../core/activation-pricing.service';\nimport { ActivationService } from '../../core/activation.service';\nimport { ActivatablePackage, SelectedItem, SelectedItems, SortDirection } from '../../core/interface';\nimport { pageArray } from '../../core/utils';\n\n@Injectable()\nexport class PackageActivationTableService {\n readonly activatablePackages$: Observable;\n readonly hidePricing$: Observable;\n readonly packagesHasRestrictions$: Observable;\n readonly showingRestrictedPackages$: BehaviorSubject = new BehaviorSubject(false);\n readonly totalPackages$: Observable;\n readonly selectedItems$: Observable;\n\n private searchTerm$$: BehaviorSubject = new BehaviorSubject('');\n private nameSort$$: BehaviorSubject = new BehaviorSubject('ASCENDING');\n private paged$$: BehaviorSubject = new BehaviorSubject(undefined);\n\n constructor(\n private activationService: ActivationService,\n private activationPricingService: ActivationPricingService,\n ) {\n this.hidePricing$ = this.activationPricingService.hidePricing$;\n this.selectedItems$ = this.activationService.selectedItems$;\n const unsortedActivatablePackages$ = this.activationService.activatablePackages$;\n // searchTermDelayed$ used to reduce the number of times we search the list\n // (useful to not make repeated calls while a user is typing)\n const searchTermDelayed$ = this.searchTerm$$.pipe(debounceTime(200), distinctUntilChanged()) as Observable;\n\n const searchedPackages$ = combineLatest([unsortedActivatablePackages$, searchTermDelayed$]).pipe(\n map(([pkgs, searchTerm]) => {\n if (!pkgs || !(pkgs.length > 0)) {\n return [];\n }\n searchTerm = searchTerm.trim().toUpperCase();\n return pkgs.filter((pkg) => {\n const uppercasePackageName = pkg.name ? pkg.name.toUpperCase() : '';\n const uppercasePackageId = pkg.packageId.toUpperCase();\n return uppercasePackageName.indexOf(searchTerm) >= 0 || uppercasePackageId.indexOf(searchTerm) >= 0;\n });\n }),\n shareReplay(1),\n );\n\n this.totalPackages$ = combineLatest([searchedPackages$, this.showingRestrictedPackages$]).pipe(\n map(([pkgs, showRestricted]) => {\n if (pkgs && pkgs.length > 0) {\n if (showRestricted) {\n return pkgs.length;\n } else {\n const notRestrictedPackages = pkgs.filter((pkg) => !pkg.restricted);\n return notRestrictedPackages ? notRestrictedPackages.length : 0;\n }\n } else {\n return 0;\n }\n }),\n );\n\n const sortedPackages$ = combineLatest([searchedPackages$, this.nameSort$$]).pipe(\n map(([packages, sortDirection]) => {\n if (!packages || !(packages.length > 0)) {\n return [];\n }\n return packages.sort((pkg1, pkg2) => {\n const pkg1Name = pkg1.name ? pkg1.name : '';\n const pkg2Name = pkg2.name ? pkg2.name : '';\n return sortDirection === 'ASCENDING' ? pkg1Name.localeCompare(pkg2Name) : pkg2Name.localeCompare(pkg1Name);\n });\n }),\n shareReplay(1),\n );\n\n const pagedPackages$ = combineLatest([sortedPackages$, this.paged$$]).pipe(\n map(([sortedPackages, pageEvent]) => {\n return pageArray(sortedPackages, pageEvent, 25);\n }),\n );\n\n this.activatablePackages$ = pagedPackages$;\n\n this.packagesHasRestrictions$ = unsortedActivatablePackages$.pipe(\n map((pkgs) => {\n return pkgs.some((pkg) => pkg.restricted);\n }),\n );\n }\n\n handlePackageCheckboxEvent(selectedItems: SelectedItem[]): void {\n this.activationService.selectItems(selectedItems);\n }\n\n packageSeachTermChanged(searchTerm: string): void {\n this.searchTerm$$.next(searchTerm);\n }\n\n packageSortTermChanges(order: SortDirection): void {\n this.nameSort$$.next(order);\n }\n\n packagePagingChanged(pageEvent: PageEvent): void {\n this.paged$$.next(pageEvent);\n }\n\n toggleShowingRestrictedPackages(): void {\n this.showingRestrictedPackages$.next(!this.showingRestrictedPackages$.getValue());\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { ActivatablePackage } from '../../../../core/interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[app-activatable-package-row]',\n templateUrl: './activatable-package-row.component.html',\n styleUrls: ['./activatable-package-row.component.scss'],\n})\nexport class ActivatablePackageRowComponent {\n @Input() activatablePackage: ActivatablePackage;\n @Input() indented = false;\n}\n","\n
\n \n

{{ activatablePackage.name }}

\n
\n\n\n \n\n","import { Component, Input } from '@angular/core';\nimport { ActivatableItemCount, ActivationStatus } from '../../../../core/interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[app-activatable-package-items-row]',\n templateUrl: './activatable-package-items-row.component.html',\n styleUrls: ['./activatable-package-row.component.scss'],\n})\nexport class ActivatablePackageItemsRowComponent {\n @Input() activatableItemCount: ActivatableItemCount;\n @Input() hidePricing: boolean;\n\n pendingStatus = ActivationStatus.PENDING;\n activatedStatus = ActivationStatus.ACTIVATED;\n cancelledStatus = ActivationStatus.CANCELED;\n\n public getBillingId(): string {\n if (!this.activatableItemCount?.editionId) {\n return this.activatableItemCount?.activatableItem?.billingId;\n }\n const editionId = this.activatableItemCount.editionId;\n const editions = this.activatableItemCount.activatableItem?.editionData?.editions || [];\n const editionBillingId = editions.find((ed) => ed.editionId === editionId)?.billingId;\n return editionBillingId || this.activatableItemCount.activatableItem?.billingId;\n }\n\n usesEdition(): boolean {\n return (\n this.activatableItemCount.activatableItem.editionData &&\n this.activatableItemCount.activatableItem.editionData.usesEditions &&\n !!this.activatableItemCount.editionName\n );\n }\n}\n","\n \n
\n \n
\n

\n {{\n activatableItem.name +\n (usesEdition() && activatableItemCount.editionName ? ' | ' + activatableItemCount.editionName : '')\n }}\n

\n \n Currently active\n \n \n {{\n 'ACTIVATION.SELECTION_PAGE.PACKAGE_ACTIVATION_TABLE.EDITION_IS_CURRENTLY_ACTIVE'\n | translate\n : {\n editionName: activatableItem.name + ' | ' + activatableItemCount.currentlyActivatedEditionName\n }\n }}\n \n \n {{ 'ACTIVATION.SELECTION_PAGE.CANCELED' | translate }}\n \n \n {{ 'ACTIVATION.SELECTION_PAGE.PENDING' | translate }}\n \n
\n
\n \n\n \n \n
\n {{ activatableItemCount.quantity }}\n
\n \n \n \n \n
\n\n \n \n \n {{ activatableItem.restrictedReason }}\n \n \n
\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport {\n ActivatablePackage,\n ActivationStatus,\n SelectedItem,\n SelectedItems,\n SortDirection,\n} from '../../../core/interface';\n\n@Component({\n selector: 'app-package-activation-table-component',\n templateUrl: './package-activation-table.component.html',\n styleUrls: ['./package-activation-table.component.scss'],\n})\nexport class PackageActivationTableComponent implements OnChanges {\n @Input() activatablePackages: ActivatablePackage[];\n @Input() selectedItems: SelectedItems;\n @Input() showRestricted: boolean;\n @Input() hidePricing: boolean;\n\n @Output() sortChanged: EventEmitter = new EventEmitter();\n @Output() packageCheckboxClicked: EventEmitter = new EventEmitter();\n\n sortIndicator = 'arrow_upward';\n private _nameSortOrder: SortDirection = 'ASCENDING';\n\n constructor(private readonly analyticsService: ProductAnalyticsService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.activatablePackages) {\n const scrollLocation = document.querySelector('#package-header');\n if (scrollLocation) {\n scrollLocation.scrollIntoView();\n }\n }\n }\n\n private set nameSortOrder(sort: SortDirection) {\n this._nameSortOrder = sort;\n this.sortIndicator = sort === 'ASCENDING' ? 'arrow_upward' : 'arrow_downward';\n }\n\n private get nameSortOrder(): SortDirection {\n return this._nameSortOrder;\n }\n\n sortItems(): void {\n if (this.nameSortOrder === 'ASCENDING') {\n this.nameSortOrder = 'DESCENDING';\n } else {\n this.nameSortOrder = 'ASCENDING';\n }\n this.sortChanged.emit(this.nameSortOrder);\n }\n\n onPackageSelectionChanged(activatablePackage: ActivatablePackage): void {\n this.analyticsService.trackEvent('clicked-package-row-item', '', 'click');\n if (activatablePackage) {\n const selectedItems: SelectedItem[] = [];\n activatablePackage.activatableItemCount.forEach((item) => {\n if (\n (item.status === ActivationStatus.CANCELED && !item.isTrial) ||\n (item.status === ActivationStatus.ACTIVATED && !item.isTrial) ||\n (item.status === ActivationStatus.PENDING && !item.isTrial)\n ) {\n return;\n }\n if (item.activatableItem && item.activatableItem.appId && !item.activatableItem.restrictedReason) {\n let quantityToAdd = item.quantity;\n if (item.activatableItem.allowMultipleActivations && this.selectedItems) {\n const tempQuantity = this.selectedItems.get(item.activatableItem.appId)\n ? this.selectedItems.get(item.activatableItem.appId).quantity\n : undefined;\n if (tempQuantity !== undefined) {\n quantityToAdd = quantityToAdd + tempQuantity;\n }\n }\n selectedItems.push({\n appId: item.activatableItem.appId,\n editionId: item.editionId || '',\n quantity: quantityToAdd,\n });\n }\n });\n this.packageCheckboxClicked.emit(selectedItems);\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 {{ sortIndicator }}\n \n
\n
\n {{ 'ACTIVATION.SELECTION_PAGE.PACKAGE_ACTIVATION_TABLE.PACKAGE_NAME' | translate }}\n
\n
\n
\n
\n {{ 'COMMON.PRICING.QUANTITY' | translate }}\n
\n
\n
\n \n {{ 'COMMON.PRICING.WHOLESALE_PRICING' | translate }}\n \n
\n
\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AccountService } from '../../../core/account.service';\nimport { VConfigService } from '../../../vconfig/vconfig.service';\nimport {\n ActivatableItemCount,\n ActivatablePackage,\n SelectedItem,\n SelectedItems,\n SortDirection,\n} from '../../core/interface';\nimport { PackageActivationTableService } from './package-activation-table.service';\n\n@Component({\n selector: 'app-paginated-package-activation-table',\n templateUrl: './paginated-package-activation-table.component.html',\n styleUrls: ['./paginated-package-activation-table.component.scss'],\n providers: [PackageActivationTableService],\n})\nexport class PaginatedPackageActivationTableComponent implements OnInit {\n totalPackages$: Observable;\n selectedItems$: Observable;\n activatablePackages$: Observable;\n pageOptions = [5, 25, 50];\n packagesHasRestrictions$: Observable;\n showingRestrictedPackages$: Observable;\n hidePricing$: Observable;\n\n @ViewChild(MatPaginator) private paginator: MatPaginator;\n constructor(\n private packageActivationTableService: PackageActivationTableService,\n @Inject('PARTNER_ID') private readonly partnerId$: Observable,\n private vconfigService: VConfigService,\n private accountService: AccountService,\n ) {}\n\n ngOnInit(): void {\n this.selectedItems$ = this.packageActivationTableService.selectedItems$;\n this.totalPackages$ = this.packageActivationTableService.totalPackages$;\n\n this.packagesHasRestrictions$ = this.packageActivationTableService.packagesHasRestrictions$;\n this.showingRestrictedPackages$ = this.packageActivationTableService.showingRestrictedPackages$;\n this.hidePricing$ = this.packageActivationTableService.hidePricing$;\n\n this.activatablePackages$ = this.packageActivationTableService.activatablePackages$.pipe(\n map((activatablePackage) => this.updatePackageWithEditionInfo(activatablePackage)),\n );\n }\n\n updatePackageWithEditionInfo(activatablePackages: ActivatablePackage[]): ActivatablePackage[] {\n return activatablePackages.map((pkg) => {\n const items: ActivatableItemCount[] = (pkg.activatableItemCount || []).map((item) => {\n if (\n item &&\n item.activatableItem &&\n item.activatableItem.editionData &&\n item.activatableItem.editionData.usesEditions\n ) {\n const edition = item.activatableItem.editionData.editions.find((e) => e.editionId === (item.editionId || ''));\n if (edition) {\n const activeEdition = item.activatableItem.editionData.editions.find(\n (e) => e.editionId === (item.activatableItem.editionData.currentlyActiveEditionId || ''),\n );\n if (activeEdition) {\n return {\n ...item,\n editionName: edition.editionName,\n currentlyActivatedEditionName: activeEdition.editionName,\n activatableItem: { ...item.activatableItem, pricing: edition.pricing },\n };\n }\n return {\n ...item,\n editionName: edition.editionName,\n activatableItem: { ...item.activatableItem, pricing: edition.pricing },\n };\n }\n }\n return item;\n });\n return { ...pkg, activatableItemCount: items };\n });\n }\n\n extractAppIds(activatablePackages: ActivatablePackage[]): string[] {\n const appIds = (activatablePackages || []).reduce((prev, curr) => {\n const items = (curr.activatableItemCount || []).filter(\n (item) => item.activatableItem.editionData && item.activatableItem.editionData.usesEditions,\n );\n const itemAppIds = items.map((item) => item.activatableItem.appId);\n return prev.concat(itemAppIds);\n }, [] as string[]);\n\n return appIds.filter((id, idx) => appIds.indexOf(id) === idx);\n }\n\n onPackageCheckboxClicked(selectedItems: SelectedItem[]): void {\n this.packageActivationTableService.handlePackageCheckboxEvent(selectedItems);\n }\n\n toggleRestrictedPackages(): void {\n this.packageActivationTableService.toggleShowingRestrictedPackages();\n }\n\n onPackageSearchTermChanged(searchTerm: string): void {\n this.packageActivationTableService.packageSeachTermChanged(searchTerm);\n // Fix for searching on a page other than the first page\n this.paginator.firstPage();\n }\n\n onPackagePage(pageEvent: PageEvent): void {\n this.packageActivationTableService.packagePagingChanged(pageEvent);\n }\n\n onPackageSortOrderChanged(order: SortDirection): void {\n this.packageActivationTableService.packageSortTermChanges(order);\n }\n}\n","\n \n \n
\n \n 0; else noPackages\"\n [activatablePackages]=\"activatablePackages\"\n [selectedItems]=\"packageActivationData.selectedItems\"\n [showRestricted]=\"packageActivationData.showingRestrictedPackages\"\n [hidePricing]=\"packageActivationData.hidePricing\"\n (sortChanged)=\"onPackageSortOrderChanged($event)\"\n (packageCheckboxClicked)=\"onPackageCheckboxClicked($event)\"\n >\n \n
\n
\n \n
\n
\n
\n\n\n \n\n\n

\n {{ 'ACTIVATION.SELECTION_PAGE.PACKAGE_ACTIVATION_TABLE.NO_PACKAGES_MATCH_SEARCH' | translate }}\n \n {{ 'ACTIVATION.SELECTION_PAGE.PACKAGE_ACTIVATION_TABLE.VIEW_RECOMMENDED_PACKAGES' | translate }}\n \n

\n
\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Pricing } from '../../../common/table-pricing/interface';\nimport { AppIDs } from '../../../constants';\nimport { ProductService } from '../../../core/product.service';\nimport { Product } from '../../../core/product/product';\nimport { godaddyAppId } from '../../../marketplace-app/global-brands-constants';\nimport { ActivationService } from '../../core/activation.service';\nimport { ActivatableItem, ActivatableItemCount } from '../../core/interface';\n\nexport const APP_NAMES = {\n WEBSITE: 'website',\n GO_DADDY: 'go_daddy',\n};\n\nexport const PRO_EDITION = 'Pro';\n\n@Component({\n selector: 'app-custom-product-recommendations',\n templateUrl: './custom-product-recommendations.component.html',\n styleUrls: ['./custom-product-recommendations.component.scss'],\n})\nexport class CustomProductRecommendationsComponent implements OnInit, OnDestroy {\n @Input() appCartItems$: Observable;\n appNames = APP_NAMES;\n\n // the current custom recommendation is in place for WSP and GoDaddy\n goDaddy$: Observable;\n // only the pro version of Website is used here as the Express version does not allow setting custom domains\n websitePro$: Observable;\n checkedGoDaddy = false;\n checkedWebsitePro = false;\n goDaddyPricing: Pricing;\n websiteProPricing: Pricing;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private activationService: ActivationService,\n private environmentService: EnvironmentService,\n private productService: ProductService,\n ) {\n this.setProducts(environmentService.getEnvironment());\n }\n\n ngOnInit(): void {\n this.subscriptions.push(\n this.appCartItems$\n .pipe(\n map((aics: ActivatableItemCount[]) => {\n let foundWebsitePro = false;\n let foundGoDaddy = false;\n aics.forEach((aic: ActivatableItemCount) => {\n switch (aic.activatableItem.appId) {\n case AppIDs.WebsiteDemo:\n case AppIDs.Website:\n // cannot add custom domains on Website Express\n if (aic.editionName.toLowerCase() === PRO_EDITION.toLowerCase()) {\n foundWebsitePro = true;\n }\n break;\n case godaddyAppId[Environment.DEMO]:\n case godaddyAppId[Environment.PROD]:\n foundGoDaddy = true;\n break;\n }\n });\n if (foundWebsitePro && foundGoDaddy) {\n this.checkedWebsitePro = false;\n this.checkedGoDaddy = false;\n } else {\n this.checkedWebsitePro = foundWebsitePro;\n this.checkedGoDaddy = foundGoDaddy;\n }\n }),\n )\n .subscribe(),\n );\n }\n\n /**\n * Sets the product subscriptions based on the environment that is passed in. This only sets the subscriptions for\n * the GoDaddy and WebsitePro products\n * @param env Environment.DEMO || Environment.PROD\n */\n setProducts(env: Environment): void {\n if (env === Environment.PROD) {\n this.setGoDaddyWSP(godaddyAppId[Environment.PROD], AppIDs.Website);\n this.setGoDaddyWSPPricing(godaddyAppId[Environment.PROD], AppIDs.Website);\n } else {\n this.setGoDaddyWSP(godaddyAppId[Environment.DEMO], AppIDs.WebsiteDemo);\n this.setGoDaddyWSPPricing(godaddyAppId[Environment.DEMO], AppIDs.WebsiteDemo);\n }\n }\n\n /**\n * Sets the subscriptions for obtaining GoDaddy and WebsitePro app details\n * @param goDaddyAppId the app ID of GoDaddy, according to the environment\n * @param wspAppId the app ID of WebsitePro, according to the environment\n */\n setGoDaddyWSP(goDaddyAppId: string, wspAppId: string): void {\n this.goDaddy$ = this.productService.appWithId(goDaddyAppId);\n this.websitePro$ = this.productService.appWithId(wspAppId);\n }\n\n /**\n * Finds the pricing of GoDaddy and WebsitePro based on the app ID passed in according to the environment\n * specification\n * @param goDaddyAppId the app ID of GoDaddy, according to the environment\n * @param wspAppId the app ID of WebsitePro, according to the environment\n */\n setGoDaddyWSPPricing(goDaddyAppId: string, wspAppId: string): void {\n this.subscriptions.push(\n this.activationService.activatableItems$.subscribe((items: ActivatableItem[]) => {\n this.goDaddyPricing = items.find((item: ActivatableItem) => item.appId === goDaddyAppId)?.pricing;\n this.websiteProPricing = items.find((item: ActivatableItem) => item.appId === wspAppId)?.pricing;\n }),\n );\n }\n\n /**\n * Selects the appropriate product ID based on the product name that is passed in and adds the item to the cart\n * @param product APP_NAMES.WEBSITE || APP_NAMES.GO_DADDY\n */\n addProduct(product: string): void {\n let appId = '';\n switch (product) {\n case APP_NAMES.WEBSITE:\n appId = godaddyAppId[this.environmentService.getEnvironment()];\n break;\n case APP_NAMES.GO_DADDY:\n appId = this.environmentService.getEnvironment() === Environment.DEMO ? AppIDs.WebsiteDemo : AppIDs.Website;\n break;\n }\n this.activationService.selectItem({ appId: appId, quantity: 1 });\n }\n\n /**\n * Removes WebsitePro and GoDaddy from the cart\n */\n removeCheckedProducts(): void {\n this.checkedWebsitePro = false;\n this.checkedGoDaddy = false;\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((s) => s.unsubscribe());\n }\n}\n","\n\n\n\n\n \n \n \n {{ 'PRODUCT_ACTIVATION.DOMAIN_QUESTION' | translate }}\n \n \n \n {{ 'PRODUCT_ACTIVATION.DOMAIN_VALUE' | translate }}\n \n
\n
\n
\n \n {{ goDaddy.name }}\n
\n \n
\n
\n
\n
\n \n \n \n \n
\n
\n\n\n \n \n \n {{ 'PRODUCT_ACTIVATION.WEBSITE_QUESTION' | translate }}\n \n \n \n {{ 'PRODUCT_ACTIVATION.WEBSITE_VALUE' | translate }}\n \n
\n
\n
\n \n {{ websitePro.name }}\n
\n \n
\n
\n
\n
\n \n \n \n \n
\n
\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { WorkOrderFormUnsavedChangesGuard } from '@vendasta/work-order';\nimport { OrderConfirmationPageComponent } from './confirmation-page/order-confirmation-page/order-confirmation-page.component';\nimport { ActivationParamService } from './core/activation-param.service';\nimport { DynamicOrderFormPageComponent } from './dynamic-order-form-page/dynamic-order-form-page.component';\nimport { OrderFormPageComponent } from './order-form-page/order-form-page/order-form-page.component';\nimport { OrderSubmittedPageComponent } from './order-submitted-page/order-submitted-page.component';\nimport { ActivationSelectionPageComponent } from './selection-page/activation-selection-page.component';\n\nconst routes: Routes = [\n // ActivationParamService used as resolver because I want the route and query params in the service\n {\n path: '',\n component: ActivationSelectionPageComponent,\n resolve: { accountGroupId: ActivationParamService },\n },\n {\n path: 'dynamic-order-form',\n component: DynamicOrderFormPageComponent,\n resolve: { accountGroupId: ActivationParamService },\n },\n {\n path: 'order-form',\n component: OrderFormPageComponent,\n resolve: { accountGroupId: ActivationParamService },\n },\n {\n path: 'confirmation',\n component: OrderConfirmationPageComponent,\n resolve: { accountGroupId: ActivationParamService },\n },\n {\n path: 'order-submitted-page',\n component: OrderSubmittedPageComponent,\n resolve: { accountGroupId: ActivationParamService },\n canDeactivate: [WorkOrderFormUnsavedChangesGuard],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ActivationRoutingModule {}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { OrderConfirmationItem } from '../interface';\n\n@Component({\n selector: 'app-change-price-dialog',\n templateUrl: './change-price-dialog.component.html',\n styleUrls: ['./change-price-dialog.component.scss'],\n})\nexport class ChangePriceDialogComponent {\n currentSpendAmountInCents: number;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: { item: OrderConfirmationItem },\n ) {\n if (data?.item?.generalPriceInfo?.price) {\n this.currentSpendAmountInCents = data.item.generalPriceInfo.price;\n }\n dialogRef.disableClose = true;\n }\n\n handleOutputFromVariablePriceInputComponent(outputPriceInCents): void {\n if (!outputPriceInCents || typeof outputPriceInCents === 'object') {\n return null;\n }\n\n this.currentSpendAmountInCents = outputPriceInCents;\n }\n\n closeDialog(): void {\n this.dialogRef.close(this.currentSpendAmountInCents);\n }\n}\n","\n

\n {{ 'ACTIVATION.CONFIRMATION_PAGE.CHANGE_PRICE_DIALOG.EDIT_AMOUNT' | translate }}\n

\n

\n {{ 'ACTIVATION.CONFIRMATION_PAGE.CHANGE_PRICE_DIALOG.YOU_CAN_INCREASE_AMOUNT' | translate }}\n

\n
\n \n \n
\n\n \n \n\n","import { ProductPricing } from '@galaxy/billing';\nimport {\n AppPrice,\n AppPrices,\n Commitment,\n Discount,\n Fee,\n FeeAmountType,\n FeeType,\n PriceDisplayOverride,\n PricingRule,\n} from '@galaxy/marketplace-apps';\nimport { calculateFeeAmount, toGalaxyFrequency } from '@vendasta/billing-ui';\nimport { Frequency as GalaxyFrequency } from '@vendasta/galaxy/frequency';\n\nexport type PriceOverride = 'CONTACT SALES' | 'FREE';\n\nexport interface OrderConfirmationItem {\n name: string;\n icon: string;\n quantity: number;\n activationMessage: string;\n requiresApproval: boolean;\n priceOverride: PriceOverride;\n appId: string;\n addonId: string;\n editionId?: string;\n editionName?: string;\n tagline?: string;\n initialSubtotalCost?: number;\n retailTotal?: number;\n appPrices: AppPrices;\n effectiveRetailAppPrice?: AppPrice;\n effectiveAppPrice?: AppPrice;\n generalPriceInfo?: GeneralPriceInfo;\n generalPriceInfoRetail?: GeneralPriceInfo;\n generalPriceInfoInstanceRetail?: GeneralPriceInfo;\n partnerCurrency: string;\n productPricing: ProductPricing;\n marketCurrency: string;\n}\n\nexport type ActivationErrorType = 'activationFailure' | 'unknownFailure' | 'noAppsError' | 'invalidForm';\nexport interface ActivationError {\n appNames: string[];\n type: ActivationErrorType;\n errorMessage: string;\n openFailureDialog: boolean;\n}\n\nexport interface GeneralPriceInfo {\n price: number;\n frequency: GalaxyFrequency;\n setupFee: number;\n commitment: Commitment;\n stairSteps: PricingRule[];\n discounts: Discount[];\n fees: Fee[];\n contactSales: boolean;\n}\n\nexport function extractGeneralPriceInfoFromOrderConfirmation(\n item: OrderConfirmationItem,\n context = 'wholesale',\n): GeneralPriceInfo {\n let appPrice = item.effectiveAppPrice ? item.effectiveAppPrice : item.appPrices.pricesForContexts[context];\n let currency = item.partnerCurrency;\n\n if (context === 'retail') {\n appPrice = item.effectiveRetailAppPrice;\n currency = item.marketCurrency;\n }\n\n if (appPrice && appPrice.displayOverride === PriceDisplayOverride.PRICE_DISPLAY_OVERRIDE_CONTACT_SALES) {\n return {\n contactSales: true,\n } as GeneralPriceInfo;\n }\n\n if (\n !appPrice ||\n !appPrice.pricesForEditions?.[item.editionId || '']?.pricesForCurrencies?.[currency]?.pricesForFrequencies?.[0]\n ?.pricingRules?.[0].price\n ) {\n return {} as GeneralPriceInfo;\n }\n\n const freqPrice =\n appPrice.pricesForEditions[item.editionId || ''].pricesForCurrencies[currency].pricesForFrequencies[0];\n let price = freqPrice.pricingRules[0].price;\n\n if (context === 'wholesale') {\n const setupFee = freqPrice.setupFee || 0;\n price = freqPrice.instancePrice.total - setupFee;\n }\n\n const priceInfo = {\n price: price,\n frequency: toGalaxyFrequency(freqPrice.frequency),\n setupFee: freqPrice.setupFee * item.quantity,\n stairSteps: freqPrice.pricingRules.length > 1 ? freqPrice.pricingRules : null,\n discounts: appPrice.pricesForEditions[item.editionId || ''].discount || [],\n } as GeneralPriceInfo;\n\n if (freqPrice?.commitment?.initial > 1 || freqPrice?.commitment?.recurring > 1) {\n priceInfo.commitment = freqPrice.commitment;\n }\n\n if (freqPrice?.fees?.length > 0) {\n const feeAmount = calculateFeeAmount(priceInfo.price, freqPrice.fees);\n const calculatedFee = {\n amount: feeAmount * item.quantity,\n amountType: FeeAmountType.FEE_AMOUNT_TYPE_FIXED,\n feeType: FeeType.FEE_TYPE_MANAGEMENT,\n } as Fee;\n priceInfo.fees = [calculatedFee];\n }\n\n return priceInfo;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Currency } from '@galaxy/billing';\nimport { PriceDisplayOverride } from '@galaxy/marketplace-apps';\nimport {\n calculateFeeAmount,\n galaxyFrequencyLabelToGalaxyFrequency,\n getFeesForEdition,\n getFrequencyValueForEdition,\n getLowestEditionId,\n getPriceValueForEdition,\n getSetupFeeForEdition,\n setAppPrice,\n setInstanceAppPrice,\n} from '@vendasta/billing-ui';\nimport { Frequency as GalaxyFrequency } from '@vendasta/galaxy/frequency';\n\nimport { Subscription } from 'rxjs';\nimport { PricePipe } from '../../../common/pipes/price.pipe';\nimport { PurchaseCost } from '../../../core/billing/purchase-cost';\nimport { ProductOrderFormStoreService } from '../../core/product-order-form.store.service';\nimport { updateOrderItemsWithCustomPrice } from '../../order-form-page/custom-price.util';\nimport { ChangePriceDialogComponent } from '../change-price-dialog/change-price-dialog.component';\nimport { extractGeneralPriceInfoFromOrderConfirmation, OrderConfirmationItem } from '../interface';\n\ninterface RecurringChargeTotal {\n total: number;\n isStartingPrice: boolean;\n frequency?: GalaxyFrequency;\n}\n\ninterface ProductSummaryColumn {\n id: string;\n name: string;\n}\n\nconst ALL_COLUMNS: ProductSummaryColumn[] = [\n {\n id: 'item',\n name: 'Item',\n },\n {\n id: 'wholesale',\n name: 'Wholesale',\n },\n {\n id: 'qty',\n name: 'Qty',\n },\n {\n id: 'retail price',\n name: 'Retail price',\n },\n {\n id: 'amount',\n name: 'Amount',\n },\n];\n\n@Component({\n selector: 'app-activation-price-summary',\n templateUrl: './activation-price-summary.component.html',\n styleUrls: ['./activation-price-summary.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ActivationPriceSummaryComponent implements OnDestroy, OnInit {\n static readonly CENTS_DOLLAR: number = 100;\n @Input() hidePricing: boolean;\n @Input() productsAreInstantBilled: boolean;\n @Input() items: OrderConfirmationItem[];\n @Input() columnIds: string[]; // Columns to display, default: all.\n @Output()\n orderConfirmationItemEmitter: EventEmitter = new EventEmitter();\n\n @Input()\n set activationItemSummaries(summaries: OrderConfirmationItem[]) {\n this.summaries = summaries || [];\n this.subscriptions.push(\n this.productOrderFormService.cachedOrder$.subscribe((order) => {\n updateOrderItemsWithCustomPrice(summaries, order);\n }),\n );\n this.fixValuesAndQuantities(summaries);\n\n this.summaries.forEach((summary) => {\n summary.generalPriceInfo = extractGeneralPriceInfoFromOrderConfirmation(summary);\n summary.generalPriceInfoRetail = extractGeneralPriceInfoFromOrderConfirmation(summary, 'retail');\n });\n\n this.calculateTotals(summaries);\n }\n @Input()\n set nonInstantItemSummaries(summaries: OrderConfirmationItem[]) {\n this.nonInstantSummaries = new Map();\n summaries.map((item) => {\n this.nonInstantSummaries.set(item.appId + item.editionId, item);\n });\n }\n\n public displayedColumns: string[];\n public displayedColumnsNames: string[];\n public summaries: OrderConfirmationItem[];\n public nonInstantSummaries: Map;\n public retailTotal = 0;\n public total = 0;\n public recurringTotals: { [frequency: string]: RecurringChargeTotal } = {};\n public recurringRetailTotals: { [frequency: string]: RecurringChargeTotal } = {};\n public currency = 'USD';\n public contactSalesForOrder = false;\n public minWholesalePrice: { [appId: string]: number } = {};\n public retailCurrency: string;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private cdr: ChangeDetectorRef,\n private pricePipe: PricePipe,\n public dialog: MatDialog,\n private productOrderFormService: ProductOrderFormStoreService,\n ) {}\n\n ngOnInit(): void {\n const columnsToDisplay = this.getColumnsToDisplay(this.columnIds);\n this.displayedColumns = columnsToDisplay.map((c: ProductSummaryColumn) => c.id);\n this.displayedColumnsNames = columnsToDisplay.map((c: ProductSummaryColumn) => c.name);\n }\n\n private fixValuesAndQuantities(summaries: OrderConfirmationItem[]): void {\n summaries?.forEach((item) => {\n const wholesaleAppPrice = item.appPrices.pricesForContexts['wholesale'];\n const currValue =\n getPriceValueForEdition(wholesaleAppPrice, item.partnerCurrency, item.editionId || '', true) * item.quantity;\n\n const retailAppPrice = item.appPrices.pricesForContexts['retail'];\n const currRetailValue =\n getPriceValueForEdition(retailAppPrice, item.marketCurrency, item.editionId || '', false) * item.quantity;\n\n if (!item.effectiveAppPrice) {\n item.effectiveAppPrice = setInstanceAppPrice(\n wholesaleAppPrice,\n item.partnerCurrency,\n currValue,\n item.editionId || '',\n );\n }\n\n if (!item.effectiveRetailAppPrice) {\n item.effectiveRetailAppPrice = setAppPrice(\n retailAppPrice,\n item.marketCurrency,\n currRetailValue,\n item.editionId || '',\n );\n }\n\n // Set retailCurrency\n if (!this.retailCurrency) {\n this.retailCurrency = item.marketCurrency;\n }\n });\n }\n\n private calculateTotals(summaries: OrderConfirmationItem[]): void {\n this.total = getOrderTotal(summaries);\n this.recurringTotals = getRecurringChargeTotals(summaries);\n this.retailTotal = getOrderRetailTotal(summaries);\n this.recurringRetailTotals = getRecurringRetailChargeTotals(summaries);\n this.currency = getCurrency(summaries);\n this.contactSalesForOrder = shouldContactSalesForOrder(summaries);\n }\n\n private setMinWholesalePrice(appId: string, subtotalCost: number): void {\n if (!(appId in this.minWholesalePrice)) {\n this.minWholesalePrice[appId] = subtotalCost / ActivationPriceSummaryComponent.CENTS_DOLLAR;\n }\n }\n\n getDiscountDescription(purchaseCost: PurchaseCost): string {\n return 'Discount: ' + this.pricePipe.transform(purchaseCost.discountAmount, Currency[purchaseCost.currency]);\n }\n\n openChangePriceDialog(item: OrderConfirmationItem): void {\n const minAppId = item.addonId ? item.addonId : item.appId;\n this.setMinWholesalePrice(minAppId, item.initialSubtotalCost);\n this.dialog\n .open(ChangePriceDialogComponent, {\n width: '350px',\n data: { item },\n })\n .afterClosed()\n .subscribe((price: number) => {\n if (price) {\n const index = this.summaries.findIndex((app) => app.appId === item.appId);\n item.effectiveAppPrice = setInstanceAppPrice(\n item.appPrices.pricesForContexts['wholesale'],\n item.partnerCurrency,\n price,\n item.editionId || '',\n );\n if (index > -1) {\n this.summaries[index] = {\n appId: item.appId,\n addonId: item.addonId,\n editionId: item.editionId,\n name: item.name,\n icon: item.icon,\n requiresApproval: item.requiresApproval,\n quantity: item.quantity,\n activationMessage: item.activationMessage,\n priceOverride: item.priceOverride,\n editionName: item.editionName,\n appPrices: item.appPrices,\n partnerCurrency: item.partnerCurrency,\n retailTotal: item.retailTotal,\n productPricing: item.productPricing,\n effectiveAppPrice: item.effectiveAppPrice,\n effectiveRetailAppPrice: item.effectiveRetailAppPrice,\n marketCurrency: item.marketCurrency,\n };\n\n const generalPriceInfo = extractGeneralPriceInfoFromOrderConfirmation(this.summaries[index]);\n this.summaries[index].generalPriceInfo = generalPriceInfo;\n\n this.calculateTotals(this.summaries);\n\n // Update the order confirmation item\n let orderItemToEmit: OrderConfirmationItem;\n for (let i = 0; i < this.items.length; i++) {\n const orderItem = this.items[i];\n if (\n orderItem.appId === item.appId &&\n orderItem.addonId === item.addonId &&\n orderItem.editionId === item.editionId\n ) {\n orderItem.generalPriceInfo = generalPriceInfo;\n orderItemToEmit = orderItem;\n break;\n }\n }\n this.orderConfirmationItemEmitter.emit(orderItemToEmit);\n\n // fire angular change detection\n this.cdr.detectChanges();\n }\n }\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n private getColumnsToDisplay(columnIds: string[]): ProductSummaryColumn[] {\n if (!(columnIds?.length > 0)) {\n return ALL_COLUMNS;\n }\n return ALL_COLUMNS.filter((column) => columnIds.includes(column.id));\n }\n\n public isNonInstant(item: OrderConfirmationItem): boolean {\n return this.nonInstantSummaries.has(item.appId + item.editionId);\n }\n}\n\n// Returns the total retail price for all the items\nexport function getOrderRetailTotal(items: OrderConfirmationItem[]): number {\n return !!items && items.length > 0\n ? items.reduce(\n (accumulator, currentValue) =>\n (getPriceValueForEdition(\n currentValue.effectiveRetailAppPrice,\n currentValue.marketCurrency,\n currentValue.editionId || '',\n false,\n ) || 0) +\n getSetupFeeForEdition(\n currentValue.effectiveRetailAppPrice,\n currentValue.marketCurrency,\n currentValue.editionId || '',\n ) *\n currentValue.quantity +\n accumulator,\n 0,\n )\n : 0;\n}\n\n// Returns the total price for all the items\nexport function getOrderTotal(items: OrderConfirmationItem[]): number {\n // note that totalCost can be negative if the item is free.\n // Those should be excluded from the total.\n // Add setupFee to the calculation, since price display is filtering it out of instance prices\n return !!items && items.length > 0\n ? items.reduce((accumulator, currentValue) => {\n const priceValue =\n getPriceValueForEdition(\n currentValue.effectiveAppPrice,\n currentValue.partnerCurrency,\n currentValue.editionId || '',\n true,\n ) || 0;\n const setupFeeValue =\n getSetupFeeForEdition(\n currentValue.effectiveAppPrice,\n currentValue.partnerCurrency,\n currentValue.editionId || '',\n ) * currentValue.quantity;\n const feeValue =\n calculateFeeAmount(\n priceValue,\n getFeesForEdition(\n currentValue.effectiveAppPrice,\n currentValue.partnerCurrency,\n currentValue.editionId || '',\n ) || [],\n ) * currentValue.quantity;\n return priceValue + setupFeeValue + feeValue + accumulator;\n }, 0)\n : 0;\n}\n\n// Returns true if all the items in the order require the user to contact sales.\n// This prevents the total from showing \"Free\" when that's not necessarily the case.\nexport function shouldContactSalesForOrder(items: OrderConfirmationItem[]): boolean {\n if (!items || items.length === 0) {\n return false;\n }\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (\n item.appPrices.pricesForContexts['wholesale'].displayOverride !==\n PriceDisplayOverride.PRICE_DISPLAY_OVERRIDE_CONTACT_SALES\n ) {\n return false;\n }\n }\n return true;\n}\n\n// Gets the currency for the order. Orders assumes the currency will be the\n// same across all the products, so it will try to determine a currency from\n// the first one.\n//\n// If no currency is found, USD will be used as the default.\nexport function getCurrency(items: OrderConfirmationItem[]): string {\n return !!items && items.length > 0 ? items[0].partnerCurrency : 'USD';\n}\n\n// Returns a mapping of the billing frequency to the wholesale total amount which to\n// be charged at the frequency.\nexport function getRecurringRetailChargeTotals(items: OrderConfirmationItem[]): {\n [frequency: string]: RecurringChargeTotal;\n} {\n const totals: { [frequency: string]: RecurringChargeTotal } = {};\n if (!items) {\n return totals;\n }\n items.forEach((item) => {\n const frequency = getFrequencyValueForEdition(\n item.effectiveRetailAppPrice,\n item.marketCurrency,\n item.editionId || '',\n );\n\n if (frequency && frequency !== 'one time') {\n // Infer 0 to avoid summing contact sales value (might be -1)\n const price =\n getPriceValueForEdition(item.effectiveRetailAppPrice, item.marketCurrency, item.editionId || '', false) || 0;\n\n if (price <= 0) {\n return;\n }\n\n if (!totals[frequency]) {\n totals[frequency] = {\n total: price,\n isStartingPrice: item.editionId === getLowestEditionId(item.effectiveRetailAppPrice, item.marketCurrency),\n frequency: galaxyFrequencyLabelToGalaxyFrequency(frequency),\n };\n } else {\n totals[frequency].total += price;\n totals[frequency].frequency = galaxyFrequencyLabelToGalaxyFrequency(frequency);\n }\n }\n });\n return totals;\n}\n\n// Returns a mapping of the billing frequency to the retail total amount which to\n// be charged at the frequency.\nexport function getRecurringChargeTotals(items: OrderConfirmationItem[]): {\n [frequency: string]: RecurringChargeTotal;\n} {\n const totals: { [frequency: string]: RecurringChargeTotal } = {};\n if (!items) {\n return totals;\n }\n items.forEach((item) => {\n const frequency = getFrequencyValueForEdition(item.effectiveAppPrice, item.partnerCurrency, item.editionId || '');\n\n if (frequency && frequency !== 'one time') {\n // Infer 0 to avoid summing contact sales value (might be -1)\n const price =\n getPriceValueForEdition(item.effectiveAppPrice, item.partnerCurrency, item.editionId || '', true) || 0;\n\n const feeAmount =\n calculateFeeAmount(\n price,\n getFeesForEdition(item.effectiveAppPrice, item.partnerCurrency, item.editionId || '') || [],\n ) * item.quantity;\n\n if (price <= 0) {\n return;\n }\n // The price component already takes setup fee into account\n if (!totals[frequency]) {\n totals[frequency] = {\n total: price + feeAmount,\n isStartingPrice: item.editionId === getLowestEditionId(item.effectiveAppPrice, item.partnerCurrency),\n frequency: galaxyFrequencyLabelToGalaxyFrequency(frequency),\n };\n } else {\n totals[frequency].total += price + feeAmount;\n totals[frequency].frequency = galaxyFrequencyLabelToGalaxyFrequency(frequency);\n }\n }\n });\n return totals;\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 {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE_SUMMARY.ITEM' | translate }}\n \n
\n
\n \n
\n
\n
\n {{ row.name }}\n  | {{ row.editionName }}\n
\n
\n {{ row.addonId || row.appId }}\n  | {{ row.editionId }}\n
\n
\n \n help_outline\n \n
\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE_SUMMARY.WHOLESALE' | translate }}\n \n \n {{ 'COMMON.ACTION_LABELS.EDIT' | translate }}\n \n
\n \n
\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE_SUMMARY.QUANTITY_SHORT' | translate }}\n \n
\n {{ row.quantity }}\n
\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE_SUMMARY.RETAIL_PRICE' | translate }}\n \n \n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE_SUMMARY.AMOUNT' | translate }}\n \n
\n \n
\n
\n
\n\n\n
\n
\n
\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE_SUMMARY.TOTALS' | translate }}\n
\n
\n
\n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE_SUMMARY.WHOLESALE' | translate }}\n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE_SUMMARY.RECURRING' | translate }}\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE_SUMMARY.RETAIL' | translate }}\n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n \n
\n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE_SUMMARY.RECURRING' | translate }}\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n\n\n\n
\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Currency } from '@galaxy/billing';\nimport { PriceDisplayOverride } from '@galaxy/marketplace-apps';\nimport {\n calculateFeeAmount,\n galaxyFrequencyLabelToGalaxyFrequency,\n getFeesForEdition,\n getFrequencyValueForEdition,\n getLowestEditionId,\n getPriceValueForEdition,\n getSetupFeeForEdition,\n setInstanceAppPrice,\n} from '@vendasta/billing-ui';\nimport { Frequency as GalaxyFrequency } from '@vendasta/galaxy/frequency';\nimport { Subscription } from 'rxjs';\nimport { PricePipe } from '../../../common/pipes/price.pipe';\nimport { PurchaseCost } from '../../../core/billing/purchase-cost';\nimport { ProductOrderFormStoreService } from '../../core/product-order-form.store.service';\nimport { updateOrderItemsWithCustomPrice } from '../../order-form-page/custom-price.util';\nimport { ChangePriceDialogComponent } from '../change-price-dialog/change-price-dialog.component';\nimport { extractGeneralPriceInfoFromOrderConfirmation, OrderConfirmationItem } from '../interface';\n\ninterface RecurringChargeTotal {\n total: number;\n isStartingPrice: boolean;\n frequency?: GalaxyFrequency;\n}\n\n@Component({\n selector: 'app-activation-price',\n templateUrl: './activation-price.component.html',\n styleUrls: ['./activation-price.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ActivationPriceComponent implements OnDestroy {\n static readonly CENTS_DOLLAR: number = 100;\n @Input() hidePricing: boolean;\n @Input() productsAreInstantBilled: boolean;\n @Input() items: OrderConfirmationItem[];\n @Output()\n orderConfirmationItemEmitter: EventEmitter = new EventEmitter();\n @Output() wholesaleTotal: EventEmitter = new EventEmitter();\n\n @Input()\n set activationItemSummaries(summaries: OrderConfirmationItem[]) {\n this.summaries = summaries || [];\n this.subscriptions.push(\n this.productOrderFormService.cachedOrder$.subscribe((order) => {\n updateOrderItemsWithCustomPrice(summaries, order);\n }),\n );\n this.fixValuesAndQuantities(summaries);\n\n this.summaries.forEach((summary) => {\n summary.generalPriceInfo = extractGeneralPriceInfoFromOrderConfirmation(summary);\n });\n\n this.calculateTotals(summaries);\n }\n\n summaries: OrderConfirmationItem[];\n total = 0;\n recurringTotals: { [frequency: string]: RecurringChargeTotal } = {};\n currency = 'USD';\n contactSalesForOrder = false;\n minWholesalePrice: { [appId: string]: number } = {};\n private subscriptions: Subscription[] = [];\n constructor(\n private cdr: ChangeDetectorRef,\n private pricePipe: PricePipe,\n public dialog: MatDialog,\n private productOrderFormService: ProductOrderFormStoreService,\n ) {}\n\n private fixValuesAndQuantities(summaries: OrderConfirmationItem[]): void {\n summaries?.forEach((item) => {\n const appPrice = item.appPrices.pricesForContexts['wholesale'];\n const currValue =\n getPriceValueForEdition(appPrice, item.partnerCurrency, item.editionId || '', true) * item.quantity;\n\n if (!item.effectiveAppPrice) {\n item.effectiveAppPrice = setInstanceAppPrice(appPrice, item.partnerCurrency, currValue, item.editionId || '');\n }\n });\n }\n\n private calculateTotals(summaries: OrderConfirmationItem[]): void {\n this.total = getOrderTotal(summaries);\n this.recurringTotals = getRecurringChargeTotals(summaries);\n this.currency = getCurrency(summaries);\n this.contactSalesForOrder = shouldContactSalesForOrder(summaries);\n this.wholesaleTotal.emit(this.total);\n }\n\n getDiscountDescription(purchaseCost: PurchaseCost): string {\n return 'Discount: ' + this.pricePipe.transform(purchaseCost.discountAmount, Currency[purchaseCost.currency]);\n }\n\n openChangePriceDialog(item: OrderConfirmationItem): void {\n this.dialog\n .open(ChangePriceDialogComponent, {\n disableClose: true,\n width: '350px',\n data: { item },\n })\n .afterClosed()\n .subscribe((priceInCents: number) => {\n if (priceInCents) {\n const index = this.summaries.findIndex((app) => app.appId === item.appId);\n item.effectiveAppPrice = setInstanceAppPrice(\n item.appPrices.pricesForContexts['wholesale'],\n item.partnerCurrency,\n priceInCents,\n item.editionId || '',\n );\n\n if (index > -1) {\n this.summaries[index] = {\n appId: item.appId,\n addonId: item.addonId,\n editionId: item.editionId,\n name: item.name,\n icon: item.icon,\n requiresApproval: item.requiresApproval,\n quantity: item.quantity,\n activationMessage: item.activationMessage,\n priceOverride: item.priceOverride,\n editionName: item.editionName,\n appPrices: item.appPrices,\n partnerCurrency: item.partnerCurrency,\n retailTotal: item.retailTotal,\n productPricing: item.productPricing,\n effectiveAppPrice: item.effectiveAppPrice,\n effectiveRetailAppPrice: item.effectiveRetailAppPrice,\n marketCurrency: item.marketCurrency,\n };\n\n this.summaries[index].generalPriceInfo = extractGeneralPriceInfoFromOrderConfirmation(\n this.summaries[index],\n );\n\n this.calculateTotals(this.summaries);\n\n // Update the order confirmation item\n let orderItemToEmit: OrderConfirmationItem;\n for (let i = 0; i < this.items.length; i++) {\n const orderItem = this.items[i];\n if (\n orderItem.appId === item.appId &&\n orderItem.addonId === item.addonId &&\n orderItem.editionId === item.editionId\n ) {\n orderItemToEmit = orderItem;\n break;\n }\n }\n this.orderConfirmationItemEmitter.emit(orderItemToEmit);\n\n // fire angular change detection\n this.cdr.detectChanges();\n }\n }\n });\n }\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n\n// Returns the total price for all the items\nexport function getOrderTotal(items: OrderConfirmationItem[]): number {\n // note that totalCost can be negative if the item is free.\n // Those should be excluded from the total.\n return !!items && items.length > 0\n ? items.reduce((accumulator, currentValue) => {\n const priceValueExtract = extractGeneralPriceInfoFromOrderConfirmation(currentValue).price || 0;\n const setupFeeValue =\n getSetupFeeForEdition(\n currentValue.effectiveAppPrice,\n currentValue.partnerCurrency,\n currentValue.editionId || '',\n ) * currentValue.quantity;\n const feeValue =\n calculateFeeAmount(\n priceValueExtract,\n getFeesForEdition(\n currentValue.effectiveAppPrice,\n currentValue.partnerCurrency,\n currentValue.editionId || '',\n ) || [],\n ) * currentValue.quantity;\n return priceValueExtract + setupFeeValue + feeValue + accumulator;\n }, 0)\n : 0;\n}\n\n// Returns true if all the items in the order require the user to contact sales.\n// This prevents the total from showing \"Free\" when that's not necessarily the case.\nexport function shouldContactSalesForOrder(items: OrderConfirmationItem[]): boolean {\n if (!items || items.length === 0) {\n return false;\n }\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const appPrice = item.appPrices.pricesForContexts['wholesale'];\n if (appPrice.displayOverride !== PriceDisplayOverride.PRICE_DISPLAY_OVERRIDE_CONTACT_SALES) {\n return false;\n }\n }\n return true;\n}\n\n// Gets the currency for the order. Orders assumes the currency will be the\n// same across all the products, so it will try to determine a currency from\n// the first one.\n//\n// If no currency is found, USD will be used as the default.\nexport function getCurrency(items: OrderConfirmationItem[]): string {\n const currency = !!items && items.length > 0 ? items[0].partnerCurrency : 'USD';\n return currency;\n}\n\n// Returns a mapping of the billing frequency to the total amount which to\n// be charged at the frequency.\nexport function getRecurringChargeTotals(items: OrderConfirmationItem[]): {\n [frequency: string]: RecurringChargeTotal;\n} {\n const totals: { [frequency: string]: RecurringChargeTotal } = {};\n if (!items) {\n return totals;\n }\n\n items.forEach((item) => {\n const frequency = getFrequencyValueForEdition(item.effectiveAppPrice, item.partnerCurrency, item.editionId || '');\n\n if (frequency && frequency !== 'one time') {\n // Infer 0 to avoid summing contact sales value (might be -1)\n const price =\n getPriceValueForEdition(item.effectiveAppPrice, item.partnerCurrency, item.editionId || '', true) || 0;\n\n const feeAmount =\n calculateFeeAmount(\n price,\n getFeesForEdition(item.effectiveAppPrice, item.partnerCurrency, item.editionId || '') || [],\n ) * item.quantity;\n\n if (price <= 0) {\n return;\n }\n // Don't discount the setup fee, because the price component is already doing it\n if (!totals[frequency]) {\n totals[frequency] = {\n total: price + feeAmount,\n isStartingPrice: item.editionId === getLowestEditionId(item.effectiveAppPrice, item.partnerCurrency),\n frequency: galaxyFrequencyLabelToGalaxyFrequency(frequency),\n };\n } else {\n totals[frequency].total += price + feeAmount;\n totals[frequency].frequency = galaxyFrequencyLabelToGalaxyFrequency(frequency);\n }\n }\n });\n return totals;\n}\n","
\n \n
\n \n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE.PRODUCT_SERVICE_NAME' | translate }}\n \n \n {{ 'COMMON.PRICING.WHOLESALE_COST' | translate }}\n \n
\n\n \n \n \n \n
\n
\n
\n
\n
\n \n
\n
\n {{ purchase.name }}\n  | {{ purchase.editionName }}\n 1\"> ({{ purchase.quantity }})\n
\n
\n
\n
0\" class=\"activation-message\">\n info_outline\n
{{ purchase.activationMessage }}
\n
\n
\n\n
\n \n {{ 'COMMON.ACTION_LABELS.EDIT' | translate }}\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n
\n {{ 'COMMON.PRICING.TOTAL' | translate }}\n \n ({{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE.FIRST_CHARGE_AT_MONTHS_END' | translate }})\n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n \n {{ 'COMMON.PRICING.RECURRING_CHARGES' | translate }}\n \n
\n
\n \n {{ 'COMMON.PRICING.STARTING_AT' | translate }}\n \n
\n \n
\n
\n
\n
\n
\n *\n {{ 'ACTIVATION.CONFIRMATION_PAGE.ACTIVATION_PRICE.PRICES_ESTIMATED_BASED_ON_VOLUME' | translate }}\n
\n
\n
\n
\n
\n\n\n
\n
\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { PriceOverride } from './interface';\n\n@Pipe({\n name: 'priceOverride',\n})\nexport class PriceOverridePipe implements PipeTransform {\n transform(value: PriceOverride): string {\n switch (value) {\n case 'CONTACT SALES':\n return 'Contact Sales';\n case 'FREE':\n return 'Free';\n }\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder } from '@angular/forms';\nimport { BillingService } from '@galaxy/billing';\nimport { getPriceValueForEdition } from '@vendasta/billing-ui';\nimport { convertCentsToDollars } from '@vendasta/shared';\nimport { Observable, Subscription } from 'rxjs';\nimport { map, shareReplay, switchMap, take } from 'rxjs/operators';\nimport { OrderConfirmationItem } from '../../../confirmation-page/interface';\nimport { ActivationParamService } from '../../../core/activation-param.service';\nimport { ProductOrderFormStoreService } from '../../../core/product-order-form.store.service';\nimport { getInitInputValue, updateOrderCustomPrice } from '../../custom-price.util';\n\n@Component({\n selector: 'app-order-form-custom-price-form',\n templateUrl: './apps-custom-price-form.component.html',\n styleUrls: ['./apps-custom-price-form.component.scss'],\n})\nexport class AppsCustomPriceFormComponent implements OnInit, OnDestroy {\n @Input()\n item: OrderConfirmationItem;\n minValue = 0;\n private subscriptions: Subscription[] = [];\n partnerCurrency$: Observable;\n partnerId$: Observable;\n\n constructor(\n private billingService: BillingService,\n private paramService: ActivationParamService,\n private productOrderFormService: ProductOrderFormStoreService,\n private formBuilder: UntypedFormBuilder,\n ) {}\n\n ngOnInit(): void {\n this.minValue =\n getPriceValueForEdition(\n this.item.appPrices.pricesForContexts['wholesale'],\n this.item.partnerCurrency,\n this.item.editionId || '',\n false,\n ) || 0;\n\n this.partnerId$ = this.paramService.partnerId$;\n\n this.partnerCurrency$ = this.partnerId$?.pipe(\n switchMap((partnerId) =>\n this.billingService.getMultiContract([partnerId]).pipe(\n map((resp) => {\n return resp[partnerId]?.currency ?? 'USD';\n }),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n this.subscriptions.push(\n this.productOrderFormService.cachedOrder$.subscribe((order) => {\n getInitInputValue(order, this.item);\n }),\n );\n }\n\n updateOrderItem(price): void {\n if (!price || !Number(price > 0)) {\n return;\n }\n price = convertCentsToDollars(price);\n this.subscriptions.push(\n this.productOrderFormService.cachedOrder$\n .pipe(\n take(1),\n map((order) => {\n updateOrderCustomPrice(price, order, this.item);\n return order;\n }),\n )\n .subscribe((order) => {\n this.productOrderFormService.cacheOrder(order);\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","\n \n
\n \n \n Wholesale Cost\n {{ item.name }}\n \n \n

Enter the amount you'll spend each billing period.

\n \n \n \n
\n
\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n ActiveItemsModule,\n ItemPricingTableModule,\n ItemSelectionCartModule,\n ItemSelectorModule,\n ServicesModule,\n} from '@galaxy/inventory-ui';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BillingUiModule } from '@vendasta/billing-ui';\nimport { ProductActivationPrereqFormModule } from '@vendasta/businesses';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { GalaxyButtonLoadingIndicatorModule } from '@vendasta/galaxy/button-loading-indicator';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { GalaxyStickyFooterModule } from '@vendasta/galaxy/sticky-footer';\nimport { OrdersModule } from '@vendasta/orders';\nimport { SalesOrderFormModule } from '@vendasta/sales-ui';\nimport { StencilsModule, VaPricingModule, StoreModule as VendastaStoreModule } from '@vendasta/store';\nimport { IconComponent, VaIconModule } from '@vendasta/uikit';\nimport { WorkOrderFormComponent } from '@vendasta/work-order';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\nimport { PaginatedAppActivationTableComponent } from '../common/app-selection/paginated-app-activation-table/paginated-app-activation-table.component';\nimport { BannerComponent } from '../common/banner/banner.component';\nimport { PageComponent } from '../common/page.component';\nimport { UserDisplayNamePipe } from '../common/pipes/user-display-name.pipe';\nimport { TablePricingComponent } from '../common/table-pricing/table-pricing.component';\nimport { UnifiedTOSDialogComponent } from '../common/tos-unified/unified-tos-dialog.component';\nimport { VDialogComponent } from '../common/v-dialog.component';\nimport { WEBLATE_COMPONENT_NAME } from '../constants';\nimport { PricingDetailsModule } from '../marketplace-app/pricing-details';\nimport { PreviewEmailDialogModule } from '../preview-email-dialog/preview-email-dialog.module';\nimport { ContactInfoComponent } from '../shared-billing/settings/contact-info.component';\nimport { PaymentInfoComponent } from '../shared-billing/settings/payment-info.component';\nimport { VbcHostService } from '../vbc/vbc.host.service';\nimport { ActivationRoutingModule } from './activation-routing.module';\nimport { ActivationSettingsApiService } from './activation-settings-api.service';\nimport { ActivationMessageDialogComponent } from './confirmation-page/activation-message-dialog/activation-message-dialog.component';\nimport { ActivationPriceSummaryComponent } from './confirmation-page/activation-price-summary/activation-price-summary.component';\nimport { ActivationPriceComponent } from './confirmation-page/activation-price/activation-price.component';\nimport { ChangePriceDialogComponent } from './confirmation-page/change-price-dialog/change-price-dialog.component';\nimport { CollectPaymentComponent } from './confirmation-page/collect-payment/collect-payment.component';\nimport { OrderConfirmationPageComponent } from './confirmation-page/order-confirmation-page/order-confirmation-page.component';\nimport { OrderConfirmationService } from './confirmation-page/order-confirmation.service';\nimport { OrderExcessComponent } from './confirmation-page/order-excess/order-excess.component';\nimport { OrderSummaryComponent } from './confirmation-page/order-summary/order-summary.component';\nimport { PriceOverridePipe } from './confirmation-page/price-override.pipe';\nimport { StairstepOrderService } from './confirmation-page/stairstep-order.service';\nimport { ActivationNavigationService } from './core/activation-navigation.service';\nimport { ProductOrderFormStoreService } from './core/product-order-form.store.service';\nimport { DynamicOrderFormPageComponent } from './dynamic-order-form-page/dynamic-order-form-page.component';\nimport { DynamicOrderFormService } from './dynamic-order-form-page/dynamic-order-form.service';\nimport { TermsOfServiceDialogComponent } from './dynamic-order-form-page/terms-of-service-dialog.component';\nimport { OrderFormPageComponent, ProductOrderFormService } from './order-form-page';\nimport { AppsCustomPriceFormComponent } from './order-form-page/order-form-page/apps-custom-price-form/apps-custom-price-form.component';\nimport { AppsCustomPriceComponent } from './order-form-page/order-form-page/apps-custom-price/apps-custom-price.component';\nimport { OrderSubmittedPageComponent } from './order-submitted-page/order-submitted-page.component';\nimport {\n ActivatablePackageItemsRowComponent,\n ActivatablePackageRowComponent,\n ActivationCartComponent,\n ActivationSelectionPageComponent,\n PackageActivationTableComponent,\n PaginatedPackageActivationTableComponent,\n} from './selection-page';\nimport { CustomProductRecommendationsComponent } from './selection-page/custom-product-recommendations/custom-product-recommendations.component';\nimport { SharedModule } from './shared/shared.module';\n\nexport const MODULE_IMPORTS = [\n BannerComponent,\n ActivationRoutingModule,\n SharedModule,\n ContactInfoComponent,\n PaymentInfoComponent,\n MatTooltipModule,\n MatDialogModule,\n MatExpansionModule,\n MatChipsModule,\n GalaxyPageModule,\n StencilsModule,\n PreviewEmailDialogModule,\n PricingDetailsModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n CommonModule,\n InfiniteScrollModule,\n VendastaStoreModule,\n SalesOrderFormModule,\n ProductActivationPrereqFormModule,\n VaIconModule,\n OrdersModule,\n MatTableModule,\n MatFormFieldModule,\n MatInputModule,\n MatCheckboxModule,\n MatSelectModule,\n MatDatepickerModule,\n VaFormsModule,\n VaPricingModule,\n GalaxyButtonLoadingIndicatorModule,\n BillingUiModule,\n GalaxyAlertModule,\n ItemSelectorModule,\n ItemSelectionCartModule,\n ItemPricingTableModule,\n ServicesModule,\n WorkOrderFormComponent,\n UnifiedTOSDialogComponent,\n VDialogComponent,\n GalaxyStickyFooterModule,\n ActiveItemsModule,\n UserDisplayNamePipe,\n];\n\nexport const MODULE_DECLARATIONS = [\n ActivationSelectionPageComponent,\n ActivationCartComponent,\n PackageActivationTableComponent,\n ActivatablePackageRowComponent,\n ActivatablePackageItemsRowComponent,\n PaginatedPackageActivationTableComponent,\n OrderFormPageComponent,\n DynamicOrderFormPageComponent,\n TermsOfServiceDialogComponent,\n ActivationPriceComponent,\n OrderConfirmationPageComponent,\n OrderSubmittedPageComponent,\n PriceOverridePipe,\n OrderSummaryComponent,\n ActivationMessageDialogComponent,\n OrderExcessComponent,\n CustomProductRecommendationsComponent,\n ChangePriceDialogComponent,\n AppsCustomPriceComponent,\n AppsCustomPriceFormComponent,\n CollectPaymentComponent,\n ActivationPriceSummaryComponent,\n];\n@NgModule({\n imports: [MODULE_IMPORTS, PageComponent, TablePricingComponent, IconComponent, PaginatedAppActivationTableComponent],\n declarations: MODULE_DECLARATIONS,\n providers: [\n ActivationNavigationService,\n ProductOrderFormService,\n ProductOrderFormStoreService,\n DynamicOrderFormService,\n OrderConfirmationService,\n StairstepOrderService,\n ActivationSettingsApiService,\n ],\n})\nexport class ActivationModule {}\n\nexport function getHostName(vbcHostService: VbcHostService): string {\n return vbcHostService.hostWithScheme();\n}\n"],"mappings":"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","names":["ActivateAppTableService","showingRestrictedProducts$","showRestricted$$","asObservable","constructor","activationService","activationPricingService","nameSort$$","BehaviorSubject","searchTerm$$","paged$$","undefined","selectedItems$","hidePricing$","pageOptions$","of","unfilteredActivatableItems$","activatableItems$","filteredActivatableItems$","pipe","map","activatableItems","filterRestrictedItems","shareReplay","restrictedActivatableItems$","combineLatest","filtered","unfiltered","showRestricted","unavailableCount$","length","areItemsUnavailable$","doItemsHaveRestrictionReasons","searchTermDelayed$","debounceTime","distinctUntilChanged","searchedActivatableItems$","searchTerm","searchActivatableItems","totalItems$","items","sortedActivatableItems$","sortDirection","sortActivatableItems","sortedItems","pageEvent","pageArray","activations$","sortByName","order","next","setSearchTerm","setPage","page","setShowingRestrictedProducts","selectItem","selectedItem","toggleShowingRestricted","getValue","ɵɵinject","ActivationServiceInterfaceToken","ActivationPricingServiceInterfaceToken","factory","ɵfac","providedIn","_ActivateAppTableService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpureFunction1","_c2","ctx_r1","isPending","isCancelled","item","isTrial","ɵɵtextInterpolate1","name","edition_r4","editionName","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r3","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","currentlySelectedEdition","ɵɵresetView","ɵɵlistener","onEditionSelectionChange","edition","value","appId","currentQuantity","quantity","ɵɵtemplate","ActivatableRowComponent_div_6_mat_option_4_Template","ɵɵtwoWayProperty","appCanBeSelected","filteredEditions","ɵɵtextInterpolate","descriptor","ɵɵpipeBind1","_r5","onItemQuantityChanged","newQuantity","target","allowMultiActivations","allowMultipleActivations","usesCustomPricing","ɵɵelement","dynamicClass","appPrice","editionId","partnerCurrency","ɵɵelementContainerStart","ActivatableRowComponent_ng_container_10_div_2_Template","ActivatableRowComponent_ng_container_10_td_3_Template","parentAppId","hidePricing","_r6","itemDeleteClicked","emit","restrictedReason","ActivatableRowComponent","currentlySelectedEditionId","editionData","editions","selectedEdition","find","activatableItem","disabled","Boolean","pricing","isProratedToParent","GoogleWorkspaceSeatAddonIds","some","addonId","constructor","analyticsService","indented","removableItems","features","itemSelectionChanged","EventEmitter","cancelledStatus","ActivationStatus","CANCELED","listingBuilderProduct","AppIDs","ListingBuilder","ngOnInit","activeStatus","activeState","s","status","AppAndAddonActivationStatus","ACTIVATED","isActive","activeCount","count","usesEditions","length","PENDING","isAppActive","isActiveAccount","Number","isNaN","onCheckboxChanged","event","trackEvent","checked","selectedItem","ɵɵdirectiveInject","ProductAnalyticsService","selectors","inputs","outputs","standalone","ɵɵStandaloneFeature","attrs","_c0","decls","vars","consts","template","rf","ctx","_r1","ActivatableRowComponent_div_5_Template","ActivatableRowComponent_div_6_Template","ActivatableRowComponent_span_7_Template","ActivatableRowComponent_span_8_Template","ActivatableRowComponent_span_9_Template","ActivatableRowComponent_ng_container_10_Template","ActivatableRowComponent_ng_container_11_Template","ActivatableRowComponent_ng_template_12_Template","ɵɵtemplateRefExtractor","_c1","icon","restricted_r7","NgClass","MatCheckboxModule","MatCheckbox","VaIconModule","IconComponent","MatSelectModule","MatSelect","MatOption","TranslateModule","TranslatePipe","FormsModule","NgControlStatus","NgModel","MatInputModule","MatInput","BillingUiModule","PriceDisplayComponent","MatIconModule","MatIcon","NgIf","styles","changeDetection","_ActivatableRowComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","sortIndicator","ɵɵpipeBind1","ɵɵelement","ɵɵlistener","$event","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","onItemSelectionChanged","itemDeleteClicked","emit","ɵɵproperty","ɵɵpureFunction1","_c0","item_r3","parentAppId","tmp_5_0","selectedItems$","get","appId","quantity","tmp_6_0","editionId","features","removableItems","ActivationTableComponent","nameSortOrder","sort","_nameSortOrder","activatableItems","value","flatItems","i","length","push","j","children","scrollToTop","constructor","tableService","sortChanged","EventEmitter","itemCheckboxClicked","ngOnInit","pipe","shareReplay","scrollLocation","document","querySelector","scrollTo","sortItems","uniqueActivatableItem","index","activatableItem","pricing","lenString","prices","name","selectedItem","ɵɵdirectiveInject","ActivateAppTableService","selectors","inputs","hidePricing","outputs","standalone","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ActivationTableComponent_mat_icon_7_Template","ActivationTableComponent_span_19_Template","ActivationTableComponent_th_20_Template","ActivationTableComponent_tr_22_Template","ɵɵtextInterpolate","AsyncPipe","CdkVirtualScrollViewport","MatIconModule","MatIcon","TranslateModule","TranslatePipe","NgClass","ActivatableRowComponent","CdkVirtualForOf","NgIf","CdkFixedSizeVirtualScroll","styles","changeDetection","_ActivationTableComponent","PaginatedAppActivationTableService","expandActiveProducts","activatableItems","activations","expandActiveProductsHelper","items","activatableItem","push","allowMultipleActivations","concat","filter","activation","appId","map","account","__spreadProps","__spreadValues","descriptor","activationDescriptor","isActiveAccount","reduce","factory","ɵfac","_PaginatedAppActivationTableService","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ctx_r1","ɵɵnextContext","ɵɵresetView","toggleRestrictedItems","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","showingRestrictedProducts$","$event","_r4","onProductSortOrderChanged","onItemSelected","ɵɵproperty","activatableItems_r5","hidePricing$","features","ɵɵelementContainerStart","_r1","onProductSearchTermChanged","ɵɵtemplate","PaginatedAppActivationTableComponent_ng_container_0_div_4_Template","PaginatedAppActivationTableComponent_ng_container_0_app_activation_table_7_Template","onProductPage","hasUnavailableItems$","length","noProducts_r6","totalItems$","pageOptions$","ɵɵelement","PaginatedAppActivationTableComponent","constructor","tableService","ngOnInit","activatableItems$","combineLatest","activations$","pipe","startWith","map","PaginatedAppActivationTableService","expandActiveProducts","areItemsUnavailable$","pageEvent","setPage","term","setSearchTerm","paginator","firstPage","order","sortByName","selectedItem","selectItem","toggleShowingRestricted","ɵɵdirectiveInject","ActivateAppTableService","selectors","viewQuery","rf","ctx","MatPaginator","ɵɵStandaloneFeature","decls","vars","consts","template","PaginatedAppActivationTableComponent_ng_container_0_Template","PaginatedAppActivationTableComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","PaginatedAppActivationTableComponent_ng_template_4_Template","loadingItems_r7","AsyncPipe","NgIf","VaSearchBoxModule","SearchBoxComponent","TranslateModule","TranslatePipe","ActivationTableComponent","MatPaginatorModule","UIKitModule","ListStencilComponent","RouterLink","styles","_PaginatedAppActivationTableComponent","FormatDiscountPipe","transform","discount","currency","amount","formatDiscountAmount","discountType","off","DiscountType","FIXED_NUMBER_OF_UNITS","resetEachPeriod","FIXED_AMOUNT_PER_UNIT","start","formatDate","formatting","date","dateRange","end","valueOf","Date","pure","standalone","_FormatDiscountPipe","rule","FIXED_AMOUNT","includes","formatDisplayPrice","PERCENT_AMOUNT","toString","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","itemInfoIconEnter","itemInfoIconLeave","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","pricingPopover_r3","ɵɵtextInterpolate1","msg_r4","ɵɵpipeBind1","ɵɵpipeBind2","disc_r5","_pricing","currency","ɵɵtemplate","TablePricingComponent_ng_container_0_ng_container_1_div_1_div_6_div_6_div_1_Template","TablePricingComponent_ng_container_0_ng_container_1_div_1_div_6_div_6_li_3_Template","discounts_r6","length","TablePricingComponent_ng_container_0_ng_container_1_div_1_div_6_div_5_Template","TablePricingComponent_ng_container_0_ng_container_1_div_1_div_6_div_6_Template","data_r7","pricingMessageContainers","tooltipMessages","discounts$","TablePricingComponent_ng_container_0_ng_container_1_div_1_span_3_Template","TablePricingComponent_ng_container_0_ng_container_1_div_1_div_6_Template","ɵɵpureFunction1","_c1","i_r9","containerLength","_c2","msg_r8","showPricingPopover","ɵɵpureFunction0","_c3","ɵɵelementContainerStart","TablePricingComponent_ng_container_0_ng_container_1_div_1_Template","TablePricingComponent_ng_container_0_ng_container_1_div_2_Template","pricingMessages","isProratedToParent","ɵɵtextInterpolate","commitment_r10","TablePricingComponent_ng_container_0_ng_container_2_div_1_Template","commitmentMessages","TablePricingComponent_ng_container_0_ng_container_1_Template","TablePricingComponent_ng_container_0_ng_container_2_Template","TablePricingComponent","pricing","p","getPricingMessageContainers","constructor","partnerId$","discountService","fetchAllDiscounts","pid","sku","filters","merchantId","expiry","Date","skus","list","pageSize","pipe","expand","resp","results","nextCursor","EMPTY","reduce","prev","curr","discounts","concat","getDiscounts","switchMap","billingId","catchError","of","publishReplay","refCount","undefined","ɵɵdirectiveInject","DiscountService","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","TablePricingComponent_ng_container_0_Template","_c0","NgIf","NgClass","NgForOf","MatIconModule","MatIcon","GalaxyPopoverModule","PopoverComponent","GalaxyPopoverDirective","TranslateModule","TranslatePipe","AsyncPipe","FormatDiscountPipe","styles","_TablePricingComponent","VBC_HOST","InjectionToken","OrderType","convertOrderFormFields","orderFormFields","map","orderFormField","field_id","id","field_type","controlType","answer","value","description","label","ActivateAppApiService","constructor","vbcHost","partnerId$","httpClient","submitOrderFormUrl","createOrderForm","order","pipe","first","switchMap","partnerId","commonFields","convertOrderFormFields","customFields","data","accountGroupId","businessId","productId","appId","post","withCredentials","map","resp","orderFormSubmissionId","shareReplay","ɵɵinject","VBC_HOST","HttpClient","factory","ɵfac","_ActivateAppApiService","ActivateAppService","constructor","activateAppApiService","orderFulfillmentService","authService","partnerId$","errors$$","Subject","successes$$","errors$","asObservable","successes$","blameSource$","decodedAuthToken$","pipe","take","map","token","Blame","source","BlameSource","BLAME_SOURCE_USER","sourceIdentifier","sub","createArrayOfOrdersWithSubmissionId$","orders","length","Error","from","mergeMap","order","submitOrderForm$","catchError","err","of","convertErrorIntoActivationError","appId","businessId","name","message","scan","acc","curr","push","last","activateOrderWithOrderFulfillment","orderItemParams$","orderItems","o","editionId","itemId","orderFormSubmissionId","submissionId","filter","Boolean","combineLatest","switchMap","pid","oip","createOrder","partnerId","orderItemParams","blameSource","usesOrderForm","createOrderForm","isActivationResult","result","isSuccess","error","errorMessage","convertOrderIntoActivationResult","parentAppId","ɵɵinject","ActivateAppApiService","OrderFulfillmentService","AuthService","factory","ɵfac","_ActivateAppService","PendingActivationStep","PendingActivationStepMessages","WAITING_ON_VENDOR","OrderItemPendingStatuses","OrderItemStatus","ORDER_ITEM_STATUS_CREATED","ORDER_ITEM_STATUS_CHARGED","ORDER_ITEM_STATUS_CHARGE_SUCCESSFUL","ORDER_ITEM_STATUS_PENDING_ACTIVATION","OrderItemRejectedStatuses","ORDER_ITEM_STATUS_VALIDATION_FAILED","ORDER_ITEM_STATUS_CHARGE_FAILED","RejectedOrderItemText","Map","ValidationErrorOrderItemText","ValidationErrorCodes","VALIDATION_ERROR_CODES_INVALID_ENTRY_URL","VALIDATION_ERROR_CODES_ENTRY_URL_NOT_PROVIDED","VALIDATION_ERROR_CODES_INVALID_DEPENDENCY","VALIDATION_ERROR_CODES_ALREADY_ACTIVE","VALIDATION_ERROR_CODES_NO_COUNTRY_INFORMATION","VALIDATION_ERROR_CODES_UNSUPPORTED_COUNTRY","VALIDATION_ERROR_CODES_APP_IS_SUSPENDED","VALIDATION_ERROR_CODES_INVALID_EDITION","PendingActivationStatuses","PendingActivationStatus","PENDING","REJECTED","DEFAULT_PAGE_SIZE","PendingActivationsService","constructor","accountService","orderFulfillmentService","translate","marketplaceAppService","convertPendingActivationToDisplay","item","activationId","appId","addonId","appActivation","addonActivation","businessId","createdDate","updatedDate","status","rejectedReason","isAddon","activation","editionId","itemId","orderFormSubmissionId","pendingActivationStep","getPendingActivationPendingStep","convertOrderItemToDisplay","__async","created","updated","orderId","orderItemId","validationErrorCodes","isRejected","indexOf","convertedStatus","chargeFailureCode","getChargeFailedReason","getRejectionReasonFromValidationErrorCodes","get","app","firstValueFrom","getApp","type","AppType","APP_TYPE_APP","restrictions","appRequirement","rules","appIds","APP_TYPE_ADDON","getOrderItemPendingStep","validationErrorText","map","code","untranslatedErrorText","instant","filter","errorText","length","join","getPendingActivationsForBusiness","pendingActivations$","listPendingActivationsForBusiness","pipe","acts","pendingActivationIsValid","pendingOrderItems$","getOrderItemsForBusiness","orderItems","orderItemIsValid","filteredOrderItems$","combineLatest","activations","oi","some","act","billingOrderId","switchMap","_0","activationsDisplay","orderItemsDisplay","Promise","all","orderItem","displayActivations","sort","a","b","getTime","shareReplay","refCount","bufferSize","cursor","prevOrderItems","listOrderItemsForBusiness","response","allOrderItems","hasMore","nextCursor","concat","of","getPendingActivations$","accountID$","failureCode","DeclineReasons","description","VALIDATION_FAILED","CHARGE_FAILED","ORDER_ITEM_STATUS_ACTIVATION_FAILED","ACTIVATION_FAILED","pa","ɵɵinject","AccountService","OrderFulfillmentService","TranslateService","MarketplaceAppService","factory","ɵfac","providedIn","_PendingActivationsService","ActivationService","constructor","resellerItemService","activationPricingService","paramService","whitelabelService","accountService","packageService","accountGroupService","editionService","pendingActivationsService","dialog","billingService","marketplaceAppsService","editionsService","appPricingService","enablementService","router","snackbarService","translateService","itemWhitelabelService","analyticsService","selectedItems$$","BehaviorSubject","Map","itemSelectedEvents$$","Subject","clearSelectionEvent$$","loadAppStatuses$$","navigationSource$","activations$","itemsAndQuantity$","resellerItemQuantityMapFromUrl$","activatableResellerItems$","getActivatablePartnerDataWithoutSuspended","pipe","distinctUntilChanged","shareReplay","accountGroupId$","partnerId$","editionsMap$","switchMap","ris","ids","extractIdsOfItemsUsingEditions","getEditionsForApps","partnerConfiguration$","partnerId","getConfiguration","enabledPartnerFeatures$","pluck","pricingMap$","productPricingMap$","appPriceMap$","appStatuses$","combineLatest","startWith","undefined","_","accountId","getAppStatusesForBusiness","pendingActivations$","getPendingActivations$","accountGroup$","filter","a","agid","get","ProjectionFilter","napData","accountGroupExternalIdentifiers","accountGroupNapData$","map","acc","accountGroupExternalIds$","externalIdentifiers","accountGroupCountry$","nap","country","accountGroupName$","companyName","accountGroupMarketId$","marketId","unfilteredFlattenedActivatableItems$","partnerCurrency$","activatableResellerItems","pricingMap","enabledPartnerFeatures","appStatuses","activations","editionsMap","pendingActivations","appPriceMap","partnerCurrency","items","convertResellerItemsToFlatActivatableItems","addActivationToItems","activatableItems$","nestActivatableItems","refCount","bufferSize","startSelectedItems$","itemQuantityMap","convertExtractedQueryParamsToSelectedItems","clearEvents$","clear","selectionEvents$","merge","selectedItems$","asObservable","allSelections$","events","status","event","appStatus","scan","selectedItems","selectionEvents","reduce","sis","se","updateSelectedItems","subscribe","next","selectedItemsRequireOrderForm$","skipWhile","size","flatActivatableItems","selectedItemIds","Array","from","keys","doItemsRequireOrderForm","catchError","err","errorSnack","message","EMPTY","activeProducts$","editionMap","products","assembleActiveProducts","mergeActivationsIntoProducts","appCartItems$","activatableItems","assembleAppCartItems","Date","packages$","marketId$","id","getPackagesForMarket$","activatablePackages$","argumentsForAssemblePackages","assembleActivatablePackages","selectedQueryParams$","argumentsForQueryParams","generateSelectedItemQueryParameters","selectItem","selectedItem","selectItems","clearSelections","ɵɵinject","ResellerItemService","ActivationPricingService","ActivationParamService","WhitelabelService","AccountService","PackageService","AccountGroupService","AppEditionService","PendingActivationsService","MatDialog","BillingService","MarketplaceAppService","EditionsService","AppPricingService","PartnerAppEnablementStatusService","Router","SnackbarService","TranslateService","ItemWhitelabelService","ProductAnalyticsService","factory","ɵfac","_ActivationService","ActivationNavigationService","constructor","activationService","router","paramService","navigationMap$","selectedQueryParams$","pipe","map","queryParams","agid","accountGroupId","selection","url","navOptions","orderForm","dynamicOrderForm","confirmation","manageAccounts","accountDetails","orderSubmitted","shareReplay","navigateToNextStep","fromStep","order","combineLatest","selectedItemsRequireOrderForm$","navigationSource$","take","subscribe","navigationMap","itemsRequireOrderForm","navigationSource","navigationSelection","getNextNavigationStep","clearSelectionsIfFromStepIsConfirm","navigateToSelection","navigateToPreviousStep","getPreviousNavigationStep","clearSelections","windowNavigation","window","location","href","navigate","ɵɵinject","ActivationService","Router","ActivationParamService","factory","ɵfac","providedIn","_ActivationNavigationService","OrderFormType","DYNAMIC","COMMON","CUSTOM","orderId","businessId","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","ɵɵsanitizeHtml","ɵɵtextInterpolate","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction1","_c0","ɵɵtemplate","ActivationMessageDialogComponent_ng_container_14_div_5_div_2_Template","ActivationMessageDialogComponent_ng_container_14_div_5_div_3_Template","ctx_r0","hasGoogleTransferApp","ɵɵelementContainerStart","ActivationMessageDialogComponent_ng_container_14_div_5_Template","ActivationMessageDialogComponent_ng_container_14_div_6_Template","app_r2","type","icon","name","activationMessageSupportedApps","WORKSPACE","OFFICE","ActivationMessageSupportedApps","ActivationMessageDialogComponent","constructor","data","dialogRef","environmentService","ngOnInit","env","getEnvironment","apps","map","app","appId","googleTransferAppId","ɵɵdirectiveInject","MAT_DIALOG_DATA","MatDialogRef","EnvironmentService","selectors","decls","vars","consts","template","rf","ctx","ActivationMessageDialogComponent_ng_container_14_Template","_ActivationMessageDialogComponent","ProductOrderFormStoreService","constructor","activationParamService","accountService","orderFormSaved$$","Subject","dynamicOrderFormSaved$$","accountGroupId$","cachedAppOrderForms$","savedOrderFormStream$","cachedAddonOrderForms$","cachedOrder$","savedOrderStream$","buildKeyForDynamicOrderForm","accountGroupId","appId","cacheOrder","order","saveOrder","clearOrderCache","pipe","first","subscribe","key","buildKey","window","sessionStorage","removeItem","next","type","startWith","undefined","switchMap","map","orderFormJson","getItem","JSON","parse","accountID$","orderJson","stringify","setItem","cacheDynamicOrderForm","customFieldsAnswers","getDynamicOrderForm$","fieldAnswer","productID","ɵɵinject","ActivationParamService","AccountService","factory","ɵfac","providedIn","_ProductOrderFormStoreService","convertResellerItemsToSummaries","selectedItems","resellerItemMap","appPriceMap","partnerCurrency","env","retailProductPricingMap","marketCurrency","Array","from","keys","reduce","acc","key","quantityEditionPair","get","quantity","editionId","isValidEditionId","ri","sku","billingId","productPricing","undefined","activationMessage","orderForm","orderConfirmationItem","name","appId","addonId","icon","requiresApproval","activationRequiresApproval","tagline","appPrices","retailTotal","pricingRules","price","push","filterOutActiveSelectedItems","appStatuses","activations","m","isTrial","activation","find","act","trial","isActive","isAppActive","allowMultiActivate","allowMultipleActivations","set","Map","convertAppIdEditionsMapToEditionIdEditionMap","appIdEditionsMap","appIdToEditionIdToEditionMap","Map","forEach","editions","appId","editionIdToEditionMap","edition","set","editionId","OrderConfirmationService","constructor","activationService","activationPricingService","activationParamsService","productOrderFormService","environmentService","itemWhitelabelService","hidePricing$","userCanEditBillingInfo$","billingInfoConfigured$","salesOrder$","cachedOrder$","appStatus$","appStatuses$","retailProductPricingMap$","appPriceMap$","partnerCurrency$","marketCurrency$","resellerItemMap$","activatableResellerItems$","pipe","map","resellerItems","resellerArrayToMap","selectedItems$","combineLatest","activations$","selectedItems","resellerItemMap","appStatus","activations","filterOutActiveSelectedItems","distinctUntilChanged","shareReplay","productIsInstantBilledMap$","pricingMap$","pricingMap","items","createProductBillingStrategyMap","orderConfirmationItems$","appPriceMap","partnerCurrency","productPricingMap","marketCurrency","convertResellerItemsToSummaries","getEnvironment","marketId$","take","switchMap","orderItems","marketId","whitelabelItems$","editionIdToEditionMap$","editionsMap$","edMap","convertAppIdEditionsMapToEditionIdEditionMap","setContractStartDate","startDate","subscribe","order","cacheOrder","__spreadProps","__spreadValues","requestedActivation","clearSalesOrderCache","clearOrderCache","ɵɵinject","ActivationService","ActivationPricingService","ActivationParamService","ProductOrderFormStoreService","EnvironmentService","ItemWhitelabelService","factory","ɵfac","_OrderConfirmationService","size","keys","Array","from","productIsInstantBilledMap","Map","forEach","key","resellerItem","get","productPricing","billingId","set","strategy","StairstepOrderService","constructor","activationService","billingService","partnerService","activatableItems$","today","Date","startDate","getFullYear","getMonth","endDate","productSummariesRequest","merchantId","partnerId","pageSize","productSummaries$","listProductSummaries","pipe","map","response","results","buildSubscriptionRequest","orderItems","skuInput","filter","orderItem","addonId","undefined","forEach","appItem","buildProductSKU","quantity","skus","orderRequiresBillingInfo","orderItems$","switchMap","items","canCreateSubscriptions","stairStepStatus","SubscribeValidationStatus","SUBSCRIBE_VALIDATION_STATUS_WILL_CAUSE_FUTURE_CHARGES","validationResponse","code","status","length","getOrderBreakDown","subscriptionCheckRequest","orderValidationResponse$","combineLatest","productSummaries","activatableItems","validationResponses","buildOrderBreakDownFromValidationResponse","orderBreakDown","orderFreqTotals","Map","find","i","sku","activatableItem","appId","buildAppIdFromSku","productSku","productSummary","tierPricing","getPricingForOrderItem","item","itemPricing","pricing","itemTierPricing","buildTierPricing","itemActivations","totalQuantity","itemTotalCost","getStepTierPriceForOrderItem","frequency","prices","set","toLowerCase","get","currentItem","productName","name","activations","totalCost","getFrequencyValueForEdition","appPrices","pricesForContexts","partnerCurrency","editionId","push","orderCostFrequency","editionData","usesEditions","orderEdition","editions","edition","orderEditionId","buildRangeString","min","max","quantityMax","String","quantityMin","tierPrices","tier","range","price","buildPricingString","currency","tierRange","tierPrice","itemTierFrequency","totalAmount","itemStepTierPrice","estimatedQuantity","computedMaxQuantity","Number","MAX_SAFE_INTEGER","getOrderItemsCurrency","result","split","ɵɵinject","ActivationService","BillingApiService","PartnerService","factory","ɵfac","_StairstepOrderService","CENTS_DOLLAR","getInitInputValue","order","orderItem","appId","addonId","formFieldValue","convertCentsToDollars","getPriceValueForEdition","appPrices","pricesForContexts","partnerCurrency","editionId","lineItems","forEach","lineItem","appKey","cost","customPrice","updateOrderCustomPrice","newValue","i","matchLineItemWithOrderItem","Cost","Math","round","Number","appPrice","setInstanceAppPrice","effectiveAppPrice","updateOrderCustomPriceFromItem","updateOrderCustomPricingFromItemRow","event","action","item","index","UpdateLineItemFromItemRow","updateOrderItemsWithCustomPrice","orderItems","length","updatePricingTableItemsWithCustomPrice","items","matchLineItemWithBaseItem","pricing","itemId","type","edition","lineItemAppId","lineItemEditionId","VENDOR_TEMPLATE_TYPE","PRODUCT_ID_METADATA_KEY","FULFILLING_PARTNER_ID_METADATA_KEY","FulfillmentOrderConfirmationService","constructor","taskSdkService","partnerId$","brandingService","orderItems$$","BehaviorSubject","tableRows$","pipe","startWith","switchMap","orderItems","buildTableRows","shouldShowOrderFulfillmentSection$","map","tableRows","length","getFulfillingPartnerIdForTemplate","template","fulfillingPartnerId","DomainKeyValue","fromKeyValue","metadata","get","KeyValueTypes","STRING","toString","identity","namespace","split","setOrderItems","items","next","fetchVendorTemplates","vendorTemplates","fetchNamesForFulfillingPartners","brandingMap","appIdToNameMap","Map","item","appId","name","convertVendorTemplateToOrderFulfillmentTableRow","of","productIds","set","request","types","cursor","pageSize","toKeyValue","search","resp","tasks","templates","fulfillingPartnerIds","uniqueFulfillingPartnerIds","Array","from","Set","filter","Boolean","forkJoin","fulfillPartnerId","getBranding","branding","fulfillPartnerIdToPartnerNameMap","i","currentPartnerId","productId","serviceProviderName","productName","isCurrentPartner","ɵɵinject","TaskSdkService","PARTNER_ID_INJECTION_TOKEN","BrandingV2Service","factory","ɵfac","_FulfillmentOrderConfirmationService","getBilledOrderItemsForStrategy","items","isInstantBilledMap","billingStrategy","instantBilledItems","length","forEach","item","get","addonId","appId","push","formatApprovalMessage","appAndEditionNames","s","appAndEditionName","names","appName","editionName","trim","substring","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtextInterpolate","tier_r1","tierRange","tierPrice","ɵɵtemplate","OrderExcessComponent_div_0_div_1_div_22_div_4_Template","OrderExcessComponent_div_0_div_1_div_22_span_9_Template","ɵɵelementContainerStart","purchase_r2","productName","ɵɵproperty","tierPricing","activations","orderItem","purchaseCost","isStartingPrice","ɵɵpipeBind2","totalCost","currency","frequency","freqPrice_r3","key","OrderExcessComponent_div_0_div_1_div_28_div_1_span_5_Template","value","ctx_r3","orderCurrency","OrderExcessComponent_div_0_div_1_div_28_div_1_Template","OrderExcessComponent_div_0_div_1_span_4_Template","OrderExcessComponent_div_0_div_1_ng_template_5_Template","ɵɵtemplateRefExtractor","OrderExcessComponent_div_0_div_1_div_22_Template","ɵɵelement","OrderExcessComponent_div_0_div_1_div_28_Template","summary_r6","orderItems","length","oneProduct_r5","orderCostFrequency","OrderExcessComponent_div_0_div_1_Template","OrderExcessComponent","constructor","stairstepService","ngOnInit","nonFreeOrderConfirmationItems","orderConfirmationItems","filter","item","getPriceValueForEdition","appPrices","pricesForContexts","partnerCurrency","editionId","orderSummary$","getOrderBreakDown","getOrderItemsCurrency","ɵɵdirectiveInject","StairstepOrderService","selectors","inputs","decls","vars","consts","template","rf","ctx","OrderExcessComponent_div_0_Template","_OrderExcessComponent","import_moment","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r4","ctx_r1","ɵɵnextContext","ɵɵresetView","presentAddUsersDialog","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","$event","_r5","preventBlur","ɵɵproperty","user_r6","userId","ɵɵpipeBind2","ɵɵpureFunction3","_c0","user_r9","name","email","expiryDate","ɵɵelementContainerStart","ɵɵtemplate","CollectPaymentComponent_mat_radio_group_0_div_8_ng_container_14_ng_container_14_div_1_Template","subjectId","_r7","handleExpiryDateChange","picker_r8","ɵɵreference","open","ɵɵelement","CollectPaymentComponent_mat_radio_group_0_div_8_ng_container_14_ng_container_14_Template","minDate","ɵɵpropertyInterpolate","expiryTimeControl","users","_r3","subjectIdChange","emit","CollectPaymentComponent_mat_radio_group_0_div_8_mat_option_8_Template","CollectPaymentComponent_mat_radio_group_0_div_8_mat_option_9_Template","hasExpiryDateChange","CollectPaymentComponent_mat_radio_group_0_div_8_ng_container_14_Template","selectedUserId$","hasExpiryDate","_r1","requireApprovalChange","trackToggle","CollectPaymentComponent_mat_radio_group_0_div_8_Template","CollectPaymentComponent_mat_radio_group_0_ng_template_9_Template","ɵɵtemplateRefExtractor","requireApproval","noApprovalNotice_r10","setDateOnDateTime","current","newDate","setHours","getHours","getMinutes","getSeconds","getMilliseconds","setTimeOnDateTime","newTime","moment","getFullYear","getMonth","getDate","toDate","isNaN","getTime","CollectPaymentComponent","constructor","analyticsService","dialog","EventEmitter","expiryDateChange","selectedUserId$$","BehaviorSubject","asObservable","destroyed$","ReplaySubject","Date","UntypedFormControl","Validators","required","ngOnInit","setValue","format","valueChanges","pipe","takeUntil","subscribe","value","handleExpiryTimeChange","next","ngOnDestroy","complete","date","time","e","stopPropagation","preventDefault","dialogRef","AddUserDialogComponent","width","componentInstance","accountGroupId","partnerId","existingUsers","showCreateTab","afterClosed","result","action","UserAction","CREATE","ADD","length","ɵɵdirectiveInject","ProductAnalyticsService","MatDialog","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","CollectPaymentComponent_mat_radio_group_0_Template","CollectPaymentComponent_ng_template_1_Template","loading_r11","_CollectPaymentComponent","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","updateOrderItemUsingItemRow","setValidity","setWholesaleTotal","ɵɵelementEnd","ɵɵproperty","pricingTableItems","ɵɵpureFunction4","_c1","partnerId","marketId_r3","accountGroupId","ɵɵpureFunction0","_c0","ɵɵtext","_r4","requireApprovalChange","emit","hasExpiryDateChange","approvalFromSubjectIdChange","expiryDateChange","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","users$","requireApproval","hasExpiryDate","approvalFromSubjectId","expiryDate","ɵɵelementContainer","ɵɵpipeBind2","ɵɵpureFunction1","_c2","contractStartDate","ɵɵtwoWayListener","_r7","i0","ɵɵtwoWayBindingSet","emailUsersChecked","presentPreviewEmailDialog","ɵɵtwoWayProperty","emailDisabled","activationItemSummaries","length","ɵɵelementContainerStart","_r5","picker_r6","ɵɵreference","open","handleContractStartDateChange","ɵɵelement","ɵɵtemplate","OrderSummaryComponent_ng_container_3_ng_container_21_Template","OrderSummaryComponent_ng_container_3_ng_template_22_Template","ɵɵtemplateRefExtractor","OrderSummaryComponent_ng_container_3_ng_template_24_Template","OrderSummaryComponent_ng_container_3_div_26_Template","minStartDate","requiresApproval_r8","activateOnDate_r9","tmp_15_0","_r10","ɵɵtextInterpolate3","approvalMessage","approvalMessageCount","_c3","ɵɵpipeBind3","creditBalance_r11","amount","currency","ɵɵsanitizeHtml","OrderSummaryComponent_mat_expansion_panel_6_div_9_ng_container_15_div_1_Template","OrderSummaryComponent_mat_expansion_panel_6_div_9_ng_container_15_Template","userCanEditBillingInfo","creditBalance$","OrderSummaryComponent_mat_expansion_panel_6_span_8_Template","OrderSummaryComponent_mat_expansion_panel_6_div_9_Template","OrderSummaryComponent_mat_expansion_panel_6_div_10_Template","orderItems","orderContainsItemsThatAreNotFree","stairStepOrderRequiresBilling","activatingProductDisabled","hasSufficientVCash$","emailSmbsProductActivatedKey","OrderSummaryComponent","orderConfirmationItems","appNamesThatRequireApproval","assembleAppNamesForAppsThatRequireApproval","some","item","appPrices","getPriceValueForEdition","pricesForContexts","partnerCurrency","editionId","formatApprovalMessage","instantBilledOrderItems","getBilledOrderItemsForStrategy","productIsInstantBilledMap","BillingStrategy","Instantly","instantActivationItemSummaries","buildActivationItemSummaries","editionsMap","nonInstantBilledOrderItems","filter","find","i","appId","addonId","fulfillmentOrderConfirmationService","setOrderItems","Array","from","Set","allActivationSummaries","billingInfoConfigured","constructor","accountService","vconfigService","creditService","productOrderFormService","lineItemCacheService","dialog","submitClicked","EventEmitter","goBackClicked","contractStartDateChange","productIds","Date","valid","wholesaleTotal$$","BehaviorSubject","cachedSalesOrder","toSignal","cachedOrder$","cachedInventoryLineItems","signal","readLineItems","editableOrder","buildEditableOrder","marketCurrency","computed","cachedLineItems","buildPricingTableItemsFromLineItems","updatePricingTableItemsWithCustomPrice","ngOnInit","set","configKeys","account$","pipe","skipWhile","account","market_id","switchMap","getConfigurations","take","subscribe","config","marketId$","map","getBalance","shareReplay","combineLatest","balance","total","ngOnChanges","changes","oi","orderConfirmationItemHasValidEditionId","editionName","get","lineItems","li","itemId","edition","type","itemType","quantity","onSubmit","__async","order","sendEmail","goBack","dialogRef","PreviewEmailDialogComponent","forEach","requiresApproval","namesPair","appName","name","push","itemHasValidEditionId","isValidEditionId","editionsEntry","editionDataIsInEditionsMap","updateOrderItem","update","updateOrderCustomPriceFromItem","event","updateOrderCustomPricingFromItemRow","date","__spreadProps","__spreadValues","requestedActivation","next","ɵɵdirectiveInject","AccountService","VConfigService","CreditService","ProductOrderFormStoreService","FulfillmentOrderConfirmationService","LineItemCacheService","MatDialog","selectors","inputs","retailCustomerConfiguration","submitDisabled","hidePricing","billingAutomationEnabled","outputs","features","ɵɵProvidersFeature","provide","OrderFulfillmentServiceInterfaceToken","useExisting","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","OrderSummaryComponent_inventory_ui_item_pricing_table_0_Template","OrderSummaryComponent_mat_card_2_Template","OrderSummaryComponent_ng_container_3_Template","OrderSummaryComponent_ng_container_4_Template","OrderSummaryComponent_mat_expansion_panel_6_Template","tmp_3_0","_OrderSummaryComponent","cachedOrder","JSON","parse","stringify","cachedOrderLineItemsMap","reduce","lineItem","appKey","packageId","Map","cachedLineItem","orderLineItem","OrderLineItem","currencyCode","Boolean","ɵɵelementStart","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","requireApproval","ɵɵresetView","approvalFromSubjectId","hasExpiryDate","expiryDate","ɵɵlistener","onSubmitClicked","goBack","setContractStartDate","ɵɵelementEnd","ɵɵproperty","orderConfirmationData_r3","productIsInstantBilledMap","userCanEditBillingInfo","partnerId","billingInfoConfigured","stairstepOrderRequiresBilling","billingAutomationEnabled","disableSubmitButton","accountGroup","hidePricing","editionsMap","orderConfirmationItems","ɵɵtwoWayProperty","salesOrder","requestedActivation","marketCurrency","ɵɵelementContainerStart","ɵɵtemplate","OrderConfirmationPageComponent_ng_container_6_app_order_summary_1_Template","ɵɵadvance","loading_r4","ɵɵelement","OrderConfirmationPageComponent","constructor","productConfirmationService","paramService","snackbarService","activateAppService","dialog","activationService","activationSettingsApiService","activationNavigationService","salesOrdersService","stairstepOrderService","accountService","analytics","customerConfigService","lineItemCacheService","disableSubmitButton$$","BehaviorSubject","subscriptions","Date","buildProductIdListFromSalesOrder","order","lineItems","map","li","appKey","appId","filter","Boolean","ngOnInit","accountGroupId$","pipe","take","subscribe","agid","setCurrentAccountID","orderConfirmationItems$","hidePricing$","productIsInstantBilledMap$","userCanEditBillingInfo$","billingInfoConfigured$","stairstepOrderRequiresBilling$","orderRequiresBillingInfo","partnerId$","push","pid","marketCurrency$","accountGroupId","ocis","numOrderItems","length","activatableItems$","unfilteredFlattenedActivatableItems$","editionsMap$","editionIdToEditionMap$","salesOrder$","successes$","bufferTime","successResults","message","reduce","msg","curr","name","openSuccessSnack","errors$","errorResults","openErrorSnack","retailConfig$","get","catchError","err","status","retailConfig","merchantId","customerId","contactId","of","shareReplay","billingAutomationEnabled$","autoGenerate","useTemplateInvoice","billingUserId$","config","combineLatest","users$","_","users","userId","find","user","unifiedUserId","subjectId","trackOrderFormStatus","event","next","processOrder$","switchMap","createAndActivateOrSendToCustomer","EMPTY","tap","purchased","trackEvent","orderId","businessId","activatableItems","clearSalesOrderCache","clearLineItemCache","activationSuccessfulAction","sendEmail","finalize","label","appCartItems$","appCartItems","CommonProperties","ECOMMERCE","hasAppWithOrderForm","item","activatableItem","usesOrderForm","createAndSendToCustomer","expiry","origin","Origin","PC","createAndActivateOrder","sendEmailNotification","activationMessageDialogData","apps","productIds","setNotificationSettings","first","hasGoogleWorkspaceItem","appID","GoogleWorkspaceAppIds","some","id","googleWorkspaceItem","a","googleWorkspaceActivatableItem","icon","type","ActivationMessageSupportedApps","WORKSPACE","hasOffice365Item","Office365AppIds","office365Item","office365ItemActivatableItem","OFFICE","activationMessageDialog","navigateToNextStep","activationMessageDialogRef","open","ActivationMessageDialogComponent","width","data","afterClosed","navigateToPreviousStep","startDate","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","OrderConfirmationService","ActivationParamService","SnackbarService","ActivateAppService","MatDialog","ActivationService","ActivationSettingsApiService","ActivationNavigationService","SalesOrdersService","StairstepOrderService","AccountService","ProductAnalyticsService","RetailCustomerConfigurationService","LineItemCacheService","selectors","decls","vars","consts","template","rf","ctx","ɵɵtext","OrderConfirmationPageComponent_ng_container_6_Template","OrderConfirmationPageComponent_ng_template_20_Template","ɵɵtemplateRefExtractor","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵpureFunctionV","_c0","_OrderConfirmationPageComponent","DomainAddressMailing","_DomainAddressMailing","proto","m","kwargs","toReturn","DomainContactAdmin","_DomainContactAdmin","DomainContactBilling","_DomainContactBilling","DomainContactRegistrant","_DomainContactRegistrant","DomainContactTech","_DomainContactTech","Domain","_Domain","DomainVerifications","DomainDomainName","_DomainDomainName","DomainRealName","_DomainRealName","_DomainVerifications","FieldMask","_FieldMask","proto","m","kwargs","toReturn","DNSRecordType","enumStringToValue","enumRef","value","ContactAddressMailing","_ContactAddressMailing","GetDomainAgreementsResponseAgreement","_GetDomainAgreementsResponseAgreement","Contact","_Contact","DNSRecord","_DNSRecord","DeleteDNSRecordRequest","_DeleteDNSRecordRequest","ValidateDomainContactResponseField","_ValidateDomainContactResponseField","GetDomainAgreementsRequest","_GetDomainAgreementsRequest","GetDomainAgreementsResponse","_GetDomainAgreementsResponse","GetDomainAvailableRequest","_GetDomainAvailableRequest","GetDomainAvailableResponse","_GetDomainAvailableResponse","GetDomainRequest","_GetDomainRequest","GetDomainResponse","_GetDomainResponse","Domain","GetDomainSuggestionAndPriceRequest","_GetDomainSuggestionAndPriceRequest","GetDomainSuggestionAndPriceResponse","_GetDomainSuggestionAndPriceResponse","GetDomainSuggestionAndPriceResponseSuggestion","ListDNSRecordsRequest","_ListDNSRecordsRequest","ListDNSRecordsResponse","_ListDNSRecordsResponse","ListDomainsByBusinessIDRequest","_ListDomainsByBusinessIDRequest","ListDomainsByBusinessIDResponse","_ListDomainsByBusinessIDResponse","PatchDomainRequest","_PatchDomainRequest","PutDNSRecordRequest","_PutDNSRecordRequest","RenewDomainRequest","_RenewDomainRequest","RenewDomainResponse","_RenewDomainResponse","ReplaceAllDNSRecordsRequest","_ReplaceAllDNSRecordsRequest","ReplaceDNSRecordsForTypeRequest","_ReplaceDNSRecordsForTypeRequest","_GetDomainSuggestionAndPriceResponseSuggestion","ValidateDomainContactRequest","_ValidateDomainContactRequest","ValidateDomainContactResponse","_ValidateDomainContactResponse","environment","hostMap","HostService","t","ɵɵdefineInjectable","GoDaddyApiService","http","hostService","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","ɵɵinject","HttpClient","GoDaddyService","goDaddyApiService","domain","tlds","limit","partnerId","type","dnsRecord","dnsRecords","name","privacy","contactAdmin","contactRegistrant","domains","businessId","secondLevelDomainOnlyRegex","acceptedTLDsRegex","acceptedTLDs","DynamicOrderFormService","constructor","goDaddyService","getDomainSuggestions","domain","limit","tlds","getDomainSuggestionAndPrice","pipe","map","suggestions","suggestion","available","parseError","checkDomainAvailability","getDomainAvailable","getGoDaddyTermsOfService","tld","split","getDomainAgreements","agreements","content","ɵɵinject","GoDaddyService","factory","ɵfac","_DynamicOrderFormService","parseDomain","inputUrl","validatedInput","startsWith","endsWith","match","inputTLD","find","domainOnly","length","ɵɵelement","ɵɵproperty","terms_r1","ɵɵsanitizeHtml","ɵɵelementStart","ɵɵelementEnd","ɵɵadvance","TermsOfServiceDialogComponent","constructor","dynamicOrderFormService","dialogRef","termsOfService$","getGoDaddyTermsOfService","ɵɵdirectiveInject","DynamicOrderFormService","MatDialogRef","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","TermsOfServiceDialogComponent_div_0_Template","TermsOfServiceDialogComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","ɵɵpipeBind1","loadingTOS_r2","_TermsOfServiceDialogComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","product_r2","tagline","ɵɵpipeBind2","ɵɵpureFunction1","_c1","searchResult_r5","domain","ɵɵlistener","ɵɵrestoreView","_r6","ctx_r3","ɵɵnextContext","ɵɵresetView","suggestionClicked","ɵɵproperty","suggestion_r7","ɵɵtemplate","DynamicOrderFormPageComponent_ng_container_2_div_27_div_3_div_11_div_1_mat_radio_group_1_div_2_Template","suggestions_r8","ɵɵpipeBind1","DynamicOrderFormPageComponent_ng_container_2_div_27_div_3_div_11_div_1_mat_radio_group_1_Template","DynamicOrderFormPageComponent_ng_container_2_div_27_div_3_div_11_div_1_ng_template_2_Template","ɵɵtemplateRefExtractor","length","noSuggestions_r9","ɵɵelement","DynamicOrderFormPageComponent_ng_container_2_div_27_div_3_div_11_div_1_Template","DynamicOrderFormPageComponent_ng_container_2_div_27_div_3_div_11_ng_template_3_Template","domainSuggestionResults$","loadingSuggestions_r10","DynamicOrderFormPageComponent_ng_container_2_div_27_div_3_div_11_Template","displaySuggestions","ɵɵtextInterpolate","parseError","DynamicOrderFormPageComponent_ng_container_2_div_27_div_2_Template","DynamicOrderFormPageComponent_ng_container_2_div_27_div_3_Template","DynamicOrderFormPageComponent_ng_container_2_div_27_div_4_Template","available","ɵɵelementContainerStart","DynamicOrderFormPageComponent_ng_container_2_span_10_Template","_r1","domainSearchText_r3","ɵɵreference","submitDomain","value","DynamicOrderFormPageComponent_ng_container_2_div_27_Template","DynamicOrderFormPageComponent_ng_container_2_ng_template_29_Template","openTermsOfServiceDialog","previousStep","nextStep","godaddyForm","icon_url","name","domainSearchResult$","loadingSearch_r11","valid","DynamicOrderFormPageComponent","constructor","activationService","dynamicOrderFormService","productService","router","orderFormStoreService","snackbarService","activationNavigationService","formBuilder","dialog","ngUnsubscribe$$","Subject","ngOnInit","group","suggestedDomain","tos","Validators","requiredTrue","setValidators","InputProvidedValidation","get","valueChanges","pipe","takeUntil","subscribe","setValue","setErrors","invalidDomain","product","selectedItems$","map","selectedItems","Array","from","keys","find","item","DynamicOrderFormAppIds","indexOf","switchMap","appId","getProducts","filter","prods","selectSearchBoxSubscription","interval","domainSearchTextElement","nativeElement","focus","unsubscribe","of","urlTracking","url","ngOnDestroy","next","complete","inputDomain","parseDomainResult","parseDomain","checkDomainAvailability","tap","result","getDomainSuggestions","acceptedTLDs","catchError","err","errorSnack","cacheDynamicOrderFormData","take","_","navigateToNextStep","navigateToPreviousStep","noInput","open","TermsOfServiceDialogComponent","width","ready","orderFormData","fieldId","answer","cacheDynamicOrderForm","product_id","asObservable","ɵɵdirectiveInject","ActivationService","DynamicOrderFormService","ProductService","Router","ProductOrderFormStoreService","SnackbarService","ActivationNavigationService","UntypedFormBuilder","MatDialog","selectors","viewQuery","rf","ctx","DynamicOrderFormPageComponent_ng_container_2_Template","DynamicOrderFormPageComponent_ng_template_4_Template","loading_r12","_DynamicOrderFormPageComponent","ORDER_FORM_OPTIONS","bypassRequiredQuestions","readOnly","showOfficeUseQuestions","FILE_UPLOAD_URL","ResellerItemOrderForm","ResellerItem","constructor","data","product","commonFields","customFields","activationMessage","ProductOrderFormService","constructor","accountService","fileUploadUrl","FILE_UPLOAD_URL","subscriptions","fieldTypeMap","text","TextboxField","textbox","dropdown","DropdownField","checkbox","CheckboxField","file","FileUploadGroupField","textarea","TextareaField","vbcuser","VBCUserField","buildCustomEntryUrlForOrderForm","productID","id","label","type","required","regexValidator","regexErrorMessage","textboxType","getFieldIds","commonFormSections","reduce","accumulator","section","push","fields","map","field","getFirstCreatedUser","users","first","current","createdDateTime","extractCommonFieldData","account","salesperson","user","contact_email","email","contact_name","name","contact_phone_number","phoneNumber","business_account_group_id","account_group_id","business_name","company_name","business_address","fullAddress","business_phone_number","work_number","length","business_website","website","salesperson_name","salesperson_email","salesperson_phone_number","contactNumber","pickActiveFieldData","activeFieldIds","fieldData","Object","keys","fieldId","indexOf","createResellerItem","resellerItem","orderForm","resellerOrderForm","ResellerItemOrderForm","product","entryUrlField","customField","usesActivationSpecificEntryUrl","appId","usesCustomizationForm","buildCustomOrderFormFields","commonFields","buildCommonOrderFormFields","customFields","concat","activationMessage","OrderForm","getCommonFieldValues","accountDetails$","pipe","firstUser","getCustomProductEntryURl","purchasableOrderForm","urlValue","customEntryUrlField","find","value","filter","fieldClass","checkField","dropDown","options","option","fieldConfig","description","assign","undefined","uploadUrl","_resellerItem","businessSection","sectionName","mdIconName","salespersonSection","contactSection","allCommonFieldsMap","fieldLabel","commonFieldsMap","textField","startsWith","destroyService","forEach","sub","unsubscribe","_ProductOrderFormService","ɵɵinject","AccountService","factory","ɵfac","getStatusMessage","status","name","allowMultipleActivations","t","activationActionString","AppAndAddonActivationStatus","ACTIVATED","text","count","type","PENDING","sortStatusMessages","statusMessages","warningMessages","filter","m","type","infoMessages","filterStatusMessagesInOrder","addons","apps","customProducts","statuses","resellerItemMap","filteredResellerItems","ri","has","getResellerItemUniqueId","riMap","resellerArrayToMap","status","appId","map","get","getStatusMessage","name","allowMultipleActivations","Boolean","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","item_r1","ɵɵelementContainerStart","ɵɵtemplate","AppsCustomPriceComponent_ng_container_0_ng_container_1_div_1_Template","ctx_r1","instantActivationItemSummaries","item_r3","AppsCustomPriceComponent_ng_container_0_ng_container_2_div_1_Template","activationItemSummaries","AppsCustomPriceComponent_ng_container_0_ng_container_1_Template","AppsCustomPriceComponent_ng_container_0_ng_container_2_Template","length","AppsCustomPriceComponent","constructor","orderConfirmationItems","orderItems","filter","item","priceOverride","appPrices","pricesForContexts","billingConfiguration","usesVariablePricing","instantBilledOrderItems","getBilledOrderItemsForStrategy","productIsInstantBilledMap","BillingStrategy","Instantly","buildActivationItemSummaries","editionsMap","nonInstantBilledOrderItems","find","i","appId","addonId","map","oi","orderConfirmationItemHasValidEditionId","editionName","get","editionId","itemHasValidEditionId","isValidEditionId","editionsEntry","editionDataIsInEditionsMap","items","isInstantBilledMap","billingStrategy","selectors","inputs","userCanEditBillingInfo","stairStepOrderRequiresBilling","partnerId","billingInfoConfigured","submitDisabled","accountGroupId","hidePricing","decls","vars","consts","template","rf","ctx","AppsCustomPriceComponent_ng_container_0_Template","_AppsCustomPriceComponent","ɵɵelement","ɵɵproperty","orderConfirmationData_r1","productIsInstantBilledMap","userCanEditBillingInfo","partnerId","billingInfoConfigured","stairstepOrderRequiresBilling","accountGroup","editionsMap","orderConfirmationItems","ɵɵelementContainerStart","ɵɵtemplate","OrderFormPageComponent_ng_container_5_app_order_form_apps_custom_price_1_Template","ɵɵadvance","loading_r2","ɵɵelementStart","ɵɵelementEnd","status_r3","text","type","OrderFormPageComponent_ng_container_14_div_1_div_1_Template","statusMessages_r4","productIds_r6","ɵɵpipeBind1","ctx_r6","accountGroupId$","OrderFormPageComponent_ng_container_14_ng_container_3_business_product_activation_prereq_form_1_Template","ɵɵlistener","ɵɵrestoreView","_r5","ɵɵnextContext","ɵɵresetView","onSubmit","$event","updateFormLoadingStatus","goBack","ɵɵtext","OrderFormPageComponent_ng_container_14_ng_container_3_div_14_Template","productIds$","form","accountGroupId","lineItems$","orderData_r8","users","answers","options","fileUploadUrl","ɵɵtextInterpolate1","isFormLoading","someProductHasWorkOrderEnabled$","OrderFormPageComponent_ng_container_14_div_1_Template","OrderFormPageComponent_ng_container_14_ng_container_3_Template","statusMessages$","orderData$","OrderFormPageComponent","constructor","formService","snackbarService","dialog","resellerItemService","accountService","hidePricingGuard","billingApiService","app","pricingService","orderParamService","orderFormStoreService","activationService","activationNavigationService","environmentService","appService","translate","productAnalyticsService","productConfirmationService","stairstepOrderService","formConfigService","UntypedFormGroup","FILE_UPLOAD_URL","marketId","subscriptions","purchaseCosts","Map","hidePricing","hasInstantBillItems","of","numCustomFormFields","salesOrderCached$$","BehaviorSubject","filterForAddons","addons","addonQuantityMap","filter","addon","has","addonId","verboseAppQuantityMap","appId","set","quantity","get","filterForVerboseApps","apps","filterForAppsGivenMap","ngOnInit","push","selectedItemsRequireOrderForm$","pipe","first","subscribe","requiresOrderForm","OrderFormType","NONE","navigateToNextStep","marketId$","partnerId$","orderConfirmationItems$","productIsInstantBilledMap$","userCanEditBillingInfo$","billingInfoConfigured$","editionsMap$","editionIdToEditionMap$","stairstepOrderRequiresBilling$","orderRequiresBillingInfo","agid","setCurrentAccountID","pid","mid","resellerItemQuantityMap$","resellerItemQuantityMapFromUrl$","shareReplay","appQuantityMap$","map","quantityMap","appQuantityMap","Array","from","values","forEach","itemQuantity","getResellerItemUniqueId","addonQuantityMap$","statuses$","distinctUntilChanged","switchMap","getAppStatusesForBusiness","combineLatest","getAddonData","getAppsForSelectedMarket","getCustomProductData","cps","statuses","resellerItemMap","filterStatusMessagesInOrder","sortStatusMessages","salesOrder$","cachedOrder$","env","getEnvironment","dynamicFieldValues$","items","godaddyAppId","getDynamicOrderForm$","whitelabelDomainAppId","observableOf","answers$","resellerItemQuantityMap","salesOrder","dynamicFieldValues","customFieldsAnswers","customFields","customField","transformedCustomField","productID","addonKey","productId","fields","isDynamicForm","thisCustomFieldsAnswers","fieldAnswer","answer","fieldId","field","dynamicStageValue","displayOnly","includedApps$","take","customApps","customProductsAndApps","ResellerItemService","combineCustomProductsAndApps","includedAddons$","order","Boolean","lineItems","mpOrderForms$","includedApps","includedAddons","getMarketplaceOrderForms","commonData$","users$","catchError","failureDialog","allAddons","allApps","allCPs","orderForms","appsAndCustomProducts","verboseApps","populateResellerItemInfo","pushBillingIdsToInstanceSkuList","skus","length","getMultiProductPricing","results","sku","DeprecatedStrategy","fromBillingSDK","strategy","isNonInvoicedStrategy","instantBillItemsSkus","getCommonFieldValues","orderFormAndPrice$","canActivate","skipWhile","checkoutItems","_","observableForkJoin","item","startsWith","prevPurchaseCost","billingId","getPurchaseCost","price","orderForm","freq","billingFrequency","toLowerCase","totalCost","currency","tap","orderPrice","hasItemsThatAreNotFree","some","orderFormAndPrices","orderFormAndPrice","hasContactSale","contactSalesSkus","orderForms$","mpOrderForms","concat","reduce","forms","commonFormRequiredFields","usesActivationSpecificEntryUrl","unshift","ProductOrderFormService","buildCustomEntryUrlForOrderForm","mainId","mpOrderForm","find","o","usesCustomizationForm","f","__spreadProps","__spreadValues","optionsWithLabels","createdForm","separateOrderForms","i","commonData","ORDER_FORM_OPTIONS","getProductIds$","shouldDisplayBanner$","accountName$","account$","account","company_name","resellerName$","config$","config","partnerName","productIds","reqs","getFulfillmentOrderConfig","GetFulfillmentOrderConfigRequest","release","ReleaseType","RELEASE_TYPE_PUBLISHED","projectionFilter","includeFormConfig","forkJoin","resps","resp","isEnabled","usesFulfillmentForm","someProductHasWorkOrderEnabled","trackEvent","appAndAddonIds","getMultiOrderForms","appIds","orderFormContainer","resellerItems","hasCustomOrCommonFields","commonFields","initializeInstanceVariables","activationsRequiresApproval","appCheckoutItems","addonCheckoutItems","productInfo","products","appIdQMap","product","combinedAddonResellerInfo","addonOrderForm","addonResellerInfo","createResellerItem","separateAddonForm","activationRequiresApproval","indexOf","name","productOrderForm","productResellerInfo","parentProductInfo","addonInfo","parentApp","tagline","icon","setAsTouched","group","markAsTouched","controls","UntypedFormControl","updateValueAndValidity","onlySelf","emitEvent","validateBillingOrder","instantBillItemSkus","orderItems","hasContactSales","resultSkus","x","uniqueResultSkus","Set","names","orderItem","getFailedAppsDisplayContent","appNames","errorMessage","openFailureDialog","validateForm","valid","validate","err","applyCustomEntryUrlIfFieldExists","orders","isCustom","customEntryUrl","getCustomProductEntryURl","entryUrl","cacheSalesOrder","cacheOrder","Order","salesOrderFormComponent","getCustomFormData","getCommonFormData","extraFields","getExtraFieldsData","next","cacheOrderForms","section","prefillSectionKey","JSON","stringify","window","sessionStorage","removeItem","dynamicPrefillSectionKey","ProductOrderFormStoreService","buildKeyForDynamicOrderForm","errorSnack","instant","productActivationPrereqFormComponent","businessActivationForm","invalid","ready","inputs","resultMap","outputString","input","num","countString","productNames","vDialog","title","contentHtml","isSuccess","buttons","action","open","VDialogComponent","MatDialogConfig","componentInstance","afterClosed","result","navigateToPreviousStep","appKey","publishReplay","refCount","loading","ngOnDestroy","subscription","unsubscribe","destroyService","ɵɵdirectiveInject","SnackbarService","MatDialog","AccountService","HidePricingGuard","BillingApiService","AppConfigService","PricingService","ActivationParamService","ActivationService","ActivationNavigationService","EnvironmentService","MarketplaceAppsApiService","TranslateService","ProductAnalyticsService","OrderConfirmationService","StairstepOrderService","FulfillmentOrderConfigApiService","selectors","viewQuery","rf","ctx","decls","vars","consts","template","OrderFormPageComponent_ng_container_5_Template","OrderFormPageComponent_ng_container_14_Template","OrderFormPageComponent_ng_template_15_Template","ɵɵtemplateRefExtractor","OrderFormPageComponent_ng_template_17_Template","ɵɵpureFunction8","_c2","spinner_r9","_OrderFormPageComponent","ɵɵelementContainerStart","ɵɵelement","ɵɵadvance","ɵɵproperty","orderSubmittedData_r1","users","salesOrder","salesOrderUrl","accountDetailsUrl","OrderSubmittedPageComponent","constructor","partnerId$","accountService","salesOrderService","route","fulfillmentOrderService","snackbarService","workOrderFormService","dialog","subscriptions","ngOnInit","salesOrder$","queryParams","pipe","take","switchMap","params","businessId","accountGroupId","salesOrderId","orderId","get","shareReplay","bufferSize","refCount","push","combineLatest","partnerId","loadUsers","subscribe","allUsers","map","user","convertToLibUser","salesOrderUrl$","accountDetailsUrl$","order","users$","getWorkOrderDetailsComponent","orderSubmittedComponent","openSendEmailDialog","afterClosed$","open","SendEmailDialogComponent","width","data","allowUserManagement","afterClosed","getOrdersToRenderFormsFor","workOrders","resp","userIds","length","of","undefined","itemNames","wo","appInfo","appName","from","mergeMap","userId","sendFulfillmentOrder","toArray","next","openSuccessSnack","error","openErrorSnack","unifiedId","unifiedUserId","email","firstName","lastName","phoneNumber","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","PARTNER_ID_INJECTION_TOKEN","AccountService","SalesOrdersService","ActivatedRoute","FulfillmentOrderApiService","SnackbarService","WorkOrderFormService","MatDialog","selectors","viewQuery","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","ɵɵtemplate","OrderSubmittedPageComponent_ng_container_12_Template","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵpureFunction4","_c1","_OrderSubmittedPageComponent","import_moment","ProductBoxItemsToSelectedItem","item","itemId","appId","type","name","iconUrl","icon","quantity","count","edition","editionId","editionName","ActivatableItemCountToSelectedItem","base","activatableItem","parentAppId","__spreadProps","__spreadValues","parentItemId","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","item_r2","quantity","ɵɵtemplate","ActivationCartComponent_ng_container_7_mat_list_item_1_span_9_Template","ActivationCartComponent_ng_container_7_mat_list_item_1_div_10_Template","ActivationCartComponent_ng_container_7_mat_list_item_1_div_11_Template","ɵɵlistener","ɵɵrestoreView","_r1","ɵɵnextContext","$implicit","ctx_r2","ɵɵresetView","removeAppSelected","ɵɵproperty","ɵɵpureFunction1","_c0","newItemIds","indexOf","activatableItem","appId","name","icon","showBadge","isTrial","editionId","editionName","status","activatedStatus","allowMultipleActivations","cancelledStatus","ɵɵelementContainerStart","ActivationCartComponent_ng_container_7_mat_list_item_1_Template","ActivationCartComponent","constructor","productAnalyticsService","itemSelectorService","removeApp","EventEmitter","ActivationStatus","ACTIVATED","CANCELED","item","removeItemId","config","emit","ngOnChanges","changes","appCartItems","getNewItemIds","previousValue","currentValue","editionIdValid","isValidEditionId","previousItems","currentItems","currentIds","map","previousIds","filter","id","includes","ɵɵdirectiveInject","ProductAnalyticsService","ItemSelectorServiceV2","selectors","inputs","features","outputs","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","ActivationCartComponent_mat_list_item_6_Template","ActivationCartComponent_ng_container_7_Template","length","_ActivationCartComponent","PackageActivationTableService","constructor","activationService","activationPricingService","showingRestrictedPackages$","BehaviorSubject","searchTerm$$","nameSort$$","paged$$","undefined","hidePricing$","selectedItems$","unsortedActivatablePackages$","activatablePackages$","searchTermDelayed$","pipe","debounceTime","distinctUntilChanged","searchedPackages$","combineLatest","map","pkgs","searchTerm","length","trim","toUpperCase","filter","pkg","uppercasePackageName","name","uppercasePackageId","packageId","indexOf","shareReplay","totalPackages$","showRestricted","notRestrictedPackages","restricted","sortedPackages$","packages","sortDirection","sort","pkg1","pkg2","pkg1Name","pkg2Name","localeCompare","pagedPackages$","sortedPackages","pageEvent","pageArray","packagesHasRestrictions$","some","handlePackageCheckboxEvent","selectedItems","selectItems","packageSeachTermChanged","next","packageSortTermChanges","order","packagePagingChanged","toggleShowingRestrictedPackages","getValue","ɵɵinject","ActivationService","ActivationPricingService","factory","ɵfac","_PackageActivationTableService","ActivatablePackageRowComponent","constructor","indented","selectors","inputs","activatablePackage","attrs","_c0","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","name","icon","ɵɵtextInterpolate","_ActivatablePackageRowComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction1","_c2","activatableItem_r1","name","ctx_r1","activatableItemCount","currentlyActivatedEditionName","ɵɵpipeBind1","quantity","ɵɵelement","ɵɵproperty","_c1","activatableItem","restrictedReason","pricing","getBillingId","ɵɵelementContainerStart","ɵɵtemplate","ActivatablePackageItemsRowComponent_ng_container_0_ng_container_11_div_2_Template","ActivatablePackageItemsRowComponent_ng_container_0_ng_container_11_td_3_Template","allowMultipleActivations","hidePricing","ActivatablePackageItemsRowComponent_ng_container_0_span_7_Template","ActivatablePackageItemsRowComponent_ng_container_0_span_8_Template","ActivatablePackageItemsRowComponent_ng_container_0_span_9_Template","ActivatablePackageItemsRowComponent_ng_container_0_span_10_Template","ActivatablePackageItemsRowComponent_ng_container_0_ng_container_11_Template","ActivatablePackageItemsRowComponent_ng_container_0_ng_template_12_Template","ɵɵtemplateRefExtractor","icon","usesEdition","editionName","status","activatedStatus","isTrial","cancelledStatus","pendingStatus","restricted_r3","ActivatablePackageItemsRowComponent","constructor","ActivationStatus","PENDING","ACTIVATED","CANCELED","editionId","billingId","editionData","editions","find","ed","usesEditions","selectors","inputs","attrs","_c0","decls","vars","consts","template","rf","ctx","ActivatablePackageItemsRowComponent_ng_container_0_Template","_ActivatablePackageItemsRowComponent","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","sortItems","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","sortIndicator","ɵɵpipeBind1","_r5","pkg_r4","$implicit","onPackageSelectionChanged","ɵɵproperty","child_r6","hidePricing","ɵɵelementContainerStart","_r3","ɵɵtemplate","PackageActivationTableComponent_ng_container_19_ng_container_1_tr_2_Template","ɵɵelement","activatableItemCount","PackageActivationTableComponent_ng_container_19_ng_container_1_Template","restricted","showRestricted","PackageActivationTableComponent","constructor","analyticsService","sortChanged","EventEmitter","packageCheckboxClicked","_nameSortOrder","ngOnChanges","changes","activatablePackages","scrollLocation","document","querySelector","scrollIntoView","nameSortOrder","sort","emit","activatablePackage","trackEvent","selectedItems","forEach","item","status","ActivationStatus","CANCELED","isTrial","ACTIVATED","PENDING","activatableItem","appId","restrictedReason","quantityToAdd","quantity","allowMultipleActivations","tempQuantity","get","undefined","push","editionId","ɵɵdirectiveInject","ProductAnalyticsService","selectors","inputs","outputs","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","PackageActivationTableComponent_mat_icon_6_Template","PackageActivationTableComponent_span_17_Template","PackageActivationTableComponent_ng_container_19_Template","ɵɵtextInterpolate","_PackageActivationTableComponent","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ctx_r1","ɵɵnextContext","ɵɵresetView","toggleRestrictedPackages","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","showingRestrictedPackages$","$event","_r4","onPackageSortOrderChanged","onPackageCheckboxClicked","ɵɵproperty","activatablePackages_r6","packageActivationData_r5","selectedItems","showingRestrictedPackages","hidePricing","ɵɵelementContainerStart","ɵɵtemplate","PaginatedPackageActivationTableComponent_ng_container_0_ng_container_8_app_package_activation_table_component_1_Template","length","noPackages_r7","_r1","onPackageSearchTermChanged","PaginatedPackageActivationTableComponent_ng_container_0_div_5_Template","PaginatedPackageActivationTableComponent_ng_container_0_ng_container_8_Template","onPackagePage","packagesHasRestrictions$","ɵɵpureFunction3","_c0","selectedItems$","hidePricing$","totalPackages$","pageOptions","ɵɵelement","PaginatedPackageActivationTableComponent","constructor","packageActivationTableService","partnerId$","vconfigService","accountService","ngOnInit","activatablePackages$","pipe","map","activatablePackage","updatePackageWithEditionInfo","activatablePackages","pkg","items","activatableItemCount","item","activatableItem","editionData","usesEditions","edition","editions","find","e","editionId","activeEdition","currentlyActiveEditionId","__spreadProps","__spreadValues","editionName","currentlyActivatedEditionName","pricing","extractAppIds","appIds","reduce","prev","curr","itemAppIds","filter","appId","concat","id","idx","indexOf","handlePackageCheckboxEvent","toggleShowingRestrictedPackages","searchTerm","packageSeachTermChanged","paginator","firstPage","pageEvent","packagePagingChanged","order","packageSortTermChanges","ɵɵdirectiveInject","PackageActivationTableService","VConfigService","AccountService","selectors","viewQuery","rf","ctx","MatPaginator","decls","vars","consts","template","PaginatedPackageActivationTableComponent_ng_container_0_Template","PaginatedPackageActivationTableComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","PaginatedPackageActivationTableComponent_ng_template_4_Template","loadingTableItems_r8","_PaginatedPackageActivationTableComponent","ɵɵelementContainer","ɵɵelementContainerStart","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","goDaddy_r2","icon_url","name","ɵɵtextInterpolate","ctx_r2","goDaddyPricing","billing_id","ɵɵtemplate","CustomProductRecommendationsComponent_ng_template_4_ng_container_10_Template","ɵɵlistener","ɵɵrestoreView","_r1","ɵɵnextContext","ɵɵresetView","addProduct","appNames","WEBSITE","removeCheckedProducts","ɵɵpipeBind1","goDaddy$","ɵɵtextInterpolate1","websitePro_r5","websiteProPricing","CustomProductRecommendationsComponent_ng_template_6_ng_container_10_Template","_r4","GO_DADDY","websitePro$","APP_NAMES","PRO_EDITION","CustomProductRecommendationsComponent","constructor","activationService","environmentService","productService","checkedGoDaddy","checkedWebsitePro","subscriptions","setProducts","getEnvironment","ngOnInit","push","appCartItems$","pipe","map","aics","foundWebsitePro","foundGoDaddy","forEach","aic","activatableItem","appId","AppIDs","WebsiteDemo","Website","editionName","toLowerCase","godaddyAppId","Environment","DEMO","PROD","subscribe","env","setGoDaddyWSP","setGoDaddyWSPPricing","goDaddyAppId","wspAppId","appWithId","activatableItems$","items","find","item","pricing","product","selectItem","quantity","ngOnDestroy","s","unsubscribe","ɵɵdirectiveInject","ActivationService","EnvironmentService","ProductService","selectors","inputs","decls","vars","consts","template","rf","ctx","CustomProductRecommendationsComponent_ng_container_0_Template","CustomProductRecommendationsComponent_ng_container_1_Template","CustomProductRecommendationsComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","CustomProductRecommendationsComponent_ng_template_4_Template","CustomProductRecommendationsComponent_ng_template_6_Template","WebsitePro_r8","None_r6","GoDaddy_r7","_CustomProductRecommendationsComponent","ɵɵelementContainer","ɵɵproperty","itemSelector_r1","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","tabChanged","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵpipeBind1","ɵɵelementContainerStart","_r4","selectedItemsChanged","ɵɵpureFunction7","_c1","productSelectorData_r5","config","partnerId","marketId","businessId","pageSize","country","priceType","itemTypesAvailable","selectedItems$","immutableSelectedItems$","productSelectorDependenciesLoading$","ɵɵtemplate","ActivationSelectionPageComponent_ng_container_13_ng_template_4_ng_container_0_Template","ActivationSelectionPageComponent_ng_container_13_ng_container_1_Template","ActivationSelectionPageComponent_ng_container_13_ng_template_2_Template","ɵɵtemplateRefExtractor","ActivationSelectionPageComponent_ng_container_13_ng_template_4_Template","includes","tabbedSelector_r6","_r7","removeSelectedApp","selectedAppCartItems$","config_r8","_r9","removeItem$$","next","ActivationSelectionPageComponent_div_16_app_activation_cart_1_Template","ActivationSelectionPageComponent_div_16_inventory_ui_item_selection_cart_3_Template","pccItemSelectorIncludesPackages$","partnerId_r11","accountGroupId","marketId_r10","ActivationSelectionPageComponent_ng_container_24_ng_container_1_Template","marketId$","BASE_COMMON_FIELDS","id","name","ActivationSelectionPageComponent","buildLineItemForOrder","item","currencyCode","appRetailPricingMap","retailPricing","activatableItem","billingId","currency","lineItem","buildDefaultFreeLineItemForOrder","price","pricingRules","itemFrequency","frequency","Frequency","Yearly","RevenuePeriod","YEARLY","OneTime","ONETIME","MONTHLY","revenueComponents","RevenueComponent","value","period","isStartingRevenue","isStartingPrice","setupFee","push","currentRevenue","Revenue","SalesLineItem","appKey","appId","editionId","quantity","isTrial","constructor","route","router","activationService","partnerId$","activationNavigationService","productStoreService","translate","analytics","billingService","manageStoreService","dialog","tosService","appConfigService","accountGroupService","itemWhitelabelService","selectedItemLength","subscriptions","addItem$$","Subject","ngOnInit","showTOS","clearSelections","accountGroupMarketId$","cartConfig$","combineLatest","pipe","map","enforceDependencies","activeItems$","activeProducts$","switchMap","activeProducts","whitelabelItems$","shareReplay","bufferSize","refCount","appCartItems$","cartItems","activatableItems","appItem","withLatestFrom","whitelabelItems","cartItem","whitelabelItem","find","__spreadProps","__spreadValues","appRetailPricingMap$","appItems","billingIds","getMultiRetailPricing","catchError","_","of","disableCheckout$","initializeDisableCheckout$","accountGroupId$","subscribe","agid","length","previousPageUrl$","queryParams","navigationSource","previousPageName$","accountGroupName$","accountGroupName","instant","featureEnabled","items","ActivatableItemCountToSelectedItem","take","filter","filteredItem","ProductBoxItemsToSelectedItem","accountGroup$","get","ProjectionFilter","napData","productSelectorConfig$","accountGroup","packagesFeatureEnabled","startWith","setUpAddingRemovingItemStreams","shouldShowTOS$","isImpersonated$","config$","isImpersonated","tosDataLoaded$","tosDataReady","impersonated","hasAcceptedTOS","isClassicSubscription","showTerms","open","UnifiedTOSDialogComponent","afterClosed","accepted","navigate","relativeTo","selection","selectItem","checkoutSelected","checkedOut","currencyConfig$","getRetailConfiguration","appCartItems","currencyConfig","trackEvent","CommonProperties","ECOMMERCE","hasAppWithOrderForm","usesOrderForm","lineItems","allowMultipleActivations","status","ActivationStatus","ACTIVATED","PENDING","editionData","usesEditions","newCommonFields","fieldItem","field","answer","description","field_id","field_type","label","prefix","regex_error_message","regex_validator","suffix","Order","requestedActivation","moment","toDate","commonFields","tags","tap","order","cacheOrder","navigateToNextStep","some","selectionChange","updatedItem","eventType","SelectionChangeEventType","DESELECTED","itemId","ngOnDestroy","forEach","sub","unsubscribe","index","tab","textLabel","addSub","activatablePackages$","packages","selectedItem","addItem","removeSub","removeItem","type","activatablePackage","pkg","packageId","selectedItems","activatableItemCount","selectItems","edition","undefined","selectedItemId","isPackageItemId","ɵɵdirectiveInject","ActivatedRoute","Router","ActivationService","ActivationNavigationService","ProductOrderFormStoreService","TranslateService","ProductAnalyticsService","BillingService","ManageStoreService","MatDialog","UnifiedTOSService","AppConfigService","AccountGroupService","FeatureFlags","PCC_ITEM_SELECTOR_INCLUDES_PACKAGES","ItemWhitelabelService","selectors","decls","vars","consts","template","rf","ctx","ɵɵtext","ActivationSelectionPageComponent_ng_container_13_Template","ActivationSelectionPageComponent_div_16_Template","ActivationSelectionPageComponent_ng_container_24_Template","ɵɵtextInterpolate1","ɵɵpureFunction1","_c0","_ActivationSelectionPageComponent","startsWith","routes","path","component","ActivationSelectionPageComponent","resolve","accountGroupId","ActivationParamService","DynamicOrderFormPageComponent","OrderFormPageComponent","OrderConfirmationPageComponent","OrderSubmittedPageComponent","canDeactivate","WorkOrderFormUnsavedChangesGuard","ActivationRoutingModule","RouterModule","forChild","_ActivationRoutingModule","ChangePriceDialogComponent","constructor","dialogRef","data","item","generalPriceInfo","price","currentSpendAmountInCents","disableClose","handleOutputFromVariablePriceInputComponent","outputPriceInCents","closeDialog","close","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","$event","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵproperty","appPrices","pricesForContexts","partnerCurrency","_ChangePriceDialogComponent","extractGeneralPriceInfoFromOrderConfirmation","item","context","appPrice","effectiveAppPrice","appPrices","pricesForContexts","currency","partnerCurrency","effectiveRetailAppPrice","marketCurrency","displayOverride","PriceDisplayOverride","PRICE_DISPLAY_OVERRIDE_CONTACT_SALES","contactSales","pricesForEditions","editionId","pricesForCurrencies","pricesForFrequencies","pricingRules","price","freqPrice","setupFee","instancePrice","total","priceInfo","frequency","toGalaxyFrequency","quantity","stairSteps","length","discounts","discount","commitment","initial","recurring","fees","calculatedFee","amount","calculateFeeAmount","amountType","FeeAmountType","FEE_AMOUNT_TYPE_FIXED","feeType","FeeType","FEE_TYPE_MANAGEMENT","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","row_r1","editionName","editionId","ɵɵproperty","ɵɵelement","ɵɵtemplate","ActivationPriceSummaryComponent_td_4_span_7_Template","ActivationPriceSummaryComponent_td_4_span_10_Template","ActivationPriceSummaryComponent_td_4_mat_icon_11_Template","icon","name","addonId","appId","ctx_r1","isNonInstant","ɵɵlistener","ɵɵrestoreView","_r3","row_r4","ɵɵnextContext","$implicit","ɵɵresetView","openChangePriceDialog","ActivationPriceSummaryComponent_td_7_a_1_Template","effectiveAppPrice","billingConfiguration","usesVariablePricing","generalPriceInfo","price","frequency","partnerCurrency","setupFee","commitment","stairSteps","discounts","fees","contactSales","row_r5","quantity","row_r6","appPrices","pricesForContexts","marketCurrency","row_r7","generalPriceInfoRetail","total","currency","ActivationPriceSummaryComponent_div_19_div_1_div_14_span_2_Template","first_r9","charge_r8","value","retailTotal","charge_r10","retailCurrency","ActivationPriceSummaryComponent_div_19_div_1_div_20_div_5_span_2_Template","ActivationPriceSummaryComponent_div_19_div_1_div_20_div_5_div_7_Template","first_r11","second_r12","ActivationPriceSummaryComponent_div_19_div_1_div_20_strong_3_Template","ActivationPriceSummaryComponent_div_19_div_1_div_20_strong_4_Template","ActivationPriceSummaryComponent_div_19_div_1_div_20_div_5_Template","contactSalesForOrder","recurringRetailTotals","ActivationPriceSummaryComponent_div_19_div_1_strong_12_Template","ActivationPriceSummaryComponent_div_19_div_1_strong_13_Template","ActivationPriceSummaryComponent_div_19_div_1_div_14_Template","ActivationPriceSummaryComponent_div_19_div_1_div_20_Template","recurringTotals","ActivationPriceSummaryComponent_div_19_div_1_Template","summaries","displayStencil_r13","ALL_COLUMNS","id","ActivationPriceSummaryComponent","activationItemSummaries","subscriptions","push","productOrderFormService","cachedOrder$","subscribe","order","updateOrderItemsWithCustomPrice","fixValuesAndQuantities","forEach","summary","extractGeneralPriceInfoFromOrderConfirmation","calculateTotals","nonInstantItemSummaries","nonInstantSummaries","Map","map","item","set","constructor","cdr","pricePipe","dialog","orderConfirmationItemEmitter","EventEmitter","minWholesalePrice","ngOnInit","columnsToDisplay","getColumnsToDisplay","columnIds","displayedColumns","c","displayedColumnsNames","wholesaleAppPrice","currValue","getPriceValueForEdition","retailAppPrice","currRetailValue","setInstanceAppPrice","effectiveRetailAppPrice","setAppPrice","getOrderTotal","getRecurringChargeTotals","getOrderRetailTotal","getRecurringRetailChargeTotals","getCurrency","shouldContactSalesForOrder","setMinWholesalePrice","subtotalCost","CENTS_DOLLAR","getDiscountDescription","purchaseCost","transform","discountAmount","Currency","minAppId","initialSubtotalCost","open","ChangePriceDialogComponent","width","data","afterClosed","index","findIndex","app","requiresApproval","activationMessage","priceOverride","productPricing","orderItemToEmit","i","items","length","orderItem","emit","detectChanges","ngOnDestroy","sub","unsubscribe","filter","column","includes","has","_ActivationPriceSummaryComponent","ɵɵdirectiveInject","ChangeDetectorRef","PricePipe","MatDialog","ProductOrderFormStoreService","selectors","inputs","hidePricing","productsAreInstantBilled","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementContainerStart","ActivationPriceSummaryComponent_th_3_Template","ActivationPriceSummaryComponent_td_4_Template","ActivationPriceSummaryComponent_th_6_Template","ActivationPriceSummaryComponent_td_7_Template","ActivationPriceSummaryComponent_th_9_Template","ActivationPriceSummaryComponent_td_10_Template","ActivationPriceSummaryComponent_th_12_Template","ActivationPriceSummaryComponent_td_13_Template","ActivationPriceSummaryComponent_th_15_Template","ActivationPriceSummaryComponent_td_16_Template","ActivationPriceSummaryComponent_tr_17_Template","ActivationPriceSummaryComponent_tr_18_Template","ActivationPriceSummaryComponent_div_19_Template","ActivationPriceSummaryComponent_ng_template_20_Template","ɵɵtemplateRefExtractor","reduce","accumulator","currentValue","getSetupFeeForEdition","priceValue","setupFeeValue","feeValue","calculateFeeAmount","getFeesForEdition","displayOverride","PriceDisplayOverride","PRICE_DISPLAY_OVERRIDE_CONTACT_SALES","totals","getFrequencyValueForEdition","galaxyFrequencyLabelToGalaxyFrequency","isStartingPrice","getLowestEditionId","feeAmount","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","purchase_r1","editionName","quantity","ɵɵtextInterpolate","activationMessage","ɵɵlistener","ɵɵrestoreView","_r2","ɵɵnextContext","$implicit","ctx_r2","ɵɵresetView","openChangePriceDialog","ɵɵtemplate","ActivationPriceComponent_mat_list_6_ng_container_1_div_13_a_1_Template","ɵɵelement","ɵɵproperty","effectiveAppPrice","billingConfiguration","usesVariablePricing","generalPriceInfo","price","frequency","partnerCurrency","setupFee","commitment","stairSteps","discounts","fees","contactSales","ɵɵelementContainerStart","ActivationPriceComponent_mat_list_6_ng_container_1_span_10_Template","ActivationPriceComponent_mat_list_6_ng_container_1_span_11_Template","ActivationPriceComponent_mat_list_6_ng_container_1_div_12_Template","ActivationPriceComponent_mat_list_6_ng_container_1_div_13_Template","icon","name","length","hidePricing","appPrices","ActivationPriceComponent_mat_list_6_ng_container_1_Template","summaries","total","currency","ActivationPriceComponent_div_7_div_1_div_10_span_2_Template","ActivationPriceComponent_div_7_div_1_div_10_span_4_Template","first_r5","charge_r4","value","isStartingPrice","ActivationPriceComponent_div_7_div_1_span_4_Template","ActivationPriceComponent_div_7_div_1_strong_8_Template","ActivationPriceComponent_div_7_div_1_strong_9_Template","ActivationPriceComponent_div_7_div_1_div_10_Template","ActivationPriceComponent_div_7_div_1_div_12_Template","productsAreInstantBilled","contactSalesForOrder","recurringTotals","ActivationPriceComponent_div_7_div_1_Template","displayStencil_r6","ActivationPriceComponent","activationItemSummaries","subscriptions","push","productOrderFormService","cachedOrder$","subscribe","order","updateOrderItemsWithCustomPrice","fixValuesAndQuantities","forEach","summary","extractGeneralPriceInfoFromOrderConfirmation","calculateTotals","constructor","cdr","pricePipe","dialog","orderConfirmationItemEmitter","EventEmitter","wholesaleTotal","minWholesalePrice","item","appPrice","pricesForContexts","currValue","getPriceValueForEdition","editionId","setInstanceAppPrice","getOrderTotal","getRecurringChargeTotals","getCurrency","shouldContactSalesForOrder","emit","getDiscountDescription","purchaseCost","transform","discountAmount","Currency","open","ChangePriceDialogComponent","disableClose","width","data","afterClosed","priceInCents","index","findIndex","app","appId","addonId","requiresApproval","priceOverride","retailTotal","productPricing","effectiveRetailAppPrice","marketCurrency","orderItemToEmit","i","items","orderItem","detectChanges","ngOnDestroy","sub","unsubscribe","_ActivationPriceComponent","CENTS_DOLLAR","ɵɵdirectiveInject","ChangeDetectorRef","PricePipe","MatDialog","ProductOrderFormStoreService","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ActivationPriceComponent_span_5_Template","ActivationPriceComponent_mat_list_6_Template","ActivationPriceComponent_div_7_Template","ActivationPriceComponent_ng_template_8_Template","ɵɵtemplateRefExtractor","reduce","accumulator","currentValue","priceValueExtract","setupFeeValue","getSetupFeeForEdition","feeValue","calculateFeeAmount","getFeesForEdition","displayOverride","PriceDisplayOverride","PRICE_DISPLAY_OVERRIDE_CONTACT_SALES","totals","getFrequencyValueForEdition","feeAmount","galaxyFrequencyLabelToGalaxyFrequency","getLowestEditionId","PriceOverridePipe","transform","value","pure","_PriceOverridePipe","ɵɵelement","ɵɵstyleMapInterpolate1","ctx_r0","item","icon","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","$event","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","updateOrderItem","ɵɵadvance","ɵɵproperty","minValue","appPrices","pricesForContexts","partnerCurrency_r3","AppsCustomPriceFormComponent","constructor","billingService","paramService","productOrderFormService","formBuilder","subscriptions","ngOnInit","getPriceValueForEdition","partnerCurrency","editionId","partnerId$","partnerCurrency$","pipe","switchMap","partnerId","getMultiContract","map","resp","currency","shareReplay","refCount","bufferSize","push","cachedOrder$","subscribe","order","getInitInputValue","price","Number","convertCentsToDollars","take","updateOrderCustomPrice","cacheOrder","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","BillingService","ActivationParamService","ProductOrderFormStoreService","UntypedFormBuilder","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelementContainerStart","ɵɵtemplate","AppsCustomPriceFormComponent_div_4_Template","AppsCustomPriceFormComponent_mat_card_content_9_Template","ɵɵtextInterpolate","name","ɵɵpipeBind1","_AppsCustomPriceFormComponent","MODULE_IMPORTS","BannerComponent","ActivationRoutingModule","SharedModule","ContactInfoComponent","PaymentInfoComponent","MatTooltipModule","MatDialogModule","MatExpansionModule","MatChipsModule","GalaxyPageModule","StencilsModule","PreviewEmailDialogModule","PricingDetailsModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","CommonModule","InfiniteScrollModule","VendastaStoreModule","SalesOrderFormModule","ProductActivationPrereqFormModule","VaIconModule","OrdersModule","MatTableModule","MatFormFieldModule","MatInputModule","MatCheckboxModule","MatSelectModule","MatDatepickerModule","VaFormsModule","VaPricingModule","GalaxyButtonLoadingIndicatorModule","BillingUiModule","GalaxyAlertModule","ItemSelectorModule","ItemSelectionCartModule","ItemPricingTableModule","ServicesModule","WorkOrderFormComponent","UnifiedTOSDialogComponent","VDialogComponent","GalaxyStickyFooterModule","ActiveItemsModule","UserDisplayNamePipe","MODULE_DECLARATIONS","ActivationSelectionPageComponent","ActivationCartComponent","PackageActivationTableComponent","ActivatablePackageRowComponent","ActivatablePackageItemsRowComponent","PaginatedPackageActivationTableComponent","OrderFormPageComponent","DynamicOrderFormPageComponent","TermsOfServiceDialogComponent","ActivationPriceComponent","OrderConfirmationPageComponent","OrderSubmittedPageComponent","PriceOverridePipe","OrderSummaryComponent","ActivationMessageDialogComponent","OrderExcessComponent","CustomProductRecommendationsComponent","ChangePriceDialogComponent","AppsCustomPriceComponent","AppsCustomPriceFormComponent","CollectPaymentComponent","ActivationPriceSummaryComponent","ActivationModule","ActivationNavigationService","ProductOrderFormService","ProductOrderFormStoreService","DynamicOrderFormService","OrderConfirmationService","StairstepOrderService","ActivationSettingsApiService","imports","PageComponent","TablePricingComponent","PaginatedAppActivationTableComponent","_ActivationModule","NgForOf","NgIf","getHostName","vbcHostService","hostWithScheme"],"x_google_ignoreList":[36]}