{"version":3,"file":"main.js","mappings":"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AC3C,CAAC,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAC3B,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,qFAA8B,kCAAkC,oFAA6B,EAAE,CAAC,CAAC;AAC1H,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC7B,+BAA+B;AAE/B,yFAAsB,EAAE,CAAC,eAAe,CAAC,sDAAS,CAAC;KAChD,KAAK,EAAE,CAAC;;;;;;;;;;;AClBX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/app/_playground/components/dev.playground/dev.playground.component.ts","./src/app/_playground/playground.module.ts","./src/app/_playground/playground.routing.module.ts","./src/app/account/account-routing.module.ts","./src/app/account/account.module.ts","./src/app/account/components/account-dashboard/account-dashboard.component.ts","./src/app/account/components/billing-history-new/billing-history-new.component.ts","./src/app/account/components/billing-history/billing-history.component.ts","./src/app/account/components/change-password-new/change-password-new.component.ts","./src/app/account/components/change-password/change-password.component.ts","./src/app/account/components/credit-card/credit-card.component.ts","./src/app/account/components/download-software/download-software.component.ts","./src/app/account/components/gis-credit-usage-history/gis-credit-usage-history.component.ts","./src/app/account/components/gis-credits-chooser/gis-credits-chooser.component.ts","./src/app/account/components/gis-history/gis-history.component.ts","./src/app/account/components/gis-purchases-history/gis-purchases-history.component.ts","./src/app/account/components/manage-credit-cards/manage-credit-cards.component.ts","./src/app/account/components/manage-history/manage-history.component.ts","./src/app/account/components/memberships-new/memberships-new.component.ts","./src/app/account/components/memberships/memberships.component.ts","./src/app/account/components/my-profile-new/my-profile-new.component.ts","./src/app/account/components/my-profile/my-profile.component.ts","./src/app/account/components/overview/overview.component.ts","./src/app/account/components/training-calendar/training-calendar.component.ts","./src/app/account/components/training-history/training-history.component.ts","./src/app/account/components/training-list/training-list.component.ts","./src/app/app.component.ts","./src/app/app.module.shared.ts","./src/app/app.module.ts","./src/app/app.routing.module.ts","./src/app/authentication/authentication-routing.module.ts","./src/app/authentication/authentication.module.ts","./src/app/authentication/reset-password/reset-password.component.ts","./src/app/authentication/signin/forgot-password-form/forgot-password-form.component.ts","./src/app/authentication/signin/login-form/login-form.component.ts","./src/app/authentication/signin/signin.component.ts","./src/app/authentication/signin/twofactor-choice-form/twofactor-choice-form.component.ts","./src/app/authentication/signin/twofactor-code-form/twofactor-code-form.component.ts","./src/app/authentication/unlock-login/unlock-login.component.ts","./src/app/debug/globals/globals.component.ts","./src/app/dialogs/add-credit-card/add-credit-card-dialog.component.ts","./src/app/dialogs/add-gis/add-gis-dialog.component.ts","./src/app/dialogs/add-product/add-product-dialog.component.ts","./src/app/dialogs/auth-login/auth-login-dialog.component.ts","./src/app/dialogs/cancellation-request/cancellation-request-dialog.component.ts","./src/app/dialogs/cdkey-reassign/cdkey-reassign-dialog.component.ts","./src/app/dialogs/change-billing-cycle/change-billing-cycle-dialog.component.ts","./src/app/dialogs/complete-order/complete-order-dialog.component.ts","./src/app/dialogs/confirm/confirm-dialog.component.ts","./src/app/dialogs/edit-credit-card/edit-credit-card-dialog.component.ts","./src/app/dialogs/event-registration/event-registration-dialog.component.ts","./src/app/dialogs/event-reschedule/event-reschedule-dialog.component.ts","./src/app/dialogs/hold-request/hold-request-dialog.component.ts","./src/app/dialogs/pay-invoice/pay-invoice-dialog.component.ts","./src/app/dialogs/reactivate-cdkey/reactivate-cdkey-dialog.component.ts","./src/app/dialogs/reactivate-license/reactivate-license-dialog.component.ts","./src/app/dialogs/upgrade-product/upgrade-product-dialog.component.ts","./src/app/dialogs/yard-add/yard-add-dialog.component.ts","./src/app/dialogs/yard-cancellation-request/yard-cancellation-request-dialog.component.ts","./src/app/directives/cdkey.directive.ts","./src/app/directives/field-matches-validator.directive.ts","./src/app/directives/month-year-mask.directive.ts","./src/app/directives/number-slash.directive.ts","./src/app/directives/number.directive.ts","./src/app/directives/phone.directive.ts","./src/app/directives/zip.directive.ts","./src/app/helpers/country.list.ts","./src/app/helpers/creditcard.ts","./src/app/helpers/state.list.ts","./src/app/login.as.member/login.as.member.module.ts","./src/app/login.as.member/login.as.member.routing.module.ts","./src/app/login.as.member/login.as.member/login.as.member.component.ts","./src/app/login.from.software/login.from.software.module.ts","./src/app/login.from.software/login.from.software.routing.module.ts","./src/app/login.from.software/login.from.software/login.from.software.component.ts","./src/app/models/BreadCrumb.ts","./src/app/models/domain/training.event.subscription.ts","./src/app/models/domain/training.event.ts","./src/app/models/errors/HttpError.ts","./src/app/models/event-args/global-error.event.args.ts","./src/app/models/ss-api/price.billing.cycle.ts","./src/app/models/ss-api/requests/add.credit.card.request.ts","./src/app/models/ss-api/requests/add.product.request.ts","./src/app/models/ss-api/requests/cancel.product.request.ts","./src/app/models/ss-api/requests/cancel.yard.request.ts","./src/app/models/ss-api/requests/cdkey.reassign.request.ts","./src/app/models/ss-api/requests/change.password.request.ts","./src/app/models/ss-api/requests/check.for.existing.member.request.ts","./src/app/models/ss-api/requests/designer.instructions.request.ts","./src/app/models/ss-api/requests/finish.order.request.ts","./src/app/models/ss-api/requests/get.training.classes.request.ts","./src/app/models/ss-api/requests/hold.request.ts","./src/app/models/ss-api/requests/login.request.ts","./src/app/models/ss-api/requests/member.training.certificates.request.ts","./src/app/models/ss-api/requests/new.member.request.ts","./src/app/models/ss-api/requests/order.gis.request.ts","./src/app/models/ss-api/requests/pay.invoice.request.ts","./src/app/models/ss-api/requests/reactivate.request.ts","./src/app/models/ss-api/requests/reactivate.request.v2.ts","./src/app/models/ss-api/requests/register.for.training.event.request.ts","./src/app/models/ss-api/requests/reset.password.request.ts","./src/app/models/ss-api/requests/resume.license.request.ts","./src/app/models/ss-api/requests/resume.license.simulation.request.ts","./src/app/models/ss-api/requests/sendTwoFactorCodeOption.request.ts","./src/app/models/ss-api/requests/set.new.password.request.ts","./src/app/models/ss-api/requests/training.calendar.request.ts","./src/app/models/ss-api/requests/twoFactorAuthentication.request.ts","./src/app/models/ss-api/requests/unlock.code.request.ts","./src/app/models/ss-api/requests/update.cart.request.ts","./src/app/models/ss-api/requests/update.credit.card.expiration.request.ts","./src/app/models/ss-api/requests/update.member.profile.request.ts","./src/app/models/ss-api/requests/update.training.event.subscription.status.request.ts","./src/app/models/ss-api/requests/upgrade.product.request.ts","./src/app/models/ss-api/requests/yard.addon.order.request.ts","./src/app/models/ss-api/responses/billing.history.response.ts","./src/app/models/ss-api/responses/credit.card.response.ts","./src/app/models/ss-api/responses/dashboard.license.response.ts","./src/app/models/ss-api/responses/dashboard.products.response.ts","./src/app/models/ss-api/responses/gis.bundle.response.ts","./src/app/models/ss-api/responses/gis.history.item.response.ts","./src/app/models/ss-api/responses/gis.purchase.item.response.ts","./src/app/models/ss-api/responses/login.response.ts","./src/app/models/ss-api/responses/member.basic.info.response.ts","./src/app/models/ss-api/responses/member.designers.license.item.ts","./src/app/models/ss-api/responses/member.designers.licenses.basics.response.ts","./src/app/models/ss-api/responses/public.order.products.response.ts","./src/app/models/ss-api/responses/reactivate.simulation.response.ts","./src/app/models/ss-api/responses/reactivate.simulation.response.V2.ts","./src/app/models/ss-api/responses/ss-api.response.ts","./src/app/models/ss-api/responses/training.event.details.response.ts","./src/app/models/ss-api/responses/unfinished.order.data.ts","./src/app/models/ss-api/responses/upgradable.products.response.ts","./src/app/models/ss-api/responses/upgrade.simulation.response.ts","./src/app/order/components/order-form-v2/order-form-v2.component.ts","./src/app/order/components/order-form-v3/order-form-v3.component.ts","./src/app/order/components/order-form/order-form.component.ts","./src/app/order/components/redirect/redirect.ts","./src/app/order/components/thank-you/thank-you.component.ts","./src/app/order/order-routing.module.ts","./src/app/order/order.module.ts","./src/app/pipes/add-years-to-date.pipe.ts","./src/app/pipes/captialize_first_letter.pipe.ts","./src/app/pipes/creditcard.pipe.ts","./src/app/pipes/date-pipes.ts","./src/app/pipes/product-name-web-safe.pipe.ts","./src/app/pipes/sanitize-html.pipe.ts","./src/app/services/auth.guard.service.ts","./src/app/services/comm-http.service.ts","./src/app/services/global.service.ts","./src/app/services/ss-api.service.ts","./src/app/shared/Toastr.ts","./src/app/shared/credit-card-add/credit-card-add.component.ts","./src/app/shared/footer/footer.component.ts","./src/app/shared/google-places/google-places.component.ts","./src/app/shared/helpers.ts","./src/app/shared/navmenu/navmenu.component.ts","./src/app/shared/paginator/paginator.component.ts","./src/app/shared/ss-cc-form-new/ss-cc-form-new.component.ts","./src/app/shared/ss-cc-form/ss-cc-form.component.ts","./src/app/shared/ss-logo/ss-logo.component.ts","./src/app/shared/topnavbar/topnavbar.component.ts","./src/app/shared/topnavcrumbs/topnavcrumbs.component.ts","./src/app/support-tickets/rate-your-experience/rate-your-experience.component.ts","./src/app/support-tickets/support-tickets-routing.module.ts","./src/app/support-tickets/support-tickets.module.ts","./src/app/views/blank/blank.view.ts","./src/app/views/dashboard/dashboard.view.ts","./src/app/views/main/main.component.ts","./src/app/views/order-form/order-form.view.ts","./src/environments/environment.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'dev-playground',\r\n styleUrls: ['./dev.playground.component.scss'],\r\n templateUrl: './dev.playground.component.html'\r\n})\r\nexport class DevPlaygroundComponent implements OnInit {\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n}\r\n","import { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CreditCardDirectivesModule } from 'angular-cc-library';\r\n\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { TabViewModule } from 'primeng/tabview';\r\n\r\n// ROUTING MODULE IMPORT\r\nimport { PlaygroundRoutingModule } from './playground.routing.module';\r\n\r\n// PLAYGROUNG COMPONENT IMPORRTS\r\nimport { DevPlaygroundComponent } from './components/dev.playground/dev.playground.component';\r\n\r\n// SHARED COMPONENTS MODULE\r\nimport { SharedAppModule } from 'app/app.module.shared';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedAppModule,\r\n PlaygroundRoutingModule,\r\n DropdownModule,\r\n TabViewModule,\r\n CreditCardDirectivesModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ],\r\n declarations: [\r\n // MODULE CHILD COMPONENTS HERE\r\n DevPlaygroundComponent,\r\n\r\n ]\r\n})\r\nexport class PlaygroundModule { }\r\n","import { DashboardView } from '../views/dashboard/dashboard.view';\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { DevPlaygroundComponent } from './components/dev.playground/dev.playground.component';\r\n\r\nimport { AuthGuardService } from 'app/services/auth.guard.service';\r\n\r\n\r\nconst PlaygroundRouting: Routes = [\r\n // login view\r\n {\r\n\r\n path: 'dev', component: DashboardView,\r\n canActivate: [AuthGuardService],\r\n children: [\r\n { path: 'playground', component: DevPlaygroundComponent },\r\n\r\n // handle all other routes\r\n { path: '**', component: DevPlaygroundComponent } // AccountDashboardComponent\r\n ]\r\n },\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(PlaygroundRouting)],\r\n exports: [RouterModule]\r\n})\r\nexport class PlaygroundRoutingModule { }\r\n","import { DashboardView } from '../views/dashboard/dashboard.view';\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\n// import { OrderFormComponent } from './components/order-form/order-form.component'\r\nimport { OverviewComponent } from './components/overview/overview.component';\r\nimport { MembershipsComponent } from './components/memberships/memberships.component';\r\nimport { TrainingCalendarComponent } from './components/training-calendar/training-calendar.component';\r\nimport { TrainingHistoryComponent } from './components/training-history/training-history.component';\r\nimport { BillingHistoryComponent } from './components/billing-history/billing-history.component';\r\nimport { CreditCardComponent } from './components/credit-card/credit-card.component';\r\nimport { ManageCreditCardsComponent } from './components/manage-credit-cards/manage-credit-cards.component';\r\nimport { ManageHistoryComponent } from './components/manage-history/manage-history.component';\r\nimport { TrainingListComponent } from './components/training-list/training-list.component';\r\nimport { ChangePasswordComponent } from './components/change-password/change-password.component';\r\nimport { DownloadSoftwareComponent } from './components/download-software/download-software.component';\r\nimport { GISHistoryComponent } from './components/gis-history/gis-history.component';\r\nimport { MyProfileComponent } from './components/my-profile/my-profile.component';\r\nimport { AuthGuardService } from 'app/services/auth.guard.service';\r\n\r\nconst AccountRouting: Routes = [\r\n\r\n\r\n {\r\n path: 'account/reset-password',\r\n redirectTo: '/authentication/signin?forgotPassword=true',\r\n pathMatch: 'full',\r\n },\r\n {\r\n path: 'account', component: DashboardView,\r\n canActivate: [AuthGuardService],\r\n children: [\r\n { path: 'overview', component: OverviewComponent },\r\n { path: 'manage-payment-info', component: ManageCreditCardsComponent },\r\n { path: 'manage-history', component: ManageHistoryComponent },\r\n { path: 'training-list', component: TrainingListComponent },\r\n { path: 'product-memberships', component: MembershipsComponent },\r\n { path: 'training-calendar', component: TrainingCalendarComponent },\r\n { path: 'training-calendar/:id', component: TrainingCalendarComponent },\r\n { path: 'training-history', component: TrainingHistoryComponent },\r\n { path: 'billing-history', component: BillingHistoryComponent },\r\n { path: 'credit-card', component: CreditCardComponent },\r\n { path: 'add-credit-card', component: CreditCardComponent },\r\n { path: 'change-password', component: ChangePasswordComponent },\r\n { path: 'my-profile', component: MyProfileComponent },\r\n { path: 'software-download', component: DownloadSoftwareComponent },\r\n { path: 'gis-purchase-history', component: GISHistoryComponent },\r\n // handle all other routes\r\n { path: '**', component: OverviewComponent } // AccountDashboardComponent\r\n ]\r\n },\r\n\r\n\r\n\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(AccountRouting)],\r\n exports: [RouterModule]\r\n})\r\nexport class AccountRoutingModule { }\r\n","import { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CreditCardDirectivesModule } from 'angular-cc-library';\r\n\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { TableModule } from 'primeng/table';\r\n\r\nimport { AccountRoutingModule } from './account-routing.module';\r\nimport { AccountDashboardComponent } from './components/account-dashboard/account-dashboard.component';\r\nimport { MembershipsComponent } from './components/memberships/memberships.component';\r\nimport { MembershipsNewComponent } from './components/memberships-new/memberships-new.component';\r\nimport { TrainingCalendarComponent } from './components/training-calendar/training-calendar.component';\r\nimport { TrainingHistoryComponent } from './components/training-history/training-history.component';\r\nimport { BillingHistoryComponent } from './components/billing-history/billing-history.component';\r\nimport { BillingHistoryNewComponent } from './components/billing-history-new/billing-history-new.component';\r\nimport { CreditCardComponent } from './components/credit-card/credit-card.component';\r\nimport { ManageCreditCardsComponent } from './components/manage-credit-cards/manage-credit-cards.component';\r\nimport { ManageHistoryComponent } from './components/manage-history/manage-history.component';\r\nimport { TrainingListComponent } from './components/training-list/training-list.component';\r\nimport { ChangePasswordComponent } from './components/change-password/change-password.component';\r\nimport { ChangePasswordNewComponent } from './components/change-password-new/change-password-new.component';\r\nimport { DownloadSoftwareComponent } from './components/download-software/download-software.component';\r\n\r\nimport { MyProfileComponent } from './components/my-profile/my-profile.component';\r\nimport { MyProfileNewComponent } from './components/my-profile-new/my-profile-new.component';\r\nimport { OverviewComponent } from './components/overview/overview.component';\r\n\r\nimport { GISHistoryComponent } from './components/gis-history/gis-history.component';\r\nimport { GisPurchasesHistoryComponent } from './components/gis-purchases-history/gis-purchases-history.component';\r\nimport { GisCreditUsageHistoryComponent } from './components/gis-credit-usage-history/gis-credit-usage-history.component';\r\nimport { GISCreditsChooserComponent } from './components/gis-credits-chooser/gis-credits-chooser.component';\r\nimport { SharedAppModule } from 'app/app.module.shared';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedAppModule,\r\n AccountRoutingModule,\r\n DropdownModule,\r\n TabViewModule,\r\n DialogModule,\r\n TableModule,\r\n CreditCardDirectivesModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ],\r\n declarations: [\r\n AccountDashboardComponent,\r\n MembershipsComponent,\r\n MembershipsNewComponent,\r\n TrainingCalendarComponent,\r\n TrainingHistoryComponent,\r\n BillingHistoryComponent,\r\n BillingHistoryNewComponent,\r\n CreditCardComponent,\r\n ManageCreditCardsComponent,\r\n ManageHistoryComponent,\r\n TrainingListComponent,\r\n ChangePasswordComponent,\r\n ChangePasswordNewComponent,\r\n DownloadSoftwareComponent,\r\n GISHistoryComponent,\r\n GisPurchasesHistoryComponent,\r\n GisCreditUsageHistoryComponent,\r\n GISCreditsChooserComponent,\r\n MyProfileComponent,\r\n MyProfileNewComponent,\r\n OverviewComponent,\r\n ]\r\n})\r\nexport class AccountModule { }\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'account-dashboard',\r\n templateUrl: './account-dashboard.component.html',\r\n styleUrls: ['./account-dashboard.component.scss'],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class AccountDashboardComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { GlobalServices } from '../../../services/global.service';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { BillingHistoryResponse, BillingHistoryResponseArray } from '../../../models/ss-api/responses/billing.history.response';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { HttpError } from 'app/models/errors/HttpError';\r\nimport { DecimalPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'account-billing-history-new',\r\n templateUrl: './billing-history-new.component.html',\r\n styleUrls: ['./billing-history-new.component.scss'],\r\n providers: [DecimalPipe]\r\n})\r\nexport class BillingHistoryNewComponent implements OnInit {\r\n\r\n // public\r\n BillingItems: BillingHistoryResponseArray = new BillingHistoryResponseArray();\r\n Token: string;\r\n\r\n IsBusy: boolean = false;\r\n\r\n billingHistoryResultRows: number = 25;\r\n firstResult: number = 0;\r\n lastResult: number = 24;\r\n\r\n ReportURL: string;\r\n\r\n constructor(private api: ssApiService, private gb: GlobalServices, private decimalPipe: DecimalPipe) { }\r\n\r\n ngOnInit() {\r\n this.Token = this.gb.TokenToUrlFriendly();\r\n this.ReportURL = this.gb.ReportURL;\r\n this.Refresh();\r\n }\r\n\r\n PaidDate(item: BillingHistoryResponse): boolean {\r\n\r\n if (item.DateTimePaid < item.DateTimeCreated)\r\n return false;\r\n else\r\n return true;\r\n\r\n }\r\n\r\n Refresh() {\r\n\r\n this.IsBusy = true;\r\n\r\n let request = this.api.BillingHistory()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n // console.log(response.Data);\r\n this.BillingItems = this.SortBillingItems(response.Data);\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n this.IsBusy = false;\r\n }\r\n );\r\n\r\n\r\n }\r\n\r\n InvoiceTotal(invoice: BillingHistoryResponse): string {\r\n\r\n if (invoice.Refunded)\r\n return '$0 - Refunded';\r\n else\r\n return '$' + this.decimalPipe.transform(invoice.Total, '1.2');\r\n\r\n }\r\n\r\n\r\n Details(invoice: BillingHistoryResponse): string {\r\n\r\n // here we generate the HTML for the description\r\n\r\n // if we don't have a description show no items\r\n if (invoice.Items == undefined || invoice.Items.length == 0)\r\n return '(no items)';\r\n\r\n // prepare description string\r\n let description = '';\r\n\r\n // loop through all the invoice items\r\n for (let i = 0; i < invoice.Items.length; i++) {\r\n\r\n // add a break if we are on line 2+\r\n if (i > 0)\r\n description += '
';\r\n\r\n // define current item for easy read\r\n let currentItem = invoice.Items[i];\r\n\r\n // add description string\r\n description += currentItem.Description;\r\n\r\n if (currentItem.Amount > 0) {\r\n // if we have amount > 0 add it at the end of the description\r\n description += ' $' + this.decimalPipe.transform(currentItem.Amount, '1.2') + '';\r\n }\r\n\r\n }\r\n\r\n // return the description HTML\r\n return description;\r\n }\r\n\r\n SortBillingItems(SortMe: BillingHistoryResponseArray): BillingHistoryResponseArray {\r\n SortMe.sort((a, b) => {\r\n let dateA = new Date().getTime();\r\n if (a.DateTimeCreated != undefined)\r\n dateA = new Date(a.DateTimeCreated).getTime();\r\n\r\n let dateB = new Date().getTime();\r\n if (b.DateTimeCreated != undefined)\r\n dateB = new Date(b.DateTimeCreated).getTime();\r\n\r\n return dateB - dateA;\r\n\t\t});\r\n return SortMe;\r\n }\r\n\r\n paginateBillingHistory(e) {\r\n this.firstResult = e.page * e.rows;\r\n this.lastResult = this.firstResult + e.rows;\r\n }\r\n\r\n}\r\n","import { GlobalServices } from '../../../services/global.service';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { BillingHistoryResponse, BillingHistoryResponseArray } from '../../../models/ss-api/responses/billing.history.response';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { HttpError } from 'app/models/errors/HttpError';\r\nimport { DecimalPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'account-billing-history',\r\n templateUrl: './billing-history.component.html',\r\n styleUrls: ['./billing-history.component.css'],\r\n providers: [DecimalPipe]\r\n})\r\nexport class BillingHistoryComponent implements OnInit {\r\n\r\n // public\r\n BillingItems: BillingHistoryResponseArray = new BillingHistoryResponseArray();\r\n Token: string;\r\n\r\n IsBusy: boolean = false;\r\n\r\n billingHistoryResultRows: number = 24;\r\n firstResult: number = 0;\r\n lastResult: number = 24;\r\n\r\n ReportURL: string;\r\n\r\n constructor(private api: ssApiService, private gb: GlobalServices, private decimalPipe: DecimalPipe) { }\r\n\r\n ngOnInit() {\r\n this.Token = this.gb.TokenToUrlFriendly();\r\n this.ReportURL = this.gb.ReportURL;\r\n this.Refresh();\r\n }\r\n\r\n PaidDate(item: BillingHistoryResponse): boolean {\r\n\r\n if (item.DateTimePaid < item.DateTimeCreated)\r\n return false;\r\n else\r\n return true;\r\n\r\n }\r\n\r\n Refresh() {\r\n\r\n this.IsBusy = true;\r\n\r\n let request = this.api.BillingHistory()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n // console.log(response.Data);\r\n this.BillingItems = this.SortBillingItems(response.Data);\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n this.IsBusy = false;\r\n }\r\n );\r\n\r\n\r\n }\r\n\r\n InvoiceTotal(invoice: BillingHistoryResponse): string {\r\n\r\n if (invoice.Refunded)\r\n return '$0 - Refunded';\r\n else\r\n return '$' + this.decimalPipe.transform(invoice.Total, '1.2');\r\n\r\n }\r\n\r\n\r\n Details(invoice: BillingHistoryResponse): string {\r\n\r\n // here we generate the HTML for the description\r\n\r\n // if we don't have a description show no items\r\n if (invoice.Items == undefined || invoice.Items.length == 0)\r\n return '(no items)';\r\n\r\n // prepare description string\r\n let description = '';\r\n\r\n // loop through all the invoice items\r\n for (let i = 0; i < invoice.Items.length; i++) {\r\n\r\n // add a break if we are on line 2+\r\n if (i > 0)\r\n description += '
';\r\n\r\n // define current item for easy read\r\n let currentItem = invoice.Items[i];\r\n\r\n // add description string\r\n description += currentItem.Description;\r\n\r\n if (currentItem.Amount > 0) {\r\n // if we have amount > 0 add it at the end of the description\r\n description += ' $' + this.decimalPipe.transform(currentItem.Amount, '1.2') + '';\r\n }\r\n\r\n }\r\n\r\n // return the description HTML\r\n return description;\r\n }\r\n\r\n SortBillingItems(SortMe: BillingHistoryResponseArray): BillingHistoryResponseArray {\r\n SortMe.sort((a, b) => {\r\n let dateA = new Date().getTime();\r\n if (a.DateTimeCreated != undefined)\r\n dateA = new Date(a.DateTimeCreated).getTime();\r\n\r\n let dateB = new Date().getTime();\r\n if (b.DateTimeCreated != undefined)\r\n dateB = new Date(b.DateTimeCreated).getTime();\r\n\r\n return dateB - dateA;\r\n\t\t});\r\n return SortMe;\r\n }\r\n\r\n paginateBillingHistory(e) {\r\n this.firstResult = e.page * e.rows;\r\n this.lastResult = this.firstResult + e.rows;\r\n }\r\n\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { HttpError } from '../../../models/errors/HttpError';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { ChangePasswordRequest } from '../../../models/ss-api/requests/change.password.request';\r\nimport { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { xToastr, ToastrTypes } from '../../../shared/Toastr';\r\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\r\nimport { GlobalServices } from 'app/services/global.service';\r\n\r\n@Component({\r\n selector: 'account-change-password-new',\r\n templateUrl: './change-password-new.component.html',\r\n styleUrls: ['./change-password-new.component.scss']\r\n})\r\nexport class ChangePasswordNewComponent implements OnInit {\r\n\t@Output() emitClose: EventEmitter = new EventEmitter();\r\n Request = new ChangePasswordRequest();\r\n RepeatNewPassword: string = '';\r\n\r\n IsBusy: boolean = false;\r\n\r\n passwordForm: UntypedFormGroup;\r\n\t\r\n\tvalidationMessage : string = '';\r\n\tnewPassword1BeingTyped: boolean = false;\r\n\tnewPassword2BeingTyped: boolean = false;\r\n\r\n constructor(private api: ssApiService, private router: Router, private gb : GlobalServices) { }\r\n\r\n ngOnInit() {\r\n\r\n\t\t// this.gb.SetPageTitle(\"Change Password\");\r\n\r\n this.passwordForm = new UntypedFormGroup({\r\n 'password': new UntypedFormControl('', [Validators.required]),\r\n 'newPassword1': new UntypedFormControl('', [Validators.required, Validators.minLength(6)]),\r\n 'newPassword2': new UntypedFormControl('', [Validators.required, Validators.minLength(6)])\r\n\t\t});\r\n\r\n\t\tthis.passwordForm.get('newPassword1').valueChanges.subscribe(val => {\r\n\t\t\tthis.newPassword1BeingTyped = true;\r\n\t\t});\r\n\r\n\t\tthis.passwordForm.get('newPassword2').valueChanges.subscribe(val => {\r\n\t\t\tthis.newPassword2BeingTyped = true;\r\n\t\t});\r\n\t\t\r\n\t\tthis.passwordForm.valueChanges.subscribe(val => {\r\n\t\t\tthis.IsValidCheck();\t\r\n\t\t});\r\n\r\n }\r\n\r\n ValidateNewPassword(): boolean {\r\n\r\n if ( !this.PasswordsMatch() ) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Validation Error', 'The new password and confirm password must match.');\r\n return false;\r\n }\r\n\r\n if ( !this.passwordForm.valid ) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Validation Error', 'Please make sure you entered valid passwords.');\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n ChangePassword() {\r\n\r\n if (!this.ValidateNewPassword())\r\n return;\r\n\r\n\r\n\r\n this.IsBusy = true;\r\n\r\n\t\tlet request = new ChangePasswordRequest();\r\n\t\trequest.CurrentPassword = this.passwordForm.get('password').value;\r\n\t\trequest.NewPassword = this.passwordForm.get('newPassword1').value;\r\n\r\n\t\trequest.ValidationMessage = '';\r\n\r\n let disposable = this.api.ChangePassword( request )\r\n .subscribe(response => {\r\n disposable.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', response.Data);\r\n return; // error\r\n }\r\n\r\n xToastr.ShowToast(ToastrTypes.Info, 'OK', 'Password changed');\r\n\t\t\t\tthis.emitClose.emit();\r\n this.router.navigate(['authentication']);\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n disposable.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n\t}\r\n\t\r\n\tIsValidCheck() {\r\n\t\tif( this.passwordForm.get('password').value == '' )\r\n\t\t\tthis.validationMessage = 'Please enter your current password';\r\n\t\telse if( this.passwordForm.get('newPassword1').value.length < 6 && this.newPassword1BeingTyped ) {\r\n\t\t\tthis.validationMessage = 'Password must be at least 6 characters in length';\r\n\t\t}\r\n\t\telse if( !this.PasswordsMatch() && this.newPassword2BeingTyped ) {\r\n\t\t\tthis.validationMessage = 'Please make sure your new passwords match'\r\n\t\t}\r\n\t\telse \r\n\t\t\tthis.validationMessage = '';\r\n\t}\r\n\r\n\tpublic PasswordsMatch() : boolean {\r\n\t\t\r\n\t\tlet match = false;\r\n\r\n\t\tif( this.passwordForm == null ) {\r\n\t\t\tmatch = false;\r\n\t\t} else {\r\n\t\t\tif( this.passwordForm.get('newPassword1').value.length < 6 ) {\r\n\t\t\t\tmatch = false;\r\n\t\t\t} else {\r\n\t\t\t\tmatch = this.passwordForm.get('newPassword1').value == this.passwordForm.get('newPassword2').value;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t\t\r\n\t}\r\n\r\n\r\n\tFeildsAreDirty() : boolean {\r\n\r\n\t\tlet isDirty = false;\r\n\r\n\t\tif( this.passwordForm.get('newPassword1').dirty && this.passwordForm.get('newPassword2').dirty )\r\n\t\t\tisDirty = true;\r\n\r\n\t\treturn isDirty;\r\n\r\n\t}\r\n\r\n\tShowValidationIssue() : boolean {\r\n\r\n\t\tlet hasIssue = false;\r\n\r\n\t\tif( this.FeildsAreDirty() ) {\r\n\r\n\t\t\tif( !this.passwordForm.valid )\r\n\t\t\t\thasIssue = true;\r\n\t\t}\r\n\r\n\t\treturn hasIssue;\r\n\r\n\r\n\t}\r\n\r\n\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { HttpError } from '../../../models/errors/HttpError';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { ChangePasswordRequest } from '../../../models/ss-api/requests/change.password.request';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { xToastr, ToastrTypes } from '../../../shared/Toastr';\r\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\r\nimport { GlobalServices } from 'app/services/global.service';\r\n\r\n@Component({\r\n selector: 'account-change-password',\r\n templateUrl: './change-password.component.html',\r\n styleUrls: ['./change-password.component.css']\r\n})\r\nexport class ChangePasswordComponent implements OnInit {\r\n Request = new ChangePasswordRequest();\r\n RepeatNewPassword: string = '';\r\n\r\n IsBusy: boolean = false;\r\n\r\n passwordForm: UntypedFormGroup;\r\n\t\r\n\tvalidationMessage : string = '';\r\n\r\n constructor(private api: ssApiService, private router: Router, private gb : GlobalServices) { }\r\n\r\n ngOnInit() {\r\n\r\n\t\tthis.gb.SetPageTitle(\"Change Password\");\r\n\r\n this.passwordForm = new UntypedFormGroup({\r\n 'password': new UntypedFormControl('', [Validators.required]),\r\n 'newPassword1': new UntypedFormControl('', [Validators.required, Validators.minLength(6)]),\r\n 'newPassword2': new UntypedFormControl('', [Validators.required, Validators.minLength(6)])\r\n\t\t});\r\n\t\t\r\n\t\tthis.passwordForm.valueChanges.subscribe(val => {\r\n\t\t\tthis.IsValidCheck();\t\r\n\t\t});\r\n\r\n }\r\n\r\n ValidateNewPassword(): boolean {\r\n\r\n if ( !this.PasswordsMatch() ) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Validation Error', 'The new password and confirm password must match.');\r\n return false;\r\n }\r\n\r\n if ( !this.passwordForm.valid ) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Validation Error', 'Please make sure you entered valid passwords.');\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n ChangePassword() {\r\n\r\n if (!this.ValidateNewPassword())\r\n return;\r\n\r\n\r\n\r\n this.IsBusy = true;\r\n\r\n\t\tlet request = new ChangePasswordRequest();\r\n\t\trequest.CurrentPassword = this.passwordForm.get('password').value;\r\n\t\trequest.NewPassword = this.passwordForm.get('newPassword1').value;\r\n\r\n\t\trequest.ValidationMessage = '';\r\n\r\n let disposable = this.api.ChangePassword( request )\r\n .subscribe(response => {\r\n disposable.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', response.Data);\r\n return; // error\r\n }\r\n\r\n xToastr.ShowToast(ToastrTypes.Info, 'OK', 'Password changed');\r\n\r\n this.router.navigate(['authentication']);\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n disposable.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n\t}\r\n\t\r\n\tIsValidCheck() {\r\n\t\tif( !this.passwordForm.valid ) {\r\n\r\n\t\t\tif( this.passwordForm.get('password').value == '' )\r\n\t\t\t\tthis.validationMessage = 'Please enter your current password';\r\n\t\t\telse if( this.passwordForm.get('newPassword1').value.length < 6 )\r\n\t\t\t\tthis.validationMessage = 'Password must be at least 6 characters in length';\r\n\t\t\telse if( !this.PasswordsMatch() )\r\n\t\t\t\tthis.validationMessage = 'Please make sure your new passwords match'\r\n\t\t\t\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tpublic PasswordsMatch() : boolean {\r\n\t\t\r\n\t\tlet match = false;\r\n\r\n\t\tif( this.passwordForm == null ) {\r\n\t\t\tmatch = false;\r\n\t\t} else {\r\n\t\t\tif( this.passwordForm.get('newPassword1').value.length < 6 ) {\r\n\t\t\t\tmatch = false;\r\n\t\t\t} else {\r\n\t\t\t\tmatch = this.passwordForm.get('newPassword1').value == this.passwordForm.get('newPassword2').value;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t\t\r\n\t}\r\n\r\n\r\n\tFeildsAreDirty() : boolean {\r\n\r\n\t\tlet isDirty = false;\r\n\r\n\t\tif( this.passwordForm.get('newPassword1').dirty && this.passwordForm.get('newPassword2').dirty )\r\n\t\t\tisDirty = true;\r\n\r\n\t\treturn isDirty;\r\n\r\n\t}\r\n\r\n\tShowValidationIssue() : boolean {\r\n\r\n\t\tlet hasIssue = false;\r\n\r\n\t\tif( this.FeildsAreDirty() ) {\r\n\r\n\t\t\tif( !this.passwordForm.valid )\r\n\t\t\t\thasIssue = true;\r\n\t\t}\r\n\r\n\t\treturn hasIssue;\r\n\r\n\r\n\t}\r\n\r\n\r\n}\r\n","import { AddCreditCardRequest } from '../../../models/ss-api/requests/add.credit.card.request';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, UntypedFormControl } from '@angular/forms';\r\nimport { CreditCardResponse, CreditCardTypes } from '../../../models/ss-api/responses/credit.card.response';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { CreditCardResponseArray } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { HttpError } from 'app/models/errors/HttpError';\r\nimport { CreditCardValidators, CreditCard } from 'angular-cc-library';\r\nimport { MemberBasicInfoResponse } from 'app/models/ss-api/responses/member.basic.info.response';\r\nimport Swal from 'sweetalert2';\r\nimport * as moment from 'moment';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { EditCreditCardDialogComponent, IEditCreditCardDialogModel } from 'app/dialogs/edit-credit-card/edit-credit-card-dialog.component';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { MemberProfile } from 'app/models/domain/member.profile';\r\n\r\nimport { CreditCardHelper } from '../../../helpers/creditcard';\r\nimport { CountryList, CountryListItem } from '../../../helpers/country.list';\r\nimport { Router } from '@angular/router';\r\n\r\n\r\nfunction CustomCreditCardValidator(c: UntypedFormControl) {\r\n\r\n let cardType = CreditCardHelper.GetCardTypes(c.value);\r\n\r\n if (cardType == CreditCardTypes.Unknown || cardType == null) {\r\n return {\r\n CustomCreditCardValidator: {\r\n valid: false\r\n }\r\n }\r\n } else {\r\n return null;\r\n }\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'account-credit-card',\r\n templateUrl: './credit-card.component.html',\r\n styleUrls: ['./credit-card.component.scss'],\r\n providers: [DialogService]\r\n})\r\nexport class CreditCardComponent implements OnInit {\r\n\r\n // dialog confirm add creditcard\r\n Add_Confirm_Title: string = 'Add New Credit Card?';\r\n Add_Confirm_Text: string = 'You are about to add a new Credit Card.';\r\n\r\n // dialog added info\r\n Add_Added_Title: string = 'Saved!';\r\n Add_Added_Text: string = 'New Credit Card Saved.';\r\n Add_Added_Timeout: number = 1500;\r\n\r\n // dialog confirm delete creditcard\r\n Delete_Confirm_Title: string = 'Delete Credit Card?';\r\n Delete_Confirm_Text: string = 'You are about to delete a Credit Card.';\r\n\r\n // dialog deleted info\r\n Delete_Deleted_Title: string = 'Deleted!';\r\n Delete_Deleted_Text: string = 'Credit Card Deleted.';\r\n Delete_Deleted_Timeout: number = 1500;\r\n\r\n // dialog confirm set default creditcard\r\n SetDefault_Confirm_Title: string = 'Change default Credit Card?';\r\n SetDefault_Confirm_Text: string = 'You are about to change your default Credit Card.';\r\n\r\n // dialog default saved info\r\n SetDefault_Saved_Title: string = 'Saved!';\r\n SetDefault_Saved_Text: string = 'New default Credit Card saved.';\r\n SetDefault_Saved_Timeout: number = 1500;\r\n\r\n\r\n\r\n TabIndex: number = 1;\r\n submitted: boolean = false;\r\n ccardForm: UntypedFormGroup;\r\n ccForm: UntypedFormGroup;\r\n formSetAsDefaultVisible: boolean = true;\r\n\r\n public updateAddress: boolean = false;\r\n\r\n public IsBusy: boolean = false;\r\n\r\n memberProfile: MemberProfile;\r\n\r\n public MemberBasicInfo: MemberBasicInfoResponse = new MemberBasicInfoResponse();\r\n public Cards: CreditCardResponseArray = new CreditCardResponseArray();\r\n public DefaultCard: CreditCardResponse = new CreditCardResponse();\r\n\r\n countryList: CountryListItem[] = CountryList.Countries();\r\n\r\n constructor(\r\n private router: Router,\r\n private api: ssApiService,\r\n private _fb: UntypedFormBuilder,\r\n private dialogService: DialogService,\r\n public gb: GlobalServices\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n //Check to see if we're defaulting to adding a card\r\n if (this.router.url == \"/account/add-credit-card\") {\r\n this.TabIndex = 1;\r\n }\r\n else {\r\n this.TabIndex = 0;\r\n }\r\n\r\n this.RefreshCards();\r\n\r\n this.ccForm = this._fb.group({\r\n creditCard: new UntypedFormControl('', [CreditCardValidators.validateCCNumber, CustomCreditCardValidator]),\r\n expMonth: [this.ThisMonth(), [Validators.required]],\r\n expYear: [new Date().getFullYear(), [Validators.required]],\r\n cvc: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(4)]],\r\n firstName: [],\r\n lastName: []\r\n });\r\n\r\n this.ccardForm = this._fb.group({\r\n creditCard: this.ccForm,\r\n\r\n address1: new UntypedFormControl(\"\", [Validators.required]),\r\n city: new UntypedFormControl(\"\", [Validators.required]),\r\n state: new UntypedFormControl(\"\", [Validators.required]),\r\n zip: new UntypedFormControl(\"\", [Validators.required, Validators.minLength(1), Validators.maxLength(10)]),\r\n country: new UntypedFormControl(\"\", [Validators.required, Validators.minLength(1)]),\r\n\r\n setAsDefault: new UntypedFormControl(true)\r\n });\r\n\r\n\r\n this.GetMemberProfile();\r\n\r\n\r\n }\r\n\r\n\r\n\r\n\r\n GetMemberProfile() {\r\n this.IsBusy = true;\r\n\r\n\r\n\r\n let disposable = this.api.MemberProfile().subscribe(result => {\r\n\r\n disposable.unsubscribe();\r\n console.log('MemberProfile Result -', result);\r\n\r\n\r\n this.memberProfile = result.Data;\r\n\r\n this.UpdateGBmemberInfo();\r\n\r\n\r\n }, error => {\r\n disposable.unsubscribe();\r\n this.IsBusy = false;\r\n console.log(\"ERROR\", error);\r\n });\r\n\r\n }\r\n\r\n UpdateGBmemberInfo() {\r\n this.IsBusy = true;\r\n\r\n let disposable = this.gb.onMemberProfileUpdated.subscribe(response => {\r\n disposable.unsubscribe();\r\n this.IsBusy = false;\r\n\r\n console.log(\"I got a member profile\", response);\r\n\r\n this.UpdateFormWithMemberData();\r\n\r\n });\r\n\r\n this.gb.CheckMemberInfo();\r\n\r\n }\r\n\r\n firstTimeSetup: boolean = true;\r\n\r\n UpdateFormWithMemberData() {\r\n\r\n let newCountry = CountryList.ValidCountry(this.memberProfile.Country);\r\n\r\n this.ccardForm.patchValue({\r\n companyName: this.memberProfile.Companyname,\r\n email: this.memberProfile.Email,\r\n\r\n address1: this.memberProfile.Address1,\r\n\r\n city: this.memberProfile.City,\r\n state: this.memberProfile.State,\r\n zip: this.memberProfile.Postcode,\r\n country: CountryList.ValidCountry(this.memberProfile.Country),\r\n\r\n phone: this.gb.FormattedPhone(this.memberProfile.Phonenumber),\r\n phone2: this.gb.FormattedPhone(this.memberProfile.Phonenumber2),\r\n fax: this.memberProfile.FaxNumber,\r\n\r\n currentPassword: '',\r\n newPassword: ''\r\n\r\n });\r\n\r\n this.ccardForm.updateValueAndValidity();\r\n\r\n if (!this.firstTimeSetup) return;\r\n\r\n\r\n\r\n\r\n\r\n this.ccardForm.controls.country.valueChanges.subscribe(v => {\r\n\r\n console.log(v);\r\n\r\n if (v == \"US\") {\r\n this.ccardForm.controls.zip.setValidators([Validators.required, Validators.minLength(2), Validators.maxLength(10)]);\r\n } else {\r\n this.ccardForm.controls.zip.setValidators([Validators.required, Validators.minLength(2), Validators.maxLength(10)]);\r\n }\r\n\r\n this.ccardForm.controls.zip.updateValueAndValidity();\r\n });\r\n\r\n\r\n this.firstTimeSetup = false;\r\n\r\n }\r\n\r\n IsUS(): boolean {\r\n return this.ccardForm.controls.country.value == 'US' ? true : false;\r\n }\r\n\r\n\r\n isValidExpiration() {\r\n let ccExpMonth = this.ccForm.get('expMonth').value;\r\n let ccExpYear = this.ccForm.get('expYear').value;\r\n\r\n if (moment(ccExpMonth + '/' + ccExpYear, 'MM/YYYY').isSameOrAfter(moment(moment().format('MM/YYYY'), 'MM/YYYY'))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n ThisMonth() {\r\n const month = new Date().getMonth() + 1;\r\n\r\n if (month < 10) {\r\n return '0' + month;\r\n } else {\r\n return month;\r\n }\r\n }\r\n\r\n\r\n TabChanged(tab: any) {\r\n\r\n // set tabindex to current tab for change detection\r\n this.TabIndex = tab.index;\r\n\r\n // tab actions\r\n switch (tab.index) {\r\n\r\n // credit cards tab\r\n case 0:\r\n this.RefreshCards();\r\n break;\r\n\r\n // add credit card tab\r\n case 1:\r\n this.refreshPreFillData();\r\n break;\r\n }\r\n\r\n }\r\n\r\n preFillBillingInfo(data: MemberBasicInfoResponse) {\r\n\r\n if (this.DefaultCard.ID == undefined)\r\n this.formSetAsDefaultVisible = false;\r\n else\r\n this.formSetAsDefaultVisible = true;\r\n\r\n }\r\n\r\n refreshPreFillData() {\r\n\r\n // if we have the data skip fetch\r\n if (this.MemberBasicInfo.Firstname != undefined && this.MemberBasicInfo.Firstname != '') {\r\n this.preFillBillingInfo(this.MemberBasicInfo);\r\n return;\r\n }\r\n\r\n\r\n // fetch the data on the server\r\n this.IsBusy = true;\r\n\r\n let request = this.api.MemberBasicInfo()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.MemberBasicInfo = response.Data;\r\n this.preFillBillingInfo(response.Data);\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n this.IsBusy = false;\r\n }\r\n );\r\n\r\n\r\n }\r\n\r\n ProcessDefaultCardArray(newDefaultCardID: number) {\r\n\r\n // reset default card and put in global array\r\n this.DefaultCard.IsDefault = false;\r\n this.Cards.push(this.DefaultCard);\r\n\r\n // find default card\r\n let index = this.Cards.findIndex(x => x.ID == newDefaultCardID);\r\n\r\n // set default card\r\n this.DefaultCard = this.Cards[index];\r\n this.DefaultCard.IsDefault = true;\r\n\r\n // remove default card from list\r\n this.Cards.splice(index, 1);\r\n\r\n }\r\n\r\n\r\n SetAsDefault(id: number) {\r\n\r\n // confirm\r\n Swal.fire({\r\n title: this.SetDefault_Confirm_Title,\r\n text: this.SetDefault_Confirm_Text,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes, save!',\r\n cancelButtonText: 'No, cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // addcard\r\n return this.SetCardAsDefault(id);\r\n }\r\n })\r\n .then(\r\n () => {\r\n\r\n // show confirmation\r\n Swal.fire(\r\n {\r\n title: this.SetDefault_Saved_Title,\r\n text: this.SetDefault_Saved_Text,\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: this.SetDefault_Saved_Timeout\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n\r\n }\r\n\r\n SetCardAsDefault(id: number): Promise {\r\n\r\n this.IsBusy = true;\r\n\r\n return this.api.CreditCardSetDefault(id)\r\n .toPromise()\r\n .then(response => {\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n // ok\r\n this.ProcessDefaultCardArray(id);\r\n\r\n })\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n EditCreditCard(item: CreditCardResponse) {\r\n let data: IEditCreditCardDialogModel = {\r\n CreditCard: item\r\n };\r\n this.dialogService.open(EditCreditCardDialogComponent, {\r\n data,\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n this.RefreshCards();\r\n }\r\n\r\n Delete(id: number) {\r\n\r\n // confirm\r\n Swal.fire({\r\n title: this.Delete_Confirm_Title,\r\n text: this.Delete_Confirm_Text,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes, delete!',\r\n cancelButtonText: 'No, cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // addcard\r\n return this.DeleteCard(id);\r\n }\r\n })\r\n .then(\r\n () => {\r\n\r\n // show confirmation\r\n Swal.fire(\r\n {\r\n title: this.Delete_Deleted_Title,\r\n text: this.Delete_Deleted_Text,\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: this.Delete_Deleted_Timeout\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n\r\n }\r\n\r\n DeleteCard(id: number): Promise {\r\n\r\n this.IsBusy = true;\r\n\r\n return this.api.CreditCardDelete(id)\r\n .toPromise()\r\n .then(response => {\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n // ok\r\n\r\n let index = this.Cards.findIndex(x => x.ID == id);\r\n this.Cards.splice(index, 1);\r\n\r\n })\r\n .catch(\r\n (error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n\r\n }\r\n\r\n getExpDateMonth(month: string): string {\r\n\r\n try {\r\n\r\n // let month = expDate.split('/')[0].trim();\r\n if (month.length == 1)\r\n return '0' + month;\r\n else\r\n return month;\r\n\r\n } catch (e) {\r\n return '0';\r\n }\r\n }\r\n\r\n getExpDateYear(year: string): string {\r\n\r\n try {\r\n\r\n // let year = expDate.split('/')[1].trim();\r\n if (year.length == 2)\r\n return '20' + year;\r\n else\r\n return year;\r\n\r\n } catch (e) {\r\n return '0';\r\n }\r\n }\r\n\r\n getDateCreated(createdDate: Date): any {\r\n if (createdDate == undefined)\r\n return '';\r\n\r\n // let returnDate = createdDate.getDay() + \"/\" + createdDate.getMonth() + \"/\" + createdDate.getFullYear();\r\n let returnDate = moment(createdDate).format('MM/DD/YYYY');\r\n return returnDate;\r\n }\r\n\r\n SubmitNewCreditCard(ccardForm: UntypedFormGroup) {\r\n\r\n\r\n\r\n // check form is valid\r\n if (!this.ccardForm.valid)\r\n return;\r\n\r\n // check card is valid\r\n let ccard = this.ccForm.controls.creditCard;\r\n if (!ccard.valid)\r\n return;\r\n\r\n this.submitted = true;\r\n\r\n\r\n // extract expiration month and year\r\n let expMonth = this.getExpDateMonth(this.ccForm.controls.expMonth.value);\r\n let expYear = this.getExpDateYear(this.ccForm.controls.expYear.value);\r\n\r\n\r\n // get credit card type\r\n let card = CreditCard.cardFromNumber(ccard.value);\r\n\r\n // get other data\r\n let setAsDefault = ccardForm.controls.setAsDefault.value;\r\n\r\n\r\n // put date in request\r\n let newCard = new AddCreditCardRequest();\r\n\r\n newCard.UpdateMemberAddress = this.updateAddress;\r\n\r\n newCard.Address01 = ccardForm.controls.address1.value;\r\n\r\n newCard.City = ccardForm.controls.city.value;\r\n newCard.State = ccardForm.controls.state.value;\r\n newCard.Country = ccardForm.controls.country.value;\r\n newCard.ZipCode = ccardForm.controls.zip.value;\r\n\r\n newCard.CreditCardNumber = this.ccForm.controls.creditCard.value;\r\n newCard.CVV = Number.parseInt(this.ccForm.controls.cvc.value);\r\n newCard.ExpMonth = Number.parseInt(expMonth);\r\n newCard.ExpYear = Number.parseInt(expYear);\r\n\r\n newCard.CardType = CreditCardResponse.GetCreditCardTypeFromString(card.type);\r\n\r\n newCard.SetAsDefault = (setAsDefault == null) ? false : setAsDefault;\r\n newCard.FirstName = this.ccForm.controls.firstName.value;\r\n newCard.LastName = this.ccForm.controls.lastName.value;\r\n\r\n console.log(\"New Request:\", newCard);\r\n\r\n //if( 0==0 ) return;\r\n\r\n // confirm\r\n Swal.fire({\r\n title: this.Add_Confirm_Title,\r\n text: this.Add_Confirm_Text,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes, add!',\r\n cancelButtonText: 'No, cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // addcard\r\n return this.AddCreditCard(newCard);\r\n }\r\n }).then(() => {\r\n\r\n // reset form\r\n\r\n this.ccForm.controls.creditCard.setValue('');\r\n this.ccForm.controls.expMonth.setValue(this.ThisMonth());\r\n this.ccForm.controls.expYear.setValue(new Date().getFullYear());\r\n this.ccForm.controls.cvc.setValue('');\r\n\r\n this.ccForm.controls.firstName.setValue('');\r\n this.ccForm.controls.lastName.setValue('');\r\n\r\n this.ccForm.markAsPristine();\r\n this.ccForm.markAsUntouched();\r\n\r\n this.ccardForm.markAsPristine();\r\n this.ccardForm.markAsUntouched();\r\n\r\n // show confirmation\r\n Swal.fire({\r\n title: this.Add_Added_Title,\r\n text: this.Add_Added_Text,\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: this.Add_Added_Timeout\r\n }).then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n }, (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n }).then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n AddCreditCard(newCard: AddCreditCardRequest): Promise {\r\n\r\n this.IsBusy = true;\r\n\r\n return this.api.CreditCardAdd(newCard).toPromise()\r\n .then(\r\n response => {\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n console.log(\"Add Credit Card Result\", response);\r\n\r\n // switch tabs\r\n this.RefreshCards();\r\n this.TabIndex = 0;\r\n\r\n },\r\n )\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n }\r\n );\r\n\r\n\r\n }\r\n\r\n RefreshCards(): void {\r\n\r\n this.IsBusy = true;\r\n\r\n let request = this.api.CreditCardGetAll()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return;\r\n\r\n this.Cards = response.Data;\r\n\r\n // find default card\r\n let index = this.Cards.findIndex(x => x.IsDefault == true);\r\n\r\n // set default card\r\n this.DefaultCard = this.Cards[index];\r\n\r\n // remove default card from list\r\n this.Cards.splice(index, 1);\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n this.IsBusy = false;\r\n }\r\n );\r\n\r\n\r\n }\r\n\r\n\r\n\r\n\r\n UpdateAddressChange() {\r\n\r\n if (this.updateAddress) {\r\n this.ccardForm.controls.address1.enable();\r\n this.ccardForm.controls.city.enable();\r\n this.ccardForm.controls.state.enable();\r\n this.ccardForm.controls.zip.enable();\r\n this.ccardForm.controls.country.enable();\r\n } else {\r\n this.ccardForm.controls.address1.disable();\r\n this.ccardForm.controls.city.disable();\r\n this.ccardForm.controls.state.disable();\r\n this.ccardForm.controls.zip.disable();\r\n this.ccardForm.controls.country.disable();\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'account-download-software',\r\n templateUrl: './download-software.component.html',\r\n styleUrls: ['./download-software.component.css']\r\n})\r\nexport class DownloadSoftwareComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { GISUsageHistoryItemResponseArray } from '../../../models/ss-api/responses/gis.history.item.response';\r\nimport { GlobalServices } from '../../../services/global.service';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { HttpError } from 'app/models/errors/HttpError';\r\n\r\n@Component({\r\n selector: 'account-gis-credit-usage-history',\r\n templateUrl: './gis-credit-usage-history.component.html',\r\n styleUrls: ['./gis-credit-usage-history.component.scss']\r\n})\r\nexport class GisCreditUsageHistoryComponent implements OnInit {\r\n\r\n // public\r\n GISUSageItems: GISUsageHistoryItemResponseArray = new GISUsageHistoryItemResponseArray();\r\n\r\n IsBusy: boolean = false;\r\n\r\n GISUsageResultRows: number = 25;\r\n UsageFirstResult: number = 0;\r\n UsageLastResult: number = 24;\r\n\r\n constructor(private api: ssApiService, private gb: GlobalServices) { }\r\n\r\n ngOnInit() {\r\n this.RefreshUsageHistory();\r\n }\r\n\r\n RefreshUsageHistory() {\r\n\r\n this.IsBusy = true;\r\n\r\n let request = this.api.GISUsageHistory()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.GISUSageItems = response.Data;\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n\r\n }\r\n\r\n paginateGISUsage(e) {\r\n this.UsageFirstResult = e.page * e.rows;\r\n this.UsageLastResult = this.UsageFirstResult + e.rows;\r\n }\r\n\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { GlobalServices } from 'app/services/global.service';\r\n\r\n@Component({\r\n selector: 'gis-credits-chooser',\r\n templateUrl: './gis-credits-chooser.component.html',\r\n styleUrls: ['./gis-credits-chooser.component.scss']\r\n})\r\nexport class GISCreditsChooserComponent implements OnInit {\r\n @Output() emitOpenGisCredits: EventEmitter = new EventEmitter();\r\n \r\n\tIsBusy: boolean = false;\r\n\r\n\t// Constructor\r\n constructor( private api: ssApiService, private router: Router, public gb: GlobalServices ) { }\r\n\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import { GISUsageHistoryItemResponseArray } from '../../../models/ss-api/responses/gis.history.item.response';\r\nimport { GlobalServices } from '../../../services/global.service';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport {\r\n GISPurchaseItemResponse,\r\n GISPurchaseItemResponseArray,\r\n} from '../../../models/ss-api/responses/gis.purchase.item.response';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { HttpError } from 'app/models/errors/HttpError';\r\n\r\n@Component({\r\n selector: 'account-gis-history',\r\n templateUrl: './gis-history.component.html',\r\n styleUrls: ['./gis-history.component.css']\r\n})\r\nexport class GISHistoryComponent implements OnInit {\r\n\r\n // public\r\n GISPurchaseItems: GISPurchaseItemResponseArray = new GISPurchaseItemResponseArray();\r\n GISUSageItems: GISUsageHistoryItemResponseArray = new GISUsageHistoryItemResponseArray();\r\n\r\n IsBusy: boolean = false;\r\n\r\n GISUsageResultRows: number = 25;\r\n UsageFirstResult: number = 0;\r\n UsageLastResult: number = 24;\r\n\r\n GISBundleResultRows: number = 25;\r\n BundleFirstResult: number = 0;\r\n BundleLastResult: number = 24;\r\n\r\n constructor(private api: ssApiService, private gb: GlobalServices) { }\r\n\r\n ngOnInit() {\r\n this.RefreshPurchaseHistory();\r\n }\r\n\r\n TabChanged(tab: any) {\r\n\r\n switch (tab.index) {\r\n case 0:\r\n this.RefreshPurchaseHistory();\r\n break;\r\n\r\n case 1:\r\n this.RefreshUsageHistory();\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n RefreshPurchaseHistory() {\r\n\r\n this.IsBusy = true;\r\n\r\n let request = this.api.GISPurchaseHistory()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.GISPurchaseItems = response.Data;\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n\r\n }\r\n\r\n RefreshUsageHistory() {\r\n\r\n this.IsBusy = true;\r\n\r\n let request = this.api.GISUsageHistory()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.GISUSageItems = response.Data;\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n\r\n }\r\n\r\n Remaining(item: GISPurchaseItemResponse): string {\r\n\r\n if (item.Remaining == 0)\r\n return '0';\r\n\r\n if (item.Refunded)\r\n return '0 - REFUNDED';\r\n\r\n if (item.Suspended)\r\n return '0 - SUSPENDED';\r\n\r\n if (item.Terminated)\r\n return '0 - EXPIRED -';\r\n\r\n if (item.ExpirationDate < new Date())\r\n return '0 - EXPIRED';\r\n\r\n\r\n return item.Remaining.toString();\r\n\r\n }\r\n\r\n paginateGISBundle(e) {\r\n this.BundleFirstResult = e.page * e.rows;\r\n this.BundleLastResult = this.BundleFirstResult + e.rows;\r\n }\r\n\r\n paginateGISUsage(e) {\r\n this.UsageFirstResult = e.page * e.rows;\r\n this.UsageLastResult = this.UsageFirstResult + e.rows;\r\n }\r\n\r\n}\r\n","import { GlobalServices } from '../../../services/global.service';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport {\r\n GISPurchaseItemResponse,\r\n GISPurchaseItemResponseArray,\r\n} from '../../../models/ss-api/responses/gis.purchase.item.response';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { HttpError } from 'app/models/errors/HttpError';\r\n\r\n@Component({\r\n selector: 'account-gis-purchases-history',\r\n templateUrl: './gis-purchases-history.component.html',\r\n styleUrls: ['./gis-purchases-history.component.scss']\r\n})\r\nexport class GisPurchasesHistoryComponent implements OnInit {\r\n\r\n // public\r\n GISPurchaseItems: GISPurchaseItemResponseArray = new GISPurchaseItemResponseArray();\r\n\r\n IsBusy: boolean = false;\r\n\r\n GISBundleResultRows: number = 25;\r\n BundleFirstResult: number = 0;\r\n BundleLastResult: number = 24;\r\n\r\n constructor(private api: ssApiService, private gb: GlobalServices) { }\r\n\r\n ngOnInit() {\r\n this.RefreshPurchaseHistory();\r\n }\r\n\r\n RefreshPurchaseHistory() {\r\n\r\n this.IsBusy = true;\r\n\r\n let request = this.api.GISPurchaseHistory()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.GISPurchaseItems = response.Data;\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n\r\n }\r\n\r\n Remaining(item: GISPurchaseItemResponse): string {\r\n\r\n if (item.Remaining == 0)\r\n return '0';\r\n\r\n if (item.Refunded)\r\n return '0 - REFUNDED';\r\n\r\n if (item.Suspended)\r\n return '0 - SUSPENDED';\r\n\r\n if (item.Terminated)\r\n return '0 - EXPIRED -';\r\n\r\n if (item.ExpirationDate < new Date())\r\n return '0 - EXPIRED';\r\n\r\n\r\n return item.Remaining.toString();\r\n\r\n }\r\n\r\n paginateGISBundle(e) {\r\n this.BundleFirstResult = e.page * e.rows;\r\n this.BundleLastResult = this.BundleFirstResult + e.rows;\r\n }\r\n}\r\n","import { AddCreditCardRequest } from '../../../models/ss-api/requests/add.credit.card.request';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, UntypedFormControl } from '@angular/forms';\r\nimport { CreditCardResponse, CreditCardTypes } from '../../../models/ss-api/responses/credit.card.response';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { CreditCardResponseArray } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { HttpError } from 'app/models/errors/HttpError';\r\nimport { CreditCardValidators, CreditCard } from 'angular-cc-library';\r\nimport { MemberBasicInfoResponse } from 'app/models/ss-api/responses/member.basic.info.response';\r\nimport Swal from 'sweetalert2';\r\nimport * as moment from 'moment';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { EditCreditCardDialogComponent, IEditCreditCardDialogModel } from 'app/dialogs/edit-credit-card/edit-credit-card-dialog.component';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { MemberProfile } from 'app/models/domain/member.profile';\r\n\r\nimport { CreditCardHelper } from '../../../helpers/creditcard';\r\nimport { CountryList, CountryListItem } from '../../../helpers/country.list';\r\nimport { Router } from '@angular/router';\r\n\r\n\r\nfunction CustomCreditCardValidator(c: UntypedFormControl) {\r\n \r\n let cardType = CreditCardHelper.GetCardTypes( c.value );\r\n\r\n if( cardType == CreditCardTypes.Unknown || cardType == null ) {\r\n return {\r\n CustomCreditCardValidator: {\r\n valid: false\r\n }\r\n }\r\n } else {\r\n return null;\r\n }\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'manage-credit-cards',\r\n templateUrl: './manage-credit-cards.component.html',\r\n styleUrls: ['./manage-credit-cards.component.scss'],\r\n providers: [DialogService]\r\n})\r\nexport class ManageCreditCardsComponent implements OnInit {\r\n\r\n // dialog confirm add creditcard\r\n Add_Confirm_Title: string = 'Add New Credit Card?';\r\n Add_Confirm_Text: string = 'You are about to add a new Credit Card.';\r\n\r\n // dialog added info\r\n Add_Added_Title: string = 'Saved!';\r\n Add_Added_Text: string = 'New Credit Card Saved.';\r\n Add_Added_Timeout: number = 1500;\r\n\r\n // dialog confirm delete creditcard\r\n Delete_Confirm_Title: string = 'Delete Credit Card?';\r\n Delete_Confirm_Text: string = 'You are about to delete a Credit Card.';\r\n\r\n // dialog deleted info\r\n Delete_Deleted_Title: string = 'Deleted!';\r\n Delete_Deleted_Text: string = 'Credit Card Deleted.';\r\n Delete_Deleted_Timeout: number = 1500;\r\n\r\n // dialog confirm set default creditcard\r\n SetDefault_Confirm_Title: string = 'Change default Credit Card?';\r\n SetDefault_Confirm_Text: string = 'You are about to change your default Credit Card.';\r\n\r\n // dialog default saved info\r\n SetDefault_Saved_Title: string = 'Saved!';\r\n SetDefault_Saved_Text: string = 'New default Credit Card saved.';\r\n SetDefault_Saved_Timeout: number = 1500;\r\n\r\n TabIndex: number = 1;\r\n submitted: boolean = false;\r\n ccardForm: UntypedFormGroup;\r\n ccForm: UntypedFormGroup;\r\n formSetAsDefaultVisible: boolean = true;\r\n showEditCreditCardModal: boolean;\r\n\r\n\tpublic updateAddress : boolean = false;\r\n\r\n public IsBusy: boolean = false;\r\n\r\n\tmemberProfile : MemberProfile;\r\n\r\n public MemberBasicInfo: MemberBasicInfoResponse = new MemberBasicInfoResponse();\r\n public Cards: CreditCardResponseArray = new CreditCardResponseArray();\r\n public DefaultCard: CreditCardResponse = new CreditCardResponse();\r\n\r\n\tcountryList : CountryListItem[] = CountryList.Countries();\r\n\r\n constructor(\r\n private router: Router,\r\n private api: ssApiService,\r\n private _fb: UntypedFormBuilder,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tpublic gb : GlobalServices\r\n\t\t) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n window.scrollTo(0, 0);\r\n //Check to see if we're defaulting to adding a card\r\n if(this.router.url == \"/account/add-credit-card\"){\r\n this.TabIndex = 1;\r\n }\r\n else{\r\n this.TabIndex = 0;\r\n }\r\n \r\n this.RefreshCards();\r\n\r\n this.ccForm = this._fb.group({\r\n creditCard: new UntypedFormControl('', [CreditCardValidators.validateCCNumber, CustomCreditCardValidator]),\r\n expMonth: [this.ThisMonth(), [Validators.required]],\r\n expYear: [new Date().getFullYear(), [Validators.required]],\r\n cvc: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(4)]],\r\n firstName: [],\r\n lastName: []\r\n });\r\n\r\n this.ccardForm = this._fb.group({\r\n creditCard: this.ccForm,\r\n\t\t\t\r\n\t\t\taddress1 : new UntypedFormControl(\"\", [Validators.required]),\r\n\t\t\tcity : new UntypedFormControl( \"\", [Validators.required]),\r\n\t\t\tstate : new UntypedFormControl( \"\", [Validators.required]),\r\n\t\t\tzip : new UntypedFormControl( \"\", [Validators.required, Validators.minLength(1), Validators.maxLength(10) ]),\r\n\t\t\tcountry : new UntypedFormControl( \"\", [Validators.required, Validators.minLength(1)]),\r\n\t\t\t\r\n\t\t\tsetAsDefault: new UntypedFormControl( true )\r\n });\r\n\r\n\r\n\t\tthis.GetMemberProfile();\r\n\r\n\r\n }\r\n\r\n\r\n\t\r\n\r\n\tGetMemberProfile() {\r\n\t\tthis.IsBusy = true;\r\n\t\t\r\n\t\t\r\n\r\n let disposable = this.api.MemberProfile().subscribe(result => {\r\n\r\n disposable.unsubscribe();\r\n\t\t\tconsole.log('MemberProfile Result -', result);\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tthis.memberProfile = result.Data;\r\n\r\n\t\t\tthis.UpdateGBmemberInfo();\r\n\r\n\t\t\t\r\n }, error => {\r\n\t\t\tdisposable.unsubscribe();\r\n\t\t\tthis.IsBusy = false;\r\n\t\t\tconsole.log(\"ERROR\", error);\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tUpdateGBmemberInfo() {\r\n\t\tthis.IsBusy = true;\r\n\r\n\t\tlet disposable = this.gb.onMemberProfileUpdated.subscribe( response => {\r\n\t\t\tdisposable.unsubscribe();\r\n\t\t\tthis.IsBusy = false;\r\n\r\n\t\t\tconsole.log(\"I got a member profile\", response);\r\n\r\n\t\t\tthis.UpdateFormWithMemberData();\r\n\t\t\t\r\n\t\t});\r\n\r\n\t\tthis.gb.CheckMemberInfo();\r\n\r\n\t}\r\n\r\n\tfirstTimeSetup : boolean = true;\r\n\r\n\tUpdateFormWithMemberData() {\r\n\r\n\t\tlet newCountry = CountryList.ValidCountry( this.memberProfile.Country );\r\n\t\t\r\n\t\tthis.ccardForm.patchValue({\r\n\t\t\tcompanyName : this.memberProfile.Companyname,\r\n\t\t\temail : this.memberProfile.Email,\r\n\r\n\t\t\taddress1 : this.memberProfile.Address1,\r\n\r\n\t\t\tcity : this.memberProfile.City,\r\n\t\t\tstate : this.memberProfile.State,\r\n\t\t\tzip : this.memberProfile.Postcode,\r\n\t\t\tcountry : CountryList.ValidCountry( this.memberProfile.Country ),\r\n\r\n\t\t\tphone : this.gb.FormattedPhone(this.memberProfile.Phonenumber),\r\n\t\t\tphone2 : this.gb.FormattedPhone(this.memberProfile.Phonenumber2),\r\n\t\t\tfax : this.memberProfile.FaxNumber,\r\n\r\n\t\t\tcurrentPassword : '',\r\n\t\t\tnewPassword : ''\r\n\r\n\t\t});\r\n\r\n\t\tthis.ccardForm.updateValueAndValidity();\r\n\r\n\t\tif( !this.firstTimeSetup ) return;\r\n\r\n\r\n\t\t\r\n\r\n\r\n\t\tthis.ccardForm.controls.country.valueChanges.subscribe( v => {\r\n\r\n\t\t\tconsole.log(v);\r\n\r\n\t\t\tif( v == \"US\" ) {\r\n\t\t\t\tthis.ccardForm.controls.zip.setValidators([Validators.required, Validators.minLength(2), Validators.maxLength(10) ]);\r\n\t\t\t} else {\r\n\t\t\t\tthis.ccardForm.controls.zip.setValidators([Validators.required, Validators.minLength(2), Validators.maxLength(10) ]);\r\n\t\t\t}\r\n\r\n\t\t\tthis.ccardForm.controls.zip.updateValueAndValidity();\r\n\t\t} );\r\n\r\n\r\n\t\tthis.firstTimeSetup = false;\r\n\r\n\t}\r\n\r\n\tIsUS() : boolean {\r\n\t\treturn this.ccardForm.controls.country.value == 'US' ? true : false;\r\n\t}\r\n\r\n\r\n isValidExpiration() {\r\n let ccExpMonth = this.ccForm.get('expMonth').value;\r\n let ccExpYear = this.ccForm.get('expYear').value;\r\n\r\n if (moment(ccExpMonth + '/' + ccExpYear, 'MM/YYYY').isSameOrAfter(moment(moment().format('MM/YYYY'), 'MM/YYYY'))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n ThisMonth() {\r\n const month = new Date().getMonth() + 1;\r\n\r\n if (month < 10) {\r\n return '0' + month;\r\n } else {\r\n return month;\r\n }\r\n }\r\n\r\n ProcessDefaultCardArray(newDefaultCardID: number) {\r\n\r\n // reset default card and put in global array\r\n this.DefaultCard.IsDefault = false;\r\n this.Cards.push(this.DefaultCard);\r\n\r\n // find default card\r\n let index = this.Cards.findIndex(x => x.ID == newDefaultCardID);\r\n\r\n // set default card\r\n this.DefaultCard = this.Cards[index];\r\n this.DefaultCard.IsDefault = true;\r\n\r\n // remove default card from list\r\n this.Cards.splice(index, 1);\r\n\r\n }\r\n\r\n\r\n SetAsDefault(id: number) {\r\n\r\n // confirm\r\n Swal.fire({\r\n title: this.SetDefault_Confirm_Title,\r\n text: this.SetDefault_Confirm_Text,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes, save!',\r\n cancelButtonText: 'No, cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // addcard\r\n return this.SetCardAsDefault(id);\r\n }\r\n })\r\n .then(\r\n (response: any) => {\r\n\r\n if (response.isDismissed) {\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n } else {\r\n // show confirmation\r\n Swal.fire({\r\n title: this.SetDefault_Saved_Title,\r\n text: this.SetDefault_Saved_Text,\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: this.SetDefault_Saved_Timeout\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n\r\n }\r\n\r\n SetCardAsDefault(id: number): Promise {\r\n\r\n this.IsBusy = true;\r\n\r\n return this.api.CreditCardSetDefault(id)\r\n .toPromise()\r\n .then(response => {\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n // ok\r\n this.ProcessDefaultCardArray(id);\r\n\r\n })\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n EditCreditCard(item: CreditCardResponse) {\r\n let data: IEditCreditCardDialogModel = {\r\n CreditCard: item\r\n };\r\n const ref = this.dialogService.open(EditCreditCardDialogComponent, {\r\n data,\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(({isUpdated, setAsDefault}) => {\r\n if (setAsDefault) {\r\n this.SetCardAsDefault(item.ID)\r\n }\r\n if (isUpdated) {\r\n this.RefreshCards();\r\n }\r\n });\r\n this.RefreshCards();\r\n }\r\n\r\n Delete(id: number) {\r\n\r\n // confirm\r\n Swal.fire({\r\n title: this.Delete_Confirm_Title,\r\n text: this.Delete_Confirm_Text,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes, delete!',\r\n cancelButtonText: 'No, cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // addcard\r\n return this.DeleteCard(id);\r\n }\r\n })\r\n .then(\r\n (res) => {\r\n // show confirmation\r\n if (res.isConfirmed) {\r\n Swal.fire(\r\n {\r\n title: this.Delete_Deleted_Title,\r\n text: this.Delete_Deleted_Text,\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: this.Delete_Deleted_Timeout\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error; \r\n } else {\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n\r\n }\r\n\r\n DeleteCard(id: number): Promise {\r\n\r\n this.IsBusy = true;\r\n\r\n return this.api.CreditCardDelete(id)\r\n .toPromise()\r\n .then(response => {\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n // ok\r\n\r\n let index = this.Cards.findIndex(x => x.ID == id);\r\n this.Cards.splice(index, 1);\r\n\r\n })\r\n .catch(\r\n (error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n\r\n }\r\n\r\n getExpDateMonth(month: string): string {\r\n\r\n try {\r\n\r\n // let month = expDate.split('/')[0].trim();\r\n if (month.length == 1)\r\n return '0' + month;\r\n else\r\n return month;\r\n\r\n } catch (e) {\r\n return '0';\r\n }\r\n }\r\n\r\n getExpDateYear(year: string): string {\r\n\r\n try {\r\n\r\n // let year = expDate.split('/')[1].trim();\r\n if (year.length == 2)\r\n return '20' + year;\r\n else\r\n return year;\r\n\r\n } catch (e) {\r\n return '0';\r\n }\r\n }\r\n\r\n getDateCreated(createdDate: Date): any {\r\n if (createdDate == undefined)\r\n return '';\r\n\r\n // let returnDate = createdDate.getDay() + \"/\" + createdDate.getMonth() + \"/\" + createdDate.getFullYear();\r\n let returnDate = moment(createdDate).format('MM/DD/YYYY');\r\n return returnDate;\r\n }\r\n\r\n RefreshCards(): void {\r\n\r\n this.IsBusy = true;\r\n\r\n let request = this.api.CreditCardGetAll()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return;\r\n\r\n this.Cards = response.Data;\r\n\r\n // find default card\r\n let index = this.Cards.findIndex(x => x.IsDefault == true);\r\n\r\n // set default card\r\n this.DefaultCard = this.Cards[index];\r\n console.log(\"Default Card\", this.DefaultCard);\r\n\r\n // remove default card from list\r\n this.Cards.splice(index, 1);\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n this.IsBusy = false;\r\n }\r\n );\r\n\r\n\r\n\t}\r\n}\r\n","import { UntypedFormBuilder, UntypedFormGroup, Validators, UntypedFormControl } from '@angular/forms';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'manage-history',\r\n templateUrl: './manage-history.component.html',\r\n styleUrls: ['./manage-history.component.scss'],\r\n providers: [DialogService]\r\n})\r\nexport class ManageHistoryComponent implements OnInit {\r\n activeTab: 'billing' | 'gis_purchase' | 'gis_credit_usage' = 'billing';\r\n\r\n public IsBusy: boolean = false;\r\n\r\n constructor(\r\n private router: Router,\r\n private _Activatedroute: ActivatedRoute,\r\n private _fb: UntypedFormBuilder,\r\n\t\tpublic gb : GlobalServices\r\n\t\t) {\r\n }\r\n\r\n ngOnInit() {\r\n window.scrollTo(0, 0);\r\n this._Activatedroute.queryParams.subscribe((param) => {\r\n this.activeTab = param.activeTab || 'billing';\r\n });\r\n }\r\n\r\n activeTabChange(viewType) {\r\n this.activeTab = viewType;\r\n }\r\n}\r\n","import { HoldRequestDialogcomponent, HoldRequestDialogResultTypes } from '../../../dialogs/hold-request/hold-request-dialog.component';\r\nimport { MemberTypes } from '../../../models/ss-api/responses/login.response';\r\nimport { GlobalServices } from '../../../services/global.service';\r\nimport { BillingRecurringTypes, DashboardLicenseResponse, LicenseStatus, } from '../../../models/ss-api/responses/dashboard.license.response';\r\nimport { DashboardProductsResponse, IDashboardProductsResponse, } from '../../../models/ss-api/responses/dashboard.products.response';\r\nimport { HttpError } from '../../../models/errors/HttpError';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { AddProductDialogComponent, IAddProductDialogModel } from 'app/dialogs/add-product/add-product-dialog.component';\r\nimport { AddGISDialogComponent } from 'app/dialogs/add-gis/add-gis-dialog.component';\r\nimport { UpgradeProductDialogComponent } from 'app/dialogs/upgrade-product/upgrade-product-dialog.component';\r\nimport { CDKeyReassignDialogComponent } from 'app/dialogs/cdkey-reassign/cdkey-reassign-dialog.component';\r\nimport { CancellationRequestDialogComponent } from 'app/dialogs/cancellation-request/cancellation-request-dialog.component';\r\nimport { YARDAddDialogComponent } from 'app/dialogs/yard-add/yard-add-dialog.component';\r\nimport Swal from 'sweetalert2';\r\n\r\nimport { SelectItem } from 'primeng/api';\r\n\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { GISBundleResponseArray } from 'app/models/ss-api/responses/gis.bundle.response';\r\nimport { PublicOrderProductsResponseArray } from 'app/models/ss-api/responses/public.order.products.response';\r\nimport { xToastr, ToastrTypes } from 'app/shared/Toastr';\r\nimport { UpgradableProductsResponseArray } from '../../../models/ss-api/responses/upgradable.products.response';\r\nimport { IBaseResponse } from '../../../models/comm-http/responses/BaseResponse';\r\nimport { YARDCancellationRequestDialogComponent } from 'app/dialogs/yard-cancellation-request/yard-cancellation-request-dialog.component';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { PayInvoiceDialogComponent } from '../../../dialogs/pay-invoice/pay-invoice-dialog.component';\r\nimport * as moment from 'moment';\r\nimport { ReactivateLicenseDialogComponent } from '../../../dialogs/reactivate-license/reactivate-license-dialog.component';\r\nimport { CheckHoldEligibilityResponse } from '../../../models/ss-api/responses/check.hold.eligibility.response';\r\nimport { CreditCardResponse } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { MemberProfile } from 'app/models/domain/member.profile';\r\n\r\n\r\n\r\nclass MemberLicenseItem {\r\n Member: DashboardProductsResponse;\r\n License: DashboardLicenseResponse;\r\n}\r\n\r\n@Component({\r\n selector: 'account-memberships-new',\r\n templateUrl: './memberships-new.component.html',\r\n styleUrls: ['./memberships-new.component.scss'],\r\n providers: [DialogService]\r\n})\r\n\r\nexport class MembershipsNewComponent implements OnInit {\r\n @Output() emitNoLicence: EventEmitter = new EventEmitter();\r\n @Output() emitRefreshProducts: EventEmitter = new EventEmitter();\r\n @Output() emitOnlyPastDueProduct: EventEmitter = new EventEmitter();\r\n\r\n // public\r\n @Input() Products: Array = new Array();\r\n @Input() ProductsExpanded: MemberLicenseItem[] = [];\r\n availableLicences: MemberLicenseItem[] = [];\r\n registeredLicences: MemberLicenseItem[] = [];\r\n cancelledLicences: MemberLicenseItem[] = [];\r\n IsMember: boolean = true;\r\n onlyPastDueProduct: MemberLicenseItem;\r\n\r\n @Input() IsBusy: boolean = false;\r\n\r\n @Input() IsTOS: boolean = false;\r\n @Input() IsDispute: boolean = false;\r\n @Input() HasCancelled: boolean = false;\r\n @Input() memberProfile: MemberProfile;\r\n @Input() isDesigner: boolean;\r\n\r\n // gis\r\n CreditCards: SelectItem[];\r\n\r\n // shared gis\r\n GISSharedBundle: GISBundleResponseArray;\r\n\r\n // individual gis\r\n GISIndividualBundle: GISBundleResponseArray;\r\n\r\n // products\r\n PublicOrderProducts: PublicOrderProductsResponseArray;\r\n\r\n // TEST VARIABLES\r\n hasYARD: boolean = false;\r\n\r\n @Input() HasPastDuePayments: boolean = false;\r\n\r\n showWelcomeBack: boolean = false;\r\n\r\n @Input() hasLicenseOnHold: boolean = false;\r\n\r\n @Input() hasLicenseScheduledToHold: boolean = false;\r\n\r\n @Input() heldLicense: DashboardLicenseResponse = null;\r\n\r\n HasDialog: boolean = false;\r\n\r\n licenseViewType: 'Available' | 'Registered' | 'Cancelled' = 'Available';\r\n licenseViewMode: 'List' | 'Grid' = 'List';\r\n scrollContainer: any;\r\n @ViewChild('tableFrame', { static: false }) tableFrame: ElementRef;\r\n\r\n showMore: boolean[][] = [];\r\n isMobile: boolean = false;\r\n\r\n @HostListener('window:resize', ['$event']) onResize(e) {\r\n if (e.currentTarget.innerWidth <= 430) {\r\n this.isMobile = true;\r\n } else {\r\n this.isMobile = false;\r\n }\r\n }\r\n\r\n constructor(private router: Router, private route: ActivatedRoute, private dialogService: DialogService, private api: ssApiService, private gb: GlobalServices) {\r\n if (window.innerWidth <= 430) {\r\n this.isMobile = true;\r\n } else {\r\n this.isMobile = false;\r\n }\r\n\r\n console.log(\"IsDevMode\", gb.IsDevPublic());\r\n console.log(\"IsLocalMode\", gb.IsLocal());\r\n }\r\n\r\n async ngOnInit() {\r\n this.showMore[0] = [];\r\n this.showMore[1] = [];\r\n this.showMore[2] = [];\r\n // this.route.queryParams.subscribe(response => {\r\n // \tconsole.log(\"PARAMS: \", response)\r\n // \tif(response.p && response.b) {\r\n // \t\tthis.showAddDialog();\r\n // \t}\r\n // });\r\n\r\n this.CheckIsMember();\r\n\r\n this.CheckForWelcomeBack();\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.ProductsExpanded && this.ProductsExpanded.length) {\r\n console.log(\"ProductsExpanded : \", this.ProductsExpanded);\r\n this.availableLicences = this.ProductsExpanded.filter(p => !p.License.IsRegistered && !this.IsCancelled(p) && p.License.Status != 99 && this.IsMember && !p.License.IsOnHold && !p.License.IsScheduledHold);\r\n this.registeredLicences = this.ProductsExpanded.filter(p => p.License.IsRegistered && !this.IsCancelled(p) && p.License.Status != 99 && !p.License.IsOnHold && !p.License.IsScheduledHold);\r\n this.cancelledLicences = this.ProductsExpanded.filter(p => this.IsCancelled(p) || p.License.IsScheduledHold || p.License.IsOnHold);\r\n console.log(\"availableLicences : \", this.availableLicences);\r\n console.log(\"registeredLicences : \", this.registeredLicences);\r\n console.log(\"cancelledLicences : \", this.cancelledLicences);\r\n if (!this.availableLicences.length && !this.registeredLicences.length && !this.cancelledLicences.length) {\r\n this.emitNoLicence.emit(true);\r\n }\r\n const pastDueProducts = this.ProductsExpanded.filter(p => p.License.Status != 99 && p.License.IsGrace);\r\n if (pastDueProducts.length === 1) {\r\n this.onlyPastDueProduct = pastDueProducts[0];\r\n }\r\n this.emitOnlyPastDueProduct.emit(this.onlyPastDueProduct);\r\n }\r\n }\r\n\r\n CheckForWelcomeBack() {\r\n\r\n let IsWelcomeBack: string = localStorage.getItem('WelcomeBack');\r\n\r\n if (IsWelcomeBack == '1') {\r\n this.showWelcomeBack = true;\r\n localStorage.removeItem('WelcomeBack');\r\n }\r\n }\r\n\r\n WelcomeBackOK() {\r\n this.showWelcomeBack = false;\r\n }\r\n\r\n\r\n CheckIsMember() {\r\n if (this.gb.MemberType == MemberTypes.Member)\r\n this.IsMember = true;\r\n else\r\n this.IsMember = false;\r\n }\r\n\r\n CanPurchaseGIS(member) {\r\n if (this.gb.MemberID != member.MemberID && !member.IsMember)\r\n return false;\r\n else\r\n return true;\r\n }\r\n\r\n\r\n Upgradable(license: DashboardLicenseResponse): boolean {\r\n\r\n if ((license.ProductName.slice(0, 5).toLowerCase() == 'vip3d' || license.ProductName == 'Vendor Package') && license.Recurring == BillingRecurringTypes.Yearly)\r\n // nothing to upgrade to\r\n return false;\r\n else\r\n return true;\r\n\r\n }\r\n\r\n ShowGetYard(item: MemberLicenseItem): boolean {\r\n\r\n if (!item.License.YardAvailable)\r\n return false;\r\n\r\n if (!item.License.YardVisiblePublic && (!this.gb.IsDevPublic() && !this.gb.IsLocal()))\r\n return false;\r\n\r\n if (item.License.HasYard)\r\n return false;\r\n\r\n if (!this.IsMember)\r\n return false;\r\n\r\n if (item.License.IsGrace || item.License.IsOnHold || item.License.IsScheduledHold)\r\n return false;\r\n\r\n if (this.IsCancelled(item))\r\n return false;\r\n\r\n\r\n // ok\r\n return true;\r\n\r\n }\r\n\r\n GetProductAssignedName(item: DashboardLicenseResponse, firstName: string, LastName: string): string {\r\n\r\n let nameMod: string = '';\r\n\r\n if (item.Status == LicenseStatus.Cancelled || item.Status == LicenseStatus.CancelledOpen)\r\n nameMod = '(Cancelled)';\r\n\r\n if (item.Status == LicenseStatus.Terminated)\r\n nameMod = '(Cancelled)';\r\n\r\n if (item.Status == LicenseStatus.Disabled)\r\n nameMod = '(Disabled)';\r\n\r\n if (!item.IsRegistered)\r\n nameMod = '(Not Assigned)';\r\n\r\n if (item.IsGrace)\r\n nameMod = '(PAST DUE)';\r\n\r\n // const colorClass = item.IsGrace ? ' class=\"red\"' : '';\r\n const colorClass = ' class=\"red\"';\r\n return firstName + ' ' + LastName + ' ' + nameMod + '';\r\n\r\n }\r\n\r\n BillingRecurringToString(type: BillingRecurringTypes): string {\r\n\r\n switch (type) {\r\n case BillingRecurringTypes.Yearly:\r\n return 'Yearly';\r\n\r\n case BillingRecurringTypes.Monthly:\r\n return 'Monthly';\r\n\r\n default:\r\n return 'Unknown';\r\n }\r\n\r\n }\r\n\r\n ProductNameToClassName(product: string): string {\r\n\r\n product = product.toLowerCase();\r\n\r\n switch (product) {\r\n case 'vip3d':\r\n return 'vip3d';\r\n\r\n case 'vendor package':\r\n return 'vip3d';\r\n\r\n case 'vizterra':\r\n return 'vizterra';\r\n\r\n case 'pool studio':\r\n return 'poolstudio';\r\n\r\n default:\r\n return product;\r\n }\r\n\r\n }\r\n\r\n ProductNameToImageName(product: string): string {\r\n const pName = this.ProductNameToClassName(product);\r\n return `/assets/images/logos/logo-${pName}.png`\r\n }\r\n\r\n PopulateProducts(products: IDashboardProductsResponse) {\r\n\r\n // reset\r\n this.Products = new Array();\r\n\r\n // add the member or designer (root)\r\n this.Products.push(products);\r\n\r\n this.IsTOS = products.IsTOS;\r\n this.IsDispute = products.IsDispute;\r\n\r\n // in case we have designers\r\n if (products.Desginers != undefined)\r\n products.Desginers.forEach(x => {\r\n if (this.IsTOS) {\r\n x.IsTOS = true;\r\n }\r\n if (this.IsDispute) {\r\n x.IsDispute = true;\r\n }\r\n this.Products.push(x);\r\n });\r\n\r\n this.ProductsExpanded = [];\r\n this.Products.forEach(item => {\r\n if (item.Licenses) {\r\n item.Licenses.forEach(license => {\r\n let newItem = new MemberLicenseItem;\r\n newItem.Member = item;\r\n newItem.License = license;\r\n\r\n this.ProductsExpanded.push(newItem);\r\n });\r\n }\r\n\r\n\r\n });\r\n\r\n if (this.Products[0]) {\r\n this.Products.forEach((product) => {\r\n product.Licenses.forEach(function (license) {\r\n if ((license.Status == LicenseStatus.Cancelled || license.Status == LicenseStatus.Terminated || license.Status == LicenseStatus.CancelledOpen) && !license.IsGrace) {\r\n this.HasCancelled = true;\r\n }\r\n }, this);\r\n });\r\n }\r\n\r\n this.ProductsExpanded = this.SortByStatus(this.ProductsExpanded);\r\n\r\n this.UpdateHasPastDuePayments(this.ProductsExpanded);\r\n\r\n let productID = localStorage.getItem('cartProductID');\r\n let billingCycle = localStorage.getItem('cartBillingCycle');\r\n\r\n if (productID && billingCycle) {\r\n this.showAddDialog();\r\n }\r\n\r\n }\r\n\r\n RefreshProducts() {\r\n this.emitRefreshProducts.emit();\r\n\r\n }\r\n\r\n toggleMode(event) {\r\n let target = event.target;\r\n $(target).parents('div.Box').toggleClass('hasOverlay');\r\n }\r\n\r\n\r\n private RefreshPublicOrderProducts(): Promise {\r\n\r\n if (this.PublicOrderProducts != undefined && this.PublicOrderProducts.length > 0)\r\n // we already have propducts\r\n return new Promise((resolve, reject) => { resolve(this.PublicOrderProducts); });\r\n\r\n\r\n // get all products\r\n return this.api.ProductsOrderProducts()\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return; // error\r\n\r\n // save\r\n this.PublicOrderProducts = response.Data;\r\n\r\n return response;\r\n });\r\n }\r\n\r\n\r\n showAddDialog() {\r\n\r\n this.IsBusy = true;\r\n\r\n // 1st get credit cards\r\n this.GetCreditCards()\r\n .then((response) => {\r\n\r\n // 2d refresh products\r\n this.RefreshPublicOrderProducts()\r\n .then((response) => {\r\n this.GetCancelledLicense().then((license) => {\r\n if (this.HasCancelled && license) {\r\n const ref = this.dialogService.open(ReactivateLicenseDialogComponent, {\r\n data: {\r\n title: '',\r\n License: license,\r\n CreditCards: this.CreditCards,\r\n CameFromAdd: true,\r\n Products: this.PublicOrderProducts,\r\n memberProfile: this.memberProfile\r\n },\r\n showHeader: false,\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n } else {\r\n // show add dialog\r\n\r\n let data: IAddProductDialogModel = {\r\n title: '',\r\n subTitle: '',\r\n CreditCards: this.CreditCards,\r\n Products: this.PublicOrderProducts,\r\n SelectedCreditCard: 0,\r\n memberProfile: this.memberProfile\r\n }\r\n const ref = this.dialogService.open(AddProductDialogComponent, {\r\n data,\r\n showHeader: false,\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n }\r\n\r\n this.IsBusy = false;\r\n }).catch(error => {\r\n });\r\n })\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n })\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n private GetCancelledLicense(): Promise {\r\n return new Promise((resolve, reject) => {\r\n let cancelledLicense;\r\n for (let k = 0; k < this.Products.length; k++) {\r\n if (this.Products[k] && this.Products[k].Licenses) {\r\n for (let i = 0; i < this.Products[k].Licenses.length; i++) {\r\n let license = this.Products[k].Licenses[i];\r\n if ((license.Status == LicenseStatus.Cancelled || license.Status == LicenseStatus.Terminated || license.Status == LicenseStatus.CancelledOpen) && !license.IsGrace && moment(license.NextBillingDate).isBefore(moment())) {\r\n cancelledLicense = license;\r\n }\r\n }\r\n setTimeout(() => {\r\n resolve(cancelledLicense);\r\n }, 250);\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n reject();\r\n }, 500);\r\n });\r\n }\r\n\r\n private GetGISSharedBundle(): Promise {\r\n\r\n return this.api.GISSharedBundle()\r\n .toPromise()\r\n .then(response => {\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.GISSharedBundle = response.Data;\r\n\r\n return response;\r\n });\r\n }\r\n\r\n private GetGISIndividualBundle(): Promise {\r\n\r\n return this.api.GISIndividualBundle()\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.GISIndividualBundle = response.Data;\r\n\r\n return response;\r\n });\r\n }\r\n\r\n private GetCreditCards(): Promise {\r\n\r\n if (this.CreditCards != undefined && this.CreditCards.length > 0)\r\n // we already have credit cards\r\n return new Promise((resolve, reject) => { resolve(this.CreditCards); });\r\n\r\n\r\n // get all credit cards\r\n return this.api.CreditCardGetAll()\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return; // error\r\n\r\n // populate credit cards\r\n this.CreditCards = [];\r\n\r\n response.Data.forEach(card => {\r\n if (this.isExpired(card) && !card.IsDefault) {\r\n //skip this card\r\n }\r\n else {\r\n this.CreditCards.push(\r\n {\r\n label: 'Name: ' + card.FirstName + ' ' + card.LastName +\r\n ' - Last four: ' + card.LastFour +\r\n ' - exp. Date: ' + card.ExpMonth + '/' + card.ExpYear,\r\n value: card.ID\r\n }\r\n );\r\n }\r\n });\r\n\r\n return response;\r\n });\r\n }\r\n\r\n isExpired(Item: CreditCardResponse): boolean {\r\n let currentYear = new Date().getFullYear();\r\n let currentMonth = new Date().getMonth();\r\n if (Item.ExpYear + 2000 < currentYear)\r\n return true;\r\n else if (Item.ExpYear + 2000 == currentYear && Item.ExpMonth < currentMonth)\r\n return true\r\n\r\n return false;\r\n }\r\n\r\n showAddGISDialog(cdKey: string) {\r\n this.IsBusy = true;\r\n\r\n // 1st get credit cards\r\n this.GetCreditCards()\r\n .then((response) =>\r\n\r\n // 2d get gis individual bundle\r\n this.GetGISIndividualBundle()\r\n .then((response) => {\r\n\r\n // all data loaded\r\n // show dialog\r\n const ref = this.dialogService.open(AddGISDialogComponent, {\r\n data: {\r\n title: 'Personal',\r\n subTitle: this.gb.FirstName + ' ' + this.gb.LastName,\r\n CreditCards: this.CreditCards,\r\n SelectedCreditCard: 0,\r\n Bundle: this.GISIndividualBundle,\r\n CDKey: cdKey\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n this.IsBusy = false;\r\n })\r\n )\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n showCDKeyReassignDialog(key: string, firstName: string, lastName: string, email: string, showDesigner?: boolean) {\r\n if (showDesigner == undefined) showDesigner = true;\r\n const ref = this.dialogService.open(CDKeyReassignDialogComponent, {\r\n data: {\r\n title: '',\r\n subTitle: '',\r\n message: '',\r\n LicenseKey: key,\r\n FirstName: firstName,\r\n LastName: lastName,\r\n Email: email,\r\n ShowDesigner: showDesigner\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n }\r\n\r\n ShowTosDialog() {\r\n Swal.fire(\r\n {\r\n title: 'We are unable to process your account request online.',\r\n text: 'Please contact our team at 702-433-0274 for assistance with your request.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonText: 'OK',\r\n }).then(() => { }, () => { });\r\n }\r\n\r\n AssignToThisUser(key: string) {\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.LicenseAssigToLoggedinUser(key).subscribe(\r\n async (response) => {\r\n\r\n subscription.unsubscribe();\r\n\r\n if (!response.Result) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', response.Message);\r\n this.IsBusy = false;\r\n return;\r\n } else {\r\n\r\n this.RefreshProducts();\r\n\r\n this.IsBusy = false;\r\n Swal.fire(\r\n {\r\n title: 'Success!',\r\n text: 'This License Key is now assigned to your account.',\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 2500\r\n }).then(() => { }, () => { });\r\n }\r\n\r\n },\r\n\r\n (error) => {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', error);\r\n this.IsBusy = false;\r\n });\r\n\r\n\r\n }\r\n\r\n showReactivateCDKeyDialog(license: DashboardLicenseResponse, item?: any) {\r\n this.IsBusy = true;\r\n\r\n if (this.hasLicenseOnHold) {\r\n\r\n Swal.fire(\r\n {\r\n title: 'Cannot Reactivate Membership',\r\n text: 'Your account has a membership currently on hold. You may resume your held membership.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonText: 'OK',\r\n }).then(() => {\r\n\r\n }, () => { });\r\n\r\n\r\n this.IsBusy = false;\r\n return;\r\n\r\n }\r\n\r\n this.GetCreditCards()\r\n .then((response) => {\r\n this.RefreshPublicOrderProducts().then((response) => {\r\n this.IsBusy = false;\r\n const ref = this.dialogService.open(ReactivateLicenseDialogComponent, {\r\n data: {\r\n title: '',\r\n License: license,\r\n CreditCards: this.CreditCards,\r\n Products: this.PublicOrderProducts,\r\n CameFromAdd: false,\r\n memberProfile: this.memberProfile,\r\n designerName: `${item.Member.FirstName} ${item.Member.LastName}`\r\n },\r\n showHeader: false,\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n });\r\n }, error => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n CancelMembershipClick(License: DashboardLicenseResponse) {\r\n\r\n let useHold: boolean = true;\r\n\r\n if (useHold && !License.IsGrace) {\r\n\r\n this.IsBusy = true;\r\n\r\n\r\n this.api.CheckHoldEligibility(License.Key).subscribe(response => {\r\n console.log(response);\r\n this.IsBusy = false;\r\n\r\n if (response.Data.HoldEligible) {\r\n\r\n this.showHoldDialog(License, response.Data);\r\n\r\n } else {\r\n\r\n this.showCancelDialog(License);\r\n\r\n }\r\n });\r\n\r\n\r\n } else {\r\n this.showCancelDialog(License);\r\n }\r\n }\r\n\r\n\r\n showCancelDialog(License: DashboardLicenseResponse, isSecondStyle = false) {\r\n\r\n this.IsBusy = true;\r\n this.HasDialog = true;\r\n\r\n const ref = this.dialogService.open(CancellationRequestDialogComponent, {\r\n data: {\r\n title: 'Cancel',\r\n subTitle: '',\r\n message: '',\r\n License: License,\r\n isSecondStyle\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n\r\n this.IsBusy = false;\r\n this.HasDialog = false;\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n })\r\n }\r\n\r\n ManageHoldClick(License: DashboardLicenseResponse) {\r\n\r\n this.IsBusy = true;\r\n\r\n this.api.CheckHoldEligibility(License.Key).subscribe(response => {\r\n this.IsBusy = false;\r\n if (response.Data.HoldEligible || response.Data.NotEligibleReason.includes('Product is already on hold')) {\r\n\r\n this.showHoldDialog(License, response.Data);\r\n\r\n }\r\n\r\n });\r\n }\r\n\r\n showHoldDialog(License: DashboardLicenseResponse, holdResponse: CheckHoldEligibilityResponse) {\r\n\r\n if (this.HasDialog) return;\r\n\r\n this.IsBusy = true;\r\n this.HasDialog = true;\r\n\r\n this.GetCreditCards().then((result) => {\r\n const ref = this.dialogService.open(HoldRequestDialogcomponent, {\r\n data: {\r\n License: License,\r\n CreditCards: this.CreditCards,\r\n HoldResponse: holdResponse,\r\n isMobile: this.isMobile\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n styleClass: 'hold-request-dlg-wrapper',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n\r\n ref.onClose.subscribe((response) => {\r\n this.HasDialog = false;\r\n this.IsBusy = false;\r\n this.HandleHoldDialogResult(License, response);\r\n });\r\n });\r\n\r\n }\r\n\r\n\r\n HandleHoldDialogResult(License: DashboardLicenseResponse, result: HoldRequestDialogResultTypes) {\r\n\r\n console.log(\"hold dialog result :\", result);\r\n\r\n switch (result) {\r\n case HoldRequestDialogResultTypes.cancelled:\r\n break;\r\n\r\n case HoldRequestDialogResultTypes.success:\r\n this.RefreshProducts();\r\n break;\r\n\r\n case HoldRequestDialogResultTypes.error:\r\n console.log(\"Hold Dialog encoutnered an error\");\r\n break;\r\n\r\n case HoldRequestDialogResultTypes.showCancel:\r\n this.showCancelDialog(License, true);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n }\r\n\r\n\r\n showAddYARDDialog(license: DashboardLicenseResponse) {\r\n\r\n this.IsBusy = true;\r\n\r\n this.GetCreditCards()\r\n .then((response) =>\r\n this.api.YardGetPricing(license.Key).toPromise().then(\r\n\r\n yardPrice => {\r\n\r\n if (!yardPrice.Result) {\r\n this.IsBusy = false;\r\n return;\r\n }\r\n\r\n const ref = this.dialogService.open(YARDAddDialogComponent, {\r\n data: {\r\n title: 'Add YARD',\r\n subTitle: '',\r\n CreditCards: this.CreditCards,\r\n SelectedCreditCard: 0,\r\n License: license,\r\n YardPricing: yardPrice.Data,\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n this.IsBusy = false;\r\n\r\n })\r\n\r\n ).catch(error => {\r\n this.IsBusy = false;\r\n })\r\n\r\n\r\n }\r\n\r\n showCancelYARDDialog(License: DashboardLicenseResponse) {\r\n const ref = this.dialogService.open(YARDCancellationRequestDialogComponent, {\r\n data: {\r\n title: 'Cancel',\r\n subTitle: 'subTitle',\r\n message: '',\r\n License: License\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n }\r\n\r\n\r\n private GetUpgradeProducts(licenseKey: string): Promise {\r\n\r\n // get all credit cards\r\n return this.api.ProductsUpgradableProducts(licenseKey)\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return; // error\r\n\r\n\r\n return response;\r\n });\r\n }\r\n\r\n showUpgradeDialog(license: DashboardLicenseResponse) {\r\n\r\n\r\n this.IsBusy = true;\r\n\r\n // 1st get credit cards\r\n this.GetCreditCards()\r\n .then((response) =>\r\n\r\n // 2d get upgrade product list\r\n this.GetUpgradeProducts(license.Key)\r\n .then((productsResponse: IBaseResponse) => {\r\n const ref = this.dialogService.open(UpgradeProductDialogComponent, {\r\n data: {\r\n title: '',\r\n subTitle: '',\r\n message: '',\r\n upgradeProducts: productsResponse.Data,\r\n CreditCards: this.CreditCards,\r\n SelectedCreditCard: 0,\r\n LicenseKey: license.Key,\r\n CurrentProductBillingCycle: license.Recurring,\r\n LicenseObject: license\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n\r\n this.IsBusy = false;\r\n })\r\n )\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n isVipMembership(item: DashboardLicenseResponse): boolean {\r\n if (item.ProductName == 'VIP3D' || item.ProductName == 'Vendor Package')\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n\r\n SortByStatus(sortThis: MemberLicenseItem[]): MemberLicenseItem[] {\r\n\r\n sortThis.sort((a, b) => a.License.Status - b.License.Status);\r\n\r\n return sortThis;\r\n }\r\n\r\n showPayInvoiceDialog(item: DashboardLicenseResponse) {\r\n\r\n if (!this.IsMember)\r\n return;\r\n\r\n this.GetCreditCards().then((response) => {\r\n const ref = this.dialogService.open(PayInvoiceDialogComponent, {\r\n data: {\r\n title: 'Cancel',\r\n subTitle: '',\r\n CreditCards: this.CreditCards,\r\n Invoice: item.GraceInvoice\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n }).catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n\r\n }\r\n\r\n DaysRemaining(terminationDate: Date): number {\r\n let daysRemaining: number = 0;\r\n let date1 = new Date();\r\n\r\n let diffc = date1.getTime() - terminationDate.getTime();\r\n\r\n daysRemaining = Math.round(Math.abs(diffc / (1000 * 60 * 60 * 24)));\r\n\r\n return daysRemaining;\r\n }\r\n\r\n isAfter(date: string): boolean {\r\n return moment(date).isAfter(moment());\r\n }\r\n\r\n UpdateHasPastDuePayments(myProducts: MemberLicenseItem[]) {\r\n let hasPastDuePayments: boolean = false;\r\n\r\n myProducts.forEach(x => {\r\n if (x.License.IsGrace) {\r\n hasPastDuePayments = true;\r\n }\r\n });\r\n\r\n this.HasPastDuePayments = hasPastDuePayments;\r\n }\r\n\r\n IsCancelled(myLicense: MemberLicenseItem): boolean {\r\n let isCancelled: boolean = false;\r\n\r\n let myStatus: LicenseStatus = myLicense.License.Status;\r\n\r\n if (!myLicense.License.IsGrace)\r\n if (myStatus == LicenseStatus.Cancelled\r\n || myStatus == LicenseStatus.CancelledOpen\r\n || myStatus == LicenseStatus.Disabled\r\n || myStatus == LicenseStatus.DoesNotExist\r\n || myStatus == LicenseStatus.Terminated)\r\n isCancelled = true;\r\n\r\n return isCancelled;\r\n }\r\n\r\n\r\n // Check and return if Member on License is a TOS offender OR Former TOS Offender\r\n IsTOSMember(item: MemberLicenseItem): boolean {\r\n\r\n let isTOS: boolean = false;\r\n\r\n if (item.Member.IsTOS || item.Member.IsFormerTOS || this.Products[0].IsFormerTOS || this.Products[0].IsTOS)\r\n isTOS = true;\r\n\r\n return isTOS;\r\n\r\n }\r\n\r\n licenseViewTypeChange(viewType) {\r\n let top = 0;\r\n this.licenseViewType = viewType;\r\n if (this.licenseViewType === 'Available') {\r\n top = 0;\r\n } else if (this.licenseViewType === 'Registered') {\r\n top = document.getElementById('origin-position').scrollHeight;\r\n } else if (this.licenseViewType === 'Cancelled') {\r\n top = document.getElementById('origin-position').scrollHeight + document.getElementById('registered-frame').scrollHeight;\r\n }\r\n const absoluteY = this.tableFrame.nativeElement.getBoundingClientRect().top - document.body.getBoundingClientRect().top;\r\n window.scrollTo({\r\n top: top + absoluteY,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n licenseViewModeChange(viewMode) {\r\n this.licenseViewMode = viewMode;\r\n }\r\n\r\n toggleShowMore(type: number, i: number) {\r\n this.showMore[type][i] = !this.showMore[type][i];\r\n }\r\n\r\n isPastDue(Item) {\r\n return Item.License.Status != 99 && Item.License.IsGrace && !this.onlyPastDueProduct;\r\n }\r\n\r\n}\r\n","import { HoldRequestDialogcomponent, HoldRequestDialogResultTypes } from './../../../dialogs/hold-request/hold-request-dialog.component';\r\nimport { MemberTypes } from '../../../models/ss-api/responses/login.response';\r\nimport { GlobalServices } from '../../../services/global.service';\r\nimport { BillingRecurringTypes, DashboardLicenseResponse, LicenseStatus, } from '../../../models/ss-api/responses/dashboard.license.response';\r\nimport { DashboardProductsResponse, IDashboardProductsResponse, } from '../../../models/ss-api/responses/dashboard.products.response';\r\nimport { HttpError } from '../../../models/errors/HttpError';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { AddProductDialogComponent, IAddProductDialogModel } from 'app/dialogs/add-product/add-product-dialog.component';\r\nimport { AddGISDialogComponent } from 'app/dialogs/add-gis/add-gis-dialog.component';\r\nimport { UpgradeProductDialogComponent } from 'app/dialogs/upgrade-product/upgrade-product-dialog.component';\r\nimport { CDKeyReassignDialogComponent } from 'app/dialogs/cdkey-reassign/cdkey-reassign-dialog.component';\r\nimport { CancellationRequestDialogComponent } from 'app/dialogs/cancellation-request/cancellation-request-dialog.component';\r\nimport { YARDAddDialogComponent } from 'app/dialogs/yard-add/yard-add-dialog.component';\r\nimport Swal from 'sweetalert2';\r\n\r\nimport { SelectItem } from 'primeng/api';\r\n\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { GISBundleResponseArray } from 'app/models/ss-api/responses/gis.bundle.response';\r\nimport { PublicOrderProductsResponseArray } from 'app/models/ss-api/responses/public.order.products.response';\r\nimport { xToastr, ToastrTypes } from 'app/shared/Toastr';\r\nimport { UpgradableProductsResponseArray } from '../../../models/ss-api/responses/upgradable.products.response';\r\nimport { IBaseResponse } from '../../../models/comm-http/responses/BaseResponse';\r\nimport { YARDCancellationRequestDialogComponent } from 'app/dialogs/yard-cancellation-request/yard-cancellation-request-dialog.component';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { PayInvoiceDialogComponent } from '../../../dialogs/pay-invoice/pay-invoice-dialog.component';\r\nimport * as moment from 'moment';\r\nimport { ReactivateLicenseDialogComponent } from '../../../dialogs/reactivate-license/reactivate-license-dialog.component';\r\nimport { CheckHoldEligibilityResponse } from '../../../models/ss-api/responses/check.hold.eligibility.response';\r\nimport { ReactivateSimulationRequest } from 'app/models/ss-api/requests/reactivate.simulation.request';\r\nimport { ReturnStatement } from '@angular/compiler';\r\nimport { CreditCardResponse } from 'app/models/ss-api/responses/credit.card.response';\r\n\r\n\r\n\r\nclass MemberLicenseItem {\r\n Member: DashboardProductsResponse;\r\n License: DashboardLicenseResponse;\r\n}\r\n\r\n@Component({\r\n selector: 'account-memberships',\r\n templateUrl: './memberships.component.html',\r\n styleUrls: ['./memberships.component.css'],\r\n providers: [DialogService]\r\n})\r\n\r\nexport class MembershipsComponent implements OnInit {\r\n\r\n // public\r\n Products: Array = new Array();\r\n ProductsExpanded: MemberLicenseItem[] = [];\r\n IsMember: boolean = true;\r\n\r\n IsBusy: boolean = false;\r\n\r\n IsTOS: boolean = false;\r\n IsDispute: boolean = false;\r\n HasCancelled: boolean = false;\r\n\r\n // gis\r\n CreditCards: SelectItem[];\r\n\r\n // shared gis\r\n GISSharedBundle: GISBundleResponseArray;\r\n\r\n // individual gis\r\n GISIndividualBundle: GISBundleResponseArray;\r\n\r\n // products\r\n PublicOrderProducts: PublicOrderProductsResponseArray;\r\n\r\n // TEST VARIABLES\r\n hasYARD: boolean = false;\r\n\r\n HasPastDuePayments: boolean = false;\r\n\r\n showWelcomeBack: boolean = false;\r\n\r\n\thasLicenseOnHold : boolean = false;\r\n\r\n\tHasDialog : boolean = false;\r\n\r\n constructor(private router: Router, private route: ActivatedRoute, private dialogService: DialogService, private api: ssApiService, private gb: GlobalServices) { }\r\n\r\n async ngOnInit() {\r\n // this.route.queryParams.subscribe(response => {\r\n // \tconsole.log(\"PARAMS: \", response)\r\n // \tif(response.p && response.b) {\r\n // \t\tthis.showAddDialog();\r\n // \t}\r\n // });\r\n\r\n this.CheckIsMember();\r\n\r\n try {\r\n await this.RefreshProducts();\r\n } catch (e) {\r\n\r\n }\r\n\r\n this.CheckForWelcomeBack();\r\n\r\n\t}\r\n\r\n CheckForWelcomeBack() {\r\n\r\n\t\tlet IsWelcomeBack: string = localStorage.getItem('WelcomeBack');\r\n\r\n if (IsWelcomeBack == '1') {\r\n this.showWelcomeBack = true;\r\n localStorage.removeItem('WelcomeBack');\r\n }\r\n }\r\n\r\n WelcomeBackOK() {\r\n this.showWelcomeBack = false;\r\n }\r\n\r\n\r\n GetSharedGISCredits(): number {\r\n if (this.Products.length == 0)\r\n return 0;\r\n else\r\n return this.Products[0].SharedGISCredits;\r\n\r\n }\r\n\r\n\r\n CheckIsMember() {\r\n if (this.gb.MemberType == MemberTypes.Member)\r\n this.IsMember = true;\r\n else\r\n this.IsMember = false;\r\n }\r\n\r\n CanPurchaseGIS(member) {\r\n if (this.gb.MemberID != member.MemberID && !member.IsMember)\r\n return false;\r\n else\r\n return true;\r\n }\r\n\r\n\r\n Upgradable(license: DashboardLicenseResponse): boolean {\r\n\r\n if ((license.ProductName.slice(0, 5).toLowerCase() == 'vip3d' || license.ProductName == 'Vendor Package') && license.Recurring == BillingRecurringTypes.Yearly)\r\n // nothing to upgrade to\r\n return false;\r\n else\r\n return true;\r\n\r\n }\r\n\r\n\r\n GetProductAssignedName(item: DashboardLicenseResponse, firstName: string, LastName: string): string {\r\n\r\n let nameMod: string = '';\r\n\r\n if (item.Status == LicenseStatus.Cancelled || item.Status == LicenseStatus.CancelledOpen)\r\n nameMod = '(Cancelled)';\r\n\r\n if (item.Status == LicenseStatus.Terminated)\r\n nameMod = '(Terminated)';\r\n\r\n if (item.Status == LicenseStatus.Disabled)\r\n nameMod = '(Disabled)';\r\n\r\n if (!item.IsRegistered)\r\n nameMod = '(not assigned)';\r\n\r\n if (item.IsGrace)\r\n nameMod = '(Past Due)';\r\n\r\n return firstName + ' ' + LastName + ' ' + nameMod + '';\r\n\r\n }\r\n\r\n BillingRecurringToString(type: BillingRecurringTypes): string {\r\n\r\n switch (type) {\r\n case BillingRecurringTypes.Yearly:\r\n return 'Yearly';\r\n\r\n case BillingRecurringTypes.Monthly:\r\n return 'Monthly';\r\n\r\n default:\r\n return 'Unknown';\r\n }\r\n\r\n }\r\n\r\n ProductNameToClassName(product: string): string {\r\n\r\n product = product.toLowerCase();\r\n\r\n switch (product) {\r\n case 'vip3d':\r\n return 'vip3d';\r\n\r\n case 'vendor package':\r\n return 'vip3d';\r\n\r\n case 'vizterra':\r\n return 'vizterra';\r\n\r\n case 'pool studio':\r\n return 'poolstudio';\r\n\r\n default:\r\n return product;\r\n }\r\n\r\n }\r\n\r\n PopulateProducts(products: IDashboardProductsResponse) {\r\n\r\n // reset\r\n this.Products = new Array();\r\n\r\n // add the member or designer (root)\r\n this.Products.push(products);\r\n\r\n this.IsTOS = products.IsTOS;\r\n this.IsDispute = products.IsDispute;\r\n\r\n // in case we have designers\r\n if (products.Desginers != undefined)\r\n products.Desginers.forEach(x => {\r\n if (this.IsTOS) {\r\n x.IsTOS = true;\r\n }\r\n if (this.IsDispute) {\r\n x.IsDispute = true;\r\n } \r\n this.Products.push(x);\r\n });\r\n\r\n this.ProductsExpanded = [];\r\n this.Products.forEach(item => {\r\n if (item.Licenses) {\r\n item.Licenses.forEach(license => {\r\n let newItem = new MemberLicenseItem;\r\n newItem.Member = item;\r\n newItem.License = license;\r\n\r\n this.ProductsExpanded.push(newItem);\r\n });\r\n }\r\n\r\n\r\n });\r\n\r\n if (this.Products[0]) {\r\n this.Products.forEach((product) => {\r\n product.Licenses.forEach(function (license) {\r\n if ((license.Status == LicenseStatus.Cancelled || license.Status == LicenseStatus.Terminated || license.Status == LicenseStatus.CancelledOpen) && !license.IsGrace) {\r\n this.HasCancelled = true;\r\n }\r\n }, this);\r\n });\r\n }\r\n\r\n this.ProductsExpanded = this.SortByStatus(this.ProductsExpanded);\r\n\r\n\t\tconsole.log(\"ProductsExpanded : \", this.ProductsExpanded);\r\n\r\n this.UpdateHasPastDuePayments(this.ProductsExpanded);\r\n\r\n let productID = localStorage.getItem('cartProductID');\r\n let billingCycle = localStorage.getItem('cartBillingCycle');\r\n\r\n if (productID && billingCycle) {\r\n this.showAddDialog();\r\n }\r\n\r\n }\r\n\r\n async RefreshProducts(): Promise {\r\n\r\n this.IsBusy = true;\r\n this.HasCancelled = false;\r\n\r\n let productsVariable: DashboardProductsResponse;\r\n\r\n await this.api.ProductsMyProducts().toPromise().then(response => {\r\n\t\t\t\r\n\t\t\tif (!response.Result) {\r\n this.IsBusy = false;\r\n throw response.Message;\r\n\t\t\t}\r\n\t\t\t\r\n console.log(response.Data);\r\n productsVariable = response.Data;\r\n\t\t\tthis.PopulateProducts(response.Data);\r\n\t\t\tthis.CheckForHeldLicense();\r\n this.IsBusy = false;\r\n\r\n }).catch(error => {\r\n this.IsBusy = false;\r\n throw error;\r\n });\r\n\r\n return productsVariable;\r\n\r\n }\r\n\r\n toggleMode(event) {\r\n let target = event.target;\r\n $(target).parents('div.Box').toggleClass('hasOverlay');\r\n }\r\n\r\n\r\n private RefreshPublicOrderProducts(): Promise {\r\n\r\n if (this.PublicOrderProducts != undefined && this.PublicOrderProducts.length > 0)\r\n // we already have propducts\r\n return new Promise((resolve, reject) => { resolve(this.PublicOrderProducts); });\r\n\r\n\r\n // get all products\r\n return this.api.ProductsOrderProducts()\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return; // error\r\n\r\n // save\r\n this.PublicOrderProducts = response.Data;\r\n\r\n return response;\r\n });\r\n }\r\n\r\n\r\n showAddDialog() {\r\n\r\n this.IsBusy = true;\r\n\r\n // 1st get credit cards\r\n this.GetCreditCards()\r\n .then((response) => {\r\n\r\n // 2d refresh products\r\n this.RefreshPublicOrderProducts()\r\n .then((response) => {\r\n this.GetCancelledLicense().then((license) => {\r\n if (this.HasCancelled && license) {\r\n this.dialogService.open(ReactivateLicenseDialogComponent, {data: {\r\n title: '',\r\n License: license,\r\n CreditCards: this.CreditCards,\r\n CameFromAdd: true,\r\n Products: this.PublicOrderProducts\r\n }, showHeader: false});\r\n this.RefreshProducts();\r\n } else {\r\n // show add dialog\r\n\r\n let data : IAddProductDialogModel = {\r\n title : '',\r\n subTitle : '',\r\n CreditCards : this.CreditCards,\r\n Products : this.PublicOrderProducts,\r\n SelectedCreditCard : 0\r\n }\r\n this.dialogService.open(AddProductDialogComponent, {data});\r\n this.RefreshProducts();\r\n }\r\n\r\n this.IsBusy = false;\r\n }).catch(error => {\r\n });\r\n })\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n })\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n showAddSharedGISDialog() {\r\n\r\n this.IsBusy = true;\r\n\r\n // 1st get credit cards\r\n this.GetCreditCards()\r\n .then((response) =>\r\n\r\n // 2d get gis shared bundle\r\n this.GetGISSharedBundle()\r\n .then((response) => {\r\n\r\n // all data loaded\r\n // show dialog\r\n this.dialogService.open(AddGISDialogComponent, {data: {\r\n title: 'Team',\r\n subTitle : '',\r\n CreditCards: this.CreditCards,\r\n SelectedCreditCard : 0,\r\n Bundle: this.GISSharedBundle,\r\n CDKey: ''\r\n }});\r\n this.RefreshProducts();\r\n this.IsBusy = false;\r\n })\r\n )\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n private GetCancelledLicense(): Promise {\r\n return new Promise((resolve, reject) => {\r\n let cancelledLicense;\r\n for (let k = 0; k < this.Products.length; k++) {\r\n if (this.Products[k] && this.Products[k].Licenses) {\r\n for (let i = 0; i < this.Products[k].Licenses.length; i++) {\r\n let license = this.Products[k].Licenses[i];\r\n if ((license.Status == LicenseStatus.Cancelled || license.Status == LicenseStatus.Terminated || license.Status == LicenseStatus.CancelledOpen) && !license.IsGrace && moment(license.NextBillingDate).isBefore(moment())) {\r\n cancelledLicense = license;\r\n }\r\n }\r\n setTimeout(() => {\r\n resolve(cancelledLicense);\r\n }, 250);\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n reject();\r\n }, 500);\r\n });\r\n }\r\n\r\n private GetGISSharedBundle(): Promise {\r\n\r\n return this.api.GISSharedBundle()\r\n .toPromise()\r\n .then(response => {\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.GISSharedBundle = response.Data;\r\n\r\n return response;\r\n });\r\n }\r\n\r\n private GetGISIndividualBundle(): Promise {\r\n\r\n return this.api.GISIndividualBundle()\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.GISIndividualBundle = response.Data;\r\n\r\n return response;\r\n });\r\n }\r\n\r\n private GetCreditCards(): Promise {\r\n\r\n if (this.CreditCards != undefined && this.CreditCards.length > 0)\r\n // we already have credit cards\r\n return new Promise((resolve, reject) => { resolve(this.CreditCards); });\r\n\r\n\r\n // get all credit cards\r\n return this.api.CreditCardGetAll()\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return; // error\r\n\r\n // populate credit cards\r\n this.CreditCards = [];\r\n\r\n response.Data.forEach(card => {\r\n if (this.isExpired(card) && !card.IsDefault){\r\n //skip this card\r\n }\r\n else{\r\n this.CreditCards.push(\r\n {\r\n label: 'Name: ' + card.FirstName + ' ' + card.LastName +\r\n ' - Last four: ' + card.LastFour +\r\n ' - exp. Date: ' + card.ExpMonth + '/' + card.ExpYear,\r\n value: card.ID\r\n }\r\n ); \r\n }\r\n });\r\n\r\n return response;\r\n });\r\n }\r\n\r\n isExpired(Item: CreditCardResponse): boolean {\r\n let currentYear = new Date().getFullYear();\r\n let currentMonth = new Date().getMonth();\r\n if (Item.ExpYear + 2000 < currentYear)\r\n return true;\r\n else if (Item.ExpYear + 2000 == currentYear && Item.ExpMonth < currentMonth)\r\n return true\r\n\r\n return false;\r\n } \r\n\r\n showAddGISDialog(cdKey: string) {\r\n this.IsBusy = true;\r\n\r\n // 1st get credit cards\r\n this.GetCreditCards()\r\n .then((response) =>\r\n\r\n // 2d get gis individual bundle\r\n this.GetGISIndividualBundle()\r\n .then((response) => {\r\n\r\n // all data loaded\r\n // show dialog\r\n this.dialogService.open(AddGISDialogComponent, {data: {\r\n title: 'Personal',\r\n subTitle: this.gb.FirstName + ' ' + this.gb.LastName,\r\n CreditCards: this.CreditCards,\r\n SelectedCreditCard : 0,\r\n Bundle: this.GISIndividualBundle,\r\n CDKey: cdKey\r\n }});\r\n this.RefreshProducts();\r\n this.IsBusy = false;\r\n })\r\n )\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n showCDKeyReassignDialog(key: string, firstName: string, lastName: string, email: string, showDesigner?: boolean) {\r\n if (showDesigner == undefined) showDesigner = true;\r\n this.dialogService.open(CDKeyReassignDialogComponent, {data: {\r\n title: '',\r\n subTitle : '',\r\n message: '', \r\n LicenseKey: key,\r\n FirstName: firstName,\r\n LastName: lastName,\r\n Email: email,\r\n ShowDesigner: showDesigner\r\n }});\r\n this.RefreshProducts();\r\n }\r\n\r\n ShowTosDialog() {\r\n Swal.fire(\r\n {\r\n title: 'We are unable to process your account request online.',\r\n text: 'Please contact our team at 702-433-0274 for assistance with your request.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonText: 'OK',\r\n }).then(() => { }, () => { });\r\n }\r\n\r\n AssignToThisUser(key: string) {\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.LicenseAssigToLoggedinUser(key).subscribe(\r\n async (response) => {\r\n\r\n subscription.unsubscribe();\r\n\r\n if (!response.Result) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', response.Message);\r\n this.IsBusy = false;\r\n return;\r\n } else {\r\n\r\n try {\r\n await this.RefreshProducts();\r\n } catch (e) {\r\n\r\n }\r\n\r\n this.IsBusy = false;\r\n Swal.fire(\r\n {\r\n title: 'Success!',\r\n text: 'This License Key is now assigned to your account.',\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 2500\r\n }).then(() => { }, () => { });\r\n }\r\n\r\n },\r\n\r\n (error) => {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', error);\r\n this.IsBusy = false;\r\n });\r\n\r\n\r\n }\r\n\t\r\n\r\n\r\n\tCheckForHeldLicense() {\r\n\t\tthis.ProductsExpanded.forEach( x => {\r\n\t\t\tif(x.License.IsOnHold)\r\n\t\t\t\tthis.hasLicenseOnHold = true;\r\n\t\t});\r\n\t}\r\n\r\n\r\n showReactivateCDKeyDialog(item: DashboardLicenseResponse) {\r\n this.IsBusy = true;\r\n\t\t\r\n\t\tif( this.hasLicenseOnHold ) {\r\n\r\n\t\t\tSwal.fire(\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Cannot Reactivate Membership',\r\n\t\t\t\t\ttext: 'Your account has a membership currently on hold. You may resume your held membership.',\r\n\t\t\t\t\ticon: 'error',\r\n\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\t}).then(() => {\r\n\t\t\t\t\t\r\n\t\t\t\t}, () => { });\r\n\t\t\t\r\n\r\n\t\t\tthis.IsBusy = false;\r\n\t\t\treturn;\t\t\t\t\r\n\r\n\t\t}\r\n\t\t\r\n\t\tthis.GetCreditCards()\r\n .then((response) => {\r\n this.RefreshPublicOrderProducts().then((response) => {\r\n this.IsBusy = false;\r\n this.dialogService.open(ReactivateLicenseDialogComponent, {data: {\r\n title: '',\r\n License: item,\r\n CreditCards: this.CreditCards,\r\n Products: this.PublicOrderProducts,\r\n CameFromAdd: false\r\n }, showHeader: false});\r\n this.RefreshProducts();\r\n });\r\n }, error => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n CancelMembershipClick(License: DashboardLicenseResponse) {\r\n \r\n let useHold : boolean = true;\r\n\r\n if ( useHold && !License.IsGrace ) {\r\n\t\t\t\r\n\t\t\tthis.IsBusy = true;\r\n\r\n\r\n\t\t\tthis.api.CheckHoldEligibility(License.Key).subscribe(response => {\r\n\t\t\t\tconsole.log(response);\r\n\t\t\t\tthis.IsBusy = false;\r\n\r\n\t\t\t\tif(response.Data.HoldEligible) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.showHoldDialog( License, response.Data );\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.showCancelDialog( License );\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t});\r\n \r\n\r\n } else {\r\n this.showCancelDialog( License );\r\n }\r\n }\r\n\r\n\r\n\tshowCancelDialog( License: DashboardLicenseResponse ) {\r\n\t\t\r\n\t\tthis.IsBusy = true;\r\n\t\tthis.HasDialog = true;\r\n\r\n this.dialogService.open(CancellationRequestDialogComponent, {data: {\r\n\t\t\ttitle: 'Cancel',\r\n\t\t\tsubTitle : '',\r\n\t\t\tmessage: '', \r\n\t\t\tLicense: License\r\n\t\t}});\r\n\r\n this.IsBusy = false;\r\n this.HasDialog = false;\r\n this.RefreshProducts();\r\n\t}\r\n\r\n\tManageHoldClick( License : DashboardLicenseResponse ) {\r\n\t\t\r\n\t\tthis.IsBusy = true;\r\n\r\n\t\tthis.api.CheckHoldEligibility(License.Key).subscribe(response => {\r\n\t\t this.IsBusy = false;\r\n\t\t\tif ( response.Data.HoldEligible || response.Data.NotEligibleReason.includes('Product is already on hold') ) {\r\n \r\n\t\t\t\tthis.showHoldDialog( License, response.Data );\r\n\r\n\t\t\t}\r\n \r\n\t\t});\r\n\t}\r\n\r\n showHoldDialog( License : DashboardLicenseResponse, holdResponse : CheckHoldEligibilityResponse ) {\r\n\t\t\r\n\t\tif( this.HasDialog ) return;\r\n\t\t\r\n\t\tthis.IsBusy = true;\r\n\t\tthis.HasDialog = true;\r\n\r\n\t\tthis.GetCreditCards().then((result) => {\r\n this.dialogService.open(HoldRequestDialogcomponent, {data: {\r\n\t\t\t\tCreditCards: this.CreditCards,\r\n\t\t\t\tHoldResponse: holdResponse\r\n\t\t\t}});\r\n\r\n this.HasDialog = false;\r\n this.IsBusy = false; \r\n this.RefreshProducts();\r\n\t\t});\r\n\r\n }\r\n\r\n\r\n\tHandleHoldDialogResult( License : DashboardLicenseResponse, result : HoldRequestDialogResultTypes ) {\r\n\r\n\t\tconsole.log(\"hold dialog result :\", result);\r\n\r\n\t\tswitch (result) {\r\n\t\t\tcase HoldRequestDialogResultTypes.cancelled :\r\n\t\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase HoldRequestDialogResultTypes.success :\r\n\t\t\t\tthis.RefreshProducts();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase HoldRequestDialogResultTypes.error :\r\n\t\t\t\tconsole.log(\"Hold Dialog encoutnered an error\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase HoldRequestDialogResultTypes.showCancel :\r\n\t\t\t\tthis.showCancelDialog( License );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n showAddYARDDialog(license: DashboardLicenseResponse) {\r\n\r\n this.IsBusy = true;\r\n\r\n this.GetCreditCards()\r\n .then((response) =>\r\n this.GetUpgradeProducts(license.Key)\r\n .then((productsResponse: IBaseResponse) => {\r\n this.api.YardGetPricing(license.Key).toPromise().then(\r\n\r\n yardPrice => {\r\n\r\n if (!yardPrice.Result) {\r\n this.IsBusy = false;\r\n return;\r\n }\r\n\r\n this.dialogService.open(YARDAddDialogComponent, {data: {\r\n title: 'Add YARD',\r\n subTitle : '',\r\n CreditCards: this.CreditCards,\r\n SelectedCreditCard : 0,\r\n License: license,\r\n YardPricing: yardPrice.Data,\r\n }});\r\n this.RefreshProducts();\r\n\r\n this.IsBusy = false;\r\n\r\n });\r\n }\r\n\r\n ).catch(error => {\r\n this.IsBusy = false;\r\n })\r\n\r\n\r\n ).catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n showCancelYARDDialog(License: DashboardLicenseResponse) {\r\n this.dialogService.open(YARDCancellationRequestDialogComponent, {data: {\r\n title : 'Cancel',\r\n subTitle : 'subTitle',\r\n message: '',\r\n License: License\r\n }});\r\n this.RefreshProducts();\r\n }\r\n\r\n\r\n private GetUpgradeProducts(licenseKey: string): Promise {\r\n\r\n // get all credit cards\r\n return this.api.ProductsUpgradableProducts(licenseKey)\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return; // error\r\n\r\n\r\n return response;\r\n });\r\n }\r\n\r\n showUpgradeDialog(license: DashboardLicenseResponse) {\r\n\r\n\r\n this.IsBusy = true;\r\n\r\n // 1st get credit cards\r\n this.GetCreditCards()\r\n .then((response) =>\r\n\r\n // 2d get upgrade product list\r\n this.GetUpgradeProducts(license.Key)\r\n .then((productsResponse: IBaseResponse) => {\r\n this.dialogService.open(UpgradeProductDialogComponent, {data: {\r\n title: '',\r\n subTitle : '',\r\n message: '',\r\n upgradeProducts: productsResponse.Data,\r\n CreditCards: this.CreditCards,\r\n SelectedCreditCard : 0,\r\n LicenseKey: license.Key,\r\n CurrentProductBillingCycle: license.Recurring,\r\n LicenseObject: license\r\n }});\r\n this.RefreshProducts();\r\n\r\n this.IsBusy = false;\r\n })\r\n )\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n isVipMembership(item: DashboardLicenseResponse): boolean {\r\n if (item.ProductName == 'VIP3D' || item.ProductName == 'Vendor Package')\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n\r\n SortByStatus(sortThis: MemberLicenseItem[]): MemberLicenseItem[] {\r\n\r\n sortThis.sort((a, b) => a.License.Status - b.License.Status);\r\n\r\n return sortThis;\r\n }\r\n\r\n showPayInvoiceDialog(item: DashboardLicenseResponse) {\r\n\r\n this.GetCreditCards().then((response) => {\r\n this.dialogService.open(PayInvoiceDialogComponent, {data: {\r\n title: 'Cancel',\r\n subTitle : '',\r\n CreditCards: this.CreditCards,\r\n Invoice: item.GraceInvoice\r\n }});\r\n this.RefreshProducts();\r\n }).catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n\r\n }\r\n\r\n DaysRemaining(terminationDate: Date): number {\r\n let daysRemaining: number = 0;\r\n let date1 = new Date();\r\n\r\n let diffc = date1.getTime() - terminationDate.getTime();\r\n\r\n daysRemaining = Math.round(Math.abs(diffc / (1000 * 60 * 60 * 24)));\r\n\r\n return daysRemaining;\r\n }\r\n\r\n\r\n\r\n UpdateHasPastDuePayments(myProducts: MemberLicenseItem[]) {\r\n let hasPastDuePayments: boolean = false;\r\n\r\n myProducts.forEach(x => {\r\n if (x.License.IsGrace) {\r\n hasPastDuePayments = true;\r\n }\r\n });\r\n\r\n this.HasPastDuePayments = hasPastDuePayments;\r\n }\r\n\r\n IsCancelled(myLicense: MemberLicenseItem): boolean {\r\n let isCancelled: boolean = false;\r\n\r\n let myStatus: LicenseStatus = myLicense.License.Status;\r\n\r\n if (!myLicense.License.IsGrace)\r\n if (myStatus == LicenseStatus.Cancelled\r\n || myStatus == LicenseStatus.CancelledOpen\r\n || myStatus == LicenseStatus.Disabled\r\n || myStatus == LicenseStatus.DoesNotExist\r\n || myStatus == LicenseStatus.Terminated)\r\n isCancelled = true;\r\n\r\n return isCancelled;\r\n }\r\n\r\n\r\n // Check and return if Member on License is a TOS offender OR Former TOS Offender\r\n IsTOSMember(item: MemberLicenseItem): boolean {\r\n\r\n let isTOS: boolean = false;\r\n\r\n if (item.Member.IsTOS || item.Member.IsFormerTOS || this.Products[0].IsFormerTOS || this.Products[0].IsTOS)\r\n isTOS = true;\r\n\r\n return isTOS;\r\n\r\n }\r\n\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { HttpError } from '../../../models/errors/HttpError';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { ChangePasswordRequest } from '../../../models/ss-api/requests/change.password.request';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { xToastr, ToastrTypes } from '../../../shared/Toastr';\r\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\r\nimport { UpdateMemberProfileRequest } from 'app/models/ss-api/requests/update.member.profile.request';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { MemberProfile } from 'app/models/domain/member.profile';\r\nimport Swal from 'sweetalert2';\r\n\r\nimport { CountryList, CountryListItem } from '../../../helpers/country.list';\r\n\r\n@Component({\r\n selector: 'my-profile-new',\r\n templateUrl: './my-profile-new.component.html',\r\n styleUrls: ['./my-profile-new.component.scss']\r\n})\r\nexport class MyProfileNewComponent implements OnInit {\r\n @Input() memberProfile: MemberProfile;\r\n @Input() isChangePhoneNumber: boolean;\r\n @Output() emitClose: EventEmitter = new EventEmitter();\r\n\r\n IsBusy: boolean = false;\r\n\r\n profileForm: UntypedFormGroup;\r\n\r\n\r\n hasFormChanged: boolean = false;\r\n\r\n countryList: CountryListItem[] = CountryList.Countries();\r\n\r\n // Constructor\r\n constructor(private api: ssApiService, private router: Router, public gb: GlobalServices) { }\r\n\r\n\r\n ngOnInit() {\r\n this.SetupForm();\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.memberProfile) {\r\n this.UpdateFormWithMemberData();\r\n }\r\n }\r\n\r\n SetupForm() {\r\n\r\n this.profileForm = new UntypedFormGroup({\r\n companyName: new UntypedFormControl('', [this.isChangePhoneNumber ? Validators.nullValidator : Validators.required]),\r\n email: new UntypedFormControl('', [this.isChangePhoneNumber ? Validators.nullValidator : Validators.required, Validators.email]),\r\n\r\n address1: new UntypedFormControl('', [this.isChangePhoneNumber ? Validators.nullValidator : Validators.required, Validators.minLength(2)]),\r\n city: new UntypedFormControl('', [this.isChangePhoneNumber ? Validators.nullValidator : Validators.required, Validators.minLength(2)]),\r\n state: new UntypedFormControl('', [this.isChangePhoneNumber ? Validators.nullValidator : Validators.required]),\r\n zip: new UntypedFormControl('', [this.isChangePhoneNumber ? Validators.nullValidator : Validators.required, Validators.minLength(2), Validators.maxLength(10)]),\r\n country: new UntypedFormControl('', [this.isChangePhoneNumber ? Validators.nullValidator : Validators.required, Validators.minLength(1)]),\r\n phone: new UntypedFormControl('', [this.isChangePhoneNumber ? Validators.required : Validators.nullValidator, Validators.minLength(14)]),\r\n // ^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$ (123) 132-2111\r\n // ^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$\r\n phone2: new UntypedFormControl('', [Validators.minLength(14)]),\r\n fax: new UntypedFormControl('', [Validators.minLength(10)]),\r\n currentPassword: new UntypedFormControl('', Validators.minLength(5)),\r\n newPassword: new UntypedFormControl('', Validators.minLength(5))\r\n });\r\n\r\n\r\n\r\n }\r\n\r\n private firstTimeSetup: boolean = true;\r\n\r\n UpdateFormWithMemberData() {\r\n\r\n\r\n this.profileForm.setValue({\r\n companyName: this.memberProfile.Companyname,\r\n email: this.memberProfile.Email,\r\n\r\n address1: this.memberProfile.Address1,\r\n\r\n city: this.memberProfile.City,\r\n state: this.memberProfile.State,\r\n zip: this.memberProfile.Postcode,\r\n country: CountryList.ValidCountry(this.memberProfile.Country),\r\n\r\n phone: this.gb.FormattedPhone(this.memberProfile.Phonenumber),\r\n phone2: this.gb.FormattedPhone(this.memberProfile.Phonenumber2),\r\n fax: this.memberProfile.FaxNumber,\r\n\r\n currentPassword: '',\r\n newPassword: ''\r\n\r\n });\r\n\r\n this.profileForm.updateValueAndValidity();\r\n\r\n if (!this.firstTimeSetup) return;\r\n\r\n\r\n this.profileForm.valueChanges.subscribe(val => {\r\n\r\n\r\n if (val.companyName != this.memberProfile.Companyname) {\r\n this.hasFormChanged = true;\r\n return;\r\n } else if (val.email != this.memberProfile.Email) {\r\n this.hasFormChanged = true;\r\n return;\r\n } else if (val.address1 != this.memberProfile.Address1) {\r\n this.hasFormChanged = true;\r\n return;\r\n } else if (val.city != this.memberProfile.City) {\r\n this.hasFormChanged = true;\r\n return;\r\n } else if (val.state != this.memberProfile.State) {\r\n this.hasFormChanged = true;\r\n return;\r\n } else if (val.zip != this.memberProfile.Postcode) {\r\n this.hasFormChanged = true;\r\n return;\r\n } else if (val.country != this.memberProfile.Country) {\r\n this.hasFormChanged = true;\r\n return;\r\n } else if (val.phone != this.memberProfile.Phonenumber) {\r\n this.hasFormChanged = true;\r\n return;\r\n } else if (val.phone2 != this.memberProfile.Phonenumber2) {\r\n this.hasFormChanged = true;\r\n return;\r\n } else if (val.fax != this.memberProfile.FaxNumber) {\r\n this.hasFormChanged = true;\r\n return;\r\n } else if (val.newPassword != '') {\r\n this.hasFormChanged = true;\r\n return;\r\n }\r\n\r\n this.hasFormChanged = false;\r\n\r\n });\r\n\r\n\r\n this.profileForm.controls.country.valueChanges.subscribe(v => {\r\n\r\n console.log(v);\r\n\r\n if (v == \"US\") {\r\n this.profileForm.controls.zip.setValidators([Validators.required, Validators.minLength(5), Validators.maxLength(5)]);\r\n } else {\r\n this.profileForm.controls.zip.setValidators([Validators.required, Validators.minLength(2), Validators.maxLength(10)]);\r\n }\r\n\r\n this.profileForm.controls.zip.updateValueAndValidity();\r\n });\r\n\r\n\r\n this.firstTimeSetup = false;\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n UpdateMemberProfile() {\r\n\r\n\r\n if (!this.profileForm.valid) {\r\n\r\n var errorMessage = 'Please make sure all form entires are valid.';\r\n\r\n if (!this.profileForm.controls.currentPassword.valid) {\r\n errorMessage = 'Your current password is not valid. Please enter a valid password containing at least 5 characters.';\r\n } else if (!this.profileForm.controls.newPassword.valid) {\r\n errorMessage = 'Your new password is not valid. Please enter a valid password containing at least 5 characters.';\r\n }\r\n\r\n Object.keys(this.profileForm.controls).forEach(key => {\r\n this.profileForm.controls[key].markAsDirty();\r\n this.profileForm.controls[key].markAsTouched();\r\n this.profileForm.controls[key].updateValueAndValidity();\r\n });\r\n\r\n Swal.fire(\r\n {\r\n title: 'Invalid Entry',\r\n text: errorMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonText: 'OK'\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n return;\r\n }\r\n\r\n if (this.profileForm.controls.currentPassword.valid || this.profileForm.controls.newPassword.valid) {\r\n\r\n if (!this.profileForm.controls.currentPassword.valid || !this.profileForm.controls.newPassword.valid) {\r\n\r\n var errorMessage = '';\r\n\r\n if (!this.profileForm.controls.currentPassword.valid) {\r\n errorMessage = 'Your current password is not valid. Please enter a valid password containing at least 5 characters.';\r\n } else if (!this.profileForm.controls.newPassword.valid) {\r\n errorMessage = 'Your new password is not valid. Please enter a valid password containing at least 5 characters.';\r\n } else if (this.profileForm.controls.currentPassword.value == '') {\r\n errorMessage = \"You must enter your current password before we can update your profile with a new password.\"\r\n }\r\n\r\n if (errorMessage != '') {\r\n Swal.fire(\r\n {\r\n title: 'Error',\r\n text: errorMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonText: 'OK'\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n return;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n console.log(\"Form looks good, let's update the stuff!\");\r\n\r\n this.IsBusy = true;\r\n\r\n let request = new UpdateMemberProfileRequest();\r\n\r\n let values = this.profileForm.controls;\r\n\r\n request.Companyname = values.companyName.value != this.memberProfile.Companyname ? values.companyName.value : null; //A null indicates no change. To clear a field, pass an empty string.\r\n\r\n request.Email = values.email.value != this.memberProfile.Email ? values.email.value : null;\r\n\r\n request.Address1 = values.address1.value != this.memberProfile.Address1 ? values.address1.value : null;\r\n request.City = values.city.value != this.memberProfile.City ? values.city.value : null;\r\n request.State = values.state.value != this.memberProfile.State ? values.state.value : null;\r\n\r\n request.Country = values.country.value != this.memberProfile.Country ? values.country.value : null;\r\n\r\n request.Postcode = values.zip.value != this.memberProfile.Postcode ? values.zip.value : null;\r\n\r\n request.Phonenumber = this.isChangePhoneNumber ?\r\n (values.phone.value.replace(/[^\\d]/g, \"\") != this.memberProfile.Phonenumber ? values.phone.value.replace(/[^\\d]/g, \"\") : null) :\r\n this.memberProfile.Phonenumber;\r\n request.Phonenumber2 = this.isChangePhoneNumber ?\r\n (values.phone2.value.replace(/[^\\d]/g, \"\") != this.memberProfile.Phonenumber2 ? values.phone2.value.replace(/[^\\d]/g, \"\") : null) :\r\n this.memberProfile.Phonenumber2;\r\n request.FaxNumber = values.fax.value != this.memberProfile.FaxNumber ? values.fax.value : null;\r\n\r\n request.CurrentPassword = values.currentPassword.value != '' ? values.currentPassword.value : null;\r\n request.NewPassword = values.newPassword.value != '' ? values.newPassword.value : null;\r\n\r\n console.log(\"UpdateMemberProfileRequest :: \", request);\r\n\r\n // let skipSubmit = true;\r\n // if(skipSubmit) return;\r\n\r\n let disposable = this.api.UpdateMemberProfile(request).subscribe(result => {\r\n\r\n disposable.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (result.Result) {\r\n this.memberProfile.Companyname = values.companyName.value;\r\n\r\n this.memberProfile.Email = values.email.value;\r\n\r\n this.memberProfile.Address1 = values.address1.value;\r\n this.memberProfile.City = values.city.value;\r\n this.memberProfile.State = values.state.value;\r\n\r\n this.memberProfile.Postcode = values.zip.value;\r\n\r\n this.memberProfile.Country = values.country.value;\r\n\r\n if (this.isChangePhoneNumber) {\r\n this.memberProfile.Phonenumber = values.phone.value;\r\n this.memberProfile.Phonenumber2 = values.phone2.value;\r\n }\r\n this.memberProfile.FaxNumber = values.fax.value;\r\n\r\n\r\n this.UpdateFormWithMemberData()\r\n\r\n Swal.fire(\r\n {\r\n title: 'Success',\r\n text: 'Your profile information has been updated.',\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1500\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n this.emitClose.emit();\r\n }\r\n else {\r\n\r\n var title = \"Error\";\r\n if (result.Message.includes(\"zip\")) {\r\n title = \"Zip Code Mismatch\";\r\n this.memberProfile.Postcode = values.zip.value;\r\n result.Result = true;\r\n this.UpdateFormWithMemberData()\r\n }\r\n\r\n Swal.fire(\r\n {\r\n title: title,\r\n text: result.Message,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonText: 'OK'\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n this.emitClose.emit();\r\n }\r\n\r\n console.log('UpdateMemberProfile-', result);\r\n\r\n }, error => {\r\n\r\n disposable.unsubscribe();\r\n this.IsBusy = false;\r\n\r\n Swal.fire(\r\n {\r\n title: 'Error',\r\n text: 'Unable to update profile. Try again or contact our support team.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonText: 'OK'\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n console.log('ERROR', error);\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n IsUS(): boolean {\r\n\r\n return this.profileForm.controls.country.value == 'US' ? true : false;\r\n\r\n }\r\n\r\n\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { HttpError } from '../../../models/errors/HttpError';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { ChangePasswordRequest } from '../../../models/ss-api/requests/change.password.request';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { xToastr, ToastrTypes } from '../../../shared/Toastr';\r\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\r\nimport { UpdateMemberProfileRequest } from 'app/models/ss-api/requests/update.member.profile.request';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { MemberProfile } from 'app/models/domain/member.profile';\r\nimport Swal from 'sweetalert2';\r\nimport { CountryList, CountryListItem } from '../../../helpers/country.list';\r\n\r\n@Component({\r\n selector: 'my-profile',\r\n templateUrl: './my-profile.component.html',\r\n styleUrls: ['./my-profile.component.scss']\r\n})\r\nexport class MyProfileComponent implements OnInit {\r\n \r\n\tIsBusy: boolean = false;\r\n\r\n\tprofileForm : UntypedFormGroup;\r\n\r\n\tmemberProfile : MemberProfile;\r\n\r\n\thasFormChanged : boolean = false;\r\n\r\n\tcountryList : CountryListItem[] = CountryList.Countries();\r\n\r\n\t// Constructor\r\n constructor( private api: ssApiService, private router: Router, public gb: GlobalServices ) { }\r\n\r\n\r\n ngOnInit() {\r\n\r\n\t\tthis.gb.SetPageTitle(\"My Profile\");\r\n\r\n\t\tthis.SetupForm();\r\n this.GetMemberProfile();\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\tGetMemberProfile() {\r\n\t\tthis.IsBusy = true;\r\n\t\t\r\n let disposable = this.api.MemberProfile().subscribe(result => {\r\n\r\n disposable.unsubscribe();\r\n\t\t\tconsole.log('MemberProfile Result -', result);\r\n\t\t\t\r\n\t\t\tthis.memberProfile = result.Data;\r\n\t\t\t\r\n\t\t\tthis.UpdateFormWithMemberData();\r\n\r\n\t\t\tthis.IsBusy = false;\r\n\t\t\t\r\n }, error => {\r\n\t\t\tdisposable.unsubscribe();\r\n\t\t\tthis.IsBusy = false;\r\n\t\t\tconsole.log(\"ERROR\", error);\r\n\t\t});\r\n\r\n\t}\r\n\t\r\n\tSetupForm() {\r\n\r\n\t\tthis.profileForm = new UntypedFormGroup({\r\n\t\t\tcompanyName : new UntypedFormControl( '', [Validators.required]),\r\n\t\t\temail : new UntypedFormControl( '', [Validators.required, Validators.email]),\r\n\t\t\t\r\n\t\t\taddress1 : new UntypedFormControl('', [Validators.required, Validators.minLength(2)]),\r\n\t\t\tcity : new UntypedFormControl( '', [Validators.required, Validators.minLength(2)]),\r\n\t\t\tstate : new UntypedFormControl( '', [Validators.required]),\r\n\t\t\tzip : new UntypedFormControl( '', [Validators.required, Validators.minLength(2), Validators.maxLength(10) ]),\r\n\t\t\tcountry : new UntypedFormControl( '', [Validators.required, Validators.minLength(1)]),\r\n\t\t\tphone : new UntypedFormControl( '', [ Validators.required, Validators.minLength(14) ]),\r\n\t\t\t// ^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$ (123) 132-2111\r\n\t\t\t// ^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$\r\n\t\t\tphone2 : new UntypedFormControl( '', [ Validators.minLength(14) ]),\r\n\t\t\tfax : new UntypedFormControl( '', [ Validators.minLength(10) ]),\r\n\t\t\tcurrentPassword : new UntypedFormControl('', Validators.minLength(5)),\r\n newPassword : new UntypedFormControl('', Validators.minLength(5))\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\r\n\t}\r\n\r\n\tprivate firstTimeSetup : boolean = true;\r\n\r\n\tUpdateFormWithMemberData() {\r\n\r\n\t\t\r\n\t\tthis.profileForm.setValue({\r\n\t\t\tcompanyName : this.memberProfile.Companyname,\r\n\t\t\temail : this.memberProfile.Email,\r\n\r\n\t\t\taddress1 : this.memberProfile.Address1,\r\n\r\n\t\t\tcity : this.memberProfile.City,\r\n\t\t\tstate : this.memberProfile.State,\r\n\t\t\tzip : this.memberProfile.Postcode,\r\n\t\t\tcountry : CountryList.ValidCountry( this.memberProfile.Country ),\r\n\r\n\t\t\tphone : this.gb.FormattedPhone(this.memberProfile.Phonenumber),\r\n\t\t\tphone2 : this.gb.FormattedPhone(this.memberProfile.Phonenumber2),\r\n\t\t\tfax : this.memberProfile.FaxNumber,\r\n\r\n\t\t\tcurrentPassword : '',\r\n\t\t\tnewPassword : ''\r\n\r\n\t\t});\r\n\r\n\t\tthis.profileForm.updateValueAndValidity();\r\n\r\n\t\tif( !this.firstTimeSetup ) return;\r\n\r\n\r\n\t\tthis.profileForm.valueChanges.subscribe( val => {\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif( val.companyName != this.memberProfile.Companyname ) {\r\n\t\t\t\tthis.hasFormChanged = true;\r\n\t\t\t\treturn;\r\n\t\t\t} else if( val.email != this.memberProfile.Email ) {\r\n\t\t\t\tthis.hasFormChanged = true;\r\n\t\t\t\treturn;\r\n\t\t\t} else if( val.address1 != this.memberProfile.Address1 ) {\r\n\t\t\t\tthis.hasFormChanged = true;\r\n\t\t\t\treturn;\r\n\t\t\t} else if( val.city != this.memberProfile.City ) {\r\n\t\t\t\tthis.hasFormChanged = true;\r\n\t\t\t\treturn;\r\n\t\t\t} else if( val.state != this.memberProfile.State ) {\r\n\t\t\t\tthis.hasFormChanged = true;\r\n\t\t\t\treturn;\r\n\t\t\t} else if( val.zip != this.memberProfile.Postcode ) {\r\n\t\t\t\tthis.hasFormChanged = true;\r\n\t\t\t\treturn;\r\n\t\t\t} else if( val.country != this.memberProfile.Country ) {\r\n\t\t\t\tthis.hasFormChanged = true;\r\n\t\t\t\treturn;\r\n\t\t\t} else if( val.phone != this.memberProfile.Phonenumber ) {\r\n\t\t\t\tthis.hasFormChanged = true;\r\n\t\t\t\treturn;\r\n\t\t\t} else if( val.phone2 != this.memberProfile.Phonenumber2 ) {\r\n\t\t\t\tthis.hasFormChanged = true;\r\n\t\t\t\treturn;\r\n\t\t\t} else if( val.fax != this.memberProfile.FaxNumber ) {\r\n\t\t\t\tthis.hasFormChanged = true;\r\n\t\t\t\treturn;\r\n\t\t\t} else if( val.newPassword != '' ) {\r\n\t\t\t\tthis.hasFormChanged = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.hasFormChanged = false;\r\n\t\t\t\r\n\t\t});\r\n\r\n\r\n\t\tthis.profileForm.controls.country.valueChanges.subscribe( v => {\r\n\r\n\t\t\tconsole.log(v);\r\n\r\n\t\t\tif( v == \"US\" ) {\r\n\t\t\t\tthis.profileForm.controls.zip.setValidators([Validators.required, Validators.minLength(5), Validators.maxLength(5) ]);\r\n\t\t\t} else {\r\n\t\t\t\tthis.profileForm.controls.zip.setValidators([Validators.required, Validators.minLength(2), Validators.maxLength(10) ]);\r\n\t\t\t}\r\n\r\n\t\t\tthis.profileForm.controls.zip.updateValueAndValidity();\r\n\t\t} );\r\n\r\n\r\n\t\tthis.firstTimeSetup = false;\r\n\r\n\t}\r\n\r\n\r\n\t\r\n\t\r\n\r\n UpdateMemberProfile() {\r\n\t\t\r\n\r\n\t\tif( !this.profileForm.valid ) {\r\n\t\t\t\r\n\t\t\tvar errorMessage = 'Please make sure all form entires are valid.';\r\n\r\n\t\t\tif( !this.profileForm.controls.currentPassword.valid ) {\r\n\t\t\t\terrorMessage = 'Your current password is not valid. Please enter a valid password containing at least 5 characters.';\r\n\t\t\t} else if( !this.profileForm.controls.newPassword.valid ) {\r\n\t\t\t\terrorMessage = 'Your new password is not valid. Please enter a valid password containing at least 5 characters.';\r\n\t\t\t}\r\n\r\n\t\t\tObject.keys(this.profileForm.controls).forEach(key => {\r\n\t\t\t\tthis.profileForm.controls[key].markAsDirty();\r\n\t\t\t\tthis.profileForm.controls[key].markAsTouched();\r\n\t\t\t\tthis.profileForm.controls[key].updateValueAndValidity();\r\n\t\t\t});\r\n\r\n\t\t\tSwal.fire(\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Invalid Entry',\r\n\t\t\t\t\ttext: errorMessage,\r\n\t\t\t\t\ticon: 'error',\r\n\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\t\tconfirmButtonText: 'OK'\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif( this.profileForm.controls.currentPassword.valid || this.profileForm.controls.newPassword.valid ) {\r\n\t\t\t\r\n\t\t\tif( !this.profileForm.controls.currentPassword.valid || !this.profileForm.controls.newPassword.valid ) {\r\n\r\n\t\t\t\tvar errorMessage = '';\r\n\r\n\t\t\t\tif( !this.profileForm.controls.currentPassword.valid ) {\r\n\t\t\t\t\terrorMessage = 'Your current password is not valid. Please enter a valid password containing at least 5 characters.';\r\n\t\t\t\t} else if( !this.profileForm.controls.newPassword.valid ) {\r\n\t\t\t\t\terrorMessage = 'Your new password is not valid. Please enter a valid password containing at least 5 characters.';\r\n\t\t\t\t} else if( this.profileForm.controls.currentPassword.value == '' ) {\r\n\t\t\t\t\terrorMessage = \"You must enter your current password before we can update your profile with a new password.\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif( errorMessage != '' ) {\r\n\t\t\t\t\tSwal.fire(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\ttext: errorMessage,\r\n\t\t\t\t\t\t\ticon: 'error',\r\n\t\t\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\t\t\t\tconfirmButtonText: 'OK'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\tconsole.log(\"Form looks good, let's update the stuff!\");\r\n\r\n\t\tthis.IsBusy = true;\r\n\r\n\t\tlet request = new UpdateMemberProfileRequest();\r\n\t\t\r\n\t\tlet values = this.profileForm.controls;\r\n\r\n request.Companyname = values.companyName.value != this.memberProfile.Companyname ? values.companyName.value : null; //A null indicates no change. To clear a field, pass an empty string.\r\n\r\n request.Email = values.email.value != this.memberProfile.Email ? values.email.value : null;\r\n\r\n request.Address1 = values.address1.value != this.memberProfile.Address1 ? values.address1.value : null;\r\n request.City = values.city.value != this.memberProfile.City ? values.city.value : null;\r\n request.State = values.state.value != this.memberProfile.State ? values.state.value : null;\r\n \r\n request.Country = values.country.value != this.memberProfile.Country ? values.country.value : null;\r\n\t\t\r\n\t\trequest.Postcode = values.zip.value != this.memberProfile.Postcode ? values.zip.value : null;\r\n\t\t\r\n request.Phonenumber = values.phone.value != this.memberProfile.Phonenumber ? values.phone.value.replace(/[^\\d]/g, \"\") : null;\r\n request.Phonenumber2 = values.phone2.value != this.memberProfile.Phonenumber2 ? values.phone2.value.replace(/[^\\d]/g, \"\") : null;\r\n request.FaxNumber = values.fax.value != this.memberProfile.FaxNumber ? values.fax.value : null;\r\n\r\n request.CurrentPassword = values.currentPassword.value != '' ? values.currentPassword.value : null;\r\n request.NewPassword = values.newPassword.value != '' ? values.newPassword.value : null;\r\n\r\n\t\tconsole.log(\"UpdateMemberProfileRequest :: \", request);\r\n\r\n\t\t// let skipSubmit = true;\r\n\t\t// if(skipSubmit) return;\r\n\r\n let disposable = this.api.UpdateMemberProfile(request).subscribe(result => {\r\n\r\n disposable.unsubscribe();\r\n\t\t\t\r\n\t\t\tthis.IsBusy = false;\r\n\r\n\t\t\tif (result.Result)\r\n\t\t\t{\r\n\t\t\t\tthis.memberProfile.Companyname = values.companyName.value;\r\n\r\n\t\t\t\tthis.memberProfile.Email = values.email.value;\r\n\t\r\n\t\t\t\tthis.memberProfile.Address1 = values.address1.value;\r\n\t\t\t\tthis.memberProfile.City = values.city.value;\r\n\t\t\t\tthis.memberProfile.State = values.state.value;\r\n\t\t\t\t\r\n\t\t\t\tthis.memberProfile.Postcode = values.zip.value;\r\n\t\t\t\t\r\n\t\t\t\tthis.memberProfile.Country = values.country.value;\r\n\t\t\t\t\r\n\t\t\t\tthis.memberProfile.Phonenumber = values.phone.value;\r\n\t\t\t\tthis.memberProfile.Phonenumber2 = values.phone2.value;\r\n\t\t\t\tthis.memberProfile.FaxNumber = values.fax.value;\r\n\t\r\n\t\r\n\t\t\t\tthis.UpdateFormWithMemberData()\r\n\t\r\n\t\t\t\tSwal.fire(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\ttext: 'Your profile information has been updated.',\r\n\t\t\t\t\t\ticon: 'success',\r\n\t\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t\t\ttimer: 1500\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then(() => { }, () => { }); // keep this line to prevent promise error;\t\t\t\t\t\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tSwal.fire(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\ttext: result.Message,\r\n\t\t\t\t\t\ticon: 'error',\r\n\t\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\t\t\tconfirmButtonText: 'OK'\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then(() => { }, () => { }); // keep this line to prevent promise error;\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tconsole.log('UpdateMemberProfile-', result);\r\n\t\t\t\r\n\t\t}, error => {\r\n\r\n\t\t\tdisposable.unsubscribe();\r\n\t\t\tthis.IsBusy = false;\r\n\r\n\t\t\tSwal.fire(\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\ttext: 'Unable to update profile. Try again or contact our support team.',\r\n\t\t\t\t\ticon: 'error',\r\n\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\t\tconfirmButtonText: 'OK'\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n\t\t\tconsole.log('ERROR', error);\r\n\r\n\t\t});\r\n\t\t\r\n\r\n } \r\n\r\n\r\n\r\n\tIsUS() : boolean {\r\n\r\n\t\treturn this.profileForm.controls.country.value == 'US' ? true : false;\r\n\r\n\t}\r\n\r\n\r\n}\r\n","import { GlobalServices } from '../../../services/global.service';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { MemberProfile } from 'app/models/domain/member.profile';\r\nimport { CreditCardResponse } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { HttpError } from 'app/models/errors/HttpError';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { AddGISDialogComponent } from 'app/dialogs/add-gis/add-gis-dialog.component';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { GISBundleResponseArray } from 'app/models/ss-api/responses/gis.bundle.response';\r\nimport { DashboardProductsResponse, IDashboardProductsResponse } from 'app/models/ss-api/responses/dashboard.products.response';\r\nimport { DashboardLicenseResponse, LicenseStatus } from 'app/models/ss-api/responses/dashboard.license.response';\r\nimport { PublicOrderProductsResponseArray } from 'app/models/ss-api/responses/public.order.products.response';\r\nimport * as moment from 'moment';\r\nimport { ReactivateLicenseDialogComponent } from 'app/dialogs/reactivate-license/reactivate-license-dialog.component';\r\nimport { AddProductDialogComponent, IAddProductDialogModel } from 'app/dialogs/add-product/add-product-dialog.component';\r\nimport { TrainingEvent } from 'app/models/domain/training.event';\r\nimport { TrainingClass } from 'app/models/domain/training.class';\r\nimport { MemberDesignerLicenseBasicsResponseArray } from 'app/models/ss-api/responses/member.designers.licenses.basics.response';\r\nimport { TrainingCalendarRequest } from 'app/models/ss-api/requests/training.calendar.request';\r\nimport { MemberTypes } from 'app/models/ss-api/responses/login.response';\r\nimport { MembershipsNewComponent } from '../memberships-new/memberships-new.component';\r\n\r\nclass MemberLicenseItem {\r\n Member: DashboardProductsResponse;\r\n License: DashboardLicenseResponse;\r\n}\r\n\r\nclass CalendarEvent {\r\n title: string;\r\n start: Date;\r\n end: Date;\r\n extendedProps: {\r\n event: TrainingEvent\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'account-overview',\r\n templateUrl: './overview.component.html',\r\n styleUrls: ['./overview.component.scss'],\r\n providers: [DialogService]\r\n})\r\n\r\nexport class OverviewComponent implements OnInit {\r\n showChangeEmailModal: boolean;\r\n showChangePasswordModal: boolean;\r\n showChangePhoneModal: boolean;\r\n showUpdateCompanyInfoModal: boolean;\r\n showAddPaymentModal: boolean;\r\n showGISCreditChooseModal: boolean;\r\n\r\n memberProfile: MemberProfile;\r\n public defaultCard: CreditCardResponse = new CreditCardResponse();\r\n isBusy: boolean;\r\n\r\n // gis\r\n CreditCards: SelectItem[];\r\n\r\n // shared gis\r\n GISSharedBundle: GISBundleResponseArray;\r\n\r\n // individual gis\r\n GISIndividualBundle: GISBundleResponseArray;\r\n\r\n // products\r\n PublicOrderProducts: PublicOrderProductsResponseArray;\r\n\r\n // public\r\n Products: Array = new Array();\r\n ProductsExpanded: MemberLicenseItem[] = [];\r\n onlyPastDueProduct: MemberLicenseItem;\r\n\r\n IsTOS: boolean = false;\r\n IsDispute: boolean = false;\r\n HasCancelled: boolean = false;\r\n\r\n HasPastDuePayments: boolean = false;\r\n\r\n hasLicenseOnHold: boolean = false;\r\n hasLicenseScheduledToHold: boolean = false;\r\n heldLicense: DashboardLicenseResponse = null;\r\n MyProducts: MemberDesignerLicenseBasicsResponseArray;\r\n nextLiveTrainingEvent: any;\r\n\r\n showDesignerProfileBanner: boolean = true;\r\n isNoLicense: boolean = false;\r\n showThankyouModal: boolean = this.router.getCurrentNavigation()?.extras?.state?.showThankyouModal;\r\n @ViewChild('membershipsNew', { static: false }) membershipsNew: MembershipsNewComponent;\r\n\r\n get isDesigner(): boolean {\r\n return (this.gb.MemberType == MemberTypes.Designer);\r\n }\r\n\r\n constructor(\r\n private dialogService: DialogService, private router: Router,\r\n private route: ActivatedRoute, private api: ssApiService, public gb: GlobalServices\r\n ) { }\r\n\r\n async ngOnInit() {\r\n this.gb.SetPageTitle(\"My Profile\");\r\n this.getMemberProfile();\r\n this.getCards();\r\n this.loadEvents();\r\n\r\n try {\r\n await this.RefreshProducts();\r\n } catch (e) {\r\n\r\n }\r\n }\r\n\r\n showPayInvoice() {\r\n if (!this.isDesigner)\r\n this.membershipsNew.showPayInvoiceDialog(this.onlyPastDueProduct.License)\r\n }\r\n\r\n getMemberProfile() {\r\n this.isBusy = true;\r\n let disposable = this.api.MemberProfile().subscribe(result => {\r\n disposable.unsubscribe();\r\n this.memberProfile = result.Data;\r\n this.isBusy = false;\r\n }, error => {\r\n disposable.unsubscribe();\r\n this.isBusy = false;\r\n });\r\n\r\n }\r\n\r\n getCards(): void {\r\n let request = this.api.CreditCardGetAll()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return;\r\n\r\n const cards = response.Data;\r\n\r\n // find default card\r\n let index = cards.findIndex(x => x.IsDefault == true);\r\n\r\n if (index == -1)\r\n this.defaultCard = cards[0];\r\n else\r\n // set default card\r\n this.defaultCard = cards[index];\r\n },\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n }\r\n );\r\n }\r\n\r\n openEmailChange() {\r\n window.open('https://www.structurestudios.com/help/kb-tickets/new', '_blank');\r\n this.showChangeEmailModal = false;\r\n }\r\n\r\n public getPhoneInputValue(v: string): string {\r\n if (!v) {\r\n return '';\r\n }\r\n\r\n // trim '-' dashes\r\n v = v.replace(/-/g, '');\r\n\r\n v = v.replace(/[^\\d]/g, \"\");\r\n\r\n // trim string to 15 characters\r\n if (v.length > 10) {\r\n if (v.length > 15) {\r\n v = v.substr(0, 15);\r\n }\r\n return ' +' + v;\r\n }\r\n\r\n\r\n // new array to hold sections of the License Key\r\n let numbers = [];\r\n\r\n // create set of characters from first 5 characters\r\n numbers.push(v.substr(0, 3));\r\n\r\n // try for next 5\r\n if (v.substr(3, 3) !== \"\")\r\n numbers.push(v.substr(3, 3));\r\n\r\n // and last set of 5\r\n if (v.substr(6, 10) != \"\")\r\n numbers.push(v.substr(6, 4));\r\n\r\n if (v.substr(10, 15) != \"\")\r\n numbers.push(v.substr(10, 5));\r\n\r\n // add '-' dashes back to formated string\r\n let newValue = numbers[0];\r\n\r\n //if( newValue.length == 3 ) {\r\n\r\n //}\r\n\r\n if (numbers.length > 1) {\r\n newValue = '(' + newValue + ') ';\r\n newValue += numbers[1];\r\n }\r\n\r\n\r\n if (numbers.length > 2)\r\n newValue += '-' + numbers[2];\r\n\r\n // if (numbers.length > 3 )\r\n // \tnewValue += '-' + numbers[3];\r\n\r\n return newValue;\r\n }\r\n\r\n openGisCredits(isTeam: boolean) {\r\n if (isTeam) {\r\n this.showAddSharedGISDialog();\r\n } else {\r\n this.showAddGISDialog('');\r\n }\r\n }\r\n\r\n onAddCredits() {\r\n if (this.isDesigner) {\r\n this.showAddGISDialog('');\r\n } else {\r\n this.showGISCreditChooseModal = true\r\n }\r\n }\r\n\r\n PopulateProducts(products: IDashboardProductsResponse) {\r\n\r\n // reset\r\n this.Products = new Array();\r\n\r\n // add the member or designer (root)\r\n this.Products.push(products);\r\n\r\n this.IsTOS = products.IsTOS;\r\n this.IsDispute = products.IsDispute;\r\n\r\n // in case we have designers\r\n if (products.Desginers != undefined)\r\n products.Desginers.forEach(x => {\r\n if (this.IsTOS) {\r\n x.IsTOS = true;\r\n }\r\n if (this.IsDispute) {\r\n x.IsDispute = true;\r\n }\r\n this.Products.push(x);\r\n });\r\n\r\n this.ProductsExpanded = [];\r\n this.Products.forEach(item => {\r\n if (item.Licenses) {\r\n item.Licenses.forEach(license => {\r\n let newItem = new MemberLicenseItem;\r\n newItem.Member = item;\r\n newItem.License = license;\r\n\r\n this.ProductsExpanded.push(newItem);\r\n });\r\n }\r\n\r\n\r\n });\r\n\r\n if (this.Products[0]) {\r\n this.Products.forEach((product) => {\r\n product.Licenses.forEach(function (license) {\r\n if ((license.Status == LicenseStatus.Cancelled || license.Status == LicenseStatus.Terminated || license.Status == LicenseStatus.CancelledOpen) && !license.IsGrace) {\r\n this.HasCancelled = true;\r\n }\r\n }, this);\r\n });\r\n }\r\n\r\n this.ProductsExpanded = this.SortByStatus(this.ProductsExpanded);\r\n\r\n console.log(\"ProductsExpanded : \", this.ProductsExpanded);\r\n\r\n this.UpdateHasPastDuePayments(this.ProductsExpanded);\r\n\r\n let productID = localStorage.getItem('cartProductID');\r\n let billingCycle = localStorage.getItem('cartBillingCycle');\r\n\r\n if (productID && billingCycle) {\r\n this.showAddDialog();\r\n }\r\n\r\n }\r\n\r\n CheckForHeldLicense() {\r\n this.ProductsExpanded.forEach(x => {\r\n if (x.License.IsOnHold) {\r\n this.hasLicenseOnHold = true;\r\n this.heldLicense = x.License;\r\n }\r\n\r\n if (x.License.IsScheduledHold) {\r\n this.hasLicenseScheduledToHold = true;\r\n this.heldLicense = x.License;\r\n }\r\n });\r\n }\r\n\r\n async RefreshProducts(): Promise {\r\n\r\n this.isBusy = true;\r\n this.HasCancelled = false;\r\n\r\n let productsVariable: DashboardProductsResponse;\r\n\r\n await this.api.ProductsMyProducts().toPromise().then(response => {\r\n\r\n if (!response.Result) {\r\n this.isBusy = false;\r\n throw response.Message;\r\n }\r\n\r\n console.log(response.Data);\r\n productsVariable = response.Data;\r\n this.PopulateProducts(response.Data);\r\n this.CheckForHeldLicense();\r\n this.isBusy = false;\r\n\r\n }).catch(error => {\r\n this.isBusy = false;\r\n throw error;\r\n });\r\n\r\n return productsVariable;\r\n\r\n }\r\n\r\n\r\n private RefreshPublicOrderProducts(): Promise {\r\n\r\n if (this.PublicOrderProducts != undefined && this.PublicOrderProducts.length > 0)\r\n // we already have propducts\r\n return new Promise((resolve, reject) => { resolve(this.PublicOrderProducts); });\r\n\r\n\r\n // get all products\r\n return this.api.ProductsOrderProducts()\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return; // error\r\n\r\n // save\r\n this.PublicOrderProducts = response.Data;\r\n\r\n return response;\r\n });\r\n }\r\n\r\n\r\n showAddDialog() {\r\n\r\n this.isBusy = true;\r\n\r\n // 1st get credit cards\r\n this.GetCreditCards()\r\n .then((response) => {\r\n\r\n // 2d refresh products\r\n this.RefreshPublicOrderProducts()\r\n .then((response) => {\r\n this.GetCancelledLicense().then((license) => {\r\n if (this.HasCancelled && license) {\r\n const ref = this.dialogService.open(ReactivateLicenseDialogComponent, {\r\n data: {\r\n title: '',\r\n License: license,\r\n CreditCards: this.CreditCards,\r\n CameFromAdd: true,\r\n Products: this.PublicOrderProducts,\r\n memberProfile: this.memberProfile\r\n },\r\n showHeader: false,\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n } else {\r\n // show add dialog\r\n\r\n let data: IAddProductDialogModel = {\r\n title: '',\r\n subTitle: '',\r\n CreditCards: this.CreditCards,\r\n Products: this.PublicOrderProducts,\r\n SelectedCreditCard: 0,\r\n memberProfile: this.memberProfile\r\n }\r\n const ref = this.dialogService.open(AddProductDialogComponent, {\r\n data,\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n }\r\n\r\n this.isBusy = false;\r\n }).catch(error => {\r\n });\r\n })\r\n .catch((error: HttpError) => {\r\n this.isBusy = false;\r\n });\r\n\r\n })\r\n .catch((error: HttpError) => {\r\n this.isBusy = false;\r\n });\r\n\r\n }\r\n\r\n showAddSharedGISDialog() {\r\n\r\n this.isBusy = true;\r\n\r\n // 1st get credit cards\r\n this.GetCreditCards()\r\n .then((response) =>\r\n\r\n // 2d get gis shared bundle\r\n this.GetGISSharedBundle()\r\n .then((response) => {\r\n\r\n // all data loaded\r\n // show dialog\r\n const ref = this.dialogService.open(AddGISDialogComponent, {\r\n data: {\r\n title: 'Team',\r\n subTitle: '',\r\n CreditCards: this.CreditCards,\r\n SelectedCreditCard: 0,\r\n Bundle: this.GISSharedBundle,\r\n CDKey: ''\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true,\r\n width: '700px'\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n this.isBusy = false;\r\n })\r\n )\r\n .catch((error: HttpError) => {\r\n this.isBusy = false;\r\n });\r\n }\r\n\r\n GetCreditCards(): Promise {\r\n\r\n if (this.CreditCards != undefined && this.CreditCards.length > 0)\r\n // we already have credit cards\r\n return new Promise((resolve, reject) => { resolve(this.CreditCards); });\r\n\r\n\r\n // get all credit cards\r\n return this.api.CreditCardGetAll()\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return; // error\r\n\r\n // populate credit cards\r\n this.CreditCards = [];\r\n\r\n response.Data.forEach(card => {\r\n if (this.isExpired(card) && !card.IsDefault) {\r\n //skip this card\r\n }\r\n else {\r\n this.CreditCards.push(\r\n {\r\n label: 'Name: ' + card.FirstName + ' ' + card.LastName +\r\n ' - Last four: ' + card.LastFour +\r\n ' - exp. Date: ' + card.ExpMonth + '/' + card.ExpYear,\r\n value: card.ID\r\n }\r\n );\r\n }\r\n });\r\n\r\n return response;\r\n });\r\n }\r\n\r\n isExpired(Item: CreditCardResponse): boolean {\r\n let currentYear = new Date().getFullYear();\r\n let currentMonth = new Date().getMonth();\r\n if (Item.ExpYear + 2000 < currentYear)\r\n return true;\r\n else if (Item.ExpYear + 2000 == currentYear && Item.ExpMonth < currentMonth)\r\n return true\r\n\r\n return false;\r\n }\r\n\r\n showAddGISDialog(cdKey: string) {\r\n this.isBusy = true;\r\n\r\n // 1st get credit cards\r\n this.GetCreditCards()\r\n .then((response) =>\r\n\r\n // 2d get gis individual bundle\r\n this.GetGISIndividualBundle()\r\n .then((response) => {\r\n\r\n // all data loaded\r\n // show dialog\r\n const ref = this.dialogService.open(AddGISDialogComponent, {\r\n data: {\r\n title: 'Personal',\r\n subTitle: this.gb.FirstName + ' ' + this.gb.LastName,\r\n CreditCards: this.CreditCards,\r\n SelectedCreditCard: 0,\r\n Bundle: this.GISIndividualBundle,\r\n CDKey: cdKey\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true,\r\n width: '700px'\r\n });\r\n ref.onClose.subscribe(() => {\r\n this.RefreshProducts();\r\n });\r\n this.isBusy = false;\r\n })\r\n )\r\n .catch((error: HttpError) => {\r\n this.isBusy = false;\r\n });\r\n\r\n }\r\n\r\n private GetCancelledLicense(): Promise {\r\n return new Promise((resolve, reject) => {\r\n let cancelledLicense;\r\n for (let k = 0; k < this.Products.length; k++) {\r\n if (this.Products[k] && this.Products[k].Licenses) {\r\n for (let i = 0; i < this.Products[k].Licenses.length; i++) {\r\n let license = this.Products[k].Licenses[i];\r\n if ((license.Status == LicenseStatus.Cancelled || license.Status == LicenseStatus.Terminated || license.Status == LicenseStatus.CancelledOpen) && !license.IsGrace && moment(license.NextBillingDate).isBefore(moment())) {\r\n cancelledLicense = license;\r\n }\r\n }\r\n setTimeout(() => {\r\n resolve(cancelledLicense);\r\n }, 250);\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n reject();\r\n }, 500);\r\n });\r\n }\r\n\r\n GetGISSharedBundle(): Promise {\r\n\r\n return this.api.GISSharedBundle()\r\n .toPromise()\r\n .then(response => {\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.GISSharedBundle = response.Data;\r\n\r\n return response;\r\n });\r\n }\r\n\r\n GetGISIndividualBundle(): Promise {\r\n\r\n return this.api.GISIndividualBundle()\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.GISIndividualBundle = response.Data;\r\n\r\n return response;\r\n });\r\n }\r\n\r\n\r\n GetSharedGISCredits(): number {\r\n if (this.Products.length == 0)\r\n return 0;\r\n else\r\n return this.Products[0].SharedGISCredits;\r\n\r\n }\r\n\r\n\r\n GetPersonalGISCredits(): number {\r\n if (this.ProductsExpanded.length == 0)\r\n return 0;\r\n else\r\n return this.ProductsExpanded[0].Member.PersonalGISCredits;\r\n\r\n }\r\n\r\n\r\n SortByStatus(sortThis: MemberLicenseItem[]): MemberLicenseItem[] {\r\n\r\n sortThis.sort((a, b) => a.License.Status - b.License.Status);\r\n\r\n return sortThis;\r\n }\r\n\r\n\r\n\r\n UpdateHasPastDuePayments(myProducts: MemberLicenseItem[]) {\r\n let hasPastDuePayments: boolean = false;\r\n\r\n myProducts.forEach(x => {\r\n if (x.License.IsGrace) {\r\n hasPastDuePayments = true;\r\n }\r\n });\r\n\r\n this.HasPastDuePayments = hasPastDuePayments;\r\n }\r\n\r\n loadEvents() {\r\n const subscription = this.api.MemberDesignersLicensesBasics().subscribe(res => {\r\n this.MyProducts = res.Data;\r\n const tempEvents = [];\r\n const request: TrainingCalendarRequest = {\r\n StartDate: moment().startOf('month').toDate(),\r\n EndDate: moment().endOf('month').toDate()\r\n };\r\n\r\n const disposable = this.api.GetMemberTrainingCalendar(request).subscribe(response => {\r\n response.Data['TrainingEvents'].forEach((e: TrainingEvent) => {\r\n const trainingClass: TrainingClass = response.Data['TrainingClasses'].filter(c => c.ID == e.TrainingClassID)[0];\r\n if (this.MemberHasProductForClass(trainingClass.ProductIDs)) {\r\n const duration = moment(trainingClass.ClassDuration, 'hh:mm:ss');\r\n const eventTemplate: CalendarEvent = new CalendarEvent();\r\n eventTemplate.title = trainingClass.ClassTitle;\r\n eventTemplate.start = new Date(e.EventDateTime);\r\n eventTemplate.end = moment(e.EventDateTime).add({ hours: duration.hours(), minutes: duration.minutes() }).toDate();\r\n eventTemplate.extendedProps = {\r\n event: e\r\n };\r\n eventTemplate.extendedProps.event.TrainingClass = trainingClass;\r\n tempEvents.push(eventTemplate);\r\n }\r\n });\r\n this.nextLiveTrainingEvent = tempEvents.find(e => moment(e.start).isAfter(moment()));\r\n // this.nextLiveTrainingEvent = tempEvents[tempEvents.length - 1];\r\n disposable.unsubscribe();\r\n });\r\n });\r\n }\r\n\r\n MemberHasProductForClass(products: Number[]): Boolean {\r\n let productFound = false;\r\n this.MyProducts.forEach((product) => {\r\n product.Keys.forEach((key) => {\r\n if (key && products.indexOf(key.Product_ID) >= 0) {\r\n productFound = true;\r\n }\r\n });\r\n });\r\n return productFound;\r\n }\r\n\r\n removeHTMLTags(str) {\r\n if ((str === null) || (str === ''))\r\n return false;\r\n else\r\n str = str.toString();\r\n return str.replace(/(<([^>]+)>)/ig, '');\r\n }\r\n\r\n getFirstSentence(str) {\r\n const strippedStr = this.removeHTMLTags(str);\r\n return strippedStr.split('.')[0] + '.';\r\n }\r\n\r\n getFirstImage(htmlStr) {\r\n if (!htmlStr) {\r\n return '';\r\n }\r\n let imgBody;\r\n let imgMainBody;\r\n let imgSrcBody;\r\n let imgUrl;\r\n imgBody = htmlStr.split('')[0];\r\n }\r\n if (imgMainBody) {\r\n imgSrcBody = imgMainBody.split('src=\"')[1];\r\n }\r\n if (imgSrcBody) {\r\n imgUrl = imgSrcBody.split('\"')[0];\r\n }\r\n\r\n return imgUrl;\r\n }\r\n\r\n isPast(date: string) {\r\n return moment(date).isBefore(new Date());\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, HostListener, ElementRef } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport * as moment from 'moment';\r\nimport { EventRegistrationDialogComponent } from 'app/dialogs/event-registration/event-registration-dialog.component';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { TrainingCalendarRequest } from '../../../models/ss-api/requests/training.calendar.request';\r\n// import { Schedule } from 'primeng/primeng';\r\nimport { TrainingEvent } from '../../../models/domain/training.event';\r\nimport { TrainingClass } from '../../../models/domain/training.class';\r\nimport { MemberDesignerLicenseBasicsResponseArray } from 'app/models/ss-api/responses/member.designers.licenses.basics.response';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport dayGridPlugin from '@fullcalendar/daygrid';\r\nimport listPlugin from '@fullcalendar/list';\r\n\r\nclass CalendarEvent {\r\n title: string;\r\n start: Date;\r\n end: Date;\r\n extendedProps: {\r\n event: TrainingEvent\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'account-training-calendar',\r\n templateUrl: './training-calendar.component.html',\r\n styleUrls: ['./training-calendar.component.scss'],\r\n providers: [DialogService]\r\n})\r\n\r\nexport class TrainingCalendarComponent implements OnInit {\r\n isBusy: boolean;\r\n events: Array = new Array();\r\n isLoaded = false;\r\n minimumVersionv2: string;\r\n minimumVersionv3: string;\r\n currentVersion: string;\r\n paramEventID: number;\r\n\r\n MyProducts: MemberDesignerLicenseBasicsResponseArray;\r\n\r\n @ViewChild('Calendar') Calendar: any;\r\n @HostListener('window:resize', ['$event']) onResize(e) {\r\n if (e.currentTarget.innerWidth < 1250) {\r\n this.Calendar.calendar.changeView('listWeek');\r\n } else {\r\n this.Calendar.calendar.changeView('dayGridMonth');\r\n }\r\n }\r\n\r\n calendarOptions: any = {\r\n plugins: [dayGridPlugin, listPlugin],\r\n headerToolbar: {\r\n left: '',\r\n center: 'prev,title,next',\r\n right: 'dayGridMonth dayGridWeek dayGridDay listWeek'\r\n },\r\n buttonText: {\r\n month: 'Month',\r\n week: 'Week',\r\n day: 'Day',\r\n list: 'List'\r\n },\r\n eventClick: (e) => {\r\n this.handleEventClick(e);\r\n },\r\n eventDidMount: (info) => {\r\n this.onEventRender(info.event, info.el);\r\n },\r\n datesSet: (dateInfo) => {\r\n this.loadEvents(dateInfo);\r\n },\r\n };\r\n\r\n constructor(private api: ssApiService, private dialogService: DialogService, private gb: GlobalServices, private route: ActivatedRoute, private location: Location) { }\r\n\r\n ngOnInit() {\r\n this.isBusy = true;\r\n this.calendarInit();\r\n\r\n this.route.paramMap.subscribe(params => {\r\n this.paramEventID = parseInt(params.get('id'));\r\n });\r\n }\r\n\r\n calendarInit() {\r\n }\r\n\r\n loadEvents(dateInfo) {\r\n const subscription = this.api.MemberDesignersLicensesBasics().subscribe(res => {\r\n // this.MyProducts = res.Data.Licenses.filter(license => license.Status == 1);\r\n this.MyProducts = res.Data;\r\n const request: TrainingCalendarRequest = new TrainingCalendarRequest();\r\n const tempEvents = [];\r\n request.StartDate = dateInfo.startStr;\r\n request.EndDate = dateInfo.endStr;\r\n\r\n const disposable = this.api.GetMemberTrainingCalendar(request).subscribe(response => {\r\n this.minimumVersionv2 = response.Data.TrainingMinimumSoftwareVersionv2;\r\n this.minimumVersionv3 = response.Data.TrainingMinimumSoftwareVersionv3;\r\n this.currentVersion = response.Data.CurrentSoftwareVersion;\r\n\r\n response.Data['TrainingEvents'].forEach((e: TrainingEvent) => {\r\n const trainingClass: TrainingClass = response.Data['TrainingClasses'].filter(c => c.ID == e.TrainingClassID)[0];\r\n if (this.MemberHasAnyQualifyingLicense(trainingClass)) {\r\n const duration = moment(trainingClass.ClassDuration, 'hh:mm:ss');\r\n const eventTemplate: CalendarEvent = new CalendarEvent();\r\n eventTemplate.title = trainingClass.ClassTitle;\r\n eventTemplate.start = new Date(e.EventDateTime);\r\n eventTemplate.end = moment(e.EventDateTime).add({ hours: duration.hours(), minutes: duration.minutes() }).toDate();\r\n eventTemplate.extendedProps = {\r\n event: e\r\n };\r\n eventTemplate.extendedProps.event.TrainingClass = trainingClass;\r\n tempEvents.push(eventTemplate);\r\n }\r\n });\r\n\r\n if ((window).innerWidth < 1250 && !this.isLoaded) {\r\n this.Calendar.calendar.changeView('listWeek');\r\n } else if (!this.isLoaded) {\r\n this.Calendar.calendar.changeView('dayGridMonth');\r\n }\r\n\r\n this.isLoaded = true;\r\n this.events = tempEvents;\r\n console.log(123466, this.events)\r\n this.isBusy = false;\r\n\r\n if (this.paramEventID) {\r\n const event = this.events.find(item => item.event.ID == this.paramEventID);\r\n if (event) {\r\n this.dialogService.open(EventRegistrationDialogComponent, {\r\n data: {\r\n title: 'Test Title',\r\n subTitle: 'Another Test',\r\n event: event.event,\r\n minimumVersionv2: this.minimumVersionv2,\r\n minimumVersionv3: this.minimumVersionv3,\r\n currentVersion: this.currentVersion\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n this.paramEventID = null;\r\n this.location.replaceState('/account/training-calendar');\r\n }\r\n }\r\n disposable.unsubscribe();\r\n });\r\n });\r\n }\r\n\r\n onEventRender(event, element) {\r\n let productHTML = '';\r\n let productBorder = '';\r\n\r\n event.extendedProps.event.TrainingClass.ProductIDs.forEach(function (product) {\r\n let icon = '';\r\n let color = '#000';\r\n switch (product) {\r\n case 2:\r\n icon = '../../assets/images/icons/logo-icons-vip3d-xs.png';\r\n color = '#2A66DE';\r\n break;\r\n case 3:\r\n icon = '../../assets/images/icons/logo-icons-pool-studio-xs.png';\r\n color = '#F3151E';\r\n break;\r\n case 9:\r\n icon = '../../assets/images/icons/logo-icons-vizterra-xs.png';\r\n color = '#64A000';\r\n break;\r\n default:\r\n return false;\r\n }\r\n productHTML += '';\r\n productBorder += '
';\r\n }, this);\r\n\r\n element.innerHTML = '';\r\n if (moment(new Date(), 'YYYY-MMM-DD HH:mm A').utcOffset('-07:00').isAfter(moment(event.extendedProps.event.EventDateTime).subtract(30, 'minutes'))) {\r\n element.innerHTML = '
' + productBorder + '
' + productHTML + '

' + event.title + '

' + moment(event.start).format('hh:mm a') + ' - ' + moment(event.end).format('hh:mm a') + '

';\r\n } else {\r\n element.innerHTML = '
' + productBorder + '
' + productHTML + '

' + event.title + '

' + moment(event.start).format('hh:mm a') + ' - ' + moment(event.end).format('hh:mm a') + '

';\r\n }\r\n }\r\n\r\n handleEventClick(e) {\r\n if (moment().isBefore(moment(e.event.extendedProps.event.EventDateTime).subtract(30, 'minutes'))) {\r\n this.dialogService.open(EventRegistrationDialogComponent, {\r\n data: {\r\n title: 'Test Title',\r\n subTitle: 'Another Test',\r\n event: e.event.extendedProps.event,\r\n minimumVersionv2: this.minimumVersionv2,\r\n minimumVersionv3: this.minimumVersionv3,\r\n currentVersion: this.currentVersion\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n }\r\n }\r\n\r\n MemberHasAnyQualifyingLicense(trainingClass: TrainingClass): Boolean {\r\n let licenseFound = false;\r\n var products = trainingClass.ProductIDs;\r\n this.MyProducts.forEach(function (product) {\r\n product.Keys.forEach(function (key) {\r\n if (key && products.indexOf(key.Product_ID) >= 0) {\r\n //We have the product - do we qualify based on Min/Max versioning?\r\n if (trainingClass.MinimumSoftwareVersionInt == 0 || key.SoftwareVersionInt >= trainingClass.MinimumSoftwareVersionInt){\r\n if (trainingClass.MaximumSoftwareVersionInt == 0 || key.SoftwareVersionInt <= trainingClass.MaximumSoftwareVersionInt){\r\n licenseFound = true;\r\n }\r\n }\r\n }\r\n });\r\n }, this);\r\n return licenseFound;\r\n }\r\n\r\n ProductIDForName(name: String): Number {\r\n if (name.indexOf('VIP3D') >= 0) {\r\n return 5;\r\n } else if (name.indexOf('Pool') >= 0) {\r\n return 8;\r\n } else if (name.indexOf('Viz') >= 0) {\r\n return 9;\r\n }\r\n }\r\n\r\n}\r\n","import { Component, OnInit, ViewChild, HostListener } from '@angular/core';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport * as moment from 'moment';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { TrainingHistoryResponseArray, TrainingHistoryResponse } from 'app/models/ss-api/responses/training.history.response';\r\nimport { AttendanceStatusTypes } from 'app/models/domain/training.event.subscription';\r\nimport { TrainingEventSubscriptionCertificateResponseArray, CertificateTypes } from 'app/models/ss-api/responses/training.event.subscription.certificate.response';\r\nimport Swal from 'sweetalert2';\r\nimport { UpdateTrainingEventSubscriptionStatusRequest } from 'app/models/ss-api/requests/update.training.event.subscription.status.request';\r\nimport { EventRescheduleDialogComponent } from 'app/dialogs/event-reschedule/event-reschedule-dialog.component';\r\n\r\n@Component({\r\n selector: 'account-training-history',\r\n templateUrl: './training-history.component.html',\r\n styleUrls: ['./training-history.component.css'],\r\n providers: [DialogService]\r\n})\r\n\r\nexport class TrainingHistoryComponent implements OnInit {\r\n isBusy: boolean;\r\n headerConfig: any;\r\n isLoaded: boolean = false;\r\n TrainingHistory: TrainingHistoryResponseArray;\r\n\r\n trainingHistoryResultRows: number = 25;\r\n firstResult: number = 0;\r\n lastResult: number = 24;\r\n\r\n constructor(private api: ssApiService, private dialogService: DialogService, private gb: GlobalServices) { }\r\n\r\n ngOnInit() {\r\n this.isBusy = true;\r\n this.loadTrainingHistory();\r\n }\r\n\r\n loadTrainingHistory() {\r\n let disposable = this.api.GetTrainingHistory().subscribe(response => {\r\n this.isBusy = false;\r\n this.TrainingHistory = response.Data;\r\n this.TrainingHistory.sort(function (l, r) {\r\n return moment(r['EventDateTime']).diff(moment(l['EventDateTime']));\r\n });\r\n disposable.unsubscribe();\r\n });\r\n }\r\n\r\n formatForType(type) {\r\n switch (type) {\r\n case 1:\r\n return 'Registered';\r\n case 2:\r\n return 'Checked In';\r\n case 3:\r\n return 'Cancelled';\r\n case 4:\r\n return 'Rescheduled';\r\n case 5:\r\n return 'No Show';\r\n }\r\n }\r\n\r\n getCertificatesForType(item: TrainingHistoryResponse, type: CertificateTypes): TrainingEventSubscriptionCertificateResponseArray {\r\n return item.CertificatesAwarded.filter(cert => cert.CertificateType == type);\r\n }\r\n\r\n CanBeCancelled(item: TrainingHistoryResponse): boolean {\r\n if (moment().isAfter(moment(item.EventDateTime)) || item.AttendanceStatusType != 1) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n CancelClass(item: TrainingHistoryResponse) {\r\n Swal.fire({\r\n icon: 'warning',\r\n title: 'Are you sure you want to cancel?',\r\n showCancelButton: true,\r\n cancelButtonText: 'No',\r\n confirmButtonText: 'Yes',\r\n preConfirm: () => {\r\n this.isBusy = true;\r\n let request = new UpdateTrainingEventSubscriptionStatusRequest();\r\n request.AttendanceStatusType = AttendanceStatusTypes.Cancelled;\r\n request.TrainingEventSubscriptionID = Number(item.TrainingEventSubscriptionID);\r\n return this.api.UpdateTrainingEventSubscriptionStatus(request).toPromise();\r\n }\r\n }).then((response) => {\r\n if (response) {\r\n this.isBusy = false;\r\n this.loadTrainingHistory();\r\n Swal.fire({\r\n icon: 'success',\r\n title: 'Successfully cancelled.',\r\n showConfirmButton: false,\r\n showCancelButton: false,\r\n timer: 1500\r\n }).then(() => { }, () => { });\r\n }\r\n }, (dismiss) => { });\r\n }\r\n\r\n RescheduleClass(item: TrainingHistoryResponse) {\r\n this.dialogService.open(EventRescheduleDialogComponent, {\r\n data: {\r\n Event: item,\r\n LicenseID: item.License_ID\r\n },\r\n modal: false,\r\n maskStyleClass: 'opened',\r\n draggable: true,\r\n keepInViewport: true\r\n });\r\n this.loadTrainingHistory();\r\n }\r\n\r\n OpenCertificate(cert) {\r\n let type = 'product';\r\n switch (cert.CertificateType) {\r\n case 1:\r\n type = 'product';\r\n break;\r\n case 2:\r\n type = 'apsp';\r\n break;\r\n }\r\n (window).open('https://reports-api.structurestudios.com/PDF/Training/Certificate/false/' + type + '/' + cert.CertificateToken + '/' + cert.CertificateID);\r\n }\r\n\r\n paginateTrainingHistory(e) {\r\n this.firstResult = e.page * e.rows;\r\n this.lastResult = this.firstResult + e.rows;\r\n }\r\n\r\n}\r\n","import { UntypedFormBuilder, UntypedFormGroup, Validators, UntypedFormControl } from '@angular/forms';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'training-list',\r\n templateUrl: './training-list.component.html',\r\n styleUrls: ['./training-list.component.scss'],\r\n providers: [DialogService]\r\n})\r\nexport class TrainingListComponent implements OnInit {\r\n activeTab: 'calendar' | 'history' = 'calendar';\r\n\r\n public IsBusy: boolean = false;\r\n\r\n constructor(\r\n private router: Router,\r\n private _Activatedroute: ActivatedRoute,\r\n private _fb: UntypedFormBuilder,\r\n\t\tpublic gb : GlobalServices\r\n\t\t) {\r\n }\r\n\r\n ngOnInit() {\r\n window.scrollTo(0, 0);\r\n this._Activatedroute.queryParams.subscribe((param) => {\r\n this.activeTab = param.activeTab || 'calendar';\r\n });\r\n }\r\n\r\n activeTabChange(viewType) {\r\n this.activeTab = viewType;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { Title } from '@angular/platform-browser';\r\ndeclare let ga: Function;\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent {\r\n title = 'app';\r\n\r\n constructor(public router: Router, private titleService : Title) {\r\n\r\n\r\n // Subscribe to router event changes and push Google Analytics Events to GoogleTagManager\r\n this.router.events.subscribe(event => {\r\n\r\n // Check navigation event\r\n if (event instanceof NavigationEnd) {\r\n // Set and send GA data\r\n // ga('set', 'page', event.urlAfterRedirects);\r\n // ga('send', 'pageview');\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { HoldRequestDialogcomponent } from './dialogs/hold-request/hold-request-dialog.component';\r\n// DIRECTIVES\r\nimport { FieldMatchesValidatorDirective } from './directives/field-matches-validator.directive';\r\nimport { PhoneDirective } from './directives/phone.directive';\r\nimport { MyNumberDirective } from './directives/number.directive';\r\nimport { MyNumberSlashDirective } from './directives/number-slash.directive';\r\nimport { CDKeyDirective } from './directives/cdkey.directive';\r\nimport { ZipCodeDirective } from './directives/zip.directive';\r\nimport { MonthYearMaskDirective } from './directives/month-year-mask.directive';\r\n\r\n// BASE IMPORTS\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TopNavBarCrumbs } from './shared/topnavcrumbs/topnavcrumbs.component';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { AngularSvgIconModule } from 'angular-svg-icon';\r\n\r\nimport { MainComponent } from './views/main/main.component';\r\nimport { DashboardView } from './views/dashboard/dashboard.view';\r\nimport { OrderFormView } from './views/order-form/order-form.view';\r\nimport { BlankView } from './views/blank/blank.view';\r\n\r\nimport { NavMenuComponent } from './shared/navmenu/navmenu.component';\r\nimport { TopNavBarComponent } from './shared/topnavbar/topnavbar.component';\r\nimport { FooterComponent } from './shared/footer/footer.component';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\n\r\nimport { SSLogoComponent } from './shared/ss-logo/ss-logo.component';\r\n\r\n// PIPES\r\nimport { SanitizeHtmlPipe } from './pipes/sanitize-html.pipe';\r\nimport { ProductNameWebSafePipe, ProductNamePipe, BillingCyclePipe } from './pipes/product-name-web-safe.pipe';\r\nimport { CapitalizeFirstLetterPipe } from './pipes/captialize_first_letter.pipe';\r\nimport { AddYearsToDatePipe } from './pipes/add-years-to-date.pipe';\r\nimport { DaysRemainingPipe } from './pipes/date-pipes';\r\nimport { CreditCardTypePipe } from './pipes/creditcard.pipe';\r\n\r\n\r\n// PRIMENG IMPORTS\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { DragDropModule } from 'primeng/dragdrop';\r\nimport { DynamicDialogModule } from 'primeng/dynamicdialog';\r\nimport { FullCalendarModule } from 'primeng/fullcalendar';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\n\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\n\r\n// COMPONENTS\r\nimport { CreditCardAddComponent } from 'app/shared/credit-card-add/credit-card-add.component';\r\nimport { Paginator } from 'app/shared/paginator/paginator.component';\r\nimport { GooglePlacesComponent } from 'app/shared/google-places/google-places.component';\r\n\r\n// DIALOG WINDOW COMPONENTS\r\nimport { ConfirmDialogComponent } from 'app/dialogs/confirm/confirm-dialog.component';\r\nimport { AddProductDialogComponent } from 'app/dialogs/add-product/add-product-dialog.component';\r\nimport { AddCreditCardDialogComponent } from 'app/dialogs/add-credit-card/add-credit-card-dialog.component';\r\nimport { AddGISDialogComponent } from 'app/dialogs/add-gis/add-gis-dialog.component';\r\nimport { CDKeyReassignDialogComponent } from 'app/dialogs/cdkey-reassign/cdkey-reassign-dialog.component';\r\nimport { CancellationRequestDialogComponent } from 'app/dialogs/cancellation-request/cancellation-request-dialog.component';\r\nimport { UpgradeProductDialogComponent } from 'app/dialogs/upgrade-product/upgrade-product-dialog.component';\r\nimport { EditCreditCardDialogComponent } from 'app/dialogs/edit-credit-card/edit-credit-card-dialog.component';\r\nimport { EventRegistrationDialogComponent } from 'app/dialogs/event-registration/event-registration-dialog.component';\r\nimport { ReactivateCDKeyDialogComponent } from 'app/dialogs/reactivate-cdkey/reactivate-cdkey-dialog.component';\r\nimport { YARDAddDialogComponent } from 'app/dialogs/yard-add/yard-add-dialog.component';\r\nimport { YARDCancellationRequestDialogComponent } from 'app/dialogs/yard-cancellation-request/yard-cancellation-request-dialog.component';\r\nimport { CompleteOrderDialogComponent } from 'app/dialogs/complete-order/complete-order-dialog.component';\r\nimport { PayInvoiceDialogComponent } from 'app/dialogs/pay-invoice/pay-invoice-dialog.component';\r\nimport { EventRescheduleDialogComponent } from './dialogs/event-reschedule/event-reschedule-dialog.component';\r\nimport { ReactivateLicenseDialogComponent } from './dialogs/reactivate-license/reactivate-license-dialog.component';\r\nimport { LoginFormComponent } from './authentication/signin/login-form/login-form.component';\r\nimport { ForgotPasswordFormComponent } from './authentication/signin/forgot-password-form/forgot-password-form.component';\r\nimport { TwoFactorChoiceFormComponent } from './authentication/signin/twofactor-choice-form/twofactor-choice-form.component';\r\nimport { TwoFactorCodeFormComponent } from './authentication/signin/twofactor-code-form/twofactor-code-form.component';\r\nimport { LoginDialogComponent } from './dialogs/auth-login/auth-login-dialog.component';\r\nimport { CreditCardDirectivesModule } from 'angular-cc-library';\r\nimport { SSCreditCardFormComponent } from './shared/ss-cc-form/ss-cc-form.component';\r\nimport { SSCreditCardFormNewComponent } from './shared/ss-cc-form-new/ss-cc-form-new.component';\r\nimport { ChangeBillingCycleDialogComponent } from './dialogs/change-billing-cycle/change-billing-cycle-dialog.component';\r\nimport { ThankYouComponent } from './order/components/thank-you/thank-you.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n // directives\r\n FieldMatchesValidatorDirective,\r\n PhoneDirective,\r\n MyNumberDirective,\r\n MyNumberSlashDirective,\r\n CDKeyDirective,\r\n ZipCodeDirective,\r\n MonthYearMaskDirective,\r\n // pipes\r\n AddYearsToDatePipe,\r\n CapitalizeFirstLetterPipe,\r\n SanitizeHtmlPipe,\r\n ProductNameWebSafePipe,\r\n ProductNamePipe,\r\n BillingCyclePipe,\r\n DaysRemainingPipe,\r\n CreditCardTypePipe,\r\n // main view components\r\n MainComponent,\r\n // layout\r\n DashboardView,\r\n OrderFormView,\r\n BlankView,\r\n // shared components\r\n NavMenuComponent,\r\n TopNavBarComponent,\r\n FooterComponent,\r\n TopNavBarCrumbs,\r\n SSLogoComponent,\r\n Paginator,\r\n CreditCardAddComponent,\r\n GooglePlacesComponent,\r\n // dialog window components\r\n ConfirmDialogComponent,\r\n AddProductDialogComponent,\r\n AddCreditCardDialogComponent,\r\n AddGISDialogComponent,\r\n CDKeyReassignDialogComponent,\r\n CancellationRequestDialogComponent,\r\n EditCreditCardDialogComponent,\r\n UpgradeProductDialogComponent,\r\n EventRegistrationDialogComponent,\r\n ReactivateCDKeyDialogComponent,\r\n YARDAddDialogComponent,\r\n YARDCancellationRequestDialogComponent,\r\n CompleteOrderDialogComponent,\r\n PayInvoiceDialogComponent,\r\n EventRescheduleDialogComponent,\r\n ReactivateLicenseDialogComponent,\r\n LoginFormComponent,\r\n ForgotPasswordFormComponent,\r\n TwoFactorChoiceFormComponent,\r\n TwoFactorCodeFormComponent,\r\n LoginDialogComponent,\r\n HoldRequestDialogcomponent,\r\n SSCreditCardFormComponent,\r\n SSCreditCardFormNewComponent,\r\n ChangeBillingCycleDialogComponent,\r\n ThankYouComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n RouterModule,\r\n HttpClientModule,\r\n AngularSvgIconModule.forRoot(),\r\n FormsModule,\r\n ReactiveFormsModule,\r\n BsDropdownModule.forRoot(),\r\n OverlayPanelModule,\r\n AccordionModule,\r\n TabViewModule,\r\n DropdownModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n DragDropModule,\r\n DynamicDialogModule,\r\n FullCalendarModule,\r\n InputNumberModule,\r\n BrowserAnimationsModule,\r\n InputSwitchModule,\r\n CreditCardDirectivesModule,\r\n ],\r\n exports: [\r\n AngularSvgIconModule,\r\n // directives\r\n FieldMatchesValidatorDirective,\r\n PhoneDirective,\r\n MyNumberDirective,\r\n MyNumberSlashDirective,\r\n CDKeyDirective,\r\n ZipCodeDirective,\r\n MonthYearMaskDirective,\r\n // pipes\r\n AddYearsToDatePipe,\r\n ProductNameWebSafePipe,\r\n ProductNamePipe,\r\n BillingCyclePipe,\r\n DaysRemainingPipe,\r\n CreditCardTypePipe,\r\n // common\r\n CommonModule,\r\n // layout\r\n MainComponent,\r\n DashboardView,\r\n OrderFormView,\r\n BlankView,\r\n // shared components\r\n NavMenuComponent,\r\n TopNavBarComponent,\r\n FooterComponent,\r\n TopNavBarCrumbs,\r\n SSLogoComponent,\r\n Paginator,\r\n CreditCardAddComponent,\r\n GooglePlacesComponent,\r\n SSCreditCardFormComponent,\r\n SSCreditCardFormNewComponent,\r\n AccordionModule,\r\n TabViewModule,\r\n OverlayPanelModule,\r\n DropdownModule,\r\n InputSwitchModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n DragDropModule,\r\n DynamicDialogModule,\r\n FullCalendarModule,\r\n InputNumberModule,\r\n BrowserAnimationsModule,\r\n // dialog components\r\n ConfirmDialogComponent,\r\n AddProductDialogComponent,\r\n AddCreditCardDialogComponent,\r\n AddGISDialogComponent,\r\n CDKeyReassignDialogComponent,\r\n CancellationRequestDialogComponent,\r\n EditCreditCardDialogComponent,\r\n UpgradeProductDialogComponent,\r\n EventRegistrationDialogComponent,\r\n ReactivateCDKeyDialogComponent,\r\n YARDAddDialogComponent,\r\n YARDCancellationRequestDialogComponent,\r\n CompleteOrderDialogComponent,\r\n PayInvoiceDialogComponent,\r\n EventRescheduleDialogComponent,\r\n ReactivateLicenseDialogComponent,\r\n LoginFormComponent,\r\n ForgotPasswordFormComponent,\r\n TwoFactorChoiceFormComponent,\r\n TwoFactorCodeFormComponent,\r\n LoginDialogComponent,\r\n ChangeBillingCycleDialogComponent,\r\n ThankYouComponent\r\n ]\r\n})\r\nexport class SharedAppModule { }\r\n","import { GlobalServices } from './services/global.service';\r\nimport { AppComponent } from './app.component';\r\n\r\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\r\nimport { Injector, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ssApiService } from './services/ss-api.service';\r\n\r\nimport { AuthGuardService } from 'app/services/auth.guard.service';\r\n\r\nimport { OrderModule } from './order/order.module';\r\nimport { AccountModule } from './account/account.module';\r\nimport { LoginAsMemberModule } from 'app/login.as.member/login.as.member.module';\r\n\r\nimport { PlaygroundModule } from 'app/_playground/playground.module';\r\n\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { DatepickerModule } from 'ngx-bootstrap/datepicker';\r\n\r\nimport { AuthenticationModule } from './authentication/authentication.module';\r\nimport { SupportTicketsModule } from './support-tickets/support-tickets.module';\r\n\r\nimport { AppRoutingModule } from './app.routing.module';\r\nimport { SharedAppModule } from './app.module.shared';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MainComponent } from './views/main/main.component';\r\nimport { GlobalsComponent } from './debug/globals/globals.component';\r\nimport { LoginFromSoftwareModule } from './login.from.software/login.from.software.module';\r\n\r\n\r\n@NgModule({\r\n bootstrap: [MainComponent],\r\n declarations: [\r\n\r\n GlobalsComponent,\r\n AppComponent\r\n\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n HttpClientModule,\r\n RouterModule,\r\n SharedAppModule,\r\n\r\n AuthenticationModule,\r\n SupportTicketsModule,\r\n\r\n OrderModule,\r\n AccountModule,\r\n LoginAsMemberModule,\r\n LoginFromSoftwareModule,\r\n\r\n // DEV PLAYGROUND MODULE\r\n PlaygroundModule,\r\n\r\n BsDropdownModule.forRoot(),\r\n TimepickerModule.forRoot(),\r\n DatepickerModule.forRoot(),\r\n\r\n // routes\r\n AppRoutingModule, // leave at last for ** redirect\r\n\r\n ],\r\n providers: [\r\n { provide: 'ORIGIN_URL', useValue: location.origin },\r\n // { provide: ErrorHandler, useClass: AppErrorHandler },\r\n ssApiService,\r\n GlobalServices,\r\n AuthGuardService,\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class AppModule {\r\n static injector: Injector;\r\n constructor(injector: Injector) {\r\n AppModule.injector = injector;\r\n }\r\n}\r\n","import { GlobalsComponent } from './debug/globals/globals.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { PreloadAllModules, RouterModule, Routes } from '@angular/router';\r\n\r\nimport { SigninComponent } from './authentication/signin/signin.component';\r\nimport { DashboardView } from './views/dashboard/dashboard.view';\r\n\r\ndeclare var System: any;\r\n\r\nconst appRoutes: Routes = [\r\n // main redirect\r\n { path: '', redirectTo: 'account', pathMatch: 'full' },\r\n\r\n { path: 'cc/:token', component: SigninComponent },\r\n // dashboard views\r\n /*\r\n {\r\n path: 'dashboard', component: DashboardView,\r\n children: [\r\n { path: '', component: MainComponent },\r\n { path: 'home', component: MainComponent },\r\n ]\r\n },\r\n */\r\n\r\n // debug\r\n {\r\n path: 'debug', component: DashboardView,\r\n children: [\r\n { path: '', component: GlobalsComponent },\r\n { path: 'globals', component: GlobalsComponent },\r\n ]\r\n },\r\n\r\n // handle all other routes\r\n { path: '**', redirectTo: 'account' }\r\n\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(appRoutes, { preloadingStrategy: PreloadAllModules, relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { SigninComponent } from './signin/signin.component';\r\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\r\n\r\nimport { BlankView } from '../views/blank/blank.view';\r\nimport { UnlockLoginComponent } from 'app/authentication/unlock-login/unlock-login.component';\r\n\r\n\r\nconst authenticationRoutes: Routes = [\r\n // login view\r\n {\r\n\r\n path: 'authentication', component: BlankView,\r\n children: [\r\n { path: '', component: SigninComponent },\r\n { path: 'signin', component: SigninComponent },\r\n { path: 'signin/:welcomeBack', component: SigninComponent },\r\n // handle all other routes\r\n { path: '**', component: SigninComponent }\r\n ],\r\n },\r\n {\r\n path: 'reset-password', component: BlankView,\r\n children: [\r\n { path: ':resetPasswordAuth', component: ResetPasswordComponent },\r\n { path: '**', component: ResetPasswordComponent }\r\n ]\r\n },\r\n {\r\n path: 'unlock-login', component: BlankView,\r\n children: [\r\n { path: ':unlockCode', component: UnlockLoginComponent },\r\n { path: '**', component: UnlockLoginComponent }\r\n ]\r\n }\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(authenticationRoutes)],\r\n exports: [RouterModule]\r\n})\r\nexport class authenticationRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\nimport { SigninComponent } from './signin/signin.component';\r\nimport { authenticationRoutingModule } from './authentication-routing.module';\r\nimport { SharedAppModule } from '../app.module.shared';\r\n\r\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\r\nimport { UnlockLoginComponent } from 'app/authentication/unlock-login/unlock-login.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n SigninComponent,\r\n ResetPasswordComponent,\r\n UnlockLoginComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedAppModule,\r\n authenticationRoutingModule,\r\n ReactiveFormsModule,\r\n FormsModule\r\n ]\r\n})\r\nexport class AuthenticationModule { }\r\n\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { SetNewPasswordRequest } from 'app/models/ss-api/requests/set.new.password.request';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { xToastr, ToastrTypes } from 'app/shared/Toastr';\r\n\r\n@Component({\r\n selector: 'reset-password',\r\n templateUrl: './reset-password.component.html',\r\n styleUrls: ['./reset-password.component.scss']\r\n})\r\nexport class ResetPasswordComponent implements OnInit, OnDestroy {\r\n\r\n IsBusy: boolean = false;\r\n\r\n ResetPasswordForm: UntypedFormGroup;\r\n\r\n // ID's FROM ROUTE PARAMTERS\r\n routeParams: object;\r\n ResetPasswordAuth: string;\r\n\r\n // DATA SUBSCRIPTION VARIABLES\r\n paramsSubscribe: any;\r\n\r\n constructor(private route: ActivatedRoute, private api: ssApiService, private router: Router) {\r\n this.paramsSubscribe = this.route.params.subscribe(params => this.routeParams = params);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.ResetPasswordForm = new UntypedFormGroup({\r\n 'password': new UntypedFormControl('', [Validators.required, Validators.minLength(5)]),\r\n 'passwordConfirm': new UntypedFormControl('', [Validators.required, Validators.minLength(5)]),\r\n });\r\n\r\n // check param\r\n if (this.routeParams['resetPasswordAuth'] == undefined)\r\n window.location.href = 'http://www.structurestudios.com';\r\n\r\n // set param\r\n this.ResetPasswordAuth = this.routeParams['resetPasswordAuth'];\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.paramsSubscribe.unsubscribe();\r\n }\r\n\r\n isCompareValid(myField: string, compareField: string): boolean {\r\n return myField == compareField;\r\n }\r\n\r\n GetSetNewPasswordRequest(): SetNewPasswordRequest {\r\n\r\n let data = new SetNewPasswordRequest();\r\n\r\n data.ResetPasswordID = this.ResetPasswordAuth;\r\n data.NewPassword = this.ResetPasswordForm.get('password').value;\r\n\r\n return data;\r\n }\r\n\r\n\r\n onResetPasswordFormSubmit() {\r\n\r\n\r\n this.IsBusy = true;\r\n if ( this.ResetPasswordForm.get('password').value == '' ) {\r\n this.IsBusy = false;\r\n xToastr.ShowToast(ToastrTypes.Error, 'Oops', 'Please enter your new password.' );\r\n return;\r\n }else if ( !this.isCompareValid( this.ResetPasswordForm.get('password').value, this.ResetPasswordForm.get('passwordConfirm').value) ) {\r\n this.IsBusy = false;\r\n xToastr.ShowToast(ToastrTypes.Error, 'Oops', 'New passwords must match!' );\r\n return;\r\n }\r\n\r\n let data = this.GetSetNewPasswordRequest();\r\n\r\n let subscription = this.api.SetNewPassword(data).subscribe(\r\n (result) => {\r\n subscription.unsubscribe();\r\n\r\n if (!result.Result) {\r\n // error -> link not valid or expired\r\n\r\n this.IsBusy = false;\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', result.Message );\r\n\r\n return;\r\n }\r\n\r\n this.IsBusy = false;\r\n this.router.navigate(['authentication/signin']);\r\n\r\n xToastr.ShowToast(ToastrTypes.Success, 'Success!', 'Your password has been successfully changed.' );\r\n\r\n },\r\n (error) => {\r\n // error -> http or connection error or link not valid or expired\r\n this.IsBusy = false;\r\n xToastr.ShowToast(ToastrTypes.Error, error.FriendlyTitle, error.FriendlyMessage );\r\n });\r\n\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\r\n\r\nimport { xToastr as Toastr, ToastrTypes, xToastr } from '../../../shared/Toastr';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { ResetPasswordRequest } from 'app/models/ss-api/requests/reset.password.request';\r\n\r\n@Component({\r\n selector: 'forgot-password',\r\n templateUrl: './forgot-password-form.component.html',\r\n})\r\nexport class ForgotPasswordFormComponent implements OnInit {\r\n\r\n @Output('onCancel') onCancel = new EventEmitter();\r\n\r\n @Output('setBusy') setBusy = new EventEmitter();\r\n @Output('setNotBusy') setNotBusy = new EventEmitter();\r\n\r\n Email: string;\r\n\r\n constructor(private api: ssApiService) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n let email = localStorage.getItem('email');\r\n\r\n if (email) {\r\n this.Email = email;\r\n }\r\n }\r\n\r\n public Cancel() {\r\n this.onCancel.emit();\r\n }\r\n\r\n setIsBusy(IAmBusy: boolean) {\r\n if (IAmBusy) {\r\n this.setBusy.emit();\r\n } else {\r\n this.setNotBusy.emit();\r\n }\r\n }\r\n\r\n\r\n\r\n public ResetPassword() {\r\n\r\n let request = new ResetPasswordRequest();\r\n request.Checksum = 'SDFHSDKFHsdlkfhsdlfhl2we4r8w74esFSDFKHDKDSFhwoehlsdf2546546!!!Fausto.sDFSDCaltabiano';\r\n request.Email = this.Email;\r\n\r\n this.setIsBusy(true);\r\n\r\n let subscription = this.api.ResetPasswordRequest(request).subscribe(\r\n (result) => {\r\n subscription.unsubscribe();\r\n\r\n let toastOptions = {\r\n closeButton: true,\r\n progressBar: true,\r\n debug: true,\r\n preventDuplicates: true,\r\n positionClass: 'toast-top-center',\r\n onclick: null,\r\n showDuration: 400,\r\n hideDuration: 1000,\r\n timeOut: 10000,\r\n extendedTimeOut: 5000,\r\n showEasing: 'swing',\r\n hideEasing: 'linear',\r\n showMethod: 'fadeIn',\r\n hideMethod: 'fadeOut'\r\n };\r\n\r\n xToastr.ShowToast(ToastrTypes.Success, 'Request Completed', '

An email has been sent to ' + this.Email + '. Follow the link in the email to reset your password.

', toastOptions);\r\n\r\n // check result\r\n if (!result.Result) {\r\n // return;\r\n }\r\n\r\n // ok\r\n // -> change ui here\r\n this.setIsBusy(false);\r\n this.Cancel();\r\n },\r\n (error) => {\r\n // error\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', error);\r\n }\r\n );\r\n\r\n }\r\n}\r\n","import { IBaseResponse } from '../../../models/comm-http/responses/BaseResponse';\r\nimport { Subscription } from 'rxjs';\r\nimport { KeyValuePairArray } from '../../../models/KeyValuePair';\r\nimport { LoginResponse } from '../../../models/ss-api/responses/login.response';\r\nimport { GlobalServices } from '../../../services/global.service';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { Component, OnInit, EventEmitter, Output, Inject, Input, ViewChild, ElementRef } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\r\n\r\nimport { LoginRequest } from 'app/models/ss-api/requests/login.request';\r\nimport { ErrorEventArgs } from 'app/models/event-args/global-error.event.args';\r\n\r\n\r\n@Component({\r\n selector: 'login-form',\r\n templateUrl: './login-form.component.html'\r\n})\r\nexport class LoginFormComponent implements OnInit {\r\n\r\n // events\r\n @Output('onBusyChanged') onBusyChanged = new EventEmitter();\r\n @Output('onAuthenticationFailed') onAuthenticationFailed = new EventEmitter();\r\n @Output('onTwoFactorRequired') onTwoFactorRequired = new EventEmitter>();\r\n @Output('onAuthenticated') onAuthenticated = new EventEmitter>();\r\n @Output('onLocked') onLocked = new EventEmitter>();\r\n @Output('onError') onError = new EventEmitter();\r\n @Output('onUnfinishedOrder') onUnfinishedOrder = new EventEmitter();\r\n\r\n @ViewChild('Password', { static: true }) PasswordField;\r\n\r\n // form\r\n signinForm: UntypedFormGroup;\r\n DisableEmail: boolean = false;\r\n\r\n // private\r\n showTimeout: boolean = true;\r\n ShowError: boolean = false;\r\n ErrorMessage: string;\r\n\r\n constructor(private api: ssApiService, private gb: GlobalServices) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n\r\n let email = localStorage.getItem('email');\r\n\r\n if (email == null) {\r\n email = '';\r\n } else {\r\n this.DisableEmail = true;\r\n console.log(1111122222, this.PasswordField);\r\n this.PasswordField.nativeElement.focus();\r\n }\r\n\r\n this.signinForm = new UntypedFormGroup({\r\n 'email': new UntypedFormControl(email, [Validators.required, Validators.email]),\r\n 'password': new UntypedFormControl('', [Validators.required, Validators.minLength(1)])\r\n });\r\n }\r\n\r\n\r\n checkEmailValid(): boolean {\r\n\r\n if (!this.signinForm.get('email').touched)\r\n return true;\r\n\r\n return this.signinForm.get('email').valid;\r\n }\r\n\r\n checkPasswordValid(): boolean {\r\n\r\n if (!this.signinForm.get('password').touched)\r\n return true;\r\n\r\n return this.signinForm.get('password').valid;\r\n }\r\n\r\n private ResetSigninFormSubmitRequest(request: Subscription) {\r\n request.unsubscribe();\r\n this.showTimeout = false;\r\n this.onBusyChanged.emit(false);\r\n }\r\n\r\n async onSigninFormSubmit() {\r\n\r\n\r\n this.onBusyChanged.emit(true);\r\n\r\n let data = new LoginRequest();\r\n data.Username = this.signinForm.get('email').value;\r\n data.Password = this.signinForm.get('password').value;\r\n data.Checksum = 'SDFSJKFHWEK524746SFDHSKFHk!1ksdhfskldhfkls246424DDDfFaustoksdCaltabianoDDD!!!';\r\n\r\n this.signinForm.setValue['password'] = '';\r\n\r\n let request = this.api.Login(data)\r\n .subscribe(response => {\r\n this.ResetSigninFormSubmitRequest(request);\r\n\r\n if (!response.Result && response.Message == 'LOCKED') {\r\n // locked\r\n this.onLocked.emit(response);\r\n return;\r\n } else if (!response.Result && response.Data != undefined && response.Data.UnfinishedOrderID != undefined) {\r\n // unfinished order\r\n // this.gb.SetGlobalsFromLoginResponse(response.Data);\r\n this.onUnfinishedOrder.emit(response.Data.UnfinishedOrderID);\r\n // this.onAuthenticated.emit(response);\r\n return;\r\n } else if (!response.Result) {\r\n // error\r\n this.ShowError = true;\r\n this.ErrorMessage = 'Invalid username or password.';\r\n this.onAuthenticationFailed.emit(response.Data);\r\n return;\r\n }\r\n\r\n\r\n let data = response.Data;\r\n if (!data.Authenticated && !data.TwoFactorRequired) {\r\n // not authenticated\r\n this.onAuthenticationFailed.emit(data);\r\n return;\r\n }\r\n\r\n\r\n // we are authenticated\r\n this.gb.SetGlobalsFromLoginResponse(data);\r\n\r\n\r\n if (data.TwoFactorRequired) {\r\n // twofactor required\r\n this.onTwoFactorRequired.emit(data.TwoFactorOptions);\r\n return;\r\n }\r\n\r\n this.onAuthenticated.emit(response);\r\n },\r\n\r\n\r\n (error: any) => {\r\n\r\n this.ResetSigninFormSubmitRequest(request);\r\n\r\n // console.log(data);\r\n this.onError.emit(new ErrorEventArgs('0', error.OriginalError, error.FriendlyMessage, error.FriendlyTitle));\r\n }\r\n );\r\n\r\n\r\n // set timeout\r\n this.showTimeout = true;\r\n\r\n setTimeout(() => {\r\n\r\n this.ResetSigninFormSubmitRequest(request);\r\n\r\n if (this.showTimeout)\r\n this.onError.emit(new ErrorEventArgs('0', 'timeout', 'Error connecting to server. Please try again later.', 'Timeout Error'));\r\n\r\n }, this.gb.HttpTimeout);\r\n\r\n }\r\n\r\n\r\n\r\n}\r\n","import { DialogService } from 'primeng/dynamicdialog';\r\nimport { IBaseResponse } from '../../models/comm-http/responses/BaseResponse';\r\nimport { KeyValuePairArray } from '../../models/KeyValuePair';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { xToastr, ToastrTypes } from '../../shared/Toastr';\r\n\r\nimport { IErrorEventArgs } from 'app/models/event-args/global-error.event.args';\r\nimport { CompleteOrderDialogComponent } from 'app/dialogs/complete-order/complete-order-dialog.component';\r\nimport { AddCreditCardDialogComponent } from 'app/dialogs/add-credit-card/add-credit-card-dialog.component';\r\nimport { Title, Meta } from '@angular/platform-browser';\r\nimport { GlobalServices } from 'app/services/global.service';\r\n\r\nexport enum FormTypes {\r\n SigninForm = 0,\r\n SigninFormTest = 1,\r\n TwoFactorChoiceForm = 2,\r\n TwoFactorCodeForm = 3,\r\n ForgotPasswordForm = 4,\r\n Redirect = 5,\r\n Locked = 6\r\n}\r\n\r\n@Component({\r\n selector: 'signin',\r\n templateUrl: './signin.component.html',\r\n styleUrls: ['./signin.component.css'],\r\n providers: [DialogService]\r\n})\r\nexport class SigninComponent implements OnInit, OnDestroy {\r\n\r\n private RedirectTo: string;\r\n\r\n TwoFactorOptions: KeyValuePairArray;\r\n IsBusy: boolean = false;\r\n\r\n IsWelcomeBack: boolean = false;\r\n\r\n // DATA SUBSCRIPTION VARIABLES\r\n paramsSubscribe: any;\r\n routeParams: object;\r\n\r\n SelectedForm: FormTypes = FormTypes.SigninForm;\r\n\r\n\r\n constructor(private router: Router,\r\n private dialogService: DialogService,\r\n private route: ActivatedRoute,\r\n private gb : GlobalServices ) {\r\n // subscribe and add to list\r\n this.ShowForm(FormTypes.SigninForm);\r\n this.paramsSubscribe = this.route.params.subscribe(params => this.routeParams = params);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.paramsSubscribe.unsubscribe();\r\n }\r\n\r\n ngOnInit() {\r\n \r\n //this.titleService.setTitle(\"Member Login | Structure Studios\");\r\n //this.meta.updateTag();\r\n \r\n this.gb.SetPageTitle( \"Login\", \"Existing Members login page to manage their account.\" )\r\n \r\n // Remove email from localstorage if it exists\r\n localStorage.removeItem('email');\r\n\r\n if (this.routeParams['welcomeBack'] != undefined) {\r\n this.IsWelcomeBack = true;\r\n } else if (this.route.snapshot.queryParams['forgotPassword'] != undefined) {\r\n this.SelectedForm = FormTypes.ForgotPasswordForm;\r\n } else if (this.routeParams['token'] != undefined) {\r\n this.dialogService.open(AddCreditCardDialogComponent, {});\r\n }\r\n }\r\n\r\n ShowForm(form: FormTypes) {\r\n\r\n this.SelectedForm = form;\r\n }\r\n\r\n\r\n onBusyChanged(isBusy: boolean) {\r\n this.IsBusy = isBusy;\r\n }\r\n\r\n onAuthenticated(ev: IBaseResponse) {\r\n this.ShowForm(FormTypes.Redirect);\r\n console.log('On Authenticated!');\r\n\r\n setTimeout(() => {\r\n let redirect = localStorage.getItem('loginRedirect');\r\n\r\n if (redirect) {\r\n this.router.navigate([redirect]);\r\n } else {\r\n if (ev.Redirect != null)\r\n this.router.navigate([ev.Redirect]);\r\n else\r\n this.router.navigate(['account/product-memberships']);\r\n }\r\n\r\n }, 2500);\r\n\r\n }\r\n\r\n onTwoFactorRequired(twoFactorOptions: KeyValuePairArray) {\r\n this.TwoFactorOptions = twoFactorOptions;\r\n this.ShowForm(FormTypes.TwoFactorChoiceForm);\r\n }\r\n\r\n onTwoFactorCodeSent() {\r\n this.ShowForm(FormTypes.TwoFactorCodeForm);\r\n }\r\n\r\n onForgotPassword() {\r\n this.ShowForm(FormTypes.ForgotPasswordForm);\r\n }\r\n\r\n onForgotPasswordCancel() {\r\n this.ShowForm(FormTypes.SigninForm);\r\n }\r\n\r\n onLocked() {\r\n this.ShowForm(FormTypes.Locked);\r\n }\r\n\r\n onUnfinishedOrder(ufoid: string) {\r\n\r\n console.log('Unfinished Order!');\r\n\r\n this.dialogService.open(CompleteOrderDialogComponent, {data: {\r\n UFOID: ufoid,\r\n fromLogin: false\r\n }});\r\n\r\n }\r\n\r\n onError(ev: IErrorEventArgs) {\r\n xToastr.ShowToast(ToastrTypes.Error, ev.FriendlyErrorTitle, ev.FriendlyErrorMessage);\r\n\r\n if (this.SelectedForm == FormTypes.TwoFactorChoiceForm)\r\n this.ShowForm(FormTypes.SigninForm);\r\n }\r\n\r\n onCancel() {\r\n\r\n if (this.SelectedForm == FormTypes.TwoFactorChoiceForm)\r\n this.ShowForm(FormTypes.SigninForm);\r\n else if (this.SelectedForm == FormTypes.TwoFactorCodeForm)\r\n this.ShowForm(FormTypes.TwoFactorChoiceForm);\r\n else\r\n this.ShowForm(FormTypes.SigninForm);\r\n }\r\n\r\n}\r\n","import { GlobalServices } from '../../../services/global.service';\r\nimport { ErrorEventArgs } from '../../../models/event-args/global-error.event.args';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { CommTypes, SendTwoFactorCodeOptionRequest } from '../../../models/ss-api/requests/sendTwoFactorCodeOption.request';\r\nimport { Subscription } from 'rxjs';\r\nimport { KeyValuePair, KeyValuePairArray } from '../../../models/KeyValuePair';\r\nimport { HttpError } from '../../../models/errors/HttpError';\r\nimport { Component, OnInit, EventEmitter, Output, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'twofactor-choice',\r\n templateUrl: './twofactor-choice-form.component.html',\r\n // styleUrls: ['./signin.component.css'],\r\n})\r\nexport class TwoFactorChoiceFormComponent implements OnInit {\r\n\r\n // inputs\r\n @Input('TwoFactorOptions') TwoFactorOptions: KeyValuePairArray;\r\n\r\n // outputs\r\n @Output('onBusyChanged') onBusyChanged = new EventEmitter();\r\n @Output('onError') onError = new EventEmitter();\r\n @Output('onCodeSent') onCodeSent = new EventEmitter();\r\n @Output('onCancel') onCancel = new EventEmitter();\r\n\r\n // public\r\n public SelectedOption: KeyValuePair;\r\n\r\n // private\r\n private showTimeout: boolean = true;\r\n\r\n constructor(private api: ssApiService, private gb: GlobalServices) {\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n Cancel() {\r\n this.onCancel.emit();\r\n }\r\n\r\n private ResetSigninFormSubmitRequest(request: Subscription) {\r\n request.unsubscribe();\r\n this.showTimeout = false;\r\n this.onBusyChanged.emit(false);\r\n }\r\n\r\n async CodeRequestSubmit() {\r\n\r\n\r\n this.onBusyChanged.emit(true);\r\n\r\n\r\n let data = new SendTwoFactorCodeOptionRequest();\r\n if (this.SelectedOption.Key == 'EMAIL') {\r\n data.CommType = CommTypes.Email;\r\n } else if (this.SelectedOption.Key = 'SMS') {\r\n data.CommType = CommTypes.SMS;\r\n }\r\n\r\n data.CommValue = this.SelectedOption.Value;\r\n data.Token = this.gb.Token;\r\n\r\n\r\n let request = this.api.SendTwoFactorCode(data)\r\n .subscribe(response => {\r\n\r\n this.ResetSigninFormSubmitRequest(request);\r\n\r\n\r\n if (!response.Result) {\r\n // error\r\n let error = this.onError.emit(new ErrorEventArgs('0', response.Message, response.Message, 'Error'));\r\n return;\r\n }\r\n\r\n\r\n this.onCodeSent.emit(response.Data);\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n\r\n this.ResetSigninFormSubmitRequest(request);\r\n\r\n this.onError.emit(new ErrorEventArgs('0', error.OriginalError, error.FriendlyMessage, error.FriendlyTitle));\r\n }\r\n );\r\n\r\n\r\n // set timeout\r\n this.showTimeout = true;\r\n\r\n setTimeout(() => {\r\n\r\n this.ResetSigninFormSubmitRequest(request);\r\n\r\n if (this.showTimeout)\r\n this.onError.emit(new ErrorEventArgs('0', 'timeout', 'Error connecting to server. Please try again later.', 'Timeout Error'));\r\n\r\n }, this.gb.HttpTimeout);\r\n\r\n }\r\n\r\n\r\n\r\n}\r\n","import { IBaseResponse } from '../../../models/comm-http/responses/BaseResponse';\r\nimport { ErrorEventArgs } from '../../../models/event-args/global-error.event.args';\r\nimport { ssApiService } from '../../../services/ss-api.service';\r\nimport { GlobalServices } from '../../../services/global.service';\r\nimport { TwoFactorAuthenticationRequest } from '../../../models/ss-api/requests/twoFactorAuthentication.request';\r\nimport { Subscription } from 'rxjs';\r\nimport { HttpError } from '../../../models/errors/HttpError';\r\nimport { Component, OnInit, EventEmitter, Output } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'twofactor-code',\r\n templateUrl: './twofactor-code-form.component.html',\r\n // styleUrls: ['./signin.component.css'],\r\n})\r\nexport class TwoFactorCodeFormComponent implements OnInit {\r\n\r\n // events\r\n @Output('onBusyChanged') onBusyChanged = new EventEmitter();\r\n @Output('onCancel') onCancel = new EventEmitter();\r\n @Output('onError') onError = new EventEmitter();\r\n @Output('onAuthenticated') onAuthenticated = new EventEmitter>();\r\n\r\n // form\r\n codeForm: FormGroup;\r\n\r\n // private\r\n showTimeout: boolean = true;\r\n\r\n constructor(private api: ssApiService, private gb: GlobalServices) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.codeForm = new FormGroup({\r\n 'code': new FormControl(null, [Validators.required, Validators.minLength(4)])\r\n });\r\n }\r\n\r\n Cancel() {\r\n this.onCancel.emit();\r\n }\r\n\r\n private ResetSigninFormSubmitRequest(request: Subscription) {\r\n request.unsubscribe();\r\n this.showTimeout = false;\r\n this.onBusyChanged.emit(false);\r\n }\r\n\r\n async CodeSubmit() {\r\n\r\n\r\n this.onBusyChanged.emit(true);\r\n\r\n\r\n let data = new TwoFactorAuthenticationRequest();\r\n data.Code = this.codeForm.get('code').value;\r\n data.Token = this.gb.Token;\r\n\r\n let request = this.api.TwoFactorAuthentication(data)\r\n .subscribe(response => {\r\n\r\n this.ResetSigninFormSubmitRequest(request);\r\n\r\n if (!response.Result) {\r\n // error\r\n let error =\r\n this.onError.emit(new ErrorEventArgs('0', response.Message, response.Message, 'Error'));\r\n return;\r\n }\r\n\r\n this.onAuthenticated.emit(response);\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n\r\n this.ResetSigninFormSubmitRequest(request);\r\n\r\n this.onError.emit(new ErrorEventArgs('0', error.OriginalError, error.FriendlyMessage, error.FriendlyTitle));\r\n }\r\n );\r\n\r\n\r\n // set timeout\r\n this.showTimeout = true;\r\n\r\n setTimeout(() => {\r\n\r\n this.ResetSigninFormSubmitRequest(request);\r\n\r\n if (this.showTimeout)\r\n this.onError.emit(new ErrorEventArgs('0', 'timeout', 'Error connecting to server. Please try again later.', 'Timeout Error'));\r\n\r\n }, this.gb.HttpTimeout);\r\n\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { UnlockLoginRequest } from 'app/models/ss-api/requests/unlock.code.request';\r\n\r\n@Component({\r\n selector: 'unlock-login',\r\n templateUrl: './unlock-login.component.html',\r\n styleUrls: ['./unlock-login.component.scss']\r\n})\r\nexport class UnlockLoginComponent implements OnInit, OnDestroy {\r\n\r\n IsBusy: boolean = false;\r\n\r\n\r\n // ID's FROM ROUTE PARAMTERS\r\n routeParams: object;\r\n UnlockCode: string;\r\n\r\n // DATA SUBSCRIPTION VARIABLES\r\n paramsSubscribe: any;\r\n\r\n Title: string = 'trying to unlock';\r\n SubTitle: string = 'please wait ...';\r\n\r\n constructor(private route: ActivatedRoute, private api: ssApiService, private router: Router) {\r\n this.paramsSubscribe = this.route.params.subscribe(params => this.routeParams = params);\r\n }\r\n\r\n async ngOnInit() {\r\n\r\n\r\n // get param\r\n this.UnlockCode = this.routeParams['unlockCode'];\r\n\r\n // check param\r\n if (this.UnlockCode == undefined)\r\n window.location.href = 'http://www.structurestudios.com';\r\n\r\n // try tounlock\r\n await this.Unlock();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.paramsSubscribe.unsubscribe();\r\n }\r\n\r\n\r\n async Unlock() {\r\n\r\n let request = new UnlockLoginRequest();\r\n request.Code = this.UnlockCode;\r\n\r\n await this.api.UnlockLogin(request).toPromise()\r\n .then((result) => {\r\n\r\n if (result.Result)\r\n this.Redirect();\r\n\r\n else\r\n window.location.href = 'http://www.structurestudios.com';\r\n\r\n })\r\n .catch((error) => {\r\n window.location.href = 'http://www.structurestudios.com';\r\n });\r\n\r\n }\r\n\r\n\r\n Redirect() {\r\n\r\n this.Title = 'UNLOCKED!';\r\n this.SubTitle = 'Redirecting to login ...';\r\n\r\n setTimeout(() => {\r\n this.router.navigate(['authentication/signin']);\r\n }, 3000);\r\n\r\n }\r\n\r\n\r\n}\r\n","import { MemberTypes } from '../../models/ss-api/responses/login.response';\r\nimport { GlobalServices } from '../../services/global.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ConfirmDialogComponent } from 'app/dialogs/confirm/confirm-dialog.component';\r\n\r\nimport { ssApiService } from '../../services/ss-api.service';\r\nimport { UpgradeProductRequest } from '../../models/ss-api/requests/upgrade.product.request';\r\nimport { BillingRecurringTypes } from '../../models/ss-api/price.billing.cycle';\r\nimport { RegisterForTrainingEventRequest } from '../../models/ss-api/requests/register.for.training.event.request';\r\nimport { TrainingCalendarRequest } from '../../models/ss-api/requests/training.calendar.request';\r\nimport { MemberTrainingCertificatesRequest } from '../../models/ss-api/requests/member.training.certificates.request';\r\nimport { UpdateTrainingEventSubscriptionStatusRequest } from '../../models/ss-api/requests/update.training.event.subscription.status.request';\r\nimport { AttendanceStatusTypes } from '../../models/domain/training.event.subscription';\r\nimport { UpdateCreditCardExpirationRequest } from '../../models/ss-api/requests/update.credit.card.expiration.request';\r\nimport { CheckForExistingMemberRequest } from '../../models/ss-api/requests/check.for.existing.member.request';\r\nimport { GetTrainingClassesRequest } from 'app/models/ss-api/requests/get.training.classes.request';\r\nimport { HoldRequest } from 'app/models/ss-api/requests/hold.request';\r\nimport { ResumeLicenseRequest } from 'app/models/ss-api/requests/resume.license.request';\r\nimport { ResumeLicenseSimulationRequest } from 'app/models/ss-api/requests/resume.license.simulation.request';\r\nimport { UpdateMemberProfileRequest } from 'app/models/ss-api/requests/update.member.profile.request';\r\nimport { AddCreditCardRequest } from 'app/models/ss-api/requests/add.credit.card.request';\r\nimport { CreditCardTypes } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { environment } from 'environments/environment';\r\n\r\n\r\n@Component({\r\n selector: 'app-globals',\r\n templateUrl: './globals.component.html',\r\n styleUrls: ['./globals.component.css'],\r\n providers: [DialogService]\r\n})\r\nexport class GlobalsComponent implements OnInit {\r\n\r\n EnvName: string;\r\n BaseUrl: string;\r\n\r\n constructor(private dialogService: DialogService, public gb: GlobalServices, public api: ssApiService) {\r\n this.BaseUrl = api.GetBaseURL();\r\n this.EnvName = environment.envName;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n // this.showReactivateDialog();\r\n }\r\n\r\n\r\n MemberTypeToString(type: MemberTypes): string {\r\n return MemberTypes[type];\r\n }\r\n\r\n showDialog() {\r\n this.dialogService.open(ConfirmDialogComponent, {data: {\r\n message: 'This is a confirm dialog',\r\n\t\t\ttitle: 'Confirm Dialog',\r\n\t\t\tsubTitle: ''\r\n }});\r\n\r\n }\r\n\r\n showReactivateDialog() {\r\n /*\r\n var dialog = this.dialogService.addDialog(ReactivateCDKeyDialogComponent, {\r\n\t\t\ttitle: \"Title\",\r\n\t\t\tLicense:\r\n\t\t})\r\n */\r\n }\r\n\r\n simulateUpgrade() {\r\n let request = new UpgradeProductRequest();\r\n request.CreditCardID = 17;\r\n request.Initials = 'mm';\r\n request.LicenseKey = '4C4A7-2AC58-6C4A7';\r\n request.NewBillingCycle = BillingRecurringTypes.Yearly;\r\n request.NewProductID = 5;\r\n request.SimulateOnly = true;\r\n\r\n this.api.ProductsUpgrade(request).subscribe((response) => {\r\n console.log('Your YEARLY UPGRADE response is: ', response);\r\n });\r\n\r\n request.NewBillingCycle = BillingRecurringTypes.Monthly;\r\n request.SimulateOnly = true;\r\n this.api.ProductsUpgrade(request).subscribe((response) => {\r\n console.log('Your MONTHLY UPGRADE response is: ', response);\r\n });\r\n }\r\n\r\n CheckForExistingMember() {\r\n let request = new CheckForExistingMemberRequest();\r\n request.Email = 'tanyatest@structurestudios.com';\r\n request.Checksum = 'ADSFEWFF~!OMG1ITS5SNOWING3INVEGAS42!!!AND6ALL4FROZEN7DRINKS3ARE22HALF00OFF43IN65THE998CASINO';\r\n let subscription = this.api.CheckForExistingMember(request).subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('CheckForExistingMember-', result);\r\n });\r\n }\r\n\r\n CheckHoldEligibility() {\r\n let subscription = this.api.CheckHoldEligibility('MSGWF-584ES-8975S').subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('CheckHoldEligibility Result -', result);\r\n });\r\n\r\n }\r\n\r\n SetOnHold1(){\r\n console.log(\"Set on hold 1\");\r\n\r\n let request = new HoldRequest();\r\n request.CreditCardID = 18738;\r\n request.HoldItemID = 5;\r\n request.Initials = \"FC\";\r\n request.LicenseKey = \"MSGWF-584ES-8975S\";\r\n\r\n let subscription = this.api.HoldLicense(request).subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('Hold Result -', result);\r\n });\r\n\r\n }\r\n\r\n SetOnHold2(){\r\n console.log(\"Set on hold 2\");\r\n\r\n let request = new HoldRequest();\r\n request.CreditCardID = 18738;\r\n request.HoldItemID = 6;\r\n request.Initials = \"FC\";\r\n request.LicenseKey = \"MSGWF-584ES-8975S\";\r\n\r\n let subscription = this.api.HoldLicense(request).subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('Hold Result -', result);\r\n });\r\n }\r\n\r\n SetOnHold3(){\r\n console.log(\"Set on hold 3\");\r\n\r\n let request = new HoldRequest();\r\n request.CreditCardID = 18738;\r\n request.HoldItemID = 8;\r\n request.Initials = \"tt\";\r\n request.LicenseKey = \"MSGWF-584ES-8975S\";\r\n\r\n let subscription = this.api.HoldLicense(request).subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('Hold Result -', result);\r\n });\r\n }\r\n\r\n \r\n ExtendHold1(){\r\n console.log(\"Extend hold 1\");\r\n }\r\n \r\n ExtendHold2(){\r\n console.log(\"Extend hold 2\");\r\n }\r\n \r\n ExtendHold3(){\r\n console.log(\"Extend hold 3\");\r\n\r\n let request = new HoldRequest();\r\n request.CreditCardID = 18738;\r\n request.HoldItemID = 6;\r\n request.Initials = \"dd\";\r\n request.LicenseKey = \"MSGWF-584ES-8975S\";\r\n\r\n let subscription = this.api.ExtendHoldLicense(request).subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('Extend Hold Result -', result);\r\n }); \r\n }\r\n \r\n ResumeLicense1(){\r\n console.log(\"Resume License 1\");\r\n }\r\n \r\n ResumeLicense2(){\r\n console.log(\"Resume License 2\");\r\n }\r\n \r\n ResumeLicense3(){\r\n console.log(\"Resume License 3\");\r\n\r\n let request = new ResumeLicenseRequest();\r\n request.LicenseKey = \"MSGWF-584ES-8975S\";\r\n request.CreditCardID = 18738;\r\n request.Initials = \"dd\";\r\n\r\n let subscription = this.api.ResumeLicense(request).subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('Resume License Result -', result);\r\n }); \r\n\r\n } \r\n \r\n ResumeLicenseSimulation1(){\r\n console.log(\"Resume License Simulation 1\");\r\n }\r\n \r\n ResumeLicenseSimulation2(){\r\n console.log(\"Resume License Simulation 2\");\r\n }\r\n \r\n ResumeLicenseSimulation3(){\r\n console.log(\"Resume License Simulation 3\");\r\n\r\n let request = new ResumeLicenseSimulationRequest();\r\n request.LicenseKey = \"MSGWF-584ES-8975S\";\r\n request.Initials = \"dd\";\r\n\r\n let subscription = this.api.ResumeLicenseSimulation(request).subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('Resume License Simulation Result -', result);\r\n }); \r\n\r\n } \r\n\r\n GetTrainingClasses() {\r\n let request = new GetTrainingClassesRequest();\r\n request.Checksum = '543PikaChuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu!!!%$#';\r\n let subscription = this.api.GetTrainingClasses(request).subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('GetTrainingClasses-', result);\r\n });\r\n }\r\n\r\n GetTrainingCalendar() {\r\n let StartDate = new Date(new Date().getFullYear(), new Date().getMonth(), 1);\r\n let EndDate = new Date();\r\n let request = new TrainingCalendarRequest();\r\n request.StartDate = StartDate;\r\n request.EndDate = EndDate;\r\n let subscription = this.api.GetMemberTrainingCalendar(request).subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('calendar', result);\r\n });\r\n }\r\n\r\n GetTrainingHistory() {\r\n let subscription = this.api.GetTrainingHistory().subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('traininghistory-result', result);\r\n });\r\n\r\n }\r\n\r\n GetMemberTrainingCertificates() {\r\n let StartDate = new Date(new Date().getFullYear(), new Date().getMonth(), 1);\r\n let EndDate = new Date();\r\n\r\n let request = new MemberTrainingCertificatesRequest();\r\n request.StartDate = StartDate;\r\n request.EndDate = EndDate;\r\n\r\n let subscription = this.api.GetMemberTrainingCertificates(request).subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('first AttendeeFullName', result.Data[0].AttendeeFullName);\r\n console.log('certs', result);\r\n });\r\n }\r\n\r\n\r\n RegisterForTrainingEvent() {\r\n let request = new RegisterForTrainingEventRequest();\r\n request.AlternateEmail = 'alt@email.com';\r\n request.AlternatePhone = '702-867-5309';\r\n request.LicenseID = 25993; //Fausto\r\n request.TrainingEventID = 9; //Any valid Training Event\r\n let sub2 = this.api.RegisterForTrainingEvent(request).subscribe(result => {\r\n\r\n sub2.unsubscribe();\r\n\r\n console.log('trainingevent', result);\r\n });\r\n\r\n }\r\n\r\n\r\n CancelSubStatus() {\r\n let request = new UpdateTrainingEventSubscriptionStatusRequest();\r\n request.TrainingEventSubscriptionID = 4319;\r\n request.AttendanceStatusType = AttendanceStatusTypes.Cancelled;\r\n let sub2 = this.api.UpdateTrainingEventSubscriptionStatus(request).subscribe(result => {\r\n\r\n sub2.unsubscribe();\r\n\r\n console.log('cancelsubresult', result);\r\n });\r\n\r\n }\r\n\r\n UpdateCCExpiration() {\r\n let request = new UpdateCreditCardExpirationRequest();\r\n request.CreditCardID = 341528;\r\n request.ExpMonth = 4;\r\n request.ExpYear = 2024;\r\n let sub2 = this.api.CreditCardUpdateExpiration(request).subscribe(result => {\r\n\r\n sub2.unsubscribe();\r\n\r\n console.log('CreditCardUpdateExpiration-result:', result);\r\n });\r\n\r\n }\r\n\r\n RescheduleSubStatus() {\r\n let request = new UpdateTrainingEventSubscriptionStatusRequest();\r\n request.TrainingEventSubscriptionID = 4319;\r\n request.AttendanceStatusType = AttendanceStatusTypes.Rescheduled;\r\n let sub2 = this.api.UpdateTrainingEventSubscriptionStatus(request).subscribe(result => {\r\n\r\n sub2.unsubscribe();\r\n\r\n console.log('RescheduleSubStatusresult', result);\r\n });\r\n\r\n }\r\n\r\n \r\n AddCreditCard() {\r\n let request = new AddCreditCardRequest();\r\n\r\n request.UpdateMemberAddress = true;\r\n\r\n request.Address01 = \"123 Visa Lane\";\r\n request.CVV = 123;\r\n request.CardType = CreditCardTypes.VISA;\r\n request.City = \"Masterton\";\r\n request.Country = \"US\";\r\n request.CreditCardNumber = \"4111111111111111\";\r\n request.ExpMonth = 1;\r\n request.ExpYear = 2025;\r\n request.FirstName = \"Faaake\";\r\n request.LastFour = \"1111\";\r\n request.LastName = \"Caaard\";\r\n request.SetAsDefault = false;\r\n request.State = \"CA\";\r\n request.ZipCode = \"90210\";\r\n let sub2 = this.api.CreditCardAdd(request).subscribe(result => {\r\n\r\n sub2.unsubscribe();\r\n\r\n console.log('CreditCardAdd', result);\r\n });\r\n\r\n } \r\n\r\n MemberProfile() {\r\n let subscription = this.api.MemberProfile().subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('MemberProfile Result -', result);\r\n });\r\n\r\n }\r\n\r\n UpdateMemberProfile()\r\n {\r\n let request = new UpdateMemberProfileRequest();\r\n\r\n request.Companyname = \"String and Things\";\r\n\r\n request.Email = null; //A null indicates no change. To clear a field, pass an empty string.\r\n\r\n request.Address1 = \"123 El Camino Parkway\";\r\n request.City = \"Hayward\";\r\n request.State = \"CA\";\r\n request.Postcode = \"94567\";\r\n request.Country = null;\r\n \r\n request.Phonenumber = \"702-867-5309\";\r\n request.Phonenumber2 = null;\r\n request.FaxNumber = \"702-555-3339\";\r\n\r\n request.CurrentPassword = null;\r\n request.NewPassword = null;\r\n\r\n let subscription = this.api.UpdateMemberProfile(request).subscribe(result => {\r\n\r\n subscription.unsubscribe();\r\n\r\n console.log('UpdateMemberProfile-', result);\r\n });\r\n } \r\n\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { MemberTypes } from 'app/models/ss-api/responses/login.response';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface IAddCreditCardDialog {\r\n title: string;\r\n token: string;\r\n}\r\n\r\n@Component({\r\n selector: 'add-credit-card-dialog',\r\n styleUrls: ['./add-credit-card-dialog.component.css'],\r\n templateUrl: './add-credit-card-dialog.component.html'\r\n})\r\n\r\nexport class AddCreditCardDialogComponent implements IAddCreditCardDialog {\r\n\r\n title: string;\r\n token: string;\r\n\r\n isMember: boolean;\r\n\r\n result: any;\r\n \r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n public gb : GlobalServices\r\n ) {\r\n }\r\n\r\n\tngOnInit() {\r\n\t\tthis.gb.CheckMemberInfo();\r\n\r\n this.isMember = this.gb.MemberType == MemberTypes.Member;\r\n\t}\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n confirm() {\r\n // we set dialog result as true on click on confirm button,\r\n // then we can get dialog result from caller code\r\n this.result = true;\r\n this.close();\r\n\t}\r\n\t\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { SelectItem } from 'primeng/api';\r\nimport { GISBundleResponseArray, GISBundleResponse } from 'app/models/ss-api/responses/gis.bundle.response';\r\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { OrderGISRequest } from 'app/models/ss-api/requests/order.gis.request';\r\nimport { BaseResponse } from 'app/models/comm-http/responses/BaseResponse';\r\nimport { CreditCardResponseArray } from 'app/models/ss-api/responses/credit.card.response';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface IConfirmDialogModel {\r\n title: string;\r\n subTitle: string;\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: number;\r\n Bundle: GISBundleResponseArray;\r\n CDKey: string;\r\n}\r\n\r\n@Component({\r\n selector: 'add-gis-dialog',\r\n styleUrls: ['./add-gis-dialog.component.scss'],\r\n templateUrl: './add-gis-dialog.component.html'\r\n})\r\nexport class AddGISDialogComponent implements IConfirmDialogModel, OnInit {\r\n\r\n IsBusy: boolean = false;\r\n\r\n confirmTitle: string = 'Purchase GIS Bundle?';\r\n confirmMessage: string = 'You are about to purchase a GIS bundle. Your credit card will be billed.';\r\n\r\n successTitle: string = 'GIS Bundle Purchased';\r\n successMessage: string = 'Your purchase was successfull. The GIS credits are added to your account.';\r\n\r\n errorTitle: string = 'Error';\r\n errorMessage: string = 'We were not able to process this request. Try again later or use a different credit card.';\r\n\r\n cancelledTitle: string = 'Cancelled';\r\n cancelledMessage: string = 'You cancelled this order.';\r\n\r\n\r\n title: string;\r\n subTitle: string;\r\n CDKey: string;\r\n\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: number;\r\n Bundle: GISBundleResponseArray;\r\n SelectedBundle: GISBundleResponse = new GISBundleResponse;\r\n\r\n PurchaseDisabled: boolean = true;\r\n\r\n Credit: number = 0;\r\n TaxEnabled: boolean = false;\r\n State: string = \"\";\r\n TaxRateDisplay: string = \"\";\r\n\r\n result: any;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.title = this.config.data.title;\r\n this.subTitle = this.config.data.subTitle;\r\n this.CreditCards = this.config.data.CreditCards;\r\n this.SelectedCreditCard = this.config.data.SelectedCreditCard;\r\n this.Bundle = this.config.data.Bundle;\r\n this.CDKey = this.config.data.CDKey;\r\n this.GetCredit();\r\n \r\n if (this.CreditCards != undefined) {\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n }\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n CreditCardChanged(item: SelectItem) {\r\n\r\n }\r\n\r\n\r\n FormatCreditLabel(item: GISBundleResponse): string {\r\n\r\n let label = '';\r\n\r\n // label\r\n if (item.Credits == 1)\r\n label = 'One Credit';\r\n else if (item.Credits > 1)\r\n label = item.Credits + ' Credits';\r\n\r\n // price\r\n label += ' - $' + item.Price;\r\n\r\n return label;\r\n\r\n }\r\n\r\n\r\n BundleSelectionChanged(item: GISBundleResponse): void {\r\n\r\n if (this.SelectedCreditCard != null || this.SelectedCreditCard != undefined)\r\n this.PurchaseDisabled = false;\r\n\r\n this.SelectedBundle = item;\r\n\r\n this.TaxRateDisplay = this.SelectedBundle.TaxRateDisplay;\r\n this.State = this.SelectedBundle.State;\r\n this.TaxEnabled = this.SelectedBundle.TaxEnabled;\r\n\r\n }\r\n\r\n private PurchaseBundle(): Promise {\r\n\r\n if (this.SelectedCreditCard == undefined)\r\n // we didn't change the credit card selection\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n\r\n let request = new OrderGISRequest();\r\n request.CDKey = this.CDKey;\r\n request.CCID = Number(this.SelectedCreditCard);\r\n request.ProductID = this.SelectedBundle.ProductID;\r\n\r\n if (0 == 0)\r\n\r\n\r\n return this.api.GISOrder(request)\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.result = response.Result;\r\n return response;\r\n });\r\n }\r\n\r\n ProcessOrder(): Promise {\r\n // confirm\r\n return Swal.fire({\r\n title: this.confirmTitle,\r\n text: this.confirmMessage,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes, order!',\r\n cancelButtonText: 'No, cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // try to order\r\n return this.PurchaseBundle();\r\n }\r\n });\r\n\r\n }\r\n\r\n async confirm() {\r\n await this.ProcessOrder().then(\r\n (response: any) => {\r\n\r\n // init dialog vars\r\n let cType = 'success';\r\n let cTitle = this.successTitle;\r\n let cMessage = this.successMessage;\r\n\r\n if (response.isDismissed) {\r\n cType = 'error';\r\n cTitle = this.cancelledTitle;\r\n cMessage = this.cancelledMessage;\r\n } else if (!response.value || !response.value.Result) {\r\n // not ok\r\n cType = 'error';\r\n cTitle = this.errorTitle;\r\n cMessage = this.errorMessage;\r\n }\r\n\r\n // show result\r\n Swal.fire(\r\n {\r\n title: cTitle,\r\n text: cMessage,\r\n icon: cType as SweetAlertIcon,\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1500\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: this.cancelledTitle,\r\n text: this.cancelledMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n\r\n this.close();\r\n }\r\n\r\n cancel() {\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n showAddCreditCard: boolean = false;\r\n\r\n cardAdded({cards, newCardId}: {cards: CreditCardResponseArray, newCardId: number}) {\r\n this.showAddCreditCard = false;\r\n this.updateCreditCardOptions(cards);\r\n this.SelectedCreditCard = newCardId;\r\n\r\n if ((this.SelectedCreditCard != null || this.SelectedCreditCard != undefined) && (this.SelectedBundle.Credits != undefined))\r\n this.PurchaseDisabled = false;\r\n }\r\n\r\n addCardCanceled() {\r\n this.showAddCreditCard = false;\r\n }\r\n\r\n updateCreditCardOptions(newCards: CreditCardResponseArray) {\r\n this.CreditCards = [];\r\n newCards.forEach(card => {\r\n this.CreditCards.push(\r\n {\r\n label: 'Name: ' + card.FirstName + ' ' + card.LastName +\r\n ' - Last four: ' + card.LastFour +\r\n ' - exp. Date: ' + card.ExpMonth + '/' + card.ExpYear,\r\n value: card.ID\r\n });\r\n });\r\n }\r\n\r\n\r\n GetCredit() {\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.MemberCredit().subscribe(response => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n this.Credit = response.Data;\r\n }, error => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n GetPriceDue(): number {\r\n let totalPriceDue: number = 0;\r\n totalPriceDue += this.SelectedBundle.TotalWithTax;\r\n totalPriceDue -= this.Credit;\r\n if (totalPriceDue < 0 || Number.isNaN(totalPriceDue))\r\n totalPriceDue = 0;\r\n\r\n return totalPriceDue;\r\n\r\n }\r\n\r\n CreditUsed(): number {\r\n if (this.Credit > this.SelectedBundle.TotalWithTax)\r\n return this.SelectedBundle.TotalWithTax;\r\n else if (this.SelectedBundle.TotalWithTax)\r\n return this.Credit;\r\n else\r\n return 0;\r\n }\r\n\r\n}\r\n","import { BaseResponse } from '../../models/comm-http/responses/BaseResponse';\r\nimport { BillingRecurringTypes } from '../../models/ss-api/price.billing.cycle';\r\nimport { PublicOrderProductsResponseArray, PublicOrderProductsResponse } from '../../models/ss-api/responses/public.order.products.response';\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { AddProductRequest } from 'app/models/ss-api/requests/add.product.request';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { CreditCardResponseArray } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { GlobalServices } from '../../services/global.service';\r\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\r\nimport { MemberProfile } from 'app/models/domain/member.profile';\r\n\r\nexport interface IAddProductDialogModel {\r\n title: string;\r\n subTitle: string;\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: number;\r\n Products: PublicOrderProductsResponseArray;\r\n memberProfile?: MemberProfile\r\n}\r\n\r\n@Component({\r\n selector: 'add-product-dialog',\r\n styleUrls: ['./add-product-dialog.component.scss'],\r\n templateUrl: './add-product-dialog.component.html'\r\n})\r\nexport class AddProductDialogComponent implements OnInit, IAddProductDialogModel {\r\n\r\n IsBusy: boolean = false;\r\n\r\n confirmTitle: string = 'Add Product';\r\n confirmMessage: string = 'You are about to purchase a new product subscription. Your credit card will be billed.';\r\n\r\n successTitle: string = 'Product added';\r\n successMessage: string = 'Your purchase was successfull. You will recieve an email with your new License Key.';\r\n\r\n errorTitle: string = 'Error';\r\n errorMessage: string = 'We were not able to process this request. Try again later or use a different credit card.';\r\n\r\n cancelledTitle: string = 'Cancelled';\r\n cancelledMessage: string = 'You cancelled this order.';\r\n\r\n\r\n AssignToOwner: boolean = false;\r\n Initials: string = '';\r\n title: string;\r\n subTitle: string;\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: number;\r\n Products: PublicOrderProductsResponseArray = new PublicOrderProductsResponseArray();\r\n memberProfile: MemberProfile;\r\n\r\n OrderForm: UntypedFormGroup;\r\n\r\n SelectedProduct: PublicOrderProductsResponse = new PublicOrderProductsResponse();\r\n SelectedBillingCycle: BillingRecurringTypes;\r\n SelectedPrice: number = 0;\r\n SelectedSetupFee: number = 0;\r\n\r\n PurchaseDisabled: boolean = true;\r\n ProductSelected: boolean = false;\r\n\r\n DesignerFieldsHidden: boolean = true;\r\n DesignerName: string;\r\n DesignerEmail: string;\r\n\r\n Credit: number = 3;\r\n\r\n PriceDue: number = 0;\r\n\r\n IsYardSelected: boolean = false;\r\n DisableYard: boolean = true;\r\n YardFee: number = 0;\r\n YardTax: number = 0;\r\n\r\n TaxEnabled: boolean = false;\r\n State: string = \"\";\r\n TaxRateDisplay: string = \"\";\r\n TaxAmount: number;\r\n TaxRate: number;\r\n\r\n AssignmentOptions: SelectItem[];\r\n KeyAssignment: SelectItem;\r\n\r\n result: any;\r\n\r\n currentModalStep: number = 1;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService,\r\n private gb: GlobalServices\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.title = this.config.data.title;\r\n this.subTitle = this.config.data.subTitle;\r\n this.CreditCards = this.config.data.CreditCards;\r\n this.Products = this.config.data.Products;\r\n this.SelectedCreditCard = this.config.data.SelectedCreditCard;\r\n this.memberProfile = this.config.data.memberProfile;\r\n\r\n this.AssignmentOptions = [\r\n { label: `Me: Only ${this.memberProfile.Firstname} ${this.memberProfile.Lastname} will have access`, value: 1 },\r\n { label: 'New Designer', value: 2 }\r\n ];\r\n this.KeyAssignment = this.AssignmentOptions[0];\r\n\r\n setTimeout(() => {\r\n let productID = Number(localStorage.getItem('cartProductID'));\r\n let billingCycle = Number(localStorage.getItem('cartBillingCycle'));\r\n let yard = Boolean(localStorage.getItem('cartHasYard'));\r\n\r\n if (productID && billingCycle) {\r\n let product = this.Products.filter(product => product.ProductID == productID)[0];\r\n this.SetSelectedProduct(product, billingCycle);\r\n this.SelectedBillingCycle = billingCycle;\r\n if (yard) {\r\n this.IsYardSelected = true;\r\n }\r\n } else {\r\n this.SetSelectedProduct(this.Products[0], BillingRecurringTypes.Monthly);\r\n }\r\n\r\n if (this.CreditCards) {\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n }\r\n }, 500);\r\n\r\n this.GetCredit();\r\n\r\n this.OrderForm = new UntypedFormGroup({\r\n 'confirmInitials': new UntypedFormControl('', [Validators.required, Validators.minLength(2)]),\r\n });\r\n\r\n }\r\n\r\n YardAvailable(product: PublicOrderProductsResponse) {\r\n\r\n if (product.YardAddon == null || product.YardAddon == undefined)\r\n return false;\r\n\r\n var isDevPublic = this.gb.IsDevPublic();\r\n var isLocal = this.gb.IsLocal();\r\n\r\n //console.log(\"Item: \", product.Name);\r\n //console.log(\"YardVisiblePublic: \", product.YardVisiblePublic);\r\n //console.log(\"isDevPublic: \", isDevPublic);\r\n //console.log(\"isLocal: \", isLocal);\r\n\r\n if (!product.YardVisiblePublic && (!isDevPublic && !isLocal))\r\n return false;\r\n\r\n // ok\r\n return true;\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n GetCredit() {\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.MemberCredit().subscribe(response => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n this.Credit = response.Data;\r\n }, error => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n CreditCardChanged(item: SelectItem) {\r\n\r\n }\r\n\r\n MonthlySelected(product: PublicOrderProductsResponse) {\r\n this.SetSelectedProduct(product, BillingRecurringTypes.Monthly);\r\n }\r\n\r\n YearlySelected(product: PublicOrderProductsResponse) {\r\n this.SetSelectedProduct(product, BillingRecurringTypes.Yearly);\r\n }\r\n\r\n SetSelectedProduct(product: PublicOrderProductsResponse, billingCycle: BillingRecurringTypes) {\r\n\r\n this.SelectedProduct = product;\r\n if (billingCycle) {\r\n this.SelectedBillingCycle = billingCycle;\r\n }\r\n this.SelectedPrice = product.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Price;\r\n this.SelectedSetupFee = product.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Setup;\r\n\r\n if (product.YardAddon != null && product.YardAddon != undefined && this.IsYardSelected)\r\n this.YardFee = product.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Price;\r\n else\r\n this.YardFee = 0;\r\n\r\n console.log(\"selectedprod\", this.SelectedProduct);\r\n this.TaxEnabled = this.SelectedProduct.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).TaxEnabled;\r\n this.TaxRateDisplay = this.SelectedProduct.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).TaxRateDisplay;\r\n this.State = this.SelectedProduct.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).State;\r\n this.TaxAmount = this.SelectedProduct.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).TaxAmount;\r\n\r\n this.TaxRate = this.SelectedProduct.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).TaxRate;\r\n this.TaxRate = this.TaxRate / 100;\r\n\r\n this.ProductSelected = true;\r\n\r\n this.YardTax = this.YardFee * this.TaxRate;\r\n this.YardTax = this.YardTax * 100;\r\n this.YardTax = Math.round(this.YardTax);\r\n this.YardTax = this.YardTax / 100;\r\n this.TaxAmount = this.TaxAmount + this.YardTax;\r\n\r\n this.PriceDue = this.SelectedPrice + this.SelectedSetupFee + this.YardFee + this.TaxAmount - this.Credit;\r\n if (this.PriceDue < 0)\r\n this.PriceDue = 0;\r\n\r\n this.CheckPurchaseDisabled();\r\n }\r\n\r\n billingCycleChange(e) {\r\n this.SelectedBillingCycle = e.checked ? BillingRecurringTypes.Yearly : BillingRecurringTypes.Monthly;\r\n this.SetSelectedProduct(this.SelectedProduct, this.SelectedBillingCycle);\r\n }\r\n\r\n AssignmentChanged(e) {\r\n this.KeyAssignment = this.AssignmentOptions.find(option => option.value === e.value);\r\n this.DesignerFieldsHidden = this.KeyAssignment.value != 2;\r\n if (this.DesignerFieldsHidden) {\r\n this.DesignerName = '';\r\n this.DesignerEmail = '';\r\n this.CheckPurchaseDisabled()\r\n }\r\n }\r\n\r\n YardSelected(event: any, product: PublicOrderProductsResponse) {\r\n\r\n this.IsYardSelected = event.checked;\r\n\r\n }\r\n\r\n\r\n\r\n InitialsChanged(data: string) {\r\n this.CheckPurchaseDisabled();\r\n }\r\n\r\n\r\n\r\n CheckDesignerFields() {\r\n if (this.DesignerFieldsHidden || (!this.DesignerFieldsHidden && (this.DesignerEmail != undefined && this.DesignerEmail.length > 1) && (this.DesignerName != undefined && this.DesignerName.length > 1))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n CheckPurchaseDisabled() {\r\n if (this.ProductSelected && this.CreditCards.length > 0 && this.CheckDesignerFields()) {\r\n this.PurchaseDisabled = false;\r\n } else {\r\n this.PurchaseDisabled = true;\r\n }\r\n }\r\n\r\n IsBillingCycleSelected(product, cycle): boolean {\r\n if (this.SelectedBillingCycle == cycle && this.SelectedProduct.ProductID == product) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n SelectedBillingCycleToString(): string {\r\n\r\n switch (this.SelectedBillingCycle) {\r\n\r\n case BillingRecurringTypes.Monthly:\r\n return 'month';\r\n\r\n case BillingRecurringTypes.Yearly:\r\n return 'year';\r\n\r\n default:\r\n return 'unimplemented';\r\n }\r\n\r\n }\r\n\r\n private PurchaseProduct(): Promise {\r\n\r\n if (this.SelectedCreditCard == undefined)\r\n // we didn't change the credit card selection\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n\r\n let request = new AddProductRequest();\r\n request.ProductID = this.SelectedProduct.ProductID;\r\n request.CreditCardID = Number(this.SelectedCreditCard);\r\n request.BillingCycle = this.SelectedBillingCycle;\r\n request.AssignToOwner = this.AssignToOwner;\r\n request.Initials = this.Initials;\r\n request.AdminID = this.gb.AdminID;\r\n request.YardAddon = this.IsYardSelected;\r\n\r\n if (!this.DesignerFieldsHidden) {\r\n if (this.DesignerEmail == '' && this.DesignerName == '') {\r\n Swal.fire({\r\n icon: 'warning',\r\n title: 'Missing Designer Information',\r\n text: 'Please fill in the Designer Name and Designer Email fields to purchase this license'\r\n });\r\n return;\r\n } else {\r\n request.DesignerEmail = this.DesignerEmail;\r\n request.DesignerName = this.DesignerName;\r\n }\r\n }\r\n\r\n return this.api.ProductsAdd(request)\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return response; // error\r\n\r\n this.result = response.Result;\r\n return response;\r\n });\r\n }\r\n\r\n ProcessOrder(): Promise {\r\n // confirm\r\n\r\n return Swal.fire({\r\n title: this.confirmTitle,\r\n text: this.confirmMessage,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes, order!',\r\n cancelButtonText: 'No, cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // try to order\r\n return this.PurchaseProduct();\r\n }\r\n });\r\n\r\n }\r\n\r\n async confirm() {\r\n\r\n await this.ProcessOrder()\r\n .then(\r\n (response: any) => {\r\n\r\n // init dialog vars\r\n let cType = 'success';\r\n let cTitle = this.successTitle;\r\n let cMessage = this.successMessage;\r\n\r\n if (response.isDismissed) {\r\n cType = 'error';\r\n cTitle = this.cancelledTitle;\r\n cMessage = this.cancelledMessage;\r\n } else if (!response.value || !response.value.Result) {\r\n // not ok\r\n cType = 'error';\r\n cTitle = this.errorTitle;\r\n cMessage = response.Data;\r\n }\r\n\r\n // show result\r\n Swal.fire(\r\n {\r\n title: cTitle,\r\n text: cMessage,\r\n icon: cType as SweetAlertIcon,\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 10000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: this.cancelledTitle,\r\n text: this.cancelledMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n\r\n this.gb.ClearOrderFormLocalStorage();\r\n\r\n this.result = true;\r\n this.close();\r\n }\r\n\r\n cancel() {\r\n // we set dialog result as true on click on confirm button,\r\n // then we can get dialog result from caller code\r\n this.gb.ClearOrderFormLocalStorage();\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n next() {\r\n this.currentModalStep = 2;\r\n }\r\n\r\n back() {\r\n this.currentModalStep = 1;\r\n }\r\n\r\n showAddCreditCard: boolean = false;\r\n\r\n cardAdded({ cards, newCardId }: { cards: CreditCardResponseArray, newCardId: number }) {\r\n this.showAddCreditCard = false;\r\n this.updateCreditCardOptions(cards);\r\n this.SelectedCreditCard = newCardId;\r\n this.CheckPurchaseDisabled();\r\n }\r\n\r\n addCardCanceled() {\r\n this.showAddCreditCard = false;\r\n }\r\n\r\n updateCreditCardOptions(newCards: CreditCardResponseArray) {\r\n this.CreditCards = [];\r\n newCards.forEach(card => {\r\n this.CreditCards.push(\r\n {\r\n label: 'Name: ' + card.FirstName + ' ' + card.LastName +\r\n ' - Last four: ' + card.LastFour +\r\n ' - exp. Date: ' + card.ExpMonth + '/' + card.ExpYear,\r\n value: card.ID\r\n });\r\n });\r\n }\r\n\r\n CreditUsed(): number {\r\n console.log(\"tta\", this.TaxAmount);\r\n if (this.Credit > (this.SelectedPrice + this.SelectedSetupFee + this.YardFee + this.TaxAmount))\r\n return this.SelectedPrice + this.SelectedSetupFee + this.YardFee + this.TaxAmount;\r\n else\r\n return this.Credit;\r\n }\r\n\r\n getProductPrice(product) {\r\n \r\n\r\n try {\r\n var productPrice = product.Prices.find(price => price.BillingCycle === this.SelectedBillingCycle).Price;\r\n\r\n var yardPrice = 0;\r\n\r\n if (this.YardAvailable(product) && this.IsYardSelected)\r\n yardPrice = product.YardAddon.Prices.find(price => price.BillingCycle === this.SelectedBillingCycle).Price;\r\n\r\n return productPrice + yardPrice;\r\n } catch (e) {\r\n\r\n }\r\n return 0;\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { KeyValuePairArray } from 'app/models/KeyValuePair';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { AddCreditCardDialogComponent } from '../add-credit-card/add-credit-card-dialog.component';\r\nimport { IBaseResponse } from 'app/models/comm-http/responses/BaseResponse';\r\nimport { CompleteOrderDialogComponent } from '../complete-order/complete-order-dialog.component';\r\nimport { IErrorEventArgs } from 'app/models/event-args/global-error.event.args';\r\nimport { xToastr, ToastrTypes } from 'app/shared/Toastr';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface ILoginDialogModel {\r\n IsWelcomeBack?: boolean;\r\n ProductID?: number;\r\n BillingCycle?: number;\r\n HasYard?: boolean;\r\n}\r\n\r\nexport enum FormTypes {\r\n SigninForm = 0,\r\n SigninFormTest = 1,\r\n TwoFactorChoiceForm = 2,\r\n TwoFactorCodeForm = 3,\r\n ForgotPasswordForm = 4,\r\n Redirect = 5,\r\n Locked = 6\r\n}\r\n\r\n@Component({\r\n selector: 'login-dialog',\r\n styleUrls: ['./auth-login-dialog.component.scss'],\r\n templateUrl: './auth-login-dialog.component.html',\r\n providers: [DialogService]\r\n})\r\nexport class LoginDialogComponent implements ILoginDialogModel, OnInit {\r\n\r\n TwoFactorOptions: KeyValuePairArray;\r\n IsBusy: boolean = false;\r\n\r\n IsWelcomeBack: boolean = false;\r\n ProductID: number;\r\n BillingCycle: number;\r\n HasYard: boolean;\r\n\r\n // DATA SUBSCRIPTION VARIABLES\r\n paramsSubscribe: any;\r\n routeParams: object;\r\n\r\n SelectedForm: FormTypes = FormTypes.SigninForm;\r\n\r\n result: any;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private router: Router, public dialogService: DialogService, private route: ActivatedRoute\r\n ) {\r\n // subscribe and add to list\r\n this.ShowForm(FormTypes.SigninForm);\r\n this.paramsSubscribe = this.route.params.subscribe(params => this.routeParams = params);\r\n }\r\n\r\n ngOnInit() {\r\n this.IsWelcomeBack = this.config.data.IsWelcomeBack;\r\n this.ProductID = this.config.data.ProductID;\r\n this.BillingCycle = this.config.data.BillingCycle;\r\n this.HasYard = this.config.data.HasYard;\r\n\r\n if (this.routeParams['welcomeBack'] != undefined) {\r\n this.IsWelcomeBack = true;\r\n } else if (this.route.snapshot.queryParams['forgotPassword'] != undefined) {\r\n this.SelectedForm = FormTypes.ForgotPasswordForm;\r\n } else if (this.routeParams['token'] != undefined) {\r\n this.dialogService.open(AddCreditCardDialogComponent, {});\r\n }\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n ShowForm(form: FormTypes) {\r\n\r\n this.SelectedForm = form;\r\n }\r\n\r\n UseDifferentEmail() {\r\n this.result = true;\r\n this.close();\r\n }\r\n\r\n\r\n onBusyChanged(isBusy: boolean) {\r\n this.IsBusy = isBusy;\r\n }\r\n\r\n onAuthenticated(ev: IBaseResponse) {\r\n this.ShowForm(FormTypes.Redirect);\r\n\r\n if (this.ProductID && this.BillingCycle) {\r\n localStorage.setItem('cartProductID', this.ProductID.toString());\r\n localStorage.setItem('cartBillingCycle', this.BillingCycle.toString());\r\n localStorage.setItem('cartHasYard', this.HasYard.toString());\r\n }\r\n\r\n setTimeout(() => {\r\n\r\n // load redirect\r\n if (ev.Redirect != null)\r\n this.router.navigate([ev.Redirect]);\r\n else\r\n this.router.navigate(['account/product-memberships']);\r\n\r\n this.close();\r\n\r\n }, 2500);\r\n\r\n }\r\n\r\n onTwoFactorRequired(twoFactorOptions: KeyValuePairArray) {\r\n this.TwoFactorOptions = twoFactorOptions;\r\n this.ShowForm(FormTypes.TwoFactorChoiceForm);\r\n }\r\n\r\n onTwoFactorCodeSent() {\r\n this.ShowForm(FormTypes.TwoFactorCodeForm);\r\n }\r\n\r\n onForgotPassword() {\r\n this.ShowForm(FormTypes.ForgotPasswordForm);\r\n }\r\n\r\n onForgotPasswordCancel() {\r\n this.ShowForm(FormTypes.SigninForm);\r\n }\r\n\r\n onLocked() {\r\n this.ShowForm(FormTypes.Locked);\r\n }\r\n\r\n onUnfinishedOrder(ufoid: string) {\r\n\r\n // var dialog = this.dialogService.addDialog(CompleteOrderDialogComponent, {\r\n // UFOID: ufoid\r\n // })\r\n\r\n }\r\n\r\n onError(ev: IErrorEventArgs) {\r\n xToastr.ShowToast(ToastrTypes.Error, ev.FriendlyErrorTitle, ev.FriendlyErrorMessage);\r\n\r\n if (this.SelectedForm == FormTypes.TwoFactorChoiceForm)\r\n this.ShowForm(FormTypes.SigninForm);\r\n }\r\n\r\n onCancel() {\r\n\r\n if (this.SelectedForm == FormTypes.TwoFactorChoiceForm)\r\n this.ShowForm(FormTypes.SigninForm);\r\n else if (this.SelectedForm == FormTypes.TwoFactorCodeForm)\r\n this.ShowForm(FormTypes.TwoFactorChoiceForm);\r\n else\r\n this.ShowForm(FormTypes.SigninForm);\r\n }\r\n\r\n}\r\n","import { CancelProductRequest } from '../../models/ss-api/requests/cancel.product.request';\r\nimport { BaseResponse } from '../../models/comm-http/responses/BaseResponse';\r\nimport { ssApiService } from '../../services/ss-api.service';\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\r\nimport { xToastr, ToastrTypes } from 'app/shared/Toastr';\r\nimport { DashboardLicenseResponse } from '../../models/ss-api/responses/dashboard.license.response';\r\nimport { GlobalServices } from '../../services/global.service';\r\nimport * as moment from 'moment';\r\nimport { HttpError } from 'app/models/errors/HttpError';\r\nimport { ResumeLicenseSimulationResponse } from '../../models/ss-api/responses/resume.license..simulation.response';\r\nimport { ResumeLicenseSimulationRequest } from '../../models/ss-api/requests/resume.license.simulation.request';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface IConfirmDialogModel {\r\n\ttitle: string;\r\n\tsubTitle: string;\r\n\tmessage: string;\r\n\tLicense: DashboardLicenseResponse;\r\n\r\n}\r\n\r\nexport enum CancelDialogTypes {\r\n\tstandard = 0,\r\n\tisHoldScheduled = 1,\r\n\tisOnHold = 2,\r\n}\r\n\r\n@Component({\r\n\tselector: 'cancellation-request-dialog',\r\n\tstyleUrls: ['./cancellation-request-dialog.component.scss'],\r\n\ttemplateUrl: './cancellation-request-dialog.component.html'\r\n})\r\nexport class CancellationRequestDialogComponent implements IConfirmDialogModel, OnInit {\r\n\r\n\tisBusy = false;\r\n\r\n confirmTitle: string = 'Cancel License Key';\r\n confirmMessage: string = 'You are about to cancel this License Key.';\r\n\r\n\tsuccessTitle: string = 'Cancellation successfull';\r\n\tsuccessMessage: string = 'Your license has been cancelled.';\r\n\r\n\terrorTitle: string = 'Error';\r\n\terrorMessage: string = 'We were not able to cancel your license. Please contact support.';\r\n\r\n cancelledTitle: string = 'Cancel License Key Dismissed';\r\n\tcancelledMessage: string = 'Your request has been dismissed.';\r\n\r\n\r\n\ttitle: string;\r\n\tsubTitle: string;\r\n\tmessage: string;\r\n\tLicense: DashboardLicenseResponse;\r\n\tisSecondStyle: boolean;\r\n\r\n\tcancelDialogType: CancelDialogTypes = CancelDialogTypes.standard;\r\n\r\n\tCancellationDate: Date;\r\n\r\n\tCancellationReason: string;\r\n\tCancellationComment: string;\r\n\r\n\tstep: number = 1;\r\n\r\n\tResumeSimulationResponse: ResumeLicenseSimulationResponse;\r\n\r\n result: any;\r\n\r\n\tconstructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n\t\tprivate api: ssApiService,\r\n\t\tprivate gb: GlobalServices\r\n\t) {\r\n\t}\r\n\r\n\t\r\n\tngOnInit() {\r\n this.title = this.config.data.title;\r\n this.subTitle = this.config.data.subTitle;\r\n this.message = this.config.data.message;\r\n this.License = this.config.data.License;\r\n this.isSecondStyle = this.config.data.isSecondStyle;\r\n\r\n\t\tthis.CancellationDate = moment.utc(this.License.NextBillingDate).toDate();\r\n\r\n\t\tconsole.log('cancel dialog License: ', this.License);\r\n\r\n\t\tif( this.License.IsScheduledHold ) {\r\n\t\t\tthis.cancelDialogType = CancelDialogTypes.isHoldScheduled;\r\n\t\t\tthis.DoResumeLicenseSimulation();\r\n\t\t} else if( this.License.IsOnHold ) {\r\n\t\t\tthis.cancelDialogType = CancelDialogTypes.isOnHold;\r\n\t\t\tthis.DoResumeLicenseSimulation();\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\t\r\n\r\n\tDoResumeLicenseSimulation() {\r\n\r\n\t\tthis.isBusy = true;\r\n\r\n\t\tlet request: ResumeLicenseSimulationRequest = {\r\n\t\t\tLicenseKey: this.License.Key,\r\n\t\t\tInitials: 'aa'\r\n\t\t};\r\n\r\n\t\tlet disposable = this.api.ResumeLicenseSimulation(request).subscribe(response => {\r\n\t\t\tdisposable.unsubscribe();\r\n\r\n\t\t\tconsole.log('ResumeLicenceSimulation : ', response);\r\n\r\n\t\t\tif (response.Result)\r\n\t\t\t\tthis.ResumeSimulationResponse = response.Data;\r\n\t\t\t\r\n\t\t\tthis.isBusy = false;\r\n\t\t\t\r\n\t\t});\r\n\r\n\t}\r\n\r\n\r\n\tprivate CancelProduct(): Promise {\r\n\r\n\t\t// if (this.SelectedCreditCard == undefined)\r\n\t\t// we didn't change the credit card selection\r\n\t\t// this.SelectedCreditCard = this.CreditCards[0];\r\n\r\n\t\tlet request = new CancelProductRequest();\r\n\t\trequest.LicenseKey = this.License.Key;\r\n\t\trequest.CancellationReason = this.CancellationReason;\r\n\t\trequest.AdminID = this.gb.AdminID;\r\n\t\trequest.CancellationComments = this.CancellationComment;\r\n\r\n\t\treturn this.api.ProductCancel(request)\r\n\t\t\t.toPromise()\r\n\t\t\t.then(response => {\r\n\r\n\t\t\t\tif (!response.Result)\r\n\t\t\t\t\treturn; // error\r\n\r\n\t\t\t\tthis.result = response.Result;\r\n\t\t\t\treturn response;\r\n\t\t\t},\r\n\t\t\t\terror => {\r\n\t\t\t\t\tthis.result = false;\r\n\t\t\t\t\tconsole.log(\"Cancel Error Response:\", error);\r\n\t\t\t\t\treturn error;\r\n\t\t\t\t})\r\n\t\t\t.catch((error: HttpError) => {\r\n\t\t\t\tconsole.log(\"TryCatch error : \", error);\r\n\t\t\t\tthis.result = false;\r\n\t\t\t\treturn error;\r\n\t\t\t});\r\n\r\n\t}\r\n\r\n\tProcessCancellation(): Promise {\r\n\t\t// confirm\r\n\t\treturn Swal.fire({\r\n\t\t\ttitle: this.confirmTitle,\r\n\t\t\ttext: this.confirmMessage,\r\n\t\t\ticon: 'warning',\r\n\t\t\tshowCancelButton: true,\r\n\t\t\tshowCloseButton: true,\r\n\t\t\tconfirmButtonText: 'Yes, cancel!',\r\n\t\t\tcancelButtonText: 'No, keep',\r\n\t\t\tallowOutsideClick: false,\r\n\t\t\tshowLoaderOnConfirm: true,\r\n\t\t\tpreConfirm: () => {\r\n\t\t\t\t// try to order\r\n\t\t\t\treturn this.CancelProduct();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tasync confirm() {\r\n\r\n\t\tif (this.CancellationReason == '' || this.CancellationReason == undefined) {\r\n\t\t\txToastr.ShowToast(ToastrTypes.Error, 'Error', 'Please enter \\'Reason For Canceling\\'');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.ProcessCancellation().then(\r\n\t\t\t(response: any) => {\r\n\r\n\t\t\t\t// init dialog vars\r\n\t\t\t\tlet cType = 'success';\r\n\t\t\t\tlet cTitle = this.successTitle;\r\n\t\t\t\tlet cMessage = this.successMessage;\r\n\r\n\r\n\t\t\t\tif (response.isDismissed) {\r\n\t\t\t\t\t// show cancelled\r\n\t\t\t\t\tSwal.fire({\r\n\t\t\t\t\t\ttitle: this.cancelledTitle,\r\n\t\t\t\t\t\ttext: this.cancelledMessage,\r\n\t\t\t\t\t\ticon: 'error',\r\n\t\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t\t\ttimer: 1000\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\t\t\t\t} else if (response.value && response.value.Result) {\r\n\t\t\t\t\t// show result\r\n\t\t\t\t\tSwal.fire(\r\n\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\ttitle: cTitle,\r\n\t\t\t\t\t\t\ttext: cMessage,\r\n\t\t\t\t\t\t\ticon: cType as SweetAlertIcon,\r\n\t\t\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t\t\t\ttimer: 2000\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// not ok\r\n\r\n\t\t\t\t\tSwal.fire(\r\n\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\ttitle: \"Error Communicating with Server\",\r\n\t\t\t\t\t\t\ttext: \"Please refresh page and try again, or contact our support team for assistance.\",\r\n\t\t\t\t\t\t\ticon: 'error',\r\n\t\t\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\t\t\t\t}\r\n\r\n\r\n\r\n\r\n\t\t\t},\r\n\t\t\t(dismiss) => {\r\n\t\t\t\tif (dismiss === 'cancel') {\r\n\r\n\t\t\t\t\tif (!confirm)\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t// show cancelled\r\n\t\t\t\t\tSwal.fire({\r\n\t\t\t\t\t\ttitle: this.cancelledTitle,\r\n\t\t\t\t\t\ttext: this.cancelledMessage,\r\n\t\t\t\t\t\ticon: 'error',\r\n\t\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t\t\ttimer: 1000\r\n\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tthis.result = true;\r\n\t\tthis.close();\r\n\t}\r\n\r\n\r\n\tcancel() {\r\n\t\tthis.result = false;\r\n\t\tthis.close();\r\n\t}\r\n\r\n\tnextStep() {\r\n\t\tthis.step++;\r\n\t}\r\n\r\n}\r\n","import { BaseResponse } from '../../models/comm-http/responses/BaseResponse';\r\nimport { ssApiService } from '../../services/ss-api.service';\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\r\nimport { CdKeyReassignRequest } from '../../models/ss-api/requests/cdkey.reassign.request';\r\nimport { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface IReassignDialogModel {\r\n title: string;\r\n subTitle: string;\r\n message: string;\r\n LicenseKey: string;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n ShowDesigner: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'cdkey-reassign-dialog',\r\n styleUrls: ['./cdkey-reassign-dialog.component.scss'],\r\n templateUrl: './cdkey-reassign-dialog.component.html'\r\n})\r\nexport class CDKeyReassignDialogComponent implements OnInit, IReassignDialogModel {\r\n\r\n\r\n confirmTitle: string = 'Reassign License Key';\r\n confirmMessage: string = 'You are about to reassign this license key. Do you wish to proceed?';\r\n\r\n successTitle: string = 'Reassign successfull';\r\n successMessage: string = 'Your license is open to assign.';\r\n\r\n errorTitle: string = 'Error';\r\n errorMessage: string = 'We were not able to open your license for reassign. Contact support.';\r\n\r\n cancelledTitle: string = 'Cancelled';\r\n cancelledMessage: string = 'You cancelled the reassignment.';\r\n\r\n title: string;\r\n subTitle: string;\r\n message: string;\r\n LicenseKey: string;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n ShowDesigner: boolean;\r\n\r\n FullName: string;\r\n\r\n OrderForm: UntypedFormGroup = new UntypedFormGroup({});\r\n\r\n // NEW USER INFO\r\n newName: string = 'newName';\r\n newEmail: string = 'email@email.com';\r\n\r\n result: any;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.title = this.config.data.title;\r\n this.subTitle = this.config.data.subTitle;\r\n this.message = this.config.data.message;\r\n this.LicenseKey = this.config.data.LicenseKey;\r\n this.FirstName = this.config.data.FirstName;\r\n this.LastName = this.config.data.LastName;\r\n this.Email = this.config.data.Email;\r\n this.ShowDesigner = this.config.data.ShowDesigner;\r\n this.FullName = this.GetFullName();\r\n this.SetUpForm();\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n get f() { return this.OrderForm.controls; }\r\n\r\n SetUpForm() {\r\n this.OrderForm = new UntypedFormGroup({\r\n 'f_name': new UntypedFormControl(this.FullName, [Validators.required, Validators.minLength(3)]),\r\n 'f_email': new UntypedFormControl(this.Email, [Validators.required, Validators.email]),\r\n 'f_newName': new UntypedFormControl('', [Validators.required, Validators.minLength(3)]),\r\n 'f_newEmail': new UntypedFormControl('', [Validators.required, Validators.email]),\r\n 'f_confirmEmail': new UntypedFormControl('', [Validators.required, Validators.email]),\r\n });\r\n }\r\n\r\n ProcessReassign(): Promise {\r\n\r\n let request = new CdKeyReassignRequest();\r\n request.Key = this.LicenseKey;\r\n request.Name = this.OrderForm.controls['f_newName'].value;\r\n request.NotifyEmail = this.OrderForm.controls['f_newEmail'].value;\r\n\r\n // confirm\r\n return Swal.fire({\r\n title: this.confirmTitle,\r\n text: this.confirmMessage,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes',\r\n cancelButtonText: 'No',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // try to order\r\n return this.api.LicenseReassign(request).toPromise();\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n async confirm() {\r\n\r\n await this.ProcessReassign().then(\r\n (response: any) => {\r\n\r\n // init dialog vars\r\n let cType = 'success';\r\n let cTitle = this.successTitle;\r\n let cMessage = this.successMessage;\r\n\r\n if (response.isDismissed) {\r\n // show cancelled\r\n cType = 'error';\r\n cTitle = this.cancelledTitle;\r\n cMessage = this.cancelledMessage; \r\n } else if (!response.value || !response.value.Result) {\r\n // not ok\r\n cType = 'error';\r\n cTitle = this.errorTitle;\r\n cMessage = response.value.Message; // this.errorMessage;\r\n }\r\n\r\n // show result\r\n Swal.fire(\r\n {\r\n title: cTitle,\r\n text: cMessage,\r\n icon: cType as SweetAlertIcon,\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 2500\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: this.cancelledTitle,\r\n text: this.cancelledMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n this.result = true;\r\n this.close();\r\n }\r\n\r\n cancel() {\r\n // we set dialog result as true on click on confirm button,\r\n // then we can get dialog result from caller code\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n\r\n GetFullName(): string {\r\n return this.FirstName + ' ' + this.LastName;\r\n\r\n }\r\n\r\n}\r\n","import { BaseResponse } from '../../models/comm-http/responses/BaseResponse';\r\n\r\nimport { Component } from '@angular/core';\r\n\r\nimport { BillingRecurringTypes, UpgradableProductsResponseArray, UpgradableProductsResponse } from 'app/models/ss-api/responses/upgradable.products.response';\r\nimport { SelectItem } from 'primeng/api';\r\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\r\nimport { UpgradeProductRequest } from 'app/models/ss-api/requests/upgrade.product.request';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\n\r\nexport interface IChangeBillingCycleDialogModel {\r\n title: string;\r\n subTitle: string;\r\n message: string;\r\n upgradeProducts: UpgradableProductsResponseArray;\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: SelectItem;\r\n LicenseKey: string;\r\n}\r\n\r\n@Component({\r\n selector: 'change-billing-cycle-dialog',\r\n styleUrls: ['./change-billing-cycle-dialog.component.css'],\r\n templateUrl: './change-billing-cycle-dialog.component.html'\r\n})\r\nexport class ChangeBillingCycleDialogComponent implements IChangeBillingCycleDialogModel {\r\n\r\n\r\n confirmTitle: string = 'Upgrade Product';\r\n confirmMessage: string = 'You are about to upgrade a product subscription. Your credit card will be billed.';\r\n\r\n successTitle: string = 'Product upgraded';\r\n successMessage: string = 'Your purchase was successfull.';\r\n\r\n errorTitle: string = 'Error';\r\n errorMessage: string = 'We were not able to process this request. Try again later or use a different credit card.';\r\n\r\n cancelledTitle: string = 'Cancelled';\r\n cancelledMessage: string = 'You cancelled this upgrade.';\r\n\r\n\r\n\r\n title: string;\r\n subTitle: string;\r\n message: string;\r\n upgradeProducts: UpgradableProductsResponseArray;\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: SelectItem;\r\n\r\n SelectedProduct: UpgradableProductsResponse = new UpgradableProductsResponse();\r\n SelectedProductLock: boolean = true;\r\n PurchaseDisabled: boolean = true;\r\n Initals: string = '';\r\n LicenseKey: string = '';\r\n UpgradeDisabled: boolean;\r\n result: any;\r\n\r\n constructor(private api: ssApiService) {\r\n }\r\n\r\n close() {\r\n\r\n }\r\n\r\n ProductSelectionChanged(product: UpgradableProductsResponse) {\r\n this.SelectedProduct = product;\r\n this.SelectedProductLock = false;\r\n this.CheckPurchaseDisabled();\r\n }\r\n\r\n\r\n BillingTypeToString(type: BillingRecurringTypes) {\r\n return BillingRecurringTypes[type];\r\n }\r\n\r\n BillingTypeToPerString(type: BillingRecurringTypes) {\r\n if (type == BillingRecurringTypes.Monthly)\r\n return 'per Month';\r\n else\r\n return 'per Year';\r\n }\r\n\r\n\r\n CreditCardChanged(item: SelectItem) {\r\n\r\n }\r\n\r\n\r\n\r\n InitialsChanged(data: string) {\r\n this.CheckPurchaseDisabled();\r\n }\r\n\r\n CheckPurchaseDisabled() {\r\n // if (this.Initals != \"\" && !this.SelectedProductLock)\r\n if (!this.SelectedProductLock)\r\n this.PurchaseDisabled = false;\r\n else\r\n this.PurchaseDisabled = true;\r\n }\r\n\r\n SelectedBillingCycleToString(): string {\r\n\r\n switch (this.SelectedProduct.BillingCycle) {\r\n\r\n case BillingRecurringTypes.Monthly:\r\n return 'month';\r\n\r\n case BillingRecurringTypes.Yearly:\r\n return 'year';\r\n\r\n default:\r\n return 'unimplemented';\r\n }\r\n\r\n }\r\n\r\n private UpgradeProduct(): Promise {\r\n\r\n if (this.SelectedCreditCard == undefined)\r\n // we didn't change the credit card selection\r\n this.SelectedCreditCard = this.CreditCards[0];\r\n\r\n let request = new UpgradeProductRequest();\r\n request.CreditCardID = Number(this.SelectedCreditCard);\r\n request.Initials = this.Initals;\r\n request.LicenseKey = this.LicenseKey;\r\n request.NewBillingCycle = this.SelectedProduct.BillingCycle;\r\n request.NewProductID = this.SelectedProduct.ProductID;\r\n request.SimulateOnly = false; // for debug\r\n\r\n return this.api.ProductsUpgrade(request)\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.result = response.Result;\r\n return response;\r\n });\r\n }\r\n\r\n ProcessOrder(): Promise {\r\n // confirm\r\n return Swal.fire({\r\n title: this.confirmTitle,\r\n text: this.confirmMessage,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes, order!',\r\n cancelButtonText: 'No, cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // try to order\r\n return this.UpgradeProduct();\r\n }\r\n });\r\n\r\n }\r\n\r\n async confirm() {\r\n this.result = true;\r\n\r\n await this.ProcessOrder().then(\r\n (response: any) => {\r\n\r\n // init dialog vars\r\n let cType = 'success';\r\n let cTitle = this.successTitle;\r\n let cMessage = this.successMessage;\r\n\r\n if (response.isDismissed) {\r\n cType = 'error';\r\n cTitle = this.cancelledTitle;\r\n cMessage = this.cancelledMessage;\r\n } else if (!response.value || !response.value.Result) {\r\n // not ok\r\n cType = 'error';\r\n cTitle = this.errorTitle;\r\n cMessage = this.errorMessage;\r\n }\r\n\r\n // show result\r\n Swal.fire(\r\n {\r\n title: cTitle,\r\n text: cMessage,\r\n icon: cType as SweetAlertIcon,\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1500\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n this.result = false;\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: this.cancelledTitle,\r\n text: this.cancelledMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n\r\n this.close();\r\n }\r\n\r\n\r\n\r\n\r\n cancel() {\r\n // we set dialog result as true on click on confirm button,\r\n // then we can get dialog result from caller code\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport Swal from 'sweetalert2';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\n\r\nimport { xToastr, ToastrTypes } from 'app/shared/Toastr';\r\n\r\nimport { UntypedFormGroup, UntypedFormControl, Validators, ReactiveFormsModule } from '@angular/forms';\r\nimport { UnfunishedOrderData } from 'app/models/ss-api/responses/unfinished.order.data';\r\nimport { FinishOrderRequest } from 'app/models/ss-api/requests/finish.order.request';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface ICompleteOrderDialogModel {\r\n UFOID: string;\r\n fromLogin: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'complete-order-dialog',\r\n styleUrls: ['./complete-order-dialog.component.scss'],\r\n templateUrl: './complete-order-dialog.component.html'\r\n})\r\nexport class CompleteOrderDialogComponent implements OnInit, ICompleteOrderDialogModel {\r\n\r\n IsBusy: boolean = false;\r\n\r\n UFOID: string;\r\n fromLogin: boolean = false;\r\n OrderData: UnfunishedOrderData = new UnfunishedOrderData();\r\n\r\n\r\n //\r\n ccLastFour: any = '3497';\r\n ccFirstName: string = '';\r\n ccLastName: string = '';\r\n Initals: string = '';\r\n DialogOrderForm: UntypedFormGroup;\r\n\r\n formProductClass: string;\r\n\r\n Year: number = new Date().getFullYear();\r\n YearRange: any[] = [];\r\n\r\n TaxEnabled: boolean = false;\r\n TaxRateDisplay: string = \"\";\r\n State: string = \"\";\r\n TaxAmount: number = 0;\r\n\r\n result: any;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService,\r\n private gb: GlobalServices) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.UFOID = this.config.data.UFOID;\r\n this.fromLogin = this.config.data.fromLogin;\r\n\r\n this.setUpForm();\r\n this.GetFormData();\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n\r\n setUpForm() {\r\n\r\n this.DialogOrderForm = new UntypedFormGroup({\r\n\r\n 'ccNameOnCard': new UntypedFormControl('', [Validators.required]),\r\n 'ccNr': new UntypedFormControl('', [Validators.required, Validators.maxLength(22), Validators.minLength(13), Validators.pattern('^[0-9 \\+\\-\\]+$')]),\r\n 'ccExpMonth': new UntypedFormControl('01', [Validators.required]),\r\n 'ccExpYear': new UntypedFormControl(this.Year, [Validators.required]),\r\n 'ccCVC': new UntypedFormControl('', [Validators.required]),\r\n\r\n //'confirmInitials': new FormControl('', [Validators.required]),\r\n });\r\n\r\n for (let i: number = 0; i < 15; i++) {\r\n this.YearRange.push(this.Year + i);\r\n }\r\n\r\n }\r\n\r\n StripNonNumeric(strValue: string): number {\r\n\r\n let value = strValue.replace(/[^\\d]/g, ''); // 1238\r\n\r\n if (value == '')\r\n return 0;\r\n else\r\n return value;\r\n\r\n }\r\n\r\n GetFinishOrderRequest(): FinishOrderRequest {\r\n\r\n let result = new FinishOrderRequest();\r\n \r\n result.OrderFormVersion = this.gb.OrderFormVersion;\r\n \r\n result.UFOID = this.UFOID;\r\n\r\n // credit card names\r\n let ccNameOnCard = this.DialogOrderForm.get('ccNameOnCard').value;\r\n\r\n // credit card expiration month\r\n let ccExpMonth = this.DialogOrderForm.get('ccExpMonth');\r\n if (ccExpMonth == undefined)\r\n throw RangeError('Credit Card Expiration Month Value Error');\r\n\r\n // credit card expiration year\r\n let ccExpYear = this.DialogOrderForm.get('ccExpYear');\r\n if (ccExpYear == undefined)\r\n throw RangeError('Credit Card Expiration Year Value Error');\r\n\r\n\r\n\r\n // - credit card\r\n let name = this.DialogOrderForm.get('ccNameOnCard').value;\r\n result.CC_FirstName = this.getFirstNameOnCard(name);\r\n result.CC_LastName = this.getLastNameOnCard(name);\r\n result.CC_Number = this.DialogOrderForm.get('ccNr').value;\r\n result.CC_Number = this.StripNonNumeric(result.CC_Number).toString();\r\n result.CC_ExpMonth = ccExpMonth.value;\r\n result.CC_ExpYear = ccExpYear.value - 2000;\r\n result.CC_CVC = this.DialogOrderForm.get('ccCVC').value;\r\n\r\n if (result.CC_Number == '' ||\r\n result.CC_Number.length < 13)\r\n throw Error('Invalid Credit Card Number.');\r\n\r\n return result;\r\n }\r\n\r\n\r\n getFirstNameOnCard(nameString: string) {\r\n\r\n\r\n let namesSplit = nameString.split(' ');\r\n\r\n if (namesSplit.length == 0)\r\n return;\r\n\r\n let firstName = namesSplit[0];\r\n let lastName = '';\r\n\r\n if (namesSplit.length > 1) {\r\n for (let i = 1; i < namesSplit.length; i++) {\r\n if (i != 1)\r\n lastName += ' ';\r\n\r\n lastName += namesSplit[i];\r\n }\r\n }\r\n\r\n return firstName;\r\n }\r\n\r\n getLastNameOnCard(nameString: string) {\r\n\r\n\r\n let namesSplit = nameString.split(' ');\r\n\r\n if (namesSplit.length == 0)\r\n return;\r\n\r\n let firstName = namesSplit[0];\r\n let lastName = '';\r\n\r\n if (namesSplit.length > 1) {\r\n for (let i = 1; i < namesSplit.length; i++) {\r\n if (i != 1)\r\n lastName += ' ';\r\n\r\n lastName += namesSplit[i];\r\n }\r\n }\r\n\r\n return lastName;\r\n }\r\n\r\n\r\n\r\n // get form data with UFOID\r\n GetFormData() {\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.GetUnfinishedOrder(this.UFOID).subscribe(\r\n (response) => {\r\n subscription.unsubscribe();\r\n\r\n if (!response.Result) {\r\n this.IsBusy = false;\r\n return;\r\n }\r\n\r\n this.OrderData = response.Data;\r\n \r\n this.TaxEnabled = response.Data.TaxEnabled;\r\n this.State = response.Data.State;\r\n this.TaxRateDisplay = response.Data.TaxRateDisplay;\r\n this.TaxAmount = response.Data.TaxAmount;\r\n\r\n this.IsBusy = false;\r\n },\r\n (error) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n confirm() {\r\n\r\n if (this.DialogOrderForm.invalid) return false;\r\n\r\n this.IsBusy = true;\r\n\r\n let request: FinishOrderRequest = new FinishOrderRequest();\r\n \r\n \r\n\r\n try {\r\n this.result = true;\r\n request = this.GetFinishOrderRequest();\r\n } catch (e) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Validation Errors', e);\r\n this.result = false;\r\n this.IsBusy = false;\r\n return;\r\n }\r\n\r\n let subscription = this.api.FinishOrder(request).subscribe(\r\n (response) => {\r\n subscription.unsubscribe();\r\n\r\n if (!response.Result) {\r\n this.GetFormData();\r\n this.IsBusy = false;\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error Processing Credit Card', 'Your Credit Card has been declined.'); // response.Message\r\n this.result = false;\r\n return;\r\n }\r\n\r\n // ok\r\n // we are logged in\r\n // process login\r\n this.gb.SetGlobalsFromLoginResponse(response.Data);\r\n\r\n // show result\r\n Swal.fire(\r\n {\r\n title: 'Success',\r\n text: 'Your account has been set up',\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => {\r\n return new Promise((resolve, reject) => {\r\n // this.router.navigate([\"Dashboard\"]);\r\n // window.location.href = \"account\";\r\n resolve('');\r\n });\r\n }, () => { }); // keep this line to prevent promise error;\r\n\r\n this.IsBusy = false;\r\n // redirect depending on where we come from\r\n this.IsBusy = false;\r\n\r\n if (this.fromLogin) {\r\n // we come from login\r\n window.location.href = 'account';\r\n } else {\r\n // we come from order page\r\n window.location.href = 'order-form/thank-you/';\r\n\r\n }\r\n\r\n return;\r\n },\r\n (error) => {\r\n this.IsBusy = false;\r\n return;\r\n });\r\n\r\n\r\n }\r\n\r\n cancel() {\r\n // we set dialog result as true on click on confirm button,\r\n // then we can get dialog result from caller code\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n // //////////////////////////////////////\r\n // MISC FUNCTIONS FOR DIALOG/FORM PIECES\r\n // //////////////////////////////////////\r\n\r\n\r\n totalPrice(): number {\r\n let newTotal = this.OrderData.RecurringAmount + this.OrderData.SetupAmount + this.OrderData.TaxAmount;\r\n return newTotal;\r\n }\r\n\r\n\r\n hasLastName(): boolean {\r\n\r\n let ccNameOnCard = this.DialogOrderForm.get('ccNameOnCard').value;\r\n this.getNameOnCard(ccNameOnCard);\r\n if (this.ccLastName == '')\r\n return false;\r\n\r\n return true;\r\n\r\n }\r\n\r\n getNameOnCard(nameString: string) {\r\n\r\n this.ccFirstName = '';\r\n this.ccLastName = '';\r\n\r\n let namesSplit = nameString.split(' ');\r\n\r\n if (namesSplit.length == 0)\r\n return;\r\n\r\n let firstName = namesSplit[0];\r\n\r\n let lastName = '';\r\n\r\n if (namesSplit.length > 1) {\r\n for (let i = 1; i < namesSplit.length; i++) {\r\n if (i != 1)\r\n lastName += ' ';\r\n\r\n lastName += namesSplit[i];\r\n }\r\n }\r\n\r\n this.ccFirstName = firstName;\r\n this.ccLastName = lastName;\r\n\r\n }\r\n\r\n\r\n UpdateCart() {\r\n // Do something here?\r\n \r\n }\r\n\r\n onOrderFormSubmit() {\r\n \r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface IConfirmDialogModel {\r\n title: string;\r\n subTitle: string;\r\n message: string;\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'confirm-dialog',\r\n styleUrls: ['./confirm-dilaog.component.css'],\r\n templateUrl: './confirm-dialog.component.html'\r\n})\r\nexport class ConfirmDialogComponent implements IConfirmDialogModel {\r\n\r\n title: string;\r\n subTitle: string;\r\n message: string;\r\n\r\n result: any;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.message = this.config.data.message;\r\n this.title = this.config.data.title;\r\n this.subTitle = this.config.data.subTitle;\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n confirm() {\r\n // we set dialog result as true on click on confirm button,\r\n // then we can get dialog result from caller code\r\n this.result = true;\r\n this.close();\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport Swal from 'sweetalert2';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { CreditCardResponse } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { UpdateCreditCardExpirationRequest } from 'app/models/ss-api/requests/update.credit.card.expiration.request';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\r\n\r\nexport interface IEditCreditCardDialogModel {\r\n CreditCard: CreditCardResponse;\r\n}\r\n\r\n@Component({\r\n selector: 'edit-credit-card-dialog',\r\n styleUrls: ['./edit-credit-card-dialog.component.css'],\r\n templateUrl: './edit-credit-card-dialog.component.html'\r\n})\r\nexport class EditCreditCardDialogComponent {\r\n\r\n IsBusy: boolean = false;\r\n\r\n CreditCard: CreditCardResponse;\r\n\r\n ExpirationMonth: number;\r\n ExpirationYear: number;\r\n ZipCode: string;\r\n IsDefault: boolean;\r\n\r\n Year: number = new Date().getFullYear();\r\n YearRange: any[] = [];\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService,\r\n private gb: GlobalServices) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.CreditCard = this.config.data.CreditCard;\r\n this.ExpirationMonth = this.CreditCard.ExpMonth;\r\n this.ExpirationYear = this.CreditCard.ExpYear;\r\n this.IsDefault = this.CreditCard.IsDefault;\r\n this.ZipCode = this.CreditCard.PostalCode;\r\n\r\n // SET UP YEAR RANGE FOR CREDIT CARD EXPIRATION DATE FIELD\r\n for (let i: number = 0; i < 15; i++) {\r\n this.YearRange.push(this.Year + i);\r\n }\r\n }\r\n\r\n IsFormDisabled() {\r\n return false;\r\n }\r\n\r\n Substring(year) {\r\n return year.toString().substr(2);\r\n }\r\n\r\n confirm() {\r\n this.IsBusy = true;\r\n let request: UpdateCreditCardExpirationRequest = {\r\n CreditCardID: this.CreditCard.ID,\r\n ExpMonth: this.ExpirationMonth,\r\n ExpYear: this.ExpirationYear,\r\n Zipcode: this.ZipCode\r\n };\r\n\r\n // validate\r\n if (!this.isValidExpiration()) {\r\n\r\n this.IsBusy = false;\r\n\r\n // show confirmation\r\n Swal.fire({\r\n title: \"Validation Error\",\r\n text: \"The expiration date is invalid.\",\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n }).then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n return; // error\r\n }\r\n\r\n let disposable = this.api.CreditCardUpdateExpiration(request).subscribe(response => {\r\n this.IsBusy = false;\r\n\r\n if (response.Result) {\r\n Swal.fire({\r\n icon: 'success',\r\n title: 'Credit Card Updated',\r\n timer: 1500,\r\n showConfirmButton: false\r\n }).then(() => { this.close(true, this.IsDefault); }, () => { this.close(false, false); });\r\n } else {\r\n\r\n \r\n var title = \"Error\";\r\n var message = \"Error updating credit card\";\r\n\r\n if (response.Data.includes(\"AVS\")) {\r\n title = \"Zip Code Error\";\r\n message = \"Wrong Zip Code for this card.\";\r\n }\r\n else if (response.Data.includes(\"CVC\")) {\r\n title = \"CVC Error\";\r\n message = \"Wrong CVC Security code for this card.\";\r\n }\r\n\r\n\r\n Swal.fire({\r\n icon: 'error',\r\n title: title,\r\n text: response.Message,\r\n showConfirmButton: false\r\n }).then(() => { }, () => { });\r\n }\r\n\r\n disposable.unsubscribe();\r\n });\r\n }\r\n\r\n close(isUpdated = false, setAsDefault = false) {\r\n this.ref.close({ isUpdated, setAsDefault });\r\n }\r\n\r\n isValidExpiration() {\r\n if (moment(this.ExpirationMonth + '/' + this.ExpirationYear, 'MM/YYYY').isSameOrAfter(moment(moment().format('MM/YYYY'), 'MM/YYYY'))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n","import * as moment from 'moment';\r\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { SelectItem } from 'primeng/api';\r\nimport { TrainingEventDetailsResponse } from 'app/models/ss-api/responses/training.event.details.response';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { MemberDesignerLicenseBasicsResponseArray, MemberDesignersLicensesBasicsResponse } from 'app/models/ss-api/responses/member.designers.licenses.basics.response';\r\nimport { MemberDesignersLicenseItem, MemberDesignersLicenseItemArray } from 'app/models/ss-api/responses/member.designers.license.item';\r\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\r\nimport { GlobalServices } from '../../services/global.service';\r\nimport { TrainingEvent } from '../../models/domain/training.event';\r\nimport { RegisterForTrainingEventRequest } from '../../models/ss-api/requests/register.for.training.event.request';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\r\n\r\nexport interface IEventRegistrationDialogModel {\r\n title: string;\r\n subTitle: string;\r\n event: TrainingEvent;\r\n minimumVersionv2: string;\r\n minimumVersionv3: string;\r\n currentVersion: string;\r\n licenseID?: Number;\r\n}\r\n\r\n@Component({\r\n selector: 'event-registration-dialog',\r\n styleUrls: ['./event-registration-dialog.component.scss'],\r\n templateUrl: './event-registration-dialog.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class EventRegistrationDialogComponent implements OnInit {\r\n confirmTitle = 'Register Now';\r\n confirmMessage = 'Would you like to register for this class?';\r\n\r\n successTitle = \"You're In!\";\r\n successMessage = \"We've sent you an email confirming your registration.\";\r\n\r\n errorTitle = 'All Set';\r\n\r\n cancelledTitle = 'Canceled';\r\n cancelledMessage = 'Your request has been canceled.';\r\n\r\n isBusy = true;\r\n\r\n title: string;\r\n subTitle: string;\r\n message: string;\r\n\r\n windowTitle: string;\r\n versionNum: string;\r\n eventDescription: string;\r\n softwarePackages: string;\r\n minVersionDisplay: string;\r\n\r\n isPoolStudio = false;\r\n isVizTerra = false;\r\n isVip3D = false;\r\n\r\n eventID: any;\r\n\r\n isExpired = false;\r\n\r\n Licenses: MemberDesignerLicenseBasicsResponseArray;\r\n LicensesSelectItems: SelectItem[] = new Array();\r\n SelectedLicense: MemberDesignersLicensesBasicsResponse;\r\n\r\n eventData: TrainingEventDetailsResponse = new TrainingEventDetailsResponse();\r\n\r\n minimumVersionv2: string;\r\n minimumVersionv3: string;\r\n currentVersion: string;\r\n event: TrainingEvent = new TrainingEvent();\r\n productIcons = '\"Pool';\r\n eventDate: String = '';\r\n eventTime: String = '';\r\n licenseID: Number;\r\n howConnect: boolean;\r\n whatNeed: boolean;\r\n\r\n result: any;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService,\r\n private gb: GlobalServices\r\n ) {\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.title = this.config.data.title;\r\n this.subTitle = this.config.data.subTitle;\r\n this.event = this.config.data.event;\r\n this.minimumVersionv2 = this.config.data.minimumVersionv2;\r\n this.minimumVersionv3 = this.config.data.minimumVersionv3;\r\n this.currentVersion = this.config.data.currentVersion;\r\n\r\n this.getLicenses();\r\n this.eventDate = moment(this.event.EventDateTime).format('dddd, MMMM Do YYYY');\r\n this.eventTime = moment(this.event.EventDateTime).format('hh:mm a') + ' to ' + moment(this.event.EventDateTime).add(moment(this.event.TrainingClass.ClassDuration, 'hh:mm:ss').hours(), 'hours').format('hh:mm a');\r\n this.windowTitle = this.event.TrainingClass.ClassTitle;\r\n this.productIcons = this.generateProductIcons();\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n // getEventData(event: TrainingEvent) {\r\n // let disposable = this.api.GetTrainingEventByID(ScheduleID).subscribe(response => {\r\n // this.isBusy = false;\r\n\r\n // this.event = response.Data;\r\n // this.eventDate = moment(this.event.EventDateTime).format(\"dddd, MMMM Do YYYY\");\r\n // this.eventTime = moment(this.event.EventDateTime).format(\"hh:mm a\") + \" to \" + moment(this.event.EventDateTime).add(moment(this.event.TrainingClass.ClassDuration, \"hh:mm:ss\").hours(), 'hours').format(\"hh:mm a\");\r\n // this.windowTitle = this.event.TrainingClass.ClassTitle;\r\n // this.productIcons = this.generateProductIcons();\r\n // console.log(this.event);\r\n // disposable.unsubscribe();\r\n // })\r\n // }\r\n\r\n getLicenseData(e, val) {\r\n\r\n }\r\n\r\n generateProductIcons() {\r\n let productHTML = '';\r\n this.productIcons = '';\r\n this.softwarePackages = '';\r\n this.event.TrainingClass.ProductIDs.forEach((product) => {\r\n let img = '';\r\n let name = '';\r\n switch (product) {\r\n case 3:\r\n name = 'Vip3D';\r\n img = '../../assets/images/icons/logo-icons-vip3d-xs.png';\r\n break;\r\n case 2:\r\n name = 'Pool Studio';\r\n img = '../../assets/images/icons/logo-icons-pool-studio-xs.png';\r\n break;\r\n case 1:\r\n name = 'VizTerra';\r\n img = '../../assets/images/icons/logo-icons-vizterra-xs.png';\r\n break;\r\n default:\r\n return false;\r\n }\r\n if (this.softwarePackages.length > 0) {\r\n this.softwarePackages += ' or ';\r\n }\r\n this.softwarePackages += '' + name + ' ';\r\n productHTML += '';\r\n }, this);\r\n return productHTML;\r\n }\r\n\r\n getLicenses() {\r\n const subscription = this.api.MemberDesignersLicensesBasics().subscribe(\r\n async data => {\r\n subscription.unsubscribe();\r\n\r\n if (!data.Result) {\r\n // Error\r\n this.isBusy = false;\r\n\r\n await Swal.fire(\r\n {\r\n title: 'Error',\r\n text: 'You do not have the proper membership for this class.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 2500\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n this.close();\r\n return;\r\n }\r\n\r\n this.Licenses = data.Data;\r\n this.populateLicenses();\r\n this.isBusy = false;\r\n\r\n },\r\n error => {\r\n this.isBusy = false;\r\n });\r\n\r\n }\r\n\r\n populateLicenses() {\r\n if (this.Licenses == undefined || this.Licenses.length == 0)\r\n return;\r\n\r\n this.Licenses.forEach(member => {\r\n member.Keys.forEach(key => {\r\n if (!key || key.LicenseStatus.toLowerCase() == 'cancelled' || this.event.TrainingClass.ProductIDs.indexOf(key.Product_ID) < 0)\r\n return;\r\n\r\n //Check Min/Max Versions\r\n if (this.event.TrainingClass.MinimumSoftwareVersionInt != 0 && key.SoftwareVersionInt < this.event.TrainingClass.MinimumSoftwareVersionInt)\r\n return;\r\n\r\n if (this.event.TrainingClass.MaximumSoftwareVersionInt != 0 && key.SoftwareVersionInt > this.event.TrainingClass.MaximumSoftwareVersionInt)\r\n return;\r\n\r\n if (this.licenseID && this.licenseID != key.ID)\r\n return;\r\n\r\n this.LicensesSelectItems.push(\r\n {\r\n label: key.Key + ' - ' + key.Product + ' - ' + member.Name + ' - ' + member.Email,\r\n value: this.getMemberDesignerItem(member, key)\r\n });\r\n });\r\n });\r\n if (this.LicensesSelectItems.length < 1) {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'No active licenses for this class',\r\n text: 'Please select a different class'\r\n });\r\n this.close();\r\n } else {\r\n this.SelectedLicense = this.LicensesSelectItems[0].value;\r\n }\r\n }\r\n\r\n // ProductNotForClass(key: MemberDesignersLicenseItem) : Boolean {\r\n // let names = [];\r\n // this.event.TrainingClass.ProductIDs.forEach(function(product) {\r\n // switch(product) {\r\n // case 5:\r\n // names.push('VIP3D');\r\n // case 8:\r\n // names.push(\"Pool Studio\");\r\n // case 9:\r\n // names.push(\"VizTerra\");\r\n // }\r\n // })\r\n // }\r\n\r\n isPastDue(): boolean {\r\n var pastDue = false;\r\n if (this.SelectedLicense) {\r\n if (this.SelectedLicense.Keys[0].PastDue) {\r\n pastDue = true;\r\n }\r\n }\r\n return pastDue;\r\n }\r\n\r\n isTOS(): boolean {\r\n var tos = false;\r\n if (this.SelectedLicense) {\r\n if (this.SelectedLicense.Keys[0].TOS) {\r\n tos = true;\r\n }\r\n }\r\n return tos;\r\n }\r\n\r\n isRegistered(): boolean {\r\n var registered = false;\r\n if (this.SelectedLicense) {\r\n if (this.SelectedLicense.Keys[0].Registered) {\r\n registered = true;\r\n }\r\n }\r\n return registered;\r\n }\r\n\r\n isValidVersion() {\r\n if (this.SelectedLicense) {\r\n if (this.SelectedLicense.Keys[0].SoftwareVersion.slice(0, 2) == \"2.\") {\r\n //v2 check\r\n this.minVersionDisplay = this.minimumVersionv2;\r\n return this.SelectedLicense.Keys[0].SoftwareVersion.slice(0, 4) >= this.minimumVersionv2.slice(0, 4);\r\n }\r\n else {\r\n //todo: v3 check\r\n console.log(\"v3 check\");\r\n console.log(this.minimumVersionv3, \"mv3\");\r\n this.minVersionDisplay = this.minimumVersionv3;\r\n\r\n var installedMajor = 0;\r\n var installedMinor = 0;\r\n var installedPatch = 0;\r\n var minimumMajor = 0;\r\n var minimumMinor = 0;\r\n var minimumPatch = 0;\r\n\r\n var aryInstalled = this.SelectedLicense.Keys[0].SoftwareVersion.split(\".\");\r\n installedMajor = parseInt(aryInstalled[0]);\r\n if (aryInstalled.length > 1)\r\n installedMinor = parseInt(aryInstalled[1]);\r\n if (aryInstalled.length > 2)\r\n installedPatch = parseInt(aryInstalled[2]);\r\n\r\n var aryMinimum = this.minimumVersionv3.split(\".\");\r\n minimumMajor = parseInt(aryMinimum[0]);\r\n if (aryMinimum.length > 1)\r\n minimumMinor = parseInt(aryMinimum[1]);\r\n if (aryMinimum.length > 2)\r\n minimumPatch = parseInt(aryMinimum[2]);\r\n\r\n var OldVersion = (installedMajor < minimumMajor)\r\n || (installedMajor == minimumMajor && installedMinor < minimumMinor)\r\n || (installedMajor == minimumMajor && installedMinor == minimumMinor && installedPatch < minimumPatch);\r\n\r\n return !OldVersion;\r\n }\r\n }\r\n }\r\n\r\n CheckKeyProduct(product: string) {\r\n if (product.toLowerCase() == 'vip3d' && this.isVip3D)\r\n return true;\r\n\r\n if (product.toLowerCase() == 'vizterra' && this.isVizTerra)\r\n return true;\r\n\r\n if (product.toLowerCase() == 'pool studio' && this.isPoolStudio)\r\n return true;\r\n\r\n if (product.toLowerCase() == 'poolstudio' && this.isPoolStudio)\r\n return true;\r\n }\r\n\r\n setWindowTitle(newHtmlContent) {\r\n if (newHtmlContent == undefined)\r\n return;\r\n\r\n let newWindowTitle = newHtmlContent.substr(4, newHtmlContent.indexOf(''));\r\n stringChop.push(newHtmlContent.indexOf(''));\r\n\r\n let newVersionNum = newHtmlContent.substr(stringChop[0], stringChop[1] - stringChop[0]);\r\n newVersionNum = newVersionNum.replace('', '');\r\n this.versionNum = newVersionNum;\r\n }\r\n\r\n setSoftwareOptions(softwareOptions: string) {\r\n if (softwareOptions == undefined)\r\n return;\r\n let newSoftwarePackages = softwareOptions.replace('&', 'or');\r\n softwareOptions = softwareOptions.replace('& ', '');\r\n let strings = softwareOptions.split(' ');\r\n this.softwarePackages = newSoftwarePackages;\r\n\r\n for (let i = 0; i < strings.length; i++) {\r\n if (strings[i] == 'Pool')\r\n this.isPoolStudio = true;\r\n\r\n if (strings[i] == 'VizTerra')\r\n this.isVizTerra = true;\r\n\r\n if (strings[i] == 'Vip3D')\r\n this.isVip3D = true;\r\n }\r\n }\r\n\r\n setEventDescription(htmlData: string) {\r\n if (htmlData == undefined)\r\n return;\r\n\r\n let newDescription = htmlData;\r\n let stringChop = [];\r\n\r\n stringChop.push(newDescription.indexOf('
'));\r\n newDescription = newDescription.substr(stringChop[0]);\r\n\r\n this.eventDescription = newDescription;\r\n\r\n }\r\n\r\n getMemberDesignerItem(member: MemberDesignersLicensesBasicsResponse, license: MemberDesignersLicenseItem) {\r\n\r\n // merge the right data\r\n const data = new MemberDesignersLicensesBasicsResponse();\r\n\r\n data.Email = member.Email;\r\n data.Name = member.Name;\r\n data.Phone = member.Phone;\r\n\r\n data.Keys = new MemberDesignersLicenseItemArray();\r\n data.Keys.push(new MemberDesignersLicenseItem());\r\n\r\n data.Keys[0].CompatibilityToken = license.CompatibilityToken;\r\n data.Keys[0].Key = license.Key;\r\n data.Keys[0].Product = license.Product;\r\n data.Keys[0].ID = license.ID;\r\n data.Keys[0].SoftwareVersion = license.SoftwareVersion;\r\n data.Keys[0].PastDue = license.PastDue;\r\n data.Keys[0].TOS = license.TOS;\r\n data.Keys[0].Registered = license.Registered;\r\n\r\n\r\n return data;\r\n }\r\n\r\n getRequest(): RegisterForTrainingEventRequest {\r\n\r\n const request = new RegisterForTrainingEventRequest();\r\n let member;\r\n\r\n // because there is a bug on selected items we have to make sure\r\n // that the value is a valid object\r\n if (this.SelectedLicense == undefined)\r\n // we didnt select an object, take the 1st\r\n member = this.LicensesSelectItems[0].value;\r\n else\r\n // we selected an object. check if the data is in value or not\r\n member = this.SelectedLicense;\r\n\r\n request.AlternateEmail = \"\";\r\n request.AlternatePhone = \"\";\r\n request.LicenseID = member.Keys[0].ID;\r\n request.TrainingEventID = this.event.ID;\r\n return request;\r\n }\r\n\r\n confirm() {\r\n\r\n const request = this.getRequest();\r\n\r\n confirm;\r\n Swal.fire({\r\n title: this.confirmTitle,\r\n text: this.confirmMessage,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes',\r\n cancelButtonText: 'No',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // try to process\r\n return this.api.RegisterForTrainingEvent(request).toPromise();\r\n }\r\n })\r\n .then(\r\n (response: any) => {\r\n\r\n // init dialog vars\r\n let cType = 'success';\r\n let cTitle = this.successTitle;\r\n let cMessage = this.successMessage;\r\n\r\n if (response.isDismissed) {\r\n cType = 'error';\r\n cTitle = this.cancelledTitle;\r\n cMessage = this.cancelledMessage;\r\n } else if (!response.value || !response.value.Result) {\r\n // not ok\r\n cType = 'error';\r\n cTitle = this.errorTitle;\r\n cMessage = response.value.Message;\r\n }\r\n\r\n if (cMessage == \"New License\") {\r\n // show custom result\r\n Swal.fire(\r\n {\r\n title: \"New License\",\r\n html: \"
Before registering for this advanced class, please attend a Fundamentals Workshop. If you have any questions, give us a call at 702-433-0274.
\",\r\n icon: cType as SweetAlertIcon,\r\n showCancelButton: false,\r\n showConfirmButton: true\r\n })\r\n .then(() => { this.result = true; this.close(); }, () => { this.close(); }); // keep this line to prevent promise error;\r\n } else {\r\n // show result\r\n Swal.fire(\r\n {\r\n title: cTitle,\r\n text: cMessage,\r\n icon: cType as SweetAlertIcon,\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1500\r\n })\r\n .then(() => { this.result = true; this.close(); }, () => { this.close(); }); // keep this line to prevent promise error;\r\n }\r\n\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: this.cancelledTitle,\r\n text: this.cancelledMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { this.close(); }, () => { this.close(); }); // keep this line to prevent promise error;\r\n }\r\n });\r\n\r\n this.result = true;\r\n }\r\n\r\n cancel() {\r\n // we set dialog result as true on click on confirm button,\r\n // then we can get dialog result from caller code\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n toggleIsBusy() {\r\n this.isBusy = !this.isBusy;\r\n }\r\n\r\n RegistrationAvailable(): boolean {\r\n if (this.eventData.IsExpired)\r\n return false;\r\n\r\n //out of date\r\n if (!this.isValidVersion() && this.SelectedLicense)\r\n return false;\r\n\r\n //past due license\r\n if (this.isPastDue())\r\n return false;\r\n\r\n //tos\r\n if (this.isTOS())\r\n return false;\r\n\r\n if (!this.isRegistered())\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n}\r\n","import * as moment from 'moment';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport Swal from 'sweetalert2';\r\nimport { GlobalServices } from '../../services/global.service';\r\nimport { TrainingEvent } from '../../models/domain/training.event';\r\nimport { TrainingCalendarRequest } from 'app/models/ss-api/requests/training.calendar.request';\r\nimport { TrainingClass } from 'app/models/domain/training.class';\r\nimport { TrainingHistoryResponse } from 'app/models/ss-api/responses/training.history.response';\r\nimport { EventRegistrationDialogComponent } from '../event-registration/event-registration-dialog.component';\r\nimport { UpdateTrainingEventSubscriptionStatusRequest } from 'app/models/ss-api/requests/update.training.event.subscription.status.request';\r\nimport { AttendanceStatusTypes } from 'app/models/domain/training.event.subscription';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface IEventRescheduleDialogModel {\r\n Event: TrainingHistoryResponse;\r\n LicenseID: number;\r\n}\r\n\r\nclass CalendarEvent {\r\n title: String;\r\n start: Date;\r\n end: Date;\r\n event: TrainingEvent;\r\n}\r\n\r\n@Component({\r\n selector: 'event-reschedule-dialog',\r\n styleUrls: ['./event-reschedule-dialog.component.css'],\r\n templateUrl: './event-reschedule-dialog.component.html'\r\n})\r\n\r\nexport class EventRescheduleDialogComponent implements OnInit {\r\n Events: Array;\r\n Event: TrainingHistoryResponse;\r\n MinimumTrainingVersionv2: string;\r\n MinimumTrainingVersionv3: string;\r\n CurrentTrainingVersion: string;\r\n\r\n isBusy: boolean = true;\r\n\r\n constructor(\r\n private dialogService: DialogService,\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService, private gb: GlobalServices) {\r\n }\r\n\r\n ngOnInit() {\r\n this.Event = this.config.data.Event;\r\n\r\n this.LoadEvents();\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n LoadEvents() {\r\n let request: TrainingCalendarRequest = new TrainingCalendarRequest();\r\n let tempEvents = [];\r\n request.StartDate = moment().toDate();\r\n request.EndDate = moment().add(30, 'days').toDate();\r\n\r\n let disposable = this.api.GetMemberTrainingCalendar(request).subscribe(response => {\r\n this.MinimumTrainingVersionv2 = response.Data.TrainingMinimumSoftwareVersionv2;\r\n this.MinimumTrainingVersionv3 = response.Data.TrainingMinimumSoftwareVersionv3;\r\n this.CurrentTrainingVersion = response.Data.CurrentSoftwareVersion;\r\n\r\n response.Data['TrainingEvents'].forEach(function(e: TrainingEvent) {\r\n let trainingClass: TrainingClass = response.Data['TrainingClasses'].filter(c => c.ID == e.TrainingClassID)[0];\r\n if (e.ID != this.Event.EventID && trainingClass.ProductIDs.indexOf(this.Event.Product_ID) >= 0) {\r\n let duration = moment(trainingClass.ClassDuration, 'hh:mm:ss');\r\n let eventTemplate: CalendarEvent = new CalendarEvent();\r\n\r\n eventTemplate.title = trainingClass.ClassTitle;\r\n eventTemplate.start = new Date(e.EventDateTime);\r\n eventTemplate.end = moment(e.EventDateTime).add({hours: duration.hours(), minutes: duration.minutes()}).toDate();\r\n eventTemplate.event = e;\r\n eventTemplate.event.TrainingClass = trainingClass;\r\n\r\n tempEvents.push(eventTemplate);\r\n }\r\n }, this);\r\n\r\n this.Events = tempEvents;\r\n this.isBusy = false;\r\n\r\n disposable.unsubscribe();\r\n });\r\n }\r\n\r\n RegisterForClass(event: TrainingEvent) {\r\n if (moment().isAfter(moment(this.Event.EventDateTime).subtract(15, 'minutes'))) {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'Class Closed',\r\n text: 'Open registration for this class is now closed. Please select a different class.'\r\n });\r\n } else {\r\n this.dialogService.open(EventRegistrationDialogComponent, {data: {\r\n title: 'Test Title',\r\n subTitle: 'Another Test',\r\n event: event,\r\n minimumVersionv2: this.MinimumTrainingVersionv2,\r\n minimumVersionv3: this.MinimumTrainingVersionv3,\r\n currentVersion: this.CurrentTrainingVersion,\r\n licenseID: this.Event.License_ID\r\n }});\r\n this.isBusy = true;\r\n let request = new UpdateTrainingEventSubscriptionStatusRequest();\r\n request.AttendanceStatusType = AttendanceStatusTypes.Rescheduled;\r\n request.TrainingEventSubscriptionID = Number(this.Event.TrainingEventSubscriptionID);\r\n let disposable = this.api.UpdateTrainingEventSubscriptionStatus(request).subscribe(r => {\r\n Swal.fire({\r\n icon: 'success',\r\n title: 'Successfully Rescheduled',\r\n text: 'You have rescheduled to a new class. Please check your email for your registration confirmation.'\r\n }).then(() => {\r\n this.close();\r\n });\r\n disposable.unsubscribe();\r\n });\r\n }\r\n }\r\n\r\n TrainingEventForEvent(event: TrainingEvent): TrainingEvent {\r\n let trainingEvent: TrainingEvent;\r\n\r\n this.Events.forEach(function(training) {\r\n if (training.event.ID == event.ID) {\r\n trainingEvent = training.event;\r\n }\r\n });\r\n\r\n return trainingEvent;\r\n }\r\n\r\n ProductsForEvent(event: TrainingEvent) {\r\n let productHTML = '';\r\n let productBorder = '';\r\n\r\n event.TrainingClass.ProductIDs.forEach(function(product) {\r\n let icon = '';\r\n let color = '#000';\r\n switch (product) {\r\n case 5:\r\n icon = '../../assets/images/icons/logo-icons-vip3d-xs.png';\r\n color = '#0064DF';\r\n break;\r\n case 8:\r\n icon = '../../assets/images/icons/logo-icons-pool-studio-xs.png';\r\n color = '#FF0000';\r\n break;\r\n case 9:\r\n icon = '../../assets/images/icons/logo-icons-vizterra-xs.png';\r\n color = '#64A000';\r\n break;\r\n default:\r\n return false;\r\n }\r\n productHTML += '';\r\n productBorder += '
';\r\n }, this);\r\n\r\n return {\r\n ProductIcons : productHTML,\r\n ProductBorder: productBorder\r\n };\r\n }\r\n\r\n}\r\n","import { ResumeLicenseSimulationResponse } from './../../models/ss-api/responses/resume.license..simulation.response';\r\nimport { ResumeLicenseSimulationRequest } from 'app/models/ss-api/requests/resume.license.simulation.request';\r\nimport { ResumeLicenseRequest } from './../../models/ss-api/requests/resume.license.request';\r\nimport { CheckHoldEligibilityResponse } from './../../models/ss-api/responses/check.hold.eligibility.response';\r\nimport { HoldRequest } from 'app/models/ss-api/requests/hold.request';\r\nimport { HoldPricingArray, HoldPricing } from './../../models/ss-api/responses/hold.pricing';\r\nimport { ssApiService } from '../../services/ss-api.service';\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport Swal from 'sweetalert2';\r\nimport { GlobalServices } from '../../services/global.service';\r\nimport * as moment from 'moment';\r\nimport { CancellationRequestDialogComponent } from '../cancellation-request/cancellation-request-dialog.component';\r\nimport { DashboardLicenseResponse } from 'app/models/ss-api/responses/dashboard.license.response';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { CreditCardResponseArray } from 'app/models/ss-api/responses/credit.card.response';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface IHoldDialogModel {\r\n License: DashboardLicenseResponse;\r\n CreditCards: SelectItem[];\r\n HoldResponse : CheckHoldEligibilityResponse;\r\n}\r\n\r\nexport enum HoldRequestDialogResultTypes {\r\n\tcancelled = 0,\r\n\tsuccess = 1,\r\n\tshowCancel = 10,\r\n\terror = 99\r\n}\r\n\r\n@Component({\r\n selector: 'hold-request-dialog',\r\n styleUrls: ['./hold-request-dialog.component.scss'],\r\n templateUrl: './hold-request-dialog.component.html'\r\n})\r\nexport class HoldRequestDialogcomponent implements IHoldDialogModel, OnInit {\r\n IsBusy: boolean = true;\r\n\r\n\tresult = HoldRequestDialogResultTypes.cancelled;\r\n\r\n License: DashboardLicenseResponse;\r\n CreditCards: SelectItem[];\r\n HoldResponse : CheckHoldEligibilityResponse;\r\n Credit;\r\n State: string;\r\n TaxRateDisplay: string;\r\n isMobile: boolean;\r\n\r\n\r\n showHoldDuration : boolean = false;\r\n\r\n clickedOK : boolean = false;\r\n\r\n Options: HoldPricingArray;\r\n SelectedOption: HoldPricing;\r\n\r\n\tSelectedOptionResumeDate : Date;\r\n\r\n step = 1;\r\n\r\n showAddCreditCard: boolean;\r\n SelectedCreditCard;\r\n Initials : string = \"hold\";\r\n ShowTimeline: boolean = false;\r\n\r\n\tOriginalTitle : string = '';\r\n\tOriginalSubTitle : string = '';\r\n\r\n Title = 'Hold Your Membership';\r\n Subtitle = 'Sometimes you just need a break. Keep your GIS credits, avoid the set up fee.';\r\n\r\n OptionTitle = 'Select An Option';\r\n\r\n\r\n\tlabel_HoldOK : string = \"Confirm Hold Membership\";\r\n\tlabel_Next : string = \"Hold Membership\";\r\n\r\n\ttoday : Date = new Date();\r\n\r\n ResumeSimulationResponse: ResumeLicenseSimulationResponse;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService,\r\n private gb: GlobalServices\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.License = this.config.data.License;\r\n this.CreditCards = this.config.data.CreditCards;\r\n this.HoldResponse = this.config.data.HoldResponse;\r\n this.isMobile = this.config.data.isMobile;\r\n console.log(this.License);\r\n\t\t\r\n\t\tconsole.log(\"CreditCards :\", this.CreditCards);\r\n\r\n this.GetCredit();\r\n\r\n\t\tconsole.log(\"HoldStartDate : \", this.License.HoldStartDate);\r\n\r\n\t\tconsole.log(\"Holdresponse : \", this.HoldResponse);\r\n\r\n this.State = this.HoldResponse.State;\r\n this.TaxRateDisplay = this.HoldResponse.TaxRateDisplay;\r\n\r\n if(this.HoldResponse.HoldPrices) {\r\n this.Options = this.HoldResponse.HoldPrices;\r\n\r\n\t\t\tthis.SelectedOption = this.Options[0];\r\n\r\n\t\t\tthis.Options.forEach( o => {\r\n\t\t\t\tif( o.IsSelected )\r\n\t\t\t\t\tthis.SelectedOption = o;\r\n\t\t\t});\r\n\t\t\r\n\t\t}\r\n\r\n\t\tconsole.log(\"Options : \", this.Options);\r\n\r\n\t\t// UPDATE TILES\r\n\t\tif( this.License.IsOnHold ) {\r\n\t\t\t// LICENSE IS ON HOLD\r\n\t\t\tthis.Title = 'Membership on Hold';\r\n\t\t\tthis.Subtitle = 'Membership resumes on ' + moment(this.License.HoldEndDate).format('MMMM Do, YYYY');\r\n\t\t} else if ( this.License.IsScheduledHold ) {\r\n\t\t\t// LICENSE IS SCHEDULED FOR HOLD\r\n\t\t\tthis.Title = 'Hold Starting Soon';\r\n\t\t\tthis.Subtitle = 'Your hold will begin on ' + moment(this.License.HoldStartDate).format('MMMM Do, YYYY') + \r\n\t\t\t\t\t'
and resume automatically on ' + moment(this.License.HoldEndDate).format('MMMM Do, YYYY');\r\n\t\t}\r\n\r\n\t\tthis.OriginalTitle = this.Title;\r\n\t\tthis.OriginalSubTitle = this.Subtitle;\r\n\r\n if (this.License.IsOnHold || this.License.IsScheduledHold ) {\r\n\t\t\t//UPDATE LABELS FOR EXTEND HOLD OPTIONS\r\n\t\t\tthis.label_Next = \"Extend Hold\";\r\n\t\t\tthis.label_HoldOK = \"Confirm Hold Extension\"; \r\n\t\t}\r\n\t\t\r\n\r\n if (this.CreditCards != undefined) {\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n\t\t}\r\n\t\t\r\n\t\tthis.InitializeHoldResumeDate();\r\n\t\t\r\n\r\n }\r\n\r\n close() {\r\n this.ref.close(this.result);\r\n }\r\n\r\n ToggleSelectedOption(option) {\r\n\t\t\r\n\t\tif (option.IsAvailable) {\r\n\t\t\t\r\n\t\t\tthis.SelectedOption = option;\t\r\n\t\t\tthis.UpdateHoldResumeDate();\r\n\r\n\t\t\tthis.showHoldDuration = true;\r\n\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n\tInitializeHoldResumeDate() {\r\n\t\tif( this.License.IsOnHold ) {\r\n\t\t\tthis.SelectedOptionResumeDate = this.License.HoldEndDate;\r\n\t\t} else {\r\n\t\t\tthis.SelectedOptionResumeDate = new Date( moment(this.License.NextBillingDate).add( 1, 'months' ).toString() );\r\n\t\t}\r\n\t}\r\n\r\n\tUpdateHoldResumeDate() {\r\n\t\t\r\n\t\tlet resumeDate : Date = this.License.IsOnHold ? this.License.HoldEndDate : this.License.NextBillingDate;\r\n\r\n\t\tlet addMonths : number = this.SelectedOption.Months;\r\n\r\n\t\tif( this.License.IsOnHold ) {\r\n\t\t\tthis.Options.forEach( o => {\r\n\t\t\t\tif( o.IsSelected )\r\n\t\t\t\t\taddMonths -= o.Months;\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\r\n\t\tthis.SelectedOptionResumeDate = new Date( moment( resumeDate ).add( addMonths, 'months' ).toString() );\r\n\r\n\t}\r\n\r\n\tGetHoldDays( days : number ) : number {\r\n\r\n\r\n\t\tthis.Options.forEach( o => {\r\n\t\t\tif( o.IsSelected )\r\n\t\t\t\tdays -= o.Days;\r\n\t\t});\r\n\r\n\t\treturn days;\r\n\r\n\t}\r\n\r\n\r\n\tHoldStartedDate( nextBillingDate : Date ) : Date {\r\n\t\treturn new Date( moment( nextBillingDate ).add( -1, 'months' ).toString() );\r\n\t}\r\n\r\n\r\n ShowCancelDialog() {\r\n\t\t\r\n\t\tthis.result = HoldRequestDialogResultTypes.showCancel;\r\n\t\tthis.close();\r\n\r\n\t}\r\n\t\r\n\r\n\r\n GetOptions() {\r\n this.IsBusy = true;\r\n let disposable = this.api.CheckHoldEligibility(this.License.Key).subscribe(response => {\r\n this.IsBusy = false;\r\n if (response.Data.HoldEligible) {\r\n this.Options = response.Data.HoldPrices;\r\n }\r\n disposable.unsubscribe();\r\n });\r\n }\r\n\r\n GetCredit() {\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.MemberCredit().subscribe(response => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n this.Credit = response.Data;\r\n }, error => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n }\r\n\r\n\r\n cardAdded({cards, newCardId}: {cards: CreditCardResponseArray, newCardId: number}) {\r\n this.showAddCreditCard = false;\r\n this.updateCreditCardOptions(cards);\r\n this.SelectedCreditCard = newCardId;\r\n }\r\n\r\n updateCreditCardOptions( newCards: CreditCardResponseArray ) {\r\n this.CreditCards = [];\r\n newCards.forEach(card => {\r\n this.CreditCards.push(\r\n {\r\n label: 'Name: ' + card.FirstName + ' ' + card.LastName +\r\n ' - Last four: ' + card.LastFour +\r\n ' - exp. Date: ' + card.ExpMonth + '/' + card.ExpYear,\r\n value: card.ID\r\n });\r\n });\r\n }\r\n\r\n addCardCanceled() {\r\n this.showAddCreditCard = false;\r\n }\r\n\r\n\r\n\tnextStep() {\r\n\t\tthis.step += 1;\r\n\t\tthis.UpdateStepTitles();\r\n\t}\r\n\r\n previousStep() {\r\n\t\tthis.step -= 1;\r\n\t\tthis.UpdateStepTitles();\r\n }\r\n\r\n goToStep(step) {\r\n\t\tthis.step = step;\r\n\t\tthis.UpdateStepTitles();\r\n\t}\r\n\t\r\n\tUpdateStepTitles() {\r\n\t\tswitch (this.step) {\r\n\t\t\tcase 1:\r\n\t\t\t\tthis.Title = this.OriginalTitle;\r\n\t\t\t\tthis.Subtitle = this.OriginalSubTitle;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 2:\r\n\t\t\t\tthis.Title = this.License.IsOnHold || this.License.IsScheduledHold ? 'Extend Your Hold' : 'Hold Your Membership';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 5:\r\n\t\t\t\tthis.Title = 'Resume Membership';\r\n\t\t\t\tthis.Subtitle = 'Membership will be available immediately';\r\n\t\t\t\tbreak;\r\n\r\n\t\t}\r\n\t}\r\n\r\n CreditUsed(): number {\r\n let price = this.SelectedOption.PriceWithTax;\r\n\r\n if (this.HoldResponse.IsExtension) {\r\n price = this.SelectedOption.ExtensionPriceWithTax;\r\n }\r\n\r\n if (this.Credit > price) {\r\n return price;\r\n } else {\r\n return this.Credit;\r\n }\r\n }\r\n\r\n PriceDue(): number {\r\n let credit = this.CreditUsed();\r\n\r\n let price = this.SelectedOption.PriceWithTax;\r\n\r\n if (this.HoldResponse.IsExtension) {\r\n price = this.SelectedOption.ExtensionPriceWithTax;\r\n }\r\n\r\n return price - credit;\r\n }\r\n\r\n CreditCardChanged(event) {\r\n console.log(event);\r\n console.log(this.SelectedCreditCard);\r\n }\r\n\r\n IsWithinCreditPeriod() {\r\n return moment().isBefore(moment(this.License.HoldEndDate));\r\n }\r\n\r\n ResumeProductPrice() {\r\n if (this.ResumeSimulationResponse.TotalPrice === 0) {\r\n return 0;\r\n } else {\r\n return this.ResumeSimulationResponse.ProductPrice;\r\n }\r\n }\r\n\r\n OtherCreditUsed() : number {\r\n let otherCreditUsed : number = 0;\r\n let data = this.ResumeSimulationResponse;\r\n\r\n let otherCreditNeeded = data.Total - data.HoldCredit;\r\n\r\n if ( otherCreditNeeded > 0 && data.OtherCredit > 0 ) {\r\n if ( otherCreditNeeded > data.OtherCredit ) {\r\n otherCreditUsed = data.OtherCredit;\r\n } else {\r\n otherCreditUsed = otherCreditNeeded;\r\n }\r\n }\r\n\r\n return otherCreditUsed;\r\n }\r\n\r\n ResumeLicense() {\r\n this.IsBusy = true;\r\n\r\n if (this.step === 1) {\r\n let request: ResumeLicenseSimulationRequest = {\r\n LicenseKey: this.License.Key,\r\n Initials: 'aa'\r\n };\r\n\r\n let disposable = this.api.ResumeLicenseSimulation(request).subscribe(response => {\r\n if (response.Result && response.Data.ResumePossible) {\r\n this.ResumeSimulationResponse = response.Data;\r\n\t\t\t\t\tthis.step = 5;\r\n\t\t\t\t\tthis.UpdateStepTitles();\r\n } else {\r\n let message;\r\n if (response.Result) {\r\n message = response.Data.ResumeNotPossibleReason;\r\n } else {\r\n message = response.Message;\r\n }\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'Cannot Resume Membership',\r\n text: message\r\n }).then( () => {}, () => {} );\r\n }\r\n this.IsBusy = false;\r\n disposable.unsubscribe();\r\n });\r\n } else if (this.step === 5) {\r\n let request: ResumeLicenseRequest = new ResumeLicenseRequest();\r\n\r\n if (this.ResumeSimulationResponse.HoldStarted == false ) {\r\n request.CreditCardID = this.CreditCards[0].value;\r\n request.LicenseKey = this.License.Key;\r\n request.Initials = 'resumedPendingHold';\r\n } else {\r\n request.CreditCardID = this.SelectedCreditCard;\r\n request.LicenseKey = this.License.Key;\r\n request.Initials = this.Initials;\r\n }\r\n\r\n let disposable = this.api.ResumeLicense(request).subscribe(response => {\r\n console.log(response);\r\n this.IsBusy = false;\r\n if (response.Result) {\r\n\r\n\t\t\t\t\tthis.result = HoldRequestDialogResultTypes.success;\r\n\r\n Swal.fire({\r\n icon: 'success',\r\n title: 'Membership Resumed',\r\n text: 'Your membership is now active and available for use'\r\n\t\t\t\t\t}).then( () => { this.close() }, () => { this.close() } );\r\n\t\t\t\t\t\r\n } else {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'Cannot Resume Membership',\r\n text: response.Message\r\n }).then( () => {}, () => {} );\r\n }\r\n disposable.unsubscribe();\r\n });\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n HoldDate() {\r\n return moment(this.License.NextBillingDate).format('MMMM DD, YYYY');\r\n }\r\n\r\n ResumeDate() {\r\n if (this.HoldResponse.IsExtension) {\r\n return moment(this.License.HoldStartDate).add(this.SelectedOption.Months, 'months').format('MMMM DD, YYYY');\r\n } else {\r\n return moment(this.License.NextBillingDate).add(this.SelectedOption.Months, 'months').format('MMMM DD, YYYY');\r\n }\r\n }\r\n\r\n confirm() {\r\n this.clickedOK = true;\r\n this.IsBusy = true;\r\n \r\n // waiting on endpoint\r\n let request: HoldRequest = {\r\n CreditCardID: this.SelectedCreditCard,\r\n HoldItemID: this.SelectedOption.ID,\r\n LicenseKey: this.License.Key,\r\n Initials: this.Initials\r\n };\r\n\r\n if (this.HoldResponse.IsExtension) {\r\n let disposable = this.api.ExtendHoldLicense(request).subscribe(response => {\r\n\t\t\t\tdisposable.unsubscribe();\r\n\t\t\t\tif(response.Result) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.result = HoldRequestDialogResultTypes.success;\r\n\r\n\t\t\t\t\tSwal.fire({\r\n icon: 'success',\r\n title: 'Hold Extended',\r\n text: 'Your Membership will resume on ' + moment(response.Data.HoldEndDate).format('MMMM Do, YYYY')\r\n }).then( () => {\r\n this.close();\r\n }, () => {\r\n this.close();\r\n\t\t\t\t\t} );\r\n\t\t\t\t\t\r\n } else {\r\n\r\n\t\t\t\t\tthis.result = HoldRequestDialogResultTypes.error;\r\n\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'Could Not Extend Hold',\r\n text: response.Message\r\n }).then( () => {\r\n this.close();\r\n }, () => {\r\n this.close();\r\n } );\r\n }\r\n \r\n // this.IsBusy = false;\r\n })\r\n } else {\r\n let disposable = this.api.HoldLicense(request).subscribe(response => {\r\n\t\t\t\tdisposable.unsubscribe();\r\n\t\t\t\tif (response.Result) {\r\n\r\n\t\t\t\t\tthis.result = HoldRequestDialogResultTypes.success;\r\n\t\t\t\t\t\r\n\t\t\t\t\tSwal.fire({\r\n icon: 'success',\r\n title: 'Hold Successful',\r\n text: 'Your Membership will resume on ' + moment(response.Data.HoldEndDate).format('MMMM Do, YYYY')\r\n }).then( () => {\r\n this.close();\r\n }, () => {\r\n this.close();\r\n } );\r\n\t\t\t\t\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\r\n\t\t\t\t\tthis.result = HoldRequestDialogResultTypes.error;\r\n\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'Error',\r\n text: response.Message\r\n }).then( () => {\r\n this.close();\r\n }, () => {\r\n this.close();\r\n\t\t\t\t\t} );\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n //this.IsBusy = false;\r\n \r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { SelectItem } from 'primeng/api';\r\nimport Swal from 'sweetalert2';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { IBaseResponse } from 'app/models/comm-http/responses/BaseResponse';\r\nimport { CreditCardResponseArray } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { InvoiceItem } from '../../models/ss-api/responses/invoice.item';\r\nimport { PayInvoiceRequest } from '../../models/ss-api/requests/pay.invoice.request';\r\nimport { DecimalPipe } from '@angular/common';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface IPayInvoiceDialogModel {\r\n title: string;\r\n subTitle: string;\r\n CreditCards: SelectItem[];\r\n Invoice: InvoiceItem;\r\n}\r\n\r\n@Component({\r\n selector: 'pay-invoice-dialog',\r\n styleUrls: ['./pay-invoice-dialog.component.scss'],\r\n templateUrl: './pay-invoice-dialog.component.html',\r\n providers: [DecimalPipe],\r\n})\r\nexport class PayInvoiceDialogComponent implements IPayInvoiceDialogModel, OnInit {\r\n\r\n IsBusy: boolean = false;\r\n\r\n confirmTitle: string = 'Purchase GIS Bundle?';\r\n confirmMessage: string = 'You are about to purchase a GIS bundle. Your credit card will be billed.';\r\n\r\n successTitle: string = 'GIS Bundle Purchased';\r\n successMessage: string = 'Your purchase was successfull. The GIS credits are added to your account.';\r\n\r\n errorTitle: string = 'Error';\r\n errorMessage: string = 'We were not able to process this request. Try again later or use a different credit card.';\r\n\r\n cancelledTitle: string = 'Cancelled';\r\n cancelledMessage: string = 'You cancelled this order.';\r\n\r\n\r\n title: string;\r\n subTitle: string;\r\n\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: number;\r\n\r\n Invoice: InvoiceItem;\r\n\r\n PurchaseDisabled: boolean = true;\r\n\r\n Credit: number = 0;\r\n\r\n showAddCreditCard: boolean = false;\r\n\r\n result: any;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService,\r\n private numberPipe: DecimalPipe\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.title = this.config.data.title;\r\n this.subTitle = this.config.data.subTitle;\r\n this.CreditCards = this.config.data.CreditCards;\r\n this.Invoice = this.config.data.Invoice;\r\n\r\n this.GetCredit();\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n CreditCardChanged(item: SelectItem) {\r\n\r\n }\r\n\r\n\r\n confirm() {\r\n let request = new PayInvoiceRequest;\r\n request.CreditCardID = this.SelectedCreditCard;\r\n request.InvoiceID = this.Invoice.ID;\r\n\r\n this.IsBusy = true;\r\n\r\n Swal.fire({\r\n title: 'Pay Invoice?',\r\n text: 'You are about to pay this invoice for $' + this.numberPipe.transform(this.GetPriceDue()) + '. Your selected credit card wil be billed.',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes!',\r\n cancelButtonText: 'Cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // try to order\r\n return this.api.BillingPayInvoice(request).toPromise();\r\n }\r\n }).then((response: any) => {\r\n this.IsBusy = false;\r\n\r\n if (response.isDismissed) {\r\n Swal.fire({\r\n title: 'Invoice Payment Cancelled!',\r\n text: '',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showCloseButton: false,\r\n confirmButtonText: 'OK',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n timer: 2000,\r\n }).then(() => {\r\n \r\n }, () => { }); // keep this line to prevent promise error;\r\n this.IsBusy = false;\r\n this.close();\r\n } else if (!response.value || !response.value.Result) { \r\n Swal.fire({\r\n title: 'Invoice Not Paid!',\r\n text: 'There was a problem processing your payment! Please try a different card, or contact our support team at 702-433-0274 or support@structurestudios.com.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showCloseButton: true,\r\n confirmButtonText: 'OK',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n }).then(() => {\r\n\r\n }, () => { }); // keep this line to prevent promise error;\r\n } else {\r\n Swal.fire({\r\n title: 'Invoice Paid!',\r\n text: 'Thank you for your membership!',\r\n icon: 'success',\r\n showCancelButton: false,\r\n showCloseButton: false,\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n timer: 2000,\r\n }).then(() => {\r\n this.result = true;\r\n this.close();\r\n }, () => {\r\n this.result = true;\r\n this.close();\r\n }); // keep this line to prevent promise error;\r\n }\r\n\r\n }, error => {\r\n Swal.fire({\r\n title: 'Invoice Payment Cancelled!',\r\n text: '',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showCloseButton: false,\r\n confirmButtonText: 'OK',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n timer: 2000,\r\n }).then(() => {\r\n\r\n }, () => { }); // keep this line to prevent promise error;\r\n this.IsBusy = false;\r\n this.close();\r\n });\r\n\r\n\r\n }\r\n\r\n cancel() {\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n cardAdded({cards, newCardId}: {cards: CreditCardResponseArray, newCardId: number}) {\r\n this.showAddCreditCard = false;\r\n this.updateCreditCardOptions(cards);\r\n this.SelectedCreditCard = newCardId;\r\n }\r\n\r\n addCardCanceled() {\r\n this.showAddCreditCard = false;\r\n }\r\n\r\n updateCreditCardOptions(newCards: CreditCardResponseArray) {\r\n this.CreditCards = [];\r\n newCards.forEach(card => {\r\n this.CreditCards.push(\r\n {\r\n label: 'Name: ' + card.FirstName + ' ' + card.LastName +\r\n ' - Last four: ' + card.LastFour +\r\n ' - exp. Date: ' + card.ExpMonth + '/' + card.ExpYear,\r\n value: card.ID\r\n });\r\n });\r\n }\r\n\r\n\r\n GetCredit() {\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.MemberCredit().subscribe(response => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n this.Credit = response.Data;\r\n }, error => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n GetPriceDue(): number {\r\n let totalPriceDue: number = 0;\r\n totalPriceDue += this.Invoice.Total;\r\n totalPriceDue -= this.Credit;\r\n if (totalPriceDue < 0 || Number.isNaN(totalPriceDue))\r\n totalPriceDue = 0;\r\n\r\n return totalPriceDue;\r\n\r\n }\r\n\r\n CreditUsed(): number {\r\n if (this.Credit > this.Invoice.Total)\r\n return this.Invoice.Total;\r\n else\r\n return this.Credit;\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { BillingRecurringTypes } from 'app/models/ss-api/responses/upgradable.products.response';\r\nimport { DashboardLicenseResponse } from 'app/models/ss-api/responses/dashboard.license.response';\r\nimport { SelectItem } from 'primeng/api';\r\nimport Swal from 'sweetalert2';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { ReactivateRequest } from '../../models/ss-api/requests/reactivate.request';\r\nimport { ReactivateSimulationResponse } from '../../models/ss-api/responses/reactivate.simulation.response';\r\nimport { CreditCardResponseArray } from '../../models/ss-api/responses/credit.card.response';\r\nimport { GlobalServices } from '../../services/global.service';\r\n\r\nexport interface IReactivateCDKeyDialogModel {\r\n title: string;\r\n License: DashboardLicenseResponse;\r\n CreditCards: SelectItem[];\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'reactivate-cdkey-dialog',\r\n templateUrl: './reactivate-cdkey-dialog.component.html',\r\n styleUrls: ['./reactivate-cdkey-dialog.component.css'],\r\n\r\n})\r\nexport class ReactivateCDKeyDialogComponent implements IReactivateCDKeyDialogModel, OnInit {\r\n\r\n IsBusy: boolean = false;\r\n\r\n License: DashboardLicenseResponse;\r\n\r\n // VARIABLES\r\n isBusy: boolean = false;\r\n\r\n setUpFee: boolean = false;\r\n\r\n // VARIABLES FROM INTERFACE\r\n title: string;\r\n LicenseKey: string;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n\r\n BillingDate: Date = new Date();\r\n\r\n Initals: string = '';\r\n\r\n PurchaseDisabled: boolean = true;\r\n\r\n includeSetupFee: boolean = false;\r\n\r\n simulationResponse: ReactivateSimulationResponse = new ReactivateSimulationResponse;\r\n\r\n // CREDIT CARDS\r\n showAddCreditCard: boolean = false;\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: number;\r\n\r\n Credit: number = 0;\r\n\r\n Item: any = {\r\n Name: 'VIP3D',\r\n BillingCycle: BillingRecurringTypes.Monthly,\r\n Price: '500.00'\r\n };\r\n result: any;\r\n\r\n constructor(private api: ssApiService, private gb: GlobalServices) {\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.setRequireSetupDate();\r\n this.simulateReactivation();\r\n this.GetCredit();\r\n\r\n if (this.CreditCards) {\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n }\r\n\r\n }\r\n\r\n close() {\r\n \r\n }\r\n\r\n setRequireSetupDate() {\r\n let requireSetupDate = new Date(this.License.NextBillingDate);\r\n requireSetupDate.setDate(requireSetupDate.getDate() + 30);\r\n if (new Date() > requireSetupDate) {\r\n this.includeSetupFee = true;\r\n }\r\n }\r\n\r\n simulateReactivation() {\r\n this.isBusy = true;\r\n let disposable = this.api.ProductsReactivateSimulation(this.License.Key).subscribe(response => {\r\n disposable.unsubscribe();\r\n this.isBusy = false;\r\n this.simulationResponse = response.Data;\r\n }, error => {\r\n disposable.unsubscribe();\r\n this.isBusy = false;\r\n });\r\n\r\n }\r\n\r\n getNextBillDate(): Date {\r\n let newNextBillDate: Date = new Date();\r\n newNextBillDate.setMonth(newNextBillDate.getMonth() + 1);\r\n return newNextBillDate;\r\n }\r\n\r\n confirm() {\r\n // Confirm Action\r\n let request = new ReactivateRequest;\r\n request.LicenseKey = this.License.Key;\r\n request.Initials = 'reactivate';\r\n request.CreditCardID = Number(this.SelectedCreditCard);\r\n request.AdminID = this.gb.AdminID;\r\n\r\n Swal.fire({\r\n title: 'Reactivate This License Key?',\r\n text: '',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes!',\r\n cancelButtonText: 'Cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // try to order\r\n return this.api.ProductsReactivate(request).toPromise();\r\n }\r\n }).then(\r\n async (response: any) => {\r\n\r\n if (response.isDismissed) {\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n }).then(() => {\r\n this.close();\r\n }, () => { }); // keep this line to prevent promise error;\r\n } else if (!response.value || !response.value.Result) {\r\n Swal.fire(\r\n {\r\n title: 'Error',\r\n text: 'Error reactivating License Key',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1500\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n } else {\r\n // show confirmation\r\n Swal.fire(\r\n {\r\n title: 'Success',\r\n text: 'Product Reactivated',\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1500\r\n })\r\n .then(() => {\r\n \r\n }, () => { }); // keep this line to prevent promise error;\r\n }\r\n this.result = true;\r\n this.close();\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n }).then(() => {\r\n this.close();\r\n }, () => { }); // keep this line to prevent promise error;\r\n }\r\n }).catch(error => {\r\n Swal.fire(\r\n {\r\n title: 'Error',\r\n text: error.message,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonText: 'OK',\r\n })\r\n .then((response: any) => {\r\n this.result = false;\r\n // this.IsBusy = false;\r\n this.close();\r\n }, (dismiss) => {\r\n // this.IsBusy = false;\r\n return;\r\n }); // keep this line to prevent promise error;\r\n });\r\n\r\n\r\n }\r\n\r\n cancel() {\r\n // we set dialog result as true on click on confirm button,\r\n // then we can get dialog result from caller code\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n BillingTypeToString(type: BillingRecurringTypes) {\r\n return BillingRecurringTypes[type];\r\n }\r\n\r\n BillingTypeToPerString(type: BillingRecurringTypes) {\r\n if (type == BillingRecurringTypes.Monthly)\r\n return 'per Month';\r\n else\r\n return 'per Year';\r\n }\r\n\r\n InitialsChanged(data: string) {\r\n this.CheckPurchaseDisabled();\r\n }\r\n\r\n CheckPurchaseDisabled() {\r\n if (this.Initals != '')\r\n this.PurchaseDisabled = false;\r\n else\r\n this.PurchaseDisabled = true;\r\n }\r\n\r\n CreditCardChanged(e: any) {\r\n\r\n }\r\n\r\n recurringToString(myBillingCycle: BillingRecurringTypes): string {\r\n if (myBillingCycle == BillingRecurringTypes.Monthly)\r\n return 'Monthly';\r\n else\r\n return 'Yearly';\r\n }\r\n\r\n\r\n cardAdded({cards, newCardId}: {cards: CreditCardResponseArray, newCardId: number}) {\r\n this.showAddCreditCard = false;\r\n this.updateCreditCardOptions(cards);\r\n this.SelectedCreditCard = newCardId;\r\n this.CheckPurchaseDisabled();\r\n }\r\n\r\n addCardCanceled() {\r\n this.showAddCreditCard = false;\r\n }\r\n\r\n updateCreditCardOptions(newCards: CreditCardResponseArray) {\r\n this.CreditCards = [];\r\n newCards.forEach(card => {\r\n this.CreditCards.push(\r\n {\r\n label: 'Name: ' + card.FirstName + ' ' + card.LastName +\r\n ' - Last four: ' + card.LastFour +\r\n ' - exp. Date: ' + card.ExpMonth + '/' + card.ExpYear,\r\n value: card.ID\r\n });\r\n });\r\n }\r\n\r\n\r\n GetCredit() {\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.MemberCredit().subscribe(response => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n this.Credit = response.Data;\r\n }, error => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n GetPriceDue(): number {\r\n let totalPriceDue: number = 0;\r\n totalPriceDue += this.simulationResponse.ProductPrice;\r\n totalPriceDue += this.simulationResponse.SetupPrice;\r\n totalPriceDue -= this.Credit;\r\n if (totalPriceDue < 0 || Number.isNaN(totalPriceDue))\r\n totalPriceDue = 0;\r\n\r\n return totalPriceDue;\r\n\r\n }\r\n\r\n CreditUsed(): number {\r\n if (this.Credit > (this.simulationResponse.ProductPrice + this.simulationResponse.SetupPrice))\r\n return (this.simulationResponse.ProductPrice + this.simulationResponse.SetupPrice);\r\n else\r\n return this.Credit;\r\n }\r\n\r\n}\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { BillingRecurringTypes } from 'app/models/ss-api/responses/upgradable.products.response';\r\nimport { DashboardLicenseResponse } from 'app/models/ss-api/responses/dashboard.license.response';\r\nimport { SelectItem } from 'primeng/api';\r\nimport Swal from 'sweetalert2';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { ReactivateRequest } from '../../models/ss-api/requests/reactivate.request';\r\nimport { ReactivateSimulationResponse } from '../../models/ss-api/responses/reactivate.simulation.response';\r\nimport { CreditCardResponseArray } from '../../models/ss-api/responses/credit.card.response';\r\nimport { GlobalServices } from '../../services/global.service';\r\nimport { PublicOrderProductsResponseArray, PublicOrderProductsResponse } from '../../../app/models/ss-api/responses/public.order.products.response';\r\nimport { ReactivateSimulationRequestv2 } from 'app/models/ss-api/requests/reactivate.simulation.request.v2';\r\nimport { ReactivateSimulationResponsev2 } from 'app/models/ss-api/responses/reactivate.simulation.response.v2';\r\nimport { ReactivateRequestv2 } from 'app/models/ss-api/requests/reactivate.request.v2';\r\nimport * as moment from 'moment';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\r\nimport { MemberProfile } from 'app/models/domain/member.profile';\r\n\r\nexport interface IReactivateLicenseDialogModel {\r\n title: string;\r\n License: DashboardLicenseResponse;\r\n CreditCards: SelectItem[];\r\n CameFromAdd: boolean;\r\n Products: PublicOrderProductsResponseArray;\r\n}\r\n\r\n@Component({\r\n selector: 'reactivate-license-dialog',\r\n templateUrl: './reactivate-license-dialog.component.html',\r\n styleUrls: ['./reactivate-license-dialog.component.scss'],\r\n\r\n})\r\nexport class ReactivateLicenseDialogComponent implements OnInit {\r\n // @ViewChild('container', {static: false}) container: ElementRef;\r\n\r\n IsBusy: boolean = false;\r\n\r\n License: DashboardLicenseResponse;\r\n\r\n // VARIABLES\r\n isBusy: boolean = false;\r\n\r\n setUpFee: boolean = false;\r\n\r\n CameFromAdd: boolean = false;\r\n Products: PublicOrderProductsResponseArray;\r\n SelectedProduct: PublicOrderProductsResponse = new PublicOrderProductsResponse();\r\n SelectedBillingCycle: BillingRecurringTypes;\r\n isYearly: boolean;\r\n SelectedPrice: number;\r\n SelectedSetupFee: number;\r\n PriceDue: number;\r\n ProductSelected: boolean;\r\n IsYardSelected: boolean;\r\n DisableYard: boolean;\r\n IsInCycle: boolean;\r\n memberProfile: MemberProfile;\r\n designerName: string;\r\n\r\n // VARIABLES FROM INTERFACE\r\n title: string;\r\n LicenseKey: string;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n\r\n BillingDate: Date = new Date();\r\n\r\n Initals: string = '';\r\n\r\n PurchaseDisabled: boolean = true;\r\n\r\n includeSetupFee: boolean = false;\r\n\r\n simulationResponse: ReactivateSimulationResponsev2 = new ReactivateSimulationResponsev2;\r\n\r\n // CREDIT CARDS\r\n showAddCreditCard: boolean = false;\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: number;\r\n DesignerFieldsHidden: boolean = true;\r\n DesignerName: string;\r\n DesignerEmail: string;\r\n\r\n Credit: number = 0;\r\n\r\n Item: any = {\r\n Name: 'VIP3D',\r\n BillingCycle: BillingRecurringTypes.Monthly,\r\n Price: '500.00'\r\n };\r\n\r\n AssignmentOptions: SelectItem[];\r\n KeyAssignment: SelectItem;\r\n\r\n result: any;\r\n\r\n currentModalStep: number = 1;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService, private gb: GlobalServices\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.title = this.config.data.title;\r\n this.License = this.config.data.License;\r\n this.CreditCards = this.config.data.CreditCards;\r\n this.CameFromAdd = this.config.data.CameFromAdd;\r\n this.Products = this.config.data.Products;\r\n this.memberProfile = this.config.data.memberProfile;\r\n this.designerName = this.config.data.designerName;\r\n this.setRequireSetupDate();\r\n this.GetCredit();\r\n\r\n this.AssignmentOptions = [\r\n { label: this.designerName || 'Prior User', value: 0 },\r\n { label: `Me: Only ${this.memberProfile.Firstname} ${this.memberProfile.Lastname} will have access`, value: 1 },\r\n { label: 'New Designer', value: 2 }\r\n ];\r\n\r\n this.KeyAssignment = this.AssignmentOptions[0];\r\n\r\n setTimeout(() => {\r\n let productID = Number(localStorage.getItem('cartProductID'));\r\n let billingCycle = Number(localStorage.getItem('cartBillingCycle'));\r\n let yard = Boolean(localStorage.getItem('cartHasYard'));\r\n\r\n if (productID && billingCycle) {\r\n let product = this.Products.filter(product => product.ProductID == productID)[0];\r\n this.SetSelectedProduct(product, billingCycle);\r\n this.SelectedBillingCycle = billingCycle;\r\n this.isYearly = this.SelectedBillingCycle == BillingRecurringTypes.Yearly;\r\n } else {\r\n this.SelectedBillingCycle = this.License.Recurring;\r\n this.isYearly = this.SelectedBillingCycle == BillingRecurringTypes.Yearly;\r\n this.SetSelectedProduct(this.Products.filter(product => product.Name == this.License.ProductName)[0], this.License.Recurring);\r\n }\r\n\r\n if (this.CreditCards) {\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n }\r\n\r\n\r\n }, 250);\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n\r\n\r\n YardAvailable(product: PublicOrderProductsResponse) {\r\n\r\n if (product.YardAddon == null || product.YardAddon == undefined)\r\n return false;\r\n\r\n var isDevPublic = this.gb.IsDevPublic();\r\n var isLocal = this.gb.IsLocal();\r\n\r\n //console.log(\"Item: \", product.Name);\r\n //console.log(\"YardVisiblePublic: \", product.YardVisiblePublic);\r\n //console.log(\"isDevPublic: \", isDevPublic);\r\n //console.log(\"isLocal: \", isLocal);\r\n\r\n if (!product.YardVisiblePublic && (!isDevPublic && !isLocal))\r\n return false;\r\n\r\n // ok\r\n return true;\r\n }\r\n\r\n\r\n setRequireSetupDate() {\r\n let requireSetupDate = new Date(this.License.NextBillingDate);\r\n requireSetupDate.setDate(requireSetupDate.getDate() + 30);\r\n if (new Date() > requireSetupDate) {\r\n this.includeSetupFee = true;\r\n }\r\n }\r\n\r\n simulateReactivation() {\r\n this.isBusy = true;\r\n\r\n let request: ReactivateSimulationRequestv2 = {\r\n LicenseKey: this.License.Key,\r\n IncludeYARD: this.IsYardSelected,\r\n NewProductID: this.SelectedProduct.ProductID,\r\n BillingCycle: this.SelectedBillingCycle\r\n };\r\n\r\n let disposable = this.api.ProductsReactivateSimulationv2(request).subscribe(response => {\r\n console.log(\"reactresponse\", response);\r\n this.simulationResponse = response.Data;\r\n this.isBusy = false;\r\n\r\n if (response.Data && response.Data.ProductPrice <= 0) {\r\n this.IsInCycle = true;\r\n }\r\n this.CheckPurchaseDisabled();\r\n disposable.unsubscribe();\r\n }, error => {\r\n this.isBusy = false;\r\n });\r\n\r\n }\r\n\r\n MonthlySelected(product: PublicOrderProductsResponse) {\r\n this.SetSelectedProduct(product, BillingRecurringTypes.Monthly);\r\n }\r\n\r\n YearlySelected(product: PublicOrderProductsResponse) {\r\n this.SetSelectedProduct(product, BillingRecurringTypes.Yearly);\r\n }\r\n\r\n billingCycleChange(e) {\r\n this.SelectedBillingCycle = e.checked ? BillingRecurringTypes.Yearly : BillingRecurringTypes.Monthly;\r\n // this.simulateReactivation();\r\n }\r\n\r\n billingCylceIsYearly()\r\n {\r\n return this.SelectedBillingCycle == BillingRecurringTypes.Yearly;\r\n }\r\n\r\n AssignmentChanged(e) {\r\n this.KeyAssignment = this.AssignmentOptions.find(option => option.value === e.value);\r\n this.DesignerFieldsHidden = this.KeyAssignment.value != 2;\r\n if (this.DesignerFieldsHidden) {\r\n this.DesignerName = '';\r\n this.DesignerEmail = '';\r\n this.CheckPurchaseDisabled()\r\n }\r\n }\r\n\r\n YardSelected(event: any, product: PublicOrderProductsResponse) {\r\n\r\n this.IsYardSelected = event.checked;\r\n\r\n }\r\n\r\n SetSelectedProduct(product: PublicOrderProductsResponse, billingCycle?: BillingRecurringTypes) {\r\n this.SelectedProduct = product;\r\n\r\n if (this.IsYardSelected == true && !this.YardAvailable(product))\r\n this.IsYardSelected = false;\r\n\r\n if (billingCycle) {\r\n this.SelectedBillingCycle = billingCycle;\r\n }\r\n this.SelectedPrice = product.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Price;\r\n this.SelectedSetupFee = product.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Setup;\r\n\r\n this.PriceDue = this.SelectedPrice + this.SelectedSetupFee - this.Credit;\r\n\r\n if (this.PriceDue < 0)\r\n this.PriceDue = 0;\r\n\r\n this.ProductSelected = true;\r\n this.CheckPurchaseDisabled();\r\n // this.CheckYardStatus();\r\n // this.simulateReactivation();\r\n }\r\n\r\n getNextBillDate(): Date {\r\n let newNextBillDate: Date = new Date();\r\n newNextBillDate.setMonth(newNextBillDate.getMonth() + 1);\r\n return newNextBillDate;\r\n }\r\n\r\n confirm() {\r\n // Confirm Action\r\n let request = new ReactivateRequestv2;\r\n request.LicenseKey = this.License.Key;\r\n request.Initials = 'reactivate';\r\n request.CreditCardID = Number(this.SelectedCreditCard);\r\n request.AdminID = this.gb.AdminID;\r\n request.BillingCycle = this.SelectedBillingCycle;\r\n request.IncludeYARD = this.IsYardSelected;\r\n request.NewProductID = this.SelectedProduct.ProductID;\r\n request.designerEmail = this.DesignerEmail;\r\n request.designerName = this.DesignerName;\r\n\r\n switch (this.KeyAssignment.value) {\r\n case 0:\r\n request.keepAssigned = true;\r\n break;\r\n case 1:\r\n request.assignToMember = true;\r\n break;\r\n case 2:\r\n request.assignToMember = false;\r\n break;\r\n }\r\n\r\n Swal.fire({\r\n title: 'Reactivate This License Key?',\r\n text: '',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes!',\r\n cancelButtonText: 'Cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // try to order\r\n return this.api.ProductsReactivatev2(request).toPromise();\r\n }\r\n }).then(\r\n async (response: any) => {\r\n this.gb.ClearOrderFormLocalStorage();\r\n\r\n if (response.isDismissed) {\r\n this.gb.ClearOrderFormLocalStorage();\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n }).then(() => {\r\n this.close();\r\n }, () => { }); // keep this line to prevent promise error;\r\n } else if (!response.value || !response.value.Result) {\r\n Swal.fire(\r\n {\r\n title: 'Error',\r\n text: 'Error reactivating License Key',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1500\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n } else {\r\n // show confirmation\r\n Swal.fire(\r\n {\r\n title: 'Success',\r\n text: 'Product Reactivated',\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1500\r\n })\r\n .then(() => {\r\n\r\n }, () => { }); // keep this line to prevent promise error;\r\n }\r\n this.result = true;\r\n this.close();\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n this.gb.ClearOrderFormLocalStorage();\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n }).then(() => {\r\n this.close();\r\n }, () => { }); // keep this line to prevent promise error;\r\n }\r\n }).catch(error => {\r\n Swal.fire(\r\n {\r\n title: 'Error',\r\n text: error.message,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonText: 'OK',\r\n })\r\n .then((response: any) => {\r\n this.result = false;\r\n // this.IsBusy = false;\r\n this.close();\r\n }, (dismiss) => {\r\n // this.IsBusy = false;\r\n return;\r\n }); // keep this line to prevent promise error;\r\n });\r\n\r\n\r\n }\r\n\r\n cancel() {\r\n // we set dialog result as true on click on confirm button,\r\n // then we can get dialog result from caller code\r\n this.gb.ClearOrderFormLocalStorage();\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n next() {\r\n this.currentModalStep = 2;\r\n this.simulateReactivation();\r\n // this.container.nativeElement.scrollTo(0, 0);\r\n }\r\n\r\n back() {\r\n this.currentModalStep = 1;\r\n }\r\n\r\n BillingTypeToString(type: BillingRecurringTypes) {\r\n return BillingRecurringTypes[type];\r\n }\r\n\r\n BillingTypeToPerString(type: BillingRecurringTypes) {\r\n if (type == BillingRecurringTypes.Monthly)\r\n return 'per Month';\r\n else\r\n return 'per Year';\r\n }\r\n\r\n InitialsChanged(data: string) {\r\n this.CheckPurchaseDisabled();\r\n }\r\n\r\n CheckDesignerFields() {\r\n if (this.DesignerFieldsHidden || (!this.DesignerFieldsHidden && (this.DesignerEmail != undefined && this.DesignerEmail.length > 1) && (this.DesignerName != undefined && this.DesignerName.length > 1))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n CheckPurchaseDisabled() {\r\n if (this.ProductSelected && this.CreditCards.length > 0 && this.CheckDesignerFields())\r\n this.PurchaseDisabled = false;\r\n else\r\n this.PurchaseDisabled = true;\r\n }\r\n\r\n\r\n\r\n CreditCardChanged(e: any) {\r\n\r\n }\r\n\r\n recurringToString(myBillingCycle: BillingRecurringTypes): string {\r\n if (myBillingCycle == BillingRecurringTypes.Monthly)\r\n return 'Monthly';\r\n else\r\n return 'Yearly';\r\n }\r\n\r\n\r\n cardAdded({ cards, newCardId }: { cards: CreditCardResponseArray, newCardId: number }) {\r\n this.showAddCreditCard = false;\r\n this.updateCreditCardOptions(cards);\r\n this.SelectedCreditCard = newCardId;\r\n this.CheckPurchaseDisabled();\r\n }\r\n\r\n addCardCanceled() {\r\n this.showAddCreditCard = false;\r\n }\r\n\r\n updateCreditCardOptions(newCards: CreditCardResponseArray) {\r\n this.CreditCards = [];\r\n newCards.forEach(card => {\r\n this.CreditCards.push(\r\n {\r\n label: 'Name: ' + card.FirstName + ' ' + card.LastName +\r\n ' - Last four: ' + card.LastFour +\r\n ' - exp. Date: ' + card.ExpMonth + '/' + card.ExpYear,\r\n value: card.ID\r\n });\r\n });\r\n }\r\n\r\n\r\n GetCredit() {\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.MemberCredit().subscribe(response => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n this.Credit = response.Data;\r\n }, error => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n GetPriceDue(): number {\r\n let totalPriceDue: number = 0;\r\n\r\n if (this.simulationResponse) {\r\n totalPriceDue += this.simulationResponse.TotalWithTax;\r\n totalPriceDue -= this.Credit;\r\n if (totalPriceDue < 0 || Number.isNaN(totalPriceDue))\r\n totalPriceDue = 0;\r\n }\r\n\r\n return totalPriceDue;\r\n }\r\n\r\n CreditUsed(): number {\r\n if (this.simulationResponse && this.Credit > this.simulationResponse.TotalWithTax)\r\n return this.simulationResponse.TotalWithTax;\r\n else\r\n return this.Credit;\r\n }\r\n\r\n InCycleMessage() {\r\n if (this.IsInCycle) {\r\n Swal.fire({\r\n icon: 'warning',\r\n title: 'Active License',\r\n text: 'This license is still active until ' + moment(this.License.NextBillingDate).format('MMM DD, YYYY') + ' and cannot be modified. For more assistance, please contact support at 702-433-0274.',\r\n backdrop: false\r\n });\r\n }\r\n }\r\n\r\n getProductPrice(product: PublicOrderProductsResponse) {\r\n try {\r\n var productPrice = product.Prices.find(price => price.BillingCycle === this.SelectedBillingCycle).Price;\r\n\r\n var yardPrice = 0;\r\n\r\n if (this.YardAvailable(product) && this.IsYardSelected)\r\n yardPrice = product.YardAddon.Prices.find(price => price.BillingCycle === this.SelectedBillingCycle).Price;\r\n\r\n return productPrice + yardPrice;\r\n } catch (e) {\r\n\r\n }\r\n return 0;\r\n }\r\n\r\n}\r\n","import { BaseResponse, IBaseResponse } from '../../models/comm-http/responses/BaseResponse';\r\n\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport { BillingRecurringTypes, UpgradableProductsResponseArray, UpgradableProductsResponse } from 'app/models/ss-api/responses/upgradable.products.response';\r\nimport { SelectItem } from 'primeng/api';\r\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\r\nimport { UpgradeProductRequest } from 'app/models/ss-api/requests/upgrade.product.request';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { DashboardLicenseResponse } from '../../models/ss-api/responses/dashboard.license.response';\r\nimport { GlobalServices } from 'app/services/global.service';\r\n\r\nimport { UpgradeSimulationResponse } from '../../models/ss-api/responses/upgrade.simulation.response';\r\nimport { CreditCardResponseArray } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\r\n\r\nexport interface IUpgradeProductDialogModel {\r\n title: string;\r\n subTitle: string;\r\n message: string;\r\n upgradeProducts: UpgradableProductsResponseArray;\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: number;\r\n LicenseKey: string;\r\n\r\n LicenseObject: DashboardLicenseResponse;\r\n\r\n CurrentProductBillingCycle: BillingRecurringTypes;\r\n\r\n}\r\n\r\ninterface productOptionItem {\r\n name: string;\r\n productID: number;\r\n billingCycle: BillingRecurringTypes;\r\n}\r\n\r\n@Component({\r\n selector: 'upgrade-product-dialog',\r\n styleUrls: ['./upgrade-product-dialog.component.scss'],\r\n templateUrl: './upgrade-product-dialog.component.html'\r\n})\r\nexport class UpgradeProductDialogComponent implements IUpgradeProductDialogModel, OnInit {\r\n\r\n IsBusy: boolean = true;\r\n\r\n confirmTitle: string = 'Upgrade Membership';\r\n\r\n successTitle: string = 'Membership Upgraded!';\r\n successMessage: string = 'Your purchase was successfull. Please restart your software so that it can update to Vip3D';\r\n\r\n errorTitle: string = 'Error';\r\n errorMessage: string = 'We were not able to process this request. Try again later or use a different credit card.';\r\n\r\n cancelledTitle: string = 'Cancelled';\r\n cancelledMessage: string = 'You cancelled this upgrade.';\r\n\r\n\r\n\r\n title: string;\r\n subTitle: string;\r\n message: string;\r\n upgradeProducts: UpgradableProductsResponseArray;\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: number;\r\n\r\n SelectedProduct: UpgradableProductsResponse = new UpgradableProductsResponse();\r\n SelectedProductLock: boolean = false;\r\n\r\n ProductOptions: productOptionItem[] = [];\r\n SelectedProductOption: number;\r\n\r\n PurchaseDisabled: boolean = false;\r\n Initals: string = 'AP'; // Account Panel\r\n LicenseKey: string = '';\r\n LicenseObject: DashboardLicenseResponse;\r\n\r\n\r\n // CURRENT PRODUCT VARIABLES\r\n CurrentProductBillingCycle: BillingRecurringTypes;\r\n\r\n CurrentProductName: string = 'Vip3D';\r\n\r\n TodaysDate: Date = new Date();\r\n RenewDate: Date = new Date();\r\n\r\n PriceSimulationResponse: UpgradeSimulationResponse = new UpgradeSimulationResponse;\r\n CreditAmount: number = 0;\r\n DebitAmount: number = 0;\r\n PriceDue: any = 0;\r\n PriceDueWithTax: any = 0;\r\n State: string = \"\";\r\n TaxRateDisplay: string = \"\";\r\n\r\n TaxEnabled: boolean = false;\r\n\r\n Credit: number = 0;\r\n TotalDueUpgradeTaxAmount: number = 0;\r\n\r\n result: any;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService,\r\n private gb: GlobalServices\r\n ) {\r\n }\r\n\r\n async ngOnInit() {\r\n this.title = this.config.data.title;\r\n this.subTitle = this.config.data.subTitle;\r\n this.message = this.config.data.message;\r\n this.upgradeProducts = this.config.data.upgradeProducts;\r\n this.CreditCards = this.config.data.CreditCards;\r\n this.SelectedCreditCard = this.config.data.SelectedCreditCard;\r\n this.LicenseKey = this.config.data.LicenseKey;\r\n this.CurrentProductBillingCycle = this.config.data.CurrentProductBillingCycle;\r\n this.LicenseObject = this.config.data.LicenseObject;\r\n\r\n this.setUpProductOptions();\r\n\r\n console.log(\"Upgrade Products Options\", this.upgradeProducts);\r\n\r\n if (this.SelectedProduct == undefined) {\r\n\r\n }\r\n\r\n this.GetCredit();\r\n\r\n let request = new UpgradeProductRequest();\r\n request.CreditCardID = 0;\r\n request.Initials = 'PS'; // Price Simulation\r\n request.LicenseKey = this.LicenseKey;\r\n request.NewBillingCycle = this.SelectedProduct.BillingCycle;\r\n request.NewProductID = this.SelectedProduct.ProductID;\r\n request.SimulateOnly = true;\r\n request.AdminID = this.gb.AdminID;\r\n\r\n await this.simulateUpgradePrice(request).then(\r\n (response) => {\r\n console.log(\"SimUpdResp\", response.Data);\r\n this.PriceDue = response.Data.TotalDueUpgrade;\r\n this.PriceDueWithTax = response.Data.TotalDueUpgradeWithTax;\r\n this.PriceSimulationResponse = response.Data;\r\n this.TaxEnabled = response.Data.TaxEnabled;\r\n this.TotalDueUpgradeTaxAmount = response.Data.TotalDueUpgradeTaxAmount;\r\n this.TaxRateDisplay = response.Data.TaxRateDisplay;\r\n this.State = response.Data.State;\r\n }\r\n );\r\n\r\n if (this.CreditCards) {\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n }\r\n this.IsBusy = false;\r\n\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n\r\n setUpProductOptions() {\r\n this.upgradeProducts.forEach(x => {\r\n let newName: string = x.Name + ' ' + this.getBillingCycleName(x.BillingCycle);\r\n\r\n if (x.HasYard)\r\n newName += ' + YARD';\r\n\r\n this.ProductOptions.push({ name: newName, productID: x.ProductID, billingCycle: x.BillingCycle });\r\n });\r\n\r\n this.SelectedProductOption = this.ProductOptions[0].productID;\r\n\r\n this.setSelectedProduct(this.ProductOptions[0]);\r\n }\r\n\r\n getBillingCycleName(billingCycle: BillingRecurringTypes): string {\r\n if (billingCycle == BillingRecurringTypes.Monthly)\r\n return 'Monthly';\r\n else\r\n return 'Yearly';\r\n }\r\n\r\n setSelectedProduct(e: productOptionItem) {\r\n this.upgradeProducts.forEach(x => {\r\n if (x.ProductID == e.productID && x.BillingCycle == e.billingCycle) {\r\n this.SelectedProduct = x;\r\n }\r\n\r\n });\r\n\r\n\r\n this.RenewDate = new Date(this.LicenseObject.NextBillingDate);\r\n if (this.SelectedProduct.BillingCycle == BillingRecurringTypes.Yearly) {\r\n this.RenewDate.setFullYear(this.RenewDate.getFullYear() + 1);\r\n }\r\n\r\n }\r\n\r\n async ProductChanged(e) {\r\n\r\n this.IsBusy = true;\r\n\r\n let newProductOption: productOptionItem = {\r\n name: e.value.name,\r\n productID: e.value.productID,\r\n billingCycle: e.value.billingCycle\r\n };\r\n\r\n this.setSelectedProduct(newProductOption);\r\n\r\n let request = new UpgradeProductRequest();\r\n request.CreditCardID = 0;\r\n request.Initials = 'PS'; // Price Simulation\r\n request.LicenseKey = this.LicenseKey;\r\n request.NewBillingCycle = this.SelectedProduct.BillingCycle;\r\n request.NewProductID = this.SelectedProduct.ProductID;\r\n request.SimulateOnly = true;\r\n request.AdminID = this.gb.AdminID;\r\n\r\n await this.simulateUpgradePrice(request).then(\r\n (response) => {\r\n this.PriceDue = response.Data.TotalDueUpgrade;\r\n this.PriceSimulationResponse = response.Data;\r\n this.PriceDueWithTax = response.Data.TotalDueUpgradeWithTax;\r\n this.TaxEnabled = response.Data.TaxEnabled;\r\n this.TotalDueUpgradeTaxAmount = response.Data.TotalDueUpgradeTaxAmount;\r\n this.TaxRateDisplay = response.Data.TaxRateDisplay;\r\n this.State = response.Data.State;\r\n }\r\n );\r\n\r\n this.IsBusy = false;\r\n\r\n }\r\n\r\n\r\n simulateUpgradePrice(request: UpgradeProductRequest): Promise> {\r\n /*\r\n let request = new UpgradeProductRequest();\r\n request.CreditCardID = 0;\r\n request.Initials = \"PS\"; //Price Simulation\r\n request.LicenseKey = this.LicenseKey;\r\n request.NewBillingCycle = this.SelectedProduct.BillingCycle;\r\n request.NewProductID = this.SelectedProduct.ProductID;\r\n request.SimulateOnly = true;\r\n */\r\n\r\n return this.api.ProductsUpgradeSimulation(request).toPromise();\r\n\r\n }\r\n\r\n ProductSelectionChanged(product: UpgradableProductsResponse) {\r\n this.SelectedProduct = product;\r\n this.SelectedProductLock = false;\r\n this.CheckPurchaseDisabled();\r\n\r\n\r\n }\r\n\r\n\r\n BillingTypeToString(type: BillingRecurringTypes) {\r\n return BillingRecurringTypes[type];\r\n }\r\n\r\n BillingTypeToPerString(type: BillingRecurringTypes) {\r\n if (type == BillingRecurringTypes.Monthly)\r\n return 'per Month';\r\n else\r\n return 'per Year';\r\n }\r\n\r\n CreditCardChanged() {\r\n\r\n }\r\n\r\n InitialsChanged(data: string) {\r\n this.CheckPurchaseDisabled();\r\n }\r\n\r\n CheckPurchaseDisabled() {\r\n // if (this.Initals != \"\" && !this.SelectedProductLock)\r\n if (!this.SelectedProductLock)\r\n this.PurchaseDisabled = false;\r\n else\r\n this.PurchaseDisabled = true;\r\n }\r\n\r\n SelectedBillingCycleToString(): string {\r\n\r\n switch (this.SelectedProduct.BillingCycle) {\r\n\r\n case BillingRecurringTypes.Monthly:\r\n return 'month';\r\n\r\n case BillingRecurringTypes.Yearly:\r\n return 'year';\r\n\r\n default:\r\n return 'unimplemented';\r\n }\r\n\r\n }\r\n\r\n private UpgradeProduct(): Promise {\r\n\r\n if (this.SelectedCreditCard == undefined)\r\n // we didn't change the credit card selection\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n\r\n let request = new UpgradeProductRequest();\r\n request.CreditCardID = this.SelectedCreditCard;\r\n request.Initials = this.Initals;\r\n request.LicenseKey = this.LicenseKey;\r\n request.NewBillingCycle = this.SelectedProduct.BillingCycle;\r\n request.NewProductID = this.SelectedProduct.ProductID;\r\n request.SimulateOnly = false; // for debug\r\n request.AdminID = this.gb.AdminID;\r\n\r\n return this.api.ProductsUpgrade(request)\r\n .toPromise()\r\n .then(response => {\r\n this.result = response.Result;\r\n return response;\r\n });\r\n }\r\n\r\n ProcessOrder(): Promise {\r\n // confirm\r\n return Swal.fire({\r\n title: this.confirmTitle,\r\n text: 'You are about to upgrade a membership to ' + this.SelectedProduct.Name + '. Your credit card will be billed.',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes!',\r\n cancelButtonText: 'Cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // try to order\r\n return this.UpgradeProduct();\r\n }\r\n });\r\n\r\n }\r\n\r\n async confirm() {\r\n this.result = true;\r\n\r\n await this.ProcessOrder().then(\r\n (response: any) => {\r\n\r\n // init dialog vars\r\n let cType = 'success';\r\n let cTitle = this.successTitle;\r\n let cMessage = 'Your purchase was successfull. Please restart your software so that it can update to ' + this.SelectedProduct.Name + '.';\r\n\r\n if (response.isDismissed) {\r\n // show cancelled\r\n Swal.fire({\r\n title: this.cancelledTitle,\r\n text: this.cancelledMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n } else if (response.value && response.value.Result) {\r\n // show result\r\n Swal.fire(\r\n {\r\n\r\n title: cTitle,\r\n text: cMessage,\r\n icon: cType as SweetAlertIcon,\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 2000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n else {\r\n // not ok\r\n\r\n Swal.fire(\r\n {\r\n\r\n title: this.errorTitle,\r\n text: this.errorMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonText: 'OK',\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n this.result = false;\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: this.cancelledTitle,\r\n text: this.cancelledMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n\r\n this.close();\r\n }\r\n\r\n\r\n\r\n\r\n cancel() {\r\n // we set dialog result as true on click on confirm button,\r\n // then we can get dialog result from caller code\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n\r\n showAddCreditCard: boolean = false;\r\n\r\n cardAdded({ cards, newCardId }: { cards: CreditCardResponseArray, newCardId: number }) {\r\n this.showAddCreditCard = false;\r\n this.updateCreditCardOptions(cards);\r\n this.SelectedCreditCard = newCardId;\r\n this.CheckPurchaseDisabled();\r\n }\r\n\r\n addCardCanceled() {\r\n this.showAddCreditCard = false;\r\n }\r\n\r\n updateCreditCardOptions(newCards: CreditCardResponseArray) {\r\n this.CreditCards = [];\r\n newCards.forEach(card => {\r\n this.CreditCards.push(\r\n {\r\n label: 'Name: ' + card.FirstName + ' ' + card.LastName +\r\n ' - Last four: ' + card.LastFour +\r\n ' - exp. Date: ' + card.ExpMonth + '/' + card.ExpYear,\r\n value: card.ID\r\n });\r\n });\r\n }\r\n\r\n GetCredit() {\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.MemberCredit().subscribe(response => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n this.Credit = response.Data;\r\n }, error => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n GetPriceDue(): number {\r\n let totalPriceDue: number = 0;\r\n totalPriceDue += this.PriceDueWithTax;\r\n totalPriceDue -= this.Credit;\r\n if (totalPriceDue < 0 || Number.isNaN(totalPriceDue))\r\n totalPriceDue = 0;\r\n\r\n return totalPriceDue;\r\n }\r\n\r\n CreditUsed(): number {\r\n if (this.Credit > this.PriceDue)\r\n return this.PriceDueWithTax;\r\n else\r\n return this.Credit;\r\n }\r\n\r\n\r\n\r\n ProductNameAdditions(): string {\r\n let additions: string = '';\r\n\r\n if (this.SelectedProduct.HasYard)\r\n additions += ' + YARD';\r\n\r\n return additions;\r\n }\r\n\r\n}\r\n","import { BaseResponse } from '../../models/comm-http/responses/BaseResponse';\r\nimport { BillingRecurringTypes } from '../../models/ss-api/price.billing.cycle';\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { DashboardLicenseResponse } from 'app/models/ss-api/responses/dashboard.license.response';\r\nimport { YardAddonPriceResponse } from 'app/models/ss-api/responses/yard.addon.price.response';\r\nimport { YardAddonOrderRequest } from '../../models/ss-api/requests/yard.addon.order.request';\r\nimport { CreditCardResponseArray } from 'app/models/ss-api/responses/credit.card.response';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface IAddYardAddModel {\r\n title: string;\r\n subTitle: string;\r\n\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: number;\r\n\r\n License: DashboardLicenseResponse;\r\n YardPricing: YardAddonPriceResponse;\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'yard-add-dialog',\r\n styleUrls: ['./yard-add-dialog.component.scss'],\r\n templateUrl: './yard-add-dialog.component.html'\r\n})\r\nexport class YARDAddDialogComponent implements IAddYardAddModel, OnInit {\r\n\r\n IsBusy: boolean = false;\r\n\r\n confirmTitle: string = 'Add Product';\r\n confirmMessage: string = 'You are about to purchase a new product subscription. Your credit card will be billed.';\r\n\r\n successTitle: string = 'Product added';\r\n successMessage: string = 'Your purchase was successfull. You will recieve an email confirming your purchase.';\r\n\r\n errorTitle: string = 'Error';\r\n errorMessage: string = 'We were not able to process this request. Try again later or use a different credit card.';\r\n\r\n cancelledTitle: string = 'Cancelled';\r\n cancelledMessage: string = 'You cancelled this order.';\r\n\r\n\r\n AssignToOwner: boolean = true;\r\n Initials: string;\r\n title: string;\r\n subTitle: string;\r\n\r\n CreditCards: SelectItem[];\r\n SelectedCreditCard: number;\r\n\r\n License: DashboardLicenseResponse;\r\n YardPricing: YardAddonPriceResponse;\r\n\r\n SelectedBillingCycle: BillingRecurringTypes;\r\n\r\n\r\n PurchaseDisabled: boolean = false;\r\n ProductSelected: boolean = false;\r\n\r\n Initals: string = '';\r\n\r\n TodaysDate: Date = new Date();\r\n\r\n\r\n Credit: number = 0;\r\n\r\n result: any;\r\n\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.title = this.config.data.title;\r\n this.subTitle = this.config.data.subTitle;\r\n this.CreditCards = this.config.data.CreditCards;\r\n this.SelectedCreditCard = this.config.data.SelectedCreditCard;\r\n this.License = this.config.data.License;\r\n this.YardPricing = this.config.data.YardPricing;\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n this.GetCredit();\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n CreditCardChanged(item: SelectItem) {\r\n\r\n }\r\n\r\n\r\n SelectedBillingCycleToString(): string {\r\n\r\n switch (this.SelectedBillingCycle) {\r\n\r\n case BillingRecurringTypes.Monthly:\r\n return 'month';\r\n\r\n case BillingRecurringTypes.Yearly:\r\n return 'year';\r\n\r\n default:\r\n return 'unimplemented';\r\n }\r\n\r\n }\r\n\r\n private PurchaseProduct(): Promise {\r\n\r\n if (this.SelectedCreditCard == undefined)\r\n // we didn't change the credit card selection\r\n this.SelectedCreditCard = this.CreditCards[0].value;\r\n\r\n let request = new YardAddonOrderRequest();\r\n request.CCardID = this.SelectedCreditCard;\r\n request.LicenseID = this.License.LicenseID;\r\n request.YardProductID = this.YardPricing.YardProductID;\r\n\r\n\r\n return this.api.YardAdd(request)\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n\t\t\t\tthis.result = response.Result;\r\n\t\t\t\treturn response;\r\n });\r\n }\r\n\r\n\r\n ProcessOrder(): Promise {\r\n // confirm\r\n return Swal.fire({\r\n title: this.confirmTitle,\r\n text: this.confirmMessage,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes, order!',\r\n cancelButtonText: 'No, cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // try to order\r\n return this.PurchaseProduct();\r\n }\r\n });\r\n\r\n }\r\n\r\n async confirm() {\r\n await this.ProcessOrder().then(\r\n (response: any) => {\r\n\r\n // init dialog vars\r\n let cType = 'success';\r\n let cTitle = this.successTitle;\r\n let cMessage = this.successMessage;\r\n\r\n if (response.isDismissed) {\r\n cType = 'error';\r\n cTitle = this.cancelledTitle;\r\n cMessage = this.cancelledMessage;\r\n } else if (!response.value || !response.value.Result) {\r\n // not ok\r\n cType = 'error';\r\n cTitle = this.errorTitle;\r\n cMessage = this.errorMessage;\r\n }\r\n\r\n // show result\r\n Swal.fire(\r\n {\r\n title: cTitle,\r\n text: cMessage,\r\n icon: cType as SweetAlertIcon,\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 2500\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: this.cancelledTitle,\r\n text: this.cancelledMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n\r\n this.result = true;\r\n this.close();\r\n }\r\n\r\n cancel() {\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n\r\n BillingTypeToString(type: BillingRecurringTypes) {\r\n return BillingRecurringTypes[type];\r\n }\r\n\r\n BillingTypeToPerString(type: BillingRecurringTypes) {\r\n if (type == BillingRecurringTypes.Monthly)\r\n return 'per Month';\r\n else\r\n return 'per Year';\r\n }\r\n\r\n productNameWebSafe(productName: string): string {\r\n\r\n let webSafeName = 'vip3d';\r\n\r\n if (productName == 'Pool Studio')\r\n webSafeName = 'poolstudio';\r\n else if (productName == 'VizTerra')\r\n webSafeName = 'vizterra';\r\n\r\n return webSafeName;\r\n\r\n }\r\n\r\n showAddCreditCard: boolean = false;\r\n\r\n\r\n cardAdded({cards, newCardId}: {cards: CreditCardResponseArray, newCardId: number}) {\r\n this.showAddCreditCard = false;\r\n this.updateCreditCardOptions(cards);\r\n this.SelectedCreditCard = newCardId;\r\n }\r\n\r\n addCardCanceled() {\r\n this.showAddCreditCard = false;\r\n }\r\n\r\n updateCreditCardOptions(newCards: CreditCardResponseArray) {\r\n this.CreditCards = [];\r\n newCards.forEach(card => {\r\n this.CreditCards.push(\r\n {\r\n label: 'Name: ' + card.FirstName + ' ' + card.LastName +\r\n ' - Last four: ' + card.LastFour +\r\n ' - exp. Date: ' + card.ExpMonth + '/' + card.ExpYear,\r\n value: card.ID\r\n });\r\n });\r\n }\r\n\r\n GetCredit() {\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.MemberCredit().subscribe(response => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n this.Credit = response.Data;\r\n }, error => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n GetPriceDue(): number {\r\n let totalPriceDue: number = 0;\r\n totalPriceDue += this.YardPricing.Pay;\r\n totalPriceDue -= this.Credit;\r\n if (totalPriceDue < 0 || Number.isNaN(totalPriceDue))\r\n totalPriceDue = 0;\r\n\r\n return totalPriceDue;\r\n\r\n }\r\n\r\n CreditUsed(): number {\r\n if (this.Credit > this.YardPricing.Pay)\r\n return this.YardPricing.Pay;\r\n else\r\n return this.Credit;\r\n }\r\n\r\n\r\n\r\n}\r\n","import { BaseResponse } from '../../models/comm-http/responses/BaseResponse';\r\nimport { ssApiService } from '../../services/ss-api.service';\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\r\nimport { xToastr, ToastrTypes } from 'app/shared/Toastr';\r\nimport { DashboardLicenseResponse } from 'app/models/ss-api/responses/dashboard.license.response';\r\nimport { CancelYardRequest } from 'app/models/ss-api/requests/cancel.yard.request';\r\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\r\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\r\n\r\nexport interface IConfirmDialogModel {\r\n title: string;\r\n subTitle: string;\r\n message: string;\r\n License: DashboardLicenseResponse;\r\n}\r\n\r\n@Component({\r\n selector: 'yard-cancellation-request-dialog',\r\n styleUrls: ['./yard-cancellation-request-dialog.component.scss'],\r\n templateUrl: './yard-cancellation-request-dialog.component.html'\r\n})\r\nexport class YARDCancellationRequestDialogComponent implements IConfirmDialogModel, OnInit {\r\n\r\n\r\n confirmTitle: string = 'Cancel YARD';\r\n confirmMessage: string = 'You are about to cancel this YARD membership.';\r\n\r\n successTitle: string = 'Cancellation successfull';\r\n successMessage: string = 'Your YARD membership is cancelled.';\r\n\r\n errorTitle: string = 'Error';\r\n errorMessage: string = 'We were not able to cancel YARD. Please contact support.';\r\n\r\n cancelledTitle: string = 'Cancelled Request';\r\n cancelledMessage: string = 'You cancelled the request.';\r\n\r\n\r\n title: string;\r\n subTitle: string;\r\n message: string;\r\n License: DashboardLicenseResponse;\r\n CancellationReason: string;\r\n\r\n step: number = 1;\r\n\r\n result: any;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private api: ssApiService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.title = this.config.data.title;\r\n this.subTitle = this.config.data.subTitle;\r\n this.message = this.config.data.message;\r\n this.License = this.config.data.License;\r\n }\r\n\r\n close() {\r\n this.ref.close();\r\n }\r\n\r\n private CancelProduct(): Promise {\r\n\r\n // if (this.SelectedCreditCard == undefined)\r\n // we didn't change the credit card selection\r\n // this.SelectedCreditCard = this.CreditCards[0];\r\n\r\n let request = new CancelYardRequest();\r\n request.LicenseKey = this.License.Key;\r\n request.CancelReason = this.CancellationReason;\r\n\r\n\r\n return this.api.YardCancel( request )\r\n .toPromise()\r\n .then(response => {\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.result = response.Result;\r\n return response;\r\n });\r\n }\r\n\r\n ProcessCancellation(): Promise {\r\n // confirm\r\n return Swal.fire({\r\n title: this.confirmTitle,\r\n text: this.confirmMessage,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes, cancel!',\r\n cancelButtonText: 'No, keep',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // try to order\r\n return this.CancelProduct();\r\n }\r\n });\r\n\r\n }\r\n\r\n async confirm() {\r\n\r\n if ( this.CancellationReason == '' || this.CancellationReason == undefined) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'Please enter \\'Reason For Canceling\\'');\r\n return;\r\n }\r\n\r\n await this.ProcessCancellation().then(\r\n (response: any) => {\r\n\r\n // init dialog vars\r\n let cType = 'success';\r\n let cTitle = this.successTitle;\r\n let cMessage = this.successMessage;\r\n\r\n if (response.isDismissed) {\r\n cType = 'error';\r\n cTitle = this.cancelledTitle;\r\n cMessage = this.cancelledMessage;\r\n } else if (!response.value || !response.value.Result) {\r\n // not ok\r\n cType = 'error';\r\n cTitle = this.errorTitle;\r\n cMessage = this.errorMessage;\r\n }\r\n\r\n // show result\r\n Swal.fire(\r\n {\r\n title: cTitle,\r\n text: cMessage,\r\n icon: cType as SweetAlertIcon,\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1500\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: this.cancelledTitle,\r\n text: this.cancelledMessage,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n\r\n this.result = true;\r\n this.close();\r\n }\r\n\r\n\r\n cancel() {\r\n this.result = false;\r\n this.close();\r\n }\r\n\r\n nextStep() {\r\n this.step++;\r\n }\r\n\r\n onContactUs() {\r\n window.open('https://www.structurestudios.com/help/kb-tickets/new', '_blank');\r\n }\r\n}\r\n","import {Directive,HostListener} from '@angular/core'\r\n\r\n@Directive({\r\n\tselector: '[cdKeyMask]'\r\n})\r\nexport class CDKeyDirective {\r\n\r\n\t@HostListener('input', ['$event'])\r\n\tonKeyDown(event: KeyboardEvent) {\r\n\t\tconst input = event.target as HTMLInputElement;\r\n\r\n\t\t// remove spaces\r\n\t\tlet trimmed = input.value.replace(/\\s+/g, '');\r\n\r\n\t\t// trim string to 17 characters (15 characters and 2 dashes)\r\n\t\tif (trimmed.length > 17) {\r\n\t\t\ttrimmed = trimmed.substr(0, 17);\r\n\t\t}\r\n\r\n\t\t// trim '-' dashes\r\n\t\ttrimmed = trimmed.replace(/-/g,'');\r\n\r\n\t\t\r\n\t\ttrimmed = trimmed.toUpperCase();\r\n\r\n // new array to hold sections of the License Key\r\n\t\tlet numbers = [];\r\n\r\n\t\t// create set of characters from first 5 characters\r\n\t\tnumbers.push(trimmed.substr(0,5));\r\n\t\t\r\n\t\t// try for next 5\r\n\t\tif(trimmed.substr(5,5)!==\"\")\r\n\t\t\tnumbers.push(trimmed.substr(5,5));\r\n\t\t\r\n\t\t// and last set of 5\r\n\t\tif(trimmed.substr(10,10)!=\"\")\r\n\t\t\tnumbers.push(trimmed.substr(10,10));\r\n\r\n\t\t// add '-' dashes back to formated string\r\n\t\tinput.value = numbers.join('-');\r\n\r\n\r\n\t}\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport {\r\n AbstractControl, NG_VALIDATORS, NgModel, ValidationErrors, Validator, ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[fieldMatches]',\r\n providers: [{\r\n provide: NG_VALIDATORS,\r\n useExisting: FieldMatchesValidatorDirective,\r\n multi: true\r\n }]\r\n})\r\nexport class FieldMatchesValidatorDirective implements Validator, OnChanges {\r\n @Input() fieldMatches: NgModel;\r\n\r\n private validationFunction = Validators.nullValidator;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let change = changes['fieldMatches'];\r\n if (change) {\r\n const otherFieldModel = change.currentValue;\r\n this.validationFunction = fieldMatchesValidator(otherFieldModel);\r\n } else {\r\n this.validationFunction = Validators.nullValidator;\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | any {\r\n return this.validationFunction(control);\r\n }\r\n}\r\n\r\nexport function fieldMatchesValidator(otherFieldModel: NgModel): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors => {\r\n return control.value === otherFieldModel.value ? null : { 'fieldMatches': { match: false } };\r\n };\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[formControlName][appMonthYearMask]',\r\n})\r\nexport class MonthYearMaskDirective {\r\n\r\n @HostListener('input', ['$event'])\r\n onKeyDown(event: KeyboardEvent) {\r\n const input = event.target as HTMLInputElement;\r\n\r\n const trimmed = input.value.replace(/\\s+/g, '').slice(0, input.value.indexOf('/')==-1?4:5);\r\n if (trimmed.length > 3) {\r\n return (input.value = `${trimmed.slice(0, 2)}/${trimmed.slice(trimmed.indexOf('/')==-1?2:3)}`);\r\n }\r\n }\r\n \r\n}\r\n","import {Directive,HostListener} from '@angular/core'\r\n\r\n@Directive({\r\n\tselector: '[numberSlashMask]'\r\n})\r\nexport class MyNumberSlashDirective {\r\n\r\n\t@HostListener('input', ['$event'])\r\n\tonKeyDown(event: KeyboardEvent) {\r\n\t\tconst input = event.target as HTMLInputElement;\r\n\r\n\t\t// remove spaces\r\n\t\tlet trimmed = input.value.replace(/\\s+/g, '');\r\n\r\n\t\ttrimmed = trimmed.replace(/[^\\d\\/]/g, \"\");\r\n\r\n\t\tinput.value = trimmed;\r\n\r\n\t}\r\n}","import {Directive,HostListener} from '@angular/core'\r\n\r\n@Directive({\r\n\tselector: '[numberMask]'\r\n})\r\nexport class MyNumberDirective {\r\n\r\n\t@HostListener('input', ['$event'])\r\n\tonKeyDown(event: KeyboardEvent) {\r\n\t\tconst input = event.target as HTMLInputElement;\r\n\r\n\t\t// remove spaces\r\n\t\tlet trimmed = input.value.replace(/\\s+/g, '');\r\n\r\n\t\ttrimmed = trimmed.replace(/[^\\d]/g, \"\");\r\n\r\n\t\tinput.value = trimmed;\r\n\r\n\t}\r\n}","import {Directive,HostListener} from '@angular/core'\r\n\r\n@Directive({\r\n\tselector: '[phoneMask]'\r\n})\r\nexport class PhoneDirective {\r\n\r\n\t@HostListener('input', ['$event'])\r\n\tonKeyDown(event: KeyboardEvent) {\r\n\t\tconst input = event.target as HTMLInputElement;\r\n\t\t\r\n\t\t// remove spaces\r\n\t\tlet trimmed = input.value.replace(/\\s+/g, '');\r\n\r\n\t\tinput.value = this.GetInputValue( trimmed );\r\n\t\t\r\n\t}\r\n\r\n\tpublic GetInputValue( v : string ) : string {\r\n\t\t\r\n\r\n\t\t// trim '-' dashes\r\n\t\tv = v.replace(/-/g,'');\r\n\r\n\t\tv = v.replace(/[^\\d]/g, \"\");\r\n\t\t\r\n\t\t// trim string to 15 characters\r\n\t\tif( v.length > 10) {\r\n\t\t\tif (v.length > 15) {\r\n\t\t\t\tv = v.substr(0, 15);\r\n\t\t\t}\r\n\t\t\treturn ' +' + v;\r\n\t\t}\r\n\t\t\r\n\r\n // new array to hold sections of the License Key\r\n\t\tlet numbers = [];\r\n\r\n\t\t// create set of characters from first 5 characters\r\n\t\tnumbers.push(v.substr(0,3));\r\n\t\t\r\n\t\t// try for next 5\r\n\t\tif(v.substr(3,3)!==\"\")\r\n\t\t\tnumbers.push(v.substr(3,3));\r\n\t\t\r\n\t\t// and last set of 5\r\n\t\tif(v.substr(6,10)!=\"\")\r\n\t\t\tnumbers.push(v.substr(6,4));\r\n\t\t\r\n\t\tif(v.substr(10,15)!=\"\")\r\n\t\t\tnumbers.push(v.substr(10,5));\r\n\r\n\t\t// add '-' dashes back to formated string\r\n\t\tlet newValue = numbers[0];\r\n\t\t\r\n\t\t//if( newValue.length == 3 ) {\r\n\t\t\t\r\n\t\t//}\r\n\r\n\t\tif( numbers.length > 1 ) {\r\n\t\t\tnewValue = '(' + newValue + ') ';\r\n\t\t\tnewValue += numbers[1];\r\n\t\t}\r\n\t\t\t\r\n\r\n\t\tif (numbers.length > 2 )\r\n\t\t\tnewValue += '-' + numbers[2];\r\n\r\n\t\t// if (numbers.length > 3 )\r\n\t\t// \tnewValue += '-' + numbers[3];\r\n\r\n\t\treturn newValue;\r\n\t}\r\n\r\n}\r\n","import {Directive,HostListener} from '@angular/core'\r\n\r\n@Directive({\r\n\tselector: '[zipCodeMask]'\r\n})\r\nexport class ZipCodeDirective {\r\n\r\n\t@HostListener('input', ['$event'])\r\n\tonKeyDown(event: KeyboardEvent) {\r\n\t\tconst input = event.target as HTMLInputElement;\r\n\r\n\t\t// remove spaces\r\n\t\tlet trimmed = input.value.replace(/\\s+/g, '');\r\n\r\n\t\ttrimmed = trimmed.replace(/[^\\d]/g, \"\");\r\n\r\n\t\tif (trimmed.length > 5) {\r\n\t\t\ttrimmed = trimmed.substr(0, 5);\r\n\t\t}\r\n\r\n\t\tinput.value = trimmed;\r\n\r\n\t}\r\n}","\r\nexport class CountryListItem {\r\n\r\n\tlabel : string;\r\n\tvalue : string;\r\n\r\n}\r\n\r\nexport class CountryList {\r\n\r\n\r\n\tprivate static countries : CountryListItem[] = [\r\n\t\t{ label : \"United States\", value : \"US\"}, \r\n\t\t\r\n\t\t{ label : \"Afghanistan\", value : \"AF\"}, \r\n\t\t{ label : \"Aland Islands\", value : \"AX\"}, \r\n\t\t{ label : \"Albania\", value : \"AL\"}, \r\n\t\t{ label : \"Algeria\", value : \"DZ\"}, \r\n\t\t{ label : \"American Samoa\", value : \"AS\"}, \r\n\t\t{ label : \"AndorrA\", value : \"AD\"}, \r\n\t\t{ label : \"Angola\", value : \"AO\"}, \r\n\t\t{ label : \"Anguilla\", value : \"AI\"}, \r\n\t\t{ label : \"Antarctica\", value : \"AQ\"}, \r\n\t\t{ label : \"Antigua and Barbuda\", value : \"AG\"}, \r\n\t\t{ label : \"Argentina\", value : \"AR\"}, \r\n\t\t{ label : \"Armenia\", value : \"AM\"}, \r\n\t\t{ label : \"Aruba\", value : \"AW\"}, \r\n\t\t{ label : \"Australia\", value : \"AU\"}, \r\n\t\t{ label : \"Austria\", value : \"AT\"}, \r\n\t\t{ label : \"Azerbaijan\", value : \"AZ\"}, \r\n\t\t{ label : \"Bahamas\", value : \"BS\"}, \r\n\t\t{ label : \"Bahrain\", value : \"BH\"}, \r\n\t\t{ label : \"Bangladesh\", value : \"BD\"}, \r\n\t\t{ label : \"Barbados\", value : \"BB\"}, \r\n\t\t{ label : \"Belarus\", value : \"BY\"}, \r\n\t\t{ label : \"Belgium\", value : \"BE\"}, \r\n\t\t{ label : \"Belize\", value : \"BZ\"}, \r\n\t\t{ label : \"Benin\", value : \"BJ\"}, \r\n\t\t{ label : \"Bermuda\", value : \"BM\"}, \r\n\t\t{ label : \"Bhutan\", value : \"BT\"}, \r\n\t\t{ label : \"Bolivia\", value : \"BO\"}, \r\n\t\t{ label : \"Bosnia and Herzegovina\", value : \"BA\"}, \r\n\t\t{ label : \"Botswana\", value : \"BW\"}, \r\n\t\t{ label : \"Bouvet Island\", value : \"BV\"}, \r\n\t\t{ label : \"Brazil\", value : \"BR\"}, \r\n\t\t{ label : \"British Indian Ocean Territory\", value : \"IO\"}, \r\n\t\t{ label : \"Brunei Darussalam\", value : \"BN\"}, \r\n\t\t{ label : \"Bulgaria\", value : \"BG\"}, \r\n\t\t{ label : \"Burkina Faso\", value : \"BF\"}, \r\n\t\t{ label : \"Burundi\", value : \"BI\"}, \r\n\t\t{ label : \"Cambodia\", value : \"KH\"}, \r\n\t\t{ label : \"Cameroon\", value : \"CM\"}, \r\n\t\t{ label : \"Canada\", value : \"CA\"}, \r\n\t\t{ label : \"Cape Verde\", value : \"CV\"}, \r\n\t\t{ label : \"Cayman Islands\", value : \"KY\"}, \r\n\t\t{ label : \"Central African Republic\", value : \"CF\"}, \r\n\t\t{ label : \"Chad\", value : \"TD\"}, \r\n\t\t{ label : \"Chile\", value : \"CL\"}, \r\n\t\t{ label : \"China\", value : \"CN\"}, \r\n\t\t{ label : \"Christmas Island\", value : \"CX\"}, \r\n\t\t{ label : \"Cocos (Keeling) Islands\", value : \"CC\"}, \r\n\t\t{ label : \"Colombia\", value : \"CO\"}, \r\n\t\t{ label : \"Comoros\", value : \"KM\"}, \r\n\t\t{ label : \"Congo\", value : \"CG\"}, \r\n\t\t{ label : \"Congo, The Democratic Republic of the\", value : \"CD\"}, \r\n\t\t{ label : \"Cook Islands\", value : \"CK\"}, \r\n\t\t{ label : \"Costa Rica\", value : \"CR\"}, \r\n\t\t{ label : \"Cote D'Ivoire\", value : \"CI\"}, \r\n\t\t{ label : \"Croatia\", value : \"HR\"}, \r\n\t\t{ label : \"Cuba\", value : \"CU\"}, \r\n\t\t{ label : \"Cyprus\", value : \"CY\"}, \r\n\t\t{ label : \"Czech Republic\", value : \"CZ\"}, \r\n\t\t{ label : \"Denmark\", value : \"DK\"}, \r\n\t\t{ label : \"Djibouti\", value : \"DJ\"}, \r\n\t\t{ label : \"Dominica\", value : \"DM\"}, \r\n\t\t{ label : \"Dominican Republic\", value : \"DO\"}, \r\n\t\t{ label : \"Ecuador\", value : \"EC\"}, \r\n\t\t{ label : \"Egypt\", value : \"EG\"}, \r\n\t\t{ label : \"El Salvador\", value : \"SV\"}, \r\n\t\t{ label : \"Equatorial Guinea\", value : \"GQ\"}, \r\n\t\t{ label : \"Eritrea\", value : \"ER\"}, \r\n\t\t{ label : \"Estonia\", value : \"EE\"}, \r\n\t\t{ label : \"Ethiopia\", value : \"ET\"}, \r\n\t\t{ label : \"Falkland Islands (Malvinas)\", value : \"FK\"}, \r\n\t\t{ label : \"Faroe Islands\", value : \"FO\"}, \r\n\t\t{ label : \"Fiji\", value : \"FJ\"}, \r\n\t\t{ label : \"Finland\", value : \"FI\"}, \r\n\t\t{ label : \"France\", value : \"FR\"}, \r\n\t\t{ label : \"French Guiana\", value : \"GF\"}, \r\n\t\t{ label : \"French Polynesia\", value : \"PF\"}, \r\n\t\t{ label : \"French Southern Territories\", value : \"TF\"}, \r\n\t\t{ label : \"Gabon\", value : \"GA\"}, \r\n\t\t{ label : \"Gambia\", value : \"GM\"}, \r\n\t\t{ label : \"Georgia\", value : \"GE\"}, \r\n\t\t{ label : \"Germany\", value : \"DE\"}, \r\n\t\t{ label : \"Ghana\", value : \"GH\"}, \r\n\t\t{ label : \"Gibraltar\", value : \"GI\"}, \r\n\t\t{ label : \"Greece\", value : \"GR\"}, \r\n\t\t{ label : \"Greenland\", value : \"GL\"}, \r\n\t\t{ label : \"Grenada\", value : \"GD\"}, \r\n\t\t{ label : \"Guadeloupe\", value : \"GP\"}, \r\n\t\t{ label : \"Guam\", value : \"GU\"}, \r\n\t\t{ label : \"Guatemala\", value : \"GT\"}, \r\n\t\t{ label : \"Guernsey\", value : \"GG\"}, \r\n\t\t{ label : \"Guinea\", value : \"GN\"}, \r\n\t\t{ label : \"Guinea-Bissau\", value : \"GW\"}, \r\n\t\t{ label : \"Guyana\", value : \"GY\"}, \r\n\t\t{ label : \"Haiti\", value : \"HT\"}, \r\n\t\t{ label : \"Heard Island and Mcdonald Islands\", value : \"HM\"}, \r\n\t\t{ label : \"Holy See (Vatican City State)\", value : \"VA\"}, \r\n\t\t{ label : \"Honduras\", value : \"HN\"}, \r\n\t\t{ label : \"Hong Kong\", value : \"HK\"}, \r\n\t\t{ label : \"Hungary\", value : \"HU\"}, \r\n\t\t{ label : \"Iceland\", value : \"IS\"}, \r\n\t\t{ label : \"India\", value : \"IN\"}, \r\n\t\t{ label : \"Indonesia\", value : \"ID\"}, \r\n\t\t{ label : \"Iran, Islamic Republic Of\", value : \"IR\"}, \r\n\t\t{ label : \"Iraq\", value : \"IQ\"}, \r\n\t\t{ label : \"Ireland\", value : \"IE\"}, \r\n\t\t{ label : \"Isle of Man\", value : \"IM\"}, \r\n\t\t{ label : \"Israel\", value : \"IL\"}, \r\n\t\t{ label : \"Italy\", value : \"IT\"}, \r\n\t\t{ label : \"Jamaica\", value : \"JM\"}, \r\n\t\t{ label : \"Japan\", value : \"JP\"}, \r\n\t\t{ label : \"Jersey\", value : \"JE\"}, \r\n\t\t{ label : \"Jordan\", value : \"JO\"}, \r\n\t\t{ label : \"Kazakhstan\", value : \"KZ\"}, \r\n\t\t{ label : \"Kenya\", value : \"KE\"}, \r\n\t\t{ label : \"Kiribati\", value : \"KI\"}, \r\n\t\t{ label : \"Korea, Democratic People's Republic of\", value : \"KP\"}, \r\n\t\t{ label : \"Korea, Republic of\", value : \"KR\"}, \r\n\t\t{ label : \"Kuwait\", value : \"KW\"}, \r\n\t\t{ label : \"Kyrgyzstan\", value : \"KG\"}, \r\n\t\t{ label : \"Lao People's Democratic Republic\", value : \"LA\"}, \r\n\t\t{ label : \"Latvia\", value : \"LV\"}, \r\n\t\t{ label : \"Lebanon\", value : \"LB\"}, \r\n\t\t{ label : \"Lesotho\", value : \"LS\"}, \r\n\t\t{ label : \"Liberia\", value : \"LR\"}, \r\n\t\t{ label : \"Libyan Arab Jamahiriya\", value : \"LY\"}, \r\n\t\t{ label : \"Liechtenstein\", value : \"LI\"}, \r\n\t\t{ label : \"Lithuania\", value : \"LT\"}, \r\n\t\t{ label : \"Luxembourg\", value : \"LU\"}, \r\n\t\t{ label : \"Macao\", value : \"MO\"}, \r\n\t\t{ label : \"Macedonia, The Former Yugoslav Republic of\", value : \"MK\"}, \r\n\t\t{ label : \"Madagascar\", value : \"MG\"}, \r\n\t\t{ label : \"Malawi\", value : \"MW\"}, \r\n\t\t{ label : \"Malaysia\", value : \"MY\"}, \r\n\t\t{ label : \"Maldives\", value : \"MV\"}, \r\n\t\t{ label : \"Mali\", value : \"ML\"}, \r\n\t\t{ label : \"Malta\", value : \"MT\"}, \r\n\t\t{ label : \"Marshall Islands\", value : \"MH\"}, \r\n\t\t{ label : \"Martinique\", value : \"MQ\"}, \r\n\t\t{ label : \"Mauritania\", value : \"MR\"}, \r\n\t\t{ label : \"Mauritius\", value : \"MU\"}, \r\n\t\t{ label : \"Mayotte\", value : \"YT\"}, \r\n\t\t{ label : \"Mexico\", value : \"MX\"}, \r\n\t\t{ label : \"Micronesia, Federated States of\", value : \"FM\"}, \r\n\t\t{ label : \"Moldova, Republic of\", value : \"MD\"}, \r\n\t\t{ label : \"Monaco\", value : \"MC\"}, \r\n\t\t{ label : \"Mongolia\", value : \"MN\"}, \r\n\t\t{ label : \"Montenegro\", value : \"ME\"},\r\n\t\t{ label : \"Montserrat\", value : \"MS\"},\r\n\t\t{ label : \"Morocco\", value : \"MA\"}, \r\n\t\t{ label : \"Mozambique\", value : \"MZ\"}, \r\n\t\t{ label : \"Myanmar\", value : \"MM\"}, \r\n\t\t{ label : \"Namibia\", value : \"NA\"}, \r\n\t\t{ label : \"Nauru\", value : \"NR\"}, \r\n\t\t{ label : \"Nepal\", value : \"NP\"}, \r\n\t\t{ label : \"Netherlands\", value : \"NL\"}, \r\n\t\t{ label : \"Netherlands Antilles\", value : \"AN\"}, \r\n\t\t{ label : \"New Caledonia\", value : \"NC\"}, \r\n\t\t{ label : \"New Zealand\", value : \"NZ\"}, \r\n\t\t{ label : \"Nicaragua\", value : \"NI\"}, \r\n\t\t{ label : \"Niger\", value : \"NE\"}, \r\n\t\t{ label : \"Nigeria\", value : \"NG\"}, \r\n\t\t{ label : \"Niue\", value : \"NU\"}, \r\n\t\t{ label : \"Norfolk Island\", value : \"NF\"}, \r\n\t\t{ label : \"Northern Mariana Islands\", value : \"MP\"}, \r\n\t\t{ label : \"Norway\", value : \"NO\"}, \r\n\t\t{ label : \"Oman\", value : \"OM\"}, \r\n\t\t{ label : \"Pakistan\", value : \"PK\"}, \r\n\t\t{ label : \"Palau\", value : \"PW\"}, \r\n\t\t{ label : \"Palestinian Territory, Occupied\", value : \"PS\"}, \r\n\t\t{ label : \"Panama\", value : \"PA\"}, \r\n\t\t{ label : \"Papua New Guinea\", value : \"PG\"}, \r\n\t\t{ label : \"Paraguay\", value : \"PY\"}, \r\n\t\t{ label : \"Peru\", value : \"PE\"}, \r\n\t\t{ label : \"Philippines\", value : \"PH\"}, \r\n\t\t{ label : \"Pitcairn\", value : \"PN\"}, \r\n\t\t{ label : \"Poland\", value : \"PL\"}, \r\n\t\t{ label : \"Portugal\", value : \"PT\"}, \r\n\t\t{ label : \"Puerto Rico\", value : \"PR\"}, \r\n\t\t{ label : \"Qatar\", value : \"QA\"}, \r\n\t\t{ label : \"Reunion\", value : \"RE\"}, \r\n\t\t{ label : \"Romania\", value : \"RO\"}, \r\n\t\t{ label : \"Russian Federation\", value : \"RU\"}, \r\n\t\t{ label : \"RWANDA\", value : \"RW\"}, \r\n\t\t{ label : \"Saint Helena\", value : \"SH\"}, \r\n\t\t{ label : \"Saint Kitts and Nevis\", value : \"KN\"}, \r\n\t\t{ label : \"Saint Lucia\", value : \"LC\"}, \r\n\t\t{ label : \"Saint Pierre and Miquelon\", value : \"PM\"}, \r\n\t\t{ label : \"Saint Vincent and the Grenadines\", value : \"VC\"}, \r\n\t\t{ label : \"Samoa\", value : \"WS\"}, \r\n\t\t{ label : \"San Marino\", value : \"SM\"}, \r\n\t\t{ label : \"Sao Tome and Principe\", value : \"ST\"}, \r\n\t\t{ label : \"Saudi Arabia\", value : \"SA\"}, \r\n\t\t{ label : \"Senegal\", value : \"SN\"}, \r\n\t\t{ label : \"Serbia\", value : \"RS\"}, \r\n\t\t{ label : \"Seychelles\", value : \"SC\"}, \r\n\t\t{ label : \"Sierra Leone\", value : \"SL\"}, \r\n\t\t{ label : \"Singapore\", value : \"SG\"}, \r\n\t\t{ label : \"Slovakia\", value : \"SK\"}, \r\n\t\t{ label : \"Slovenia\", value : \"SI\"}, \r\n\t\t{ label : \"Solomon Islands\", value : \"SB\"}, \r\n\t\t{ label : \"Somalia\", value : \"SO\"}, \r\n\t\t{ label : \"South Africa\", value : \"ZA\"}, \r\n\t\t{ label : \"South Georgia and the South Sandwich Islands\", value : \"GS\"}, \r\n\t\t{ label : \"Spain\", value : \"ES\"}, \r\n\t\t{ label : \"Sri Lanka\", value : \"LK\"}, \r\n\t\t{ label : \"Sudan\", value : \"SD\"}, \r\n\t\t{ label : \"Suriname\", value : \"SR\"}, \r\n\t\t{ label : \"Svalbard and Jan Mayen\", value : \"SJ\"}, \r\n\t\t{ label : \"Swaziland\", value : \"SZ\"}, \r\n\t\t{ label : \"Sweden\", value : \"SE\"}, \r\n\t\t{ label : \"Switzerland\", value : \"CH\"}, \r\n\t\t{ label : \"Syrian Arab Republic\", value : \"SY\"}, \r\n\t\t{ label : \"Taiwan, Province of China\", value : \"TW\"}, \r\n\t\t{ label : \"Tajikistan\", value : \"TJ\"}, \r\n\t\t{ label : \"Tanzania, United Republic of\", value : \"TZ\"}, \r\n\t\t{ label : \"Thailand\", value : \"TH\"}, \r\n\t\t{ label : \"Timor-Leste\", value : \"TL\"}, \r\n\t\t{ label : \"Togo\", value : \"TG\"}, \r\n\t\t{ label : \"Tokelau\", value : \"TK\"}, \r\n\t\t{ label : \"Tonga\", value : \"TO\"}, \r\n\t\t{ label : \"Trinidad and Tobago\", value : \"TT\"}, \r\n\t\t{ label : \"Tunisia\", value : \"TN\"}, \r\n\t\t{ label : \"Turkey\", value : \"TR\"}, \r\n\t\t{ label : \"Turkmenistan\", value : \"TM\"}, \r\n\t\t{ label : \"Turks and Caicos Islands\", value : \"TC\"}, \r\n\t\t{ label : \"Tuvalu\", value : \"TV\"}, \r\n\t\t{ label : \"Uganda\", value : \"UG\"}, \r\n\t\t{ label : \"Ukraine\", value : \"UA\"}, \r\n\t\t{ label : \"United Arab Emirates\", value : \"AE\"}, \r\n\t\t{ label : \"United Kingdom\", value : \"GB\"}, \r\n\t\t{ label : \"United States Minor Outlying Islands\", value : \"UM\"},\r\n\t\t{ label : \"Uruguay\", value : \"UY\"}, \r\n\t\t{ label : \"Uzbekistan\", value : \"UZ\"}, \r\n\t\t{ label : \"Vanuatu\", value : \"VU\"}, \r\n\t\t{ label : \"Venezuela\", value : \"VE\"}, \r\n\t\t{ label : \"Viet Nam\", value : \"VN\"}, \r\n\t\t{ label : \"Virgin Islands, British\", value : \"VG\"}, \r\n\t\t{ label : \"Virgin Islands, U.S.\", value : \"VI\"}, \r\n\t\t{ label : \"Wallis and Futuna\", value : \"WF\"}, \r\n\t\t{ label : \"Western Sahara\", value : \"EH\"}, \r\n\t\t{ label : \"Yemen\", value : \"YE\"}, \r\n\t\t{ label : \"Zambia\", value : \"ZM\"}, \r\n\t\t{ label : \"Zimbabwe\", value : \"ZW\"}\r\n\r\n\t];\r\n\r\n\r\n\tpublic static Countries() : CountryListItem[] {\r\n\t\treturn this.countries;\r\n\t} \r\n\r\n\r\n\tpublic static ValidCountry( country : string ) : string {\r\n\r\n\t\t\r\n\r\n\t\tlet theList = CountryList.Countries();\r\n\r\n\t\t//console.log(\"The List:\", theList);\r\n\r\n\t\tfor( let c = 0; c < theList.length; c++ ) {\r\n\t\t\tif( theList[c].value.toLowerCase() == country.toLowerCase() || theList[c].label.toLowerCase() == country.toLowerCase() ) {\r\n\t\t\t\t\r\n\t\t\t\treturn theList[c].value;\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconsole.log(\"No Country Match for '\" + country + \"'\");\r\n\t\treturn \"\";\r\n\r\n\t}\r\n\r\n\r\n\r\n}","import { CreditCardTypes } from \"app/models/ss-api/responses/credit.card.response\";\r\nimport { FormControl } from '@angular/forms';\r\n\r\nexport class CardTypeInfo {\r\n\r\n public RegEx : RegExp;\r\n public Length : number;\r\n public Type : CreditCardTypes;\r\n \r\n constructor( regEx : RegExp, length : number, type : CreditCardTypes)\r\n {\r\n this.RegEx = regEx;\r\n this.Length = length;\r\n this.Type = type;\r\n }\r\n\r\n\r\n \r\n\r\n}\r\n\r\nexport class CreditCardHelper {\r\n\r\n\r\n public static GetCardType( number : string ) : string {\r\n // visa\r\n var re = new RegExp(\"^4\");\r\n if (number.match(re) != null)\r\n return \"Visa\";\r\n\r\n // Mastercard \r\n // Updated for Mastercard 2017 BINs expansion\r\n if (/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/.test(number)) \r\n return \"Mastercard\";\r\n\r\n // AMEX\r\n re = new RegExp(\"^3[47]\");\r\n if (number.match(re) != null)\r\n return \"AMEX\";\r\n\r\n // Discover\r\n re = new RegExp(\"^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)\");\r\n if (number.match(re) != null)\r\n return \"Discover\";\r\n\r\n // Diners\r\n re = new RegExp(\"^36\");\r\n if (number.match(re) != null)\r\n return \"Diners\";\r\n\r\n // Diners - Carte Blanche\r\n re = new RegExp(\"^30[0-5]\");\r\n if (number.match(re) != null)\r\n return \"Diners - Carte Blanche\";\r\n\r\n // JCB\r\n re = new RegExp(\"^35(2[89]|[3-8][0-9])\");\r\n if (number.match(re) != null)\r\n return \"JCB\";\r\n\r\n // Visa Electron\r\n re = new RegExp(\"^(4026|417500|4508|4844|491(3|7))\");\r\n if (number.match(re) != null)\r\n return \"Visa Electron\";\r\n\r\n return \"\";\r\n }\r\n\r\n \r\n\r\n\r\n private static _cardTypeInfo : CardTypeInfo[] = [\r\n \r\n // FROM NICK - These are from the backend code, don't seem to work in Angular\r\n new CardTypeInfo( new RegExp(\"^(51|52|53|54|55)\"), 16, CreditCardTypes.MasterCard),\r\n new CardTypeInfo( new RegExp(\"^(4)\"), 16, CreditCardTypes.VISA),\r\n new CardTypeInfo( new RegExp(\"^(4)\"), 13, CreditCardTypes.VISA),\r\n new CardTypeInfo( new RegExp(\"^(34|37)\"), 15, CreditCardTypes.AmericanExpress),\r\n new CardTypeInfo( new RegExp(\"^(6011)\"), 16, CreditCardTypes.Discover),\r\n new CardTypeInfo( new RegExp(\"^(300|301|302|303|304|305|36|38)\"), 14, CreditCardTypes.DinersClub),\r\n new CardTypeInfo( new RegExp(\"^(3)\"), 16, CreditCardTypes.JCB),\r\n new CardTypeInfo( new RegExp(\"^(2131|1800)\"), 15, CreditCardTypes.JCB),\r\n new CardTypeInfo( new RegExp(\"^(2014|2149)\"), 15, CreditCardTypes.EnRoute),\r\n\r\n // new CardTypeInfo( new RegExp(\"^(51|52|53|54|55)\"), 16, CreditCardTypes.MasterCard),\r\n // new CardTypeInfo( new RegExp(\"^4\"), 16, CreditCardTypes.VISA),\r\n // new CardTypeInfo( new RegExp(\"^4\"), 13, CreditCardTypes.VISA),\r\n // new CardTypeInfo( new RegExp(\"^(34|37)\"), 15, CreditCardTypes.AmericanExpress),\r\n // new CardTypeInfo( new RegExp(\"^(6011)\"), 16, CreditCardTypes.Discover),\r\n // new CardTypeInfo( new RegExp(\"^(300|301|302|303|304|305|36|38)\"), 14, CreditCardTypes.DinersClub),\r\n // new CardTypeInfo( new RegExp(\"^(3)\"), 16, CreditCardTypes.JCB),\r\n // new CardTypeInfo( new RegExp(\"^(2131|1800)\"), 15, CreditCardTypes.JCB),\r\n // new CardTypeInfo( new RegExp(\"^(2014|2149)\"), 15, CreditCardTypes.EnRoute),\r\n \r\n ];\r\n\r\n\r\n\r\n public static GetCardTypes( cardNumber : string ) : CreditCardTypes {\r\n //Replace any spaces, periods, etc.\r\n cardNumber = cardNumber.replace(\"[^0-9]\", \"\");\r\n\r\n for ( var i = 0; i < this._cardTypeInfo.length; i++ ) {\r\n \r\n let item = this._cardTypeInfo[i];\r\n \r\n if( cardNumber.length == item.Length && cardNumber.match( item.RegEx ) != null ) {\r\n return item.Type;\r\n }\r\n \r\n }\r\n\r\n return CreditCardTypes.Unknown;\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\nexport class StateListItem {\r\n\r\n\tlabel : string;\r\n\tvalue : string;\r\n\r\n}\r\n\r\nexport class StateList {\r\n\r\n\r\n\tprivate static states : StateListItem[] = [\r\n\t\t{ label : \"\", value : \"\"}, \r\n\t\t\r\n\t\t{ label : \"Alabama\", value : \"AL\"}, \r\n\t\t{ label : \"Alaska\", value : \"AK\"}, \r\n\t\t{ label : \"American Samoa\", value : \"AS\"}, \r\n\t\t{ label : \"Arizona\", value : \"AZ\"}, \r\n\t\t{ label : \"Arkansas\", value : \"AR\"}, \r\n\t\t{ label : \"California\", value : \"CA\"}, \r\n\t\t{ label : \"Colorado\", value : \"CO\"}, \r\n\t\t{ label : \"Connecticut\", value : \"CT\"}, \r\n\t\t{ label : \"Delaware\", value : \"DE\"}, \r\n\t\t{ label : \"District Of Columbia\", value : \"DC\"}, \r\n\t\t{ label : \"Federated States Of Micronesia\", value : \"FM\"}, \r\n\t\t{ label : \"Florida\", value : \"FL\"}, \r\n\t\t{ label : \"Georgia\", value : \"GA\"}, \r\n\t\t{ label : \"Guam\", value : \"GU\"}, \r\n\t\t{ label : \"Hawaii\", value : \"HI\"}, \r\n\t\t{ label : \"Idaho\", value : \"ID\"}, \r\n\t\t{ label : \"Illinois\", value : \"IL\"}, \r\n\t\t{ label : \"Indiana\", value : \"IN\"}, \r\n\t\t{ label : \"Iowa\", value : \"IA\"}, \r\n\t\t{ label : \"Kansas\", value : \"KS\"}, \r\n\t\t{ label : \"Kentucky\", value : \"KY\"}, \r\n\t\t{ label : \"Louisiana\", value : \"LA\"}, \r\n\t\t{ label : \"Maine\", value : \"ME\"}, \r\n\t\t{ label : \"Marshall Islands\", value : \"MH\"}, \r\n\t\t{ label : \"Maryland\", value : \"MD\"}, \r\n\t\t{ label : \"Massachusetts\", value : \"MA\"}, \r\n\t\t{ label : \"Michigan\", value : \"MI\"}, \r\n\t\t{ label : \"Minnesota\", value : \"MN\"}, \r\n\t\t{ label : \"Mississippi\", value : \"MS\"}, \r\n\t\t{ label : \"Missouri\", value : \"MO\"}, \r\n\t\t{ label : \"Montana\", value : \"MT\"}, \r\n\t\t{ label : \"Nebraska\", value : \"NE\"}, \r\n\t\t{ label : \"Nevada\", value : \"NV\"}, \r\n\t\t{ label : \"New Hampshire\", value : \"NH\"}, \r\n\t\t{ label : \"New Jersey\", value : \"NJ\"}, \r\n\t\t{ label : \"New Mexico\", value : \"NM\"}, \r\n\t\t{ label : \"New York\", value : \"NY\"}, \r\n\t\t{ label : \"North Carolina\", value : \"NC\"}, \r\n\t\t{ label : \"North Dakota\", value : \"ND\"}, \r\n\t\t{ label : \"Northern Mariana Islands\", value : \"MP\"}, \r\n\t\t{ label : \"Ohio\", value : \"OH\"}, \r\n\t\t{ label : \"Oklahoma\", value : \"OK\"}, \r\n\t\t{ label : \"Oregon\", value : \"OR\"}, \r\n\t\t{ label : \"Palau\", value : \"PW\"}, \r\n\t\t{ label : \"Pennsylvania\", value : \"PA\"}, \r\n\t\t{ label : \"Puerto Rico\", value : \"PR\"}, \r\n\t\t{ label : \"Rhode Island\", value : \"RI\"}, \r\n\t\t{ label : \"South Carolina\", value : \"SC\"}, \r\n\t\t{ label : \"South Dakota\", value : \"SD\"}, \r\n\t\t{ label : \"Tennessee\", value : \"TN\"}, \r\n\t\t{ label : \"Texas\", value : \"TX\"}, \r\n\t\t{ label : \"Utah\", value : \"UT\"}, \r\n\t\t{ label : \"Vermont\", value : \"VT\"}, \r\n\t\t{ label : \"Virgin Islands\", value : \"VI\"}, \r\n\t\t{ label : \"Virginia\", value : \"VA\"}, \r\n\t\t{ label : \"Washington\", value : \"WA\"}, \r\n\t\t{ label : \"West Virginia\", value : \"WV\"}, \r\n\t\t{ label : \"Wisconsin\", value : \"WI\"}, \r\n\t\t{ label : \"Wyoming\", value : \"WY\"}\r\n\t];\r\n\r\n\r\n\tpublic static States() : StateListItem[] {\r\n\t\treturn this.states;\r\n\t} \r\n\r\n\r\n\tpublic static ValidCountry( country : string ) : string {\r\n\r\n\t\t\r\n\r\n\t\tlet theList = StateList.States();\r\n\r\n\t\t//console.log(\"The List:\", theList);\r\n\r\n\t\tfor( let c = 0; c < theList.length; c++ ) {\r\n\t\t\tif( theList[c].value.toLowerCase() == country.toLowerCase() || theList[c].label.toLowerCase() == country.toLowerCase() ) {\r\n\t\t\t\t\r\n\t\t\t\treturn theList[c].value;\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconsole.log(\"No State Match for '\" + country + \"'\");\r\n\t\treturn \"\";\r\n\r\n\t}\r\n\r\n\r\n\r\n}\r\n\r\nexport const DualStateZipcodeList = {\r\n\t'02861': ['MA', 'RI'],\r\n\t'42223': ['KY', 'TN'],\r\n\t'59221': ['MT', 'ND'],\r\n\t'63673': ['IL', 'MO'],\r\n\t'71749': ['AR', 'LA'],\r\n\t'73949': ['OK', 'TX'],\r\n\t'81137': ['CO', 'NM'],\r\n\t'84536': ['AZ', 'UT'],\r\n\t'86044': ['AZ', 'UT'],\r\n\t'86515': ['AZ', 'NM'],\r\n\t'88063': ['NM', 'TX'],\r\n\t'89439': ['CA', 'NV'],\r\n\t'97635': ['CA', 'OR'],\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SharedAppModule } from '../app.module.shared';\r\nimport { LoginAsMemberRoutingModule } from './login.as.member.routing.module';\r\n\r\nimport { LoginAsMemberComponent } from './login.as.member/login.as.member.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginAsMemberComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedAppModule,\r\n LoginAsMemberRoutingModule,\r\n FormsModule,\r\n ]\r\n})\r\nexport class LoginAsMemberModule { }\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { LoginAsMemberComponent } from './login.as.member/login.as.member.component';\r\n\r\nimport { BlankView } from '../views/blank/blank.view';\r\n\r\nconst LoginAsMemberRoutes: Routes = [\r\n // login view\r\n\r\n {\r\n path: 'login-as-member', component: BlankView,\r\n // canActivate: [AuthGuardService],\r\n children: [\r\n { path: ':loginToken', component: LoginAsMemberComponent },\r\n { path: ':loginToken/:adminID', component: LoginAsMemberComponent },\r\n { path: '**', component: LoginAsMemberComponent }\r\n ]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(LoginAsMemberRoutes)],\r\n exports: [RouterModule]\r\n})\r\nexport class LoginAsMemberRoutingModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { GlobalServices } from '../../services/global.service';\r\nimport { ssApiService } from '../../services/ss-api.service';\r\n\r\n@Component({\r\n selector: 'login-as-member',\r\n templateUrl: './login.as.member.component.html',\r\n styleUrls: ['./login.as.member.component.scss']\r\n})\r\nexport class LoginAsMemberComponent implements OnInit, OnDestroy {\r\n\r\n routeParams: object;\r\n paramsSubscribe: any;\r\n\r\n constructor(private route: ActivatedRoute, private router: Router, private gb: GlobalServices, private api: ssApiService) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.paramsSubscribe = this.route.params.subscribe(params => {\r\n\r\n\r\n // get the token from url and re-convert from friendlyurl\r\n let token: string = params['loginToken'].toString();\r\n\r\n console.log(\"token\", token);\r\n\r\n token = GlobalServices.ConverFromUrlFriendly(token);\r\n console.log(\"token 1\", token);\r\n\r\n // set the token tot he globals so that our server request has a bearer header\r\n this.gb.SetToken(token);\r\n\r\n\r\n let newMemberID: number = Number(params['adminID']);\r\n this.gb.AdminID = newMemberID;\r\n\r\n // get session info\r\n let subscription = this.api.GetSessionInfo().subscribe(response => {\r\n subscription.unsubscribe();\r\n\r\n // check on error\r\n if (!response.Result) {\r\n this.router.navigate(['/authentication']);\r\n return;\r\n }\r\n\r\n // set the globals and skip token\r\n this.gb.SetGlobalsFromLoginResponse(response.Data, false);\r\n\r\n // redirect to global redirect after successfull login\r\n if (response.Data.Redirect != null)\r\n this.router.navigate([response.Data.Redirect]);\r\n else\r\n this.router.navigate(['Dashboard']);\r\n });\r\n\r\n\r\n }, error => {\r\n this.router.navigate(['/authentication']);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.paramsSubscribe.unsubscribe();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SharedAppModule } from '../app.module.shared';\r\nimport { LoginFromSoftwareRoutingModule } from './login.from.software.routing.module';\r\nimport { LoginFromSoftwareComponent } from './login.from.software/login.from.software.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginFromSoftwareComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedAppModule,\r\n LoginFromSoftwareRoutingModule,\r\n FormsModule,\r\n ]\r\n})\r\nexport class LoginFromSoftwareModule { }\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { LoginFromSoftwareComponent } from './login.from.software/login.from.software.component';\r\n\r\nimport { BlankView } from '../views/blank/blank.view';\r\n\r\nconst LoginFromSoftwareRoutes: Routes = [\r\n // login view\r\n\r\n {\r\n path: 'login-from-software', component: BlankView,\r\n // canActivate: [AuthGuardService],\r\n children: [\r\n { path: ':loginToken', component: LoginFromSoftwareComponent },\r\n { path: '**', component: LoginFromSoftwareComponent }\r\n ]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(LoginFromSoftwareRoutes)],\r\n exports: [RouterModule]\r\n})\r\nexport class LoginFromSoftwareRoutingModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { GlobalServices } from '../../services/global.service';\r\nimport { ssApiService } from '../../services/ss-api.service';\r\n\r\n@Component({\r\n selector: 'login-from-software',\r\n templateUrl: './login.from.software.component.html',\r\n styleUrls: ['./login.from.software.component.scss']\r\n})\r\nexport class LoginFromSoftwareComponent implements OnInit, OnDestroy {\r\n\r\n routeParams: object;\r\n paramsSubscribe: any;\r\n\r\n constructor(private route: ActivatedRoute, private router: Router, private gb: GlobalServices, private api: ssApiService) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.paramsSubscribe = this.route.params.subscribe(params => {\r\n\r\n\r\n // get the token from url and re-convert from friendlyurl\r\n let token: string = params['loginToken'].toString();\r\n token = GlobalServices.ConverFromUrlFriendly(token);\r\n\r\n // set the token tot he globals so that our server request has a bearer header\r\n this.gb.SetToken(token);\r\n\r\n // get session info\r\n let subscription = this.api.GetSessionInfo().subscribe(response => {\r\n subscription.unsubscribe();\r\n\r\n // check on error\r\n if (!response.Result) {\r\n this.router.navigate(['/authentication']);\r\n return;\r\n }\r\n\r\n // set the globals and skip token\r\n this.gb.SetGlobalsFromLoginResponse(response.Data, true);\r\n\r\n // redirect to global redirect after successfull login\r\n \r\n if (response.Data.Redirect != null)\r\n this.router.navigate([response.Data.Redirect]);\r\n else\r\n this.router.navigate(['/account/add-credit-card']);\r\n });\r\n\r\n\r\n }, error => {\r\n this.router.navigate(['/authentication']);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.paramsSubscribe.unsubscribe();\r\n }\r\n\r\n}\r\n","export interface IBreadCrumb {\r\n\r\n Index: number;\r\n Title: string;\r\n Link: string;\r\n Tooltip: string;\r\n\r\n}\r\n\r\nexport class BreadCrumb implements IBreadCrumb {\r\n\r\n Index: number;\r\n Title: string;\r\n Link: string;\r\n Tooltip: string;\r\n\r\n}\r\n","import { TrainingEventSubscriptionCertificateResponseArray } from '../ss-api/responses/training.event.subscription.certificate.response';\r\nimport { EmailLogResponseArray } from '../ss-api/responses/email.log.response';\r\n\r\nexport enum AttendanceStatusTypes {\r\n Registered = 1,\r\n AttendedClass = 2,\r\n Cancelled = 3,\r\n Rescheduled = 4,\r\n NoShow = 5\r\n}\r\n\r\nexport enum SubscriptionMethodTypes {\r\n Admin = 1,\r\n Member = 2,\r\n Phone = 3,\r\n Email = 4,\r\n Other = 99\r\n}\r\n\r\nexport class TrainingEventSubscription {\r\n ID: number;\r\n Created: Date;\r\n Modified: Date;\r\n SubscriptionMethodType: SubscriptionMethodTypes;\r\n AttendancestatusType: AttendanceStatusTypes;\r\n SubscriptionNotes: string;\r\n CertificateToken: string;\r\n CertificatesAwarded: TrainingEventSubscriptionCertificateResponseArray;\r\n CreditsEarned: number;\r\n LevelScoreEarned: number;\r\n AlternatePhone: string;\r\n AlternateEmail: string;\r\n License_ID: number;\r\n LicenseKey: string;\r\n SignupDate: Date;\r\n Member_ID: number;\r\n MemberName: string;\r\n MemberPhone: string;\r\n MemberEmail: string;\r\n Product_ID: number;\r\n ProductName: string;\r\n SoftwareVersion: string;\r\n\r\n EmailLogs: EmailLogResponseArray;\r\n\r\n // public static FixDates(item: TrainingEventSubscription) {\r\n // item.Created = new Date(item.Created);\r\n // item.Modified = new Date(item.Modified);\r\n // item.SignupDate = new Date(item.SignupDate);\r\n // }\r\n\r\n}\r\n\r\nexport class TrainingEventSubscriptionArray extends Array {\r\n\r\n constructor(...items: TrainingEventSubscription[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, TrainingEventSubscriptionArray.prototype);\r\n }\r\n\r\n // public static FixDates(item: TrainingEventSubscriptionArray) {\r\n // item.forEach(x => TrainingEventSubscription.FixDates(x));\r\n // }\r\n\r\n\r\n}\r\n","import { TrainingClass } from './training.class';\r\n\r\nexport class TrainingEvent {\r\n ID: number;\r\n Created: Date;\r\n Modified: Date;\r\n EventDateTime: Date;\r\n TrainingClassID: number;\r\n TrainingClass: TrainingClass;\r\n\r\n // public static FixDates(item: TrainingEvent) {\r\n // item.Created = new Date(item.Created);\r\n // item.Modified = new Date(item.Modified);\r\n // item.EventDateTime = new Date(item.EventDateTime);\r\n // }\r\n\r\n}\r\n\r\nexport class TrainingEventArray extends Array {\r\n\r\n constructor(...items: TrainingEvent[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, TrainingEventArray.prototype);\r\n }\r\n\r\n public static FixDates(item: TrainingEventArray) {\r\n //item.forEach(x => TrainingEvent.FixDates(x));\r\n }\r\n\r\n\r\n}\r\n","export class HttpError {\r\n\r\n constructor(public OriginalError?: any, public FriendlyTitle?: string, public FriendlyMessage?: string) {\r\n\r\n }\r\n\r\n}\r\n","export interface IErrorEventArgs {\r\n ErrorCode: string;\r\n ErrorMessage: string;\r\n FriendlyErrorTitle: string;\r\n FriendlyErrorMessage: string;\r\n}\r\n\r\nexport class ErrorEventArgs implements IErrorEventArgs {\r\n public ErrorCode: string;\r\n public ErrorMessage: string;\r\n public FriendlyErrorTitle: string;\r\n public FriendlyErrorMessage: string;\r\n\r\n constructor(errorCode: string = '', errorMessage: string = '', friendlyErrorMessage: string = '', friendlyErrorTitle: string = 'Error') {\r\n this.Set(errorCode, errorMessage, friendlyErrorTitle, friendlyErrorMessage);\r\n }\r\n\r\n public Set(errorCode: string, errorMessage: string, friendlyErrorTitle: string, friendlyErrorMessage: string) {\r\n this.ErrorCode = errorCode;\r\n this.ErrorMessage = errorMessage;\r\n this.FriendlyErrorTitle = friendlyErrorTitle;\r\n this.FriendlyErrorMessage = friendlyErrorMessage;\r\n }\r\n\r\n}\r\n","export enum BillingRecurringTypes {\r\n\r\n Monthly = 1,\r\n Yearly = 2\r\n\r\n}\r\n\r\nexport interface IPriceBillingCycle {\r\n\r\n Price: number;\r\n Setup: number;\r\n BillingCycle: BillingRecurringTypes;\r\n\r\n TaxEnabled: boolean;\r\n TaxRate: number;\r\n State: string;\r\n TaxRateDisplay: string;\r\n TotalWithTax: string;\r\n TaxAmount: number;\r\n\r\n}\r\n\r\nexport class PriceBillingCycle implements IPriceBillingCycle {\r\n\r\n Price: number;\r\n Setup: number;\r\n BillingCycle: BillingRecurringTypes;\r\n\r\n TaxEnabled: boolean;\r\n TaxRate: number;\r\n State: string;\r\n TaxRateDisplay: string;\r\n TotalWithTax: string;\r\n TaxAmount: number;\r\n\r\n}\r\n\r\nexport class PriceBillingCycleArray extends Array {\r\n\r\n constructor(...items: PriceBillingCycle[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, PriceBillingCycleArray.prototype);\r\n }\r\n}","import { CreditCardTypes } from '../responses/credit.card.response';\r\n\r\nexport interface IAddCreditCardRequest {\r\n\r\n CVV: number;\r\n CreditCardNumber: string;\r\n SetAsDefault: boolean;\r\n\r\n ID: number;\r\n LastFour: string;\r\n ExpMonth: number;\r\n ExpYear: number;\r\n CardType: CreditCardTypes;\r\n DateTimeLastUpdate: Date;\r\n DateTimeCreated: Date;\r\n DateTimeLastUsed: Date;\r\n Status: string;\r\n FirstName: string;\r\n LastName: string;\r\n Address01: string;\r\n City: string;\r\n State: string;\r\n ZipCode: string;\r\n Country: string;\r\n\r\n UpdateMemberAddress: boolean;\r\n\r\n IsValid(): string[];\r\n \r\n}\r\n\r\nexport class AddCreditCardRequest implements IAddCreditCardRequest {\r\n\r\n ID: number;\r\n LastFour: string;\r\n ExpMonth: number;\r\n ExpYear: number;\r\n CardType: CreditCardTypes;\r\n DateTimeLastUpdate: Date;\r\n DateTimeCreated: Date;\r\n DateTimeLastUsed: Date;\r\n Status: string;\r\n FirstName: string;\r\n LastName: string;\r\n Address01: string;\r\n City: string;\r\n State: string;\r\n ZipCode: string;\r\n Country: string;\r\n CreditCardNumber: string;\r\n CVV: number;\r\n SetAsDefault: boolean;\r\n\r\n UpdateMemberAddress: boolean;\r\n\r\n IsValid(): string[] {\r\n\r\n let validationErrors = new Array();\r\n\r\n\r\n if (this.Address01 == undefined || this.Address01 == \"\") {\r\n validationErrors.push(\"Address 1\");\r\n }\r\n\r\n if (this.City == undefined || this.City == \"\") {\r\n validationErrors.push(\"City\");\r\n }\r\n\r\n if (this.Country == undefined || this.Country == \"\") {\r\n validationErrors.push(\"Country\");\r\n }\r\n\r\n if (this.CVV == undefined || this.CVV < 99) {\r\n validationErrors.push(\"CVV\");\r\n }\r\n\r\n if (this.ExpMonth == undefined) {\r\n validationErrors.push(\"ExpMonth\");\r\n }\r\n\r\n if (this.ExpYear == undefined) {\r\n validationErrors.push(\"ExpYear\");\r\n }\r\n\r\n if (this.FirstName == undefined || this.FirstName == \"\") {\r\n validationErrors.push(\"FirstName\");\r\n }\r\n\r\n if (this.LastName == undefined || this.LastName == \"\") {\r\n validationErrors.push(\"LastName\");\r\n }\r\n\r\n if (this.ZipCode == undefined || this.ZipCode == \"\") {\r\n validationErrors.push(\"PostalCode\");\r\n }\r\n\r\n if (this.State == undefined || this.State == \"\") {\r\n validationErrors.push(\"State\");\r\n }\r\n\r\n if (this.CreditCardNumber == undefined || this.CreditCardNumber == \"\") {\r\n validationErrors.push(\"Number\");\r\n }\r\n\r\n return validationErrors;\r\n\r\n }\r\n\r\n}","import { BillingRecurringTypes } from \"app/models/ss-api/price.billing.cycle\";\r\n\r\nexport interface IAddProductRequest {\r\n\r\n AdminID: number;\r\n ProductID: number;\r\n CreditCardID: number;\r\n BillingCycle: BillingRecurringTypes;\r\n AssignToOwner: boolean;\r\n Initials: string;\r\n DesignerEmail: string;\r\n DesignerName: string;\r\n YardAddon: boolean;\r\n}\r\n\r\nexport class AddProductRequest implements IAddProductRequest {\r\n\r\n AdminID: number;\r\n ProductID: number;\r\n CreditCardID: number;\r\n BillingCycle: BillingRecurringTypes;\r\n AssignToOwner: boolean;\r\n Initials: string;\r\n DesignerEmail: string;\r\n DesignerName: string;\r\n YardAddon: boolean;\r\n}\r\n","export interface ICancelProductRequest {\r\n\r\n LicenseKey: string;\r\n CancellationReason: string;\r\n CancellationComments: string;\r\n AdminID: number;\r\n\r\n}\r\n\r\nexport class CancelProductRequest implements ICancelProductRequest {\r\n\r\n LicenseKey: string;\r\n CancellationReason: string;\r\n CancellationComments: string;\r\n AdminID: number;\r\n\r\n}\r\n","export class CancelYardRequest {\r\n\r\n LicenseKey: string;\r\n CancelReason: string;\r\n\r\n}","export class CdKeyReassignRequest {\r\n\r\n Key: string;\r\n Name: string;\r\n NotifyEmail: string;\r\n\r\n}","export interface IChangePasswordRequest {\r\n\r\n NewPassword: string;\r\n CurrentPassword : string;\r\n\r\n ValidationMessage : string;\r\n\r\n IsValid();\r\n\r\n}\r\n\r\nexport class ChangePasswordRequest implements IChangePasswordRequest {\r\n\r\n public NewPassword: string;\r\n public CurrentPassword: string;\r\n\r\n public ValidationMessage: string;\r\n \r\n public IsValid(): boolean {\r\n\r\n if (this.NewPassword == undefined || this.NewPassword.length < 6) {\r\n this.ValidationMessage = \"The new password must be at least 6 characters.\";\r\n return false;\r\n }\r\n else if (this.CurrentPassword == undefined || this.CurrentPassword == \"\") {\r\n this.ValidationMessage = \"The current password is empty.\";\r\n return false;\r\n }\r\n else {\r\n this.ValidationMessage = \"\";\r\n return true;\r\n }\r\n }\r\n\r\n}\r\n","export class CheckForExistingMemberRequest {\r\n Email: string;\r\n Checksum: string;\r\n}","export interface IDesignerInstructionsRequest {\r\n\r\n Name: string;\r\n Email: string;\r\n LicenseKey: string;\r\n\r\n}\r\n\r\nexport class DesignerInstructionsRequest implements IDesignerInstructionsRequest {\r\n\r\n Name: string;\r\n Email: string;\r\n LicenseKey: string;\r\n\r\n}","export interface IFinishOrderRequest {\r\n\r\n UFOID: string;\r\n CC_FirstName: string;\r\n CC_LastName: string;\r\n CC_Number: string;\r\n CC_ExpMonth: number;\r\n CC_ExpYear: number;\r\n CC_CVC: number;\r\n OrderFormVersion: string;\r\n\r\n}\r\n\r\nexport class FinishOrderRequest implements IFinishOrderRequest {\r\n\r\n UFOID: string;\r\n CC_FirstName: string;\r\n CC_LastName: string;\r\n CC_Number: string;\r\n CC_ExpMonth: number;\r\n CC_ExpYear: number;\r\n CC_CVC: number;\r\n OrderFormVersion: string;\r\n\r\n}","export class GetTrainingClassesRequest {\r\n Checksum: string;\r\n}","\r\nexport interface IHoldRequest {\r\n \r\n HoldItemID: number;\r\n CreditCardID: number;\r\n LicenseKey: string;\r\n Initials: string;\r\n}\r\n\r\nexport class HoldRequest implements IHoldRequest {\r\n\r\n HoldItemID: number;\r\n CreditCardID: number;\r\n LicenseKey: string;\r\n Initials: string;\r\n}\r\n\r\n","export interface ILoginRequest {\r\n\r\n Username: string;\r\n Password: string;\r\n Checksum: string;\r\n CheckEmpty(): boolean;\r\n\r\n}\r\n\r\nexport class LoginRequest implements ILoginRequest {\r\n\r\n public Username: string;\r\n public Password: string;\r\n public Checksum: string;\r\n\r\n public CheckEmpty(): boolean {\r\n\r\n if (this.Username === \"\" || this.Password === \"\")\r\n return false;\r\n else\r\n return true;\r\n\r\n }\r\n\r\n}\r\n","export class MemberTrainingCertificatesRequest {\r\n\r\n StartDate: Date;\r\n EndDate: Date; //Make sure your end date is time aware - if you want all requests on 10/28/2018, pass 10/28/2018 11:59:59 PM. Or 10/29/2018 would also work, assuming events always have both a date and time.\r\n\r\n}","export enum BillingRecurringTypes {\r\n\r\n Yearly = 2,\r\n Monthly = 1\r\n\r\n}\r\n\r\nexport interface INewMemberRequest {\r\n Checksum: string;\r\n OrderFormVersion: string;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n Company: string;\r\n Phone: string;\r\n Password: string;\r\n Address1: string;\r\n City: string;\r\n State: string;\r\n ZipCode: string;\r\n Country: string;\r\n CC_FirstName: string;\r\n CC_LastName: string;\r\n CC_Address1: string;\r\n CC_City: string;\r\n CC_State: string;\r\n CC_ZipCode: string;\r\n CC_Country: string;\r\n CC_Number: string;\r\n CC_ExpMonth: number;\r\n CC_ExpYear: number;\r\n CC_CVC: number;\r\n ProductID: number;\r\n BillingCycle: BillingRecurringTypes;\r\n PromoCode: string;\r\n AssignToOwner: boolean;\r\n Initials: string;\r\n RedirectID: number;\r\n DateTimeRedirectClick: Date;\r\n\r\n AuthorizedContactFirstName : string;\r\n AuthorizedContactLastName : string;\r\n AuthorizedContactEmail : string;\r\n AuthorizedContactNote : string;\r\n}\r\n\r\nexport class NewMemberRequest implements INewMemberRequest {\r\n Checksum: string;\r\n OrderFormVersion: string;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n Company: string;\r\n Phone: string;\r\n Password: string;\r\n Address1: string;\r\n City: string;\r\n State: string;\r\n ZipCode: string;\r\n Country: string;\r\n CC_FirstName: string;\r\n CC_LastName: string;\r\n CC_Address1: string;\r\n CC_City: string;\r\n CC_State: string;\r\n CC_ZipCode: string;\r\n CC_Country: string;\r\n CC_Number: string;\r\n CC_ExpMonth: any;\r\n CC_ExpYear: number;\r\n CC_CVC: number;\r\n ProductID: number;\r\n BillingCycle: BillingRecurringTypes;\r\n PromoCode: string;\r\n AssignToOwner: boolean = true;\r\n Initials: string;\r\n RedirectID: number;\r\n DateTimeRedirectClick: Date;\r\n AddYard: boolean;\r\n\r\n AuthorizedContactFirstName : string;\r\n AuthorizedContactLastName : string;\r\n AuthorizedContactEmail : string;\r\n AuthorizedContactNote : string;\r\n\r\n}","export interface IOrderGISRequest {\r\n\r\n CDKey: string;\r\n ProductID: number;\r\n CCID: number;\r\n\r\n}\r\n\r\nexport class OrderGISRequest implements IOrderGISRequest {\r\n\r\n CDKey: string;\r\n ProductID: number;\r\n CCID: number;\r\n\r\n}","export class PayInvoiceRequest {\r\n\r\n InvoiceID: number;\r\n CreditCardID: number;\r\n\r\n}","export class ReactivateRequest {\r\n\r\n LicenseKey: string;\r\n Initials: string;\r\n CreditCardID: number;\r\n AdminID: number;\r\n\r\n}","import { BillingRecurringTypes } from \"../responses/dashboard.license.response\";\r\n\r\nexport class ReactivateRequestv2 {\r\n\r\n LicenseKey: string;\r\n Initials: string;\r\n CreditCardID: number;\r\n AdminID: number;\r\n NewProductID: number;\r\n IncludeYARD: boolean;\r\n BillingCycle: BillingRecurringTypes;\r\n assignToMember: boolean = true;\r\n keepAssigned: boolean = false;\r\n\tdesignerName: string = \"\";\r\n\tdesignerEmail: string = \"\"; \r\n}","export class RegisterForTrainingEventRequest {\r\n\r\n LicenseID: number;\r\n TrainingEventID: number;\r\n AlternateEmail: string;\r\n AlternatePhone: string;\r\n\r\n}","export interface IResetPasswordRequest {\r\n\r\n Checksum: string;\r\n Email: string;\r\n\r\n}\r\n\r\nexport class ResetPasswordRequest implements IResetPasswordRequest {\r\n\r\n Checksum: string;\r\n Email: string;\r\n\r\n}\r\n","\r\nexport interface IResumeLicenseRequest {\r\n \r\n CreditCardID: number;\r\n LicenseKey: string;\r\n Initials: string;\r\n}\r\n\r\nexport class ResumeLicenseRequest implements IResumeLicenseRequest {\r\n\r\n CreditCardID: number;\r\n LicenseKey: string;\r\n Initials: string;\r\n}\r\n\r\n","\r\nexport interface IResumeLicenseSimulationRequest {\r\n \r\n LicenseKey: string;\r\n Initials: string;\r\n}\r\n\r\nexport class ResumeLicenseSimulationRequest implements IResumeLicenseSimulationRequest {\r\n LicenseKey: string;\r\n Initials: string;\r\n}\r\n\r\n","export enum CommTypes {\r\n\r\n SMS = 0,\r\n Email = 1\r\n\r\n};\r\n\r\nexport interface ISendTwoFactorCodeOptionRequest {\r\n\r\n Token: string;\r\n CommType: CommTypes;\r\n CommValue: string;\r\n\r\n}\r\n\r\nexport class SendTwoFactorCodeOptionRequest implements ISendTwoFactorCodeOptionRequest {\r\n\r\n public Token: string;\r\n public CommType: CommTypes;\r\n public CommValue: string;\r\n\r\n}\r\n","export interface ISetNewPasswordRequest {\r\n\r\n ResetPasswordID: string;\r\n NewPassword: string;\r\n\r\n}\r\n\r\nexport class SetNewPasswordRequest implements ISetNewPasswordRequest {\r\n\r\n public ResetPasswordID: string;\r\n public NewPassword: string;\r\n\r\n}","export class TrainingCalendarRequest {\r\n\r\n StartDate: Date;\r\n EndDate: Date; //Make sure your end date is time aware - if you want all requests on 10/28/2018, pass 10/28/2018 11:59:59 PM. Or 10/29/2018 would also work, assuming events always have both a date and time.\r\n\r\n}","export interface ITwoFactorAuthenticationRequest {\r\n\r\n Token: string;\r\n Code: string;\r\n\r\n}\r\n\r\nexport class TwoFactorAuthenticationRequest implements ITwoFactorAuthenticationRequest {\r\n\r\n Token: string;\r\n Code: string;\r\n\r\n}","export interface IUnlockLoginRequest {\r\n\r\n Code: string;\r\n\r\n}\r\n\r\nexport class UnlockLoginRequest implements IUnlockLoginRequest {\r\n\r\n Code: string;\r\n\r\n}\r\n","import { BillingRecurringTypes } from \"app/models/ss-api/price.billing.cycle\";\r\n\r\nexport interface IUpdateCartRequest {\r\n\r\n ProductID: Number;\r\n CartID: string;\r\n RedirectID: Number;\r\n DateTimeRedirectClicked: Date\r\n FirstName: string;\r\n LastName: string;\r\n Email1: string;\r\n Email2: string;\r\n Company: string;\r\n Phone: string;\r\n CCName: string;\r\n CCNumber: string;\r\n CCLastFour: string;\r\n CCExpMonth: number;\r\n CCExpYear: number;\r\n Address: string;\r\n City: string;\r\n State: string;\r\n ZipCode: string;\r\n Country: string;\r\n Initials: string;\r\n BillingCycle: BillingRecurringTypes;\r\n SubTotal: number;\r\n TaxChecksum: string;\r\n}\r\n\r\nexport class UpdateCartRequest implements IUpdateCartRequest {\r\n\r\n public Company: string;\r\n public ProductID: Number;\r\n public RedirectID: Number;\r\n public DateTimeRedirectClicked: Date;\r\n public FirstName: string;\r\n public LastName: string;\r\n public Email1: string;\r\n public Email2: string;\r\n public CartID: string;\r\n public Phone: string;\r\n public CCName: string;\r\n CCNumber: string;\r\n CCLastFour: string;\r\n CCExpMonth: number;\r\n CCExpYear: number;\r\n public Address: string;\r\n public City: string;\r\n public State: string;\r\n public ZipCode: string;\r\n public Country: string;\r\n public Initials: string;\r\n BillingCycle: BillingRecurringTypes;\r\n SubTotal: number;\r\n TaxChecksum: string;\r\n}","export class UpdateCreditCardExpirationRequest {\r\n CreditCardID: number;\r\n ExpMonth: number;\r\n ExpYear: number;\r\n Zipcode: string;\r\n IsDefault?: boolean;\r\n}\r\n","export class UpdateMemberProfileRequest {\r\n\r\n Companyname: string;\r\n Email: string;\r\n Address1: string;\r\n City: string;\r\n State: string;\r\n Postcode: string;\r\n Country: string;\r\n Phonenumber: string;\r\n Phonenumber2: string;\r\n FaxNumber: string;\r\n\r\n public NewPassword: string;\r\n public CurrentPassword: string;\r\n\r\n public ValidationMessage: string;\r\n \r\n public IsPasswordValid(): boolean {\r\n\r\n if (this.NewPassword == undefined || this.NewPassword.length < 5) {\r\n this.ValidationMessage = \"The new password must be at least 5 characters.\";\r\n return false;\r\n }\r\n else if (this.CurrentPassword == undefined || this.CurrentPassword == \"\") {\r\n this.ValidationMessage = \"The current password is empty.\";\r\n return false;\r\n }\r\n else {\r\n this.ValidationMessage = \"\";\r\n return true;\r\n }\r\n } \r\n\r\n}","import { AttendanceStatusTypes } from \"../../domain/training.event.subscription\";\r\n\r\nexport class UpdateTrainingEventSubscriptionStatusRequest {\r\n\r\n TrainingEventSubscriptionID: number;\r\n AttendanceStatusType: AttendanceStatusTypes;\r\n\r\n}","import { BillingRecurringTypes } from \"app/models/ss-api/price.billing.cycle\";\r\n\r\nexport interface IUpgradeProductRequest {\r\n\r\n LicenseKey: string;\r\n NewProductID: number;\r\n CreditCardID: number;\r\n NewBillingCycle: BillingRecurringTypes;\r\n Initials: string;\r\n SimulateOnly: boolean;\r\n PromoCode: string;\r\n AdminID: number;\r\n\r\n}\r\n\r\nexport class UpgradeProductRequest implements IUpgradeProductRequest {\r\n\r\n LicenseKey: string;\r\n NewProductID: number;\r\n CreditCardID: number;\r\n NewBillingCycle: BillingRecurringTypes;\r\n Initials: string;\r\n SimulateOnly: boolean;\r\n PromoCode: string;\r\n AdminID: number;\r\n\r\n}\r\n","export interface IYardAddonOrderRequest {\r\n\r\n YardProductID: number;\r\n LicenseID: number;\r\n CCardID: number;\r\n Initials: string;\r\n\r\n}\r\n\r\nexport class YardAddonOrderRequest implements IYardAddonOrderRequest {\r\n\r\n YardProductID: number;\r\n LicenseID: number;\r\n CCardID: number;\r\n Initials: string;\r\n\r\n}","import { BillingHistoryItemArray } from './billing.history.item';\r\n\r\nexport interface IBillingHistoryResponse {\r\n\r\n DateTimeCreated: Date;\r\n DateTimePaid: Date;\r\n Total: number;\r\n TotalPaid: number;\r\n InvoiceNumber: string;\r\n Items: BillingHistoryItemArray;\r\n Refunded: boolean;\r\n IsOnHoldInvoice: boolean;\r\n // FixDates();\r\n\r\n}\r\n\r\nexport class BillingHistoryResponse implements IBillingHistoryResponse {\r\n\r\n DateTimeCreated: Date;\r\n DateTimePaid: Date;\r\n Total: number;\r\n TotalPaid: number;\r\n InvoiceNumber: string;\r\n Items: BillingHistoryItemArray;\r\n Refunded: boolean;\r\n IsOnHoldInvoice: boolean;\r\n\r\n\r\n // FixDates() {\r\n // this.DateTimeCreated = new Date(this.DateTimeCreated);\r\n // this.DateTimePaid = new Date(this.DateTimePaid);\r\n // }\r\n}\r\n\r\nexport class BillingHistoryResponseArray extends Array {\r\n\r\n constructor(...items: BillingHistoryResponse[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, BillingHistoryResponseArray.prototype);\r\n }\r\n\r\n public InitFromJSON() {\r\n\r\n if (this.length == 0)\r\n return;\r\n\r\n this.forEach((item) => {\r\n Object.setPrototypeOf(item, BillingHistoryResponse.prototype);\r\n // item.FixDates();\r\n })\r\n }\r\n\r\n}","export enum CreditCardTypes {\r\n\r\n Unknown = 0,\r\n VISA = 1,\r\n MasterCard = 2,\r\n Discover = 3,\r\n AmericanExpress = 4,\r\n JCB = 5,\r\n EnRoute = 6,\r\n DinersClub = 7\r\n\r\n}\r\n\r\nexport interface ICreditCardResponse {\r\n\r\n ID: number;\r\n LastFour: string;\r\n ExpMonth: number;\r\n ExpYear: number;\r\n CardType: CreditCardTypes;\r\n IsDefault: boolean;\r\n DateTimeLastUpdate: Date;\r\n DateTimeCreated: Date;\r\n DateTimeLastUsed: Date;\r\n Status: string;\r\n FirstName: string;\r\n LastName: string;\r\n Address01: string;\r\n City: string;\r\n State: string;\r\n PostalCode: string;\r\n Country: string;\r\n // FixDates();\r\n\r\n}\r\n\r\nexport class CreditCardResponse implements ICreditCardResponse {\r\n\r\n ID: number;\r\n LastFour: string;\r\n ExpMonth: number;\r\n ExpYear: number;\r\n CardType: CreditCardTypes;\r\n IsDefault: boolean;\r\n DateTimeLastUpdate: Date;\r\n DateTimeCreated: Date;\r\n DateTimeLastUsed: Date;\r\n Status: string;\r\n FirstName: string;\r\n LastName: string;\r\n Address01: string;\r\n City: string;\r\n State: string;\r\n PostalCode: string;\r\n Country: string;\r\n\r\n // public FixDates() {\r\n // this.DateTimeCreated = new Date(this.DateTimeCreated);\r\n // this.DateTimeLastUpdate = new Date(this.DateTimeLastUpdate);\r\n // this.DateTimeLastUsed = new Date(this.DateTimeLastUsed);\r\n // }\r\n\r\n\r\n public static GetCreditCardTypeFromString(type: string): CreditCardTypes {\r\n\r\n switch (type) {\r\n\r\n case \"visa\":\r\n return CreditCardTypes.VISA;\r\n\r\n case \"mastercard\":\r\n return CreditCardTypes.MasterCard;\r\n\r\n case \"discover\":\r\n return CreditCardTypes.Discover;\r\n\r\n case \"amex\":\r\n return CreditCardTypes.AmericanExpress;\r\n\r\n case \"jcb\":\r\n return CreditCardTypes.JCB;\r\n\r\n case \"\":\r\n return CreditCardTypes.EnRoute;\r\n\r\n case \"dinersclub\":\r\n return CreditCardTypes.DinersClub;\r\n\r\n default:\r\n return CreditCardTypes.Unknown;\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n\r\nexport class CreditCardResponseArray extends Array {\r\n\r\n constructor(...items: CreditCardResponse[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, CreditCardResponseArray.prototype);\r\n }\r\n\r\n public InitFromJSON() {\r\n\r\n if (this.length == 0)\r\n return;\r\n\r\n this.forEach((item) => {\r\n Object.setPrototypeOf(item, CreditCardResponse.prototype);\r\n // item.FixDates();\r\n })\r\n }\r\n\r\n}","import { InvoiceItem } from \"./invoice.item\";\r\n\r\nexport enum LicenseStatus {\r\n\r\n Open = 0,\r\n Registered = 1,\r\n Cancelled = 2,\r\n CancelledOpen = 3,\r\n Disabled = 4,\r\n Terminated = 99,\r\n DoesNotExist = 100\r\n\r\n}\r\n\r\nexport enum BillingRecurringTypes {\r\n\r\n Yearly = 2,\r\n Monthly = 1\r\n\r\n}\r\n\r\nexport enum HoldStatusTypes {\r\n None = 0,\r\n Active = 1,\r\n LicenseResumed = 2,\r\n HoldFinished = 3\r\n}\r\n\r\nexport interface IDashboardLicenseResponse {\r\n\r\n LicenseID: number;\r\n \r\n DateTimeCreated: Date;\r\n Key: string;\r\n SoftwareVersion: string;\r\n Status: LicenseStatus; \r\n ProductName: string;\r\n ProductPrice : number;\r\n\r\n IsRegistered: boolean; \r\n TerminationDate: Date;\r\n\r\n // Billing\r\n Recurring: BillingRecurringTypes;\r\n Price: number;\r\n IsGrace: boolean;\r\n GraceInvoice: InvoiceItem;\r\n\r\n NextBillingDate: Date;\r\n LastActiveDate : Date;\r\n\r\n //Hold\r\n IsOnHold: boolean;\r\n HoldStatus : HoldStatusTypes;\r\n HoldStartDate: Date;\r\n HoldEndDate: Date;\r\n IsScheduledHold: boolean;\r\n\r\n // YARD\r\n YardAvailable: boolean;\r\n HasYard: boolean;\r\n YardCancelled: boolean;\r\n \r\n \r\n\r\n // FixDates();\r\n\r\n}\r\n\r\n\r\nexport class DashboardLicenseResponse implements IDashboardLicenseResponse {\r\n ProductPrice: number;\r\n LastActiveDate: Date;\r\n HoldStatus: HoldStatusTypes;\r\n\r\n LicenseID: number;\r\n Key: string;\r\n SoftwareVersion: string;\r\n Status: LicenseStatus;\r\n DateTimeCreated: Date;\r\n NextBillingDate: Date;\r\n Recurring: BillingRecurringTypes;\r\n Price: number;\r\n ProductName: string;\r\n YardAvailable: boolean;\r\n YardVisiblePublic: boolean;\r\n IsRegistered: boolean;\r\n HasYard: boolean;\r\n YardCancelled: boolean;\r\n TerminationDate: Date;\r\n IsGrace: boolean;\r\n GraceInvoice: InvoiceItem;\r\n\r\n IsOnHold: boolean;\r\n HoldStartDate: Date;\r\n HoldEndDate: Date;\r\n IsScheduledHold: boolean;\r\n\r\n\r\n // FixDates() {\r\n\r\n // this.DateTimeCreated = new Date(this.DateTimeCreated.toString() + \"-08:00\");\r\n // this.NextBillingDate = new Date(this.NextBillingDate.toString() + \"-08:00\");\r\n // this.TerminationDate = new Date(this.TerminationDate.toString() + \"-08:00\");\r\n // this.HoldStartDate = new Date(this.HoldStartDate.toString() + \"-08:00\");\r\n // this.HoldEndDate = new Date(this.HoldEndDate.toString() + \"-08:00\");\r\n // this.LastActiveDate = new Date(this.LastActiveDate.toString() + \"-08:00\");\r\n\r\n // this.DateTimeCreated = new Date(this.DateTimeCreated);\r\n // this.NextBillingDate = new Date(this.NextBillingDate);\r\n // this.TerminationDate = new Date(this.TerminationDate);\r\n // this.HoldStartDate = new Date(this.HoldStartDate);\r\n // this.HoldEndDate = new Date(this.HoldEndDate);\r\n // this.LastActiveDate = new Date(this.LastActiveDate);\r\n \r\n // }\r\n\r\n}\r\n\r\n\r\nexport class DashboardLicenseResponseArray extends Array {\r\n\r\n constructor(...items: DashboardLicenseResponse[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, DashboardLicenseResponseArray.prototype);\r\n }\r\n\r\n public InitFromJSON() {\r\n\r\n if (this.length == 0)\r\n return;\r\n\r\n this.forEach((item) => {\r\n Object.setPrototypeOf(item, DashboardLicenseResponse.prototype);\r\n // item.FixDates();\r\n })\r\n }\r\n\r\n}\r\n","import { DashboardLicenseResponseArray } from './dashboard.license.response';\r\nimport { InvoiceItem } from './invoice.item';\r\n\r\nexport interface IDashboardProductsResponse {\r\n\r\n MemberID: number;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n IsMember: boolean;\r\n Desginers: DashboardProductsResponseArray;\r\n Licenses: DashboardLicenseResponseArray;\r\n SharedGISCredits: number;\r\n PersonalGISCredits: number;\r\n IsTOS: boolean;\r\n IsDispute: boolean;\r\n IsFormerTOS: boolean;\r\n IsGrace: boolean;\r\n GraceInvoice: InvoiceItem;\r\n InitFromJSON();\r\n\r\n}\r\n\r\nexport class DashboardProductsResponse implements IDashboardProductsResponse {\r\n\r\n MemberID: number;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n IsMember: boolean;\r\n Desginers: DashboardProductsResponseArray;\r\n Licenses: DashboardLicenseResponseArray;\r\n SharedGISCredits: number;\r\n PersonalGISCredits: number;\r\n IsTOS: boolean;\r\n IsDispute: boolean;\r\n IsFormerTOS: boolean;\r\n IsGrace: boolean;\r\n GraceInvoice: InvoiceItem;\r\n\r\n InitFromJSON() {\r\n\r\n if (this.Licenses != undefined) {\r\n Object.setPrototypeOf(this.Licenses, DashboardLicenseResponseArray.prototype);\r\n this.Licenses.InitFromJSON();\r\n }\r\n\r\n if (this.Desginers != undefined) {\r\n Object.setPrototypeOf(this.Desginers, DashboardProductsResponseArray.prototype);\r\n this.Desginers.InitFromJSON();\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n\r\nexport class DashboardProductsResponseArray extends Array {\r\n\r\n constructor(...items: DashboardProductsResponse[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, DashboardProductsResponseArray.prototype);\r\n }\r\n\r\n public InitFromJSON() {\r\n\r\n if (this.length == 0)\r\n return;\r\n\r\n this.forEach((item) => {\r\n\r\n if (item.Licenses != undefined && item.Licenses.length > 0) {\r\n Object.setPrototypeOf(item.Licenses, DashboardLicenseResponseArray.prototype);\r\n item.Licenses.InitFromJSON();\r\n }\r\n\r\n })\r\n }\r\n\r\n}","export enum GISTypes {\r\n\r\n Shared = 0,\r\n Individual = 1\r\n\r\n}\r\n\r\nexport interface IGISBundleResponse {\r\n\r\n ProductID: number;\r\n PricingID: number;\r\n Credits: number;\r\n Price: number;\r\n Name: string;\r\n GisType: GISTypes;\r\n\r\n TaxEnabled: boolean;\r\n TaxRate: number;\r\n State: string;\r\n TaxRateDisplay: string;\r\n TotalWithTax: number;\r\n TaxAmount: number; \r\n\r\n}\r\n\r\n\r\nexport class GISBundleResponse implements IGISBundleResponse {\r\n\r\n ProductID: number;\r\n PricingID: number;\r\n Credits: number;\r\n Price: number;\r\n Name: string;\r\n GisType: GISTypes;\r\n \r\n TaxEnabled: boolean;\r\n TaxRate: number;\r\n State: string;\r\n TaxRateDisplay: string;\r\n TotalWithTax: number;\r\n TaxAmount: number; \r\n}\r\n\r\nexport class GISBundleResponseArray extends Array {\r\n\r\n constructor(...items: GISBundleResponse[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, GISBundleResponseArray.prototype);\r\n }\r\n\r\n}","export enum GISCreditTypes {\r\n\r\n Shared = 0,\r\n Individual = 1\r\n\r\n}\r\n\r\nexport interface IGISUsageHistoryItemResponse {\r\n\r\n ID: number;\r\n CreditType: GISCreditTypes;\r\n Credited: boolean;\r\n DateTimeCreated: Date;\r\n Key: string;\r\n Address: string;\r\n Refunded: boolean;\r\n // FixDates();\r\n\r\n}\r\n\r\nexport class GISUsageHistoryItemResponse implements IGISUsageHistoryItemResponse {\r\n\r\n ID: number;\r\n CreditType: GISCreditTypes;\r\n Credited: boolean;\r\n DateTimeCreated: Date;\r\n Key: string;\r\n Address: string;\r\n Refunded: boolean;\r\n\r\n // FixDates() {\r\n // this.DateTimeCreated = new Date(this.DateTimeCreated);\r\n // }\r\n\r\n}\r\n\r\nexport class GISUsageHistoryItemResponseArray extends Array {\r\n\r\n constructor(...items: GISUsageHistoryItemResponse[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, GISUsageHistoryItemResponseArray.prototype);\r\n }\r\n\r\n public InitFromJSON() {\r\n\r\n if (this.length == 0)\r\n return;\r\n\r\n this.forEach((item) => {\r\n Object.setPrototypeOf(item, GISUsageHistoryItemResponse.prototype);\r\n // item.FixDates();\r\n })\r\n }\r\n\r\n}","export enum GISCreditTypes {\r\n\r\n Shared = 0,\r\n Individual = 1\r\n\r\n}\r\n\r\nexport interface IGISPurchaseItemResponse {\r\n\r\n ID: number;\r\n ServiceID: number;\r\n Refunded: boolean;\r\n DateTimeRefunded: Date;\r\n ExpirationDate: Date;\r\n PurchaseDate: Date;\r\n CreditType: GISCreditTypes;\r\n OldCreditsTotal: number;\r\n Expired: boolean;\r\n Used: number;\r\n BundleCredits: number;\r\n Remaining: number;\r\n Name: string;\r\n Terminated: boolean;\r\n Suspended: boolean;\r\n // FixDates();\r\n\r\n}\r\n\r\nexport class GISPurchaseItemResponse implements IGISPurchaseItemResponse {\r\n\r\n ID: number;\r\n ServiceID: number;\r\n Refunded: boolean;\r\n DateTimeRefunded: Date;\r\n PurchaseDate: Date;\r\n ExpirationDate: Date;\r\n CreditType: GISCreditTypes;\r\n OldCreditsTotal: number;\r\n Expired: boolean;\r\n Used: number;\r\n BundleCredits: number;\r\n Remaining: number;\r\n Name: string;\r\n Terminated: boolean;\r\n Suspended: boolean;\r\n\r\n // FixDates() {\r\n // this.DateTimeRefunded = new Date(this.DateTimeRefunded);\r\n // this.PurchaseDate = new Date(this.PurchaseDate);\r\n // this.ExpirationDate = new Date(this.ExpirationDate);\r\n // }\r\n\r\n}\r\n\r\nexport class GISPurchaseItemResponseArray extends Array {\r\n\r\n constructor(...items: GISPurchaseItemResponse[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, GISPurchaseItemResponseArray.prototype);\r\n }\r\n\r\n public InitFromJSON() {\r\n\r\n if (this.length == 0)\r\n return;\r\n\r\n this.forEach((item) => {\r\n Object.setPrototypeOf(item, GISPurchaseItemResponse.prototype);\r\n //item.FixDates();\r\n })\r\n }\r\n\r\n}","import { KeyValuePairArray } from \"app/models/KeyValuePair\";\r\n\r\nexport enum MemberTypes {\r\n\r\n Member = 0,\r\n Designer = 1\r\n\r\n}\r\n\r\nexport interface ILoginResponse {\r\n\r\n Token: string;\r\n Authenticated: boolean;\r\n TokenExpiration: Date;\r\n TwoFactorRequired: boolean;\r\n TwoFactorOptions: KeyValuePairArray;\r\n TwoFactorExpiration: Date;\r\n Redirect: string;\r\n FirstName: string;\r\n LastName: string;\r\n MemberID: number;\r\n Username: string;\r\n Email: string;\r\n MemberType: MemberTypes;\r\n UnfinishedOrderID: string;\r\n IsFormerTOS: boolean;\r\n IsTOS: boolean;\r\n IsDispute: boolean;\r\n // FixDates();\r\n\r\n}\r\n\r\nexport class LoginResponse implements ILoginResponse {\r\n\r\n Token: string = \"\";\r\n Authenticated: boolean = false;\r\n TokenExpiration: Date;\r\n TwoFactorRequired: boolean = false;\r\n TwoFactorOptions: KeyValuePairArray;\r\n TwoFactorExpiration: Date;\r\n Redirect: string;\r\n FirstName: string;\r\n LastName: string;\r\n MemberID: number;\r\n Username: string;\r\n Email: string;\r\n MemberType: MemberTypes;\r\n UnfinishedOrderID: string;\r\n IsFormerTOS: boolean;\r\n IsTOS: boolean;\r\n IsDispute: boolean;\r\n\r\n\r\n // FixDates() {\r\n\r\n // this.TokenExpiration = new Date(this.TokenExpiration);\r\n\r\n // if (this.TwoFactorRequired)\r\n // this.TwoFactorExpiration = new Date(this.TwoFactorExpiration);\r\n // }\r\n\r\n}","export interface IMemberBasicInfoResponse {\r\n\r\n ID: number;\r\n Firstname: string;\r\n Lastname: string;\r\n Address1: string;\r\n City: string;\r\n State: string;\r\n ZipCode: string;\r\n Country: string;\r\n Credit: number;\r\n\r\n AuthorizedContactFirstName : string;\r\n AuthorizedContactLastName : string;\r\n AuthorizedContactEmail : string;\r\n AuthorizedContactNote : string;\r\n\r\n}\r\n\r\nexport class MemberBasicInfoResponse implements IMemberBasicInfoResponse {\r\n\r\n ID: number;\r\n Firstname: string;\r\n Lastname: string;\r\n Address1: string;\r\n City: string;\r\n State: string;\r\n ZipCode: string;\r\n Country: string;\r\n Credit: number;\r\n\r\n AuthorizedContactFirstName : string;\r\n AuthorizedContactLastName : string;\r\n AuthorizedContactEmail : string;\r\n AuthorizedContactNote : string;\r\n\r\n}","export interface IMemberDesignersLicenseItem {\r\n\r\n ID: number;\r\n Key: string;\r\n LicenseStatus: string;\r\n Product_ID: number;\r\n Product: string;\r\n SoftwareVersion: string;\r\n CompatibilityToken: string;\r\n SoftwareVersionInt: number;\r\n PastDue: boolean;\r\n TOS: boolean;\r\n Registered: boolean;\r\n\r\n}\r\n\r\nexport class MemberDesignersLicenseItem implements IMemberDesignersLicenseItem {\r\n\r\n ID: number;\r\n Key: string;\r\n LicenseStatus: string;\r\n Product_ID: number;\r\n Product: string;\r\n SoftwareVersion: string;\r\n CompatibilityToken: string;\r\n SoftwareVersionInt: number;\r\n PastDue: boolean;\r\n TOS: boolean;\r\n Registered: boolean;\r\n\r\n}\r\n\r\n\r\nexport class MemberDesignersLicenseItemArray extends Array {\r\n\r\n constructor(...items: MemberDesignersLicenseItem[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, MemberDesignersLicenseItemArray.prototype);\r\n }\r\n\r\n}","import { MemberDesignersLicenseItemArray } from \"app/models/ss-api/responses/member.designers.license.item\";\r\n\r\nexport interface IMemberDesignersLicensesBasicsResponse {\r\n\r\n Keys: MemberDesignersLicenseItemArray;\r\n Name: string;\r\n Email: string;\r\n Phone: string;\r\n Credit: number;\r\n\r\n}\r\n\r\nexport class MemberDesignersLicensesBasicsResponse implements IMemberDesignersLicensesBasicsResponse {\r\n\r\n Keys: MemberDesignersLicenseItemArray;\r\n Name: string;\r\n Email: string;\r\n Phone: string;\r\n Credit: number;\r\n\r\n}\r\n\r\nexport class MemberDesignerLicenseBasicsResponseArray extends Array {\r\n\r\n constructor(...items: MemberDesignersLicensesBasicsResponse[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, MemberDesignerLicenseBasicsResponseArray.prototype);\r\n }\r\n\r\n}","import { PriceBillingCycleArray } from \"app/models/ss-api/price.billing.cycle\";\r\n\r\nexport interface IPublicOrderProductsResponse {\r\n\r\n ProductID: number;\r\n Name: string;\r\n Prices: PriceBillingCycleArray;\r\n YardAddon: IPublicOrderProductsResponse;\r\n VisiblePublic: boolean;\r\n TaxEnabled: boolean;\r\n YardVisiblePublic: boolean;\r\n}\r\n\r\nexport class PublicOrderProductsResponse implements IPublicOrderProductsResponse {\r\n\r\n ProductID: number;\r\n Name: string;\r\n Prices: PriceBillingCycleArray;\r\n YardAddon: PublicOrderProductsResponse;\r\n VisiblePublic: boolean;\r\n TaxEnabled: boolean;\r\n YardVisiblePublic: boolean;\r\n}\r\n\r\nexport class PublicOrderProductsResponseArray extends Array {\r\n\r\n constructor(...items: PublicOrderProductsResponse[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, PublicOrderProductsResponseArray.prototype);\r\n }\r\n\r\n}\r\n","export class ReactivateSimulationResponse {\r\n\r\n ReactivatePossible: string;\r\n ReactivateNotPossibleReason: string;\r\n InGraceReactivation: boolean;\r\n ProductPrice: number;\r\n SetupPrice: number;\r\n\r\n //total without tax\r\n TotalPrice: number;\r\n Credit: number;\r\n NextBillingDate: Date;\r\n\r\n TaxFromCache: boolean;\r\n TaxEnabled: boolean;\r\n TaxRate: number;\r\n TaxAmount: number;\r\n State: string;\r\n TotalWithTax: number;\r\n TaxRateDisplay: string;\r\n\r\n // public static FixDates(item: ReactivateSimulationResponse) {\r\n // item.NextBillingDate = new Date(item.NextBillingDate);\r\n // }\r\n\r\n}","export class ReactivateSimulationResponsev2 {\r\n\r\n ReactivatePossible: string;\r\n ReactivateNotPossibleReason: string;\r\n InGraceReactivation: boolean;\r\n ProductPrice: number;\r\n SetupPrice: number;\r\n YARDPrice: number;\r\n TotalPrice: number;\r\n NextBillingDate: Date;\r\n\r\n Credit: number;\r\n\r\n TaxFromCache: boolean;\r\n TaxEnabled: boolean;\r\n TaxRate: number;\r\n TaxAmount: number;\r\n State: string;\r\n TotalWithTax: number;\r\n TaxRateDisplay: string;\r\n \r\n\r\n // public static FixDates(item: ReactivateSimulationResponsev2) {\r\n // item.NextBillingDate = new Date(item.NextBillingDate);\r\n // }\r\n\r\n}","export class ssApiResponse {\r\n\r\n constructor(public Url: string, public Method: string, public Payload: any) {\r\n\r\n }\r\n\r\n}","export interface ITrainingEventDetailsResponse {\r\n\r\n ScheduleID: any;\r\n title: string;\r\n date: string;\r\n displaySoftware: any;\r\n end: string;\r\n hour: number;\r\n htmlContent: string;\r\n start: string;\r\n time: string;\r\n credits: string;\r\n IsExpired: boolean;\r\n url: string;\r\n\r\n}\r\n\r\n\r\nexport class TrainingEventDetailsResponse implements ITrainingEventDetailsResponse {\r\n\r\n ScheduleID: any;\r\n title: string;\r\n date: string;\r\n displaySoftware: any;\r\n end: string;\r\n hour: number;\r\n htmlContent: string;\r\n start: string;\r\n time: string;\r\n credits: string;\r\n IsExpired: boolean;\r\n url: string;\r\n\r\n}\r\n\r\n","import { BillingRecurringTypes } from \"app/models/ss-api/requests/new.member.request\";\r\n\r\nexport interface IUnfunishedOrderData {\r\n\r\n Product: string;\r\n Package: string;\r\n BillingCycleType: BillingRecurringTypes;\r\n RecurringAmount: number;\r\n SetupAmount: number;\r\n CCLast4: string;\r\n TaxEnabled: boolean;\r\n TaxRate: number;\r\n State: string;\r\n TaxRateDisplay: string;\r\n TotalWithTax: number;\r\n TaxAmount: number;\r\n\r\n}\r\n\r\nexport class UnfunishedOrderData implements IUnfunishedOrderData {\r\n\r\n Product: string;\r\n Package: string;\r\n BillingCycleType: BillingRecurringTypes;\r\n RecurringAmount: number = 0;\r\n SetupAmount: number = 0;\r\n CCLast4: string;\r\n TaxEnabled: boolean;\r\n TaxRate: number;\r\n State: string;\r\n TaxRateDisplay: string;\r\n TotalWithTax: number;\r\n TaxAmount: number;\r\n\r\n}\r\n\r\n\r\n","export enum BillingRecurringTypes {\r\n Yearly = 2,\r\n Monthly = 1,\r\n\r\n}\r\n\r\nexport interface IUpgradableProductsResponse {\r\n FromProductID: number;\r\n FromProductName: string;\r\n FromBillingCycle: BillingRecurringTypes;\r\n HasYard: boolean;\r\n ProductID: number;\r\n Name: string;\r\n Price: number;\r\n BillingCycle: BillingRecurringTypes;\r\n}\r\n\r\nexport class UpgradableProductsResponse implements IUpgradableProductsResponse {\r\n FromProductID: number;\r\n FromProductName: string;\r\n FromBillingCycle: BillingRecurringTypes;\r\n HasYard: boolean;\r\n ProductID: number;\r\n Name: string;\r\n Price: number;\r\n BillingCycle: BillingRecurringTypes;\r\n}\r\n\r\nexport class UpgradableProductsResponseArray extends Array {\r\n\r\n constructor(...items: UpgradableProductsResponse[]) {\r\n super(...items);\r\n Object.setPrototypeOf(this, UpgradableProductsResponseArray.prototype);\r\n }\r\n\r\n}","import { BillingRecurringTypes } from \"./upgradable.products.response\";\r\n\r\nexport enum UpgradeTypes {\r\n\r\n MonthToMonth = 0,\r\n MonthToYear = 1,\r\n YearToYear = 2,\r\n NotSupported = 99\r\n\r\n}\r\n\r\nexport class UpgradeSimulationResponse {\r\n\r\n UpgradeType: UpgradeTypes;\r\n OldBillingCycle: BillingRecurringTypes;\r\n NewBillingCycle: BillingRecurringTypes;\r\n OldProductID: number;\r\n OldProductName: string;\r\n NewProductID: number;\r\n NewProductName: string;\r\n OldPrice: number;\r\n DateTimeCycleStart: Date;\r\n DateTimeCycleEnd: Date;\r\n DaysCurrentCycle: number;\r\n DaysUntilRenewal: number;\r\n DaysUsed: number;\r\n OldDayPrice: number;\r\n AmountUsedThisCycle: number;\r\n CreditThisCycle: number;\r\n NewPrice: number;\r\n NewDayPrice: Number;\r\n AmountDueThisCycleNewProduct: number;\r\n TotalDueUpgrade: number;\r\n DateTimeNewCycleEnd: Date;\r\n\r\n TotalDueUpgradeTaxAmount: number;\r\n TotalDueUpgradeWithTax: number;\r\n TaxRateDisplay: string;\r\n TaxFromCache: boolean;\r\n TaxEnabled: boolean;\r\n TaxRate: number;\r\n State: string;\r\n\r\n // public static FixDates(item: UpgradeSimulationResponse) {\r\n // item.DateTimeCycleEnd = new Date(item.DateTimeCycleEnd);\r\n // item.DateTimeCycleStart = new Date(item.DateTimeCycleStart);\r\n // item.DateTimeNewCycleEnd = new Date(item.DateTimeNewCycleEnd);\r\n // }\r\n\r\n}","import { LoginDialogComponent } from './../../../dialogs/auth-login/auth-login-dialog.component';\r\nimport { CheckForExistingMemberRequest } from './../../../models/ss-api/requests/check.for.existing.member.request';\r\nimport { BillingRecurringTypes } from '../../../models/ss-api/price.billing.cycle';\r\nimport { HttpError } from '../../../models/errors/HttpError';\r\nimport { Component, OnInit, ViewChild, OnDestroy } from '@angular/core';\r\nimport { AbstractControl, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport * as moment from 'moment';\r\nimport Swal from 'sweetalert2';\r\nimport { xToastr, ToastrTypes } from 'app/shared/Toastr';\r\n\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { NewMemberRequest } from 'app/models/ss-api/requests/new.member.request';\r\nimport { PublicOrderProductsResponseArray, PublicOrderProductsResponse } from 'app/models/ss-api/responses/public.order.products.response';\r\nimport { UpdateCartRequest } from 'app/models/ss-api/requests/update.cart.request';\r\n\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { CompleteOrderDialogComponent } from 'app/dialogs/complete-order/complete-order-dialog.component';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { NewMemberResponse } from '../../../models/ss-api/responses/new.member.response';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { CreditCardValidators } from 'angular-cc-library';\r\nimport { CheckForExistingMemberResponse } from 'app/models/ss-api/responses/check.for.existing.member.response';\r\n\r\nimport { CountryList, CountryListItem } from '../../../helpers/country.list';\r\nimport { StateList, StateListItem, DualStateZipcodeList } from '../../../helpers/state.list';\r\n\r\nimport { CreditCardHelper } from '../../../helpers/creditcard';\r\nimport { CreditCardTypes } from 'app/models/ss-api/responses/credit.card.response';\r\n\r\n\r\nfunction CustomCreditCardValidator(c: UntypedFormControl) {\r\n \r\n let cardType = CreditCardHelper.GetCardTypes( c.value );\r\n\r\n if( cardType == CreditCardTypes.Unknown || cardType == null ) {\r\n return {\r\n CustomCreditCardValidator: {\r\n valid: false\r\n }\r\n }\r\n } else {\r\n return null;\r\n }\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'app-order-form',\r\n templateUrl: './order-form-v2.component.html',\r\n styleUrls: ['./order-form-v2.component.scss'],\r\n providers: [DialogService]\r\n})\r\nexport class OrderFormComponentV2 implements OnInit, OnDestroy {\r\n\r\n // *********************************************************************************************************** //\r\n // orderFormVersion - Update this whenever a major change is made to form\r\n //\r\n // if updated, a corresponding order form component needs to be created and routed on the reports panel\r\n //\r\n //orderFormVersion ------- WE GET THIS FROM THE GLOBALS, IT IS IMPERATIVE THAT IT BE UPDATED!!! YOOOOUUUU HAAAAAVE BEEEEEN WAARRRRNEEDD!!!!\r\n // *********************************************************************************************************** //\r\n\r\n\r\n /* *******************************************\r\n order form link URLs:\r\n Vip3D Monthly -- https://members.structurestudios.com/order-form/product/0/1/1\r\n Vip3D Special -- https://members.structurestudios.com/order-form/product/VIP3D_-_Special1/1/1\r\n\r\n ******************************************** */\r\n IsBusy: boolean = true;\r\n\r\n isSpecial: boolean = false;\r\n isPromo: boolean = false;\r\n\r\n isCheckingMember : boolean = false;\r\n\r\n // products\r\n Products: PublicOrderProductsResponseArray;\r\n SelectedProduct: PublicOrderProductsResponse = new PublicOrderProductsResponse();\r\n SelectedBillingCycle: BillingRecurringTypes = BillingRecurringTypes.Monthly;\r\n SelectedPrice: number = 0;\r\n SelectedSetupFee: number = 0;\r\n ReferallInfo: any;\r\n\r\n yardAddOnOption: boolean = false;\r\n yardAddOn: boolean = false;\r\n yardPrice: number = 0;\r\n yardSetup: number = 0;\r\n // ID's FROM ROUTE PARAMTERS\r\n routeParams: object;\r\n marketTag: string;\r\n\r\n\r\n\ttrainingValue : string = \"2,375\";\r\n\r\n // Cart ID\r\n CartID: string;\r\n SkipUpdteCart: boolean = true; // for initial change detects like dropdowns\r\n LastUpdateCartRequest: UpdateCartRequest;\r\n\r\n // form\r\n OrderForm: UntypedFormGroup;\r\n\r\n orderFormSubmited: boolean = false;\r\n\r\n selectedCycle: number = 1;\r\n formProductClass: string;\r\n\r\n //Tax - Hard Code to TX\r\n /*\r\n TaxEnabled: boolean = true;\r\n TaxCalculated: boolean = true;\r\n State: string = \"TX\";\r\n TaxRateDisplay: string = \"8.25%\";\r\n TaxAmount: number = 14.25;\r\n TaxRate: number = 8.25;\r\n YardTax: number = 0;\r\n */\r\n \r\n //Tax - Emulate First Load\r\n /*\r\n TaxEnabled: boolean = true;\r\n TaxCalculated: boolean = false;\r\n State: string = \"\";\r\n TaxRateDisplay: string = \"\";\r\n TaxAmount: number = 0;\r\n YardTax: number = 0;\r\n */\r\n\r\n //Tax - Live\r\n TaxEnabled: boolean = false;\r\n TaxCalculated: boolean = false;\r\n State: string = \"\";\r\n TaxRateDisplay: string = \"\";\r\n TaxAmount: number = 0;\r\n YardTax: number = 0;\r\n TaxRate: number = 0;\r\n\r\n @ViewChild('orderForm') form;\r\n\r\n @ViewChild('billingCycleSelect') billingCycleSelect;\r\n @ViewChild('EmailField') EmailField;\r\n @ViewChild('ccNumber') ccNumber;\r\n\r\n @ViewChild('phoneNumber') phoneNumber;\r\n\r\n Year: number = new Date().getFullYear();\r\n YearRange: any[] = [];\r\n \r\n // CC Name Variables\r\n ccFirstName = '';\r\n ccLastName = '';\r\n ccardType: number;\r\n \r\n cardType : CreditCardTypes = CreditCardTypes.Unknown;\r\n\r\n ccardTypeClass : string;\r\n\r\n ExpirationChanged: boolean = false;\r\n\r\n // DATA SUBSCRIPTION VARIABLES\r\n paramsSubscribe: any;\r\n\r\n EdgeInterval;\r\n\r\n thisIsDev: boolean = false;\r\n\r\n\r\n countryList : CountryListItem[] = CountryList.Countries();\r\n stateList : StateListItem[] = StateList.States();\r\n\r\n\r\n constructor(public api: ssApiService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n // private sweetAlertService: SweetAlertService,\r\n private dialogService: DialogService,\r\n private gb: GlobalServices,\r\n private titleService: Title) {\r\n\r\n this.paramsSubscribe = this.route.params.subscribe(params => this.routeParams = params);\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.paramsSubscribe.unsubscribe();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n\r\n if (window.navigator.platform.includes('Mac')) {\r\n Swal.fire({\r\n // type: 'warning',\r\n // title: 'Mac Not Supported',\r\n text: 'Please note the software is not compatible with Mac',\r\n confirmButtonText: 'I understand',\r\n allowOutsideClick: false\r\n }).then( (confirm) => {\r\n\r\n }, (dismiss) => {\r\n window.history.back();\r\n });\r\n }\r\n\r\n // Set page title\r\n this.titleService.setTitle('Order Form');\r\n\r\n const usZipValidators = [\r\n Validators.required,\r\n Validators.minLength(5),\r\n ];\r\n\r\n // this.showCompleteOrderDialog();\r\n // initialize order form\r\n this.OrderForm = new UntypedFormGroup({\r\n firstName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.pattern('[a-zA-Z ]*')] ),\r\n lastName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.pattern('[a-zA-Z ]*')]),\r\n company: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.pattern('.*[a-zA-Z].*') ] ),\r\n\t\t\t//'phone': new FormControl('', [Validators.required, Validators.minLength(10), Validators.pattern('^[0-9 \\+\\-\\]+$')]),\r\n\t\t\tphone: new UntypedFormControl('', [Validators.required, Validators.minLength(14) ]),\r\n email: new UntypedFormControl('', [Validators.required, Validators.email]),\r\n // 'email1': new FormControl(\"\", [Validators.required, Validators.email]),\r\n password: new UntypedFormControl('', [Validators.required, Validators.minLength(5)]),\r\n password1: new UntypedFormControl('', [Validators.required, Validators.minLength(5)]),\r\n\r\n address1: new UntypedFormControl('', [Validators.required, Validators.minLength(5)]),\r\n city: new UntypedFormControl('', [Validators.required, Validators.minLength(3)]),\r\n state: new UntypedFormControl('NA', [Validators.required, Validators.minLength(2)]),\r\n statepicker: new UntypedFormControl('', [Validators.required]),\r\n\t\t\tzipCode: new UntypedFormControl('', usZipValidators),\r\n\t\t\tcountry: new UntypedFormControl('US', [Validators.required]),\r\n ccNameOnCard: new UntypedFormControl('', [Validators.required]),\r\n \r\n //ccNr: new FormControl('', [CreditCardValidator.validateCCNumber]), //creditCard: new FormControl('', [CreditCardValidator.validateCCNumber]),\r\n ccNr: new UntypedFormControl('', [CreditCardValidators.validateCCNumber, Validators.required, CustomCreditCardValidator]),\r\n\r\n ccExpMonth: new UntypedFormControl(this.ThisMonth(), [Validators.required]),\r\n ccExpYear: new UntypedFormControl(this.Year, [Validators.required]),\r\n ccCVC: new UntypedFormControl('', [Validators.required, Validators.minLength(3), Validators.maxLength(4), Validators.pattern('^[0-9]+$')]),\r\n yardAddOn: new UntypedFormControl(''),\r\n confirmInitials: new UntypedFormControl('', [Validators.required]),\r\n });\r\n\r\n\t\tthis.OrderForm.controls.country.valueChanges.subscribe( newCountry => {\r\n\t\t\tif ( newCountry == \"US\" ) {\r\n\t\t\t\tconsole.log(\"GO USA\");\r\n // this.OrderForm.get('state').setValue(\"NA\");\r\n // this.OrderForm.get('statepicker').setValue(\"\");\r\n\t\t\t\tthis.OrderForm.controls.zipCode.setValidators(usZipValidators);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log(\"GO \" + newCountry +\"?\");\r\n // this.OrderForm.get('state').setValue(\"\");\r\n // this.OrderForm.get('statepicker').setValue(\"NV\"); \r\n\t\t\t\tthis.OrderForm.controls.zipCode.setValidators([Validators.required, Validators.minLength(2), Validators.maxLength(10)]);\r\n\t\t\t}\r\n\t\t\tthis.OrderForm.updateValueAndValidity();\r\n\t\t});\r\n\r\n this.OrderForm.controls.zipCode.valueChanges.subscribe((value) => {\r\n if (!this.IsUS()) {\r\n return;\r\n }\r\n // remove spaces\r\n let trimmed = value.replace(/\\s+/g, '');\r\n\r\n trimmed = trimmed.replace(/[^\\d]/g, \"\");\r\n\r\n if (trimmed.length > 5) {\r\n trimmed = trimmed.substr(0, 5);\r\n }\r\n\r\n if (value !== trimmed) {\r\n this.OrderForm.controls.zipCode.setValue(trimmed);\r\n }\r\n });\r\n\r\n this.OrderForm.controls.phone.valueChanges.subscribe((value) => {\r\n if (value !== this.getPhoneInputValue(value)) {\r\n this.OrderForm.controls.phone.setValue(\r\n this.getPhoneInputValue(value)\r\n );\r\n }\r\n });\r\n\r\n // SET UP YEAR RANGE FOR CREDIT CARD EXPIRATION DATE FIELD\r\n for (let i: number = 0; i < 15; i++) {\r\n this.YearRange.push(this.Year + i);\r\n }\r\n\r\n // assign product from routed parameters and refresh the public product list\r\n this.refreshProducts();\r\n\r\n // create CardID if not exist\r\n this.GetCartID();\r\n\r\n // SHOW COMPLETE ORDER DIALOG TEST -- mike\r\n // this.showCompleteOrderDialog(\"UFOID\");\r\n this.thisIsDev = this.api.isDev;\r\n\r\n let disposable = this.OrderForm.controls.ccNr.valueChanges.subscribe( val => {\r\n \r\n console.log(val);\r\n //this.CheckCredtiCardType(val); \r\n\r\n });\r\n\r\n\r\n }\r\n\r\n \r\n\r\n CheckCredtiCardType( value : string ) {\r\n \r\n console.log(\"Credit Card Value : \" + value);\r\n let cardType : CreditCardTypes = CreditCardHelper.GetCardTypes( value );\r\n this.cardType = cardType;\r\n console.log(this.cardType);\r\n let newCardType : string = cardType.toString().toLowerCase();\r\n\r\n this.ccardTypeClass = newCardType;\r\n\r\n }\r\n\r\n\r\n ThisMonth() {\r\n const month = new Date().getMonth() + 1;\r\n\r\n if (month < 10) {\r\n return '0' + month;\r\n } else {\r\n return month;\r\n }\r\n }\r\n\r\n matchedFieldChanged() {\r\n this.OrderForm.controls['password'].updateValueAndValidity();\r\n this.OrderForm.controls['password1'].updateValueAndValidity();\r\n\r\n // this.OrderForm.controls[\"email\"].updateValueAndValidity();\r\n // this.OrderForm.controls[\"email1\"].updateValueAndValidity();\r\n }\r\n\r\n GetCartID() {\r\n\r\n this.CartID = localStorage.getItem('cartID');\r\n\r\n if (this.CartID != undefined) {\r\n // console.log(\"CartID exist:\", this.CartID);\r\n return;\r\n }\r\n\r\n // console.log(\"New CartID:\", this.CartID);\r\n this.CartID = this.generateUUID();\r\n localStorage.setItem('cartID', this.CartID);\r\n }\r\n\r\n generateUUID() {\r\n let d = new Date().getTime();\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\r\n d += performance.now();\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n let r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n }\r\n\r\n assignRouteParams(newParams: object) {\r\n // MAKE SURE NEWPARAMS IS DEFINED, IF NOT ASSIGN DEFAULT PRODUCT ID\r\n // console.log(newParams);\r\n if (this.isEmpty(newParams)) {\r\n this.SelectedProduct.ProductID = 0;\r\n // this.SelectedBillingCycle = 1;\r\n // console.log(\"newParams object was empty\");\r\n return;\r\n }\r\n\r\n // ASSIGN ACTIVATED ROUTE PARAMETERS\r\n let newProductID = Number(newParams['productID']);\r\n let newCycleID = Number(newParams['cycleID']);\r\n let newYardAddOn = Number(newParams['yardAddOn']);\r\n this.marketTag = String(newParams['marketTag']);\r\n // console.log(\"marketTag = \" + this.marketTag);\r\n // MAKE SURE NEW ID's FALLS INTO ACCEPTABLE RANGE\r\n if (newCycleID < 1)\r\n newCycleID = 1;\r\n\r\n\r\n\r\n // ASSIGN PRODUCT ID AND BILLING CYCLE ID\r\n this.SelectedProduct.ProductID = newProductID;\r\n this.SelectedBillingCycle = newCycleID;\r\n\r\n // console.log(\"newYardAddOn = \" + newYardAddOn + \" ProductID = \" + this.SelectedProduct.ProductID);\r\n\r\n if (newYardAddOn == 0 || this.SelectedProduct.ProductID != 0)\r\n this.yardAddOn = false;\r\n else\r\n this.yardAddOn = true;\r\n\r\n if (this.SelectedProduct.ProductID == 0)\r\n this.yardAddOnOption = true;\r\n\r\n // console.log(\"newCycleID\", newCycleID, \" Selected Billing Cycle = \", this.SelectedBillingCycle);\r\n\r\n // ASSIGN MONTHYL/YEARLY SELECTION\r\n if (this.SelectedBillingCycle == 2) {\r\n // this.billingCycleSelect.value = '2';\r\n let mySelect: any = document.getElementById('billingCycleSelect');\r\n mySelect.value = 2;\r\n }\r\n\r\n\r\n }\r\n\r\n refreshProducts() {\r\n\r\n this.IsBusy = true;\r\n let subScription = this.api.ProductsPublicAndSpecialOrderProducts()\r\n .subscribe((response) => {\r\n console.log(\"prodresponse\", response);\r\n subScription.unsubscribe();\r\n\r\n if (response.Result)\r\n this.Products = response.Data;\r\n else\r\n this.Products = new PublicOrderProductsResponseArray();\r\n\r\n let newProductName = 'VIP3D';\r\n\r\n if (this.routeParams['productID'] != undefined) {\r\n if (this.routeParams['productID'] == '0') {\r\n newProductName = 'VIP3D';\r\n } else if (this.routeParams['productID'] == '1') {\r\n newProductName = 'Pool Studio';\r\n } else if (this.routeParams['productID'] == '2') {\r\n newProductName = 'VizTerra';\r\n } else {\r\n newProductName = this.routeParams['productID'].replace(/_/g, ' ');\r\n if (newProductName.toLowerCase().includes('special'))\r\n this.isSpecial = true;\r\n else if (newProductName.toLowerCase().includes(\"promo\"))\r\n this.isPromo = true; \r\n }\r\n }\r\n\r\n this.assignRouteParams(this.routeParams);\r\n\t\t\t\t// this.personService.getPersons().find(x => x.id == this.personId);\r\n\t\t\t\t\r\n\t\t\t\tlet newProductID : number = -1;\r\n\r\n\t\t\t\tfor( var i = 0; i < response.Data.length; i++ ) {\r\n\t\t\t\t\tif( response.Data[i].Name == newProductName ) {\r\n\t\t\t\t\t\tnewProductID = response.Data[i].ProductID;\r\n this.TaxEnabled = response.Data[i].TaxEnabled;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t//let newProductID : number = response.Data.find(x => x.Name == newProductName).ProductID;\r\n\r\n\t\t\t\tif( newProductID == -1 ) {\r\n\t\t\t\t\t// No product Found\r\n console.log(\"NO PRODUCT!!!!\");\r\n console.log(\"t1\", newProductName);\r\n console.log(\"t2\", response.Data);\r\n\r\n\t\t\t\t\tthis.ShowProductNotFoundDialog();\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Found a valid Product\r\n\t\t\t\t\tthis.ProductChanged( newProductID );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t\tif( newProductName == 'VIP3D' ) {\r\n\t\t\t\t\tthis.trainingValue = '2,425';\r\n\t\t\t\t} else if ( newProductName == \"VizTerra\" ) {\r\n\t\t\t\t\tthis.trainingValue = '2,090';\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t// this.IsBusy = false;\r\n\t\t\t},\r\n\t\t\t(error: any) => {\r\n\t\t\t\tthis.IsBusy = false;\r\n\t\t});\r\n\r\n }\r\n\r\n makePriceLookNice(thePrice: any): string {\r\n return thePrice.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n }\r\n\r\n totalPrice(): number {\r\n let newTotal = this.SelectedPrice + this.SelectedSetupFee;\r\n if (this.yardAddOn)\r\n newTotal += this.yardPrice;\r\n return newTotal;\r\n }\r\n\r\n totalTaxDisplay(): string {\r\n let newTax = this.TaxAmount;\r\n if (this.yardAddOn)\r\n newTax += this.YardTax;\r\n\r\n if (newTax == 0 || (newTax * 100).toString().endsWith(\"00\")){\r\n return newTax.toString();\r\n }\r\n else{\r\n return(Math.round( newTax * 100) / 100).toFixed(2);\r\n } \r\n }\r\n\r\n totalTax(): number {\r\n let newTax = this.TaxAmount;\r\n if (this.yardAddOn)\r\n newTax += this.YardTax;\r\n return newTax; \r\n } \r\n\r\n totalPriceWithTax(): string {\r\n let newTotalWithTax = this.SelectedPrice + this.SelectedSetupFee + this.totalTax();\r\n if (this.yardAddOn)\r\n newTotalWithTax += this.yardPrice;\r\n\r\n if ((newTotalWithTax * 100).toString().endsWith(\"00\")){\r\n return newTotalWithTax.toString();\r\n }\r\n else{\r\n return(Math.round( newTotalWithTax * 100) / 100).toFixed(2);\r\n }\r\n }\r\n\r\n\r\n isEmpty(obj): boolean {\r\n for (let key in obj) {\r\n if (obj.hasOwnProperty(key))\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n isValidExpiration() {\r\n let ccExpMonth = this.OrderForm.get('ccExpMonth').value;\r\n let ccExpYear = this.OrderForm.get('ccExpYear').value;\r\n\r\n if (moment(ccExpMonth + '/' + ccExpYear, 'MM/YYYY').isSameOrAfter(moment(moment().format('MM/YYYY'), 'MM/YYYY'))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n onExpirationChange() {\r\n this.ExpirationChanged = true;\r\n this.UpdateCart();\r\n }\r\n\r\n isFormValid(): boolean {\r\n // isCompareValid( passwordRepeat.value, password.value ) == true && isCompareValid( email.value, email1.value ) == true && email.value != '' && password.value != ''\r\n let ccNameOnCard = this.OrderForm.get('ccNameOnCard').value;\r\n this.getNameOnCard(ccNameOnCard);\r\n let ccExpMonth = this.OrderForm.get('ccExpMonth').value;\r\n let ccExpYear = this.OrderForm.get('ccExpYear').value;\r\n\r\n if (this.ccLastName == '')\r\n return false;\r\n\r\n if (!this.OrderForm.valid)\r\n return false;\r\n\r\n if (!this.isValidExpiration())\r\n return false;\r\n\r\n if (this.orderFormSubmited)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n hasLastName(): boolean {\r\n\r\n let ccNameOnCard = this.OrderForm.get('ccNameOnCard').value;\r\n this.getNameOnCard(ccNameOnCard);\r\n if (this.ccLastName == '')\r\n return false;\r\n\r\n return true;\r\n\r\n }\r\n\r\n \r\n\r\n CheckMember() {\r\n\r\n if( this.isCheckingMember ) return;\r\n\r\n if ( !this.OrderForm.controls['email'].valid ) return;\r\n \r\n this.isCheckingMember = true;\r\n \r\n let email = this.OrderForm.controls['email'].value;\r\n \r\n let request: CheckForExistingMemberRequest = {\r\n Checksum: 'ADSFEWFF~!OMG1ITS5SNOWING3INVEGAS42!!!AND6ALL4FROZEN7DRINKS3ARE22HALF00OFF43IN65THE998CASINO',\r\n Email: email\r\n };\r\n\r\n\r\n let disposable = this.api.CheckForExistingMember(request).subscribe(response => {\r\n \r\n disposable.unsubscribe();\r\n\r\n this.isCheckingMember = false;\r\n\r\n let existingMemberResponse : CheckForExistingMemberResponse = response.Data;\r\n\r\n console.log('existingmemberresponse = ', existingMemberResponse );\r\n\r\n if (existingMemberResponse.PromptToLoginOnOrderForm) {\r\n \r\n localStorage.setItem('email', email);\r\n\r\n \r\n switch (existingMemberResponse.MemberType) {\r\n case 100:\r\n case 110: {\r\n // Active Member && Cancelled Member\r\n this.ShowLoginDialog();\r\n break;\r\n }\r\n case 200:\r\n case 210: {\r\n // Cancelled Designer && Active Designer\r\n Swal.fire({\r\n icon: 'warning',\r\n title: 'Warning',\r\n text: 'It looks like you already have a designer profile registered to this email address. Please use a different email address.'\r\n }).then(() => {\r\n // this.router.navigate(['/'])\r\n this.OrderForm.controls['email'].setValue('');\r\n this.EmailField.nativeElement.focus();\r\n }, () => {\r\n // this.router.navigate(['/'])\r\n this.OrderForm.controls['email'].setValue('');\r\n this.EmailField.nativeElement.focus();\r\n });\r\n break;\r\n }\r\n }\r\n } else if ( existingMemberResponse.PromptToFinishOrder && existingMemberResponse.UFOID) {\r\n this.dialogService.open(CompleteOrderDialogComponent, {data: {\r\n UFOID: existingMemberResponse.UFOID,\r\n fromLogin : false,\r\n }});\r\n this.OrderForm.controls['email'].setValue('');\r\n this.EmailField.nativeElement.focus();\r\n }\r\n \r\n });\r\n }\r\n\r\n ShowLoginDialog() {\r\n this.dialogService.open(LoginDialogComponent, {data: {\r\n IsWelcomeBack: true,\r\n ProductID: this.SelectedProduct.ProductID,\r\n BillingCycle: this.SelectedBillingCycle,\r\n HasYard: this.yardAddOn\r\n }});\r\n this.OrderForm.controls['email'].setValue('');\r\n this.EmailField.nativeElement.focus();\r\n }\r\n\r\n BillingCycleChanged(billingCycleType: BillingRecurringTypes) {\r\n\r\n // set billing\r\n this.SelectedBillingCycle = billingCycleType;\r\n\r\n // set type based on new billing\r\n this.SelectedPrice = this.SelectedProduct\r\n .Prices\r\n .find(x => x.BillingCycle == billingCycleType)\r\n .Price;\r\n\r\n this.SelectedSetupFee = this.SelectedProduct\r\n .Prices\r\n .find(x => x.BillingCycle == billingCycleType)\r\n .Setup;\r\n\r\n if (this.yardAddOn && this.SelectedProduct.YardAddon != null) {\r\n this.yardPrice = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Price;\r\n this.yardSetup = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Setup;\r\n this.YardTax = this.yardPrice * (this.TaxRate / 100);\r\n this.YardTax = this.YardTax * 100;\r\n this.YardTax = Math.round(this.YardTax);\r\n this.YardTax = this.YardTax / 100;\r\n } else {\r\n this.yardPrice = 0;\r\n this.yardSetup = 0;\r\n this.YardTax = 0;\r\n }\r\n this.UpdatePageTitle();\r\n if (!this.SkipUpdteCart)\r\n this.UpdateCart();\r\n }\r\n\r\n ProductChanged(productID: number) {\r\n\r\n // set product\r\n this.SelectedProduct = this.Products.find(x => x.ProductID == productID);\r\n this.SelectedSetupFee = this.SelectedProduct.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Setup;\r\n\r\n if (this.yardAddOn && this.SelectedProduct.YardAddon != null) {\r\n this.yardPrice = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Price;\r\n this.yardSetup = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Setup;\r\n } else {\r\n this.yardPrice = 0;\r\n this.yardSetup = 0;\r\n }\r\n\r\n\r\n // set price based on new product\r\n this.BillingCycleChanged(this.SelectedBillingCycle);\r\n\r\n // console.log(\"Prodcut Name:\", this.SelectedProduct.Name);\r\n // console.log(\"Setup Fee:\", this.SelectedSetupFee);\r\n\r\n this.formProductClass = this.SelectedProduct.Name.replace(/\\s+/g, '');\r\n\r\n this.titleService.setTitle('Order Form | ' + this.SelectedProduct.Name);\r\n this.UpdatePageTitle();\r\n\r\n if (!this.SkipUpdteCart)\r\n this.UpdateCart();\r\n\r\n }\r\n\r\n UpdatePageTitle() {\r\n let cycleName = 'Monthly';\r\n if (this.SelectedBillingCycle == 2) {\r\n cycleName = 'Yearly';\r\n }\r\n //console.log(this.SelectedBillingCycle);\r\n this.titleService.setTitle(this.SelectedProduct.Name + ' Order Form - Review Your ' + cycleName + ' Membership Plan');\r\n }\r\n\r\n checkEmailValid(): boolean {\r\n\r\n let Email = this.OrderForm.get('email');\r\n // let Email1 = this.OrderForm.get('email1');\r\n\r\n // if (!Email.touched || !Email.touched)\r\n // return false;\r\n\r\n // if (!Email.valid || !Email1.valid)\r\n // return false;\r\n\r\n // if (Email.value != Email1.value)\r\n // return false;\r\n\r\n return true;\r\n }\r\n\r\n isCompareValid(myField: string, compareField: string): boolean {\r\n return myField == compareField;\r\n }\r\n\r\n checkPasswordValid(): boolean {\r\n\r\n let Email = this.OrderForm.get('password');\r\n let Email1 = this.OrderForm.get('password1');\r\n\r\n if (!Email.touched || !Email.touched)\r\n return false;\r\n\r\n if (!Email.valid || !Email1.valid)\r\n return false;\r\n\r\n if (Email.value != Email1.value)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n isFieldValid(fieldName: string): boolean {\r\n\r\n if (this.OrderForm.get(fieldName).value != '')\r\n return true;\r\n else\r\n return false;\r\n\r\n }\r\n\r\n StripNonNumeric(strValue: string): number {\r\n\r\n let value = strValue.replace(/[^\\d]/g, ''); // 1238\r\n\r\n if (value == '')\r\n return 0;\r\n else\r\n return value;\r\n\r\n }\r\n\r\n\r\n GetNewMemberRequest(): NewMemberRequest {\r\n\r\n\r\n\r\n // credit card names\r\n let ccNameOnCard = this.OrderForm.get('ccNameOnCard').value;\r\n this.getNameOnCard(ccNameOnCard);\r\n\r\n // credit card expiration month\r\n let ccExpMonth = this.OrderForm.get('ccExpMonth');\r\n if (ccExpMonth == undefined)\r\n throw RangeError('Credit Card Expiration Month Value Error');\r\n\r\n // credit card expiration year\r\n let ccExpYear = this.OrderForm.get('ccExpYear');\r\n if (ccExpYear == undefined)\r\n throw RangeError('Credit Card Expiration Year Value Error');\r\n\r\n // check email\r\n if (!this.checkEmailValid())\r\n throw Error('Invalid Email.');\r\n\r\n // check password\r\n if (!this.checkPasswordValid())\r\n throw Error('Invalid Password.');\r\n\r\n\r\n // prepare object to return\r\n let data = new NewMemberRequest();\r\n data.Checksum = \"33022hTllpOOO99#$%^ABlpse634!!dss66kfpEFes46^^sdd2\";\r\n data.OrderFormVersion = this.gb.OrderFormVersion;\r\n\r\n // - personal\r\n data.FirstName = this.OrderForm.get('firstName').value;\r\n data.LastName = this.OrderForm.get('lastName').value;\r\n data.Email = this.OrderForm.get('email').value;\r\n data.Company = this.OrderForm.get('company').value;\r\n data.Phone = this.OrderForm.get('phone').value.replace(/[^\\d]/g, \"\");\r\n data.Password = this.OrderForm.get('password').value;\r\n\r\n // - address\r\n data.Address1 = this.OrderForm.get('address1').value;\r\n data.City = this.OrderForm.get('city').value;\r\n data.Country = this.OrderForm.get('country').value;\r\n\r\n if (data.Country == \"US\"){\r\n data.State = this.OrderForm.get('statepicker').value;\r\n }\r\n else{\r\n data.State = this.OrderForm.get('state').value;\r\n }\r\n\r\n data.ZipCode = this.OrderForm.get('zipCode').value;\r\n\r\n // - credit card\r\n data.CC_FirstName = this.ccFirstName;\r\n data.CC_LastName = this.ccLastName;\r\n\r\n\r\n data.CC_Number = this.OrderForm.get('ccNr').value;\r\n\r\n this.CheckCredtiCardType(data.CC_Number);\r\n\r\n if(this.cardType == CreditCardTypes.Unknown) {\r\n throw Error('Unknown Credit Card Type');\r\n }\r\n \r\n data.CC_Number = this.StripNonNumeric(data.CC_Number).toString();\r\n\r\n if (data.CC_Number == '' ||\r\n data.CC_Number.length < 13)\r\n throw Error('Invalid Credit Card Number.');\r\n\r\n\r\n\r\n data.CC_ExpMonth = ccExpMonth.value;\r\n data.CC_ExpYear = ccExpYear.value - 2000;\r\n data.CC_CVC = this.OrderForm.get('ccCVC').value;\r\n data.CC_Address1 = data.Address1;\r\n data.CC_City = data.City;\r\n data.CC_Country = data.Country;\r\n data.CC_State = data.State;\r\n data.CC_ZipCode = data.ZipCode;\r\n\r\n // - product\r\n data.ProductID = this.SelectedProduct.ProductID;\r\n data.BillingCycle = this.SelectedBillingCycle;\r\n data.AddYard = this.yardAddOn;\r\n\r\n\r\n\r\n // - initals\r\n data.Initials = this.OrderForm.get('confirmInitials').value;\r\n\r\n // - redirect/referral\r\n let strRedirectID = localStorage.getItem('s_redirect_id');\r\n let RedirectCreated = localStorage.getItem('s_redirect_created');\r\n let RedirectID = 0;\r\n\r\n if (strRedirectID != undefined)\r\n RedirectID = parseInt(strRedirectID);\r\n\r\n if (RedirectID > 0) {\r\n data.RedirectID = RedirectID;\r\n data.DateTimeRedirectClick = new Date(RedirectCreated);\r\n }\r\n\r\n data.AssignToOwner = false;\r\n\r\n // console.log(\"Request Data: \", data);\r\n return data;\r\n }\r\n\r\n GetUpdateCartRequest(): UpdateCartRequest {\r\n\r\n // prepare object to return\r\n let data = new UpdateCartRequest();\r\n\r\n // cart\r\n data.CartID = this.CartID;\r\n\r\n // - personal\r\n data.FirstName = this.OrderForm.get('firstName').value;\r\n data.LastName = this.OrderForm.get('lastName').value;\r\n data.Email1 = this.OrderForm.get('email').value;\r\n // data.Email2 = this.OrderForm.get('email1').value;\r\n data.Company = this.OrderForm.get('company').value;\r\n data.Phone = this.gb.FormattedPhone(this.OrderForm.get('phone').value);\r\n\r\n // - address\r\n data.Address = this.OrderForm.get('address1').value;\r\n data.City = this.OrderForm.get('city').value;\r\n\t\tdata.Country = this.OrderForm.get('country').value;\r\n\r\n if (data.Country == \"US\"){\r\n data.State = this.OrderForm.get('statepicker').value;\r\n }\r\n else{\r\n data.State = this.OrderForm.get('state').value;\r\n }\r\n\t\t\r\n\t\tdata.ZipCode = this.OrderForm.get('zipCode').value;\r\n\t\t\r\n\r\n // - credit card\r\n data.CCName = this.OrderForm.get('ccNameOnCard').value;\r\n data.CCNumber = this.OrderForm.get('ccNr').value;\r\n data.CCLastFour = data.CCNumber.slice(data.CCNumber.length - 4);\r\n data.CCExpMonth = Number(this.OrderForm.get('ccExpMonth').value);\r\n data.CCExpYear = Number(this.OrderForm.get('ccExpYear').value) - 2000;\r\n\r\n // - product\r\n data.ProductID = this.SelectedProduct.ProductID;\r\n data.BillingCycle = this.SelectedBillingCycle;\r\n\r\n // - Initals\r\n data.Initials = this.OrderForm.get('confirmInitials').value;\r\n\r\n //taxes\r\n data.TaxChecksum = \"s53f4s56dfa4fs6ljsdhfasdlfAFDASKHflash5646asdf\";\r\n data.SubTotal = this.totalPrice(); \r\n\r\n // - redirect/referral\r\n let strRedirectID = localStorage.getItem('s_redirect_id');\r\n let RedirectCreated = localStorage.getItem('s_redirect_created');\r\n let RedirectID = 0;\r\n\r\n if (strRedirectID != undefined)\r\n RedirectID = parseInt(strRedirectID);\r\n\r\n if (RedirectID > 0) {\r\n data.RedirectID = RedirectID;\r\n data.DateTimeRedirectClicked = new Date(RedirectCreated);\r\n }\r\n\r\n console.log(\"Request Cart Update Data: \", data);\r\n return data;\r\n }\r\n\r\n getNameOnCard(nameString: string) {\r\n\r\n this.ccFirstName = '';\r\n this.ccLastName = '';\r\n\r\n let namesSplit = nameString.split(' ');\r\n\r\n if (namesSplit.length == 0)\r\n return;\r\n\r\n let firstName = namesSplit[0];\r\n\r\n let lastName = '';\r\n\r\n if (namesSplit.length > 1) {\r\n for (let i = 1; i < namesSplit.length; i++) {\r\n if (i != 1)\r\n lastName += ' ';\r\n\r\n lastName += namesSplit[i];\r\n }\r\n }\r\n\r\n this.ccFirstName = firstName;\r\n this.ccLastName = lastName;\r\n\r\n }\r\n\r\n\r\n\r\n async onOrderFormSubmit() {\r\n\r\n // Check to see if our order form has been submitted and cancel the submit action\r\n if (this.orderFormSubmited) return;\r\n\r\n this.orderFormSubmited = true;\r\n\r\n this.IsBusy = true;\r\n // get data\r\n let data: NewMemberRequest;\r\n\r\n try {\r\n data = this.GetNewMemberRequest();\r\n } catch (e) {\r\n // console.log(\"error:\", e);\r\n xToastr.ShowToast(ToastrTypes.Error, 'Validation Errors', e);\r\n this.IsBusy = false;\r\n return;\r\n }\r\n\r\n console.log(\"request data\", data);\r\n \r\n //if( 0 == 0 ) return;\r\n \r\n let request = this.api.MemberNew(data)\r\n .subscribe(response => {\r\n // console.log(\"response received\");\r\n // console.log(response)\r\n\r\n\r\n if (!response.Result)\r\n switch (response.ErrCode) {\r\n case '0':\r\n // user exists\r\n // console.log(\"Error response\");\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'This user already exists.');\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '1':\r\n // Error Creating Member\r\n // console.log(\"Error response\");\r\n xToastr.ShowToast(ToastrTypes.Error, 'Unkown Error', 'New user could not be created.');\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '2':\r\n // payment\r\n // unfinished order\r\n this.showCompleteOrderDialog(response.Message);\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '3':\r\n // member exists but we couldn't authenticate or something else went wrong\r\n localStorage.setItem('WelcomeBack', '1');\r\n this.router.navigate(['/authentication/signin/welcome-back']);\r\n return;\r\n\r\n case '17':\r\n let options = {\r\n closeButton: true,\r\n progressBar: true,\r\n debug: true,\r\n preventDuplicates: true,\r\n positionClass: 'toast-top-center',\r\n onclick: null,\r\n showDuration: 400,\r\n hideDuration: 1000,\r\n timeOut: 30000,\r\n extendedTimeOut: 1000,\r\n showEasing: 'swing',\r\n hideEasing: 'linear',\r\n showMethod: 'fadeIn',\r\n hideMethod: 'fadeOut'\r\n };\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'This email is linked to a cancelled membership. Please provide a new email address to create a new membership. If you would like to reactivate, contact your account owner or call us at 702-433-0274.', options);\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '19':\r\n case '20':\r\n // user exists\r\n // console.log(\"Error response\");\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'A member already exists with this email. Please log in or use a different email address.');\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n default:\r\n // user exists\r\n // console.log(\"Error response\");\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'Error processing request. Your Card has been declined.');\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n }\r\n\r\n\r\n\r\n // ok\r\n\r\n // window.location.href = \"https://www.structurestudios.com/thank-you\";\r\n // console.log(response);\r\n // console.log(response.Data);\r\n\r\n // we are authenticated\r\n let Response: NewMemberResponse = response.Data;\r\n\r\n if (Response.Reactivated && Response.ReturningMember) {\r\n // we were able to reactivate this member\r\n // redirect to welcome back page or dashboard\r\n // we are authenticated\r\n this.gb.SetGlobalsFromLoginResponse(Response.LoginResponse);\r\n // HERE MIKE\r\n localStorage.setItem('WelcomeBack', '1');\r\n this.router.navigate(['account/product-memberships']);\r\n return;\r\n } else if (!Response.Reactivated && Response.ReturningMember) {\r\n // we are a returning member and we couldn't reactivate.\r\n // redirect to welcome back or tell the member that the email already exists\r\n // HERE MIKE\r\n localStorage.setItem('WelcomeBack', '1');\r\n this.router.navigate(['/authentication/signin/welcome-back']);\r\n return;\r\n } else {\r\n // we are a new member\r\n this.gb.SetGlobalsFromLoginResponse(Response.LoginResponse);\r\n window.location.href = this.getRedirectURL();\r\n\r\n }\r\n\r\n\r\n\r\n\r\n },\r\n\r\n (error: HttpError) => {\r\n\r\n // this.ResetSigninFormSubmitRequest(request);\r\n this.orderFormSubmited = false;\r\n this.IsBusy = false;\r\n xToastr.ShowToast(ToastrTypes.Error, error.FriendlyTitle, error.FriendlyMessage);\r\n\r\n }\r\n );\r\n\r\n }\r\n\r\n logoLoaded() {\r\n // console.log(\"IsBusy on the logoLoaded method = \" + this.IsBusy);\r\n this.IsBusy = false;\r\n }\r\n\r\n UpdateCart() {\r\n if( this.isCheckingMember ) return;\r\n\r\n this.SkipUpdteCart = false;\r\n\r\n let data = this.GetUpdateCartRequest();\r\n\r\n if (!this.CheckUpdateCart(data))\r\n return;\r\n\r\n this.LastUpdateCartRequest = data;\r\n\r\n let subscription = this.api.SalesUpdateCart(data)\r\n .subscribe( \r\n (result) => { \r\n console.log(\"datarec\");\r\n console.log(result.Data);\r\n console.log(\"dataend\");\r\n this.TaxAmount = result.Data.TaxAmount;\r\n this.TaxEnabled = result.Data.TaxEnabled;\r\n this.TaxRateDisplay = result.Data.TaxRateDisplay;\r\n this.TaxAmount = result.Data.TaxAmount;\r\n this.TaxCalculated = result.Data.TaxCalculated;\r\n if (this.IsUS()) {\r\n if (this.TaxCalculated) {\r\n this.OrderForm.controls.zipCode.setErrors(null);\r\n } else {\r\n this.OrderForm.controls.zipCode.setErrors({\r\n invalid: true\r\n });\r\n } \r\n }\r\n this.OrderForm.updateValueAndValidity();\r\n this.TaxRate = result.Data.TaxRate;\r\n subscription.unsubscribe();\r\n this.updateState(result.Data.State);\r\n },\r\n (error) => { \r\n subscription.unsubscribe();\r\n }\r\n );\r\n\r\n }\r\n\r\n updateState(state) {\r\n const curState = this.orderFormControls.statepicker.value || this.orderFormControls.state.value;\r\n const curZipCode = this.orderFormControls.zipCode.value;\r\n const dualStates = DualStateZipcodeList[curZipCode] || [];\r\n if (!dualStates.includes(curState)) {\r\n this.State = state;\r\n this.OrderForm.get('statepicker').setValue(this.State);\r\n this.OrderForm.get('state').setValue(this.State);\r\n this.OrderForm.updateValueAndValidity();\r\n }\r\n }\r\n\r\n CheckUpdateCart(newCartData: UpdateCartRequest): boolean {\r\n\r\n if (this.LastUpdateCartRequest == undefined)\r\n return true;\r\n\r\n if (newCartData.ProductID != this.LastUpdateCartRequest.ProductID)\r\n return true;\r\n\r\n if (newCartData.BillingCycle != this.LastUpdateCartRequest.BillingCycle)\r\n return true;\r\n\r\n if (newCartData.FirstName != this.LastUpdateCartRequest.FirstName)\r\n return true;\r\n\r\n if (newCartData.LastName != this.LastUpdateCartRequest.LastName)\r\n return true;\r\n\r\n if (newCartData.Initials != this.LastUpdateCartRequest.Initials)\r\n return true;\r\n\r\n if (newCartData.Address != this.LastUpdateCartRequest.Address)\r\n return true;\r\n\r\n if (newCartData.City != this.LastUpdateCartRequest.City)\r\n return true;\r\n\r\n if (newCartData.ZipCode != this.LastUpdateCartRequest.ZipCode)\r\n return true;\r\n\r\n if (newCartData.State != this.LastUpdateCartRequest.State)\r\n return true;\r\n\r\n if (newCartData.Country != this.LastUpdateCartRequest.Country)\r\n return true;\r\n\r\n if (newCartData.CCName != this.LastUpdateCartRequest.CCName)\r\n return true;\r\n\r\n if (newCartData.Company != this.LastUpdateCartRequest.Company)\r\n return true;\r\n\r\n // if (newCartData.Email1 != this.LastUpdateCartRequest.Email1)\r\n // return true;\r\n\r\n if (newCartData.Email2 != this.LastUpdateCartRequest.Email2)\r\n return true;\r\n\r\n if (newCartData.Phone != this.LastUpdateCartRequest.Phone)\r\n return true;\r\n\r\n if (newCartData.CCExpMonth != this.LastUpdateCartRequest.CCExpMonth)\r\n return true;\r\n\r\n if (newCartData.CCExpYear != this.LastUpdateCartRequest.CCExpYear)\r\n return true;\r\n\r\n if (newCartData.CCNumber != this.LastUpdateCartRequest.CCNumber)\r\n return true;\r\n\r\n if (newCartData.CCLastFour != this.LastUpdateCartRequest.CCLastFour)\r\n return true;\r\n\r\n }\r\n\r\n // ///////////////////////////////////////\r\n // SHOW COMPLETE ORDER FORM DIALOG\r\n // ///////////////////////////////////////\r\n showCompleteOrderDialog(ufoid: string) {\r\n\r\n // this.IsBusy = true;\r\n\r\n this.dialogService.open(CompleteOrderDialogComponent, {data: {\r\n UFOID : ufoid,\r\n fromLogin : false,\r\n }});\r\n\r\n\r\n }\r\n\r\n\r\n getRedirectURL(): string {\r\n let membershipName = this.SelectedProduct.Name.toString().toLowerCase();\r\n membershipName = membershipName.replace(/\\s+/g, '');\r\n let billingCycle = 'monthly';\r\n\r\n // console.log(\"this.selectedCycle: \" + this.SelectedBillingCycle)\r\n\r\n if (this.SelectedBillingCycle == 2)\r\n billingCycle = 'yearly';\r\n\r\n return 'order-form/thank-you/' + membershipName + '-' + billingCycle;\r\n }\r\n\r\n GotoThankYouPage() {\r\n window.location.href = this.getRedirectURL();\r\n // console.log(\"Thank You URL: \", this.getRedirectURL() );\r\n }\r\n\r\n yardAddOnCheckChanged(e: any) {\r\n // console.log(\"yardAddOn now = \" + this.yardAddOn);\r\n // console.log(e.target.checked);\r\n\r\n this.yardAddOn = e.target.checked;\r\n this.BillingCycleChanged(this.SelectedBillingCycle);\r\n\r\n }\r\n\r\n isVipName(Name: string): boolean {\r\n if (Name != undefined)\r\n return Name.toLowerCase().includes('vip3d');\r\n else\r\n return false;\r\n }\r\n\r\n isVizterraName(Name: string): boolean {\r\n if (Name != undefined)\r\n return Name.toLowerCase().includes('vizterra');\r\n else\r\n return false;\r\n }\r\n\r\n isPoolStudioName(Name: string): boolean {\r\n if (Name != undefined)\r\n return Name.toLowerCase().includes('pool studio');\r\n else\r\n return false;\r\n\t} \r\n\t\r\n\r\n\r\n\tShowProductNotFoundDialog() {\r\n\r\n\t\tvar pricingURL : string = \"https://www.structurestudios.com/landscape-design-software-and-pool-design-software-pricing\";\r\n\r\n\t\tSwal.fire({\r\n\t\t\ticon: 'error',\r\n\t\t\ttitle: 'We\\'re Sorry',\r\n\t\t\ttext: 'The promotion is no longer available',\r\n\t\t\tshowCloseButton: true,\r\n confirmButtonText: 'View our products',\r\n allowOutsideClick: false,\r\n\t\t}).then(() => {\r\n\t\t\t// this.router.navigate(['/'])\r\n\t\t\twindow.open( pricingURL, '_self');\r\n\t\t}, () => {\r\n\t\t\t// this.router.navigate(['/'])\r\n\t\t\twindow.open( pricingURL, '_self');\r\n\t\t});\r\n\r\n\t}\r\n\r\n IsUS() : boolean {\r\n\t\treturn this.OrderForm.controls.country.value == 'US' ? true : false;\r\n\t}\r\n\r\n public getPhoneInputValue( v : string ) : string {\r\n\t\t\r\n\r\n\t\t// trim '-' dashes\r\n\t\tv = v.replace(/-/g,'');\r\n\r\n\t\tv = v.replace(/[^\\d]/g, \"\");\r\n\t\t\r\n\t\t// trim string to 15 characters\r\n\t\tif( v.length > 10) {\r\n\t\t\tif (v.length > 15) {\r\n\t\t\t\tv = v.substr(0, 15);\r\n\t\t\t}\r\n\t\t\treturn ' +' + v;\r\n\t\t}\r\n\t\t\r\n\r\n // new array to hold sections of the License Key\r\n\t\tlet numbers = [];\r\n\r\n\t\t// create set of characters from first 5 characters\r\n\t\tnumbers.push(v.substr(0,3));\r\n\t\t\r\n\t\t// try for next 5\r\n\t\tif(v.substr(3,3)!==\"\")\r\n\t\t\tnumbers.push(v.substr(3,3));\r\n\t\t\r\n\t\t// and last set of 5\r\n\t\tif(v.substr(6,10)!=\"\")\r\n\t\t\tnumbers.push(v.substr(6,4));\r\n\t\t\r\n\t\tif(v.substr(10,15)!=\"\")\r\n\t\t\tnumbers.push(v.substr(10,5));\r\n\r\n\t\t// add '-' dashes back to formated string\r\n\t\tlet newValue = numbers[0];\r\n\t\t\r\n\t\t//if( newValue.length == 3 ) {\r\n\t\t\t\r\n\t\t//}\r\n\r\n\t\tif( numbers.length > 1 ) {\r\n\t\t\tnewValue = '(' + newValue + ') ';\r\n\t\t\tnewValue += numbers[1];\r\n\t\t}\r\n\t\t\t\r\n\r\n\t\tif (numbers.length > 2 )\r\n\t\t\tnewValue += '-' + numbers[2];\r\n\r\n\t\t// if (numbers.length > 3 )\r\n\t\t// \tnewValue += '-' + numbers[3];\r\n\r\n\t\treturn newValue;\r\n\t}\r\n\r\n get orderFormControls() { return this.OrderForm.controls; }\r\n\r\n // Start Google Place API\r\n getAddress(place: object) {\r\n // this.address = place['formatted_address'];\r\n // this.phone = this.getPhone(place);\r\n // this.formattedAddress = place['formatted_address'];\r\n // this.zone.run(() => this.formattedAddress = place['formatted_address']);\r\n const street = this.getStreet(place);\r\n const district = this.getDistrict(place);\r\n const city = this.getCity(place);\r\n const state = this.getStateShort(place);\r\n const postCode = this.getPostCode(place);\r\n const country = this.getCountryShort(place);\r\n // this.orderFormControls.street.patchValue(street);\r\n this.orderFormControls.address1.patchValue(street);\r\n this.orderFormControls.city.patchValue(city);\r\n this.orderFormControls.state.patchValue(state);\r\n this.orderFormControls.statepicker.patchValue(state);\r\n this.orderFormControls.zipCode.patchValue(postCode);\r\n this.orderFormControls.country.patchValue(country);\r\n setTimeout(() => {\r\n this.UpdateCart(); \r\n });\r\n }\r\n\r\n getAddrComponent(place, componentTemplate) {\r\n let result;\r\n\r\n for (let i = 0; i < place.address_components.length; i++) {\r\n const addressType = place.address_components[i].types[0];\r\n if (componentTemplate[addressType]) {\r\n result = place.address_components[i][componentTemplate[addressType]];\r\n return result;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n getStreetNumber(place) {\r\n const COMPONENT_TEMPLATE = { street_number: 'short_name' },\r\n streetNumber = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return streetNumber;\r\n }\r\n\r\n getStreet(place) {\r\n const COMPONENT_TEMPLATE = { street_number: 'long_name' },\r\n streetNumber = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n const COMPONENT_TEMPLATE1 = { route: 'long_name' },\r\n route = this.getAddrComponent(place, COMPONENT_TEMPLATE1);\r\n const street = streetNumber ? (streetNumber + ' ' + route) : route;\r\n return street || place['formatted_address'];\r\n }\r\n\r\n getCity(place) {\r\n const COMPONENT_TEMPLATE = { locality: 'long_name' },\r\n city = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return city || '';\r\n }\r\n\r\n getState(place) {\r\n const COMPONENT_TEMPLATE = { administrative_area_level_1: 'long_name' },\r\n state = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return state || '';\r\n }\r\n\r\n getStateShort(place) {\r\n const COMPONENT_TEMPLATE = { administrative_area_level_1: 'short_name' },\r\n stateShort = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return stateShort || '';\r\n }\r\n\r\n getDistrict(place) {\r\n const COMPONENT_TEMPLATE = { administrative_area_level_2: 'short_name' },\r\n state = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return state || '';\r\n }\r\n\r\n getCountryShort(place) {\r\n const COMPONENT_TEMPLATE = { country: 'short_name' },\r\n countryShort = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return countryShort || '';\r\n }\r\n\r\n getCountry(place) {\r\n const COMPONENT_TEMPLATE = { country: 'long_name' },\r\n country = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return country || '';\r\n }\r\n\r\n getPostCode(place) {\r\n const COMPONENT_TEMPLATE = { postal_code: 'long_name' },\r\n postCode = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return postCode || '';\r\n }\r\n\r\n getPhone(place) {\r\n const COMPONENT_TEMPLATE = { formatted_phone_number: 'formatted_phone_number' },\r\n phone = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return phone || '';\r\n }\r\n // End Google Place API\r\n}\r\n","import { LoginDialogComponent } from './../../../dialogs/auth-login/auth-login-dialog.component';\r\nimport { CheckForExistingMemberRequest } from './../../../models/ss-api/requests/check.for.existing.member.request';\r\nimport { BillingRecurringTypes } from '../../../models/ss-api/price.billing.cycle';\r\nimport { HttpError } from '../../../models/errors/HttpError';\r\nimport { ChangeDetectorRef, Component, HostListener, OnInit, ViewChild, OnDestroy } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport * as moment from 'moment';\r\nimport Swal from 'sweetalert2';\r\nimport { xToastr, ToastrTypes } from 'app/shared/Toastr';\r\n\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { NewMemberRequest } from 'app/models/ss-api/requests/new.member.request';\r\nimport { PublicOrderProductsResponseArray, PublicOrderProductsResponse } from 'app/models/ss-api/responses/public.order.products.response';\r\nimport { UpdateCartRequest } from 'app/models/ss-api/requests/update.cart.request';\r\n\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { CompleteOrderDialogComponent } from 'app/dialogs/complete-order/complete-order-dialog.component';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { NewMemberResponse } from '../../../models/ss-api/responses/new.member.response';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { CreditCardValidators } from 'angular-cc-library';\r\nimport { CheckForExistingMemberResponse } from 'app/models/ss-api/responses/check.for.existing.member.response';\r\n\r\nimport { CountryList, CountryListItem } from '../../../helpers/country.list';\r\nimport { StateList, StateListItem, DualStateZipcodeList } from '../../../helpers/state.list';\r\n\r\nimport { CreditCardHelper } from '../../../helpers/creditcard';\r\nimport { CreditCardTypes } from 'app/models/ss-api/responses/credit.card.response';\r\n\r\n\r\nfunction CustomCreditCardValidator(c: UntypedFormControl) {\r\n\r\n let cardType = CreditCardHelper.GetCardTypes(c.value);\r\n\r\n if (cardType == CreditCardTypes.Unknown || cardType == null) {\r\n return {\r\n CustomCreditCardValidator: {\r\n valid: false\r\n }\r\n }\r\n } else {\r\n return null;\r\n }\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'app-order-form',\r\n templateUrl: './order-form-v3.component.html',\r\n styleUrls: ['./order-form-v3.component.scss'],\r\n providers: [DialogService]\r\n})\r\nexport class OrderFormComponentV3 implements OnInit, OnDestroy {\r\n\r\n // *********************************************************************************************************** //\r\n // orderFormVersion - Update this whenever a major change is made to form\r\n //\r\n // if updated, a corresponding order form component needs to be created and routed on the reports panel\r\n //\r\n //orderFormVersion ------- WE GET THIS FROM THE GLOBALS, IT IS IMPERATIVE THAT IT BE UPDATED!!! YOOOOUUUU HAAAAAVE BEEEEEN WAARRRRNEEDD!!!!\r\n // *********************************************************************************************************** //\r\n\r\n\r\n /* *******************************************\r\n order form link URLs:\r\n Vip3D Monthly -- https://members.structurestudios.com/order-form/product/0/1/1\r\n Vip3D Special -- https://members.structurestudios.com/order-form/product/VIP3D_-_Special1/1/1\r\n\r\n ******************************************** */\r\n IsBusy: boolean = true;\r\n\r\n isSpecial: boolean = false;\r\n isPromo: boolean = false;\r\n\r\n isCheckingMember: boolean = false;\r\n\r\n // products\r\n Products: PublicOrderProductsResponseArray;\r\n SelectedProduct: PublicOrderProductsResponse = new PublicOrderProductsResponse();\r\n SelectedBillingCycle: BillingRecurringTypes = BillingRecurringTypes.Monthly;\r\n SelectedPrice: number = 0;\r\n SelectedSetupFee: number = 0;\r\n ReferallInfo: any;\r\n ProductName: string = 'VIP3D';\r\n\r\n yardAddOnOption: boolean = false;\r\n yardAddOn: boolean = false;\r\n yardPrice: number = 0;\r\n yardSetup: number = 0;\r\n // ID's FROM ROUTE PARAMTERS\r\n routeParams: object;\r\n marketTag: string;\r\n\r\n\r\n trainingValue: string = \"2,375\";\r\n\r\n // Cart ID\r\n CartID: string;\r\n SkipUpdteCart: boolean = true; // for initial change detects like dropdowns\r\n LastUpdateCartRequest: UpdateCartRequest;\r\n\r\n // form\r\n OrderForm: UntypedFormGroup;\r\n\r\n orderFormSubmited: boolean = false;\r\n\r\n selectedCycle: number = 1;\r\n formProductClass: string;\r\n\r\n //Tax - Hard Code to TX\r\n /*\r\n TaxEnabled: boolean = true;\r\n TaxCalculated: boolean = true;\r\n State: string = \"TX\";\r\n TaxRateDisplay: string = \"8.25%\";\r\n TaxAmount: number = 14.25;\r\n TaxRate: number = 8.25;\r\n YardTax: number = 0;\r\n */\r\n\r\n //Tax - Emulate First Load\r\n /*\r\n TaxEnabled: boolean = true;\r\n TaxCalculated: boolean = false;\r\n State: string = \"\";\r\n TaxRateDisplay: string = \"\";\r\n TaxAmount: number = 0;\r\n YardTax: number = 0;\r\n */\r\n\r\n //Tax - Live\r\n TaxEnabled: boolean = false;\r\n TaxCalculated: boolean = false;\r\n State: string = \"\";\r\n TaxRateDisplay: string = \"\";\r\n TaxAmount: number = 0;\r\n YardTax: number = 0;\r\n TaxRate: number = 0;\r\n\r\n @ViewChild('orderForm') form;\r\n\r\n @ViewChild('EmailField') EmailField;\r\n @ViewChild('ccNumber') ccNumber;\r\n\r\n @ViewChild('phoneNumber') phoneNumber;\r\n\r\n today: Date = new Date();\r\n Year: number = new Date().getFullYear();\r\n YearRange: any[] = [];\r\n\r\n // CC Name Variables\r\n ccFirstName = '';\r\n ccLastName = '';\r\n ccardType: number;\r\n\r\n cardType: CreditCardTypes = CreditCardTypes.Unknown;\r\n\r\n ccardTypeClass: string;\r\n\r\n ExpirationChanged: boolean = false;\r\n\r\n // DATA SUBSCRIPTION VARIABLES\r\n paramsSubscribe: any;\r\n\r\n EdgeInterval;\r\n\r\n thisIsDev: boolean = false;\r\n\r\n showPassword: boolean;\r\n\r\n countryList: CountryListItem[] = CountryList.Countries();\r\n stateList: StateListItem[] = StateList.States();\r\n\r\n isShowLoginAlert: boolean;\r\n isStickySummary: boolean;\r\n\r\n recurringOptions = [\r\n { name: 'Monthly recurring', value: 1 },\r\n { name: 'Yearly recurring', value: 2 },\r\n ];\r\n selectedRecurring = this.recurringOptions[0].value;\r\n\r\n @HostListener('window:scroll', ['$event'])\r\n track(event: any) {\r\n let threshold = 520;\r\n if (window.innerWidth >= 1276) {\r\n threshold = 480;\r\n } else if (window.innerWidth >= 1092) {\r\n threshold = 550;\r\n } else if (window.innerWidth >= 984) {\r\n threshold = 420;\r\n } else if (window.innerWidth >= 855) {\r\n threshold = 470;\r\n }\r\n if (window.pageYOffset > threshold) {\r\n this.isStickySummary = true;\r\n } else {\r\n this.isStickySummary = false;\r\n }\r\n }\r\n\r\n constructor(public api: ssApiService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private dialogService: DialogService,\r\n private gb: GlobalServices,\r\n private titleService: Title,\r\n private dr: ChangeDetectorRef) {\r\n\r\n this.paramsSubscribe = this.route.params.subscribe(params => this.routeParams = params);\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.paramsSubscribe.unsubscribe();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n if (window.navigator.platform.includes('Mac')) {\r\n Swal.fire({\r\n // type: 'warning',\r\n // title: 'Mac Not Supported',\r\n text: 'Please note the software is not compatible with Mac',\r\n confirmButtonText: 'I understand',\r\n allowOutsideClick: false\r\n }).then((confirm) => {\r\n\r\n }, (dismiss) => {\r\n window.history.back();\r\n });\r\n }\r\n\r\n // Set page title\r\n this.titleService.setTitle('Order Form');\r\n\r\n const usZipValidators = [\r\n Validators.required,\r\n Validators.minLength(5),\r\n ];\r\n\r\n // this.showCompleteOrderDialog();\r\n // initialize order form\r\n this.OrderForm = new UntypedFormGroup({\r\n firstName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.pattern('[a-zA-Z ]*')]),\r\n lastName: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.pattern('[a-zA-Z ]*')]),\r\n company: new UntypedFormControl('', [Validators.required, Validators.minLength(2), Validators.pattern('.*[a-zA-Z].*')]),\r\n //'phone': new FormControl('', [Validators.required, Validators.minLength(10), Validators.pattern('^[0-9 \\+\\-\\]+$')]),\r\n phone: new UntypedFormControl('', [Validators.required, Validators.minLength(14)]),\r\n email: new UntypedFormControl('', [Validators.required, Validators.email]),\r\n // 'email1': new FormControl(\"\", [Validators.required, Validators.email]),\r\n password: new UntypedFormControl('', [Validators.required, Validators.minLength(5)]),\r\n password1: new UntypedFormControl('', [Validators.required, Validators.minLength(5)]),\r\n\r\n address1: new UntypedFormControl('', [Validators.required, Validators.minLength(5)]),\r\n city: new UntypedFormControl('', [Validators.required, Validators.minLength(3)]),\r\n state: new UntypedFormControl('NA', [Validators.required, Validators.minLength(2)]),\r\n statepicker: new UntypedFormControl('', [Validators.required]),\r\n zipCode: new UntypedFormControl('', usZipValidators),\r\n country: new UntypedFormControl('US', [Validators.required]),\r\n ccNameOnCard: new UntypedFormControl('', [Validators.required]),\r\n\r\n //ccNr: new FormControl('', [CreditCardValidator.validateCCNumber]), //creditCard: new FormControl('', [CreditCardValidator.validateCCNumber]),\r\n ccNr: new UntypedFormControl('', [CreditCardValidators.validateCCNumber, Validators.required, CustomCreditCardValidator]),\r\n\r\n ccExpMonth: new UntypedFormControl(this.ThisMonth(), [Validators.required]),\r\n ccExpYear: new UntypedFormControl(this.Year, [Validators.required]),\r\n ccCVC: new UntypedFormControl('', [Validators.required, Validators.minLength(3), Validators.maxLength(4), Validators.pattern('^[0-9]+$')]),\r\n yardAddOn: new UntypedFormControl(''),\r\n confirmInitials: new UntypedFormControl('', [Validators.required, Validators.minLength(2)]),\r\n });\r\n\r\n this.OrderForm.controls.country.valueChanges.subscribe(newCountry => {\r\n if (newCountry == \"US\") {\r\n console.log(\"GO USA\");\r\n // this.OrderForm.get('state').setValue(\"NA\");\r\n // this.OrderForm.get('statepicker').setValue(\"\"); \r\n this.OrderForm.controls.zipCode.setValidators(usZipValidators);\r\n } else {\r\n console.log(\"GO \" + newCountry + \"?\");\r\n // this.OrderForm.get('state').setValue(\"\");\r\n // this.OrderForm.get('statepicker').setValue(\"NV\"); \r\n this.OrderForm.controls.zipCode.setValidators([Validators.required, Validators.minLength(2), Validators.maxLength(10)]);\r\n }\r\n this.OrderForm.updateValueAndValidity();\r\n });\r\n\r\n this.OrderForm.controls.zipCode.valueChanges.subscribe((value) => {\r\n if (!this.IsUS()) {\r\n return;\r\n }\r\n // remove spaces\r\n let trimmed = value.replace(/\\s+/g, '');\r\n\r\n trimmed = trimmed.replace(/[^\\d]/g, \"\");\r\n\r\n if (trimmed.length > 5) {\r\n trimmed = trimmed.substr(0, 5);\r\n }\r\n\r\n if (value !== trimmed) {\r\n this.OrderForm.controls.zipCode.setValue(trimmed);\r\n }\r\n });\r\n\r\n this.OrderForm.controls.phone.valueChanges.subscribe((value) => {\r\n if (value !== this.getPhoneInputValue(value)) {\r\n this.OrderForm.controls.phone.setValue(\r\n this.getPhoneInputValue(value)\r\n );\r\n }\r\n });\r\n\r\n\r\n\r\n // SET UP YEAR RANGE FOR CREDIT CARD EXPIRATION DATE FIELD\r\n for (let i: number = 0; i < 20; i++) {\r\n this.YearRange.push(this.Year + i);\r\n }\r\n\r\n // assign product from routed parameters and refresh the public product list\r\n this.refreshProducts();\r\n\r\n // create CardID if not exist\r\n this.GetCartID();\r\n\r\n // SHOW COMPLETE ORDER DIALOG TEST -- mike\r\n // this.showCompleteOrderDialog(\"UFOID\");\r\n this.thisIsDev = this.api.isDev;\r\n\r\n let disposable = this.OrderForm.controls.ccNr.valueChanges.subscribe(val => {\r\n\r\n console.log(val);\r\n this.CheckCredtiCardType(val);\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n CheckCredtiCardType(value: string) {\r\n\r\n console.log(\"Credit Card Value : \" + value);\r\n let cardType: CreditCardTypes = CreditCardHelper.GetCardTypes(value);\r\n this.cardType = cardType;\r\n console.log(this.cardType);\r\n let newCardType: string = cardType.toString().toLowerCase();\r\n\r\n this.ccardTypeClass = newCardType;\r\n\r\n }\r\n\r\n\r\n ThisMonth() {\r\n const month = new Date().getMonth() + 1;\r\n\r\n if (month < 10) {\r\n return '0' + month;\r\n } else {\r\n return month;\r\n }\r\n }\r\n\r\n matchedFieldChanged() {\r\n this.OrderForm.controls['password'].updateValueAndValidity();\r\n this.OrderForm.controls['password1'].updateValueAndValidity();\r\n\r\n // this.OrderForm.controls[\"email\"].updateValueAndValidity();\r\n // this.OrderForm.controls[\"email1\"].updateValueAndValidity();\r\n }\r\n\r\n GetCartID() {\r\n\r\n this.CartID = localStorage.getItem('cartID');\r\n\r\n if (this.CartID != undefined) {\r\n // console.log(\"CartID exist:\", this.CartID);\r\n return;\r\n }\r\n\r\n // console.log(\"New CartID:\", this.CartID);\r\n this.CartID = this.generateUUID();\r\n localStorage.setItem('cartID', this.CartID);\r\n }\r\n\r\n generateUUID() {\r\n let d = new Date().getTime();\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\r\n d += performance.now();\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n let r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n }\r\n\r\n assignRouteParams(newParams: object) {\r\n // MAKE SURE NEWPARAMS IS DEFINED, IF NOT ASSIGN DEFAULT PRODUCT ID\r\n // console.log(newParams);\r\n if (this.isEmpty(newParams)) {\r\n this.SelectedProduct.ProductID = 0;\r\n // this.SelectedBillingCycle = 1;\r\n // console.log(\"newParams object was empty\");\r\n return;\r\n }\r\n\r\n // ASSIGN ACTIVATED ROUTE PARAMETERS\r\n let newProductID = Number(newParams['productID']);\r\n let newCycleID = Number(newParams['cycleID']);\r\n let newYardAddOn = Number(newParams['yardAddOn']);\r\n this.marketTag = String(newParams['marketTag']);\r\n // console.log(\"marketTag = \" + this.marketTag);\r\n // MAKE SURE NEW ID's FALLS INTO ACCEPTABLE RANGE\r\n if (newCycleID < 1)\r\n newCycleID = 1;\r\n\r\n\r\n // ASSIGN PRODUCT ID AND BILLING CYCLE ID \r\n this.SelectedProduct = this.Products.find(x => x.Name == this.ProductName);\r\n this.SelectedBillingCycle = newCycleID;\r\n\r\n // console.log(\"newYardAddOn = \" + newYardAddOn + \" ProductID = \" + this.SelectedProduct.ProductID);\r\n\r\n if (newYardAddOn == 0)\r\n this.yardAddOn = false;\r\n else\r\n this.yardAddOn = true;\r\n\r\n this.yardAddOnOption = this.YardAvailable(this.SelectedProduct);\r\n\r\n\r\n // console.log(\"newCycleID\", newCycleID, \" Selected Billing Cycle = \", this.SelectedBillingCycle);\r\n\r\n // ASSIGN MONTHYL/YEARLY SELECTION\r\n if (this.SelectedBillingCycle == 2) {\r\n this.selectedRecurring = this.recurringOptions[1].value;\r\n }\r\n\r\n\r\n }\r\n\r\n YardAvailable(product: PublicOrderProductsResponse) {\r\n\r\n if (product.YardAddon == null || product.YardAddon == undefined)\r\n return false;\r\n\r\n if (!product.YardVisiblePublic && (!this.gb.IsDevPublic() && !this.gb.IsLocal()))\r\n return false;\r\n\r\n // ok\r\n return true;\r\n }\r\n\r\n refreshProducts() {\r\n\r\n this.IsBusy = true;\r\n let subScription = this.api.ProductsPublicAndSpecialOrderProducts()\r\n .subscribe((response) => {\r\n console.log(\"prodresponse\", response);\r\n subScription.unsubscribe();\r\n\r\n if (response.Result)\r\n this.Products = response.Data;\r\n else\r\n this.Products = new PublicOrderProductsResponseArray();\r\n\r\n if (this.routeParams['productID'] != undefined) {\r\n if (this.routeParams['productID'] == '0') {\r\n this.ProductName = 'VIP3D';\r\n } else if (this.routeParams['productID'] == '1') {\r\n this.ProductName = 'Pool Studio';\r\n } else if (this.routeParams['productID'] == '2') {\r\n this.ProductName = 'VizTerra';\r\n } else {\r\n this.ProductName = this.routeParams['productID'].replace(/_/g, ' ');\r\n if (this.ProductName.toLowerCase().includes('special'))\r\n this.isSpecial = true;\r\n else if (this.ProductName.toLowerCase().includes(\"promo\"))\r\n this.isPromo = true;\r\n }\r\n }\r\n\r\n this.assignRouteParams(this.routeParams);\r\n\r\n this.TaxEnabled = this.SelectedProduct.TaxEnabled;\r\n if (this.SelectedProduct.ProductID == -1) {\r\n // No product Found\r\n console.log(\"NO PRODUCT!!!!\");\r\n console.log(\"t1\", this.SelectedProduct.Name);\r\n console.log(\"t2\", response.Data);\r\n\r\n this.ShowProductNotFoundDialog();\r\n } else {\r\n // Found a valid Product\r\n this.ProductChanged(this.SelectedProduct.ProductID);\r\n }\r\n\r\n\r\n if (this.SelectedProduct.Name.toLowerCase().includes('vip3d')) {\r\n this.trainingValue = '2,425';\r\n } else if (this.SelectedProduct.Name.toLowerCase().includes(\"vizterra\")) {\r\n this.trainingValue = '2,090';\r\n }\r\n\r\n\r\n // this.IsBusy = false;\r\n },\r\n (error: any) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n makePriceLookNice(thePrice: any): string {\r\n return thePrice.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n }\r\n\r\n totalPrice(): number {\r\n let newTotal = this.SelectedPrice + this.SelectedSetupFee;\r\n if (this.yardAddOn)\r\n newTotal += this.yardPrice;\r\n return newTotal;\r\n }\r\n\r\n totalTaxDisplay(): string {\r\n let newTax = this.TaxAmount;\r\n\r\n if (newTax == 0 || (newTax * 100).toString().endsWith(\"00\")) {\r\n return newTax.toString();\r\n }\r\n else {\r\n return (Math.round(newTax * 100) / 100).toFixed(2);\r\n }\r\n }\r\n\r\n totalTax(): number {\r\n let newTax = this.TaxAmount;\r\n // if (this.yardAddOn)\r\n // newTax += this.YardTax;\r\n return newTax;\r\n }\r\n\r\n totalPriceWithTax(): string {\r\n let newTotalWithTax = this.SelectedPrice + this.SelectedSetupFee + this.totalTax();\r\n if (this.yardAddOn)\r\n newTotalWithTax += this.yardPrice;\r\n\r\n if ((newTotalWithTax * 100).toString().endsWith(\"00\")) {\r\n return newTotalWithTax.toString();\r\n }\r\n else {\r\n return (Math.round(newTotalWithTax * 100) / 100).toFixed(2);\r\n }\r\n }\r\n\r\n\r\n isEmpty(obj): boolean {\r\n for (let key in obj) {\r\n if (obj.hasOwnProperty(key))\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n isValidExpiration() {\r\n let ccExpMonth = this.OrderForm.get('ccExpMonth').value;\r\n let ccExpYear = this.OrderForm.get('ccExpYear').value;\r\n\r\n if (moment(ccExpMonth + '/' + ccExpYear, 'MM/YYYY').isSameOrAfter(moment(moment().format('MM/YYYY'), 'MM/YYYY'))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n onExpirationChange() {\r\n this.ExpirationChanged = true;\r\n this.UpdateCart();\r\n }\r\n\r\n isFormValid(): boolean {\r\n // isCompareValid( passwordRepeat.value, password.value ) == true && isCompareValid( email.value, email1.value ) == true && email.value != '' && password.value != ''\r\n let ccNameOnCard = this.OrderForm.get('ccNameOnCard').value;\r\n this.getNameOnCard(ccNameOnCard);\r\n let ccExpMonth = this.OrderForm.get('ccExpMonth').value;\r\n let ccExpYear = this.OrderForm.get('ccExpYear').value;\r\n\r\n if (this.ccLastName == '')\r\n return false;\r\n\r\n if (!this.OrderForm.valid)\r\n return false;\r\n\r\n if (!this.isValidExpiration())\r\n return false;\r\n\r\n if (this.orderFormSubmited)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n hasLastName(): boolean {\r\n\r\n let ccNameOnCard = this.OrderForm.get('ccNameOnCard').value;\r\n this.getNameOnCard(ccNameOnCard);\r\n if (this.ccLastName == '')\r\n return false;\r\n\r\n return true;\r\n\r\n }\r\n\r\n\r\n\r\n CheckMember() {\r\n\r\n if (this.isCheckingMember) return;\r\n\r\n if (!this.OrderForm.controls['email'].valid) return;\r\n\r\n this.isCheckingMember = true;\r\n\r\n let email = this.OrderForm.controls['email'].value;\r\n\r\n let request: CheckForExistingMemberRequest = {\r\n Checksum: 'ADSFEWFF~!OMG1ITS5SNOWING3INVEGAS42!!!AND6ALL4FROZEN7DRINKS3ARE22HALF00OFF43IN65THE998CASINO',\r\n Email: email\r\n };\r\n\r\n\r\n let disposable = this.api.CheckForExistingMember(request).subscribe(response => {\r\n\r\n disposable.unsubscribe();\r\n\r\n this.isCheckingMember = false;\r\n\r\n let existingMemberResponse: CheckForExistingMemberResponse = response.Data;\r\n\r\n console.log('existingmemberresponse = ', existingMemberResponse);\r\n\r\n if (existingMemberResponse.PromptToLoginOnOrderForm) {\r\n\r\n localStorage.setItem('email', email);\r\n\r\n\r\n switch (existingMemberResponse.MemberType) {\r\n case 100:\r\n case 110: {\r\n // Active Member && Cancelled Member\r\n this.ShowLoginDialog();\r\n break;\r\n }\r\n case 200:\r\n case 210: {\r\n this.showLoginAlert();\r\n break;\r\n }\r\n }\r\n } else if (existingMemberResponse.PromptToFinishOrder && existingMemberResponse.UFOID) {\r\n this.dialogService.open(CompleteOrderDialogComponent, {\r\n data: {\r\n UFOID: existingMemberResponse.UFOID,\r\n fromLogin: false,\r\n }\r\n });\r\n this.OrderForm.controls['email'].setValue('');\r\n this.EmailField.nativeElement.focus();\r\n }\r\n\r\n });\r\n }\r\n\r\n showLoginAlert() {\r\n // window.scrollTo({ top: 0, behavior: 'smooth' });\r\n this.isShowLoginAlert = true;\r\n setTimeout(() => {\r\n const emptyEmailExistAlert: any = document.getElementsByClassName('empty-email-exist-alert')[0];\r\n const emailExistAlertText: any = document.getElementsByClassName('email-exist-alert--text')[0];\r\n emailExistAlertText.style.top = emptyEmailExistAlert.offsetTop - 16;\r\n emailExistAlertText.style.left = emptyEmailExistAlert.offsetLeft + 16;\r\n window.scrollTo(0, 0);\r\n });\r\n }\r\n\r\n ShowLoginDialog() {\r\n this.dialogService.open(LoginDialogComponent, {\r\n data: {\r\n IsWelcomeBack: true,\r\n ProductID: this.SelectedProduct.ProductID,\r\n BillingCycle: this.SelectedBillingCycle,\r\n HasYard: this.yardAddOn\r\n },\r\n position: 'top'\r\n });\r\n this.OrderForm.controls['email'].setValue('');\r\n this.EmailField.nativeElement.focus();\r\n }\r\n\r\n BillingCycleChanged(billingCycleType: BillingRecurringTypes) {\r\n\r\n // set billing\r\n this.SelectedBillingCycle = billingCycleType;\r\n\r\n console.log(888888, this.selectedRecurring, this.SelectedProduct, billingCycleType)\r\n // set type based on new billing\r\n this.SelectedPrice = this.SelectedProduct\r\n .Prices\r\n .find(x => x.BillingCycle == billingCycleType)\r\n .Price;\r\n\r\n this.SelectedSetupFee = this.SelectedProduct\r\n .Prices\r\n .find(x => x.BillingCycle == billingCycleType)\r\n .Setup;\r\n\r\n if (this.yardAddOn && this.SelectedProduct.YardAddon != null) {\r\n this.yardPrice = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Price;\r\n this.yardSetup = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Setup;\r\n this.YardTax = this.yardPrice * (this.TaxRate / 100);\r\n this.YardTax = this.YardTax * 100;\r\n this.YardTax = Math.round(this.YardTax);\r\n this.YardTax = this.YardTax / 100;\r\n } else {\r\n this.yardPrice = 0;\r\n this.yardSetup = 0;\r\n this.YardTax = 0;\r\n }\r\n this.UpdatePageTitle();\r\n if (!this.SkipUpdteCart)\r\n this.UpdateCart();\r\n }\r\n\r\n ProductChanged(productID: number) {\r\n\r\n // set product\r\n this.SelectedProduct = this.Products.find(x => x.ProductID == productID);\r\n console.log(9999000, this.SelectedProduct)\r\n this.SelectedSetupFee = this.SelectedProduct.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Setup;\r\n\r\n if (this.YardAvailable(this.SelectedProduct)) {\r\n this.yardPrice = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Price;\r\n this.yardSetup = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Setup;\r\n } else {\r\n this.yardPrice = 0;\r\n this.yardSetup = 0;\r\n }\r\n\r\n\r\n // set price based on new product\r\n this.BillingCycleChanged(this.SelectedBillingCycle);\r\n\r\n // console.log(\"Prodcut Name:\", this.SelectedProduct.Name);\r\n // console.log(\"Setup Fee:\", this.SelectedSetupFee);\r\n\r\n this.formProductClass = this.SelectedProduct.Name.replace(/\\s+/g, '');\r\n\r\n this.titleService.setTitle('Order Form | ' + this.SelectedProduct.Name);\r\n this.UpdatePageTitle();\r\n\r\n if (!this.SkipUpdteCart)\r\n this.UpdateCart();\r\n\r\n }\r\n\r\n UpdatePageTitle() {\r\n let cycleName = 'Monthly';\r\n if (this.SelectedBillingCycle == 2) {\r\n cycleName = 'Yearly';\r\n }\r\n //console.log(this.SelectedBillingCycle);\r\n this.titleService.setTitle(this.SelectedProduct.Name + ' Order Form - Review Your ' + cycleName + ' Membership Plan');\r\n }\r\n\r\n checkEmailValid(): boolean {\r\n\r\n let Email = this.OrderForm.get('email');\r\n // let Email1 = this.OrderForm.get('email1');\r\n\r\n // if (!Email.touched || !Email.touched)\r\n // return false;\r\n\r\n // if (!Email.valid || !Email1.valid)\r\n // return false;\r\n\r\n // if (Email.value != Email1.value)\r\n // return false;\r\n\r\n return true;\r\n }\r\n\r\n isCompareValid(myField: string, compareField: string): boolean {\r\n return myField == compareField;\r\n }\r\n\r\n checkPasswordValid(): boolean {\r\n\r\n let Email = this.OrderForm.get('password');\r\n let Email1 = this.OrderForm.get('password1');\r\n\r\n if (!Email.touched || !Email.touched)\r\n return false;\r\n\r\n if (!Email.valid || !Email1.valid)\r\n return false;\r\n\r\n if (Email.value != Email1.value)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n isFieldValid(fieldName: string): boolean {\r\n\r\n if (this.OrderForm.get(fieldName).value != '')\r\n return true;\r\n else\r\n return false;\r\n\r\n }\r\n\r\n StripNonNumeric(strValue: string): number {\r\n\r\n let value = strValue.replace(/[^\\d]/g, ''); // 1238\r\n\r\n if (value == '')\r\n return 0;\r\n else\r\n return value;\r\n\r\n }\r\n\r\n\r\n GetNewMemberRequest(): NewMemberRequest {\r\n\r\n\r\n\r\n // credit card names\r\n let ccNameOnCard = this.OrderForm.get('ccNameOnCard').value;\r\n this.getNameOnCard(ccNameOnCard);\r\n\r\n // credit card expiration month\r\n let ccExpMonth = this.OrderForm.get('ccExpMonth');\r\n if (ccExpMonth == undefined)\r\n throw RangeError('Credit Card Expiration Month Value Error');\r\n\r\n // credit card expiration year\r\n let ccExpYear = this.OrderForm.get('ccExpYear');\r\n if (ccExpYear == undefined)\r\n throw RangeError('Credit Card Expiration Year Value Error');\r\n\r\n // check email\r\n if (!this.checkEmailValid())\r\n throw Error('Invalid Email.');\r\n\r\n // check password\r\n if (!this.checkPasswordValid())\r\n throw Error('Invalid Password.');\r\n\r\n\r\n // prepare object to return\r\n let data = new NewMemberRequest();\r\n data.Checksum = \"33022hTllpOOO99#$%^ABlpse634!!dss66kfpEFes46^^sdd2\";\r\n data.OrderFormVersion = this.gb.OrderFormVersion;\r\n\r\n // - personal\r\n data.FirstName = this.OrderForm.get('firstName').value;\r\n data.LastName = this.OrderForm.get('lastName').value;\r\n data.Email = this.OrderForm.get('email').value;\r\n data.Company = this.OrderForm.get('company').value;\r\n data.Phone = this.OrderForm.get('phone').value.replace(/[^\\d]/g, \"\");\r\n data.Password = this.OrderForm.get('password').value;\r\n\r\n // - address\r\n data.Address1 = this.OrderForm.get('address1').value;\r\n data.City = this.OrderForm.get('city').value;\r\n data.Country = this.OrderForm.get('country').value;\r\n\r\n if (data.Country == \"US\") {\r\n data.State = this.OrderForm.get('statepicker').value;\r\n }\r\n else {\r\n data.State = this.OrderForm.get('state').value;\r\n }\r\n\r\n data.ZipCode = this.OrderForm.get('zipCode').value;\r\n\r\n // - credit card\r\n data.CC_FirstName = this.ccFirstName;\r\n data.CC_LastName = this.ccLastName;\r\n\r\n\r\n data.CC_Number = this.OrderForm.get('ccNr').value;\r\n\r\n this.CheckCredtiCardType(data.CC_Number);\r\n\r\n if (this.cardType == CreditCardTypes.Unknown) {\r\n throw Error('Unknown Credit Card Type');\r\n }\r\n\r\n data.CC_Number = this.StripNonNumeric(data.CC_Number).toString();\r\n\r\n if (data.CC_Number == '' ||\r\n data.CC_Number.length < 13)\r\n throw Error('Invalid Credit Card Number.');\r\n\r\n\r\n\r\n data.CC_ExpMonth = ccExpMonth.value;\r\n data.CC_ExpYear = ccExpYear.value - 2000;\r\n data.CC_CVC = this.OrderForm.get('ccCVC').value;\r\n data.CC_Address1 = data.Address1;\r\n data.CC_City = data.City;\r\n data.CC_Country = data.Country;\r\n data.CC_State = data.State;\r\n data.CC_ZipCode = data.ZipCode;\r\n\r\n // - product\r\n data.ProductID = this.SelectedProduct.ProductID;\r\n data.BillingCycle = this.SelectedBillingCycle;\r\n data.AddYard = this.yardAddOn;\r\n\r\n\r\n\r\n // - initals\r\n data.Initials = this.OrderForm.get('confirmInitials').value;\r\n\r\n // - redirect/referral\r\n let strRedirectID = localStorage.getItem('s_redirect_id');\r\n let RedirectCreated = localStorage.getItem('s_redirect_created');\r\n let RedirectID = 0;\r\n\r\n if (strRedirectID != undefined)\r\n RedirectID = parseInt(strRedirectID);\r\n\r\n if (RedirectID > 0) {\r\n data.RedirectID = RedirectID;\r\n data.DateTimeRedirectClick = new Date(RedirectCreated);\r\n }\r\n\r\n data.AssignToOwner = false;\r\n\r\n // console.log(\"Request Data: \", data);\r\n return data;\r\n }\r\n\r\n GetUpdateCartRequest(): UpdateCartRequest {\r\n\r\n // prepare object to return\r\n let data = new UpdateCartRequest();\r\n\r\n // cart\r\n data.CartID = this.CartID;\r\n\r\n // - personal\r\n data.FirstName = this.OrderForm.get('firstName').value;\r\n data.LastName = this.OrderForm.get('lastName').value;\r\n data.Email1 = this.OrderForm.get('email').value;\r\n // data.Email2 = this.OrderForm.get('email1').value;\r\n data.Company = this.OrderForm.get('company').value;\r\n data.Phone = this.gb.FormattedPhone(this.OrderForm.get('phone').value);\r\n\r\n // - address\r\n data.Address = this.OrderForm.get('address1').value;\r\n data.City = this.OrderForm.get('city').value;\r\n data.Country = this.OrderForm.get('country').value;\r\n\r\n if (data.Country == \"US\") {\r\n data.State = this.OrderForm.get('statepicker').value;\r\n }\r\n else {\r\n data.State = this.OrderForm.get('state').value;\r\n }\r\n\r\n data.ZipCode = this.OrderForm.get('zipCode').value;\r\n\r\n\r\n // - credit card\r\n data.CCName = this.OrderForm.get('ccNameOnCard').value;\r\n data.CCNumber = this.OrderForm.get('ccNr').value;\r\n data.CCLastFour = data.CCNumber.slice(data.CCNumber.length - 4);\r\n data.CCExpMonth = Number(this.OrderForm.get('ccExpMonth').value);\r\n data.CCExpYear = Number(this.OrderForm.get('ccExpYear').value) - 2000;\r\n\r\n // - product\r\n data.ProductID = this.SelectedProduct.ProductID;\r\n data.BillingCycle = this.SelectedBillingCycle;\r\n\r\n // - Initals\r\n data.Initials = this.OrderForm.get('confirmInitials').value;\r\n\r\n //taxes\r\n data.TaxChecksum = \"s53f4s56dfa4fs6ljsdhfasdlfAFDASKHflash5646asdf\";\r\n data.SubTotal = this.totalPrice();\r\n\r\n // - redirect/referral\r\n let strRedirectID = localStorage.getItem('s_redirect_id');\r\n let RedirectCreated = localStorage.getItem('s_redirect_created');\r\n let RedirectID = 0;\r\n\r\n if (strRedirectID != undefined)\r\n RedirectID = parseInt(strRedirectID);\r\n\r\n if (RedirectID > 0) {\r\n data.RedirectID = RedirectID;\r\n data.DateTimeRedirectClicked = new Date(RedirectCreated);\r\n }\r\n\r\n console.log(\"Request Cart Update Data: \", data);\r\n return data;\r\n }\r\n\r\n getNameOnCard(nameString: string) {\r\n\r\n this.ccFirstName = '';\r\n this.ccLastName = '';\r\n\r\n let namesSplit = nameString.split(' ');\r\n\r\n if (namesSplit.length == 0)\r\n return;\r\n\r\n let firstName = namesSplit[0];\r\n\r\n let lastName = '';\r\n\r\n if (namesSplit.length > 1) {\r\n for (let i = 1; i < namesSplit.length; i++) {\r\n if (i != 1)\r\n lastName += ' ';\r\n\r\n lastName += namesSplit[i];\r\n }\r\n }\r\n\r\n this.ccFirstName = firstName;\r\n this.ccLastName = lastName;\r\n\r\n }\r\n\r\n\r\n\r\n async onOrderFormSubmit() {\r\n\r\n // Check to see if our order form has been submitted and cancel the submit action\r\n if (this.orderFormSubmited) return;\r\n\r\n this.orderFormSubmited = true;\r\n\r\n this.IsBusy = true;\r\n // get data\r\n let data: NewMemberRequest;\r\n\r\n try {\r\n data = this.GetNewMemberRequest();\r\n } catch (e) {\r\n // console.log(\"error:\", e);\r\n xToastr.ShowToast(ToastrTypes.Error, 'Validation Errors', e);\r\n this.IsBusy = false;\r\n return;\r\n }\r\n\r\n console.log(\"request data\", data);\r\n\r\n //if( 0 == 0 ) return;\r\n\r\n let request = this.api.MemberNew(data)\r\n .subscribe(response => {\r\n // console.log(\"response received\");\r\n // console.log(response)\r\n\r\n\r\n if (!response.Result)\r\n switch (response.ErrCode) {\r\n case '0':\r\n // user exists\r\n // console.log(\"Error response\");\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'An error has occurred. Please verify the information and try again.');\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '1':\r\n // Error Creating Member\r\n // console.log(\"Error response\");\r\n xToastr.ShowToast(ToastrTypes.Error, 'Unkown Error', 'New user could not be created.');\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '2':\r\n // payment\r\n // unfinished order\r\n this.showCompleteOrderDialog(response.Message);\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '3':\r\n // member exists but we couldn't authenticate or something else went wrong\r\n localStorage.setItem('WelcomeBack', '1');\r\n this.router.navigate(['/authentication/signin/welcome-back']);\r\n return;\r\n\r\n case '17':\r\n let options = {\r\n closeButton: true,\r\n progressBar: true,\r\n debug: true,\r\n preventDuplicates: true,\r\n positionClass: 'toast-top-center',\r\n onclick: null,\r\n showDuration: 400,\r\n hideDuration: 1000,\r\n timeOut: 30000,\r\n extendedTimeOut: 1000,\r\n showEasing: 'swing',\r\n hideEasing: 'linear',\r\n showMethod: 'fadeIn',\r\n hideMethod: 'fadeOut'\r\n };\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'This email is linked to a cancelled membership. Please provide a new email address to create a new membership. If you would like to reactivate, contact your account owner or call us at 702-433-0274.', options);\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '19':\r\n case '20':\r\n // user exists\r\n // console.log(\"Error response\");\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'A member already exists with this email. Please log in or use a different email address.');\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '6000':\r\n // credit card zip code error\r\n xToastr.ShowToast(ToastrTypes.Error, 'Zip Code Invalid', response.Message);\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '6001':\r\n // credit card cvv error\r\n xToastr.ShowToast(ToastrTypes.Error, 'Address Invalid', response.Message);\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '6002':\r\n // credit card cvv error\r\n xToastr.ShowToast(ToastrTypes.Error, 'Security Code Invalid', response.Message);\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n case '6003':\r\n // credit card cvv error\r\n xToastr.ShowToast(ToastrTypes.Error, 'Credit Card Error', response.Message);\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n\r\n default:\r\n // user exists\r\n // console.log(\"Error response\");\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'Error processing request. Your Card has been declined.');\r\n this.IsBusy = false;\r\n this.orderFormSubmited = false;\r\n return;\r\n }\r\n\r\n\r\n\r\n // ok\r\n\r\n // window.location.href = \"https://www.structurestudios.com/thank-you\";\r\n // console.log(response);\r\n // console.log(response.Data);\r\n\r\n // we are authenticated\r\n let Response: NewMemberResponse = response.Data;\r\n\r\n if (Response.Reactivated && Response.ReturningMember) {\r\n // we were able to reactivate this member\r\n // redirect to welcome back page or dashboard\r\n // we are authenticated\r\n this.gb.SetGlobalsFromLoginResponse(Response.LoginResponse);\r\n // HERE MIKE\r\n localStorage.setItem('WelcomeBack', '1');\r\n this.router.navigate(['account/product-memberships']);\r\n return;\r\n } else if (!Response.Reactivated && Response.ReturningMember) {\r\n // we are a returning member and we couldn't reactivate.\r\n // redirect to welcome back or tell the member that the email already exists\r\n // HERE MIKE\r\n localStorage.setItem('WelcomeBack', '1');\r\n this.router.navigate(['/authentication/signin/welcome-back']);\r\n return;\r\n } else {\r\n // we are a new member\r\n this.gb.SetGlobalsFromLoginResponse(Response.LoginResponse);\r\n this.openThankyouModal();\r\n\r\n }\r\n\r\n\r\n\r\n\r\n },\r\n\r\n (error: HttpError) => {\r\n\r\n // this.ResetSigninFormSubmitRequest(request);\r\n this.orderFormSubmited = false;\r\n this.IsBusy = false;\r\n xToastr.ShowToast(ToastrTypes.Error, error.FriendlyTitle, error.FriendlyMessage);\r\n\r\n }\r\n );\r\n\r\n }\r\n\r\n logoLoaded() {\r\n // console.log(\"IsBusy on the logoLoaded method = \" + this.IsBusy);\r\n this.IsBusy = false;\r\n }\r\n\r\n UpdateCart() {\r\n if (this.isCheckingMember) return;\r\n\r\n this.SkipUpdteCart = false;\r\n\r\n let data = this.GetUpdateCartRequest();\r\n\r\n if (!this.CheckUpdateCart(data))\r\n return;\r\n\r\n this.LastUpdateCartRequest = data;\r\n\r\n let subscription = this.api.SalesUpdateCart(data)\r\n .subscribe(\r\n (result) => {\r\n console.log(\"datarec\");\r\n console.log(result.Data);\r\n console.log(\"dataend\");\r\n this.TaxAmount = result.Data.TaxAmount;\r\n this.TaxEnabled = result.Data.TaxEnabled;\r\n this.TaxRateDisplay = result.Data.TaxRateDisplay;\r\n this.TaxCalculated = result.Data.TaxCalculated;\r\n if (this.IsUS()) {\r\n if (this.TaxCalculated) {\r\n this.OrderForm.controls.zipCode.setErrors(null);\r\n } else {\r\n this.OrderForm.controls.zipCode.setErrors({\r\n invalid: true\r\n });\r\n }\r\n }\r\n this.OrderForm.updateValueAndValidity();\r\n this.TaxRate = result.Data.TaxRate;\r\n subscription.unsubscribe();\r\n this.updateState(result.Data.State);\r\n },\r\n (error) => {\r\n subscription.unsubscribe();\r\n }\r\n );\r\n\r\n }\r\n\r\n updateState(state) {\r\n const curState = this.orderFormControls.statepicker.value || this.orderFormControls.state.value;\r\n const curZipCode = this.orderFormControls.zipCode.value;\r\n const dualStates = DualStateZipcodeList[curZipCode] || [];\r\n if (!dualStates.includes(curState)) {\r\n this.State = state;\r\n this.OrderForm.get('statepicker').setValue(this.State);\r\n this.OrderForm.get('state').setValue(this.State);\r\n this.OrderForm.updateValueAndValidity();\r\n }\r\n }\r\n\r\n CheckUpdateCart(newCartData: UpdateCartRequest): boolean {\r\n\r\n if (this.LastUpdateCartRequest == undefined)\r\n return true;\r\n\r\n if (newCartData.ProductID != this.LastUpdateCartRequest.ProductID)\r\n return true;\r\n\r\n if (newCartData.BillingCycle != this.LastUpdateCartRequest.BillingCycle)\r\n return true;\r\n\r\n if (newCartData.FirstName != this.LastUpdateCartRequest.FirstName)\r\n return true;\r\n\r\n if (newCartData.LastName != this.LastUpdateCartRequest.LastName)\r\n return true;\r\n\r\n if (newCartData.Initials != this.LastUpdateCartRequest.Initials)\r\n return true;\r\n\r\n if (newCartData.Address != this.LastUpdateCartRequest.Address)\r\n return true;\r\n\r\n if (newCartData.City != this.LastUpdateCartRequest.City)\r\n return true;\r\n\r\n if (newCartData.ZipCode != this.LastUpdateCartRequest.ZipCode)\r\n return true;\r\n\r\n if (newCartData.State != this.LastUpdateCartRequest.State)\r\n return true;\r\n\r\n if (newCartData.Country != this.LastUpdateCartRequest.Country)\r\n return true;\r\n\r\n if (newCartData.CCName != this.LastUpdateCartRequest.CCName)\r\n return true;\r\n\r\n if (newCartData.Company != this.LastUpdateCartRequest.Company)\r\n return true;\r\n\r\n // if (newCartData.Email1 != this.LastUpdateCartRequest.Email1)\r\n // return true;\r\n\r\n if (newCartData.Email2 != this.LastUpdateCartRequest.Email2)\r\n return true;\r\n\r\n if (newCartData.Phone != this.LastUpdateCartRequest.Phone)\r\n return true;\r\n\r\n if (newCartData.CCExpMonth != this.LastUpdateCartRequest.CCExpMonth)\r\n return true;\r\n\r\n if (newCartData.CCExpYear != this.LastUpdateCartRequest.CCExpYear)\r\n return true;\r\n\r\n if (newCartData.CCNumber != this.LastUpdateCartRequest.CCNumber)\r\n return true;\r\n\r\n if (newCartData.CCLastFour != this.LastUpdateCartRequest.CCLastFour)\r\n return true;\r\n\r\n }\r\n\r\n // ///////////////////////////////////////\r\n // SHOW COMPLETE ORDER FORM DIALOG\r\n // ///////////////////////////////////////\r\n showCompleteOrderDialog(ufoid: string) {\r\n\r\n // this.IsBusy = true;\r\n\r\n this.dialogService.open(CompleteOrderDialogComponent, {\r\n data: {\r\n UFOID: ufoid,\r\n fromLogin: false,\r\n }\r\n });\r\n\r\n }\r\n\r\n openThankyouModal() {\r\n this.router.navigate(['account'], {\r\n state: {\r\n showThankyouModal: true\r\n }\r\n });\r\n }\r\n\r\n getRedirectURL(): string {\r\n let membershipName = this.SelectedProduct.Name.toString().toLowerCase();\r\n membershipName = membershipName.replace(/\\s+/g, '');\r\n let billingCycle = 'monthly';\r\n\r\n // console.log(\"this.selectedCycle: \" + this.SelectedBillingCycle)\r\n\r\n if (this.SelectedBillingCycle == 2)\r\n billingCycle = 'yearly';\r\n\r\n return 'order-form/thank-you/' + membershipName + '-' + billingCycle;\r\n }\r\n\r\n GotoThankYouPage() {\r\n this.openThankyouModal();\r\n }\r\n\r\n yardAddOnCheckChanged(yardAddOn: boolean) {\r\n // console.log(\"yardAddOn now = \" + this.yardAddOn);\r\n // console.log(e.target.checked);\r\n\r\n this.yardAddOn = yardAddOn;\r\n this.BillingCycleChanged(this.SelectedBillingCycle);\r\n\r\n }\r\n\r\n isVipName(Name: string): boolean {\r\n if (Name != undefined)\r\n return Name.toLowerCase().includes('vip3d');\r\n else\r\n return false;\r\n }\r\n\r\n isVizterraName(Name: string): boolean {\r\n if (Name != undefined)\r\n return Name.toLowerCase().includes('vizterra');\r\n else\r\n return false;\r\n }\r\n\r\n isPoolStudioName(Name: string): boolean {\r\n if (Name != undefined)\r\n return Name.toLowerCase().includes('pool studio');\r\n else\r\n return false;\r\n }\r\n\r\n\r\n\r\n ShowProductNotFoundDialog() {\r\n\r\n var pricingURL: string = \"https://www.structurestudios.com/landscape-design-software-and-pool-design-software-pricing\";\r\n\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'We\\'re Sorry',\r\n text: 'The promotion is no longer available',\r\n showCloseButton: true,\r\n confirmButtonText: 'View our products',\r\n allowOutsideClick: false,\r\n }).then(() => {\r\n // this.router.navigate(['/'])\r\n window.open(pricingURL, '_self');\r\n }, () => {\r\n // this.router.navigate(['/'])\r\n window.open(pricingURL, '_self');\r\n });\r\n\r\n }\r\n\r\n IsUS(): boolean {\r\n return this.OrderForm.controls.country.value == 'US' ? true : false;\r\n }\r\n\r\n public getPhoneInputValue(v: string): string {\r\n\r\n\r\n // trim '-' dashes\r\n v = v.replace(/-/g, '');\r\n\r\n v = v.replace(/[^\\d]/g, \"\");\r\n\r\n // trim string to 15 characters\r\n if (v.length > 10) {\r\n if (v.length > 15) {\r\n v = v.substr(0, 15);\r\n }\r\n return ' +' + v;\r\n }\r\n\r\n\r\n // new array to hold sections of the License Key\r\n let numbers = [];\r\n\r\n // create set of characters from first 5 characters\r\n numbers.push(v.substr(0, 3));\r\n\r\n // try for next 5\r\n if (v.substr(3, 3) !== \"\")\r\n numbers.push(v.substr(3, 3));\r\n\r\n // and last set of 5\r\n if (v.substr(6, 10) != \"\")\r\n numbers.push(v.substr(6, 4));\r\n\r\n if (v.substr(10, 15) != \"\")\r\n numbers.push(v.substr(10, 5));\r\n\r\n // add '-' dashes back to formated string\r\n let newValue = numbers[0];\r\n\r\n //if( newValue.length == 3 ) {\r\n\r\n //}\r\n\r\n if (numbers.length > 1) {\r\n newValue = '(' + newValue + ') ';\r\n newValue += numbers[1];\r\n }\r\n\r\n\r\n if (numbers.length > 2)\r\n newValue += '-' + numbers[2];\r\n\r\n // if (numbers.length > 3 )\r\n // \tnewValue += '-' + numbers[3];\r\n\r\n return newValue;\r\n }\r\n\r\n get orderFormControls() { return this.OrderForm.controls; }\r\n\r\n getMonth(date: Date) {\r\n const month = date.getMonth() + 1;\r\n\r\n if (month < 10) {\r\n return '0' + month.toString();\r\n } else {\r\n return month.toString();\r\n }\r\n }\r\n\r\n // Start Google Place API\r\n getAddress(place: object) {\r\n // this.address = place['formatted_address'];\r\n // this.phone = this.getPhone(place);\r\n // this.formattedAddress = place['formatted_address'];\r\n // this.zone.run(() => this.formattedAddress = place['formatted_address']);\r\n const street = this.getStreet(place);\r\n const district = this.getDistrict(place);\r\n const city = this.getCity(place);\r\n const state = this.getStateShort(place);\r\n const postCode = this.getPostCode(place);\r\n const country = this.getCountryShort(place);\r\n // this.orderFormControls.street.patchValue(street);\r\n this.orderFormControls.address1.patchValue(street);\r\n this.orderFormControls.city.patchValue(city);\r\n this.orderFormControls.state.patchValue(state);\r\n this.orderFormControls.statepicker.patchValue(state);\r\n this.orderFormControls.zipCode.patchValue(postCode);\r\n this.orderFormControls.country.patchValue(country);\r\n setTimeout(() => {\r\n this.UpdateCart();\r\n });\r\n this.orderFormControls.city.markAsTouched();\r\n this.orderFormControls.state.markAsTouched();\r\n this.orderFormControls.statepicker.markAsTouched();\r\n this.orderFormControls.zipCode.markAsTouched();\r\n this.orderFormControls.country.markAsTouched();\r\n this.dr.detectChanges();\r\n }\r\n\r\n getAddrComponent(place, componentTemplate) {\r\n let result;\r\n\r\n for (let i = 0; i < place.address_components.length; i++) {\r\n const addressType = place.address_components[i].types[0];\r\n if (componentTemplate[addressType]) {\r\n result = place.address_components[i][componentTemplate[addressType]];\r\n return result;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n getStreetNumber(place) {\r\n const COMPONENT_TEMPLATE = { street_number: 'short_name' },\r\n streetNumber = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return streetNumber;\r\n }\r\n\r\n getStreet(place) {\r\n const COMPONENT_TEMPLATE = { street_number: 'long_name' },\r\n streetNumber = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n const COMPONENT_TEMPLATE1 = { route: 'long_name' },\r\n route = this.getAddrComponent(place, COMPONENT_TEMPLATE1);\r\n const street = streetNumber ? (streetNumber + ' ' + route) : route;\r\n return street || place['formatted_address'];\r\n }\r\n\r\n getCity(place) {\r\n const COMPONENT_TEMPLATE = { locality: 'long_name' },\r\n city = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return city || '';\r\n }\r\n\r\n getState(place) {\r\n const COMPONENT_TEMPLATE = { administrative_area_level_1: 'long_name' },\r\n state = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return state || '';\r\n }\r\n\r\n getStateShort(place) {\r\n const COMPONENT_TEMPLATE = { administrative_area_level_1: 'short_name' },\r\n stateShort = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return stateShort || '';\r\n }\r\n\r\n getDistrict(place) {\r\n const COMPONENT_TEMPLATE = { administrative_area_level_2: 'short_name' },\r\n state = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return state || '';\r\n }\r\n\r\n getCountryShort(place) {\r\n const COMPONENT_TEMPLATE = { country: 'short_name' },\r\n countryShort = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return countryShort || '';\r\n }\r\n\r\n getCountry(place) {\r\n const COMPONENT_TEMPLATE = { country: 'long_name' },\r\n country = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return country || '';\r\n }\r\n\r\n getPostCode(place) {\r\n const COMPONENT_TEMPLATE = { postal_code: 'long_name' },\r\n postCode = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return postCode || '';\r\n }\r\n\r\n getPhone(place) {\r\n const COMPONENT_TEMPLATE = { formatted_phone_number: 'formatted_phone_number' },\r\n phone = this.getAddrComponent(place, COMPONENT_TEMPLATE);\r\n return phone || '';\r\n }\r\n // End Google Place API\r\n}\r\n\r\nexport function expDateValidators(c: UntypedFormControl) {\r\n const monthAndYear = /^(0[1-9]|1[0-2])\\/?([0-9]{4}|[0-9]{2})$/;\r\n\r\n return monthAndYear.test(c.value)\r\n ? null\r\n : {\r\n validateInput: {\r\n valid: false,\r\n },\r\n };\r\n}\r\n","import { CheckForExistingMemberRequest } from './../../../models/ss-api/requests/check.for.existing.member.request';\r\nimport { BillingRecurringTypes } from '../../../models/ss-api/price.billing.cycle';\r\nimport { HttpError } from '../../../models/errors/HttpError';\r\nimport { Component, OnInit, ViewChild, OnDestroy } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport * as moment from 'moment';\r\nimport Swal from 'sweetalert2';\r\nimport { xToastr, ToastrTypes } from 'app/shared/Toastr';\r\n\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { NewMemberRequest } from 'app/models/ss-api/requests/new.member.request';\r\nimport { PublicOrderProductsResponseArray, PublicOrderProductsResponse } from 'app/models/ss-api/responses/public.order.products.response';\r\nimport { UpdateCartRequest } from 'app/models/ss-api/requests/update.cart.request';\r\n\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { CompleteOrderDialogComponent } from 'app/dialogs/complete-order/complete-order-dialog.component';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { NewMemberResponse } from '../../../models/ss-api/responses/new.member.response';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n\r\n@Component({\r\n selector: 'app-order-form',\r\n templateUrl: './order-form.component.html',\r\n styleUrls: ['./order-form.component.scss'],\r\n providers: [DialogService]\r\n})\r\nexport class OrderFormComponent implements OnInit, OnDestroy {\r\n\r\n /* *******************************************\r\n order form link URLs:\r\n Vip3D Monthly -- https://members.structurestudios.com/order-form/product/0/1/1\r\n Vip3D Special -- https://members.structurestudios.com/order-form/product/VIP3D_-_Special1/1/1\r\n\r\n ******************************************** */\r\n IsBusy: boolean = true;\r\n\r\n isSpecial: boolean = false;\r\n isPromo: boolean = false;\r\n\r\n // products\r\n Products: PublicOrderProductsResponseArray;\r\n SelectedProduct: PublicOrderProductsResponse = new PublicOrderProductsResponse();\r\n SelectedBillingCycle: BillingRecurringTypes = BillingRecurringTypes.Monthly;\r\n SelectedPrice: number = 0;\r\n SelectedSetupFee: number = 0;\r\n ReferallInfo: any;\r\n\r\n yardAddOnOption: boolean = false;\r\n yardAddOn: boolean = false;\r\n yardPrice: number = 0;\r\n yardSetup: number = 0;\r\n // ID's FROM ROUTE PARAMTERS\r\n routeParams: object;\r\n marketTag: string;\r\n\r\n // Cart ID\r\n CartID: string;\r\n SkipUpdteCart: boolean = true; // for initial change detects like dropdowns\r\n LastUpdateCartRequest: UpdateCartRequest;\r\n\r\n // form\r\n OrderForm: UntypedFormGroup;\r\n selectedCycle: number = 1;\r\n formProductClass: string;\r\n @ViewChild('billingCycleSelect') billingCycleSelect;\r\n\r\n Year: number = new Date().getFullYear();\r\n YearRange: any[] = [];\r\n // CC Name Variables\r\n ccFirstName = '';\r\n ccLastName = '';\r\n ExpirationChanged: boolean = false;\r\n\r\n // DATA SUBSCRIPTION VARIABLES\r\n paramsSubscribe: any;\r\n\r\n thisIsDev: boolean = false;\r\n\r\n constructor(public api: ssApiService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n // private sweetAlertService: SweetAlertService,\r\n private dialogService: DialogService,\r\n private gb: GlobalServices,\r\n private titleService: Title) {\r\n\r\n this.paramsSubscribe = this.route.params.subscribe(params => this.routeParams = params);\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.paramsSubscribe.unsubscribe();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // Set page title\r\n this.titleService.setTitle('Order Form');\r\n\r\n // this.showCompleteOrderDialog();\r\n // initialize order form\r\n this.OrderForm = new UntypedFormGroup({\r\n 'firstName': new UntypedFormControl('', [Validators.required, Validators.minLength(3)]),\r\n 'lastName': new UntypedFormControl('', [Validators.required, Validators.minLength(3)]),\r\n 'company': new UntypedFormControl('', [Validators.required, Validators.minLength(3)]),\r\n 'phone': new UntypedFormControl('', [Validators.required, Validators.minLength(5), Validators.pattern('^[0-9 \\+\\-\\]+$')]),\r\n 'email': new UntypedFormControl('', [Validators.required, Validators.email]),\r\n 'email1': new UntypedFormControl('', [Validators.required, Validators.email]),\r\n 'password': new UntypedFormControl('', [Validators.required, Validators.minLength(5)]),\r\n 'password1': new UntypedFormControl('', [Validators.required, Validators.minLength(5)]),\r\n\r\n 'address1': new UntypedFormControl('', [Validators.required, Validators.minLength(5)]),\r\n 'city': new UntypedFormControl('', [Validators.required, Validators.minLength(3)]),\r\n 'state': new UntypedFormControl('', [Validators.required, Validators.minLength(2)]),\r\n 'zipCode': new UntypedFormControl('', [Validators.required, Validators.minLength(3)]),\r\n 'country': new UntypedFormControl('US', [Validators.required]),\r\n\r\n 'ccNameOnCard': new UntypedFormControl('', [Validators.required]),\r\n 'ccNr': new UntypedFormControl('', [Validators.required, Validators.maxLength(22), Validators.minLength(13), Validators.pattern('^[0-9 \\+\\-\\]+$')]),\r\n 'ccExpMonth': new UntypedFormControl('01', [Validators.required]),\r\n 'ccExpYear': new UntypedFormControl(this.Year, [Validators.required]),\r\n 'ccCVC': new UntypedFormControl('', [Validators.required, Validators.maxLength(5), Validators.pattern('^[0-9]+$')]),\r\n\r\n 'yardAddOn': new UntypedFormControl(''),\r\n\r\n 'confirmInitials': new UntypedFormControl('', [Validators.required]),\r\n });\r\n\r\n // SET UP YEAR RANGE FOR CREDIT CARD EXPIRATION DATE FIELD\r\n for (let i: number = 0; i < 15; i++) {\r\n this.YearRange.push(this.Year + i);\r\n }\r\n\r\n // assign product from routed parameters and refresh the public product list\r\n this.refreshProducts();\r\n\r\n // create CardID if not exist\r\n this.GetCartID();\r\n\r\n // SHOW COMPLETE ORDER DIALOG TEST -- mike\r\n // this.showCompleteOrderDialog(\"UFOID\");\r\n this.thisIsDev = this.api.isDev;\r\n }\r\n\r\n\r\n\r\n formatEmailAddress() {\r\n\r\n\r\n\r\n\r\n }\r\n\r\n\r\n matchedFieldChanged() {\r\n this.OrderForm.controls['password'].updateValueAndValidity();\r\n this.OrderForm.controls['password1'].updateValueAndValidity();\r\n\r\n this.OrderForm.controls['email'].updateValueAndValidity();\r\n this.OrderForm.controls['email1'].updateValueAndValidity();\r\n }\r\n\r\n GetCartID() {\r\n\r\n this.CartID = localStorage.getItem('cartID');\r\n\r\n if (this.CartID != undefined) {\r\n // console.log(\"CartID exist:\", this.CartID);\r\n return;\r\n }\r\n\r\n // console.log(\"New CartID:\", this.CartID);\r\n this.CartID = this.generateUUID();\r\n localStorage.setItem('cartID', this.CartID);\r\n }\r\n\r\n generateUUID() {\r\n let d = new Date().getTime();\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\r\n d += performance.now();\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n let r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n }\r\n\r\n assignRouteParams(newParams: object) {\r\n // MAKE SURE NEWPARAMS IS DEFINED, IF NOT ASSIGN DEFAULT PRODUCT ID\r\n // console.log(newParams);\r\n if (this.isEmpty(newParams)) {\r\n this.SelectedProduct.ProductID = 0;\r\n // this.SelectedBillingCycle = 1;\r\n // console.log(\"newParams object was empty\");\r\n return;\r\n }\r\n\r\n // ASSIGN ACTIVATED ROUTE PARAMETERS\r\n let newProductID = Number(newParams['productID']);\r\n let newCycleID = Number(newParams['cycleID']);\r\n let newYardAddOn = Number(newParams['yardAddOn']);\r\n this.marketTag = String(newParams['marketTag']);\r\n // console.log(\"marketTag = \" + this.marketTag);\r\n // MAKE SURE NEW ID's FALLS INTO ACCEPTABLE RANGE\r\n if (newCycleID < 1)\r\n newCycleID = 1;\r\n\r\n\r\n\r\n // ASSIGN PRODUCT ID AND BILLING CYCLE ID\r\n this.SelectedProduct.ProductID = newProductID;\r\n this.SelectedBillingCycle = newCycleID;\r\n\r\n // console.log(\"newYardAddOn = \" + newYardAddOn + \" ProductID = \" + this.SelectedProduct.ProductID);\r\n\r\n if (newYardAddOn == 0 || this.SelectedProduct.ProductID != 0)\r\n this.yardAddOn = false;\r\n else\r\n this.yardAddOn = true;\r\n\r\n if (this.SelectedProduct.ProductID == 0)\r\n this.yardAddOnOption = true;\r\n\r\n // console.log(\"newCycleID\", newCycleID, \" Selected Billing Cycle = \", this.SelectedBillingCycle);\r\n\r\n // ASSIGN MONTHYL/YEARLY SELECTION\r\n if (this.SelectedBillingCycle == 2) {\r\n // this.billingCycleSelect.value = '2';\r\n let mySelect: any = document.getElementById('billingCycleSelect');\r\n mySelect.value = 2;\r\n }\r\n\r\n\r\n }\r\n\r\n refreshProducts() {\r\n\r\n this.IsBusy = true;\r\n let subScription = this.api.ProductsPublicAndSpecialOrderProducts()\r\n .subscribe((response) => {\r\n subScription.unsubscribe();\r\n // console.log(\"refreshProducts response: \", response);\r\n\r\n if (response.Result)\r\n this.Products = response.Data;\r\n else\r\n this.Products = new PublicOrderProductsResponseArray();\r\n\r\n let newProductName = 'VIP3D';\r\n\r\n if (this.routeParams['productID'] != undefined) {\r\n if (this.routeParams['productID'] == '0') {\r\n newProductName = 'VIP3D';\r\n } else if (this.routeParams['productID'] == '1') {\r\n newProductName = 'Pool Studio';\r\n } else if (this.routeParams['productID'] == '2') {\r\n newProductName = 'VizTerra';\r\n } else {\r\n newProductName = this.routeParams['productID'].replace(/_/g, ' ');\r\n if (newProductName.toLowerCase().includes('special'))\r\n this.isSpecial = true;\r\n else if (newProductName.toLowerCase().includes(\"promo\"))\r\n this.isPromo = true;\r\n // console.log( \"OOOOH! A special Product! Why Hello \" + newProductName );\r\n }\r\n }\r\n\r\n this.assignRouteParams(this.routeParams);\r\n // this.personService.getPersons().find(x => x.id == this.personId);\r\n this.ProductChanged(response.Data.find(x => x.Name == newProductName).ProductID); // debug\r\n\r\n // this.IsBusy = false;\r\n },\r\n (error: any) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n // console.log(\"PRODUCT NAME = \" + this.SelectedProduct.Name);\r\n\r\n }\r\n\r\n makePriceLookNice(thePrice: any): string {\r\n return thePrice.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n }\r\n\r\n totalPrice(): number {\r\n let newTotal = this.SelectedPrice + this.SelectedSetupFee;\r\n if (this.yardAddOn)\r\n newTotal += this.yardPrice;\r\n return newTotal;\r\n }\r\n\r\n isEmpty(obj): boolean {\r\n for (let key in obj) {\r\n if (obj.hasOwnProperty(key))\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n isValidExpiration() {\r\n let ccExpMonth = this.OrderForm.get('ccExpMonth').value;\r\n let ccExpYear = this.OrderForm.get('ccExpYear').value;\r\n\r\n if (moment(ccExpMonth + '/' + ccExpYear, 'MM/YYYY').isSameOrAfter(moment(moment().format('MM/YYYY'), 'MM/YYYY'))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n onExpirationChange() {\r\n this.ExpirationChanged = true;\r\n this.UpdateCart();\r\n }\r\n\r\n isFormValid(): boolean {\r\n // isCompareValid( passwordRepeat.value, password.value ) == true && isCompareValid( email.value, email1.value ) == true && email.value != '' && password.value != ''\r\n let ccNameOnCard = this.OrderForm.get('ccNameOnCard').value;\r\n this.getNameOnCard(ccNameOnCard);\r\n let ccExpMonth = this.OrderForm.get('ccExpMonth').value;\r\n let ccExpYear = this.OrderForm.get('ccExpYear').value;\r\n\r\n if (this.ccLastName == '')\r\n return false;\r\n\r\n if (!this.OrderForm.valid)\r\n return false;\r\n\r\n if (!this.isValidExpiration())\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n hasLastName(): boolean {\r\n\r\n let ccNameOnCard = this.OrderForm.get('ccNameOnCard').value;\r\n this.getNameOnCard(ccNameOnCard);\r\n if (this.ccLastName == '')\r\n return false;\r\n\r\n return true;\r\n\r\n }\r\n\r\n CheckMember() {\r\n let email = this.OrderForm.controls['email'].value;\r\n let request: CheckForExistingMemberRequest = {\r\n Checksum: 'ADSFEWFF~!OMG1ITS5SNOWING3INVEGAS42!!!AND6ALL4FROZEN7DRINKS3ARE22HALF00OFF43IN65THE998CASINO',\r\n Email: email\r\n };\r\n\r\n let disposable = this.api.CheckForExistingMember(request).subscribe(response => {\r\n if (response.Data.PromptToLoginOnOrderForm) {\r\n switch (response.Data.MemberType) {\r\n case 100:\r\n case 110: {\r\n // Active Member && Cancelled Member\r\n Swal.fire({\r\n icon: 'warning',\r\n title: 'Warning',\r\n text: 'It looks like you already have an account registered to this email address. You will be redirected to the login page where you can purchase a license.'\r\n }).then(() => {\r\n this.router.navigate(['/']);\r\n }, () => {\r\n this.router.navigate(['/']);\r\n });\r\n break;\r\n }\r\n case 200:\r\n case 210: {\r\n // Cancelled Designer && Active Designer\r\n Swal.fire({\r\n icon: 'warning',\r\n title: 'Warning',\r\n text: 'It looks like you already have a designer profile registered to this email address. Please use a different email address.'\r\n }).then(() => {\r\n this.router.navigate(['/']);\r\n }, () => {\r\n this.router.navigate(['/']);\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n disposable.unsubscribe();\r\n });\r\n }\r\n\r\n\r\n BillingCycleChanged(billingCycleType: BillingRecurringTypes) {\r\n\r\n // set billing\r\n this.SelectedBillingCycle = billingCycleType;\r\n\r\n // set type based on new billing\r\n this.SelectedPrice = this.SelectedProduct\r\n .Prices\r\n .find(x => x.BillingCycle == billingCycleType)\r\n .Price;\r\n\r\n this.SelectedSetupFee = this.SelectedProduct\r\n .Prices\r\n .find(x => x.BillingCycle == billingCycleType)\r\n .Setup;\r\n\r\n if (this.yardAddOn && this.SelectedProduct.YardAddon != null) {\r\n this.yardPrice = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Price;\r\n this.yardSetup = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Setup;\r\n } else {\r\n this.yardPrice = 0;\r\n this.yardSetup = 0;\r\n }\r\n\r\n if (!this.SkipUpdteCart)\r\n this.UpdateCart();\r\n }\r\n\r\n ProductChanged(productID: number) {\r\n\r\n // set product\r\n this.SelectedProduct = this.Products.find(x => x.ProductID == productID);\r\n this.SelectedSetupFee = this.SelectedProduct.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Setup;\r\n\r\n if (this.yardAddOn && this.SelectedProduct.YardAddon != null) {\r\n this.yardPrice = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Price;\r\n this.yardSetup = this.SelectedProduct.YardAddon.Prices.find(x => x.BillingCycle == this.SelectedBillingCycle).Setup;\r\n } else {\r\n this.yardPrice = 0;\r\n this.yardSetup = 0;\r\n }\r\n\r\n\r\n // set price based on new product\r\n this.BillingCycleChanged(this.SelectedBillingCycle);\r\n\r\n // console.log(\"Prodcut Name:\", this.SelectedProduct.Name);\r\n // console.log(\"Setup Fee:\", this.SelectedSetupFee);\r\n\r\n this.formProductClass = this.SelectedProduct.Name.replace(/\\s+/g, '');\r\n\r\n this.titleService.setTitle('Order Form | ' + this.SelectedProduct.Name);\r\n\r\n if (!this.SkipUpdteCart)\r\n this.UpdateCart();\r\n\r\n }\r\n\r\n checkEmailValid(): boolean {\r\n\r\n let Email = this.OrderForm.get('email');\r\n let Email1 = this.OrderForm.get('email1');\r\n\r\n if (!Email.touched || !Email.touched)\r\n return false;\r\n\r\n if (!Email.valid || !Email1.valid)\r\n return false;\r\n\r\n if (Email.value != Email1.value)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n isCompareValid(myField: string, compareField: string): boolean {\r\n return myField == compareField;\r\n }\r\n\r\n checkPasswordValid(): boolean {\r\n\r\n let Email = this.OrderForm.get('password');\r\n let Email1 = this.OrderForm.get('password1');\r\n\r\n if (!Email.touched || !Email.touched)\r\n return false;\r\n\r\n if (!Email.valid || !Email1.valid)\r\n return false;\r\n\r\n if (Email.value != Email1.value)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n isFieldValid(fieldName: string): boolean {\r\n\r\n if (this.OrderForm.get(fieldName).value != '')\r\n return true;\r\n else\r\n return false;\r\n\r\n }\r\n\r\n StripNonNumeric(strValue: string): number {\r\n\r\n let value = strValue.replace(/[^\\d]/g, ''); // 1238\r\n\r\n if (value == '')\r\n return 0;\r\n else\r\n return value;\r\n\r\n }\r\n\r\n\r\n GetNewMemberRequest(): NewMemberRequest {\r\n\r\n // credit card names\r\n let ccNameOnCard = this.OrderForm.get('ccNameOnCard').value;\r\n this.getNameOnCard(ccNameOnCard);\r\n\r\n // credit card expiration month\r\n let ccExpMonth = this.OrderForm.get('ccExpMonth');\r\n if (ccExpMonth == undefined)\r\n throw RangeError('Credit Card Expiration Month Value Error');\r\n\r\n // credit card expiration year\r\n let ccExpYear = this.OrderForm.get('ccExpYear');\r\n if (ccExpYear == undefined)\r\n throw RangeError('Credit Card Expiration Year Value Error');\r\n\r\n // check email\r\n if (!this.checkEmailValid())\r\n throw Error('Invalid Email.');\r\n\r\n // check password\r\n if (!this.checkPasswordValid())\r\n throw Error('Invalid Password.');\r\n\r\n\r\n // prepare object to return\r\n let data = new NewMemberRequest();\r\n data.Checksum = \"33022hTllpOOO99#$%^ABlpse634!!dss66kfpEFes46^^sdd2\";\r\n \r\n // - personal\r\n data.FirstName = this.OrderForm.get('firstName').value;\r\n data.LastName = this.OrderForm.get('lastName').value;\r\n data.Email = this.OrderForm.get('email').value;\r\n data.Company = this.OrderForm.get('company').value;\r\n data.Phone = this.OrderForm.get('phone').value;\r\n data.Password = this.OrderForm.get('password').value;\r\n\r\n // - address\r\n data.Address1 = this.OrderForm.get('address1').value;\r\n data.City = this.OrderForm.get('city').value;\r\n data.State = this.OrderForm.get('state').value;\r\n data.ZipCode = this.OrderForm.get('zipCode').value;\r\n data.Country = this.OrderForm.get('country').value;\r\n\r\n // - credit card\r\n data.CC_FirstName = this.ccFirstName;\r\n data.CC_LastName = this.ccLastName;\r\n\r\n data.CC_Number = this.OrderForm.get('ccNr').value;\r\n data.CC_Number = this.StripNonNumeric(data.CC_Number).toString();\r\n\r\n if (data.CC_Number == '' ||\r\n data.CC_Number.length < 13)\r\n throw Error('Invalid Credit Card Number.');\r\n\r\n\r\n\r\n data.CC_ExpMonth = ccExpMonth.value;\r\n data.CC_ExpYear = ccExpYear.value - 2000;\r\n data.CC_CVC = this.OrderForm.get('ccCVC').value;\r\n data.CC_Address1 = data.Address1;\r\n data.CC_City = data.City;\r\n data.CC_Country = data.Country;\r\n data.CC_State = data.State;\r\n data.CC_ZipCode = data.ZipCode;\r\n\r\n // - product\r\n data.ProductID = this.SelectedProduct.ProductID;\r\n data.BillingCycle = this.SelectedBillingCycle;\r\n data.AddYard = this.yardAddOn;\r\n\r\n\r\n\r\n // - initals\r\n data.Initials = this.OrderForm.get('confirmInitials').value;\r\n\r\n // - redirect/referral\r\n let strRedirectID = localStorage.getItem('s_redirect_id');\r\n let RedirectCreated = localStorage.getItem('s_redirect_created');\r\n let RedirectID = 0;\r\n\r\n if (strRedirectID != undefined)\r\n RedirectID = parseInt(strRedirectID);\r\n\r\n if (RedirectID > 0) {\r\n data.RedirectID = RedirectID;\r\n data.DateTimeRedirectClick = new Date(RedirectCreated);\r\n }\r\n\r\n data.AssignToOwner = false;\r\n\r\n // console.log(\"Request Data: \", data);\r\n return data;\r\n }\r\n\r\n GetUpdateCartRequest(): UpdateCartRequest {\r\n\r\n // prepare object to return\r\n let data = new UpdateCartRequest();\r\n\r\n // cart\r\n data.CartID = this.CartID;\r\n\r\n // - personal\r\n data.FirstName = this.OrderForm.get('firstName').value;\r\n data.LastName = this.OrderForm.get('lastName').value;\r\n data.Email1 = this.OrderForm.get('email').value;\r\n data.Email2 = this.OrderForm.get('email1').value;\r\n data.Company = this.OrderForm.get('company').value;\r\n data.Phone = this.OrderForm.get('phone').value;\r\n\r\n // - address\r\n data.Address = this.OrderForm.get('address1').value;\r\n data.City = this.OrderForm.get('city').value;\r\n data.State = this.OrderForm.get('state').value;\r\n data.ZipCode = this.OrderForm.get('zipCode').value;\r\n data.Country = this.OrderForm.get('country').value;\r\n\r\n // - credit card\r\n data.CCName = this.OrderForm.get('ccNameOnCard').value;\r\n data.CCNumber = this.OrderForm.get('ccNr').value;\r\n data.CCLastFour = data.CCNumber.slice(data.CCNumber.length - 4);\r\n data.CCExpMonth = this.OrderForm.get('ccExpMonth').value\r\n data.CCExpYear = this.OrderForm.get('ccExpYear').value\r\n\r\n // - product\r\n data.ProductID = this.SelectedProduct.ProductID;\r\n data.BillingCycle = this.SelectedBillingCycle;\r\n\r\n // - Initals\r\n data.Initials = this.OrderForm.get('confirmInitials').value;\r\n\r\n // - redirect/referral\r\n let strRedirectID = localStorage.getItem('s_redirect_id');\r\n let RedirectCreated = localStorage.getItem('s_redirect_created');\r\n let RedirectID = 0;\r\n\r\n //taxes\r\n data.TaxChecksum = \"s53f4s56dfa4fs6ljsdhfasdlfAFDASKHflash5646asdf\";\r\n data.SubTotal = this.totalPrice();\r\n\r\n if (strRedirectID != undefined)\r\n RedirectID = parseInt(strRedirectID);\r\n\r\n if (RedirectID > 0) {\r\n data.RedirectID = RedirectID;\r\n data.DateTimeRedirectClicked = new Date(RedirectCreated);\r\n }\r\n\r\n console.log(\"Request Cart Update Data: \", data);\r\n return data;\r\n }\r\n\r\n getNameOnCard(nameString: string) {\r\n\r\n this.ccFirstName = '';\r\n this.ccLastName = '';\r\n\r\n let namesSplit = nameString.split(' ');\r\n\r\n if (namesSplit.length == 0)\r\n return;\r\n\r\n let firstName = namesSplit[0];\r\n\r\n let lastName = '';\r\n\r\n if (namesSplit.length > 1) {\r\n for (let i = 1; i < namesSplit.length; i++) {\r\n if (i != 1)\r\n lastName += ' ';\r\n\r\n lastName += namesSplit[i];\r\n }\r\n }\r\n\r\n this.ccFirstName = firstName;\r\n this.ccLastName = lastName;\r\n\r\n }\r\n\r\n async onOrderFormSubmit() {\r\n\r\n this.IsBusy = true;\r\n // get data\r\n let data: NewMemberRequest;\r\n\r\n try {\r\n data = this.GetNewMemberRequest();\r\n } catch (e) {\r\n // console.log(\"error:\", e);\r\n xToastr.ShowToast(ToastrTypes.Error, 'Validation Errors', e);\r\n this.IsBusy = false;\r\n return;\r\n }\r\n\r\n // console.log(\"request data\", data);\r\n\r\n let request = this.api.MemberNew(data)\r\n .subscribe(response => {\r\n // console.log(\"response received\");\r\n // console.log(response)\r\n\r\n\r\n if (!response.Result)\r\n\r\n switch (response.ErrCode) {\r\n case '0':\r\n // user exists\r\n // console.log(\"Error response\");\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'This user already exists.');\r\n this.IsBusy = false;\r\n return;\r\n\r\n case '2':\r\n // payment\r\n // unfinished order\r\n this.showCompleteOrderDialog(response.Message);\r\n this.IsBusy = false;\r\n return;\r\n\r\n case '3':\r\n // member exists but we couldn't authenticate or something else went wrong\r\n localStorage.setItem('WelcomeBack', '1');\r\n this.router.navigate(['/authentication/signin/welcome-back']);\r\n return;\r\n\r\n case '17':\r\n let options = {\r\n closeButton: true,\r\n progressBar: true,\r\n debug: true,\r\n preventDuplicates: true,\r\n positionClass: 'toast-top-center',\r\n onclick: null,\r\n showDuration: 400,\r\n hideDuration: 1000,\r\n timeOut: 30000,\r\n extendedTimeOut: 1000,\r\n showEasing: 'swing',\r\n hideEasing: 'linear',\r\n showMethod: 'fadeIn',\r\n hideMethod: 'fadeOut'\r\n };\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'This email is linked to a cancelled membership. Please provide a new email address to create a new membership. If you would like to reactivate, contact your account owner or call us at 702-433-0274.', options);\r\n this.IsBusy = false;\r\n return;\r\n\r\n default:\r\n // user exists\r\n // console.log(\"Error response\");\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', 'Error processing request. Your Card has been declined.');\r\n this.IsBusy = false;\r\n return;\r\n }\r\n\r\n\r\n\r\n // ok\r\n\r\n // window.location.href = \"https://www.structurestudios.com/thank-you\";\r\n\r\n // we are authenticated\r\n let Response: NewMemberResponse = response.Data;\r\n\r\n if (Response.Reactivated && Response.ReturningMember) {\r\n // we were able to reactivate this member\r\n // redirect to welcome back page or dashboard\r\n // we are authenticated\r\n this.gb.SetGlobalsFromLoginResponse(Response.LoginResponse);\r\n // HERE MIKE\r\n localStorage.setItem('WelcomeBack', '1');\r\n this.router.navigate(['account/product-memberships']);\r\n return;\r\n } else if (!Response.Reactivated && Response.ReturningMember) {\r\n // we are a returning member and we couldn't reactivate.\r\n // redirect to welcome back or tell the member that the email already exists\r\n // HERE MIKE\r\n localStorage.setItem('WelcomeBack', '1');\r\n this.router.navigate(['/authentication/signin/welcome-back']);\r\n return;\r\n } else {\r\n // we are a new member\r\n this.gb.SetGlobalsFromLoginResponse(Response.LoginResponse);\r\n window.location.href = this.getRedirectURL();\r\n\r\n }\r\n\r\n\r\n\r\n\r\n },\r\n\r\n (error: HttpError) => {\r\n\r\n // this.ResetSigninFormSubmitRequest(request);\r\n\r\n // console.log(\"error login form\");\r\n // console.log(data);\r\n this.IsBusy = false;\r\n xToastr.ShowToast(ToastrTypes.Error, error.FriendlyTitle, error.FriendlyMessage);\r\n\r\n }\r\n );\r\n\r\n }\r\n\r\n logoLoaded() {\r\n // console.log(\"IsBusy on the logoLoaded method = \" + this.IsBusy);\r\n this.IsBusy = false;\r\n }\r\n\r\n UpdateCart() {\r\n\r\n this.SkipUpdteCart = false;\r\n\r\n let data = this.GetUpdateCartRequest();\r\n\r\n if (!this.CheckUpdateCart(data))\r\n return;\r\n\r\n this.LastUpdateCartRequest = data;\r\n\r\n let subscription = this.api.SalesUpdateCart(data).subscribe(\r\n (data) => { subscription.unsubscribe(); },\r\n (error) => { });\r\n\r\n }\r\n\r\n CheckUpdateCart(newCartData: UpdateCartRequest): boolean {\r\n\r\n if (this.LastUpdateCartRequest == undefined)\r\n return true;\r\n\r\n if (newCartData.ProductID != this.LastUpdateCartRequest.ProductID)\r\n return true;\r\n\r\n if (newCartData.BillingCycle != this.LastUpdateCartRequest.BillingCycle)\r\n return true;\r\n\r\n if (newCartData.FirstName != this.LastUpdateCartRequest.FirstName)\r\n return true;\r\n\r\n if (newCartData.LastName != this.LastUpdateCartRequest.LastName)\r\n return true;\r\n\r\n if (newCartData.Initials != this.LastUpdateCartRequest.Initials)\r\n return true;\r\n\r\n if (newCartData.Address != this.LastUpdateCartRequest.Address)\r\n return true;\r\n\r\n if (newCartData.City != this.LastUpdateCartRequest.City)\r\n return true;\r\n\r\n if (newCartData.ZipCode != this.LastUpdateCartRequest.ZipCode)\r\n return true;\r\n\r\n if (newCartData.State != this.LastUpdateCartRequest.State)\r\n return true;\r\n\r\n if (newCartData.Country != this.LastUpdateCartRequest.Country)\r\n return true;\r\n\r\n if (newCartData.CCName != this.LastUpdateCartRequest.CCName)\r\n return true;\r\n\r\n if (newCartData.Company != this.LastUpdateCartRequest.Company)\r\n return true;\r\n\r\n if (newCartData.Email1 != this.LastUpdateCartRequest.Email1)\r\n return true;\r\n\r\n if (newCartData.Email2 != this.LastUpdateCartRequest.Email2)\r\n return true;\r\n\r\n if (newCartData.Phone != this.LastUpdateCartRequest.Phone)\r\n return true;\r\n\r\n if (newCartData.CCExpMonth != this.LastUpdateCartRequest.CCExpMonth)\r\n return true;\r\n\r\n if (newCartData.CCExpYear != this.LastUpdateCartRequest.CCExpYear)\r\n return true;\r\n\r\n if (newCartData.CCNumber != this.LastUpdateCartRequest.CCNumber)\r\n return true;\r\n\r\n if (newCartData.CCLastFour != this.LastUpdateCartRequest.CCLastFour)\r\n return true;\r\n }\r\n\r\n // ///////////////////////////////////////\r\n // SHOW COMPLETE ORDER FORM DIALOG\r\n // ///////////////////////////////////////\r\n showCompleteOrderDialog(ufoid: string) {\r\n\r\n // this.IsBusy = true;\r\n\r\n this.dialogService.open(CompleteOrderDialogComponent, {data: {\r\n UFOID: ufoid,\r\n fromLogin: false\r\n }});\r\n\r\n\r\n }\r\n\r\n\r\n getRedirectURL(): string {\r\n let membershipName = this.SelectedProduct.Name.toString().toLowerCase();\r\n membershipName = membershipName.replace(/\\s+/g, '');\r\n let billingCycle = 'monthly';\r\n\r\n // console.log(\"this.selectedCycle: \" + this.SelectedBillingCycle)\r\n\r\n if (this.SelectedBillingCycle == 2)\r\n billingCycle = 'yearly';\r\n\r\n return 'order-form/thank-you/' + membershipName + '-' + billingCycle;\r\n }\r\n\r\n GotoThankYouPage() {\r\n window.location.href = this.getRedirectURL();\r\n // console.log(\"Thank You URL: \", this.getRedirectURL() );\r\n }\r\n\r\n yardAddOnCheckChanged(e: any) {\r\n // console.log(\"yardAddOn now = \" + this.yardAddOn);\r\n // console.log(e.target.checked);\r\n\r\n this.yardAddOn = e.target.checked;\r\n this.BillingCycleChanged(this.SelectedBillingCycle);\r\n\r\n }\r\n\r\n isVipName(Name: string): boolean {\r\n if (Name != undefined)\r\n return Name.toLowerCase().includes('vip3d');\r\n else\r\n return false;\r\n }\r\n\r\n}\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\n\r\n\r\n@Component({\r\n selector: 'redirect',\r\n templateUrl: './redirect.html'\r\n})\r\nexport class Redirect implements OnDestroy {\r\n // DATA SUBSCRIPTION VARIABLES\r\n paramsSubscribe: any;\r\n\r\n constructor(private api: ssApiService, private route: ActivatedRoute) {\r\n\r\n this.paramsSubscribe = this.route.params.subscribe(params => {\r\n\r\n if (params != undefined)\r\n this.ProcessParameters(params);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.paramsSubscribe.unsubscribe();\r\n }\r\n\r\n ProcessParameters(params: object) {\r\n\r\n // get parameter\r\n let RedirectID = params['redirectID'];\r\n\r\n // check and save to local storage\r\n if (RedirectID != undefined)\r\n localStorage.setItem('s_redirect_id', RedirectID);\r\n else\r\n window.location.href = 'http://www.structurestudios.com';\r\n\r\n\r\n localStorage.setItem('s_redirect_created', new Date().toString());\r\n\r\n\r\n // get the data from server\r\n let subscribe = this.api.ReferralRedirect(RedirectID).subscribe(\r\n (redirect) => {\r\n subscribe.unsubscribe();\r\n\r\n if (redirect.Result)\r\n window.location.href = redirect.Data.ForwardUrl;\r\n else\r\n window.location.href = 'http://www.structurestudios.com';\r\n\r\n },\r\n (error) => {\r\n window.location.href = 'http://www.structurestudios.com';\r\n });\r\n\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit, ViewEncapsulation, ViewChild, ElementRef, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { DesignerInstructionsRequest } from '../../../models/ss-api/requests/designer.instructions.request';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { xToastr, ToastrTypes } from 'app/shared/Toastr';\r\nimport Swal from 'sweetalert2';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'thank-you',\r\n templateUrl: './thank-you.component.html',\r\n styleUrls: ['./thank-you.component.scss'],\r\n})\r\nexport class ThankYouComponent implements OnInit, OnDestroy {\r\n\r\n IsBusy: boolean = true;\r\n\r\n chooseUser: boolean = true;\r\n designerKey: boolean = false;\r\n\r\n // DATA SUBSCRIPTION VARIABLES\r\n paramsSubscribe: any;\r\n marketTag: string = '';\r\n\r\n // key\r\n licenseKey: string = 'loading';\r\n firstName: string = '';\r\n\r\n // designer\r\n DesignerName: string;\r\n DesignerEmail: string;\r\n\r\n @ViewChild('emailField') emailField: ElementRef;\r\n\r\n constructor(private router: Router, private api: ssApiService, private route: ActivatedRoute, private gb: GlobalServices,\r\n private titleService: Title) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.GetFirstLicenseKey();\r\n this.firstName = this.gb.FirstName;\r\n this.titleService.setTitle('Structure Studios Account');\r\n }\r\n\r\n isVizterraName(): boolean {\r\n if(window.location.href.indexOf(\"vizterra\") > -1) {\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n } \r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n\r\n private GetFirstLicenseKey() {\r\n\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.GetFirstLicenseKey().subscribe(\r\n (response) => {\r\n subscription.unsubscribe();\r\n //if (!response.Result) {\r\n // window.location.href = 'http://www.structurestudios.com';\r\n //}\r\n\r\n if (response.Result) {\r\n this.licenseKey = response.Data;\r\n }\r\n\r\n this.IsBusy = false;\r\n\r\n },\r\n (error) => {\r\n subscription.unsubscribe();\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n SendEmail() {\r\n\r\n if (this.DesignerName == '' || this.DesignerName == undefined) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Form Incomplete', 'Please provide the Name of your designer in the form.');\r\n return;\r\n }\r\n\r\n if (!this.emailField.nativeElement.classList.contains('ng-valid')) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Invalid Email', 'Please provide a valid email address.');\r\n return;\r\n }\r\n\r\n this.IsBusy = true;\r\n\r\n let request = new DesignerInstructionsRequest();\r\n request.Email = this.DesignerEmail;\r\n request.Name = this.DesignerName;\r\n request.LicenseKey = this.licenseKey;\r\n\r\n let subscription = this.api.SendLicenseKeyInstructionsToDesignerEmail(request).subscribe(\r\n (response) => {\r\n\r\n subscription.unsubscribe();\r\n\r\n if (!response.Result) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error Sending Email', response.Message);\r\n this.IsBusy = false;\r\n return;\r\n }\r\n\r\n // show result\r\n Swal.fire(\r\n {\r\n title: 'Success',\r\n text: 'An email has been sent to ' + request.Name + ' at ' + request.Email,\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n\r\n })\r\n .then(() => {\r\n return new Promise((resolve, reject) => {\r\n // this.router.navigate([\"Dashboard\"]);\r\n window.location.href = 'account';\r\n resolve('');\r\n });\r\n }, () => { }); // keep this line to prevent promise error;\r\n\r\n this.IsBusy = false;\r\n\r\n },\r\n (error) => {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error Sending Email', error);\r\n this.IsBusy = false;\r\n });\r\n }\r\n\r\n isEmpty(obj): boolean {\r\n for (let key in obj) {\r\n if (obj.hasOwnProperty(key))\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n chooseMe() {\r\n\r\n this.IsBusy = true;\r\n\r\n let subscription = this.api.LicenseAssigToLoggedinUser(this.licenseKey).subscribe(\r\n async (response) => {\r\n\r\n this.IsBusy = false;\r\n subscription.unsubscribe();\r\n\r\n if (!response.Result) {\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', response.Message);\r\n return;\r\n } else {\r\n this.setUserChosen();\r\n }\r\n\r\n },\r\n\r\n (error) => {\r\n this.IsBusy = false;\r\n xToastr.ShowToast(ToastrTypes.Error, 'Error', error);\r\n });\r\n\r\n }\r\n\r\n chooseDesigner() {\r\n this.designerKey = true;\r\n this.setUserChosen();\r\n }\r\n\r\n setUserChosen() {\r\n this.chooseUser = false;\r\n }\r\n\r\n switchDesignerKey() {\r\n this.designerKey = !this.designerKey;\r\n\t}\r\n\r\n}\r\n","import { BlankView } from '../views/blank/blank.view';\r\nimport { OrderFormView } from '../views/order-form/order-form.view';\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { OrderFormComponent } from './components/order-form/order-form.component';\r\nimport { ThankYouComponent } from './components/thank-you/thank-you.component';\r\nimport { Redirect } from 'app/order/components/redirect/redirect';\r\nimport { OrderFormComponentV2 } from './components/order-form-v2/order-form-v2.component';\r\nimport { OrderFormComponentV3 } from './components/order-form-v3/order-form-v3.component';\r\n\r\nconst OrderRouting: Routes = [\r\n // login view\r\n {\r\n\r\n path: 'order-form', component: OrderFormView,\r\n children: [\r\n { path: 'product-old/:productID/:cycleID/:yardAddOn', component: OrderFormComponent },\r\n { path: 'product-old/:productID/:cycleID/:yardAddOn/:marketTag', component: OrderFormComponent },\r\n { path: 'product/:productID/:cycleID/:yardAddOn', component: OrderFormComponentV3 },\r\n { path: 'product/:productID/:cycleID/:yardAddOn/:marketTag', component: OrderFormComponentV3 },\r\n\r\n { path: 'thank-you', component: ThankYouComponent },\r\n { path: 'thank-you/:marketTag', component: ThankYouComponent },\r\n\r\n // { path: 'dashboard1', component: SupportDashboard1Component },\r\n\r\n // handle all other routes\r\n { path: '**', component: OrderFormComponentV3 }\r\n ]\r\n },\r\n\r\n // dashboard views\r\n {\r\n path: 'redirect', component: BlankView,\r\n children: [\r\n { path: ':redirectID', component: Redirect }\r\n ]\r\n },\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(OrderRouting)],\r\n exports: [RouterModule]\r\n})\r\nexport class OrderRoutingModule {\r\n\r\n}\r\n","import { AuthenticationModule } from './../authentication/authentication.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SharedAppModule } from '../app.module.shared';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { OrderRoutingModule } from './order-routing.module';\r\nimport { OrderFormComponent } from './components/order-form/order-form.component';\r\nimport { Redirect } from 'app/order/components/redirect/redirect';\r\nimport { OrderFormComponentV2 } from './components/order-form-v2/order-form-v2.component';\r\nimport { OrderFormComponentV3 } from './components/order-form-v3/order-form-v3.component';\r\nimport { CreditCardDirectivesModule } from 'angular-cc-library';\r\n\r\n@NgModule({\r\n declarations: [\r\n OrderFormComponentV2,\r\n OrderFormComponentV3,\r\n OrderFormComponent,\r\n Redirect\r\n ],\r\n imports: [\r\n // AuthenticationModule,\r\n CommonModule,\r\n OrderRoutingModule,\r\n SharedAppModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n CreditCardDirectivesModule\r\n ]\r\n\r\n})\r\nexport class OrderModule { }\r\n","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n\r\n@Pipe({ name: 'addYearsToDate' })\r\nexport class AddYearsToDatePipe implements PipeTransform {\r\n\r\n transform(value: any, args: any[]): string {\r\n\r\n let datePipe = new DatePipe('en-US');\r\n\r\n let date: Date = new Date(value);\r\n let year: number = date.getFullYear();\r\n\r\n date.setFullYear(year + args[1]);\r\n\r\n return datePipe.transform(date, args[0]);\r\n\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n\r\n@Pipe({ name: 'capitalizeFirstLetter' })\r\nexport class CapitalizeFirstLetterPipe implements PipeTransform {\r\n\r\n transform(value: string): string {\r\n\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n if (value.length == 1) {\r\n return value.charAt(0).toUpperCase();\r\n } else {\r\n return value.charAt(0).toUpperCase() + value.substr(1).toLowerCase();\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { CreditCardTypes } from 'app/models/ss-api/responses/credit.card.response';\r\n\r\n\r\n@Pipe({ name: 'creditCardType' })\r\nexport class CreditCardTypePipe implements PipeTransform {\r\n\r\n transform(value: CreditCardTypes, args: any[]): string {\r\n\r\n switch ( value ) {\r\n case CreditCardTypes.AmericanExpress :\r\n return \"amex\";\r\n \r\n case CreditCardTypes.DinersClub :\r\n return \"diners\";\r\n \r\n case CreditCardTypes.Discover :\r\n return \"discover\";\r\n\r\n case CreditCardTypes.EnRoute :\r\n return \"enroute\";\r\n\r\n case CreditCardTypes.JCB :\r\n return \"jcb\";\r\n\r\n case CreditCardTypes.MasterCard :\r\n return \"mastercard\";\r\n\r\n case CreditCardTypes.VISA :\r\n return \"visa\";\r\n\r\n default :\r\n return \"unknown\";\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n\r\n@Pipe({ name: 'daysRemaining' })\r\nexport class DaysRemainingPipe implements PipeTransform {\r\n\r\n transform(terminationDate: string): number {\r\n\r\n let daysRemaining: number = 0;\r\n let date1 = new Date();\r\n const tDate = new Date(terminationDate);\r\n\r\n let diffc = date1.getTime() - tDate.getTime();\r\n\r\n daysRemaining = Math.round(Math.abs(diffc / (1000 * 60 * 60 * 24)));\r\n\r\n return daysRemaining;\r\n\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { BillingRecurringTypes } from '../models/ss-api/responses/dashboard.license.response';\r\n\r\n\r\n@Pipe({ name: 'productNameWebSafe' })\r\nexport class ProductNameWebSafePipe implements PipeTransform {\r\n\r\n constructor(private _sanitizer: DomSanitizer) {\r\n }\r\n\r\n transform(productName: string): string {\r\n let returnName = '';\r\n\r\n switch (productName) {\r\n case 'VIP3D':\r\n case 'Vip3D':\r\n returnName = 'vip3d';\r\n break;\r\n\r\n case 'Pool Studio':\r\n returnName = 'poolstudio';\r\n break;\r\n\r\n case 'VizTerra':\r\n returnName = 'vizterra';\r\n break;\r\n\r\n default:\r\n returnName = 'vip3d';\r\n break;\r\n }\r\n\r\n return returnName;\r\n }\r\n\r\n}\r\n\r\n\r\n@Pipe({ name: 'productName' })\r\nexport class ProductNamePipe implements PipeTransform {\r\n\r\n constructor(private _sanitizer: DomSanitizer) {\r\n }\r\n\r\n transform(productName: string): string {\r\n let returnName = '';\r\n\r\n switch (productName) {\r\n case 'VIP3D':\r\n case 'Vip3D':\r\n returnName = 'Vip3D';\r\n break;\r\n\r\n case 'Pool Studio':\r\n returnName = 'Pool Studio';\r\n break;\r\n\r\n case 'VizTerra':\r\n returnName = 'VizTerra';\r\n break;\r\n\r\n default:\r\n returnName = 'Vip3D';\r\n break;\r\n }\r\n\r\n return returnName;\r\n }\r\n\r\n}\r\n\r\n\r\n@Pipe({ name: 'billingCycle' })\r\nexport class BillingCyclePipe implements PipeTransform {\r\n\r\n constructor(private _sanitizer: DomSanitizer) {\r\n }\r\n\r\n transform(Recurring: BillingRecurringTypes): string {\r\n let returnName = '';\r\n\r\n switch (Recurring) {\r\n case BillingRecurringTypes.Yearly:\r\n returnName = 'Yearly';\r\n break;\r\n\r\n case BillingRecurringTypes.Monthly:\r\n returnName = 'Monthly';\r\n break;\r\n\r\n default:\r\n returnName = 'Monthly';\r\n break;\r\n }\r\n\r\n return returnName;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'sanitizeHtml'\r\n})\r\nexport class SanitizeHtmlPipe implements PipeTransform {\r\n\r\n constructor(private _sanitizer: DomSanitizer) {\r\n }\r\n\r\n transform(html: string): SafeHtml {\r\n return this._sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n}\r\n","import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Injectable } from '@angular/core';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { GlobalServices } from './global.service';\r\n\r\n\r\n@Injectable()\r\nexport class AuthGuardService implements CanActivate {\r\n\r\n\r\n constructor( private router: Router, private api: ssApiService, private gb: GlobalServices ) { }\r\n\r\n\r\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n this.gb.ReadFromStorage();\r\n if ( this.gb.Token != undefined && this.gb.Token != '' && this.gb.TokenExpiration != undefined && this.gb.TokenExpiration > new Date() ) {\r\n return true;\r\n } else {\r\n localStorage.setItem('loginRedirect', state.url);\r\n this.router.navigate(['/authentication/signin']);\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpError } from '../models/errors/HttpError';\r\nimport { IBaseResponse } from '../models/comm-http/responses/BaseResponse';\r\nimport { HttpResponse, HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { catchError, map, Observable, throwError } from 'rxjs';\r\nimport { KeyValuePair } from 'app/models/KeyValuePair';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class CommHttpService {\r\n\r\n // router public because it is used in other classes\r\n constructor(private httpMain: HttpClient, private router: Router) {\r\n }\r\n\r\n private StatusCodeToFriendlyMessage(code: number, defaultValue: string = ''): string {\r\n\r\n switch (code) {\r\n\r\n case 401:\r\n return 'Wrong username or password!';\r\n\r\n default:\r\n return defaultValue;\r\n }\r\n\r\n }\r\n\r\n private ErrorToFriendlyMessage(response: HttpResponse): string {\r\n\r\n // check first error in header\r\n let headerKeys = response.headers.keys();\r\n\r\n // headers?\r\n if (!headerKeys) {\r\n // return from status\r\n return this.StatusCodeToFriendlyMessage(response.status, response.statusText);\r\n }\r\n\r\n // check from headers\r\n if (headerKeys.some(x => x === 'autherrorcode')) {\r\n let code = response.headers.get('autherrorcode');\r\n\r\n switch (code) {\r\n\r\n case '0':\r\n return response.headers.get('autherror');\r\n\r\n case '1':\r\n return 'Wrong Username or Password';\r\n\r\n default:\r\n // return from status\r\n return this.StatusCodeToFriendlyMessage(response.status, response.statusText);\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n private HandleError(error: HttpResponse): Observable {\r\n\r\n // let errorResponse: any;\r\n\r\n // if (error.status === 0)\r\n // errorResponse = new HttpNoConnectionError(error);\r\n\r\n // else if (error.status === 401)\r\n // errorResponse = new HttpUnauthorized(error);\r\n\r\n // else if (error.status === 403)\r\n // errorResponse = new HttpForbidden(error);\r\n\r\n // else if (error.status === 404)\r\n // errorResponse = new HttpNotFoundError(error);\r\n\r\n // else if (error.status === 400)\r\n // errorResponse = new BadRequest(error.json());\r\n\r\n // else\r\n let errorResponse = new HttpError(error);\r\n errorResponse.FriendlyTitle = 'Error';\r\n\r\n if (error.status == 0) {\r\n errorResponse.FriendlyTitle = 'Connection Error';\r\n errorResponse.FriendlyMessage = 'Unable to connect to server.';\r\n } else if (error.status == 401) {\r\n localStorage.clear();\r\n this.router.navigate(['/authentication/signin']);\r\n } else {\r\n errorResponse.FriendlyMessage = error.statusText;\r\n }\r\n\r\n\r\n return throwError(errorResponse);\r\n\r\n }\r\n\r\n protected Post(url: string, data: any, headers: HttpHeaders = null, withCredentials: boolean = true): Observable> {\r\n\r\n let reqHeaders: HttpHeaders = headers ? headers : new HttpHeaders();\r\n\r\n return this.httpMain.post(url, data, { headers: reqHeaders, withCredentials: withCredentials })\r\n .pipe(\r\n catchError(\r\n (error) => {\r\n\r\n // if ((error as Response).status == 401)\r\n // this.onAuthError.next(error.statusText);\r\n\r\n return this.HandleError(error);\r\n })\r\n );\r\n }\r\n\r\n protected PostRaw(url: string, data: any, headers: HttpHeaders = null, withCredentials: boolean = true): Observable {\r\n\r\n let reqHeaders: HttpHeaders = headers ? headers : new HttpHeaders();\r\n\r\n return this.httpMain.post(url, data, { headers: reqHeaders, withCredentials: withCredentials })\r\n .pipe(\r\n catchError(\r\n (error) => {\r\n\r\n // if ((error as Response).status == 401)\r\n // this.onAuthError.next(error.statusText);\r\n \r\n return this.HandleError(error);\r\n })\r\n );\r\n }\r\n\r\n\r\n protected Patch(url: string, data: any, headers: HttpHeaders = null): Observable> {\r\n\r\n let reqHeaders: HttpHeaders = headers ? headers : new HttpHeaders();\r\n\r\n return this.httpMain.patch(url, data, { headers: reqHeaders, withCredentials: true })\r\n .pipe(\r\n catchError(\r\n (error) => {\r\n\r\n // if ((error as Response).status == 401)\r\n // this.onAuthError.next(error.statusText);\r\n \r\n return this.HandleError(error);\r\n })\r\n );\r\n }\r\n\r\n\r\n protected Delete(url: string, headers: HttpHeaders = null): Observable> {\r\n\r\n let reqHeaders: HttpHeaders = headers ? headers : new HttpHeaders();\r\n let qData = '';\r\n\r\n\r\n return this.httpMain.delete(url, { headers: reqHeaders, withCredentials: true })\r\n .pipe(\r\n catchError(\r\n (error) => {\r\n\r\n // if ((error as Response).status == 401)\r\n // this.onAuthError.next(error.statusText);\r\n\r\n return this.HandleError(error);\r\n })\r\n );\r\n\r\n }\r\n\r\n protected GetCore(converter: any, url: string, queryData: KeyValuePair[] = null, headers: HttpHeaders = null): Observable> {\r\n\r\n let reqHeaders: HttpHeaders = headers ? headers : new HttpHeaders();\r\n let qData = '';\r\n\r\n if (queryData != null) {\r\n qData = '?';\r\n for (let item of queryData) {\r\n qData += item.Key + '=' + item.Value;\r\n }\r\n }\r\n\r\n return this.httpMain.get(url, { headers: reqHeaders, withCredentials: true })\r\n .pipe(\r\n map((response: HttpResponse) => {\r\n\r\n return converter(response);\r\n\r\n }),\r\n catchError((error) => {\r\n\r\n // if ((error as Response).status == 401)\r\n // this.onAuthError.next(error.statusText);\r\n\r\n return this.HandleError(error);\r\n })\r\n );\r\n\r\n }\r\n\r\n protected Get(url: string, queryData: KeyValuePair[] = null, headers: HttpHeaders = null): Observable> {\r\n\r\n // only properties\r\n\r\n let converter =\r\n function (response: HttpResponse) {\r\n return response;\r\n };\r\n\r\n return this.GetCore(converter, url, queryData, headers);\r\n }\r\n\r\n}\r\n","import { LoginResponse, MemberTypes } from '../models/ss-api/responses/login.response';\r\nimport { Injectable } from '@angular/core';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { DashboardProductsResponse } from 'app/models/ss-api/responses/dashboard.products.response';\r\nimport { environment } from 'environments/environment';\r\nimport { Title, Meta } from '@angular/platform-browser';\r\nimport { MemberBasicInfoResponse } from 'app/models/ss-api/responses/member.basic.info.response';\r\nimport { TrainingHistoryComponent } from 'app/account/components/training-history/training-history.component';\r\nimport { Subject } from 'rxjs';\r\nimport { IBaseResponse } from 'app/models/comm-http/responses/BaseResponse';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class GlobalServices {\r\n\r\n HttpTimeout: number = 20000;\r\n\r\n AdminID: number = 0;\r\n MemberID: number;\r\n Username: string;\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n MemberType: MemberTypes;\r\n\r\n Token: string;\r\n TokenExpiration: Date;\r\n DateTimeLogin: Date;\r\n\r\n ServerDateTime: Date;\r\n\r\n MyProducts: DashboardProductsResponse;\r\n\r\n\tpublic MemberBasicInfo: MemberBasicInfoResponse = new MemberBasicInfoResponse();\r\n\r\n\tpublic hasValidAddress : boolean = false;\r\n\r\n // OrderFormVersion\r\n OrderFormVersion : string = 'v1-3'\r\n // When Updated you MUST update the report panel with a new order form tempalte for JPEG screenshots as well!!!\r\n\r\n \r\n // Dev variables from environment settings\r\n envName: string = environment.envName;\r\n isDevMode: boolean = false;\r\n ReportURL: string = environment.reportUrl;\r\n\r\n\tpublic onMemberProfileUpdated = new Subject>();\r\n\r\n constructor(private api: ssApiService, private titleService: Title, private meta : Meta, private router: Router ) {\r\n this.ReadFromStorage();\r\n this.SubscribeEvents();\r\n\r\n this.ReportURL = this.api.GetReportBotURL();\r\n this.isDevMode = this.api.isDev;\r\n\r\n this.meta.addTag({ name: 'description', content : 'Structure Studios Member site for managing accounts.' });\r\n\r\n console.log(router.url);\r\n if (!router.url.toLowerCase().startsWith(\"/order-form\"))\r\n {\r\n this.GetMemberInfo();\r\n }\t\t\r\n\r\n }\r\n\r\n public SetGlobalsFromLoginResponse(data: LoginResponse, skipToken: boolean = false) {\r\n\r\n this.MemberID = data.MemberID;\r\n this.DateTimeLogin = new Date();\r\n\r\n this.ServerDateTime = new Date();\r\n\r\n this.Email = data.Email;\r\n this.Username = data.Username;\r\n this.FirstName = data.FirstName;\r\n this.LastName = data.LastName;\r\n this.Token = data.Token;\r\n this.TokenExpiration = data.TokenExpiration;\r\n this.MemberType = data.MemberType;\r\n\r\n localStorage.setItem('MemberID', data.MemberID.toString());\r\n localStorage.setItem('DateTimeLogin', new Date().toString());\r\n localStorage.setItem('Email', data.Email);\r\n localStorage.setItem('Username', data.Username);\r\n localStorage.setItem('FirstName', data.FirstName);\r\n localStorage.setItem('LastName', data.LastName);\r\n localStorage.setItem('MemberType', data.MemberType.toString());\r\n\r\n localStorage.setItem('email', data.Username);\r\n localStorage.setItem('token_expiration', data.TokenExpiration.toString());\r\n\r\n // skip token?\r\n // we skip token when we come from login as member from admin\r\n if (!skipToken)\r\n localStorage.setItem('token', data.Token);\r\n \r\n if (!this.router.url.toLowerCase().startsWith(\"/order-form\")) {\r\n this.GetMemberInfo();\r\n }\r\n }\r\n\r\n public Logout() {\r\n localStorage.clear();\r\n }\r\n\r\n public IsDevPublic(): boolean {\r\n\r\n var url = window.location.hostname;\r\n return url.toLowerCase().includes(\"members-dev.structurestudios.com\")\r\n\r\n }\r\n\r\n public IsLocal(): boolean {\r\n\r\n var url = window.location.hostname;\r\n return url.toLowerCase().includes(\"localhost\");\r\n\r\n }\r\n\r\n\t\r\n\tpublic gettingAddress : boolean = false;\r\n\r\n\tpublic GetMemberInfo() {\r\n\t\tthis.gettingAddress = true;\r\n\r\n\t\tlet disposable = this.api.MemberBasicInfo().subscribe(response => {\r\n\t\t\tdisposable.unsubscribe();\r\n\r\n\t\t\tif (!response.Result)\r\n\t\t\t\treturn; // error\r\n\r\n\t\t\tthis.MemberBasicInfo = response.Data;\r\n\t\t\t\r\n\t\t\tlet hasAddress = true;\r\n\r\n\t\t\tif( this.MemberBasicInfo.Address1 == \"\" || this.MemberBasicInfo.Address1 == undefined )\r\n\t\t\t\thasAddress = false;\r\n\t\t\telse if( this.MemberBasicInfo.City == \"\" || this.MemberBasicInfo.City == undefined )\r\n\t\t\t\thasAddress = false;\r\n\t\t\telse if( this.MemberBasicInfo.State == \"\" || this.MemberBasicInfo.State == undefined )\r\n\t\t\t\thasAddress = false;\r\n\t\t\telse if( this.MemberBasicInfo.ZipCode == \"\" || this.MemberBasicInfo.ZipCode == undefined )\r\n\t\t\t\thasAddress = false;\r\n\r\n\t\t\tthis.hasValidAddress = hasAddress;\r\n\t\t\tthis.gettingAddress = false;\r\n\r\n\t\t\tconsole.log(\"GetMemberInfo() complete\");\r\n\t\t\tconsole.log(response);\r\n\r\n\t\t\tthis.onMemberProfileUpdated.next( response );\r\n\r\n\t\t}, error => {\r\n\t\t\tdisposable.unsubscribe();\r\n\t\t\tthis.hasValidAddress = false;\r\n\t\t\tthis.gettingAddress = false;\r\n\t\t\tconsole.log(\"GetMemberInfo() ERROR\");\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t\r\n\tpublic CheckMemberInfo() {\r\n\t\tconsole.log(\"checking member info\", this.MemberBasicInfo);\r\n\t\tthis.GetMemberInfo();\r\n\t\t\r\n\t}\r\n\t\r\n\r\n public SetPageTitle( title : string, description : string = \"\" ) {\r\n \r\n this.titleService.setTitle(title + \" | Member Panel | StructureStudios.com\");\r\n\r\n if( description == \"\" )\r\n description = \"Structure Studios Member site for managing accounts.\";\r\n\r\n this.meta.updateTag({ name: 'description', content: description });\r\n\r\n }\r\n\r\n public SetToken(token: string) {\r\n this.Token = token;\r\n localStorage.setItem('token', token);\r\n }\r\n\r\n SubscribeEvents() {\r\n this.api.onProductsMyProducts.subscribe((response) => { this.MyProducts = response.Data; });\r\n }\r\n\r\n public static replaceAll(str, find, replace) {\r\n return str.replace(new RegExp(this.escapeRegExp(find), 'g'), replace);\r\n }\r\n\r\n public static escapeRegExp(str) {\r\n return str.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\r\n }\r\n\r\n TokenToUrlFriendly(): string {\r\n return GlobalServices.ConverToUrlFriendly(this.Token);\r\n }\r\n\r\n public static ConverToUrlFriendly(input: string): string {\r\n // this.Token = this.Token.Replace(\"\\\\\", \"_\");\r\n input = this.replaceAll(input, '/', '~');\r\n input = this.replaceAll(input, '+', '|');\r\n input = this.replaceAll(input, '=', '<');\r\n\r\n return input;\r\n }\r\n\r\n public static ConverFromUrlFriendly(input: string): string {\r\n // this.Token = this.Token.Replace(\"\\\\\", \"_\");\r\n input = this.replaceAll(input, '~', '/');\r\n input = this.replaceAll(input, '|', '+');\r\n input = this.replaceAll(input, '<', '=');\r\n\r\n return input;\r\n }\r\n\r\n public ClearOrderFormLocalStorage() {\r\n localStorage.removeItem('cartProductID');\r\n localStorage.removeItem('cartBillingCycle');\r\n localStorage.removeItem('cartHasYard');\r\n localStorage.removeItem('email');\r\n }\r\n\r\n ReadFromStorage() {\r\n\r\n let MemberID = localStorage.getItem('MemberID');\r\n if (MemberID != undefined)\r\n this.MemberID = MemberID;\r\n\r\n let Username = localStorage.getItem('Username');\r\n if (Username != undefined)\r\n this.Username = Username;\r\n\r\n let FirstName = localStorage.getItem('FirstName');\r\n if (FirstName != undefined)\r\n this.FirstName = FirstName;\r\n\r\n let LastName = localStorage.getItem('LastName');\r\n if (LastName != undefined)\r\n this.LastName = LastName;\r\n\r\n let Email = localStorage.getItem('email');\r\n if (Email != undefined)\r\n this.Email = Email;\r\n\r\n let MemberType: number = localStorage.getItem('MemberType');\r\n if (MemberType != undefined)\r\n this.MemberType = MemberType;\r\n\r\n let Token = localStorage.getItem('token');\r\n if (Token != undefined)\r\n this.Token = Token;\r\n\r\n let TokenExpiration = localStorage.getItem('token_expiration');\r\n if (TokenExpiration != undefined)\r\n this.TokenExpiration = new Date(TokenExpiration);\r\n\r\n let DateTimeLogin = localStorage.getItem('DateTimeLogin');\r\n if (DateTimeLogin != undefined)\r\n this.DateTimeLogin = new Date(DateTimeLogin);\r\n\r\n\t}\r\n\t\r\n\r\n\r\n\tpublic FormattedPhone( v : string ) : string {\r\n\t\t\r\n\t\tif( v == null || v == undefined ) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\t// trim '-' dashes\r\n\t\tv = v.replace(/-/g,'');\r\n\r\n\t\tv = v.replace(/[^\\d]/g, \"\");\r\n\t\t\r\n\t\t// trim string to 15 characters\r\n\t\tif( v.length > 10) {\r\n\t\t\tif (v.length > 15) {\r\n\t\t\t\tv = v.substr(0, 15);\r\n\t\t\t}\r\n\t\t\treturn ' +' + v;\r\n\t\t}\r\n\t\t\r\n\r\n // new array to hold sections of the License Key\r\n\t\tlet numbers = [];\r\n\r\n\t\t// create set of characters from first 5 characters\r\n\t\tnumbers.push(v.substr(0,3));\r\n\t\t\r\n\t\t// try for next 5\r\n\t\tif(v.substr(3,3)!==\"\")\r\n\t\t\tnumbers.push(v.substr(3,3));\r\n\t\t\r\n\t\t// and last set of 5\r\n\t\tif(v.substr(6,10)!=\"\")\r\n\t\t\tnumbers.push(v.substr(6,4));\r\n\t\t\r\n\t\tif(v.substr(10,15)!=\"\")\r\n\t\t\tnumbers.push(v.substr(10,5));\r\n\r\n\t\t// add '-' dashes back to formated string\r\n\t\tlet newValue = numbers[0];\r\n\t\t\r\n\t\t//if( newValue.length == 3 ) {\r\n\t\t\t\r\n\t\t//}\r\n\r\n\t\tif( numbers.length > 1 ) {\r\n\t\t\tnewValue = '(' + newValue + ') ';\r\n\t\t\tnewValue += numbers[1];\r\n\t\t}\r\n\t\t\t\r\n\r\n\t\tif (numbers.length > 2 )\r\n\t\t\tnewValue += '-' + numbers[2];\r\n\r\n\t\t// if (numbers.length > 3 )\r\n\t\t// \tnewValue += '-' + numbers[3];\r\n\r\n\t\treturn newValue;\r\n\t}\r\n\r\n ThisMonth() {\r\n const month = new Date().getMonth() + 1;\r\n\r\n if (month < 10) {\r\n return '0' + month;\r\n } else {\r\n return month;\r\n }\r\n }\r\n\t\r\n\r\n}\r\n","import { PublicOrderProductsResponse } from '../models/ss-api/responses/public.order.products.response';\r\nimport { TrainingJoinEventRequest } from '../models/ss-api/requests/training.join.event.request';\r\nimport { CancelProductRequest } from '../models/ss-api/requests/cancel.product.request';\r\nimport { UpgradeProductResponse } from '../models/ss-api/responses/upgrade.product.response';\r\nimport { AddCreditCardRequest } from '../models/ss-api/requests/add.credit.card.request';\r\nimport { CreditCardResponseArray } from '../models/ss-api/responses/credit.card.response';\r\nimport { ChangePasswordRequest } from '../models/ss-api/requests/change.password.request';\r\nimport { GISUsageHistoryItemResponseArray } from '../models/ss-api/responses/gis.history.item.response';\r\nimport { GISPurchaseItemResponseArray } from '../models/ss-api/responses/gis.purchase.item.response';\r\nimport { BillingHistoryResponseArray } from '../models/ss-api/responses/billing.history.response';\r\nimport { TwoFactorAuthenticationRequest } from '../models/ss-api/requests/twoFactorAuthentication.request';\r\nimport { SendTwoFactorCodeOptionRequest } from '../models/ss-api/requests/sendTwoFactorCodeOption.request';\r\nimport { catchError, map, Observable, Subject, throwError } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpHeaders, HttpClient } from '@angular/common/http';\r\nimport { CommHttpService } from './comm-http.service';\r\nimport { IBaseResponse } from 'app/models/comm-http/responses/BaseResponse';\r\nimport { HttpError } from 'app/models/errors/HttpError';\r\nimport { ssApiResponse } from '../models/ss-api/responses/ss-api.response';\r\nimport { LoginResponse } from 'app/models/ss-api/responses/login.response';\r\nimport { LoginRequest } from 'app/models/ss-api/requests/login.request';\r\nimport { DashboardProductsResponse } from 'app/models/ss-api/responses/dashboard.products.response';\r\nimport { CreditCardResponse } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { MemberBasicInfoResponse } from 'app/models/ss-api/responses/member.basic.info.response';\r\nimport { GISBundleResponseArray } from 'app/models/ss-api/responses/gis.bundle.response';\r\nimport { CalendarEventResponseArray } from 'app/models/ss-api/responses/calendar.event.response';\r\nimport { OrderGISRequest } from 'app/models/ss-api/requests/order.gis.request';\r\nimport { TrainingEventDetailsResponse } from 'app/models/ss-api/responses/training.event.details.response';\r\nimport { NewMemberRequest } from 'app/models/ss-api/requests/new.member.request';\r\nimport { PublicOrderProductsResponseArray } from 'app/models/ss-api/responses/public.order.products.response';\r\nimport { AddProductRequest } from 'app/models/ss-api/requests/add.product.request';\r\nimport { UpgradableProductsResponseArray } from 'app/models/ss-api/responses/upgradable.products.response';\r\nimport { UpgradeProductRequest } from 'app/models/ss-api/requests/upgrade.product.request';\r\nimport { RedirectResponse } from 'app/models/ss-api/responses/redirect.response';\r\nimport { UpdateCartRequest } from 'app/models/ss-api/requests/update.cart.request';\r\nimport { ResetPasswordRequest } from 'app/models/ss-api/requests/reset.password.request';\r\nimport { SetNewPasswordRequest } from 'app/models/ss-api/requests/set.new.password.request';\r\nimport { TrainingJoinEventResponse } from 'app/models/ss-api/responses/training.join.event.response';\r\nimport { MemberDesignerLicenseBasicsResponseArray } from 'app/models/ss-api/responses/member.designers.licenses.basics.response';\r\nimport { IUnlockLoginRequest } from 'app/models/ss-api/requests/unlock.code.request';\r\nimport { UnfunishedOrderData } from 'app/models/ss-api/responses/unfinished.order.data';\r\nimport { FinishOrderRequest } from 'app/models/ss-api/requests/finish.order.request';\r\nimport { DesignerInstructionsRequest } from '../models/ss-api/requests/designer.instructions.request';\r\nimport { YardAddonOrderRequest } from '../models/ss-api/requests/yard.addon.order.request';\r\nimport { YardAddonPriceResponse } from 'app/models/ss-api/responses/yard.addon.price.response';\r\nimport { UpgradeSimulationResponse } from '../models/ss-api/responses/upgrade.simulation.response';\r\nimport { ReactivateSimulationResponse } from '../models/ss-api/responses/reactivate.simulation.response';\r\nimport { ReactivateRequest } from '../models/ss-api/requests/reactivate.request';\r\nimport { CancelYardRequest } from '../models/ss-api/requests/cancel.yard.request';\r\nimport { NewMemberResponse } from '../models/ss-api/responses/new.member.response';\r\nimport { PayInvoiceRequest } from '../models/ss-api/requests/pay.invoice.request';\r\nimport { environment } from 'environments/environment';\r\nimport { CdKeyReassignRequest } from '../models/ss-api/requests/cdkey.reassign.request';\r\nimport { TrainingEvent } from '../models/domain/training.event';\r\nimport { RegisterForTrainingEventRequest } from '../models/ss-api/requests/register.for.training.event.request';\r\nimport { MemberTrainingCalendarResponse } from '../models/ss-api/responses/member.training.calendar.response';\r\nimport { TrainingCalendarRequest } from '../models/ss-api/requests/training.calendar.request';\r\nimport { MemberTrainingCertificateResponseArray } from '../models/ss-api/responses/member.training.certificate.response';\r\nimport { MemberTrainingCertificatesRequest } from '../models/ss-api/requests/member.training.certificates.request';\r\nimport { TrainingHistoryResponseArray } from '../models/ss-api/responses/training.history.response';\r\nimport { RegisterForTrainingEventResponse } from '../models/ss-api/responses/register.for.training.event.response';\r\nimport { UpdateTrainingEventSubscriptionStatusResponse } from '../models/ss-api/responses/update.training.subscription.status.response';\r\nimport { UpdateTrainingEventSubscriptionStatusRequest } from '../models/ss-api/requests/update.training.event.subscription.status.request';\r\nimport { ReactivateSimulationRequest } from '../models/ss-api/requests/reactivate.simulation.request';\r\nimport { UpdateCreditCardExpirationRequest } from '../models/ss-api/requests/update.credit.card.expiration.request';\r\nimport { ReactivateSimulationRequestv2 } from '../models/ss-api/requests/reactivate.simulation.request.v2';\r\nimport { ReactivateSimulationResponsev2 } from '../models/ss-api/responses/reactivate.simulation.response.V2';\r\nimport { ReactivateRequestv2 } from '../models/ss-api/requests/reactivate.request.v2';\r\nimport { CheckForExistingMemberResponse } from '../models/ss-api/responses/check.for.existing.member.response';\r\nimport { CheckForExistingMemberRequest } from '../models/ss-api/requests/check.for.existing.member.request';\r\nimport { GetTrainingClassesRequest } from 'app/models/ss-api/requests/get.training.classes.request';\r\nimport { TrainingClassArray } from 'app/models/domain/training.class';\r\nimport { CheckHoldEligibilityResponse } from 'app/models/ss-api/responses/check.hold.eligibility.response';\r\nimport { HoldRequest } from 'app/models/ss-api/requests/hold.request';\r\nimport { ResumeLicenseRequest } from 'app/models/ss-api/requests/resume.license.request';\r\nimport { ResumeLicenseSimulationResponse } from 'app/models/ss-api/responses/resume.license..simulation.response';\r\nimport { ResumeLicenseSimulationRequest } from 'app/models/ss-api/requests/resume.license.simulation.request';\r\nimport { UpdateMemberProfileRequest } from 'app/models/ss-api/requests/update.member.profile.request';\r\nimport { MemberProfile } from 'app/models/domain/member.profile';\r\nimport { MemberAnnouncementArray } from 'app/models/ss-api/responses/member.announcement';\r\nimport { UpdateCartResponse } from 'app/models/ss-api/responses/update.cart.response';\r\n\r\n\r\n\r\nclass ssApiUrls {\r\n\r\n // authentication\r\n static readonly Authentication_Login: string = 'Authentication/Login';\r\n static readonly Authentication_Logout: string = 'Authentication/Logout';\r\n static readonly Authentication_SendTwoFactorCode: string = 'Authentication/SendTwoFactorCode';\r\n static readonly Authentication_TwoFactorAuthentication: string = 'Authentication/TwoFactorAuthentication';\r\n static readonly Authentication_ChangePassword: string = 'Authentication/ChangePassword';\r\n static readonly Authentication_ResetPassword: string = 'Authentication/ResetPassword';\r\n static readonly Authentication_SetNewPassword: string = 'Authentication/SetNewPassword';\r\n static readonly Authentication_UnlockLogin: string = 'Authentication/UnlockLogin';\r\n static readonly Authentication_SessionInfo: string = 'Authentication/SessionInfo';\r\n\r\n // member\r\n static readonly Member_New: string = 'Member/New';\r\n static readonly Member_BasicInfo: string = 'Member/BasicInfo';\r\n static readonly Member_Credit: string = 'Member/Credit';\r\n static readonly Member_MemberDesignersLicensesBasics: string = 'Member/MemberDesignersLicensesBasics';\r\n static readonly Member_FinishOrder: string = 'Member/FinishOrder';\r\n static readonly Member_CheckForExistingMember: string = 'Member/CheckForExistingMember';\r\n static readonly Member_Profile: string = 'Member/MemberProfile';\r\n static readonly Member_UpdateProfile: string = 'Member/UpdateMemberProfile'; \r\n static readonly Member_MemberAnnouncements: string = 'Member/MemberAnnouncements';\r\n\r\n // referral\r\n static readonly Referral_Redirect: string = 'Referral/GetRedirect';\r\n\r\n // sales\r\n static readonly Sales_UpdateCart: string = 'Sales/UpdateCart';\r\n static readonly Sales_GetUnfinishedOrderData: string = 'Sales/GetUnfinishedOrderData';\r\n\r\n // products\r\n static readonly Products_PublicOrderProducts: string = 'Products/PublicOrderProducts';\r\n static readonly Products_OrderProducts: string = 'Products/OrderProducts';\r\n static readonly Products_PublicAndSpecialOrderProducts: string = 'Products/PublicAndSpecialOrderProducts';\r\n static readonly Products_Add: string = 'Products/Add';\r\n static readonly Products_Cancel: string = 'Products/Cancel';\r\n static readonly Products_MyProducts: string = 'Products/MyProducts';\r\n static readonly Products_UpgradableProducts: string = 'Products/UpgradableProducts';\r\n static readonly Products_Upgrade: string = 'Products/Upgrade';\r\n static readonly Products_UpgradeSimulation: string = 'Products/UpgradeSimulation';\r\n static readonly Products_ReactivateSimulation: string = 'Products/ReactivateSimulation/';\r\n static readonly Products_Reactivate: string = 'Products/Reactivate';\r\n static readonly Products_ReactivateSimulationv2: string = 'Products/ReactivateSimulationv2/';\r\n static readonly Products_Reactivatev2: string = 'Products/Reactivatev2';\r\n static readonly Products_CheckHoldEligibility: string = 'Products/CheckHoldEligibility/';\r\n static readonly Products_Hold: string = 'Products/Hold/';\r\n static readonly Products_ExtendHold: string = 'Products/ExtendHold/';\r\n static readonly Products_ResumeLicense: string = 'Products/ResumeLicense/';\r\n static readonly Products_ResumeLicenseSimulation: string = 'Products/ResumeLicenseSimulation/';\r\n\r\n // license\r\n static readonly License_Reassign: string = 'License/Reassign';\r\n static readonly License_AssigToLoggedinUser: string = 'License/AssigToLoggedinUser';\r\n static readonly License_GetFirstLicenseKey: string = 'License/GetFirstLicenseKey';\r\n static readonly License_SendLicenseKeyInstructionsToDesignerEmail: string = 'License/SendLicenseKeyInstructionsToDesignerEmail';\r\n\r\n // billing\r\n static readonly Billing_History: string = 'Billing/History';\r\n static readonly Billing_PayInvoice: string = 'Billing/PayInvoice';\r\n\r\n // GIS\r\n static readonly GIS_PurchaseHistory: string = 'GIS/PurchaseHistory';\r\n static readonly GIS_UsageHistory: string = 'GIS/UsageHistory';\r\n static readonly GIS_SharedBundle: string = 'GIS/SharedBundle';\r\n static readonly GIS_IndividualBundle: string = 'GIS/IndividualBundle';\r\n static readonly GIS_Order: string = 'GIS/Order';\r\n\r\n // Yard\r\n static readonly Yard_GetPricing: string = 'Yard/GetPricingForLicense/';\r\n static readonly Yard_Add: string = 'Yard/Add/';\r\n static readonly Yard_Cancel: string = 'Yard/Cancel/';\r\n\r\n // credit card\r\n static readonly CreditCard_GetDefault: string = 'CreditCard/GetDefault';\r\n static readonly CreditCard_GetAll: string = 'CreditCard/GetAll';\r\n static readonly CreditCard_Add: string = 'CreditCard/Add';\r\n static readonly CreditCard_UpdateExpiration: string = 'CreditCard/UpdateExpiration';\r\n static readonly CreditCard_SetAsDefault: string = 'CreditCard/SetDefault';\r\n static readonly CreditCard_Delete: string = 'CreditCard/Delete';\r\n\r\n // training\r\n static readonly Training_GetTrainingEventByID: string = 'Training/GetTrainingEventByID/';\r\n static readonly Training_RegisterForTrainingEvent: string = 'Training/RegisterForTrainingEvent/';\r\n static readonly Training_GetMemberTrainingCalendar: string = 'Training/GetMemberTrainingCalendarv2/';\r\n static readonly Training_GetMemberTrainingCertificates: string = 'Training/GetMemberTrainingCertificates/';\r\n static readonly Training_GetTrainingHistory: string = 'Training/GetTrainingHistory/';\r\n static readonly Training_UpdateTrainingEventSubscriptionStatus: string = 'Training/UpdateTrainingEventSubscriptionStatus/';\r\n static readonly Training_GetTrainingClasses: string = 'Training/GetTrainingClasses/';\r\n}\r\n\r\n@Injectable()\r\nexport class ssApiService extends CommHttpService {\r\n\r\n // private baseUrl: string = \"https://members-pci-api.structurestudios.com/api/\";\r\n // private baseUrl: string = \"http://localhost:55189/api/\"\r\n private baseUrl: string = environment.baseUrl;\r\n private envName: string = environment.envName;\r\n public isDev: boolean = false;\r\n\r\n // busy\r\n public IsBusy: boolean = false;\r\n\r\n // events\r\n public onIsBusyChanged = new Subject();\r\n public onResponse = new Subject();\r\n\r\n public onLoginResponse = new Subject>();\r\n public onSessionInfoResponse = new Subject>();\r\n public onLogoutResponse = new Subject>();\r\n public onSendTwoFactorCode = new Subject>();\r\n public onTwoFactorAuthentication = new Subject>();\r\n public onChangePassword = new Subject>();\r\n public onResetPasswordRequest = new Subject>();\r\n public onSetNewPassword = new Subject>();\r\n public onUnlockLogin = new Subject>();\r\n\r\n public onMemberNew = new Subject>();\r\n public onFinishOrder = new Subject>();\r\n public onMemberBasicInfo = new Subject>();\r\n public onMemberDesignersLicensesBasics = new Subject>();\r\n public onMemberCheckForExistingMember = new Subject>();\r\n public onMemberProfile = new Subject>();\r\n public onMemberUpdateProfile = new Subject>();\r\n public onMemberMemberAnnouncements = new Subject>();\r\n\r\n public onReferralRedirect = new Subject>();\r\n\r\n public onProductsPublicOrderProducts = new Subject>();\r\n public onProductsOrderProducts = new Subject>();\r\n public onProductsPublicAndSpecialOrderProducts = new Subject>();\r\n public onProductsMyProducts = new Subject>();\r\n public onProductsUpgradableProducts = new Subject>();\r\n public onProductsAdd = new Subject>();\r\n public onProductsCancel = new Subject>();\r\n public onProductUpgrade = new Subject>();\r\n public onProductUpgradeSimulation = new Subject>();\r\n public onProductReactivateSimulationn = new Subject>();\r\n public onCheckHoldEligibility = new Subject>();\r\n public onHoldLicense = new Subject>();\r\n public onExtendHoldLicense = new Subject>();\r\n public onResumeLicense = new Subject>();\r\n public onResumeLicenseSimulation = new Subject>();\r\n\r\n public onProductReactivate = new Subject>();\r\n public onProductReactivateSimulationnv2 = new Subject>();\r\n public onProductReactivatev2 = new Subject>();\r\n\r\n\r\n public onLicenseReassign = new Subject>();\r\n public onAssigToLoggedinUser = new Subject>();\r\n public onGetFirstLicenseKey = new Subject>();\r\n public onSendLicenseKeyInstructionsToDesignerEmail = new Subject>();\r\n\r\n public onBillingHistory = new Subject>();\r\n public onBillingPayInvoice = new Subject>();\r\n\r\n public onSalesUpdateCart = new Subject>();\r\n public onSalesGetUnfinishedOrderData = new Subject>();\r\n\r\n public onGISPurchaseHistory = new Subject>();\r\n public onGISUsageHistory = new Subject>();\r\n public onGISSharedBundle = new Subject>();\r\n public onGISIndividualBundle = new Subject>();\r\n public onGISOrder = new Subject>();\r\n\r\n public onCreditCardGetDefault = new Subject>();\r\n public onCreditCardGetAll = new Subject>();\r\n public onCreditCardAdd = new Subject>();\r\n public onCreditCardUpdateExpiration = new Subject>();\r\n public onCreditCardSetDefault = new Subject>();\r\n public onCreditCardDelete = new Subject>();\r\n\r\n public onCalendarData = new Subject();\r\n\r\n public onYardAddonOrder = new Subject();\r\n public onYardGetPricing = new Subject>();\r\n public onYardCancel = new Subject>();\r\n\r\n public onMemberCredit = new Subject>();\r\n\r\n public onTrainingEventByID = new Subject>();\r\n public onRegisterForTrainingEvent = new Subject>();\r\n public onGetMemberTrainingCalendar = new Subject>();\r\n public onGetMemberTrainingCertificates = new Subject>();\r\n public onGetTrainingHistory = new Subject>();\r\n public onUpdateTrainingEventSubscriptionStatus = new Subject>();\r\n public onGetTrainingClasses = new Subject>();\r\n\r\n // leave router to protected because of inheritance\r\n constructor(private http: HttpClient, router: Router) {\r\n super(http, router);\r\n\r\n // Set baseUrl\r\n this.baseUrl = this.GetBaseURL();\r\n\r\n }\r\n\r\n // Method that returns the BaseURL of the API based on the current domain\r\n public GetBaseURL(): string {\r\n\r\n if (this.envName == 'local') {\r\n\r\n return 'https://localhost:4402/api/';\r\n\r\n } else {\r\n\r\n switch (window.location.hostname) {\r\n\r\n case 'members.structurestudios.com':\r\n // return 'https://members-pci-api.structurestudios.com/api/'; // NEW PCI Compliant server/api\r\n return 'https://members-api.structurestudios.com/api/'; // Original API\r\n\r\n case 'members-panel-dev.structurestudios.com':\r\n this.isDev = true;\r\n return 'https://members-api-dev.structurestudios.com/api/';\r\n\r\n case 'member-panel-dev-primo.structurestudios.com':\r\n this.isDev = true;\r\n return 'https://members-api-dev-primo.structurestudios.com/api/';\r\n\r\n case 'localhost':\r\n this.isDev = true;\r\n\t\t\t\t\t// return 'http://localhost:55189/api/';// https://members-api-dev.structurestudios.com/api/''; // DEV API\r\n return 'https://members-api.structurestudios.com/api/'; // LIVE API -- BEE CAREFUL!\r\n // return 'https://members-pci-api.structurestudios.com/api/'; // NEW PCI Compliant server/api\r\n \r\n case 'members-pci.structurestudios.com':\r\n this.isDev = true;\r\n return 'https://members-pci-api.structurestudios.com/api/';\r\n\r\n default:\r\n this.isDev = true;\r\n return 'https://dev-test-api.structurestudios.com/api/';\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n // Method that returns the ReportBotURL of the API based on the current domain\r\n public GetReportBotURL(): string {\r\n\r\n if (this.envName == 'local') {\r\n\r\n return 'https://reports-api.structurestudios.com';\r\n\r\n } else {\r\n\r\n switch (window.location.hostname) {\r\n\r\n case 'members.structurestudios.com':\r\n return 'https://reports-api.structurestudios.com';\r\n\r\n case 'members-panel-dev.structurestudios.com':\r\n return 'https://reports-api-dev.structurestudios.com';\r\n\r\n case 'localhost':\r\n return 'https://reports-api.structurestudios.com';\r\n\r\n default:\r\n return 'https://reports-api.structurestudios.com';\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n private SetBusy(): void {\r\n this.IsBusy = true;\r\n this.onIsBusyChanged.next(true);\r\n }\r\n\r\n private UnsetBusy(): void {\r\n this.IsBusy = false;\r\n this.onIsBusyChanged.next(false);\r\n }\r\n\r\n private FullURL(url: string): string {\r\n return this.baseUrl + url;\r\n }\r\n\r\n\r\n\r\n\r\n // prep\r\n\r\n private getTokenHeader(): HttpHeaders {\r\n\r\n let token = localStorage.getItem('token');\r\n let headers = new HttpHeaders();\r\n\r\n if (token != undefined) {\r\n headers = headers.set('Authorization', 'Bearer ' + token);\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n private prepGet(referalMethod: string, url: string, key: string = ''): Observable> {\r\n this.SetBusy();\r\n\r\n url = this.FullURL(url) + key;\r\n let headers = this.getTokenHeader();\r\n\r\n // request\r\n return this.Get(url, null, headers)\r\n .pipe(\r\n map(response => {\r\n this.UnsetBusy();\r\n \r\n let apiResponse = new ssApiResponse(url, referalMethod, response);\r\n this.onResponse.next(apiResponse);\r\n return response;\r\n }),\r\n catchError((error: HttpError) => {\r\n this.UnsetBusy();\r\n return throwError(error);\r\n })\r\n )\r\n\r\n }\r\n\r\n public prepPOST(referalMethod: string, request: any, url: string): Observable> {\r\n this.SetBusy();\r\n\r\n url = this.FullURL(url);\r\n let headers = this.getTokenHeader();\r\n\r\n // request\r\n return this.Post(url, request, headers)\r\n .pipe(\r\n map(response => {\r\n this.UnsetBusy();\r\n \r\n let apiResponse = new ssApiResponse(url, referalMethod, response);\r\n this.onResponse.next(apiResponse);\r\n return response;\r\n \r\n }),\r\n catchError((error: HttpError) => {\r\n this.UnsetBusy();\r\n return throwError(error);\r\n })\r\n )\r\n }\r\n\r\n\r\n public prepPATCH(referalMethod: string, request: any, url: string): Observable> {\r\n this.SetBusy();\r\n\r\n url = this.FullURL(url);\r\n let headers = this.getTokenHeader();\r\n\r\n // request\r\n return this.Patch(url, request, headers)\r\n .pipe(\r\n map(response => {\r\n this.UnsetBusy();\r\n \r\n let apiResponse = new ssApiResponse(url, referalMethod, response);\r\n this.onResponse.next(apiResponse);\r\n return response;\r\n \r\n }),\r\n catchError((error: HttpError) => {\r\n this.UnsetBusy();\r\n return throwError(error);\r\n })\r\n )\r\n\r\n }\r\n\r\n public prepDelete(referalMethod: string, url: string): Observable> {\r\n this.SetBusy();\r\n\r\n url = this.FullURL(url);\r\n let headers = this.getTokenHeader();\r\n\r\n // request\r\n return this.Delete(url, headers)\r\n .pipe(\r\n map(response => {\r\n this.UnsetBusy();\r\n \r\n let apiResponse = new ssApiResponse(url, referalMethod, response);\r\n this.onResponse.next(apiResponse);\r\n return response;\r\n \r\n }),\r\n catchError((error: HttpError) => {\r\n this.UnsetBusy();\r\n return throwError(error);\r\n })\r\n )\r\n\r\n }\r\n\r\n\r\n // Authentication\r\n public Login(request: LoginRequest): Observable> {\r\n\r\n let referalMethod = 'Login';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Authentication_Login)\r\n .pipe(\r\n map(response => {\r\n\r\n if (response.Result) {\r\n // only when a true result\r\n Object.setPrototypeOf(response.Data, LoginResponse.prototype);\r\n //response.Data.FixDates();\r\n }\r\n \r\n this.onLoginResponse.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public ChangePassword(request: ChangePasswordRequest): Observable> {\r\n\r\n let referalMethod = 'ChangePassword';\r\n\r\n return this.prepPATCH(referalMethod, request, ssApiUrls.Authentication_ChangePassword)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onChangePassword.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public SendTwoFactorCode(request: SendTwoFactorCodeOptionRequest): Observable> {\r\n\r\n let referalMethod = 'SendTwoFactorCode';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Authentication_SendTwoFactorCode)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onSendTwoFactorCode.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public SetNewPassword(request: SetNewPasswordRequest): Observable> {\r\n\r\n let referalMethod = 'SetNewPassword';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Authentication_SetNewPassword)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onSetNewPassword.next(response);\r\n return response;\r\n })\r\n )\r\n }\r\n\r\n public ResetPasswordRequest(request: ResetPasswordRequest): Observable> {\r\n\r\n let referalMethod = 'ResetPasswordRequest';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Authentication_ResetPassword)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onResetPasswordRequest.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public TwoFactorAuthentication(request: TwoFactorAuthenticationRequest): Observable> {\r\n\r\n let referalMethod = 'TwoFactorAuthentication';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Authentication_TwoFactorAuthentication)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onTwoFactorAuthentication.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public Logout(logoutEverywhere: boolean): Observable> {\r\n\r\n let referalMethod = 'Logout';\r\n\r\n return this.prepDelete(referalMethod, ssApiUrls.Authentication_Logout + '/' + logoutEverywhere)\r\n .pipe(\r\n map(response => {\r\n this.onLogoutResponse.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public UnlockLogin(request: IUnlockLoginRequest): Observable> {\r\n\r\n let referalMethod = 'UnlockLogin';\r\n\r\n return this.prepPATCH(referalMethod, request, ssApiUrls.Authentication_UnlockLogin)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onUnlockLogin.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public GetSessionInfo(): Observable> {\r\n\r\n let referalMethod = 'GetSessionInfo';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Authentication_SessionInfo)\r\n .pipe(\r\n map(response => {\r\n\r\n if (response.Result) {\r\n // only when a true result\r\n Object.setPrototypeOf(response.Data, LoginResponse.prototype);\r\n //response.Data.FixDates();\r\n }\r\n \r\n this.onSessionInfoResponse.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n\r\n\r\n // sales\r\n public SalesUpdateCart(request: UpdateCartRequest): Observable> {\r\n\r\n let referalMethod = 'SalesUpdateCart';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Sales_UpdateCart)\r\n .pipe(\r\n map(response => {\r\n console.log(\"UpdateCartResponse\", response);\r\n this.onSalesUpdateCart.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public GetUnfinishedOrder(ufoID: string): Observable> {\r\n\r\n let referalMethod = 'GetUnfinishedOrder';\r\n let url = ssApiUrls.Sales_GetUnfinishedOrderData + '/' + ufoID;\r\n\r\n return this.prepGet(referalMethod, url)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onSalesGetUnfinishedOrderData.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n\r\n // Members\r\n public MemberNew(request: NewMemberRequest): Observable> {\r\n\r\n let referalMethod = 'MemberNew';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Member_New)\r\n .pipe(\r\n map(response => {\r\n this.onMemberNew.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public CheckForExistingMember(request: CheckForExistingMemberRequest): Observable> {\r\n\r\n let referalMethod = 'CheckForExistingMember';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Member_CheckForExistingMember)\r\n .pipe(\r\n map(response => {\r\n this.onMemberCheckForExistingMember.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public FinishOrder(request: FinishOrderRequest): Observable> {\r\n\r\n let referalMethod = 'FinishOrder';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Member_FinishOrder)\r\n .pipe(\r\n map(response => {\r\n this.onFinishOrder.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public MemberBasicInfo(): Observable> {\r\n\r\n let referalMethod = 'MemberBasicInfo';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Member_BasicInfo)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onMemberBasicInfo.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public MemberCredit(): Observable> {\r\n\r\n let referalMethod = 'MemberCredit';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Member_Credit)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onMemberCredit.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public GetMemberAnnouncements(): Observable> {\r\n let referalMethod = 'MemberAnnouncements';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Member_MemberAnnouncements)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onMemberMemberAnnouncements.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public MemberDesignersLicensesBasics(): Observable> {\r\n\r\n let referalMethod = 'MemberDesignersLicensesBasics';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Member_MemberDesignersLicensesBasics)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onMemberDesignersLicensesBasics.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n\r\n\r\n public ReferralRedirect(redirectID: number): Observable> {\r\n\r\n let referalMethod = 'ReferralRedirect';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Referral_Redirect, '/' + redirectID.toString())\r\n .pipe(\r\n map(response => {\r\n\r\n this.onReferralRedirect.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n\r\n public ProductsMyProducts(): Observable> {\r\n\r\n let referalMethod = 'ProductsGetAll';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Products_MyProducts)\r\n .pipe(\r\n map(response => {\r\n\r\n Object.setPrototypeOf(response.Data, DashboardProductsResponse.prototype);\r\n response.Data.InitFromJSON();\r\n \r\n this.onProductsMyProducts.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public BillingHistory(): Observable> {\r\n\r\n let referalMethod = 'BillingHistory';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Billing_History)\r\n .pipe(\r\n map(response => {\r\n\r\n Object.setPrototypeOf(response.Data, BillingHistoryResponseArray.prototype);\r\n response.Data.InitFromJSON();\r\n \r\n this.onBillingHistory.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public BillingPayInvoice(request: PayInvoiceRequest): Observable> {\r\n\r\n let referalMethod = 'BillingPayInvoice';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Billing_PayInvoice)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onBillingPayInvoice.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public GISPurchaseHistory(): Observable> {\r\n\r\n let referalMethod = 'GISPurchaseHistory';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.GIS_PurchaseHistory)\r\n .pipe(\r\n map(response => {\r\n\r\n Object.setPrototypeOf(response.Data, GISPurchaseItemResponseArray.prototype);\r\n response.Data.InitFromJSON();\r\n \r\n this.onGISPurchaseHistory.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public GISUsageHistory(): Observable> {\r\n\r\n let referalMethod = 'GISUsageHistory';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.GIS_UsageHistory)\r\n .pipe(\r\n map(response => {\r\n\r\n Object.setPrototypeOf(response.Data, GISUsageHistoryItemResponseArray.prototype);\r\n response.Data.InitFromJSON();\r\n \r\n this.onGISUsageHistory.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public GISSharedBundle(): Observable> {\r\n\r\n let referalMethod = 'GISSharedBundle';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.GIS_SharedBundle)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onGISSharedBundle.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public GISIndividualBundle(): Observable> {\r\n\r\n let referalMethod = 'GISIndividualBundle';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.GIS_IndividualBundle)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onGISIndividualBundle.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public CreditCardGetDefault(): Observable> {\r\n\r\n let referalMethod = 'CreditCardGetDefault';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.CreditCard_GetDefault)\r\n .pipe(\r\n map(response => {\r\n\r\n Object.setPrototypeOf(response.Data, CreditCardResponse.prototype);\r\n //response.Data.FixDates();\r\n \r\n this.onCreditCardGetDefault.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public CreditCardGetAll(): Observable> {\r\n\r\n let referalMethod = 'CreditCardGetAll';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.CreditCard_GetAll)\r\n .pipe(\r\n map(response => {\r\n\r\n Object.setPrototypeOf(response.Data, CreditCardResponseArray.prototype);\r\n response.Data.InitFromJSON();\r\n \r\n this.onCreditCardGetAll.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public CreditCardAdd(request: AddCreditCardRequest): Observable> {\r\n\r\n let referalMethod = 'CreditCardAdd';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.CreditCard_Add)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onCreditCardAdd.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public CreditCardUpdateExpiration(request: UpdateCreditCardExpirationRequest): Observable> {\r\n\r\n let referalMethod = 'UpdateExpiration';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.CreditCard_UpdateExpiration)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onCreditCardUpdateExpiration.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public CreditCardSetDefault(request: number): Observable> {\r\n\r\n let referalMethod = 'CreditCardSetDefault';\r\n let url = ssApiUrls.CreditCard_SetAsDefault + '/' + request;\r\n\r\n return this.prepPATCH(referalMethod, null, url)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onCreditCardSetDefault.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public CreditCardDelete(request: number): Observable> {\r\n\r\n let referalMethod = 'CreditCardDelete';\r\n let url = ssApiUrls.CreditCard_Delete + '/' + request;\r\n\r\n return this.prepDelete(referalMethod, url)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onCreditCardDelete.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public LicenseReassign(request: CdKeyReassignRequest): Observable> {\r\n\r\n let referalMethod = 'LicenseReassign';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.License_Reassign)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onLicenseReassign.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public GetFirstLicenseKey(): Observable> {\r\n\r\n let referalMethod = 'GetFirstLicenseKey';\r\n let url = ssApiUrls.License_GetFirstLicenseKey;\r\n\r\n return this.prepGet(referalMethod, url)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onGetFirstLicenseKey.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public LicenseAssigToLoggedinUser(licenseKey: string): Observable> {\r\n\r\n let referalMethod = 'LicenseAssigToLoggedinUser';\r\n let url = ssApiUrls.License_AssigToLoggedinUser + '/' + licenseKey;\r\n\r\n return this.prepPATCH(referalMethod, null, url)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onLicenseReassign.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public SendLicenseKeyInstructionsToDesignerEmail(request: DesignerInstructionsRequest): Observable> {\r\n\r\n let referalMethod = 'SendLicenseKeyInstructionsToDesignerEmail';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.License_SendLicenseKeyInstructionsToDesignerEmail)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onSendLicenseKeyInstructionsToDesignerEmail.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public ProductCancel(request: CancelProductRequest): Observable> {\r\n\r\n let referalMethod = 'ProductCancel';\r\n let url = ssApiUrls.Products_Cancel;\r\n\r\n return this.prepPATCH(referalMethod, request, url)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onProductsCancel.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public ProductsAdd(request: AddProductRequest): Observable> {\r\n\r\n let referalMethod = 'ProductsAdd';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Products_Add)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onProductsAdd.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public YardAdd(request: YardAddonOrderRequest): Observable> {\r\n\r\n let referalMethod = 'YardAdd';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Yard_Add)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onProductsAdd.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public YardCancel(request: CancelYardRequest): Observable> {\r\n\r\n let referalMethod = 'YardCancel';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Yard_Cancel)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onYardCancel.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public YardGetPricing(key: string): Observable> {\r\n\r\n let referalMethod = 'YardGetPrices';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Yard_GetPricing, key)\r\n .pipe(\r\n map(response => {\r\n if (response.Result)\r\n //YardAddonPriceResponse.FixDates(response.Data);\r\n \r\n this.onYardGetPricing.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public ProductsUpgrade(request: UpgradeProductRequest): Observable> {\r\n\r\n let referalMethod = 'ProductsUpgrade';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Products_Upgrade)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onProductUpgrade.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public ProductsUpgradeSimulation(request: UpgradeProductRequest): Observable> {\r\n\r\n let referalMethod = 'ProductsUpgradeSimulation';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Products_UpgradeSimulation)\r\n .pipe(\r\n map(response => {\r\n\r\n if (response.Result)\r\n //UpgradeSimulationResponse.FixDates(response.Data);\r\n \r\n this.onProductUpgradeSimulation.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public ProductsReactivateSimulation(licenseKey: string): Observable> {\r\n\r\n let referalMethod = 'ProductsReactivateSimulation';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Products_ReactivateSimulation, licenseKey)\r\n .pipe(\r\n map(response => {\r\n\r\n if (response.Result)\r\n //ReactivateSimulationResponse.FixDates(response.Data);\r\n \r\n this.onProductReactivateSimulationn.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n\r\n public CheckHoldEligibility(licenseKey: string): Observable> {\r\n\r\n let referalMethod = 'CheckHoldEligibility';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Products_CheckHoldEligibility, licenseKey)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onCheckHoldEligibility.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public HoldLicense(request: HoldRequest): Observable> {\r\n\r\n let referalMethod = 'HoldLicense';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Products_Hold)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onHoldLicense.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n\r\n public ExtendHoldLicense(request: HoldRequest): Observable> {\r\n\r\n let referalMethod = 'ExtendHold';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Products_ExtendHold)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onExtendHoldLicense.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n \r\n public ResumeLicenseSimulation(request: ResumeLicenseSimulationRequest): Observable> {\r\n\r\n let referalMethod = 'ResumeLicenseSimulation';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Products_ResumeLicenseSimulation)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onResumeLicenseSimulation.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n } \r\n \r\n public ResumeLicense(request: ResumeLicenseRequest): Observable> {\r\n\r\n let referalMethod = 'ResumeLicense';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Products_ResumeLicense)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onResumeLicense.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n } \r\n\r\n public ProductsReactivateSimulationv2(request: ReactivateSimulationRequestv2): Observable> {\r\n\r\n let referalMethod = 'ReactivateSimulationv2';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Products_ReactivateSimulationv2)\r\n .pipe(\r\n map(response => {\r\n\r\n if (response.Result)\r\n //ReactivateSimulationResponse.FixDates(response.Data);\r\n \r\n this.onProductReactivateSimulationnv2.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public ProductsReactivate(request: ReactivateRequest): Observable> {\r\n\r\n let referalMethod = 'ProductsReactivate';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Products_Reactivate)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onProductReactivate.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public ProductsReactivatev2(request: ReactivateRequestv2): Observable> {\r\n\r\n let referalMethod = 'ProductsReactivatev2';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Products_Reactivatev2)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onProductReactivatev2.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public ProductsPublicOrderProducts(): Observable> {\r\n\r\n let referalMethod = 'ProductsPublicOrderProducts';\r\n let url = ssApiUrls.Products_PublicOrderProducts;\r\n\r\n return this.prepGet(referalMethod, url)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onProductsPublicOrderProducts.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public ProductsOrderProducts(): Observable> {\r\n\r\n let referalMethod = 'ProductsOrderProducts';\r\n let url = ssApiUrls.Products_OrderProducts;\r\n\r\n return this.prepGet(referalMethod, url)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onProductsOrderProducts.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public ProductsPublicAndSpecialOrderProducts(): Observable> {\r\n\r\n let referalMethod = 'ProductsPublicAndSpecialOrderProducts';\r\n let url = ssApiUrls.Products_PublicAndSpecialOrderProducts;\r\n\r\n return this.prepGet(referalMethod, url)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onProductsPublicOrderProducts.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public ProductsUpgradableProducts(licenseKey: string): Observable> {\r\n\r\n let referalMethod = 'ProductsUpgradableProducts';\r\n let url = ssApiUrls.Products_UpgradableProducts + '/' + licenseKey;\r\n\r\n return this.prepGet(referalMethod, url)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onProductsUpgradableProducts.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public CalendarData(start: string, end: string): Observable {\r\n\r\n this.SetBusy();\r\n\r\n let url = 'https://api.structurestudios.com/ISWebService/Member.svc/Json/GetCalenderData';\r\n let headers = new HttpHeaders();\r\n headers.set('Content-Type', 'application/json');\r\n\r\n // 'MM/DD/YYYY'\r\n let data = JSON.stringify({\r\n start: start,\r\n end: end\r\n });\r\n\r\n // request\r\n return this.PostRaw(url, data, headers, false)\r\n .pipe(\r\n map(response => {\r\n this.UnsetBusy();\r\n \r\n let data = response.json() as any;\r\n data = data.d as CalendarEventResponseArray;\r\n \r\n this.onCalendarData.next(data);\r\n return data;\r\n \r\n }),\r\n catchError((error: HttpError) => {\r\n this.UnsetBusy();\r\n return throwError(error);\r\n })\r\n );\r\n\r\n }\r\n\r\n public TrainingEventData(ScheduleID: string): Observable {\r\n\r\n this.SetBusy();\r\n\r\n // let url = \"https://api.structurestudios.com/ISWebService/Member.svc/Json/GetCalenderInfo\";\r\n let url = 'https://api.structurestudios.com/ISWebService/Member.svc/Json/GetCalenderInfo';\r\n let headers = new HttpHeaders();\r\n headers.set('Content-Type', 'application/json');\r\n\r\n // 'MM/DD/YYYY'\r\n let data = JSON.stringify({\r\n ScheduleID\r\n });\r\n\r\n // request\r\n return this.PostRaw(url, data, headers, false)\r\n .pipe(\r\n map(response => {\r\n this.UnsetBusy();\r\n \r\n let data = response.json() as any;\r\n data = data.d as TrainingEventDetailsResponse;\r\n \r\n this.onCalendarData.next(data);\r\n return data;\r\n \r\n }),\r\n catchError((error: HttpError) => {\r\n this.UnsetBusy();\r\n return throwError(error);\r\n })\r\n );\r\n\r\n }\r\n\r\n public TrainingEventJoin(request: TrainingJoinEventRequest): Observable {\r\n\r\n this.SetBusy();\r\n\r\n let url = 'https://api.structurestudios.com/ISWebService/Member.svc/Json/JoinEvent';\r\n let headers = new HttpHeaders();\r\n headers.set('Content-Type', 'application/json');\r\n\r\n // 'MM/DD/YYYY'\r\n let data = JSON.stringify({\r\n Token: request.Token,\r\n ScheduleID: request.ScheduleID,\r\n Email: request.Email,\r\n CDKEY: request.CDKEY,\r\n AdditionalEmail: request.AdditionalEmail,\r\n AdditionalPhone: request.AdditionalPhone,\r\n });\r\n\r\n // request\r\n return this.PostRaw(url, data, headers, false)\r\n .pipe(\r\n map(response => {\r\n this.UnsetBusy();\r\n \r\n let data = response.json() as any;\r\n data = data.d as TrainingJoinEventResponse;\r\n \r\n this.onCalendarData.next(data);\r\n return data;\r\n \r\n }),\r\n catchError((error: HttpError) => {\r\n this.UnsetBusy();\r\n return throwError(error);\r\n })\r\n );\r\n\r\n }\r\n\r\n\r\n public GISOrder(request: OrderGISRequest): Observable> {\r\n\r\n let referalMethod = 'GISOrder';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.GIS_Order)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onGISOrder.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n // training (ssdb2)\r\n\r\n public RegisterForTrainingEvent(request: RegisterForTrainingEventRequest): Observable> {\r\n\r\n let referalMethod = 'RegisterForTrainingEvent';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Training_RegisterForTrainingEvent)\r\n .pipe(\r\n map(response => {\r\n this.onRegisterForTrainingEvent.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public GetMemberTrainingCalendar(request: TrainingCalendarRequest): Observable> {\r\n\r\n let referalMethod = 'GetMemberTrainingCalendar';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Training_GetMemberTrainingCalendar)\r\n .pipe(\r\n map(response => {\r\n this.onGetMemberTrainingCalendar.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public GetMemberTrainingCertificates(request: MemberTrainingCertificatesRequest): Observable> {\r\n\r\n let referalMethod = 'GetMemberTrainingCertificates';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Training_GetMemberTrainingCertificates)\r\n .pipe(\r\n map(response => {\r\n this.onGetMemberTrainingCertificates.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public GetTrainingClasses(request: GetTrainingClassesRequest): Observable> {\r\n\r\n let referalMethod = 'GetTrainingClasses';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Training_GetTrainingClasses)\r\n .pipe(\r\n map(response => {\r\n this.onGetTrainingClasses.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public GetTrainingHistory(): Observable> {\r\n\r\n let referalMethod = 'GetTrainingHistory';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Training_GetTrainingHistory)\r\n .pipe(\r\n map(response => {\r\n this.onGetTrainingHistory.next(response);\r\n return response;\r\n })\r\n );\r\n\r\n }\r\n\r\n public UpdateTrainingEventSubscriptionStatus(request: UpdateTrainingEventSubscriptionStatusRequest): Observable> {\r\n\r\n let referalMethod = 'UpdateTrainingEventSubscriptionStatus';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Training_UpdateTrainingEventSubscriptionStatus)\r\n .pipe(\r\n map(response => {\r\n this.onUpdateTrainingEventSubscriptionStatus.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public UpdateMemberProfile(request: UpdateMemberProfileRequest): Observable> {\r\n\r\n let referalMethod = 'CheckForExistingMember';\r\n\r\n return this.prepPOST(referalMethod, request, ssApiUrls.Member_UpdateProfile)\r\n .pipe(\r\n map(response => {\r\n this.onMemberUpdateProfile.next(response);\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n public MemberProfile(): Observable> {\r\n\r\n let referalMethod = 'MemberProfile';\r\n\r\n return this.prepGet(referalMethod, ssApiUrls.Member_Profile)\r\n .pipe(\r\n map(response => {\r\n\r\n this.onMemberProfile.next(response);\r\n return response;\r\n })\r\n );\r\n } \r\n\r\n}\r\n","import * as toastr from 'toastr';\r\n\r\nexport enum ToastrTypes {\r\n Success,\r\n Info,\r\n Warning,\r\n Error\r\n}\r\n\r\nexport class xToastr {\r\n\r\n public static ShowToast(type: ToastrTypes, title: string, message: string, options: any = \"\", positionClass: string = \"toast-top-center\") {\r\n\r\n if (options != \"\") {\r\n toastr.options = options;\r\n } else {\r\n //default options\r\n toastr.options = {\r\n closeButton: true,\r\n progressBar: true,\r\n debug: true,\r\n preventDuplicates: true,\r\n positionClass: positionClass,\r\n onclick: null,\r\n showDuration: 400,\r\n hideDuration: 1000,\r\n timeOut: 5000,\r\n extendedTimeOut: 1000,\r\n showEasing: \"swing\",\r\n hideEasing: \"linear\",\r\n showMethod: \"fadeIn\",\r\n hideMethod: \"fadeOut\"\r\n };\r\n }\r\n\r\n switch (type) {\r\n\r\n case ToastrTypes.Info:\r\n toastr.info(message, title);\r\n break;\r\n\r\n case ToastrTypes.Error:\r\n toastr.error(message, title);\r\n break;\r\n\r\n case ToastrTypes.Success:\r\n toastr.success(message, title);\r\n break;\r\n\r\n case ToastrTypes.Warning:\r\n toastr.warning(message, title);\r\n break;\r\n\r\n default:\r\n toastr.error(message, title);\r\n }\r\n\r\n }\r\n}","import Swal from 'sweetalert2';\r\nimport { AddCreditCardRequest } from 'app/models/ss-api/requests/add.credit.card.request';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, UntypedFormControl } from '@angular/forms';\r\nimport { CreditCardResponse, CreditCardTypes } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { CreditCardResponseArray } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { HttpError } from 'app/models/errors/HttpError';\r\nimport { CreditCard } from 'angular-cc-library';\r\nimport { MemberBasicInfoResponse } from 'app/models/ss-api/responses/member.basic.info.response';\r\nimport * as moment from 'moment';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { CreditCardHelper } from 'app/helpers/creditcard';\r\n\r\n\r\nfunction CustomCreditCardValidator(c: UntypedFormControl) {\r\n\r\n let cardType = CreditCardHelper.GetCardTypes(c.value);\r\n\r\n if (cardType == CreditCardTypes.Unknown || cardType == null) {\r\n return {\r\n CustomCreditCardValidator: {\r\n valid: false\r\n }\r\n }\r\n } else {\r\n return null;\r\n }\r\n\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'credit-card-add',\r\n templateUrl: './credit-card-add.component.html',\r\n styleUrls: ['./credit-card-add.component.scss']\r\n})\r\nexport class CreditCardAddComponent implements OnInit {\r\n\r\n\r\n @Input('showCancel') showCancel: boolean = false;\r\n @Input('ReturnDefaultCard') ReturnDefaultCard: boolean = true;\r\n\r\n @Output('cardAdded') cardAdded: EventEmitter = new EventEmitter();\r\n @Output('cancelAdd') cancelAdd: EventEmitter = new EventEmitter();\r\n\r\n @Output('close') close: EventEmitter = new EventEmitter();\r\n\r\n\r\n // dialog confirm add creditcard\r\n Add_Confirm_Title: string = 'Add New Credit Card?';\r\n Add_Confirm_Text: string = 'You are about to add a new Credit Card.';\r\n\r\n // dialog added info\r\n Add_Added_Title: string = 'Saved!';\r\n Add_Added_Text: string = 'New Credit Card Saved.';\r\n Add_Added_Timeout: number = 1500;\r\n\r\n // dialog confirm delete creditcard\r\n Delete_Confirm_Title: string = 'Delete Credit Card?';\r\n Delete_Confirm_Text: string = 'You are about to delete a Credit Card.';\r\n\r\n // dialog deleted info\r\n Delete_Deleted_Title: string = 'Deleted!';\r\n Delete_Deleted_Text: string = 'Credit Card Deleted.';\r\n Delete_Deleted_Timeout: number = 1500;\r\n\r\n // dialog confirm set default creditcard\r\n SetDefault_Confirm_Title: string = 'Change default Credit Card?';\r\n SetDefault_Confirm_Text: string = 'You are about to change your default Credit Card.';\r\n\r\n // dialog default saved info\r\n SetDefault_Saved_Title: string = 'Saved!';\r\n SetDefault_Saved_Text: string = 'New default Credit Card saved.';\r\n SetDefault_Saved_Timeout: number = 1500;\r\n\r\n // YEAR OPTIOINS FOR FORM\r\n Year: number = new Date().getFullYear();\r\n YearRange: any[] = [];\r\n\r\n // response stuff\r\n Cards: CreditCardResponseArray;\r\n DefaultCard: CreditCardResponse;\r\n\r\n submitted: boolean = false;\r\n ccardForm: UntypedFormGroup;\r\n ccForm: UntypedFormGroup;\r\n formSetAsDefaultVisible: boolean = true;\r\n\r\n public IsBusy: boolean = false;\r\n\r\n public MemberBasicInfo: MemberBasicInfoResponse = new MemberBasicInfoResponse();\r\n\r\n constructor(\r\n private api: ssApiService,\r\n private _fb: UntypedFormBuilder,\r\n // private sweetAlertService: SweetAlertService,\r\n public gb: GlobalServices) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n console.log(new Date().getFullYear());\r\n\r\n this.RefreshCards();\r\n\r\n this.gb.CheckMemberInfo();\r\n\r\n this.ccForm = this._fb.group({\r\n creditCard: ['', [CustomCreditCardValidator]],\r\n expMonth: [this.ThisMonth(), [Validators.required]],\r\n expYear: [new Date().getFullYear(), [Validators.required]],\r\n cvc: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(4)]],\r\n firstName: ['', [Validators.required, Validators.minLength(2)]],\r\n lastName: ['', [Validators.required, Validators.minLength(2)]],\r\n zipCode: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(10)]],\r\n }),\r\n\r\n this.ccardForm = this._fb.group({\r\n creditCard: this.ccForm,\r\n state: ['', [Validators.minLength(2)]],\r\n address1: ['', [Validators.minLength(3)]],\r\n zipCode: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(10)]],\r\n country: new UntypedFormControl('', [Validators.required]),\r\n city: ['', [Validators.required, Validators.minLength(3)]],\r\n setAsDefault: [true]\r\n });\r\n\r\n // SET UP YEAR DROPDOWN\r\n for (let i: number = 0; i < 15; i++) {\r\n this.YearRange.push(this.Year + i);\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n isValidExpiration() {\r\n let ccExpMonth = this.ccForm.get('expMonth').value;\r\n let ccExpYear = this.ccForm.get('expYear').value;\r\n\r\n if (moment(ccExpMonth + '/' + ccExpYear, 'MM/YYYY').isSameOrAfter(moment(moment().format('MM/YYYY'), 'MM/YYYY'))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n ThisMonth() {\r\n const month = new Date().getMonth() + 1;\r\n\r\n if (month < 10) {\r\n return '0' + month;\r\n } else {\r\n return month;\r\n }\r\n }\r\n\r\n preFillBillingInfo(data: MemberBasicInfoResponse) {\r\n\r\n this.ccardForm.controls.firstName.setValue(data.Firstname);\r\n this.ccardForm.controls.lastName.setValue(data.Lastname);\r\n this.ccardForm.controls.address1.setValue(data.Address1);\r\n this.ccardForm.controls.city.setValue(data.City);\r\n this.ccardForm.controls.country.setValue(data.Country);\r\n this.ccardForm.controls.zipCode.setValue(data.ZipCode);\r\n this.ccardForm.controls.state.setValue(data.State);\r\n this.ccardForm.controls.setAsDefault.setValue(true);\r\n\r\n }\r\n\r\n refreshPreFillData() {\r\n\r\n // if we have the data skip fetch\r\n if (this.MemberBasicInfo.Firstname != undefined && this.MemberBasicInfo.Firstname != '') {\r\n this.preFillBillingInfo(this.MemberBasicInfo);\r\n return;\r\n }\r\n\r\n\r\n // fetch the data on the server\r\n this.IsBusy = true;\r\n\r\n let request = this.api.MemberBasicInfo()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n this.MemberBasicInfo = response.Data;\r\n this.preFillBillingInfo(response.Data);\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n this.IsBusy = false;\r\n }\r\n );\r\n\r\n\r\n }\r\n\r\n\r\n ProcessDefaultCardArray(newDefaultCardID: number) {\r\n /*\r\n //reset default card and put in global array\r\n this.DefaultCard.IsDefault = false;\r\n this.Cards.push(this.DefaultCard);\r\n\r\n //find default card\r\n let index = this.Cards.findIndex(x => x.ID == newDefaultCardID);\r\n\r\n //set default card\r\n this.DefaultCard = this.Cards[index];\r\n this.DefaultCard.IsDefault = true;\r\n\r\n //remove default card from list\r\n this.Cards.splice(index, 1);\r\n */\r\n }\r\n\r\n\r\n\r\n\r\n SetCardAsDefault(id: number): Promise {\r\n\r\n this.IsBusy = true;\r\n\r\n return this.api.CreditCardSetDefault(id)\r\n .toPromise()\r\n .then(response => {\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n // ok\r\n this.ProcessDefaultCardArray(id);\r\n\r\n })\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n });\r\n\r\n }\r\n\r\n\r\n getExpDateMonth(month: string): string {\r\n\r\n try {\r\n\r\n // let month = expDate.split('/')[0].trim();\r\n if (month.length == 1)\r\n return '0' + month;\r\n else\r\n return month;\r\n\r\n } catch (e) {\r\n return '0';\r\n }\r\n }\r\n\r\n getExpDateYear(year: string): string {\r\n\r\n try {\r\n\r\n // let year = expDate.split('/')[1].trim();\r\n if (year.length == 2)\r\n return '20' + year;\r\n else\r\n return year;\r\n\r\n } catch (e) {\r\n return '0';\r\n }\r\n }\r\n\r\n getDateCreated(createdDate: Date): any {\r\n if (createdDate == undefined)\r\n return '';\r\n\r\n let returnDate = createdDate.getDay() + '/' + createdDate.getMonth() + '/' + createdDate.getFullYear();\r\n return returnDate;\r\n }\r\n\r\n SubmitNewCreditCard(ccardForm: UntypedFormGroup) {\r\n\r\n console.log(ccardForm);\r\n\r\n this.submitted = true;\r\n\r\n // check form is valid\r\n if (!this.ccForm.valid)\r\n return;\r\n\r\n // check card is valid\r\n let ccard = this.ccForm.controls.creditCard;\r\n if (!ccard.valid)\r\n return;\r\n\r\n console.log('ccard + ', ccard);\r\n\r\n // check expiration is valid\r\n // let expDate = ccardForm.controls.expDate;\r\n // if (!expDate.valid)\r\n // \treturn;\r\n\r\n // extract expiration month and year\r\n let expMonth = this.getExpDateMonth(this.ccForm.controls.expMonth.value);\r\n let expYear = this.getExpDateYear(this.ccForm.controls.expYear.value);\r\n // let expMonth = ccardForm.controls.expMonth.value;\r\n // let expYear = ccardForm.controls.expYear.value;\r\n\r\n // check cvc\r\n // let cvc = ccardForm.controls.cvc;\r\n // if (!cvc.valid)\r\n // return;\r\n\r\n // get credit card type\r\n let card = CreditCard.cardFromNumber(this.ccForm.controls.creditCard.value);\r\n let ctype = card.type;\r\n\r\n // get other data\r\n let address1 = ccardForm.controls.address1.value;\r\n let city = ccardForm.controls.city.value;\r\n let country = ccardForm.controls.country.value;\r\n let zipCode = this.ccForm.controls.zipCode.value;\r\n let state = ccardForm.controls.state.value;\r\n let setAsDefault = ccardForm.controls.setAsDefault.value;\r\n let firstName = this.ccForm.controls.firstName.value;\r\n let lastName = this.ccForm.controls.lastName.value;\r\n\r\n // put date in request\r\n let newCard = new AddCreditCardRequest();\r\n\r\n // newCard.Address01 = address1;\r\n newCard.CardType = CreditCardResponse.GetCreditCardTypeFromString(ctype);\r\n // newCard.City = city;\r\n // newCard.Country = country;\r\n newCard.CreditCardNumber = ccard.value;\r\n newCard.CVV = Number.parseInt(this.ccForm.controls.cvc.value);\r\n newCard.ExpMonth = Number.parseInt(expMonth);\r\n newCard.ExpYear = Number.parseInt(expYear);\r\n // newCard.State = state;\r\n newCard.SetAsDefault = (setAsDefault == null) ? false : setAsDefault;\r\n newCard.FirstName = firstName;\r\n newCard.LastName = lastName;\r\n newCard.ZipCode = zipCode;\r\n\r\n console.log(newCard);\r\n\r\n // confirm\r\n Swal.fire({\r\n title: this.Add_Confirm_Title,\r\n text: this.Add_Confirm_Text,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: 'Yes, add!',\r\n cancelButtonText: 'No, cancel',\r\n allowOutsideClick: false,\r\n showLoaderOnConfirm: true,\r\n preConfirm: () => {\r\n // addcard\r\n return this.AddCreditCard(newCard);\r\n }\r\n })\r\n .then(\r\n (response) => {\r\n\r\n // reset form\r\n // this.ccardForm.controls.cvc.setValue('');\r\n // this.ccardForm.controls.creditCard.setValue('');\r\n // this.ccardForm.controls.expDate.setValue(\"\");\r\n\r\n if (response.isDismissed) {\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n } else {\r\n // show confirmation\r\n Swal.fire(\r\n {\r\n title: this.Add_Added_Title,\r\n text: this.Add_Added_Text,\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: this.Add_Added_Timeout\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n\r\n },\r\n (dismiss) => {\r\n if (dismiss === 'cancel') {\r\n\r\n if (!confirm)\r\n return;\r\n\r\n // show cancelled\r\n Swal.fire({\r\n title: 'Cancelled',\r\n text: 'No changes are saved.',\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n AddCreditCard(newCard: AddCreditCardRequest): Promise {\r\n\r\n this.IsBusy = true;\r\n\r\n return this.api.CreditCardAdd(newCard).toPromise()\r\n .then(\r\n response => {\r\n this.IsBusy = false;\r\n\r\n if (response.Result) {\r\n // switch tabs\r\n this.RefreshCards(true, newCard);\r\n return true;\r\n }\r\n\r\n Swal.fire({\r\n title: 'Failed',\r\n text: response.Message,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1000\r\n })\r\n .then(() => { }, () => { }); // keep this line to prevent promise error;\r\n return false;\r\n },\r\n )\r\n .catch((error: HttpError) => {\r\n this.IsBusy = false;\r\n }\r\n );\r\n\r\n\r\n }\r\n\r\n RefreshCards(closeMe: boolean = false, newCard?: AddCreditCardRequest): void {\r\n\r\n this.IsBusy = true;\r\n\r\n let request = this.api.CreditCardGetAll()\r\n .subscribe(response => {\r\n request.unsubscribe();\r\n\r\n this.IsBusy = false;\r\n\r\n if (!response.Result)\r\n return; // error\r\n\r\n if (response.Data.length == 0)\r\n return;\r\n\r\n this.Cards = response.Data;\r\n\r\n // find default card\r\n let index = this.Cards.findIndex(x => x.IsDefault == true);\r\n\r\n // set default card\r\n this.DefaultCard = this.Cards[index];\r\n\r\n // remove default card from list\r\n if (!this.ReturnDefaultCard)\r\n this.Cards.splice(index, 1);\r\n\r\n if (closeMe) {\r\n const newCardId = this.Cards.find(card => card.FirstName === newCard.FirstName && card.LastName === newCard.LastName && card.LastFour === newCard.CreditCardNumber.slice(-4))?.ID;\r\n this.cardAdded.emit({ cards: this.Cards, newCardId });\r\n }\r\n\r\n },\r\n\r\n\r\n (error: HttpError) => {\r\n request.unsubscribe();\r\n this.IsBusy = false;\r\n }\r\n );\r\n\r\n\r\n }\r\n\r\n\r\n cancel() {\r\n this.cancelAdd.emit(false);\r\n }\r\n\r\n Close() {\r\n this.close.emit(false);\r\n }\r\n\r\n isFormValid() {\r\n\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss'],\r\n})\r\nexport class FooterComponent {\r\n\r\n public dateNow: any = Date.now();\r\n\r\n constructor() {\r\n }\r\n}\r\n","import { Component, ViewChild, EventEmitter, Output, OnInit, AfterViewInit, Input, forwardRef, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\r\ndeclare const google: any;\r\n\r\n@Component({\r\n selector: 'app-google-places',\r\n templateUrl: './google-places.component.html',\r\n styleUrls: ['./google-places.component.css'],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => GooglePlacesComponent ), multi: true }\r\n ]\r\n})\r\nexport class GooglePlacesComponent implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {\r\n @Input() adressType: string;\r\n @Input() required: boolean;\r\n @Input() controlDirty;\r\n\r\n @Output() setAddress: EventEmitter = new EventEmitter();\r\n @ViewChild('addresstext') addresstext: any;\r\n innerValue: any = '';\r\n\r\n queryWait: boolean;\r\n initialized: boolean;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnChanges(data: SimpleChanges) {\r\n if (data.controlDirty) {\r\n if (this.controlDirty) {\r\n this.formGroup.controls.address1.markAsDirty();\r\n } else {\r\n this.formGroup.controls.address1.markAsPristine();\r\n }\r\n }\r\n\r\n if (data.required) {\r\n this.formGroup.controls.address1.setValidators(this.required ? [Validators.required] : []);\r\n this.formGroup.controls.address1.updateValueAndValidity();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n public formGroup: UntypedFormGroup = new UntypedFormGroup({\r\n address1: new UntypedFormControl([], [Validators.required]),\r\n });\r\n \r\n // get accessor\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n \r\n // set accessor including call the onchange callback\r\n set value(v: any) {\r\n if (v !== this.innerValue) {\r\n this.innerValue = v;\r\n this.onChange(v);\r\n }\r\n }\r\n \r\n onChange: any = () => {};\r\n onTouched: any = () => {};\r\n \r\n registerOnChange(fn) {\r\n this.onChange = fn;\r\n }\r\n\r\n onTyping() {\r\n if (!this.initialized) {\r\n setTimeout(() => {\r\n this.getPlaceAutocomplete();\r\n }, 1000);\r\n this.initialized = true;\r\n }\r\n }\r\n \r\n registerOnTouched(fn) {\r\n this.onTouched = fn;\r\n }\r\n \r\n writeValue(val) {\r\n this.formGroup.controls['address1'].setValue(val, { emitEvent: false });\r\n this.formGroup.valueChanges\r\n // .pipe(\r\n // delay(0)\r\n // )\r\n .subscribe(values => {\r\n this.onTouched(true);\r\n this.onChange(values.address1);\r\n });\r\n \r\n if (val !== this.innerValue) {\r\n this.innerValue = val;\r\n }\r\n }\r\n\r\n private getPlaceAutocomplete() {\r\n const autocomplete = new google.maps.places.Autocomplete(this.addresstext.nativeElement,\r\n {\r\n componentRestrictions: { country: 'US' },\r\n types: [this.adressType], // 'establishment' / 'address' / 'geocode'\r\n fields: ['address_component', 'formatted_address'] // Avoid paying for data that you don't need by restricting the set of place fields that are returned to just the address components.\r\n });\r\n\r\n google.maps.event.addListener(autocomplete, 'place_changed', () => {\r\n autocomplete.get\r\n const place = autocomplete.getPlace();\r\n this.invokeEvent(place);\r\n });\r\n }\r\n\r\n invokeEvent(place: Object) {\r\n this.setAddress.emit(place);\r\n }\r\n}\r\n","import * as $ from 'jquery';\r\n\r\nexport function correctHeight() {\r\n\r\n let pageWrapper = $('#page-wrapper');\r\n let navbarHeight = $('nav.navbar-default').height();\r\n let wrapperHeight = pageWrapper.height();\r\n\r\n if (navbarHeight > wrapperHeight) {\r\n pageWrapper.css('min-height', navbarHeight + 'px');\r\n }\r\n\r\n if (navbarHeight <= wrapperHeight) {\r\n if (navbarHeight < $(window).height()) {\r\n pageWrapper.css('min-height', $(window).height() + 'px');\r\n } else {\r\n pageWrapper.css('min-height', navbarHeight + 'px');\r\n }\r\n }\r\n\r\n if ($('body').hasClass('fixed-nav')) {\r\n if (navbarHeight > wrapperHeight) {\r\n pageWrapper.css('min-height', navbarHeight + 'px');\r\n } else {\r\n pageWrapper.css('min-height', $(window).height() - 60 + 'px');\r\n }\r\n }\r\n}\r\n\r\nexport function detectBody() {\r\n if ($(document).width() < 769) {\r\n $('body').addClass('body-small');\r\n } else {\r\n $('body').removeClass('body-small');\r\n }\r\n}\r\n\r\nexport function smoothlyMenu() {\r\n if (!$('body').hasClass('mini-navbar') || $('body').hasClass('body-small')) {\r\n // Hide menu in order to smoothly turn on when maximize menu\r\n $('#side-menu').hide();\r\n // For smoothly turn on menu\r\n setTimeout(\r\n function () {\r\n $('#side-menu').fadeIn(400);\r\n }, 200);\r\n } else if ($('body').hasClass('fixed-sidebar')) {\r\n $('#side-menu').hide();\r\n setTimeout(\r\n function () {\r\n $('#side-menu').fadeIn(400);\r\n }, 100);\r\n } else {\r\n // Remove all inline style from $ fadeIn function to reset menu state\r\n $('#side-menu').removeAttr('style');\r\n }\r\n}\r\n\r\nexport function SwapBox(boxToShow) {\r\n\r\n $('.swapBox').removeClass('fadeInDown');\r\n $('.swapBox').addClass('fadeOutUp');\r\n\r\n $('.swapBox.active').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {\r\n $('.swapBox.active').removeClass('.active');\r\n\r\n $('.swapBox').addClass('hide');\r\n\r\n $(boxToShow).removeClass('fadeOutUp');\r\n $(boxToShow).removeClass('hide');\r\n $(boxToShow).addClass('fadeInDown');\r\n $(boxToShow).addClass('active');\r\n });\r\n\r\n}\r\n\r\n\r\n","import { MemberTypes } from '../../models/ss-api/responses/login.response';\r\nimport { GlobalServices } from '../../services/global.service';\r\n\r\nimport { AfterViewInit, Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport * as $ from 'jquery';\r\nwindow['jQuery'] = $;\r\n\r\nimport 'metismenu';\r\nimport 'jquery-slimscroll';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { MemberDesignerLicenseBasicsResponseArray } from 'app/models/ss-api/responses/member.designers.licenses.basics.response';\r\nimport { MemberAnnouncementArray } from 'app/models/ss-api/responses/member.announcement';\r\nimport { interval } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'nav-menu',\r\n templateUrl: './navmenu.component.html',\r\n styleUrls: ['./navmenu.component.css']\r\n})\r\nexport class NavMenuComponent implements OnInit, AfterViewInit {\r\n\r\n public UserType: string;\r\n\r\n devMenu: boolean = false;\r\n\r\n nonVizterraProduct: boolean;\r\n\r\n MyProducts: MemberDesignerLicenseBasicsResponseArray;\r\n\r\n MyAnnouncements: MemberAnnouncementArray;\r\n\r\n devAccounts: string[] = [\r\n 'michael@structurestudios.com',\r\n 'fausto@structurestudios.com',\r\n 'fausto2@structurestudios.com'\r\n ];\r\n\r\n constructor(private api: ssApiService, private router: Router, public gb: GlobalServices) { }\r\n\r\n activeRoute(routename: string): boolean {\r\n return this.router.url.indexOf(routename) > -1;\r\n }\r\n\r\n ngOnInit() {\r\n this.checkForDevMenu();\r\n this.CheckIfMemberHasNonVizterraProduct();\r\n this.CheckAnnouncements();\r\n //Every 60 seconds...\r\n interval(60000).subscribe(x => {\r\n this.CheckAnnouncements();\r\n });\r\n }\r\n\r\n AccountHolder(): string {\r\n\r\n return (this.gb.MemberType == MemberTypes.Member) ? 'Member' : 'Designer';\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n\r\n ($('#side-menu')).metisMenu();\r\n\r\n if ($('body').hasClass('fixed-sidebar')) {\r\n ($('.sidebar-collapse')).slimscroll({\r\n height: '100%'\r\n });\r\n }\r\n }\r\n CheckAnnouncements(){\r\n console.log(\"ann\", \"now\");\r\n const subscription = this.api.GetMemberAnnouncements().subscribe(res => {\r\n // this.MyProducts = res.Data.Licenses.filter(license => license.Status == 1);\r\n this.MyAnnouncements = res.Data;\r\n });\r\n }\r\n CheckIfMemberHasNonVizterraProduct() {\r\n let productFound = false;\r\n const subscription = this.api.MemberDesignersLicensesBasics().subscribe(res => {\r\n // this.MyProducts = res.Data.Licenses.filter(license => license.Status == 1);\r\n this.MyProducts = res.Data;\r\n\r\n this.MyProducts.forEach(function (product) {\r\n product.Keys.forEach(function (key) {\r\n if (key && key.Product_ID != 9) {\r\n productFound = true;\r\n }\r\n });\r\n }, this);\r\n \r\n this.nonVizterraProduct = productFound;\r\n\r\n });\r\n\r\n } \r\n\r\n\r\n checkForDevMenu() {\r\n\r\n this.devAccounts.forEach(x => {\r\n if (this.gb.Email && this.gb.Email.toLowerCase() == x)\r\n this.devMenu = true;\r\n });\r\n\r\n }\r\n\r\n}\r\n","import { NgModule, Component, OnInit, ElementRef, Input, Output, SimpleChange, EventEmitter, TemplateRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SelectItem, SharedModule } from 'primeng/api';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\n\r\n@Component({\r\n selector: 'paginator',\r\n templateUrl: './paginator.component.html',\r\n styleUrls: ['./paginator.component.scss']\r\n})\r\nexport class Paginator implements OnInit {\r\n\r\n @Input() pageLinkSize: number = 5;\r\n\r\n @Output() onPageChange: EventEmitter = new EventEmitter();\r\n\r\n @Input() style: any;\r\n\r\n @Input() styleClass: string;\r\n\r\n @Input() alwaysShow: boolean = true;\r\n\r\n @Input() templateLeft: TemplateRef;\r\n\r\n @Input() templateRight: TemplateRef;\r\n\r\n @Input() dropdownAppendTo: any;\r\n\r\n pageLinks: number[];\r\n\r\n _totalRecords: number = 0;\r\n\r\n _first: number = 0;\r\n\r\n _rows: number = 0;\r\n\r\n _rowsPerPageOptions: number[];\r\n\r\n rowsPerPageItems: SelectItem[];\r\n\r\n paginatorState: any;\r\n\r\n ngOnInit() {\r\n this.updatePaginatorState();\r\n }\r\n\r\n @Input() get totalRecords(): number {\r\n return this._totalRecords;\r\n }\r\n\r\n set totalRecords(val: number) {\r\n this._totalRecords = val;\r\n this.updatePageLinks();\r\n }\r\n\r\n @Input() get first(): number {\r\n return this._first;\r\n }\r\n\r\n set first(val: number) {\r\n this._first = val;\r\n this.updatePageLinks();\r\n }\r\n\r\n @Input() get rows(): number {\r\n return this._rows;\r\n }\r\n\r\n set rows(val: number) {\r\n this._rows = val;\r\n this.updatePageLinks();\r\n }\r\n\r\n @Input() get rowsPerPageOptions(): number[] {\r\n return this._rowsPerPageOptions;\r\n }\r\n\r\n set rowsPerPageOptions(val: number[]) {\r\n this._rowsPerPageOptions = val;\r\n if (this._rowsPerPageOptions) {\r\n this.rowsPerPageItems = [];\r\n for (let opt of this._rowsPerPageOptions) {\r\n this.rowsPerPageItems.push({ label: String(opt), value: opt });\r\n }\r\n }\r\n }\r\n\r\n isFirstPage() {\r\n return this.getPage() === 0;\r\n }\r\n\r\n isLastPage() {\r\n return this.getPage() === this.getPageCount() - 1;\r\n }\r\n\r\n getPageCount() {\r\n return Math.ceil(this.totalRecords / this.rows) || 1;\r\n }\r\n\r\n calculatePageLinkBoundaries() {\r\n let numberOfPages = this.getPageCount(),\r\n visiblePages = Math.min(this.pageLinkSize, numberOfPages);\r\n\r\n // calculate range, keep current in middle if necessary\r\n let start = Math.max(0, Math.ceil(this.getPage() - ((visiblePages) / 2))),\r\n end = Math.min(numberOfPages - 1, start + visiblePages - 1);\r\n\r\n // check when approaching to last page\r\n let delta = this.pageLinkSize - (end - start + 1);\r\n start = Math.max(0, start - delta);\r\n\r\n return [start, end];\r\n }\r\n\r\n updatePageLinks() {\r\n this.pageLinks = [];\r\n let boundaries = this.calculatePageLinkBoundaries(),\r\n start = boundaries[0],\r\n end = boundaries[1];\r\n\r\n for (let i = start; i <= end; i++) {\r\n this.pageLinks.push(i + 1);\r\n }\r\n }\r\n\r\n changePage(p: number, noEvent: boolean = false) {\r\n let pc = this.getPageCount();\r\n\r\n if (p >= 0 && p < pc) {\r\n this.first = this.rows * p;\r\n let state = {\r\n page: p,\r\n first: this.first,\r\n rows: this.rows,\r\n pageCount: pc\r\n };\r\n this.updatePageLinks();\r\n\r\n if (!noEvent)\r\n this.onPageChange.emit(state);\r\n\r\n this.updatePaginatorState();\r\n }\r\n }\r\n\r\n getPage(): number {\r\n return Math.floor(this.first / this.rows);\r\n }\r\n\r\n changePageToFirst(event) {\r\n if (!this.isFirstPage()) {\r\n this.changePage(0);\r\n }\r\n\r\n event.preventDefault();\r\n }\r\n\r\n resetPaginator() {\r\n this.changePage(0, false);\r\n }\r\n\r\n changePageToPrev(event) {\r\n this.changePage(this.getPage() - 1);\r\n event.preventDefault();\r\n }\r\n\r\n changePageToNext(event) {\r\n this.changePage(this.getPage() + 1);\r\n event.preventDefault();\r\n }\r\n\r\n changePageToLast(event) {\r\n if (!this.isLastPage()) {\r\n this.changePage(this.getPageCount() - 1);\r\n }\r\n\r\n event.preventDefault();\r\n }\r\n\r\n onPageLinkClick(event, page) {\r\n this.changePage(page);\r\n event.preventDefault();\r\n }\r\n\r\n onRppChange(event) {\r\n this.changePage(this.getPage());\r\n }\r\n\r\n updatePaginatorState() {\r\n this.paginatorState = {\r\n page: this.getPage(),\r\n rows: this.rows,\r\n first: this.first,\r\n totalRecords: this.totalRecords\r\n };\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport Swal from 'sweetalert2';\r\nimport { CreditCardValidators, CreditCard } from 'angular-cc-library';\r\nimport { CreditCardHelper } from '../../helpers/creditcard';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { MemberTypes } from 'app/models/ss-api/responses/login.response';\r\nimport { CreditCardResponse, CreditCardTypes } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { AddCreditCardRequest } from 'app/models/ss-api/requests/add.credit.card.request';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\n// import * as $ from 'jquery';\r\n\r\n// window['jQuery'] = $;\r\n\r\nfunction CustomCreditCardValidator(c: UntypedFormControl) {\r\n\r\n let cardType = CreditCardHelper.GetCardTypes(c.value);\r\n\r\n if (cardType == CreditCardTypes.Unknown || cardType == null) {\r\n return {\r\n CustomCreditCardValidator: {\r\n valid: false\r\n }\r\n }\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ss-cc-form-new',\r\n templateUrl: './ss-cc-form-new.component.html',\r\n styleUrls: ['./ss-cc-form-new.component.scss']\r\n})\r\nexport class SSCreditCardFormNewComponent implements OnInit {\r\n @Input() creditCard: CreditCardResponse;\r\n @Input() isBackup: boolean;\r\n\r\n @ViewChild('ccNumber') ccNumber: ElementRef;\r\n\r\n form: UntypedFormGroup;\r\n\r\n @Output('onFormChanged') onFormChanged: EventEmitter;\r\n @Output() emitClose: EventEmitter = new EventEmitter();\r\n\r\n ccardForm: UntypedFormGroup;\r\n ccardType: number;\r\n \r\n\r\n isMember: boolean;\r\n\r\n Year: number = new Date().getFullYear();\r\n YearRange: any[] = [];\r\n SelectedYear;\r\n IsBusy: boolean;\r\n\r\n constructor(\r\n private _fb: UntypedFormBuilder,\r\n private gb: GlobalServices,\r\n private api: ssApiService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n // if (this.creditCard) {\r\n this.form = this._fb.group({\r\n creditCard: new UntypedFormControl('', [CreditCardValidators.validateCCNumber, CustomCreditCardValidator]),\r\n expMonth: [this.gb.ThisMonth(), [Validators.required]],\r\n expYear: [new Date().getFullYear(), [Validators.required]],\r\n cvc: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(4)]],\r\n firstName: ['', [Validators.required]],\r\n lastName: ['', [Validators.required]],\r\n zipCode: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(10)]],\r\n setAsDefault: new UntypedFormControl(!this.isBackup)\r\n });\r\n // }\r\n // SET UP YEAR RANGE FOR CREDIT CARD EXPIRATION DATE FIELD\r\n for (let i: number = 0; i < 15; i++) {\r\n this.YearRange.push(this.Year + i);\r\n }\r\n\r\n this.isMember = this.gb.MemberType == MemberTypes.Member;\r\n\r\n this.onFormChanged = new EventEmitter();\r\n\r\n let disposable = this.form.valueChanges.subscribe(response => {\r\n //console.log(this.ccNumber.nativeElement.className);\r\n this.CheckCredtiCardType(response.creditCard);\r\n this.onFormChanged.emit(response);\r\n\r\n //console.log(response);\r\n });\r\n }\r\n\r\n CheckCredtiCardType(value: string) {\r\n\r\n console.log(\"Credit Card Value : \" + value);\r\n let cardType: CreditCardTypes = CreditCardHelper.GetCardTypes(value);\r\n this.ccardType = cardType;\r\n let newCardType: string = cardType.toString().toLowerCase();\r\n\r\n // this.ccardTypeClass = newCardType;\r\n\r\n }\r\n\r\n isValidExpiration() {\r\n\r\n let ccExpMonth = this.getExpDateMonth(this.form.controls.expMonth.value);\r\n let ccExpYear = this.getExpDateYear(this.form.controls.expYear.value);\r\n\r\n if (moment(ccExpMonth + '/' + ccExpYear, 'MM/YYYY').isSameOrAfter(moment(moment().format('MM/YYYY'), 'MM/YYYY'))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n getExpDateMonth(month: string): string {\r\n\r\n try {\r\n\r\n // let month = expDate.split('/')[0].trim();\r\n if (month.length == 1)\r\n return '0' + month;\r\n else\r\n return month;\r\n\r\n } catch (e) {\r\n return '0';\r\n }\r\n }\r\n\r\n getExpDateYear(year: string): string {\r\n\r\n try {\r\n\r\n // let year = expDate.split('/')[1].trim();\r\n if (year.length == 2)\r\n return '20' + year;\r\n else\r\n return year;\r\n\r\n } catch (e) {\r\n return '0';\r\n }\r\n }\r\n\r\n SubmitNewCreditCard(form: UntypedFormGroup) {\r\n // check form is valid\r\n if (!this.form.valid)\r\n return;\r\n\r\n // check card is valid\r\n let ccard = this.form.controls.creditCard;\r\n if (!ccard.valid)\r\n return;\r\n\r\n // extract expiration month and year\r\n let expMonth = this.getExpDateMonth(this.form.controls.expMonth.value);\r\n let expYear = this.getExpDateYear(this.form.controls.expYear.value);\r\n\r\n if (!this.isValidExpiration())\r\n {\r\n // show confirmation\r\n Swal.fire({\r\n title: \"Validation Error\",\r\n text: \"The expiration date is invalid.\",\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n }).then(() => { }, () => { }); // keep this line to prevent promise error;\r\n\r\n return; // error\r\n }\r\n\r\n // get credit card type\r\n let card = CreditCard.cardFromNumber(ccard.value);\r\n\r\n // get other data\r\n let setAsDefault = this.form.controls.setAsDefault.value;\r\n\r\n\r\n // put date in request\r\n let newCard = new AddCreditCardRequest();\r\n\r\n\r\n // newCard.Address01 = ccardForm.controls.address1.value;\r\n // newCard.City = ccardForm.controls.city.value;\r\n // newCard.State = ccardForm.controls.state.value;\r\n // newCard.Country = ccardForm.controls.country.value;\r\n // newCard.ZipCode = ccardForm.controls.zip.value;\r\n\r\n newCard.CreditCardNumber = this.form.controls.creditCard.value;\r\n newCard.CVV = Number.parseInt(this.form.controls.cvc.value);\r\n newCard.ExpMonth = Number.parseInt(expMonth);\r\n newCard.ExpYear = Number.parseInt(expYear);\r\n\r\n newCard.CardType = CreditCardResponse.GetCreditCardTypeFromString(card.type);\r\n\r\n newCard.SetAsDefault = (setAsDefault == null) ? false : setAsDefault;\r\n newCard.FirstName = this.form.controls.firstName.value;\r\n newCard.LastName = this.form.controls.lastName.value;\r\n newCard.ZipCode = this.form.controls.zipCode.value;\r\n\r\n console.log(\"New Request:\", newCard);\r\n\r\n //if( 0==0 ) return;\r\n\r\n this.AddCreditCard(newCard).then(() => {\r\n // reset form\r\n\r\n \r\n\r\n \r\n });\r\n }\r\n\r\n ResetForm() {\r\n this.form.controls.creditCard.setValue('');\r\n this.form.controls.expMonth.setValue(this.gb.ThisMonth());\r\n this.form.controls.expYear.setValue(new Date().getFullYear());\r\n this.form.controls.cvc.setValue('');\r\n\r\n this.form.controls.firstName.setValue('');\r\n this.form.controls.lastName.setValue('');\r\n\r\n this.form.markAsPristine();\r\n this.form.markAsUntouched();\r\n\r\n this.emitClose.emit();\r\n }\r\n\r\n\r\n\r\n\r\n AddCreditCard(newCard: AddCreditCardRequest): Promise {\r\n\r\n this.IsBusy = true;\r\n\r\n return this.api.CreditCardAdd(newCard).toPromise()\r\n .then(\r\n response => {\r\n this.IsBusy = false;\r\n\r\n console.log(\"Credit Card Add Response\", response);\r\n\r\n if (!response.Result)\r\n {\r\n var title = \"Error\";\r\n if (response.Message.toLowerCase().includes(\"zip\"))\r\n title = \"Zip Code Mismatch\";\r\n else if (response.Message.toLowerCase().includes(\"cvc\"))\r\n title = \"Card Verification\";\r\n else if (response.Message.toLowerCase().includes(\"contact your bank\"))\r\n title = \"Card Not Added\";\r\n\r\n // show confirmation\r\n Swal.fire({\r\n title: title,\r\n text: response.Message,\r\n icon: 'error',\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n }).then(() => { }, () => { }); // keep this line to prevent promise error;\r\n \r\n return; // error\r\n }\r\n\r\n // switch tabs\r\n this.RefreshCards();\r\n\r\n // show confirmation\r\n Swal.fire({\r\n title: 'Saved!',\r\n text: 'New Credit Card Saved.',\r\n icon: 'success',\r\n showCancelButton: false,\r\n showConfirmButton: false,\r\n timer: 1500\r\n }).then(() => {\r\n this.ResetForm();\r\n this.emitClose.emit();\r\n }, () => { }); // keep this line to prevent promise error;\r\n\r\n },\r\n )\r\n .catch((error: any) => {\r\n this.IsBusy = false;\r\n }\r\n );\r\n\r\n\r\n }\r\n\r\n RefreshCards(): void {\r\n\r\n // this.IsBusy = true;\r\n\r\n // let request = this.api.CreditCardGetAll()\r\n // .subscribe(response => {\r\n // request.unsubscribe();\r\n\r\n // this.IsBusy = false;\r\n\r\n // if (!response.Result)\r\n // return; // error\r\n\r\n // if (response.Data.length == 0)\r\n // return;\r\n\r\n // this.Cards = response.Data;\r\n\r\n // // find default card\r\n // let index = this.Cards.findIndex(x => x.IsDefault == true);\r\n\r\n // // set default card\r\n // this.DefaultCard = this.Cards[index];\r\n\r\n // // remove default card from list\r\n // this.Cards.splice(index, 1);\r\n\r\n // },\r\n\r\n\r\n // (error: HttpError) => {\r\n // request.unsubscribe();\r\n // this.IsBusy = false;\r\n // }\r\n // );\r\n\r\n\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, OnChanges, ViewChild, ElementRef } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { GlobalServices } from 'app/services/global.service';\r\nimport { MemberTypes } from 'app/models/ss-api/responses/login.response';\r\nimport { CreditCardTypes } from 'app/models/ss-api/responses/credit.card.response';\r\nimport { CreditCardHelper } from 'app/helpers/creditcard';\r\n// import * as $ from 'jquery';\r\n\r\n// window['jQuery'] = $;\r\n\r\n@Component({\r\n selector: 'ss-cc-form',\r\n templateUrl: './ss-cc-form.component.html',\r\n styleUrls: ['./ss-cc-form.component.scss']\r\n})\r\nexport class SSCreditCardFormComponent implements OnInit {\r\n\r\n @ViewChild('ccNumber') ccNumber: ElementRef;\r\n\r\n @Input('form') form: UntypedFormGroup;\r\n\r\n @Output('onFormChanged') onFormChanged: EventEmitter;\r\n\r\n ccardForm: UntypedFormGroup;\r\n ccardType: number;\r\n\r\n isMember: boolean;\r\n\r\n Year: number = new Date().getFullYear();\r\n YearRange: any[] = [];\r\n SelectedYear;\r\n\r\n constructor(private _fb: UntypedFormBuilder, private gb : GlobalServices) { }\r\n\r\n ngOnInit() {\r\n // SET UP YEAR RANGE FOR CREDIT CARD EXPIRATION DATE FIELD\r\n for (let i: number = 0; i < 15; i++) {\r\n this.YearRange.push(this.Year + i);\r\n }\r\n\r\n this.isMember = this.gb.MemberType == MemberTypes.Member;\r\n\r\n this.onFormChanged = new EventEmitter();\r\n\r\n let disposable = this.form.valueChanges.subscribe(response => {\r\n this.CheckCredtiCardType(response.creditCard);\r\n this.onFormChanged.emit(response);\r\n });\r\n }\r\n\r\n CheckCredtiCardType( value : string ) {\r\n \r\n console.log(\"Credit Card Value : \" + value);\r\n let cardType : CreditCardTypes = CreditCardHelper.GetCardTypes( value );\r\n this.ccardType = cardType;\r\n\r\n }\r\n\r\n isValidExpiration() {\r\n let ccExpMonth = this.form.get('expMonth').value;\r\n let ccExpYear = this.form.get('expYear').value;\r\n\r\n if (moment(ccExpMonth + '/' + ccExpYear, 'MM/YYYY').isSameOrAfter(moment(moment().format('MM/YYYY'), 'MM/YYYY'))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\n// import 'jquery-slimscroll';\r\n\r\n@Component({\r\n selector: 'ss-logo',\r\n templateUrl: './ss-logo.component.html',\r\n styleUrls: ['./ss-logo.component.css']\r\n})\r\nexport class SSLogoComponent implements OnInit, OnDestroy {\r\n\r\n @Input() height: string = '25px';\r\n @Input() padding: string = '5px';\r\n @Input() isLink: boolean;\r\n @Input() isDark: boolean = false;\r\n\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n setStyles() {\r\n let styles = {\r\n // CSS property names\r\n 'height': this.height,\r\n 'padding': this.padding,\r\n };\r\n return styles;\r\n }\r\n\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { OverlayPanel } from 'primeng/overlaypanel';\r\nimport { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport * as $ from 'jquery';\r\nimport { smoothlyMenu } from '../helpers';\r\n// import 'jquery-slimscroll';\r\nimport { GlobalServices } from '../../services/global.service';\r\nimport { ssApiService } from 'app/services/ss-api.service';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'top-nav-bar',\r\n templateUrl: './topnavbar.component.html',\r\n styleUrls: ['./topnavbar.component.scss'],\r\n providers: [DialogService]\r\n})\r\nexport class TopNavBarComponent implements OnInit, OnDestroy {\r\n @ViewChild('spLicenseKeysPanel') LicenseKeySuggestionsPanel: OverlayPanel;\r\n @ViewChild('spLicenseKeysTarget') LicenseKeySuggestionsTarget: HTMLElement;\r\n\r\n SearchInputClass: string = '';\r\n\r\n constructor(private dialogService: DialogService, private gb: GlobalServices, private router: Router, private api: ssApiService) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n toggleNavigation(): void {\r\n $('body').toggleClass('mini-navbar');\r\n smoothlyMenu();\r\n\r\n }\r\n\r\n toggleRightSidebar(): void {\r\n $('#right-sidebar').toggleClass('sidebar-open');\r\n }\r\n\r\n isPossibleLicenseKeyChanged(event) {\r\n\r\n }\r\n\r\n onFocus(event: any): void {\r\n\r\n if (!$('#navBarContainer').hasClass('fullScreen')) {\r\n $('#navBarContainer').addClass('fullScreen');\r\n $('body').addClass('blurred');\r\n this.SearchInputClass = 'fullScreen';\r\n }\r\n\r\n }\r\n\r\n onClickSearchInput() {\r\n /* var value = this.SearchInput.GetUnmaskedValue();\r\n if (value != null && value != \"\") */\r\n this.onFocus('');\r\n }\r\n\r\n\r\n closeSearch(resetInput: boolean = true): void {\r\n $('#navBarContainer').removeClass('fullScreen');\r\n $('body').removeClass('blurred');\r\n this.SearchInputClass = '';\r\n }\r\n\r\n SearchItemSelected() {\r\n this.closeSearch(false);\r\n }\r\n\r\n private GetLicenseKeyFormatted(raw: string): string {\r\n\r\n if (raw.length < 6 || raw.length > 16)\r\n return raw;\r\n\r\n else if (raw.length > 5 && raw.length < 11)\r\n return raw.substr(0, 5) + '-' + raw.substr(5);\r\n\r\n else if (raw.length > 10)\r\n return raw.substr(0, 5) + '-' + raw.substr(5, 5) + '-' + raw.substr(10);\r\n\r\n }\r\n\r\n private HideAllSuggestionPanels() {\r\n this.LicenseKeySuggestionsPanel.hide();\r\n }\r\n\r\n logout() {\r\n console.log(\"Lougout Clicked\");\r\n\r\n this.dialogService.dialogComponentRefMap.forEach(dialog => {\r\n dialog.destroy();\r\n });\r\n let disposable = this.api.Logout(false).subscribe(\r\n response => {\r\n console.log('logout response', response);\r\n disposable.unsubscribe();\r\n this.gb.Logout();\r\n this.router.navigate(['/authentication/signin']);\r\n \r\n }, err => {\r\n disposable.unsubscribe();\r\n this.gb.Logout();\r\n this.router.navigate(['/authentication/signin']);\r\n });\r\n\r\n }\r\n\r\n}\r\n","import { BreadCrumb } from '../../models/BreadCrumb';\r\nimport { Router } from '@angular/router';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'top-nav-crumbs',\r\n templateUrl: './topnavcrumbs.component.html',\r\n styleUrls: ['./topnavcrumbs.component.css']\r\n})\r\nexport class TopNavBarCrumbs implements OnInit {\r\n\r\n @Input('Title') Title: string;\r\n @Input('CrumbsOverwrite') CrumbsOverwrite: Array;\r\n @Input('HideBreadCrumbs') HideBreadCrumbs: boolean = false;\r\n\r\n Crumbs: Array;\r\n\r\n constructor(private router: Router) {\r\n }\r\n\r\n ngOnInit() {\r\n this.CreateBreadCrumbs();\r\n }\r\n\r\n CreateBreadCrumbs() {\r\n this.Crumbs = new Array();\r\n let routes = this.router.url.split('/');\r\n\r\n for (let i = 0; i < routes.length; i++) {\r\n\r\n let currentItem = routes[i];\r\n if (currentItem == '') {\r\n continue;\r\n }\r\n\r\n\r\n let NewCrumb = new BreadCrumb();\r\n\r\n // title\r\n NewCrumb.Title = currentItem;\r\n\r\n // href and tooltip\r\n if (i == routes.length - 1) {\r\n NewCrumb.Link = '#';\r\n NewCrumb.Tooltip = '';\r\n } else {\r\n NewCrumb.Link = this.GetRouteSection(routes, i);\r\n NewCrumb.Tooltip = 'Navigate to ' + NewCrumb.Title;\r\n }\r\n\r\n\r\n // add to array\r\n this.Crumbs.push(this.GetCrumbOverwrite(i, NewCrumb, (i == routes.length - 1)));\r\n }\r\n\r\n // set title to last item if title is empty\r\n if (!this.Title) {\r\n let title = this.Crumbs[this.Crumbs.length - 1].Title;\r\n this.Title = title.charAt(0).toUpperCase() + title.substr(1).toLowerCase();\r\n }\r\n }\r\n\r\n private GetCrumbOverwrite(section: number, originalValue: BreadCrumb, IsLast: boolean): BreadCrumb {\r\n\r\n if (!this.CrumbsOverwrite) {\r\n return originalValue;\r\n }\r\n\r\n let item: BreadCrumb;\r\n\r\n // match overwrite\r\n if (IsLast) {\r\n // we have last\r\n // search with index 0 or undefined\r\n item = this.CrumbsOverwrite.find((item) => item.Index == 0 || !item.Index || item.Index == this.Crumbs.length + 1);\r\n } else {\r\n // search item\r\n item = this.CrumbsOverwrite.find((item) => item.Index === section);\r\n\r\n }\r\n\r\n if (!item) {\r\n return originalValue;\r\n }\r\n // item = items[0];\r\n\r\n\r\n // we have a overwirte\r\n if (item.Title) {\r\n // title\r\n originalValue.Title = item.Title;\r\n }\r\n\r\n if (item.Link) {\r\n // href\r\n originalValue.Link = item.Link;\r\n }\r\n\r\n if (item.Tooltip) {\r\n // tooltip\r\n originalValue.Tooltip = item.Tooltip;\r\n }\r\n\r\n\r\n return originalValue;\r\n }\r\n\r\n private GetRouteSection(routeArray: string[], section: number): string {\r\n\r\n let newRoute: string = '';\r\n\r\n for (let i = 0; i < section + 1; i++) {\r\n let thisSection = routeArray[i];\r\n\r\n if (thisSection == '' || thisSection == 'undefined') {\r\n continue;\r\n }\r\n\r\n newRoute += '/' + thisSection;\r\n }\r\n\r\n return newRoute;\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'rate-your-experience',\r\n templateUrl: './rate-your-experience.component.html',\r\n styleUrls: ['./rate-your-experience.component.scss']\r\n})\r\nexport class RateYourExperienceComponent {\r\n\r\n constructor() { }\r\n\r\n ratingSelection: Number = 0;\r\n\r\n optionIsSelected: boolean = false;\r\n\r\n setRating(newRating: Number) {\r\n this.optionIsSelected = true;\r\n this.ratingSelection = newRating;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from \"@angular/router\";\r\n\r\nimport { RateYourExperienceComponent } from \"./rate-your-experience/rate-your-experience.component\";\r\n\r\nimport { BlankView } from \"../views/blank/blank.view\";\r\n\r\nimport { AuthGuardService } from 'app/services/auth.guard.service';\r\n\r\n\r\nconst supportTicketsRoutes: Routes = [\r\n //login view\r\n {\r\n\r\n path: 'support-tickets', component: BlankView,\r\n canActivate: [AuthGuardService],\r\n children: [\r\n { path: '', component: RateYourExperienceComponent },\r\n //handle all other routes\r\n { path: '**', component: RateYourExperienceComponent }\r\n ],\r\n },\r\n {\r\n path: 'rate-your-experience', component: BlankView,\r\n canActivate: [AuthGuardService],\r\n children: [\r\n { path: ':memberID:ticketID', component: RateYourExperienceComponent },\r\n { path: '**', component: RateYourExperienceComponent }\r\n ]\r\n },\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(supportTicketsRoutes)],\r\n exports: [RouterModule]\r\n})\r\nexport class supportTicketsRoutingModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SharedAppModule } from '../app.module.shared';\r\n\r\nimport { RateYourExperienceComponent } from './rate-your-experience/rate-your-experience.component';\r\nimport { supportTicketsRoutingModule } from './support-tickets-routing.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n RateYourExperienceComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedAppModule,\r\n supportTicketsRoutingModule,\r\n FormsModule,\r\n ]\r\n})\r\nexport class SupportTicketsModule { }\r\n\r\n","import { Component, AfterViewInit, OnDestroy } from '@angular/core';\r\n\r\n// import * as $ from 'jquery';\r\n\r\n@Component({\r\n selector: 'blank-view',\r\n templateUrl: './blank.view.html',\r\n styleUrls: ['./blank.view.css'],\r\n})\r\nexport class BlankView implements AfterViewInit, OnDestroy {\r\n\r\n ngAfterViewInit() {\r\n //$('body').addClass('gray-bg');\r\n }\r\n\r\n ngOnDestroy() {\r\n //$('body').removeClass('gray-bg');\r\n }\r\n}\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { detectBody } from '../../shared/helpers';\r\ndeclare let Pace: any;\r\n\r\n// init\r\n\r\n// set jquery global\r\nimport * as $ from 'jquery';\r\nwindow['jQuery'] = $;\r\nwindow['$'] = $;\r\n\r\n@Component({\r\n selector: 'dashboard-view',\r\n templateUrl: './dashboard.view.html',\r\n styleUrls: ['./dashboard.view.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n '(window:resize)': 'onResize()'\r\n }\r\n})\r\nexport class DashboardView implements OnInit {\r\n\r\n constructor(private router: Router) {\r\n\r\n let test: boolean = true;\r\n\r\n if (test = false) {\r\n this.router.navigate(['login']);\r\n }\r\n\r\n this.initDestroyTimeOutPace();\r\n }\r\n\r\n public ngOnInit(): any {\r\n detectBody();\r\n }\r\n\r\n public onResize() {\r\n detectBody();\r\n }\r\n\r\n initDestroyTimeOutPace() {\r\n let counter = 0;\r\n \r\n const refreshIntervalId = setInterval(function() {\r\n let progress; \r\n \r\n if( typeof $( '.pace-progress' ).attr( 'data-progress-text' ) !== 'undefined' ) {\r\n progress = Number( $( '.pace-progress' ).attr( 'data-progress-text' ).replace(\"%\" ,'') );\r\n }\r\n \r\n if( progress >= 99 ) {\r\n counter++;\r\n }\r\n \r\n if( counter > 50 ) {\r\n clearInterval(refreshIntervalId);\r\n Pace.stop();\r\n }\r\n }, 100);\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app',\r\n templateUrl: './main.component.html',\r\n styleUrls: ['./main.component.css']\r\n})\r\nexport class MainComponent {\r\n\r\n\r\n}\r\n","import { Component, AfterViewInit, OnDestroy } from '@angular/core';\r\n\r\n// import * as $ from 'jquery';\r\n\r\n@Component({\r\n selector: 'order-form-view',\r\n templateUrl: './order-form.view.html',\r\n styleUrls: ['./order-form.view.css'],\r\n})\r\nexport class OrderFormView implements AfterViewInit, OnDestroy {\r\n\r\n ngAfterViewInit() {\r\n // $('body').addClass('order-form');\r\n }\r\n\r\n ngOnDestroy() {\r\n // $('body').removeClass('order-form');\r\n }\r\n}\r\n","// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `.angular-cli.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n baseUrl : 'https://members-api.structurestudios.com/api/',\r\n reportUrl: 'https://reports-api.structurestudios.com',\r\n envName : 'ng',\r\n isDevMode : false,\r\n googleMaps: {\r\n baseUrl: 'https://maps.googleapis.com/maps/api/js',\r\n apiKey: 'AIzaSyDhrMSyT--uwPzyfxBNwpC3ycKCKHJ48zo',\r\n }\r\n};\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\n// Start googlemap initialization\r\nconst s = document.createElement('script');\r\ns.type = 'text/javascript';\r\ns.setAttribute('src', `${environment.googleMaps.baseUrl}?libraries=places,geometry&key=${environment.googleMaps.apiKey}`);\r\ndocument.body.appendChild(s);\r\n// End googlemap initialization\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch();\r\n","var map = {\n\t\"./af\": 58685,\n\t\"./af.js\": 58685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 32614,\n\t\"./ar-kw.js\": 32614,\n\t\"./ar-ly\": 18630,\n\t\"./ar-ly.js\": 18630,\n\t\"./ar-ma\": 28674,\n\t\"./ar-ma.js\": 28674,\n\t\"./ar-sa\": 49032,\n\t\"./ar-sa.js\": 49032,\n\t\"./ar-tn\": 24730,\n\t\"./ar-tn.js\": 24730,\n\t\"./ar.js\": 254,\n\t\"./az\": 53052,\n\t\"./az.js\": 53052,\n\t\"./be\": 60150,\n\t\"./be.js\": 60150,\n\t\"./bg\": 63069,\n\t\"./bg.js\": 63069,\n\t\"./bm\": 13466,\n\t\"./bm.js\": 13466,\n\t\"./bn\": 18516,\n\t\"./bn-bd\": 90557,\n\t\"./bn-bd.js\": 90557,\n\t\"./bn.js\": 18516,\n\t\"./bo\": 26273,\n\t\"./bo.js\": 26273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 19815,\n\t\"./bs.js\": 19815,\n\t\"./ca\": 83331,\n\t\"./ca.js\": 83331,\n\t\"./cs\": 21320,\n\t\"./cs.js\": 21320,\n\t\"./cv\": 72219,\n\t\"./cv.js\": 72219,\n\t\"./cy\": 68266,\n\t\"./cy.js\": 68266,\n\t\"./da\": 66427,\n\t\"./da.js\": 66427,\n\t\"./de\": 67435,\n\t\"./de-at\": 52871,\n\t\"./de-at.js\": 52871,\n\t\"./de-ch\": 12994,\n\t\"./de-ch.js\": 12994,\n\t\"./de.js\": 67435,\n\t\"./dv\": 82357,\n\t\"./dv.js\": 82357,\n\t\"./el\": 95649,\n\t\"./el.js\": 95649,\n\t\"./en-au\": 59961,\n\t\"./en-au.js\": 59961,\n\t\"./en-ca\": 19878,\n\t\"./en-ca.js\": 19878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 70864,\n\t\"./en-ie.js\": 70864,\n\t\"./en-il\": 91579,\n\t\"./en-il.js\": 91579,\n\t\"./en-in\": 30940,\n\t\"./en-in.js\": 30940,\n\t\"./en-nz\": 16181,\n\t\"./en-nz.js\": 16181,\n\t\"./en-sg\": 44301,\n\t\"./en-sg.js\": 44301,\n\t\"./eo\": 85291,\n\t\"./eo.js\": 85291,\n\t\"./es\": 54529,\n\t\"./es-do\": 53764,\n\t\"./es-do.js\": 53764,\n\t\"./es-mx\": 12584,\n\t\"./es-mx.js\": 12584,\n\t\"./es-us\": 63425,\n\t\"./es-us.js\": 63425,\n\t\"./es.js\": 54529,\n\t\"./et\": 35203,\n\t\"./et.js\": 35203,\n\t\"./eu\": 70678,\n\t\"./eu.js\": 70678,\n\t\"./fa\": 83483,\n\t\"./fa.js\": 83483,\n\t\"./fi\": 96262,\n\t\"./fi.js\": 96262,\n\t\"./fil\": 52521,\n\t\"./fil.js\": 52521,\n\t\"./fo\": 34555,\n\t\"./fo.js\": 34555,\n\t\"./fr\": 63131,\n\t\"./fr-ca\": 88239,\n\t\"./fr-ca.js\": 88239,\n\t\"./fr-ch\": 21702,\n\t\"./fr-ch.js\": 21702,\n\t\"./fr.js\": 63131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 23821,\n\t\"./ga.js\": 23821,\n\t\"./gd\": 71753,\n\t\"./gd.js\": 71753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 92762,\n\t\"./gom-deva.js\": 92762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 82809,\n\t\"./gu.js\": 82809,\n\t\"./he\": 45402,\n\t\"./he.js\": 45402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 10410,\n\t\"./hr.js\": 10410,\n\t\"./hu\": 38288,\n\t\"./hu.js\": 38288,\n\t\"./hy-am\": 67928,\n\t\"./hy-am.js\": 67928,\n\t\"./id\": 71334,\n\t\"./id.js\": 71334,\n\t\"./is\": 86959,\n\t\"./is.js\": 86959,\n\t\"./it\": 34864,\n\t\"./it-ch\": 51124,\n\t\"./it-ch.js\": 51124,\n\t\"./it.js\": 34864,\n\t\"./ja\": 36141,\n\t\"./ja.js\": 36141,\n\t\"./jv\": 29187,\n\t\"./jv.js\": 29187,\n\t\"./ka\": 42136,\n\t\"./ka.js\": 42136,\n\t\"./kk\": 94332,\n\t\"./kk.js\": 94332,\n\t\"./km\": 18607,\n\t\"./km.js\": 18607,\n\t\"./kn\": 84305,\n\t\"./kn.js\": 84305,\n\t\"./ko\": 70234,\n\t\"./ko.js\": 70234,\n\t\"./ku\": 16003,\n\t\"./ku.js\": 16003,\n\t\"./ky\": 75061,\n\t\"./ky.js\": 75061,\n\t\"./lb\": 32786,\n\t\"./lb.js\": 32786,\n\t\"./lo\": 66183,\n\t\"./lo.js\": 66183,\n\t\"./lt\": 50029,\n\t\"./lt.js\": 50029,\n\t\"./lv\": 24169,\n\t\"./lv.js\": 24169,\n\t\"./me\": 68577,\n\t\"./me.js\": 68577,\n\t\"./mi\": 68177,\n\t\"./mi.js\": 68177,\n\t\"./mk\": 50337,\n\t\"./mk.js\": 50337,\n\t\"./ml\": 65260,\n\t\"./ml.js\": 65260,\n\t\"./mn\": 52325,\n\t\"./mn.js\": 52325,\n\t\"./mr\": 14695,\n\t\"./mr.js\": 14695,\n\t\"./ms\": 75334,\n\t\"./ms-my\": 37151,\n\t\"./ms-my.js\": 37151,\n\t\"./ms.js\": 75334,\n\t\"./mt\": 63570,\n\t\"./mt.js\": 63570,\n\t\"./my\": 97963,\n\t\"./my.js\": 97963,\n\t\"./nb\": 88028,\n\t\"./nb.js\": 88028,\n\t\"./ne\": 86638,\n\t\"./ne.js\": 86638,\n\t\"./nl\": 50302,\n\t\"./nl-be\": 66782,\n\t\"./nl-be.js\": 66782,\n\t\"./nl.js\": 50302,\n\t\"./nn\": 33501,\n\t\"./nn.js\": 33501,\n\t\"./oc-lnc\": 50563,\n\t\"./oc-lnc.js\": 50563,\n\t\"./pa-in\": 50869,\n\t\"./pa-in.js\": 50869,\n\t\"./pl\": 65302,\n\t\"./pl.js\": 65302,\n\t\"./pt\": 49687,\n\t\"./pt-br\": 74884,\n\t\"./pt-br.js\": 74884,\n\t\"./pt.js\": 49687,\n\t\"./ro\": 79107,\n\t\"./ro.js\": 79107,\n\t\"./ru\": 33627,\n\t\"./ru.js\": 33627,\n\t\"./sd\": 30355,\n\t\"./sd.js\": 30355,\n\t\"./se\": 83427,\n\t\"./se.js\": 83427,\n\t\"./si\": 11848,\n\t\"./si.js\": 11848,\n\t\"./sk\": 54590,\n\t\"./sk.js\": 54590,\n\t\"./sl\": 20184,\n\t\"./sl.js\": 20184,\n\t\"./sq\": 56361,\n\t\"./sq.js\": 56361,\n\t\"./sr\": 78965,\n\t\"./sr-cyrl\": 81287,\n\t\"./sr-cyrl.js\": 81287,\n\t\"./sr.js\": 78965,\n\t\"./ss\": 25456,\n\t\"./ss.js\": 25456,\n\t\"./sv\": 70451,\n\t\"./sv.js\": 70451,\n\t\"./sw\": 77558,\n\t\"./sw.js\": 77558,\n\t\"./ta\": 51356,\n\t\"./ta.js\": 51356,\n\t\"./te\": 73693,\n\t\"./te.js\": 73693,\n\t\"./tet\": 21243,\n\t\"./tet.js\": 21243,\n\t\"./tg\": 42500,\n\t\"./tg.js\": 42500,\n\t\"./th\": 55768,\n\t\"./th.js\": 55768,\n\t\"./tk\": 77761,\n\t\"./tk.js\": 77761,\n\t\"./tl-ph\": 35780,\n\t\"./tl-ph.js\": 35780,\n\t\"./tlh\": 29590,\n\t\"./tlh.js\": 29590,\n\t\"./tr\": 33807,\n\t\"./tr.js\": 33807,\n\t\"./tzl\": 93857,\n\t\"./tzl.js\": 93857,\n\t\"./tzm\": 60654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 60654,\n\t\"./ug-cn\": 30845,\n\t\"./ug-cn.js\": 30845,\n\t\"./uk\": 19232,\n\t\"./uk.js\": 19232,\n\t\"./ur\": 47052,\n\t\"./ur.js\": 47052,\n\t\"./uz\": 77967,\n\t\"./uz-latn\": 32233,\n\t\"./uz-latn.js\": 32233,\n\t\"./uz.js\": 77967,\n\t\"./vi\": 98615,\n\t\"./vi.js\": 98615,\n\t\"./x-pseudo\": 12320,\n\t\"./x-pseudo.js\": 12320,\n\t\"./yo\": 31313,\n\t\"./yo.js\": 31313,\n\t\"./zh-cn\": 64490,\n\t\"./zh-cn.js\": 64490,\n\t\"./zh-hk\": 55910,\n\t\"./zh-hk.js\": 55910,\n\t\"./zh-mo\": 98262,\n\t\"./zh-mo.js\": 98262,\n\t\"./zh-tw\": 44223,\n\t\"./zh-tw.js\": 44223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["HoldRequestDialogcomponent","HoldRequestDialogResultTypes","MemberTypes","GlobalServices","BillingRecurringTypes","LicenseStatus","ssApiService","Component","EventEmitter","HostListener","Input","Output","ViewChild","AddProductDialogComponent","AddGISDialogComponent","UpgradeProductDialogComponent","CDKeyReassignDialogComponent","CancellationRequestDialogComponent","YARDAddDialogComponent","Swal","DialogService","xToastr","ToastrTypes","YARDCancellationRequestDialogComponent","Router","ActivatedRoute","PayInvoiceDialogComponent","moment","ReactivateLicenseDialogComponent","MemberLicenseItem","MembershipsNewComponent","constructor","router","route","dialogService","api","gb","Array","window","innerWidth","isMobile","console","log","IsDevPublic","IsLocal","onResize","e","currentTarget","ngOnInit","showMore","CheckIsMember","CheckForWelcomeBack","ngOnChanges","ProductsExpanded","length","availableLicences","filter","p","License","IsRegistered","IsCancelled","Status","IsMember","IsOnHold","IsScheduledHold","registeredLicences","cancelledLicences","emitNoLicence","emit","pastDueProducts","IsGrace","onlyPastDueProduct","emitOnlyPastDueProduct","IsWelcomeBack","localStorage","getItem","showWelcomeBack","removeItem","WelcomeBackOK","MemberType","Member","CanPurchaseGIS","member","MemberID","Upgradable","license","ProductName","slice","toLowerCase","Recurring","Yearly","ShowGetYard","item","YardAvailable","YardVisiblePublic","HasYard","GetProductAssignedName","firstName","LastName","nameMod","Cancelled","CancelledOpen","Terminated","Disabled","colorClass","BillingRecurringToString","type","Monthly","ProductNameToClassName","product","ProductNameToImageName","pName","PopulateProducts","products","Products","push","IsTOS","IsDispute","Desginers","undefined","forEach","x","Licenses","newItem","HasCancelled","SortByStatus","UpdateHasPastDuePayments","productID","billingCycle","showAddDialog","RefreshProducts","emitRefreshProducts","toggleMode","event","target","$","parents","toggleClass","RefreshPublicOrderProducts","PublicOrderProducts","Promise","resolve","reject","ProductsOrderProducts","toPromise","then","response","Result","Data","IsBusy","GetCreditCards","GetCancelledLicense","ref","open","data","title","CreditCards","CameFromAdd","memberProfile","showHeader","modal","maskStyleClass","draggable","keepInViewport","onClose","subscribe","subTitle","SelectedCreditCard","catch","error","cancelledLicense","k","i","NextBillingDate","isBefore","setTimeout","GetGISSharedBundle","GISSharedBundle","GetGISIndividualBundle","GISIndividualBundle","CreditCardGetAll","card","isExpired","IsDefault","label","FirstName","LastFour","ExpMonth","ExpYear","value","ID","Item","currentYear","Date","getFullYear","currentMonth","getMonth","showAddGISDialog","cdKey","Bundle","CDKey","showCDKeyReassignDialog","key","lastName","email","showDesigner","message","LicenseKey","Email","ShowDesigner","ShowTosDialog","fire","text","icon","showCancelButton","showConfirmButton","confirmButtonText","AssignToThisUser","subscription","LicenseAssigToLoggedinUser","unsubscribe","ShowToast","Error","Message","timer","showReactivateCDKeyDialog","hasLicenseOnHold","designerName","CancelMembershipClick","useHold","CheckHoldEligibility","Key","HoldEligible","showHoldDialog","showCancelDialog","isSecondStyle","HasDialog","ManageHoldClick","NotEligibleReason","includes","holdResponse","result","HoldResponse","styleClass","HandleHoldDialogResult","cancelled","success","showCancel","showAddYARDDialog","YardGetPricing","yardPrice","YardPricing","showCancelYARDDialog","GetUpgradeProducts","licenseKey","ProductsUpgradableProducts","showUpgradeDialog","productsResponse","upgradeProducts","CurrentProductBillingCycle","LicenseObject","isVipMembership","sortThis","sort","a","b","showPayInvoiceDialog","Invoice","GraceInvoice","DaysRemaining","terminationDate","daysRemaining","date1","diffc","getTime","Math","round","abs","isAfter","date","myProducts","hasPastDuePayments","HasPastDuePayments","myLicense","isCancelled","myStatus","DoesNotExist","IsTOSMember","isTOS","IsFormerTOS","licenseViewTypeChange","viewType","top","licenseViewType","document","getElementById","scrollHeight","absoluteY","tableFrame","nativeElement","getBoundingClientRect","body","scrollTo","left","behavior","licenseViewModeChange","viewMode","licenseViewMode","toggleShowMore","isPastDue","args","static","selector","template","providers","MembershipsComponent","GetSharedGISCredits","SharedGISCredits","productsVariable","ProductsMyProducts","CheckForHeldLicense","showAddSharedGISDialog","CreditCardResponse","CalendarEvent","OverviewComponent","getCurrentNavigation","extras","state","showThankyouModal","isDesigner","Designer","SetPageTitle","getMemberProfile","getCards","loadEvents","showPayInvoice","membershipsNew","isBusy","disposable","MemberProfile","request","cards","index","findIndex","defaultCard","openEmailChange","showChangeEmailModal","getPhoneInputValue","v","replace","substr","numbers","newValue","openGisCredits","isTeam","onAddCredits","showGISCreditChooseModal","heldLicense","hasLicenseScheduledToHold","width","GetPersonalGISCredits","PersonalGISCredits","MemberDesignersLicensesBasics","res","MyProducts","tempEvents","StartDate","startOf","toDate","EndDate","endOf","GetMemberTrainingCalendar","trainingClass","c","TrainingClassID","MemberHasProductForClass","ProductIDs","duration","ClassDuration","eventTemplate","ClassTitle","start","EventDateTime","end","add","hours","minutes","extendedProps","TrainingClass","nextLiveTrainingEvent","find","productFound","Keys","indexOf","Product_ID","removeHTMLTags","str","toString","getFirstSentence","strippedStr","split","getFirstImage","htmlStr","imgBody","imgMainBody","imgSrcBody","imgUrl","isPast","UntypedFormGroup","UntypedFormControl","Validators","LoginRequest","ErrorEventArgs","LoginFormComponent","DisableEmail","PasswordField","focus","signinForm","required","minLength","checkEmailValid","get","touched","valid","checkPasswordValid","ResetSigninFormSubmitRequest","showTimeout","onBusyChanged","onSigninFormSubmit","Username","Password","Checksum","setValue","Login","onLocked","UnfinishedOrderID","onUnfinishedOrder","ShowError","ErrorMessage","onAuthenticationFailed","Authenticated","TwoFactorRequired","SetGlobalsFromLoginResponse","onTwoFactorRequired","TwoFactorOptions","onAuthenticated","onError","OriginalError","FriendlyMessage","FriendlyTitle","HttpTimeout","CommTypes","SendTwoFactorCodeOptionRequest","TwoFactorChoiceFormComponent","Cancel","onCancel","CodeRequestSubmit","SelectedOption","CommType","SMS","CommValue","Value","Token","SendTwoFactorCode","onCodeSent","TwoFactorAuthenticationRequest","FormGroup","FormControl","TwoFactorCodeFormComponent","codeForm","CodeSubmit","Code","TwoFactorAuthentication","UnlockLoginRequest","UnlockLoginComponent","paramsSubscribe","params","routeParams","UnlockCode","location","href","Unlock","ngOnDestroy","UnlockLogin","Redirect","Title","SubTitle","navigate","GISBundleResponse","OrderGISRequest","DynamicDialogRef","DynamicDialogConfig","config","GetCredit","close","CreditCardChanged","FormatCreditLabel","Credits","Price","BundleSelectionChanged","PurchaseDisabled","SelectedBundle","TaxRateDisplay","State","TaxEnabled","PurchaseBundle","CCID","Number","ProductID","GISOrder","ProcessOrder","confirmTitle","confirmMessage","showCloseButton","cancelButtonText","allowOutsideClick","showLoaderOnConfirm","preConfirm","confirm","cType","cTitle","successTitle","cMessage","successMessage","isDismissed","cancelledTitle","cancelledMessage","errorTitle","errorMessage","dismiss","cancel","cardAdded","newCardId","showAddCreditCard","updateCreditCardOptions","addCardCanceled","newCards","MemberCredit","Credit","GetPriceDue","totalPriceDue","TotalWithTax","isNaN","CreditUsed","PublicOrderProductsResponseArray","PublicOrderProductsResponse","AddProductRequest","AssignmentOptions","Firstname","Lastname","KeyAssignment","yard","Boolean","SetSelectedProduct","SelectedBillingCycle","IsYardSelected","OrderForm","YardAddon","isDevPublic","isLocal","MonthlySelected","YearlySelected","SelectedProduct","SelectedPrice","Prices","BillingCycle","SelectedSetupFee","Setup","YardFee","TaxAmount","TaxRate","ProductSelected","YardTax","PriceDue","CheckPurchaseDisabled","billingCycleChange","checked","AssignmentChanged","option","DesignerFieldsHidden","DesignerName","DesignerEmail","YardSelected","InitialsChanged","CheckDesignerFields","IsBillingCycleSelected","cycle","SelectedBillingCycleToString","PurchaseProduct","CreditCardID","AssignToOwner","Initials","AdminID","ProductsAdd","ClearOrderFormLocalStorage","next","currentModalStep","back","getProductPrice","productPrice","price","CancelProductRequest","CancelDialogTypes","standard","CancellationDate","utc","cancelDialogType","isHoldScheduled","DoResumeLicenseSimulation","isOnHold","ResumeLicenseSimulation","ResumeSimulationResponse","CancelProduct","CancellationReason","CancellationComments","CancellationComment","ProductCancel","ProcessCancellation","nextStep","step","CdKeyReassignRequest","FullName","GetFullName","SetUpForm","f","controls","ProcessReassign","Name","NotifyEmail","LicenseReassign","UpgradableProductsResponse","UpgradeProductRequest","ChangeBillingCycleDialogComponent","ProductSelectionChanged","SelectedProductLock","BillingTypeToString","BillingTypeToPerString","UpgradeProduct","Initals","NewBillingCycle","NewProductID","SimulateOnly","ProductsUpgrade","ViewEncapsulation","TrainingEventDetailsResponse","MemberDesignersLicensesBasicsResponse","MemberDesignersLicenseItem","MemberDesignersLicenseItemArray","TrainingEvent","RegisterForTrainingEventRequest","EventRegistrationDialogComponent","minimumVersionv2","minimumVersionv3","currentVersion","getLicenses","eventDate","format","eventTime","windowTitle","productIcons","generateProductIcons","getLicenseData","val","productHTML","softwarePackages","img","name","populateLicenses","MinimumSoftwareVersionInt","SoftwareVersionInt","MaximumSoftwareVersionInt","licenseID","LicensesSelectItems","Product","getMemberDesignerItem","SelectedLicense","pastDue","PastDue","tos","TOS","isRegistered","registered","Registered","isValidVersion","SoftwareVersion","minVersionDisplay","installedMajor","installedMinor","installedPatch","minimumMajor","minimumMinor","minimumPatch","aryInstalled","parseInt","aryMinimum","OldVersion","CheckKeyProduct","isVip3D","isVizTerra","isPoolStudio","setWindowTitle","newHtmlContent","newWindowTitle","stringChop","newVersionNum","versionNum","setSoftwareOptions","softwareOptions","newSoftwarePackages","strings","setEventDescription","htmlData","newDescription","eventDescription","Phone","CompatibilityToken","getRequest","AlternateEmail","AlternatePhone","LicenseID","TrainingEventID","RegisterForTrainingEvent","html","toggleIsBusy","RegistrationAvailable","eventData","IsExpired","encapsulation","None","ReactivateRequest","ReactivateSimulationResponse","ReactivateCDKeyDialogComponent","setRequireSetupDate","simulateReactivation","requireSetupDate","setDate","getDate","includeSetupFee","ProductsReactivateSimulation","simulationResponse","getNextBillDate","newNextBillDate","setMonth","ProductsReactivate","recurringToString","myBillingCycle","ProductPrice","SetupPrice","ReactivateSimulationResponsev2","ReactivateRequestv2","isYearly","IncludeYARD","ProductsReactivateSimulationv2","IsInCycle","billingCylceIsYearly","designerEmail","keepAssigned","assignToMember","ProductsReactivatev2","InCycleMessage","backdrop","UpgradeSimulationResponse","setUpProductOptions","simulateUpgradePrice","TotalDueUpgrade","PriceDueWithTax","TotalDueUpgradeWithTax","PriceSimulationResponse","TotalDueUpgradeTaxAmount","newName","getBillingCycleName","ProductOptions","SelectedProductOption","setSelectedProduct","RenewDate","setFullYear","ProductChanged","newProductOption","ProductsUpgradeSimulation","ProductNameAdditions","additions","YardAddonOrderRequest","CCardID","YardProductID","YardAdd","productNameWebSafe","productName","webSafeName","Pay","CancelYardRequest","CancelReason","YardCancel","onContactUs","LoginDialogComponent","NewMemberRequest","UpdateCartRequest","CompleteOrderDialogComponent","CreditCardValidators","CountryList","StateList","DualStateZipcodeList","CreditCardHelper","CreditCardTypes","CustomCreditCardValidator","cardType","GetCardTypes","Unknown","OrderFormComponentV2","titleService","Countries","States","navigator","platform","history","setTitle","usZipValidators","pattern","company","phone","password","password1","address1","city","statepicker","zipCode","country","ccNameOnCard","ccNr","validateCCNumber","ccExpMonth","ThisMonth","ccExpYear","Year","ccCVC","maxLength","yardAddOn","confirmInitials","valueChanges","newCountry","setValidators","updateValueAndValidity","IsUS","trimmed","YearRange","refreshProducts","GetCartID","thisIsDev","isDev","CheckCredtiCardType","newCardType","ccardTypeClass","month","matchedFieldChanged","CartID","generateUUID","setItem","d","performance","now","r","random","floor","assignRouteParams","newParams","isEmpty","newProductID","newCycleID","newYardAddOn","marketTag","String","yardAddOnOption","mySelect","subScription","ProductsPublicAndSpecialOrderProducts","newProductName","isSpecial","isPromo","ShowProductNotFoundDialog","trainingValue","makePriceLookNice","thePrice","totalPrice","newTotal","totalTaxDisplay","newTax","endsWith","toFixed","totalTax","totalPriceWithTax","newTotalWithTax","obj","hasOwnProperty","isValidExpiration","isSameOrAfter","onExpirationChange","ExpirationChanged","UpdateCart","isFormValid","getNameOnCard","ccLastName","orderFormSubmited","hasLastName","CheckMember","isCheckingMember","CheckForExistingMember","existingMemberResponse","PromptToLoginOnOrderForm","ShowLoginDialog","EmailField","PromptToFinishOrder","UFOID","fromLogin","BillingCycleChanged","billingCycleType","yardSetup","UpdatePageTitle","SkipUpdteCart","formProductClass","cycleName","isCompareValid","myField","compareField","Email1","isFieldValid","fieldName","StripNonNumeric","strValue","GetNewMemberRequest","RangeError","OrderFormVersion","Company","Address1","City","Country","ZipCode","CC_FirstName","ccFirstName","CC_LastName","CC_Number","CC_ExpMonth","CC_ExpYear","CC_CVC","CC_Address1","CC_City","CC_Country","CC_State","CC_ZipCode","AddYard","strRedirectID","RedirectCreated","RedirectID","DateTimeRedirectClick","GetUpdateCartRequest","FormattedPhone","Address","CCName","CCNumber","CCLastFour","CCExpMonth","CCExpYear","TaxChecksum","SubTotal","DateTimeRedirectClicked","nameString","namesSplit","onOrderFormSubmit","MemberNew","ErrCode","showCompleteOrderDialog","options","closeButton","progressBar","debug","preventDuplicates","positionClass","onclick","showDuration","hideDuration","timeOut","extendedTimeOut","showEasing","hideEasing","showMethod","hideMethod","Response","Reactivated","ReturningMember","LoginResponse","getRedirectURL","logoLoaded","CheckUpdateCart","LastUpdateCartRequest","SalesUpdateCart","TaxCalculated","setErrors","invalid","updateState","curState","orderFormControls","curZipCode","dualStates","newCartData","Email2","ufoid","membershipName","GotoThankYouPage","yardAddOnCheckChanged","isVipName","isVizterraName","isPoolStudioName","pricingURL","getAddress","place","street","getStreet","district","getDistrict","getCity","getStateShort","postCode","getPostCode","getCountryShort","patchValue","getAddrComponent","componentTemplate","address_components","addressType","types","getStreetNumber","COMPONENT_TEMPLATE","street_number","streetNumber","COMPONENT_TEMPLATE1","locality","getState","administrative_area_level_1","stateShort","administrative_area_level_2","countryShort","getCountry","postal_code","getPhone","formatted_phone_number","ChangeDetectorRef","OrderFormComponentV3","dr","recurringOptions","track","threshold","pageYOffset","isStickySummary","selectedRecurring","showLoginAlert","isShowLoginAlert","emptyEmailExistAlert","getElementsByClassName","emailExistAlertText","style","offsetTop","offsetLeft","position","openThankyouModal","markAsTouched","detectChanges","expDateValidators","monthAndYear","test","validateInput","OrderFormComponent","formatEmailAddress","DesignerInstructionsRequest","ThankYouComponent","GetFirstLicenseKey","SendEmail","emailField","classList","contains","SendLicenseKeyInstructionsToDesignerEmail","chooseMe","setUserChosen","chooseDesigner","designerKey","chooseUser","switchDesignerKey","Injectable","AuthGuardService","canActivate","ReadFromStorage","TokenExpiration","url"],"sourceRoot":"webpack:///","x_google_ignoreList":[171]}