{"version":3,"sources":["webpack:///./node_modules/timezonecomplete/dist/lib sync","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/_modules/office-agent-lookup/_services/agent-clear.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/agent-new.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/agent-unknown.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/agent.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/empty-agent.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/empty-office.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/lookup-cache.service.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/lookup.service.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/office-agent-navigation.service.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/office-clear.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/office-new.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/office-wildcard.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/office.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/persistence.service.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/root-wildcard.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/root.resolver.ts","webpack:///./src/app/_modules/office-agent-lookup/_services/validate.service.ts","webpack:///./src/app/_modules/office-agent-lookup/_src/lookup-relationship-type.ts","webpack:///./src/app/_modules/office-agent-lookup/agent-contact/agent-contact.component.html","webpack:///./src/app/_modules/office-agent-lookup/agent-contact/agent-contact.component.ts","webpack:///./src/app/_modules/office-agent-lookup/agent-entry/agent-entry.component.html","webpack:///./src/app/_modules/office-agent-lookup/agent-entry/agent-entry.component.ts","webpack:///./src/app/_modules/office-agent-lookup/agent-lookup/agent-lookup.component.html","webpack:///./src/app/_modules/office-agent-lookup/agent-lookup/agent-lookup.component.scss","webpack:///./src/app/_modules/office-agent-lookup/agent-lookup/agent-lookup.component.ts","webpack:///./src/app/_modules/office-agent-lookup/agent/agent.component.html","webpack:///./src/app/_modules/office-agent-lookup/agent/agent.component.ts","webpack:///./src/app/_modules/office-agent-lookup/office-agent-lookup.component.html","webpack:///./src/app/_modules/office-agent-lookup/office-agent-lookup.component.ts","webpack:///./src/app/_modules/office-agent-lookup/office-agent-lookup.module.ts","webpack:///./src/app/_modules/office-agent-lookup/office-agent-lookup.routes.ts","webpack:///./src/app/_modules/office-agent-lookup/office-agent-lookup.scss","webpack:///./src/app/_modules/office-agent-lookup/office-agent-selected/office-agent-selected.component.html","webpack:///./src/app/_modules/office-agent-lookup/office-agent-selected/office-agent-selected.component.scss","webpack:///./src/app/_modules/office-agent-lookup/office-agent-selected/office-agent-selected.component.ts","webpack:///./src/app/_modules/office-agent-lookup/office-entry/office-entry.component.html","webpack:///./src/app/_modules/office-agent-lookup/office-entry/office-entry.component.ts","webpack:///./src/app/_modules/office-agent-lookup/office-lookup/office-lookup.component.html","webpack:///./src/app/_modules/office-agent-lookup/office-lookup/office-lookup.component.scss","webpack:///./src/app/_modules/office-agent-lookup/office-lookup/office-lookup.component.ts","webpack:///./src/app/_modules/plan-order/_models/index.ts","webpack:///./src/app/_modules/plan-order/_models/plan-order-application.ts","webpack:///./src/app/_modules/plan-order/_models/plan-order-progress.ts","webpack:///./src/app/_modules/plan-order/_models/progress-bar-step.ts","webpack:///./src/app/_modules/plan-order/_services/index.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order-auth.guard.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order-auth.service.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order-custom-url-guard.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order-domain-factory.service.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order-lookup-value.service.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order-lookup.service.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order-no-auth.guard.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order-root.resolver.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order-step.service.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order-update.service.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order-wildcard-step.resolver.ts","webpack:///./src/app/_modules/plan-order/_services/plan-order.service.ts","webpack:///./src/app/_modules/plan-order/_services/plan-quote.service.ts","webpack:///./src/app/_modules/plan-order/_src/plan-order-confirmation-request.ts","webpack:///./src/app/_modules/plan-order/_src/plan-quote-request.ts","webpack:///./src/app/_modules/plan-order/_src/plan-quote-result.ts","webpack:///./src/app/_modules/plan-order/_src/price-duration-enum.ts","webpack:///./src/app/_modules/plan-order/agent-auto-match/agent-auto-match.component.html","webpack:///./src/app/_modules/plan-order/agent-auto-match/agent-auto-match.component.scss","webpack:///./src/app/_modules/plan-order/agent-auto-match/agent-auto-match.component.ts","webpack:///./src/app/_modules/plan-order/cancel/cancel.component.html","webpack:///./src/app/_modules/plan-order/cancel/cancel.component.scss","webpack:///./src/app/_modules/plan-order/cancel/cancel.component.ts","webpack:///./src/app/_modules/plan-order/closing-info/closing-info.component.html","webpack:///./src/app/_modules/plan-order/closing-info/closing-info.component.scss","webpack:///./src/app/_modules/plan-order/closing-info/closing-info.component.ts","webpack:///./src/app/_modules/plan-order/closing-info/closing-info.resolver.ts","webpack:///./src/app/_modules/plan-order/confirmation/confirmation.component.html","webpack:///./src/app/_modules/plan-order/confirmation/confirmation.component.ts","webpack:///./src/app/_modules/plan-order/cooperating-agent/cooperating-agent.component.html","webpack:///./src/app/_modules/plan-order/cooperating-agent/cooperating-agent.component.ts","webpack:///./src/app/_modules/plan-order/cooperating-agent/cooperating-agent.resolver.ts","webpack:///./src/app/_modules/plan-order/form-submit-bar/form-submit-bar.component.html","webpack:///./src/app/_modules/plan-order/form-submit-bar/form-submit-bar.component.scss","webpack:///./src/app/_modules/plan-order/form-submit-bar/form-submit-bar.component.ts","webpack:///./src/app/_modules/plan-order/generic-customer/generic-customer.component.html","webpack:///./src/app/_modules/plan-order/generic-customer/generic-customer.component.scss","webpack:///./src/app/_modules/plan-order/generic-customer/generic-customer.component.ts","webpack:///./src/app/_modules/plan-order/home-buyer/home-buyer.component.html","webpack:///./src/app/_modules/plan-order/home-buyer/home-buyer.component.ts","webpack:///./src/app/_modules/plan-order/home-buyer/home-buyer.resolver.ts","webpack:///./src/app/_modules/plan-order/home-seller/home-seller.component.html","webpack:///./src/app/_modules/plan-order/home-seller/home-seller.component.ts","webpack:///./src/app/_modules/plan-order/home-seller/home-seller.resolver.ts","webpack:///./src/app/_modules/plan-order/initiating-agent/initiating-agent.component.html","webpack:///./src/app/_modules/plan-order/initiating-agent/initiating-agent.component.ts","webpack:///./src/app/_modules/plan-order/initiating-agent/initiating-agent.resolver.ts","webpack:///./src/app/_modules/plan-order/mailing-address/mailing-address.component.html","webpack:///./src/app/_modules/plan-order/mailing-address/mailing-address.component.scss","webpack:///./src/app/_modules/plan-order/mailing-address/mailing-address.component.ts","webpack:///./src/app/_modules/plan-order/office-auto-match/office-auto-match.component.html","webpack:///./src/app/_modules/plan-order/office-auto-match/office-auto-match.component.scss","webpack:///./src/app/_modules/plan-order/office-auto-match/office-auto-match.component.ts","webpack:///./src/app/_modules/plan-order/optional-coverage/optional-coverage.component.html","webpack:///./src/app/_modules/plan-order/optional-coverage/optional-coverage.component.scss","webpack:///./src/app/_modules/plan-order/optional-coverage/optional-coverage.component.ts","webpack:///./src/app/_modules/plan-order/optional-coverage/optional-coverage.resolver.ts","webpack:///./src/app/_modules/plan-order/payment/payment.component.html","webpack:///./src/app/_modules/plan-order/payment/payment.component.scss","webpack:///./src/app/_modules/plan-order/payment/payment.component.ts","webpack:///./src/app/_modules/plan-order/payment/plan-order-payment-editing-email.ts","webpack:///./src/app/_modules/plan-order/plan-order-base-component.ts","webpack:///./src/app/_modules/plan-order/plan-order-frame.component.html","webpack:///./src/app/_modules/plan-order/plan-order-frame.component.ts","webpack:///./src/app/_modules/plan-order/plan-order.module.ts","webpack:///./src/app/_modules/plan-order/plan-order.routes.ts","webpack:///./src/app/_modules/plan-order/plan-order.scss","webpack:///./src/app/_modules/plan-order/plan-quote/email-quote.component.html","webpack:///./src/app/_modules/plan-order/plan-quote/email-quote.component.scss","webpack:///./src/app/_modules/plan-order/plan-quote/email-quote.component.ts","webpack:///./src/app/_modules/plan-order/product/product.component.html","webpack:///./src/app/_modules/plan-order/product/product.component.scss","webpack:///./src/app/_modules/plan-order/product/product.component.ts","webpack:///./src/app/_modules/plan-order/product/product.resolver.ts","webpack:///./src/app/_modules/plan-order/progress-bar/progress-bar-image.service.ts","webpack:///./src/app/_modules/plan-order/progress-bar/progress-bar.component.html","webpack:///./src/app/_modules/plan-order/progress-bar/progress-bar.component.scss","webpack:///./src/app/_modules/plan-order/progress-bar/progress-bar.component.ts","webpack:///./src/app/_modules/plan-order/property-address/property-address.component.html","webpack:///./src/app/_modules/plan-order/property-address/property-address.component.scss","webpack:///./src/app/_modules/plan-order/property-address/property-address.component.ts","webpack:///./src/app/_modules/plan-order/property-address/property-address.resolver.ts","webpack:///./src/app/_modules/plan-order/property-type/property-type.component.html","webpack:///./src/app/_modules/plan-order/property-type/property-type.component.scss","webpack:///./src/app/_modules/plan-order/property-type/property-type.component.ts","webpack:///./src/app/_modules/plan-order/property-type/property-type.resolver.ts","webpack:///./src/app/_modules/plan-order/review/agent/plan-order-review-agent-type.ts","webpack:///./src/app/_modules/plan-order/review/agent/review-agent.component.html","webpack:///./src/app/_modules/plan-order/review/agent/review-agent.component.scss","webpack:///./src/app/_modules/plan-order/review/agent/review-agent.component.ts","webpack:///./src/app/_modules/plan-order/review/payment/review-payment-component.scss","webpack:///./src/app/_modules/plan-order/review/payment/review-payment.component.html","webpack:///./src/app/_modules/plan-order/review/payment/review-payment.component.ts","webpack:///./src/app/_modules/plan-order/review/review-action-buttons.component.html","webpack:///./src/app/_modules/plan-order/review/review-action-buttons.component.scss","webpack:///./src/app/_modules/plan-order/review/review-action-buttons.component.ts","webpack:///./src/app/_modules/plan-order/review/review-deactivate.guard.ts","webpack:///./src/app/_modules/plan-order/review/review.component.html","webpack:///./src/app/_modules/plan-order/review/review.component.scss","webpack:///./src/app/_modules/plan-order/review/review.component.ts","webpack:///./src/app/_modules/plan-order/review/review.resolver.ts","webpack:///./src/app/_modules/plan-order/role/role.component.html","webpack:///./src/app/_modules/plan-order/role/role.component.ts","webpack:///./src/app/_modules/plan-order/role/role.resolver.ts","webpack:///./src/app/_modules/plan-order/save-interstitial/save-interstitial.component.html","webpack:///./src/app/_modules/plan-order/save-interstitial/save-interstitial.component.ts","webpack:///./src/app/_modules/plan-order/transaction-type/transaction-type.component.html","webpack:///./src/app/_modules/plan-order/transaction-type/transaction-type.component.scss","webpack:///./src/app/_modules/plan-order/transaction-type/transaction-type.component.ts","webpack:///./src/app/_modules/plan-order/transaction-type/transaction-type.resolver.ts","webpack:///./src/app/_services/app-settings.guard.ts","webpack:///./src/app/_services/legacy-toolbox.service.ts","webpack:///./src/app/_services/no-auto-login-guard.ts","webpack:///./src/app/_services/reset.guard.ts","webpack:///./src/app/_services/toolbox-settings.service.ts","webpack:///./src/app/_src/custom-url-parser.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/app.routes.ts","webpack:///./src/app/debug/debug.component.html","webpack:///./src/app/debug/debug.component.scss","webpack:///./src/app/debug/debug.component.ts","webpack:///./src/app/debug/debug.guard.ts","webpack:///./src/app/home/ae-detail/ae-detail.component.html","webpack:///./src/app/home/ae-detail/ae-detail.component.scss","webpack:///./src/app/home/ae-detail/ae-detail.component.ts","webpack:///./src/app/home/banners/banners-cache.service.ts","webpack:///./src/app/home/banners/banners.component.html","webpack:///./src/app/home/banners/banners.component.scss","webpack:///./src/app/home/banners/banners.component.ts","webpack:///./src/app/home/home.component.html","webpack:///./src/app/home/home.component.scss","webpack:///./src/app/home/home.component.ts","webpack:///./src/app/home/home.module.ts","webpack:///./src/app/home/home.routes.ts","webpack:///./src/app/home/home.service.ts","webpack:///./src/app/home/my-warranties/my-warranties.component.html","webpack:///./src/app/home/my-warranties/my-warranties.component.scss","webpack:///./src/app/home/my-warranties/my-warranties.component.ts","webpack:///./src/app/home/my-warranties/my-warranties.guard.ts","webpack:///./src/app/home/my-warranties/my-warranties.service.ts","webpack:///./src/app/home/my-warranties/page-selector-component.html","webpack:///./src/app/home/my-warranties/page-selector.component.scss","webpack:///./src/app/home/my-warranties/page-selector.component.ts","webpack:///./src/app/legacy-toolbox/legacy-toolbox.component.html","webpack:///./src/app/legacy-toolbox/legacy-toolbox.component.ts","webpack:///./src/app/login/index.ts","webpack:///./src/app/login/login-passthru.component.html","webpack:///./src/app/login/login-passthru.component.scss","webpack:///./src/app/login/login-passthru.component.ts","webpack:///./src/app/login/login.component.html","webpack:///./src/app/login/login.component.scss","webpack:///./src/app/login/login.component.ts","webpack:///./src/app/login/login.module.ts","webpack:///./src/app/login/logout.component.ts","webpack:///./src/app/login/model/index.ts","webpack:///./src/app/login/model/legacy-login-result.ts","webpack:///./src/app/login/service/auth.guard.ts","webpack:///./src/app/login/service/authentication.service.ts","webpack:///./src/app/login/service/index.ts","webpack:///./src/app/login/service/user.service.ts","webpack:///./src/app/login/welcome.component.html","webpack:///./src/app/login/welcome.component.scss","webpack:///./src/app/login/welcome.component.ts","webpack:///./src/app/navbar/navbar.component.html","webpack:///./src/app/navbar/navbar.component.scss","webpack:///./src/app/navbar/navbar.component.ts","webpack:///./src/app/navbar/service/navbar.service.ts","webpack:///./src/app/plan-order/plan-order.component.html","webpack:///./src/app/plan-order/plan-order.component.ts","webpack:///./src/app/user/_modules/user-correspondence-preference/user-correspondence-preference.component.html","webpack:///./src/app/user/_modules/user-correspondence-preference/user-correspondence-preference.component.scss","webpack:///./src/app/user/_modules/user-correspondence-preference/user-correspondence-preference.component.ts","webpack:///./src/app/user/_modules/user-customer/user-customer.component.html","webpack:///./src/app/user/_modules/user-customer/user-customer.component.scss","webpack:///./src/app/user/_modules/user-customer/user-customer.component.ts","webpack:///./src/app/user/_modules/user-employer/user-employer.component.html","webpack:///./src/app/user/_modules/user-employer/user-employer.component.scss","webpack:///./src/app/user/_modules/user-employer/user-employer.component.ts","webpack:///./src/app/user/_modules/user-guest/user-guest.component.html","webpack:///./src/app/user/_modules/user-guest/user-guest.component.scss","webpack:///./src/app/user/_modules/user-guest/user-guest.component.ts","webpack:///./src/app/user/_modules/user-jobrole/user-jobrole.component.html","webpack:///./src/app/user/_modules/user-jobrole/user-jobrole.component.scss","webpack:///./src/app/user/_modules/user-jobrole/user-jobrole.component.ts","webpack:///./src/app/user/_services/account-validation.service.ts","webpack:///./src/app/user/_services/account.service.ts","webpack:///./src/app/user/_services/correspondence.service.ts","webpack:///./src/app/user/_services/profile-helper.service.ts","webpack:///./src/app/user/_services/profile-validation.service.ts","webpack:///./src/app/user/_services/profile.service.ts","webpack:///./src/app/user/profile/profile.component.html","webpack:///./src/app/user/profile/profile.component.ts","webpack:///./src/app/user/resend-validation/resend-validation.component.html","webpack:///./src/app/user/resend-validation/resend-validation.component.ts","webpack:///./src/app/user/reset-account/reset-account.component.html","webpack:///./src/app/user/reset-account/reset-account.component.ts","webpack:///./src/app/user/sign-up/sign-up.component.html","webpack:///./src/app/user/sign-up/sign-up.component.ts","webpack:///./src/app/user/user.module.ts","webpack:///./src/app/user/user.routes.ts","webpack:///./src/app/user/validate-email/validate-email.component.html","webpack:///./src/app/user/validate-email/validate-email.component.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error('Cannot find module \"' + req + '\".');\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"./node_modules/timezonecomplete/dist/lib sync recursive\";","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error('Cannot find module \"' + req + '\".');\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","\r\n\r\n\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Injectable} from '@angular/core';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupAgentClearResolver implements Resolve {\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private employerDomainFactoryService: EmployerDomainFactoryService,\r\n private employerLookupService: EmployerLookupService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n this.officeAgentLookupPersistenceService.customer = null;\r\n\r\n subscriber.next(null);\r\n subscriber.complete();\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Injectable} from '@angular/core';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupAgentNewResolver implements Resolve {\r\n\r\n\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private employerLookupService: EmployerLookupService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n // look at the saved customer; reload if it already exists\r\n const savedCustomer = this.officeAgentLookupPersistenceService.customer;\r\n\r\n let createNewCustomerFlag = false;\r\n\r\n if (!savedCustomer) {\r\n createNewCustomerFlag = true;\r\n\r\n } else if (savedCustomer.guid) {\r\n createNewCustomerFlag = true;\r\n }\r\n\r\n\r\n let customer: Customer;\r\n\r\n if (createNewCustomerFlag) {\r\n customer = this.customerDomainFactoryService.newCustomer();\r\n\r\n this.officeAgentLookupPersistenceService.customer = customer;\r\n\r\n } else {\r\n customer = savedCustomer;\r\n }\r\n\r\n subscriber.next(customer);\r\n subscriber.complete();\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Injectable} from '@angular/core';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupAgentUnknownResolver implements Resolve {\r\n\r\n\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private employerLookupService: EmployerLookupService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n // look at the saved customer; reload if it already exists\r\n const savedCustomer = this.officeAgentLookupPersistenceService.customer;\r\n\r\n let createNewCustomerFlag = false;\r\n\r\n if (!savedCustomer) {\r\n createNewCustomerFlag = true;\r\n\r\n } else if (savedCustomer.guid) {\r\n createNewCustomerFlag = true;\r\n\r\n } else if (!savedCustomer.unknownEscrowFlag) {\r\n createNewCustomerFlag = true;\r\n }\r\n\r\n\r\n let customer: Customer;\r\n\r\n if (createNewCustomerFlag) {\r\n customer = this.customerDomainFactoryService.newCustomer();\r\n\r\n customer.unknownEscrowFlag = true;\r\n\r\n this.officeAgentLookupPersistenceService.customer = customer;\r\n\r\n } else {\r\n customer = savedCustomer;\r\n }\r\n\r\n subscriber.next(customer);\r\n subscriber.complete();\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Injectable} from '@angular/core';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupAgentResolver implements Resolve {\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private customerLookupService: CustomerLookupService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n let progress: ModalProgress = null;\r\n\r\n progress = new ModalProgress('Loading Agent', 'Please wait...', 100);\r\n this.modalProgressService.progress = progress;\r\n\r\n const customerGUID = snapshot.params['customerGUID'];\r\n\r\n // look at the saved customer; reload if it's different\r\n const savedCustomer = this.officeAgentLookupPersistenceService.customer;\r\n\r\n let reloadCustomer = false;\r\n\r\n if (customerGUID) {\r\n // reload if no saved customer was found\r\n reloadCustomer = reloadCustomer || !savedCustomer;\r\n\r\n // reload if there is a saved customer, but the GUIDs don't match\r\n reloadCustomer = reloadCustomer || (savedCustomer && (savedCustomer.guid !== customerGUID));\r\n }\r\n\r\n // are we reloading or not?\r\n let customerFetchObservable: Observable;\r\n\r\n if (reloadCustomer) {\r\n customerFetchObservable = this.customerLookupService.fetchCustomerByGUID(customerGUID);\r\n\r\n } else {\r\n customerFetchObservable = Observable.create((persistedSubscriber: Subscriber) => {\r\n persistedSubscriber.next(savedCustomer);\r\n persistedSubscriber.complete();\r\n });\r\n }\r\n\r\n // perform the fetch\r\n customerFetchObservable.subscribe((customer: Customer) => {\r\n this.modalProgressService.progress = null;\r\n\r\n // if the customer was found\r\n if (customer) {\r\n this.officeAgentLookupPersistenceService.customer = customer;\r\n\r\n subscriber.next(customer);\r\n\r\n // if no customer was found\r\n } else {\r\n // redirect the user to the customer lookup\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, customerGUID);\r\n\r\n // remove the customerGUID from the URL\r\n RoutingUtility.removeLastUrlSegmentFromTree(urlTree);\r\n\r\n // we're adding a search\r\n const urlSegment = new UrlSegment('search', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n subscriber.next(null);\r\n }\r\n\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n","\r\n\r\nimport {\r\n ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer,\r\n UrlTree\r\n} from '@angular/router';\r\nimport {Injectable} from '@angular/core';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupEmptyAgentResolver implements Resolve {\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n const urlTree = this.urlSerializer.parse(state.url);\r\n\r\n RoutingUtility.removeLastUrlSegmentFromTree(urlTree);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n subscriber.next(false);\r\n\r\n subscriber.complete();\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n}\r\n","\r\n\r\nimport {\r\n ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer,\r\n UrlTree\r\n} from '@angular/router';\r\nimport {Injectable} from '@angular/core';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupEmptyOfficeResolver implements Resolve {\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n const urlTree = this.urlSerializer.parse(state.url);\r\n\r\n RoutingUtility.removeLastUrlSegmentFromTree(urlTree);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n subscriber.next(false);\r\n\r\n subscriber.complete();\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n}\r\n","\r\nimport {Injectable} from '@angular/core';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {PhxLoginService} from '@orhp/phx-common-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\n\r\n@Injectable()\r\n\r\n\r\nexport class OfficeAgentLookupCacheService {\r\n\r\n selectedOfficeLookupType: OfficeLookupType = null;\r\n lastOfficeLookupType: OfficeLookupType = null;\r\n\r\n searchEmployerPhone = '';\r\n searchEmployerName = '';\r\n searchEmployerCity = '';\r\n searchEmployerStateCode = '';\r\n\r\n recentOfficeResults: Employer[] = null;\r\n\r\n exactOfficeMatchResults: Employer[] = null;\r\n fuzzyOfficeMatchResults: Employer[] = null;\r\n\r\n\r\n constructor(private loginService: PhxLoginService) {\r\n\r\n // on login\r\n const loginObservable = Observable.create((subscriber: Subscriber) => {\r\n this.clearCache();\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n loginService.onLoginSuccess.push(loginObservable);\r\n\r\n\r\n // on logout\r\n const logoutObservable = Observable.create((subscriber: Subscriber) => {\r\n this.clearCache();\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n loginService.onLogout.push(logoutObservable);\r\n\r\n }\r\n\r\n\r\n clearCache() {\r\n this.selectedOfficeLookupType = OfficeLookupType.officePhone;\r\n this.lastOfficeLookupType = null;\r\n\r\n this.searchEmployerPhone = '';\r\n this.searchEmployerName = '';\r\n this.searchEmployerCity = '';\r\n this.searchEmployerStateCode = '';\r\n\r\n this.recentOfficeResults = null;\r\n\r\n this.exactOfficeMatchResults = null;\r\n this.fuzzyOfficeMatchResults = null;\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n\r\nexport enum OfficeLookupType {\r\n none = 100,\r\n recentOffices = 200,\r\n officePhone = 300,\r\n officeName = 400\r\n}\r\n\r\n","\r\n\r\nimport {EventEmitter, Injectable} from '@angular/core';\r\nimport {Customer, Employer} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {EmployerLookupParams} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupService, EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {ActivatedRoute, ActivatedRouteSnapshot, Router} from '@angular/router';\r\nimport {AgentRole} from '@orhp/phx-plan-ui-module';\r\nimport {OfficeAgentErrorCollection} from '../_src/office-agent-error-collection';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {PlanLookupValueFetchService} from '@orhp/phx-plan-ui-module';\r\nimport {CustomerLookupValueFetchService} from '@orhp/phx-customer-ui-module';\r\nimport {\r\n ProductLookupValueFetchService,\r\n ProductOffice,\r\n ProductOfficeGroupLookupParams,\r\n ProductOfficeGroupLookupService, ProductOfficeToolbox\r\n} from '@orhp/phx-product-ui-module';\r\n\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupService {\r\n\r\n // has the module been intialized?\r\n moduleInitFlag = false;\r\n\r\n\r\n // lookup relationship type\r\n get lookupRelationshipType(): OfficeAgentLookupRelationshipType {\r\n const lookupTypeCode = this.officeAgentLookupPersistenceService.lookupTypeCode;\r\n const relationshipType = new OfficeAgentLookupRelationshipType(lookupTypeCode);\r\n\r\n return relationshipType;\r\n }\r\n\r\n\r\n\r\n // employer validation\r\n private _employerValidateResult: EmployerValidateResult = null;\r\n\r\n get employerValidateResult(): EmployerValidateResult {\r\n if (!this._employerValidateResult) {\r\n const employer = this.officeAgentLookupPersistenceService.employer;\r\n\r\n this._employerValidateResult = this.employerDomainFactoryService.newEmployerValidateResult(employer);\r\n }\r\n\r\n return this._employerValidateResult;\r\n }\r\n\r\n set employerValidateResult(result: EmployerValidateResult) {\r\n this._employerValidateResult = result;\r\n }\r\n\r\n\r\n\r\n // customer validation\r\n private _customerValidateResult: CustomerValidateResult = null;\r\n\r\n get customerValidateResult(): CustomerValidateResult {\r\n if (!this._customerValidateResult) {\r\n const customer = this.officeAgentLookupPersistenceService.customer;\r\n\r\n this._customerValidateResult = this.customerDomainFactoryService.newCustomerValidateResult(customer);\r\n }\r\n\r\n return this._customerValidateResult;\r\n }\r\n\r\n set customerValidateResult(result) {\r\n this._customerValidateResult = result;\r\n }\r\n\r\n\r\n\r\n // last employer and customer results for easy adding\r\n lastEmployerResults: Employer[] = null;\r\n lastCustomerResults: Customer[] = null;\r\n\r\n\r\n // caches employers and customers by GUID\r\n employersByGUID = new Map();\r\n customersByGUID = new Map();\r\n\r\n\r\n // event emitter for when the skip button is clicked\r\n skipEventEmitter = new EventEmitter();\r\n\r\n\r\n allowDifferentOfficeSelectionFlag = true;\r\n allowDifferentAgentSelectionFlag = true;\r\n autoFocusOfficeSearchFlag = true;\r\n requiresProductOfficeFlag = false;\r\n\r\n productOffice: ProductOffice = null;\r\n productOfficeEmail: string = null;\r\n\r\n private _productOfficeID: number = null;\r\n\r\n get productOfficeID(): number {\r\n let productOfficeID = this._productOfficeID;\r\n\r\n if (!productOfficeID && !!this.productOffice) {\r\n productOfficeID = this.productOffice.productOfficeID;\r\n }\r\n\r\n return productOfficeID;\r\n }\r\n\r\n set productOfficeID(productOfficeID: number) {\r\n // if an ID was specified\r\n if (productOfficeID) {\r\n this._productOfficeID = productOfficeID;\r\n\r\n setTimeout(() => {\r\n this.fetchProductOfficeByID();\r\n });\r\n\r\n // if no ID was specified\r\n } else {\r\n const productOfficeObjectID = (this.productOffice ? this.productOffice.productOfficeID : null);\r\n\r\n if (this._productOfficeID === productOfficeObjectID) {\r\n this.productOffice = null;\r\n\r\n } else {\r\n this._productOfficeID = productOfficeID;\r\n }\r\n }\r\n }\r\n\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n return (!!this.productOffice ? this.productOffice.toolbox : null);\r\n }\r\n\r\n\r\n\r\n isPlanOrder = true;\r\n shouldDisplayEmployerSearch = true;\r\n\r\n constructor(private employerLookupService: EmployerLookupService,\r\n private customerLookupService: CustomerLookupService,\r\n private customerLookupValueFetchService: CustomerLookupValueFetchService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private planLookupValueFetchService: PlanLookupValueFetchService,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private employerDomainFactoryService: EmployerDomainFactoryService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private productLookupValueFetchService: ProductLookupValueFetchService,\r\n private productOfficeGroupLookupService: ProductOfficeGroupLookupService\r\n ) {\r\n\r\n this.officeAgentLookupPersistenceService.employerEventEmitter.subscribe((employer: Employer) => {\r\n this.employerValidateResult = null;\r\n\r\n this.allowDifferentOfficeSelectionFlag = true;\r\n });\r\n\r\n this.officeAgentLookupPersistenceService.customerEventEmitter.subscribe((customer: Customer) => {\r\n this.customerValidateResult = null;\r\n\r\n this.allowDifferentAgentSelectionFlag = true;\r\n });\r\n }\r\n\r\n\r\n\r\n // initializes the module if needed\r\n initModuleIfNeeded(): Observable {\r\n let observable: Observable = null;\r\n\r\n // if the module has not been initialized yet\r\n if (!this.moduleInitFlag) {\r\n observable = this.initModule();\r\n\r\n // if the module has been initialized\r\n } else {\r\n observable = Observable.create((subscriber: Subscriber) => {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // initializes the module\r\n initModule(): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n const observables: Observable[] = [];\r\n\r\n observables.push(this.customerLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.planLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.productLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n\r\n Observable.forkJoin(observables).subscribe((results: any[]) => {\r\n this.moduleInitFlag = true;\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n /**\r\n * Fetches the product office by ID\r\n * @private\r\n */\r\n private fetchProductOfficeByID() {\r\n const productOfficeObjectID = (!!this.productOffice ? this.productOffice.productOfficeID : null);\r\n\r\n // if we need to load a product office\r\n if (!!this._productOfficeID && (this._productOfficeID !== productOfficeObjectID)) {\r\n const params = new ProductOfficeGroupLookupParams();\r\n params.productOfficeID = this._productOfficeID;\r\n params.jsonToolboxFlag = true;\r\n\r\n this.productOfficeGroupLookupService.fetchProductOfficeGroups(params).subscribe((productOffices: ProductOffice[]) => {\r\n console.log(productOffices);\r\n\r\n // if a product office was found\r\n if (!!(productOffices || []).length) {\r\n this.productOffice = productOffices[0];\r\n this._productOfficeID = null;\r\n\r\n // if no product offices were found\r\n } else {\r\n this.productOffice = null;\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // stores employers\r\n cacheEmployers(employers: Employer[]) {\r\n employers.forEach((indexEmployer: Employer) => {\r\n this.employersByGUID[indexEmployer.guid] = indexEmployer;\r\n });\r\n }\r\n\r\n\r\n\r\n // stores customers\r\n cacheCustomers(customers: Customer[]) {\r\n customers.forEach((indexCustomer: Customer) => {\r\n this.customersByGUID[indexCustomer.guid] = indexCustomer;\r\n });\r\n }\r\n\r\n\r\n clearAllData() {\r\n // reset persistent settings to allow plan order when they leave profile\r\n this.officeAgentLookupPersistenceService.employer = null;\r\n this.officeAgentLookupPersistenceService.customer = null;\r\n\r\n this.lastEmployerResults = null;\r\n this.lastCustomerResults = null;\r\n\r\n this.employerValidateResult = null;\r\n this.customerValidateResult = null;\r\n\r\n this.allowDifferentOfficeSelectionFlag = true;\r\n this.allowDifferentAgentSelectionFlag = true;\r\n this.autoFocusOfficeSearchFlag = true;\r\n this.requiresProductOfficeFlag = false;\r\n\r\n this.productOffice = null;\r\n this.productOfficeID = null;\r\n this.productOfficeEmail = null;\r\n\r\n this.isPlanOrder = true;\r\n this.shouldDisplayEmployerSearch = true;\r\n }\r\n\r\n\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentNavigationService {\r\n\r\n\r\n constructor(private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer\r\n ) { }\r\n\r\n\r\n\r\n gotoOfficeSearch() {\r\n this.officeAgentLookupPersistenceService.employer = null;\r\n\r\n if (!this.officeAgentLookupService.isPlanOrder) {\r\n this.officeAgentLookupService.shouldDisplayEmployerSearch = true;\r\n }\r\n\r\n // pull the URL\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = this.urlSerializer.parse(url);\r\n\r\n // replace the last URL segment\r\n const urlSegment = new UrlSegment('search', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n}\r\n","\r\n\r\n\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Injectable} from '@angular/core';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupOfficeClearResolver implements Resolve {\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private employerDomainFactoryService: EmployerDomainFactoryService,\r\n private employerLookupService: EmployerLookupService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n this.officeAgentLookupPersistenceService.employer = null;\r\n\r\n subscriber.next(null);\r\n subscriber.complete();\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Injectable} from '@angular/core';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupOfficeNewResolver implements Resolve {\r\n\r\n\r\n // lookup relationship type\r\n get lookupRelationshipType(): OfficeAgentLookupRelationshipType {\r\n const lookupTypeCode = this.officeAgentLookupPersistenceService.lookupTypeCode;\r\n const lookupType = new OfficeAgentLookupRelationshipType(lookupTypeCode);\r\n\r\n return lookupType;\r\n }\r\n\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private employerDomainFactoryService: EmployerDomainFactoryService,\r\n private employerLookupService: EmployerLookupService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n // look at the saved employer; reload if it already exists\r\n const savedEmployer = this.officeAgentLookupPersistenceService.employer;\r\n\r\n let createNewEmployerFlag = false;\r\n\r\n if (!savedEmployer) {\r\n createNewEmployerFlag = true;\r\n\r\n } else if (savedEmployer.guid) {\r\n createNewEmployerFlag = true;\r\n }\r\n\r\n let employer: Employer;\r\n\r\n if (createNewEmployerFlag) {\r\n employer = this.employerDomainFactoryService.newEmployer();\r\n\r\n const employerTypeCode = this.lookupRelationshipType.newEmployerTypeCode;\r\n employer.employerType = this.customerLookupValueService.employerTypeByCode(employerTypeCode);\r\n employer.physicalAddress.requiredFlag = true;\r\n employer.mainPhone.requiredFlag = true;\r\n\r\n this.officeAgentLookupPersistenceService.employer = employer;\r\n\r\n } else {\r\n employer = savedEmployer;\r\n }\r\n\r\n subscriber.next(employer);\r\n subscriber.complete();\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n","\r\n\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {\r\n ActivatedRoute, ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment,\r\n UrlSerializer\r\n} from '@angular/router';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupOfficeWildcardResolver implements Resolve {\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private employerLookupService: EmployerLookupService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n const employerGUID = snapshot.params['employerGUID'];\r\n\r\n let urlSegment: UrlSegment;\r\n\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, employerGUID);\r\n\r\n urlSegment = new UrlSegment('agent', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n const customer = this.officeAgentLookupPersistenceService.customer;\r\n\r\n if (customer) {\r\n urlSegment = new UrlSegment(customer.guid, {});\r\n\r\n } else {\r\n urlSegment = new UrlSegment('search', {});\r\n }\r\n\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n subscriber.next(false);\r\n subscriber.complete();\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n\r\n\r\n","\r\n\r\n\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Injectable} from '@angular/core';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupOfficeResolver implements Resolve {\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private employerLookupService: EmployerLookupService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n let progress: ModalProgress = null;\r\n\r\n progress = new ModalProgress('Loading Office', 'Please wait...', 100);\r\n this.modalProgressService.progress = progress;\r\n\r\n const employerGUID = snapshot.params['employerGUID'];\r\n\r\n // look at the saved employer; reload if it's different\r\n const savedEmployer = this.officeAgentLookupPersistenceService.employer;\r\n\r\n let reloadEmployer = false;\r\n\r\n // reload if a GUID was passed, but no saved employer was found\r\n reloadEmployer = reloadEmployer || (employerGUID && !savedEmployer);\r\n\r\n // reload if there is a saved employer, but the GUIDs don't match\r\n reloadEmployer = reloadEmployer || (savedEmployer && (savedEmployer.guid !== employerGUID));\r\n\r\n // are we reloading or not?\r\n let employerFetchObservable: Observable;\r\n\r\n if (reloadEmployer) {\r\n employerFetchObservable = this.employerLookupService.fetchEmployerByGUID(employerGUID);\r\n\r\n } else {\r\n employerFetchObservable = Observable.create((persistedSubscriber: Subscriber) => {\r\n persistedSubscriber.next(savedEmployer);\r\n persistedSubscriber.complete();\r\n });\r\n }\r\n\r\n\r\n // perform the fetch\r\n employerFetchObservable.subscribe((employer: Employer) => {\r\n this.modalProgressService.progress = null;\r\n\r\n this.officeAgentLookupPersistenceService.employer = employer;\r\n\r\n // if the employer was found\r\n if (employer) {\r\n subscriber.next(employer);\r\n\r\n // if no employer was found\r\n } else {\r\n // redirect the user to the employer lookup\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, employerGUID);\r\n\r\n // remove the EmployerGUID from the URL\r\n RoutingUtility.removeLastUrlSegmentFromTree(urlTree);\r\n\r\n // we're adding a search\r\n const urlSegment = new UrlSegment('search', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n subscriber.next(null);\r\n }\r\n\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n","\r\nimport {EventEmitter, Injectable} from '@angular/core';\r\nimport {SessionStorage} from '@orhp/phx-localstorage-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupPersistenceService {\r\n\r\n // where we're storing info\r\n @SessionStorage('phx.common.ui.officeAgentLookup.LookupTypeCode')\r\n private _lookupTypeCode: string;\r\n\r\n @SessionStorage('phx.common.ui.officeAgentLookup.Employer')\r\n private _employerJsonValues: any;\r\n\r\n @SessionStorage('phx.common.ui.officeAgentLookup.Customer')\r\n private _customerJsonValues: any;\r\n\r\n\r\n // Lookup Type\r\n get lookupTypeCode(): string {\r\n return this._lookupTypeCode;\r\n }\r\n\r\n set lookupTypeCode(lookupTypeCode: string) {\r\n this._lookupTypeCode = lookupTypeCode;\r\n }\r\n\r\n\r\n // Employer\r\n private _employer: Employer = null;\r\n\r\n get employer(): Employer {\r\n if (!this._employer) {\r\n const employerJsonValues = this._employerJsonValues;\r\n\r\n if (employerJsonValues) {\r\n this._employer = this.employerDomainFactoryService.newEmployer(employerJsonValues);\r\n }\r\n }\r\n\r\n return this._employer;\r\n }\r\n\r\n set employer(employer: Employer) {\r\n // are the employers different? if so, clear the customer too\r\n let employersDifferentFlag = false;\r\n\r\n if (this._employer && employer) {\r\n if (!this._employer.isEqualToEmployer(employer)) {\r\n employersDifferentFlag = true;\r\n }\r\n\r\n } else {\r\n employersDifferentFlag = true;\r\n }\r\n\r\n if (employersDifferentFlag) {\r\n this.customer = null;\r\n }\r\n\r\n\r\n this._employer = employer;\r\n\r\n if (employer) {\r\n this._employerJsonValues = employer.jsonValues();\r\n\r\n } else {\r\n this._employerJsonValues = null;\r\n }\r\n\r\n this.employerEventEmitter.emit(employer);\r\n }\r\n\r\n\r\n\r\n\r\n // Customer\r\n private _customer: Customer = null;\r\n\r\n get customer(): Customer {\r\n if (!this._customer) {\r\n const customerJsonValues = this._customerJsonValues;\r\n\r\n if (customerJsonValues) {\r\n this._customer = this.customerDomainFactoryService.newCustomer(customerJsonValues);\r\n }\r\n }\r\n\r\n return this._customer;\r\n }\r\n\r\n set customer(customer: Customer) {\r\n this._customer = customer;\r\n\r\n if (customer) {\r\n this._customerJsonValues = customer.jsonValues();\r\n\r\n } else {\r\n this._customerJsonValues = null;\r\n }\r\n\r\n this.customerEventEmitter.emit(customer);\r\n }\r\n\r\n\r\n // Event Emitters\r\n employerEventEmitter = new EventEmitter();\r\n customerEventEmitter = new EventEmitter();\r\n\r\n\r\n constructor(private customerLookupValueService: CustomerLookupValueService,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private employerDomainFactoryService: EmployerDomainFactoryService\r\n ) {\r\n }\r\n\r\n\r\n\r\n // validates the lookup type\r\n validateLookupType(lookupTypeCode: string): boolean {\r\n const validFlag = (lookupTypeCode === this.lookupTypeCode);\r\n\r\n if (!validFlag) {\r\n this.clearPersistedValues();\r\n }\r\n\r\n return validFlag;\r\n }\r\n\r\n\r\n // updates the employer if it's different\r\n setEmployerIfDifferent(newEmployer: Employer): boolean {\r\n // check that the saved employer matches the one supplied\r\n let updateSavedEmployerFlag = false;\r\n\r\n // both the application and saved employer\r\n if (newEmployer && this.employer) {\r\n if (!this.employer.isEqualToEmployer(newEmployer)) {\r\n updateSavedEmployerFlag = true;\r\n }\r\n\r\n // one or the other is empty, force an update\r\n } else {\r\n updateSavedEmployerFlag = true;\r\n }\r\n\r\n if (updateSavedEmployerFlag) {\r\n this.employer = newEmployer;\r\n }\r\n\r\n return updateSavedEmployerFlag;\r\n }\r\n\r\n\r\n // updates the customer if it's different\r\n setCustomerIfDifferent(newCustomer: Customer): boolean {\r\n // check that the saved customer matches the one supplied\r\n let updateSavedCustomerFlag = false;\r\n\r\n // both the new and saved customer\r\n if (newCustomer && this.customer) {\r\n if (!this.customer.isEqualToCustomer(newCustomer)) {\r\n updateSavedCustomerFlag = true;\r\n }\r\n\r\n // one of the other is empty, force an update\r\n } else {\r\n updateSavedCustomerFlag = true;\r\n }\r\n\r\n if (updateSavedCustomerFlag) {\r\n this.customer = newCustomer;\r\n }\r\n\r\n return updateSavedCustomerFlag;\r\n }\r\n\r\n\r\n // clears persisted values\r\n clearPersistedValues() {\r\n this.lookupTypeCode = null;\r\n this.employer = null;\r\n this.customer = null;\r\n }\r\n\r\n\r\n}\r\n","\r\n\r\nimport {\r\n ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer,\r\n UrlTree\r\n} from '@angular/router';\r\nimport {Injectable} from '@angular/core';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from './persistence.service';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupRootWildcardResolver implements Resolve {\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n let urlSegment: UrlSegment = null;\r\n\r\n // employer\r\n let employerGUID: string = null;\r\n const savedEmployer = this.officeAgentLookupPersistenceService.employer;\r\n\r\n if (savedEmployer) {\r\n employerGUID = savedEmployer.guid;\r\n }\r\n\r\n\r\n // customer\r\n let customerGUID: string = null;\r\n const savedCustomer = this.officeAgentLookupPersistenceService.customer;\r\n\r\n if (savedCustomer) {\r\n customerGUID = savedCustomer.guid;\r\n }\r\n\r\n // build the URL tree\r\n let urlTree: UrlTree = null;\r\n\r\n // if there was a matching URL segment here, strip everything after out\r\n if (snapshot.url.length) {\r\n const firstUrlSegment = snapshot.url[0];\r\n\r\n urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, firstUrlSegment.path);\r\n\r\n RoutingUtility.removeLastUrlSegmentFromTree(urlTree);\r\n\r\n // no matching URL segment\r\n } else {\r\n urlTree = this.urlSerializer.parse(state.url);\r\n }\r\n\r\n\r\n\r\n // we're going to an office\r\n urlSegment = new UrlSegment('office', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n // if an employer was specified\r\n if (employerGUID) {\r\n urlSegment = new UrlSegment(employerGUID, {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n urlSegment = new UrlSegment('agent', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n // if a customer was specified\r\n if (customerGUID) {\r\n urlSegment = new UrlSegment(customerGUID, {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n // if no customer was specified\r\n } else {\r\n if (savedCustomer) {\r\n urlSegment = new UrlSegment('new-agent', {});\r\n\r\n } else {\r\n urlSegment = new UrlSegment('search', {});\r\n }\r\n\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n }\r\n\r\n // if no employer was specified\r\n } else {\r\n if (savedEmployer) {\r\n urlSegment = new UrlSegment('new-office', {});\r\n\r\n } else {\r\n urlSegment = new UrlSegment('search', {});\r\n }\r\n\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n }\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n subscriber.next(false);\r\n\r\n subscriber.complete();\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n}\r\n","\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSerializer} from '@angular/router';\r\nimport {Injectable} from '@angular/core';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupService} from './lookup.service';\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupRootResolver implements Resolve {\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer) {\r\n }\r\n\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n let progress: ModalProgress = null;\r\n\r\n // provide the user with some progress\r\n progress = new ModalProgress('Initializing Office/Agent Lookup', 'Please wait...', 100);\r\n this.modalProgressService.progress = progress;\r\n\r\n // call the module init\r\n this.officeAgentLookupService.initModuleIfNeeded().subscribe((moduleInitResultFlag: boolean) => {\r\n // clear the progress indicator\r\n this.modalProgressService.progress = null;\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {AddressValidateResult} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {AddressValidateRequest} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {EmployerLookupParams} from '@orhp/phx-customer-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {\r\n Customer, CustomerLookupParams, CustomerValidateResult,\r\n EmployerValidateResult\r\n} from '@orhp/phx-customer-ui-module';\r\nimport {AddressValidateService} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {\r\n CustomerLookupService, CustomerUpdateService, EmployerLookupService,\r\n EmployerUpdateService\r\n} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\n\r\n\r\n@Injectable()\r\n\r\nexport class OfficeAgentLookupValidateService {\r\n\r\n\r\n constructor(private addressValidateService: AddressValidateService,\r\n private employerUpdateService: EmployerUpdateService,\r\n private employerLookupService: EmployerLookupService,\r\n private customerUpdateService: CustomerUpdateService,\r\n private customerLookupService: CustomerLookupService) {\r\n }\r\n\r\n\r\n\r\n\r\n // performs validation\r\n performValidation(employer: Employer,\r\n customer: Customer,\r\n lookupRelationshipTypeCode?: string\r\n ): Observable {\r\n\r\n const observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n let lookupRelationshipType: OfficeAgentLookupRelationshipType = null;\r\n\r\n if (lookupRelationshipTypeCode) {\r\n lookupRelationshipType = new OfficeAgentLookupRelationshipType(lookupRelationshipTypeCode);\r\n }\r\n\r\n const newEmployerFlag = !employer.employerID;\r\n const newCustomerFlag = !customer.customerID;\r\n\r\n let unknownEscrowFlag = false;\r\n\r\n if (lookupRelationshipType) {\r\n unknownEscrowFlag = (lookupRelationshipType.escrowOfficerFlag ? customer.unknownEscrowFlag : false);\r\n }\r\n\r\n const observables = [];\r\n\r\n // validate the customer\r\n const customerValidateIndex = observables.length;\r\n const customerObservable = this.customerUpdateService.performCustomerValidation(customer);\r\n observables.push(customerObservable);\r\n\r\n // if this is a new customer and existing office, look for an existing customer\r\n let customerDuplicateIndex: number = null;\r\n\r\n if (!newEmployerFlag && newCustomerFlag && !unknownEscrowFlag) {\r\n customerDuplicateIndex = observables.length;\r\n\r\n const customerDuplicateObservable = this.findExistingCustomer(employer, customer, lookupRelationshipType);\r\n observables.push(customerDuplicateObservable);\r\n }\r\n\r\n\r\n // if it's a new employer\r\n let employerValidateIndex: number = null;\r\n let employerDuplicateIndex: number = null;\r\n\r\n if (newEmployerFlag) {\r\n // validate the info\r\n employerValidateIndex = observables.length;\r\n observables.push(this.employerUpdateService.performEmployerValidation(employer));\r\n\r\n // look for an existing employer\r\n employerDuplicateIndex = observables.length;\r\n observables.push(this.findExistingEmployer(employer));\r\n }\r\n\r\n\r\n // are any errors returned\r\n let hasErrorFlag = false;\r\n\r\n\r\n Observable.forkJoin(observables).subscribe(results => {\r\n // customer validation\r\n const customerValidateResult = results[customerValidateIndex];\r\n\r\n if (customerValidateResult.errorFlag) {\r\n hasErrorFlag = true;\r\n }\r\n\r\n // employer validation\r\n let employerValidateResult: EmployerValidateResult = null;\r\n\r\n if (employerValidateIndex) {\r\n employerValidateResult = results[employerValidateIndex];\r\n\r\n if (employerValidateResult.errorFlag) {\r\n hasErrorFlag = true;\r\n }\r\n }\r\n\r\n\r\n // if we're looking for a duplicate customer\r\n let customerAutoMatch: Customer = null;\r\n\r\n if (!hasErrorFlag && customerDuplicateIndex) {\r\n const duplicateCustomers = results[customerDuplicateIndex];\r\n\r\n if (duplicateCustomers.length) {\r\n customerAutoMatch = duplicateCustomers[0];\r\n }\r\n }\r\n\r\n\r\n // if we're looking for a duplicate employer\r\n let employerAutoMatch: Employer = null;\r\n\r\n if (!hasErrorFlag && employerDuplicateIndex) {\r\n const existingEmployers = results[employerDuplicateIndex] || [];\r\n\r\n // if an existing employer was found\r\n if (existingEmployers.length) {\r\n employerAutoMatch = existingEmployers[0];\r\n }\r\n }\r\n\r\n\r\n const validateResults: IOfficeAgentLookupValidateResult = {\r\n employerValidateResult: employerValidateResult,\r\n customerValidateResult: customerValidateResult,\r\n employerAutoMatch: employerAutoMatch,\r\n customerAutoMatch: customerAutoMatch\r\n };\r\n\r\n subscriber.next(validateResults);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // looks for an existing employer\r\n findExistingEmployer(employer: Employer): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n const address = employer.physicalAddress;\r\n\r\n // validate the office address\r\n const addressRequest = new AddressValidateRequest();\r\n\r\n addressRequest.address = address.address;\r\n addressRequest.city = address.city;\r\n addressRequest.stateCode = address.stateCode;\r\n addressRequest.zipCode = address.zipCode;\r\n\r\n this.addressValidateService.validateAddress(addressRequest).subscribe((addressResult: AddressValidateResult) => {\r\n // if the address validated\r\n if (addressResult.validatedFlag) {\r\n // look for an existing employer\r\n const employerParams = new EmployerLookupParams();\r\n\r\n employerParams.employerTypeCode = employer.employerType.employerType;\r\n employerParams.address = addressResult.cleanAddress;\r\n employerParams.zipCode = addressResult.cleanZipCode;\r\n\r\n this.employerLookupService.fetchEmployers(employerParams).subscribe((employers: Employer[]) => {\r\n subscriber.next(employers);\r\n subscriber.complete();\r\n });\r\n\r\n // if the address didn't validate\r\n } else {\r\n subscriber.next(null);\r\n subscriber.complete();\r\n }\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n findExistingCustomer(employer: Employer,\r\n customer: Customer,\r\n lookupRelationshipType: OfficeAgentLookupRelationshipType\r\n ): Observable {\r\n const observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n // perform a customer lookup by name\r\n const params = new CustomerLookupParams();\r\n\r\n params.employer = employer;\r\n params.givenName = customer.givenName;\r\n params.surName = customer.surName;\r\n params.includeEmployerFlag = false;\r\n\r\n if (lookupRelationshipType) {\r\n if (lookupRelationshipType.initiatingAgentFlag) {\r\n params.toolboxRealtorFlag = true;\r\n\r\n } else if (lookupRelationshipType.cooperatingAgentFlag) {\r\n params.toolboxRealtorFlag = true;\r\n\r\n } else if (lookupRelationshipType.escrowOfficerFlag) {\r\n params.toolboxEscrowFlag = true;\r\n }\r\n }\r\n\r\n this.customerLookupService.fetchCustomers(params).subscribe((customers: Customer[]) => {\r\n subscriber.next(customers);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\nexport interface IOfficeAgentLookupValidateResult {\r\n customerValidateResult: CustomerValidateResult;\r\n employerValidateResult: EmployerValidateResult;\r\n customerAutoMatch: Customer;\r\n employerAutoMatch: Employer;\r\n}\r\n\r\n","\r\nexport class OfficeAgentLookupRelationshipType {\r\n\r\n static typeCodeInitiatingAgent = 'initiating-agent';\r\n static typeCodeCooperatingAgent = 'cooperating-agent';\r\n static typeCodePropertyManager = 'property-manager';\r\n static typeCodeEscrowOfficer = 'escrow-officer';\r\n\r\n\r\n\r\n\r\n lookupRelationshipTypeCode: string;\r\n\r\n\r\n constructor(lookupRelationshipTypeCode: string) {\r\n this.lookupRelationshipTypeCode = lookupRelationshipTypeCode;\r\n }\r\n\r\n\r\n\r\n get initiatingAgentFlag(): boolean {\r\n return (this.lookupRelationshipTypeCode === OfficeAgentLookupRelationshipType.typeCodeInitiatingAgent);\r\n }\r\n\r\n get cooperatingAgentFlag(): boolean {\r\n return (this.lookupRelationshipTypeCode === OfficeAgentLookupRelationshipType.typeCodeCooperatingAgent);\r\n }\r\n\r\n get propertyManagerFlag(): boolean {\r\n return (this.lookupRelationshipTypeCode === OfficeAgentLookupRelationshipType.typeCodePropertyManager);\r\n }\r\n\r\n get escrowOfficerFlag(): boolean {\r\n return (this.lookupRelationshipTypeCode === OfficeAgentLookupRelationshipType.typeCodeEscrowOfficer);\r\n }\r\n\r\n\r\n get relationshipName(): string {\r\n let relationshipName = '';\r\n\r\n if (this.initiatingAgentFlag) {\r\n relationshipName = 'Initiating Real Estate Agent';\r\n\r\n } else if (this.cooperatingAgentFlag) {\r\n relationshipName = 'Cooperating Real Estate Agent';\r\n\r\n } else if (this.propertyManagerFlag) {\r\n relationshipName = 'Property Manager';\r\n\r\n } else if (this.escrowOfficerFlag) {\r\n relationshipName = 'Closing Officer';\r\n }\r\n\r\n return relationshipName;\r\n }\r\n\r\n\r\n get newEmployerTypeCode(): string {\r\n let employerTypeCode: string = null;\r\n\r\n if (this.initiatingAgentFlag) {\r\n employerTypeCode = 'R';\r\n\r\n } else if (this.cooperatingAgentFlag) {\r\n employerTypeCode = 'R';\r\n\r\n } else if (this.propertyManagerFlag) {\r\n employerTypeCode = 'P';\r\n\r\n } else if (this.escrowOfficerFlag) {\r\n employerTypeCode = 'E';\r\n }\r\n\r\n return employerTypeCode;\r\n }\r\n\r\n\r\n get lookupEmployerTypeCode(): string {\r\n let employerTypeCode: string = null;\r\n\r\n if (this.initiatingAgentFlag) {\r\n employerTypeCode = 'R';\r\n\r\n } else if (this.cooperatingAgentFlag) {\r\n employerTypeCode = 'R';\r\n\r\n } else if (this.propertyManagerFlag) {\r\n employerTypeCode = 'P,R';\r\n\r\n } else if (this.escrowOfficerFlag) {\r\n employerTypeCode = 'R,E';\r\n } else {\r\n employerTypeCode = this.lookupRelationshipTypeCode;\r\n }\r\n\r\n return employerTypeCode;\r\n }\r\n\r\n\r\n get shouldFetchRecentOffices(): boolean {\r\n let flag = false;\r\n\r\n if (this.initiatingAgentFlag) {\r\n flag = true;\r\n }\r\n\r\n if (this.escrowOfficerFlag) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n get agentTerm(): string {\r\n let agentTerm: string = null;\r\n\r\n if (this.propertyManagerFlag) {\r\n agentTerm = 'property manager';\r\n\r\n } else if (this.escrowOfficerFlag) {\r\n agentTerm = 'closing officer';\r\n\r\n } else {\r\n agentTerm = 'agent';\r\n }\r\n\r\n return agentTerm;\r\n }\r\n\r\n\r\n\r\n get agentLookupFirstNamePagingFlag(): boolean {\r\n let flag = false;\r\n\r\n if (this.escrowOfficerFlag) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n get agentLookupLastNamePagingFlag(): boolean {\r\n let flag = false;\r\n\r\n if (this.initiatingAgentFlag) {\r\n flag = true;\r\n } else if (this.cooperatingAgentFlag) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n get solicitMobilePhoneFlag(): boolean {\r\n let flag = true;\r\n\r\n if (this.escrowOfficerFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","module.exports = \"\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","\r\n\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {OfficeAgentLookupService} from '../_services/lookup.service';\r\n\r\nimport {Customer, CustomerPhone} from '@orhp/phx-customer-ui-module';\r\n\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {OfficeAgentErrorCollection} from '../_src/office-agent-error-collection';\r\nimport {CustomerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {IAgentResolverInterface} from '../_src/agent-resolver-interface';\r\n\r\n@Component({\r\n selector: 'app-agent-contact',\r\n templateUrl: './agent-contact.component.html',\r\n styleUrls: ['../office-agent-lookup.scss']\r\n})\r\n\r\n\r\nexport class AgentContactComponent implements OnInit {\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private planLookupValueService: PlanLookupValueService,\r\n private officeAgentLookupService: OfficeAgentLookupService) {\r\n }\r\n\r\n\r\n customer: Customer = null;\r\n\r\n\r\n get customerValidateResult(): CustomerValidateResult {\r\n return this.officeAgentLookupService.customerValidateResult;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.route.data.subscribe((data: any) => {\r\n const customerData = data;\r\n\r\n this.customer = customerData.customer;\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n // should the contact info be allowed to be edited?\r\n shouldAllowContactEditing(customerPhone: CustomerPhone): boolean {\r\n return ((customerPhone.guid || '') === '');\r\n }\r\n\r\n\r\n shouldSolicitMobilePhone(): boolean {\r\n const lookupRelationshipType = this.officeAgentLookupService.lookupRelationshipType;\r\n\r\n let flag = true;\r\n\r\n if (lookupRelationshipType && !lookupRelationshipType.solicitMobilePhoneFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n shouldDisplayEmailError(): boolean {\r\n return ((this.customerValidateResult.customerEmailError || '') !== '');\r\n }\r\n\r\n\r\n shouldDisplayMobilePhoneError(): boolean {\r\n return ((this.customerValidateResult.customerMobilePhoneError || '') !== '');\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n {{pageTitle() | titlecase}}\\r\\n

\\r\\n\\r\\n
\\r\\n \\r\\n Choose a different\\r\\n {{this.lookupType.agentTerm}}\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\"","\r\nimport {OfficeAgentLookupService} from '../_services/lookup.service';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {Customer, Employer} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentErrorCollection} from '../_src/office-agent-error-collection';\r\nimport {CustomerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {IOfficeResolverInterface} from '../_src/office-resolver-interface';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {CustomerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from '../_services/persistence.service';\r\nimport {IAgentResolverInterface} from '../_src/agent-resolver-interface';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\nimport {JobRole} from '@orhp/phx-customer-ui-module';\r\n\r\n@Component({\r\n selector: 'app-agent-entry',\r\n templateUrl: './agent-entry.component.html',\r\n styleUrls: ['../office-agent-lookup.scss']\r\n})\r\n\r\n\r\nexport class AgentEntryComponent implements OnInit {\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private officeAgentLookupService: OfficeAgentLookupService) {\r\n }\r\n\r\n\r\n customer: Customer = null;\r\n employer: Employer = null;\r\n\r\n\r\n private _lookupType: OfficeAgentLookupRelationshipType = null;\r\n\r\n get lookupType(): OfficeAgentLookupRelationshipType {\r\n if (!this._lookupType) {\r\n this._lookupType = new OfficeAgentLookupRelationshipType(this.officeAgentLookupPersistenceService.lookupTypeCode);\r\n }\r\n\r\n return this._lookupType;\r\n }\r\n\r\n\r\n\r\n get customerValidateResult(): CustomerValidateResult {\r\n return this.officeAgentLookupService.customerValidateResult;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.route.data.subscribe((data: any) => {\r\n const employerData = data;\r\n\r\n this.employer = employerData.employer;\r\n\r\n const customerData = data;\r\n\r\n this.customer = customerData.customer;\r\n\r\n // link the employer to the customer\r\n this.customer.employer = this.employer;\r\n\r\n // set job role\r\n let jobRole: JobRole = null;\r\n\r\n if (this.lookupType.initiatingAgentFlag) {\r\n jobRole = this.customerLookupValueService.jobRoleRealEstateAgent;\r\n\r\n } else if (this.lookupType.cooperatingAgentFlag) {\r\n jobRole = this.customerLookupValueService.jobRoleRealEstateAgent;\r\n\r\n } else if (this.lookupType.escrowOfficerFlag) {\r\n jobRole = this.customerLookupValueService.jobRoleClosingAgent;\r\n }\r\n\r\n this.customer.jobRole = jobRole;\r\n });\r\n\r\n }\r\n\r\n\r\n // unknown escrow?\r\n unknownEscrowFlag(): boolean {\r\n let flag = false;\r\n\r\n if (this.lookupType && this.lookupType.escrowOfficerFlag) {\r\n if (this.customer.unknownEscrowFlag) {\r\n flag = true;\r\n }\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n // page title\r\n pageTitle(): string {\r\n let title = 'New';\r\n\r\n if (this.unknownEscrowFlag()) {\r\n title = 'Unknown';\r\n }\r\n\r\n title += ' ' + this.lookupType.agentTerm;\r\n\r\n return title;\r\n }\r\n\r\n\r\n\r\n // should the different agent link be displayed?\r\n shouldDisplayDifferentAgentLink() {\r\n let flag = true;\r\n\r\n // if the employer is not selected\r\n if (!this.employer) {\r\n flag = false;\r\n\r\n // if the employer is selected\r\n } else {\r\n // if this is the unknown escrow\r\n if (this.unknownEscrowFlag()) {\r\n flag = false;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n shouldDisplayNewAgentEntry(): boolean {\r\n let flag = true;\r\n\r\n if (this.unknownEscrowFlag()) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n didClickFindDifferentAgent() {\r\n this.officeAgentLookupPersistenceService.customer = null;\r\n\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = this.urlSerializer.parse(url);\r\n\r\n const urlSegment = new UrlSegment('search', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n shouldDisplayGivenNameError(): boolean {\r\n return ((this.customerValidateResult.customerGivenNameError || '') !== '');\r\n }\r\n\r\n\r\n shouldDisplaySurNameError(): boolean {\r\n return ((this.customerValidateResult.customerSurNameError || '') !== '');\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n {{this.lookupRelationshipType.agentTerm | titlecase}} Lookup Running, please wait...\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n There was a problem with the {{this.lookupRelationshipType.agentTerm | titlecase}} Lookup.\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.splitCustomersByText()}} starts with:\\r\\n {{indexLetter}}\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Select the {{this.lookupRelationshipType.agentTerm}} from the list below:\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{indexCustomer.lastFirstName}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{indexCustomer.firstLastName}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n {{this.lookupRelationshipType.agentTerm.toUpperCase()}} NOT LISTED -\\r\\n ADD NEW {{this.lookupRelationshipType.agentTerm.toUpperCase()}}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n {{lookupRelationshipType.agentTerm.toUpperCase()}} UNKNOWN\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \"div.unknown-agent-link,div.unknown-agent-link::before,div.new-agent-link,div.new-agent-link::before{color:#a4343a}\\n\"","\r\n\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {OfficeAgentLookupService} from '../_services/lookup.service';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {Customer, Employer} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\nimport {CustomerLookupParams} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {IOfficeResolverInterface} from '../_src/office-resolver-interface';\r\nimport {OfficeAgentLookupPersistenceService} from '../_services/persistence.service';\r\n\r\n@Component({\r\n selector: 'app-agent-lookup',\r\n templateUrl: './agent-lookup.component.html',\r\n styleUrls: [\r\n '../office-agent-lookup.scss',\r\n './agent-lookup.component.scss'\r\n ]\r\n})\r\n\r\n\r\nexport class AgentLookupComponent implements OnInit {\r\n\r\n customers: Customer[] = null;\r\n\r\n unknownEscrowCustomer: Customer = null;\r\n\r\n // array of customers by letter\r\n customerLetters: string[] = null;\r\n customersByLetter: Map = null;\r\n selectedCustomerLetter: string = null;\r\n\r\n agentSearchWasRun = false;\r\n agentLookupRunningFlag = false;\r\n agentLookupFailureFlag = false;\r\n\r\n lookupRetryCount = 0;\r\n lookupMaxRetryCount = 3;\r\n\r\n constructor(private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private customerLookupService: CustomerLookupService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router,\r\n private route: ActivatedRoute) {\r\n }\r\n\r\n\r\n get lookupRelationshipType(): OfficeAgentLookupRelationshipType {\r\n return this.officeAgentLookupService.lookupRelationshipType;\r\n }\r\n\r\n\r\n // Employer\r\n employer: Employer = null;\r\n\r\n\r\n ngOnInit() {\r\n this.route.data.subscribe((data: any) => {\r\n const officeData = data;\r\n\r\n this.employer = officeData.employer;\r\n\r\n this.fetchCustomers();\r\n });\r\n }\r\n\r\n\r\n // should the new agent entry be displayed\r\n shouldDisplayNewAgentEntry(): boolean {\r\n return this.agentSearchWasRun;\r\n }\r\n\r\n\r\n\r\n // should the unknown agent entry be displayed\r\n shouldDisplayUnknownAgentEntry(): boolean {\r\n let displayFlag = true;\r\n\r\n if (!this.agentSearchWasRun) {\r\n displayFlag = false;\r\n }\r\n\r\n let relationshipFlag = false;\r\n relationshipFlag = relationshipFlag || this.lookupRelationshipType.escrowOfficerFlag;\r\n\r\n if (!relationshipFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the lookup failure message be displayed\r\n shouldDisplayAgentLookupFailure(): boolean {\r\n return this.agentLookupFailureFlag;\r\n }\r\n\r\n\r\n // user clicked to try the agent lookup again\r\n didClickTryLookupAgain() {\r\n this.agentLookupFailureFlag = false;\r\n\r\n this.fetchCustomers();\r\n }\r\n\r\n\r\n\r\n // user clicked the agent search\r\n didClickAgentSearch() {\r\n this.fetchCustomers();\r\n }\r\n\r\n\r\n // fetches agents\r\n fetchCustomers() {\r\n const params = new CustomerLookupParams();\r\n params.employer = this.employer;\r\n\r\n if (this.lookupRelationshipType) {\r\n params.includePhonesFlag = false;\r\n params.includeFlatPhonesFlag = true;\r\n\r\n if (this.lookupRelationshipType.initiatingAgentFlag) {\r\n params.toolboxRealtorFlag = true;\r\n params.includeEmployerFlag = false;\r\n\r\n } else if (this.lookupRelationshipType.cooperatingAgentFlag) {\r\n params.toolboxRealtorFlag = true;\r\n params.includeEmployerFlag = false;\r\n\r\n } else if (this.lookupRelationshipType.escrowOfficerFlag) {\r\n params.toolboxEscrowFlag = true;\r\n params.includeEmployerFlag = false;\r\n }\r\n }\r\n\r\n this.agentLookupRunningFlag = true;\r\n\r\n // initiate the fetch request\r\n this.customerLookupService.fetchCustomers(params).subscribe((customers: Customer[]) => {\r\n // if customers were returned\r\n if (customers) {\r\n this.parseCustomerLookupResults(customers);\r\n\r\n // if no customers were returned\r\n } else {\r\n this.lookupRetryCount++;\r\n\r\n // if we're under the max retry count, try again\r\n if (this.lookupRetryCount <= this.lookupMaxRetryCount) {\r\n this.fetchCustomers();\r\n\r\n // if we've reached our max retry count, display an error\r\n } else {\r\n this.agentLookupRunningFlag = false;\r\n this.agentLookupFailureFlag = true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n // parses customer lookup results\r\n parseCustomerLookupResults(customers: Customer[]) {\r\n this.officeAgentLookupService.cacheCustomers(customers);\r\n\r\n const customerLetters = [];\r\n const customerLetterMap = new Map();\r\n const customersByLetter = new Map();\r\n\r\n // should we split the customers by name?\r\n let splitCustomersByNameFlag = true;\r\n\r\n splitCustomersByNameFlag = splitCustomersByNameFlag && (customers.length > 10);\r\n\r\n const firstNameSplitFlag = this.lookupRelationshipType.agentLookupFirstNamePagingFlag;\r\n const lastNameSplitFlag = this.lookupRelationshipType.agentLookupLastNamePagingFlag;\r\n\r\n if (!firstNameSplitFlag && !lastNameSplitFlag) {\r\n splitCustomersByNameFlag = false;\r\n }\r\n\r\n\r\n // sort the returned customers\r\n customers = customers.sort((a: any, b: any): number => {\r\n const customer1 = a;\r\n const customer2 = b;\r\n\r\n let customer1Name = (firstNameSplitFlag ? customer1.firstLastName : customer1.lastFirstName);\r\n let customer2Name = (firstNameSplitFlag ? customer2.firstLastName : customer2.lastFirstName);\r\n\r\n customer1Name = (customer1Name || '').toUpperCase();\r\n customer2Name = (customer2Name || '').toUpperCase();\r\n\r\n let value = 0;\r\n\r\n if (customer1Name < customer2Name) {\r\n value = -1;\r\n\r\n } else if (customer1Name > customer2Name) {\r\n value = 1;\r\n }\r\n\r\n return value;\r\n });\r\n\r\n\r\n const escrowOfficerFlag = this.lookupRelationshipType.escrowOfficerFlag;\r\n\r\n // loop over returned customers\r\n customers.forEach((indexCustomer: Customer) => {\r\n // if the customer doesn't have an employer, add the current employer\r\n if (!indexCustomer.employer) {\r\n indexCustomer.employer = this.employer;\r\n }\r\n\r\n // flag that the customer name should not be validated\r\n indexCustomer.validateNameFlag = false;\r\n\r\n // should the customer be displayed?\r\n let displayCustomerFlag = true;\r\n\r\n // if this is the escrow relationship\r\n if (escrowOfficerFlag) {\r\n // if this is the unknown customer\r\n if (indexCustomer.unknownEscrowFlag) {\r\n this.unknownEscrowCustomer = indexCustomer;\r\n\r\n displayCustomerFlag = false;\r\n }\r\n }\r\n\r\n // if we're displaying the customer\r\n if (displayCustomerFlag) {\r\n\r\n let letter = '#';\r\n\r\n // if we're splitting the customers by name\r\n if (splitCustomersByNameFlag) {\r\n let splitName: string = null;\r\n\r\n if (firstNameSplitFlag) {\r\n splitName = indexCustomer.firstLastName;\r\n\r\n } else if (lastNameSplitFlag) {\r\n splitName = indexCustomer.lastFirstName;\r\n }\r\n\r\n if (splitName) {\r\n letter = splitName.substr(0, 1).toUpperCase();\r\n }\r\n\r\n // no letter goes into '#'\r\n if (letter === '') {\r\n letter = '#';\r\n\r\n // anything other than a letter goes into '#'\r\n } else if (letter.replace(/[^a-zA-Z]/, '#') === '#') {\r\n letter = '#';\r\n }\r\n }\r\n\r\n\r\n // if this is the first time we're using this letter\r\n if (!customerLetterMap[letter]) {\r\n customerLetterMap[letter] = true;\r\n customerLetters.push(letter);\r\n }\r\n\r\n // append the customer to the appropriate array\r\n const indexCustomersByLetter = customersByLetter[letter] || [];\r\n indexCustomersByLetter.push(indexCustomer);\r\n\r\n customersByLetter[letter] = indexCustomersByLetter;\r\n }\r\n });\r\n\r\n // sort the customer letters\r\n const sortedCustomerLetters = customerLetters.sort((a: any, b: any): number => {\r\n const letter1 = (a || '').toUpperCase();\r\n const letter2 = (b || '').toUpperCase();\r\n\r\n let value = 0;\r\n\r\n if (letter1 < letter2) {\r\n value = -1;\r\n } else if (letter1 > letter2) {\r\n value = 1;\r\n }\r\n\r\n return value;\r\n });\r\n\r\n this.customers = customers;\r\n this.customerLetters = sortedCustomerLetters;\r\n this.customersByLetter = customersByLetter;\r\n\r\n // pull the selected letter from the URL\r\n const agentSplitLetter = this.route.snapshot.params['agentSplitLetter'];\r\n\r\n // if there's a selected letter, and there are customers\r\n if (agentSplitLetter && this.customersByLetter[agentSplitLetter]) {\r\n this.selectedCustomerLetter = agentSplitLetter;\r\n\r\n // otherwise use the first letter\r\n } else if (customerLetters.length > 0) {\r\n this.selectedCustomerLetter = customerLetters[0];\r\n }\r\n\r\n this.agentSearchWasRun = true;\r\n this.agentLookupRunningFlag = false;\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayLastFirst(): boolean {\r\n return this.lookupRelationshipType.agentLookupLastNamePagingFlag;\r\n }\r\n\r\n shouldDisplayFirstLast(): boolean {\r\n return this.lookupRelationshipType.agentLookupFirstNamePagingFlag;\r\n }\r\n\r\n\r\n\r\n // what are we splitting customers by\r\n splitCustomersByText(): string {\r\n let text = '';\r\n\r\n if (this.lookupRelationshipType.agentLookupFirstNamePagingFlag) {\r\n text = 'First name';\r\n\r\n } else if (this.lookupRelationshipType.agentLookupLastNamePagingFlag) {\r\n text = 'Last name';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n // the user clicked a filter letter\r\n didClickFilterLetter(letter: string) {\r\n this.selectedCustomerLetter = letter;\r\n }\r\n\r\n\r\n // customers by filter letter\r\n customersByFilterLetter(): Customer[] {\r\n let customers = [];\r\n\r\n if (this.selectedCustomerLetter) {\r\n customers = this.customersByLetter[this.selectedCustomerLetter];\r\n }\r\n\r\n return customers;\r\n }\r\n\r\n\r\n // should the letter filter selector be displayed\r\n shouldLetterFilterBeDisplayed(): boolean {\r\n return (this.customerLetters.length > 1);\r\n }\r\n\r\n\r\n // is this the selected letter?\r\n isSelectedLetter(letter: string): boolean {\r\n return (this.selectedCustomerLetter === letter);\r\n }\r\n\r\n\r\n // user clicked a new agent\r\n didClickNewAgent() {\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = this.urlSerializer.parse(url);\r\n\r\n // replace the last segment with the new agent route\r\n const urlSegment = new UrlSegment('new-agent', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n // user clicked the unknown agent\r\n didClickUnknownAgent() {\r\n // if there is already an UNKNOWN agent for this office\r\n if (this.unknownEscrowCustomer) {\r\n this.didClickAgent(this.unknownEscrowCustomer);\r\n\r\n // if we need to create a new UNKNOWN agent\r\n } else {\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = this.urlSerializer.parse(url);\r\n\r\n // replace the last segment with the unknown agent route\r\n const urlSegment = new UrlSegment('unknown-agent', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n }\r\n\r\n\r\n // user clicked an agent\r\n didClickAgent(customer: Customer) {\r\n this.officeAgentLookupPersistenceService.customer = customer;\r\n\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = this.urlSerializer.parse(url);\r\n\r\n // replace the last segment with the new agent route\r\n const urlSegment = new UrlSegment(customer.guid, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","\r\n\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {OfficeAgentLookupService} from '../_services/lookup.service';\r\nimport {Customer, Employer} from '@orhp/phx-customer-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {CustomerPhone} from '@orhp/phx-customer-ui-module';\r\nimport {IAgentResolverInterface} from '../_src/agent-resolver-interface';\r\n\r\n@Component({\r\n selector: 'app-agent',\r\n templateUrl: './agent.component.html',\r\n styleUrls: ['../office-agent-lookup.scss']\r\n})\r\n\r\n\r\nexport class AgentComponent implements OnInit {\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private officeAgentLookupService: OfficeAgentLookupService) {\r\n }\r\n\r\n\r\n customer: Customer = null;\r\n\r\n\r\n ngOnInit() {\r\n this.route.data.subscribe((data: any) => {\r\n const customerData = data;\r\n\r\n this.customer = customerData.customer;\r\n });\r\n }\r\n\r\n\r\n\r\n shouldDisplayContactInfo(): boolean {\r\n let displayFlag = true;\r\n\r\n const lookupRelationshipType = this.officeAgentLookupService.lookupRelationshipType;\r\n\r\n if (lookupRelationshipType && lookupRelationshipType.escrowOfficerFlag) {\r\n if (this.customer.unknownEscrowFlag) {\r\n displayFlag = false;\r\n }\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\"","\r\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {Customer, Employer} from '@orhp/phx-customer-ui-module';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {OfficeAgentLookupService} from './_services/lookup.service';\r\nimport {OfficeAgentLookupRelationshipType} from './_src/lookup-relationship-type';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentErrorCollection} from './_src/office-agent-error-collection';\r\nimport {EmployerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {ProductOffice} from '@orhp/phx-product-ui-module';\r\n\r\n@Component({\r\n selector: 'app-office-agent-lookup',\r\n templateUrl: './office-agent-lookup.component.html',\r\n styleUrls: ['./office-agent-lookup.scss']\r\n})\r\n\r\n\r\nexport class OfficeAgentLookupComponent implements OnInit, OnDestroy {\r\n\r\n @Input()\r\n set employerValidateResult(result: EmployerValidateResult) {\r\n this.officeAgentLookupService.employerValidateResult = result;\r\n }\r\n\r\n\r\n @Input()\r\n set customerValidateResult(result: CustomerValidateResult) {\r\n this.officeAgentLookupService.customerValidateResult = result;\r\n }\r\n\r\n\r\n @Input()\r\n set isPlanOrder(result: boolean) {\r\n this.officeAgentLookupService.isPlanOrder = result;\r\n }\r\n\r\n\r\n @Input()\r\n set shouldDisplayEmployerSearch(result: boolean) {\r\n this.officeAgentLookupService.shouldDisplayEmployerSearch = result;\r\n }\r\n\r\n\r\n @Input()\r\n set allowDifferentOfficeSelectionFlag(value: boolean) {\r\n this.officeAgentLookupService.allowDifferentOfficeSelectionFlag = value;\r\n }\r\n\r\n\r\n @Input()\r\n set allowDifferentAgentSelectionFlag(value: boolean) {\r\n this.officeAgentLookupService.allowDifferentAgentSelectionFlag = value;\r\n }\r\n\r\n\r\n @Input()\r\n set productOffice(productOffice: ProductOffice) {\r\n this.officeAgentLookupService.productOffice = productOffice;\r\n }\r\n\r\n\r\n\r\n @Input()\r\n set productOfficeEmail(productOfficeEmail: string) {\r\n this.officeAgentLookupService.productOfficeEmail = productOfficeEmail;\r\n }\r\n\r\n\r\n\r\n @Input()\r\n set productOfficeID(productOfficeID: number) {\r\n this.officeAgentLookupService.productOfficeID = productOfficeID;\r\n }\r\n\r\n\r\n\r\n @Input()\r\n set requiresProductOfficeFlag(flag: boolean) {\r\n if ((flag !== null) && (flag !== undefined)) {\r\n this.officeAgentLookupService.requiresProductOfficeFlag = flag;\r\n }\r\n }\r\n\r\n\r\n @Input()\r\n set autoFocusOfficeSearchFlag(flag: boolean) {\r\n if ((flag !== null) && (flag !== undefined)) {\r\n this.officeAgentLookupService.autoFocusOfficeSearchFlag = flag;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private officeAgentLookupService: OfficeAgentLookupService) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n // this.officeAgentLookupService.clearAllData();\r\n }\r\n\r\n\r\n}\r\n","\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {RouterModule} from '@angular/router';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {PhxCommonModule} from '@orhp/phx-common-ui-module';\r\nimport {PhxCustomerModule} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupComponent} from './office-agent-lookup.component';\r\nimport {OfficeLookupComponent} from './office-lookup/office-lookup.component';\r\nimport {OfficeAgentLookupService} from './_services/lookup.service';\r\nimport {AgentLookupComponent} from './agent-lookup/agent-lookup.component';\r\nimport {OfficeAgentSelectedComponent} from './office-agent-selected/office-agent-selected.component';\r\nimport {OfficeEntryComponent} from './office-entry/office-entry.component';\r\nimport {AgentComponent} from './agent/agent.component';\r\nimport {AgentContactComponent} from './agent-contact/agent-contact.component';\r\nimport {AgentEntryComponent} from './agent-entry/agent-entry.component';\r\nimport {OfficeAgentLookupRootResolver} from './_services/root.resolver';\r\nimport {OfficeAgentLookupOfficeResolver} from './_services/office.resolver';\r\nimport {OfficeAgentLookupAgentResolver} from './_services/agent.resolver';\r\nimport {OfficeAgentLookupPersistenceService} from './_services/persistence.service';\r\nimport {OfficeAgentLookupRootWildcardResolver} from './_services/root-wildcard.resolver';\r\nimport {OfficeAgentLookupEmptyOfficeResolver} from './_services/empty-office.resolver';\r\nimport {OfficeAgentLookupOfficeWildcardResolver} from './_services/office-wildcard.resolver';\r\nimport {OfficeAgentLookupEmptyAgentResolver} from './_services/empty-agent.resolver';\r\nimport {OfficeAgentLookupOfficeNewResolver} from './_services/office-new.resolver';\r\nimport {OfficeAgentLookupAgentNewResolver} from './_services/agent-new.resolver';\r\nimport {OfficeAgentLookupOfficeClearResolver} from './_services/office-clear.resolver';\r\nimport {OfficeAgentLookupAgentClearResolver} from './_services/agent-clear.resolver';\r\nimport {OfficeAgentLookupCacheService} from './_services/lookup-cache.service';\r\nimport {OfficeAgentLookupValidateService} from './_services/validate.service';\r\nimport {OfficeAgentLookupAgentUnknownResolver} from './_services/agent-unknown.resolver';\r\nimport {PhxProductModule} from '@orhp/phx-product-ui-module';\r\nimport {OfficeAgentNavigationService} from './_services/office-agent-navigation.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n PhxCommonModule,\r\n PhxCustomerModule,\r\n PhxProductModule\r\n ],\r\n declarations: [\r\n OfficeAgentLookupComponent,\r\n OfficeAgentSelectedComponent,\r\n OfficeLookupComponent,\r\n OfficeEntryComponent,\r\n AgentLookupComponent,\r\n AgentComponent,\r\n AgentEntryComponent,\r\n AgentContactComponent\r\n ],\r\n providers: [\r\n OfficeAgentLookupService,\r\n OfficeAgentLookupPersistenceService,\r\n OfficeAgentLookupCacheService,\r\n OfficeAgentLookupValidateService,\r\n OfficeAgentNavigationService,\r\n\r\n OfficeAgentLookupRootResolver,\r\n OfficeAgentLookupRootWildcardResolver,\r\n OfficeAgentLookupOfficeResolver,\r\n OfficeAgentLookupOfficeNewResolver,\r\n OfficeAgentLookupOfficeClearResolver,\r\n OfficeAgentLookupEmptyOfficeResolver,\r\n OfficeAgentLookupOfficeWildcardResolver,\r\n OfficeAgentLookupAgentResolver,\r\n OfficeAgentLookupAgentNewResolver,\r\n OfficeAgentLookupAgentUnknownResolver,\r\n OfficeAgentLookupAgentClearResolver,\r\n OfficeAgentLookupEmptyAgentResolver\r\n ],\r\n exports: [\r\n OfficeAgentLookupComponent\r\n ]\r\n})\r\n\r\nexport class OfficeAgentLookupModule {\r\n\r\n}\r\n","\r\nimport {Routes} from '@angular/router';\r\nimport {OfficeLookupComponent} from './office-lookup/office-lookup.component';\r\nimport {AgentLookupComponent} from './agent-lookup/agent-lookup.component';\r\nimport {OfficeEntryComponent} from './office-entry/office-entry.component';\r\nimport {AgentComponent} from './agent/agent.component';\r\nimport {AgentEntryComponent} from './agent-entry/agent-entry.component';\r\nimport {OfficeAgentLookupRootResolver} from './_services/root.resolver';\r\nimport {OfficeAgentLookupOfficeResolver} from './_services/office.resolver';\r\nimport {OfficeAgentLookupAgentResolver} from './_services/agent.resolver';\r\nimport {OfficeAgentLookupRootWildcardResolver} from './_services/root-wildcard.resolver';\r\nimport {OfficeAgentLookupEmptyOfficeResolver} from './_services/empty-office.resolver';\r\nimport {OfficeAgentLookupOfficeWildcardResolver} from './_services/office-wildcard.resolver';\r\nimport {OfficeAgentLookupEmptyAgentResolver} from './_services/empty-agent.resolver';\r\nimport {OfficeAgentLookupOfficeNewResolver} from './_services/office-new.resolver';\r\nimport {OfficeAgentLookupAgentNewResolver} from './_services/agent-new.resolver';\r\nimport {OfficeAgentLookupAgentClearResolver} from './_services/agent-clear.resolver';\r\nimport {OfficeAgentLookupOfficeClearResolver} from './_services/office-clear.resolver';\r\nimport {OfficeAgentLookupAgentUnknownResolver} from './_services/agent-unknown.resolver';\r\n\r\nexport const OfficeAgentLookupRoutes: Routes = [\r\n {\r\n path: '',\r\n resolve: [OfficeAgentLookupRootResolver],\r\n children: [\r\n {\r\n path: 'office',\r\n children: [\r\n {\r\n path: 'search',\r\n component: OfficeLookupComponent,\r\n resolve:\r\n {\r\n employer: OfficeAgentLookupOfficeClearResolver,\r\n customer: OfficeAgentLookupAgentClearResolver\r\n }\r\n },\r\n {\r\n path: 'new-office',\r\n component: OfficeEntryComponent,\r\n resolve:\r\n {\r\n employer: OfficeAgentLookupOfficeNewResolver,\r\n customer: OfficeAgentLookupAgentNewResolver\r\n }\r\n },\r\n {\r\n path: ':employerGUID',\r\n resolve:\r\n {\r\n employer: OfficeAgentLookupOfficeResolver\r\n },\r\n children: [\r\n {\r\n path: 'agent',\r\n children: [\r\n {\r\n path: '',\r\n resolve: [OfficeAgentLookupEmptyAgentResolver],\r\n children: []\r\n },\r\n {\r\n path: 'search',\r\n component: AgentLookupComponent,\r\n resolve:\r\n {\r\n customer: OfficeAgentLookupAgentClearResolver\r\n },\r\n children: [\r\n {\r\n path: ':agentSplitLetter',\r\n component: AgentLookupComponent\r\n }\r\n ]\r\n },\r\n {\r\n path: 'new-agent',\r\n component: AgentEntryComponent,\r\n resolve:\r\n {\r\n customer: OfficeAgentLookupAgentNewResolver\r\n }\r\n },\r\n {\r\n path: 'unknown-agent',\r\n component: AgentEntryComponent,\r\n resolve:\r\n {\r\n customer: OfficeAgentLookupAgentUnknownResolver\r\n }\r\n },\r\n {\r\n path: ':customerGUID',\r\n component: AgentComponent,\r\n resolve: {\r\n customer: OfficeAgentLookupAgentResolver\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '**',\r\n children: [],\r\n resolve: [OfficeAgentLookupOfficeWildcardResolver]\r\n }\r\n ]\r\n },\r\n {\r\n path: '',\r\n children: [],\r\n resolve: [OfficeAgentLookupEmptyOfficeResolver]\r\n }\r\n ]\r\n },\r\n {\r\n path: '**',\r\n children: [],\r\n resolve: [OfficeAgentLookupRootWildcardResolver]\r\n }\r\n ]\r\n }\r\n];\r\n\r\n","module.exports = \"label{width:100%}\\n\"","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
Selected Office:
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Choose a different office\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.employer.employerName}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.employer.physicalAddress.address}},\\r\\n {{this.employer.physicalAddress.city}},\\r\\n {{this.employer.physicalAddress.stateCode}}\\r\\n {{this.employer.physicalAddress.zipCode}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.employer.physicalAddress.address}}
\\r\\n {{this.employer.physicalAddress.city}},\\r\\n {{this.employer.physicalAddress.stateCode}}\\r\\n {{this.employer.physicalAddress.zipCode}}\\r\\n
\\r\\n\\r\\n
\\r\\n Main Phone: {{employer.mainPhone.formattedPhoneNumber}}\\r\\n
\\r\\n\\r\\n
\\r\\n Main Fax: {{employer.mainFax.formattedPhoneNumber}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Selected {{this.lookupRelationshipType.agentTerm | titlecase}}:\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Choose a different\\r\\n {{this.lookupRelationshipType.agentTerm}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{this.customer.givenName}}\\r\\n {{this.customer.surName}}\\r\\n
\\r\\n\\r\\n
\\r\\n 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\\n\"","module.exports = \"@media (max-width: 576px){div.selected-office-container{margin-top:5px}}@media (max-width: 576px){div.selected-office-container div.full-size{display:none}}@media (min-width: 577px){div.selected-office-container div.mobile-size{display:none}}@media (max-width: 576px){div.selected-agent-container{margin-top:5px}}\\n\"","\r\n\r\n\r\nimport {Component, Input, OnInit} from '@angular/core';\r\nimport {OfficeAgentLookupService} from '../_services/lookup.service';\r\nimport {Customer, Employer} from '@orhp/phx-customer-ui-module';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer, UrlTree} from '@angular/router';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {IOfficeResolverInterface} from '../_src/office-resolver-interface';\r\nimport {IAgentResolverInterface} from '../_src/agent-resolver-interface';\r\nimport {OfficeAgentLookupPersistenceService} from '../_services/persistence.service';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\n\r\n@Component({\r\n selector: 'app-office-agent-selected',\r\n templateUrl: './office-agent-selected.component.html',\r\n styleUrls: [\r\n '../office-agent-lookup.scss',\r\n './office-agent-selected.component.scss'\r\n ]\r\n})\r\n\r\n\r\nexport class OfficeAgentSelectedComponent implements OnInit {\r\n\r\n employer: Employer = null;\r\n customer: Customer = null;\r\n\r\n private _lookupRelationshipType: OfficeAgentLookupRelationshipType = null;\r\n\r\n get lookupRelationshipType(): OfficeAgentLookupRelationshipType {\r\n if (!this._lookupRelationshipType) {\r\n this._lookupRelationshipType = new OfficeAgentLookupRelationshipType(\r\n this.officeAgentLookupPersistenceService.lookupTypeCode);\r\n }\r\n\r\n return this._lookupRelationshipType;\r\n }\r\n\r\n\r\n get allowDifferentOfficeSelectionFlag(): boolean {\r\n return this.officeAgentLookupService.allowDifferentOfficeSelectionFlag;\r\n }\r\n\r\n\r\n get allowDifferentAgentSelectionFlag(): boolean {\r\n return this.officeAgentLookupService.allowDifferentAgentSelectionFlag;\r\n }\r\n\r\n\r\n\r\n constructor(private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router,\r\n private route: ActivatedRoute) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.route.data.subscribe((data: any) => {\r\n // pull out employer data\r\n const employerData = data;\r\n\r\n this.employer = employerData.employer;\r\n\r\n // pull out customer data\r\n const customerData = data;\r\n\r\n this.customer = customerData.customer;\r\n });\r\n }\r\n\r\n\r\n customerUnknownEscrowFlag(): boolean {\r\n let unknownFlag = false;\r\n\r\n // if the customer is unknown\r\n const escrowFlag = (this.lookupRelationshipType ? this.lookupRelationshipType.escrowOfficerFlag : false);\r\n const unknownEscrowFlag = this.customer.unknownEscrowFlag;\r\n\r\n if (escrowFlag && unknownEscrowFlag) {\r\n unknownFlag = true;\r\n }\r\n\r\n return unknownFlag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayEmployer(): boolean {\r\n return (this.employer && !!this.employer.employerID);\r\n }\r\n\r\n\r\n shouldDisplayCustomer(): boolean {\r\n let displayFlag = false;\r\n\r\n // if the customer is defined\r\n if (this.customer) {\r\n // if the customer is existing\r\n if (this.customer.customerID) {\r\n displayFlag = true;\r\n }\r\n\r\n // if the customer is unknown\r\n if (this.customerUnknownEscrowFlag()) {\r\n displayFlag = true;\r\n }\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayCustomerName(): boolean {\r\n let displayFlag = false;\r\n\r\n // if this is an existing customer\r\n if (this.customer.customerID) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayUnknownCustomerName(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.customerUnknownEscrowFlag()) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n didClickDifferentOffice() {\r\n const url = this.router.routerState.snapshot.url;\r\n const employerGUID = this.route.snapshot.params['employerGUID'];\r\n\r\n // look for the employerGUID\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, employerGUID);\r\n\r\n // remove the employerGUID\r\n RoutingUtility.removeLastUrlSegmentFromTree(urlTree);\r\n\r\n // add the search\r\n const urlSegment = new UrlSegment('search', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n // clear the saved office\r\n this.officeAgentLookupPersistenceService.employer = null;\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n didClickDifferentAgent() {\r\n let urlTree: UrlTree = null;\r\n\r\n const url = this.router.routerState.snapshot.url;\r\n const customerGUID = this.route.snapshot.params['customerGUID'];\r\n\r\n // look for the customerGUID\r\n if (customerGUID) {\r\n urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, customerGUID);\r\n\r\n // remove the customerGUID\r\n RoutingUtility.removeLastUrlSegmentFromTree(urlTree);\r\n\r\n // add the search\r\n const urlSegment = new UrlSegment('search', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n } else {\r\n urlTree = this.urlSerializer.parse(url);\r\n\r\n const urlSegment = new UrlSegment('search', {});\r\n\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n }\r\n\r\n // clear the saved agent\r\n this.officeAgentLookupPersistenceService.customer = null;\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Enter the new {{this.lookupRelationshipType.relationshipName}} information below:\\r\\n
\\r\\n\\r\\n

New Office

\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\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\nimport {OfficeAgentLookupService} from '../_services/lookup.service';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\nimport {CustomerLookupValueService, Employer} from '@orhp/phx-customer-ui-module';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {EmployerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from '../_services/persistence.service';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentNavigationService} from '../_services/office-agent-navigation.service';\r\n\r\n@Component({\r\n selector: 'app-office-entry',\r\n templateUrl: './office-entry.component.html',\r\n styleUrls: ['../office-agent-lookup.scss']\r\n})\r\n\r\n\r\nexport class OfficeEntryComponent implements OnInit {\r\n\r\n public officeAgentLookupService: OfficeAgentLookupService;\r\n\r\n constructor(officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private employerDomainFactoryService: EmployerDomainFactoryService,\r\n private officeAgentNavigationService: OfficeAgentNavigationService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer) {\r\n this.officeAgentLookupService = officeAgentLookupService;\r\n }\r\n\r\n\r\n // lookup relationship type\r\n get lookupRelationshipType(): OfficeAgentLookupRelationshipType {\r\n const lookupTypeCode = this.officeAgentLookupPersistenceService.lookupTypeCode;\r\n const lookupType = new OfficeAgentLookupRelationshipType(lookupTypeCode);\r\n\r\n return lookupType;\r\n }\r\n\r\n\r\n employer: Employer = null;\r\n\r\n\r\n get employerValidateResult(): EmployerValidateResult {\r\n return this.officeAgentLookupService.employerValidateResult;\r\n }\r\n\r\n get isPlanOrder(): boolean {\r\n return this.officeAgentLookupService.isPlanOrder;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.route.data.subscribe((data: any) => {\r\n this.employer = data.employer;\r\n });\r\n }\r\n\r\n\r\n // is the office loaded\r\n isOfficeLoaded(): boolean {\r\n return !!this.employer;\r\n }\r\n\r\n\r\n // the user clicked to search for the office again\r\n didClickSearchOffice() {\r\n this.officeAgentNavigationService.gotoOfficeSearch();\r\n }\r\n\r\n\r\n shouldDisplayEmployerNameError(): boolean {\r\n return ((this.employerValidateResult.employerNameError || '') !== '');\r\n }\r\n\r\n\r\n shouldDisplayPhysicalStreetAddressError(): boolean {\r\n let displayFlag = false;\r\n\r\n if ((this.employerValidateResult.employerPhysicalStreetAdressError || '') !== '') {\r\n displayFlag = true;\r\n }\r\n\r\n if ((this.employerValidateResult.employerPhysicalAddressValidationError || '') !== '') {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayPhysicalCityError(): boolean {\r\n let displayFlag = false;\r\n\r\n if ((this.employerValidateResult.employerPhysicalCityError || '') !== '') {\r\n displayFlag = true;\r\n }\r\n\r\n if ((this.employerValidateResult.employerPhysicalAddressValidationError || '') !== '') {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayPhysicalStateCodeError(): boolean {\r\n let displayFlag = false;\r\n\r\n if ((this.employerValidateResult.employerPhysicalStateCodeError || '') !== '') {\r\n displayFlag = true;\r\n }\r\n\r\n if ((this.employerValidateResult.employerPhysicalAddressValidationError || '') !== '') {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayPhysicalZipCodeError(): boolean {\r\n let displayFlag = false;\r\n\r\n if ((this.employerValidateResult.employerPhysicalZipCodeError || '') !== '') {\r\n displayFlag = true;\r\n }\r\n\r\n\r\n if ((this.employerValidateResult.employerPhysicalAddressValidationError || '') !== '') {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayMainPhoneError(): boolean {\r\n return ((this.employerValidateResult.employerMainPhoneError || '') !== '');\r\n }\r\n\r\n\r\n shouldDisplayMainFaxError(): boolean {\r\n return ((this.employerValidateResult.employerMainFaxError || '') !== '');\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n
\\r\\n {{officeLookupErrorMessage}}\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n {{searchTitle}}\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Main Office Phone\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Name/City/State\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Or choose one of the following:\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{skipLinkText}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
Office Lookup Running, please wait...
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Recent and/or commonly selected offices:\\r\\n
\\r\\n\\r\\n
\\r\\n We were unable to find any matching offices. Please try again.\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Your search results are listed below:\\r\\n
\\r\\n\\r\\n
\\r\\n We've also found the following additional search results:\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{officeDisplayName(indexOffice)}}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{indexOffice.physicalAddress.address}}
\\r\\n {{indexOffice.physicalAddress.city}}, {{indexOffice.physicalAddress.stateCode}} {{indexOffice.physicalAddress.zipCode}}\\r\\n
\\r\\n\\r\\n
\\r\\n Phone: {{indexOffice.mainPhone.formattedPhoneNumber}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n OFFICE NOT LISTED, ADD NEW OFFICE\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n {{skipLinkText.toUpperCase()}}\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"div.search-box{border-top:1px solid #cccccc;border-bottom:1px solid #cccccc;padding-top:5px;padding-bottom:5px}@media (max-width: 576px){button.btn-search-office{margin-top:5px}}div.phone-search-container input.phone-search-field{width:200px}@media (max-width: 576px){div.phone-search-container input.phone-search-field{margin-top:5px}}@media (min-width: 577px){div.phone-search-container{margin-left:5px}div.phone-search-container input.phone-search-field{margin-right:5px}}div.name-search-container input.name-search-field{width:200px}div.name-search-container input.city-search-field{width:150px}div.name-search-container input.state-search-field{width:100px}@media (max-width: 576px){div.name-search-container input.name-search-field{margin-top:5px}div.name-search-container input.city-search-field{margin-top:5px}div.name-search-container input.state-search-field{margin-top:5px}}@media (min-width: 577px){div.name-search-container{margin-left:5px}div.name-search-container input.name-search-field{margin-right:5px}div.name-search-container input.city-search-field{margin-right:5px}}.office-result-name{font-weight:bold;white-space:pre-line}div.new-office-link,div.new-office-link::before{color:#a4343a}div.skip-bottom-link{color:#a4343a}div.skip-bottom-link div.form-times-circle-o::before{color:#a4343a}\\n\"","\r\n\r\nimport {Component, ElementRef, OnInit, ViewChild} from '@angular/core';\r\nimport {OfficeAgentLookupService} from '../_services/lookup.service';\r\nimport {OfficeAgentLookupRelationshipType} from '../_src/lookup-relationship-type';\r\nimport {Customer, Employer, EmployerLookupParams, EmployerNameTranslation} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {PhxSerializer, RoutingUtility, StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from '../_services/persistence.service';\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {Relationship} from '@orhp/phx-plan-ui-module';\r\nimport {OfficeAgentLookupCacheService, OfficeLookupType} from '../_services/lookup-cache.service';\r\nimport {PhxLoginService} from '@orhp/phx-common-ui-module';\r\nimport {IOfficeAgentLookupAuthenticationInterface} from '../_services/office-agent-lookup-authentication-interface';\r\nimport {Observable} from 'rxjs/Rx';\r\nimport {ProductOffice, ProductOfficeGroupLookupParams, ProductOfficeGroupLookupService} from '@orhp/phx-product-ui-module';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\n\r\n@Component({\r\n selector: 'app-office-agent-lookup',\r\n templateUrl: './office-lookup.component.html',\r\n styleUrls: [\r\n '../office-agent-lookup.scss',\r\n './office-lookup.component.scss'\r\n ]\r\n})\r\n\r\n\r\nexport class OfficeLookupComponent implements OnInit {\r\n\r\n @ViewChild('searchPhoneTextInput')\r\n searchPhoneTextInput: ElementRef;\r\n\r\n @ViewChild('searchEmployerNameTextInput')\r\n searchEmployerNameTextInput: ElementRef;\r\n\r\n @ViewChild('searchEmployerCityTextInput')\r\n searchEmployerCityTextInput: ElementRef;\r\n\r\n @ViewChild('searchEmployerStateTextInput')\r\n searchEmployerStateTextInput: ElementRef;\r\n\r\n\r\n\r\n get selectedOfficeLookupType(): OfficeLookupType {\r\n return this.officeAgentLookupCacheService.selectedOfficeLookupType;\r\n }\r\n\r\n set selectedOfficeLookupType(value: OfficeLookupType) {\r\n this.officeAgentLookupCacheService.selectedOfficeLookupType = value;\r\n }\r\n\r\n\r\n\r\n get lastOfficeLookupType(): OfficeLookupType {\r\n return this.officeAgentLookupCacheService.lastOfficeLookupType;\r\n }\r\n\r\n set lastOfficeLookupType(value: OfficeLookupType) {\r\n this.officeAgentLookupCacheService.lastOfficeLookupType = value;\r\n }\r\n\r\n\r\n\r\n get searchEmployerPhone(): string {\r\n return this.officeAgentLookupCacheService.searchEmployerPhone;\r\n }\r\n\r\n set searchEmployerPhone(value: string) {\r\n this.officeAgentLookupCacheService.searchEmployerPhone = value;\r\n }\r\n\r\n\r\n get searchEmployerName(): string {\r\n return this.officeAgentLookupCacheService.searchEmployerName;\r\n }\r\n\r\n\r\n set searchEmployerName(value: string) {\r\n this.officeAgentLookupCacheService.searchEmployerName = value;\r\n }\r\n\r\n\r\n get searchEmployerCity(): string {\r\n return this.officeAgentLookupCacheService.searchEmployerCity;\r\n }\r\n\r\n\r\n set searchEmployerCity(value: string) {\r\n this.officeAgentLookupCacheService.searchEmployerCity = value;\r\n }\r\n\r\n\r\n get searchEmployerStateCode(): string {\r\n return this.officeAgentLookupCacheService.searchEmployerStateCode;\r\n }\r\n\r\n\r\n set searchEmployerStateCode(value: string) {\r\n this.officeAgentLookupCacheService.searchEmployerStateCode = value;\r\n }\r\n\r\n\r\n\r\n get recentOfficeResults(): Employer[] {\r\n return this.officeAgentLookupCacheService.recentOfficeResults;\r\n }\r\n\r\n\r\n set recentOfficeResults(value: Employer[]) {\r\n this.officeAgentLookupCacheService.recentOfficeResults = value;\r\n }\r\n\r\n\r\n get exactOfficeMatchResults(): Employer[] {\r\n return this.officeAgentLookupCacheService.exactOfficeMatchResults;\r\n }\r\n\r\n\r\n set exactOfficeMatchResults(value: Employer[]) {\r\n this.officeAgentLookupCacheService.exactOfficeMatchResults = value;\r\n }\r\n\r\n\r\n get fuzzyOfficeMatchResults(): Employer[] {\r\n return this.officeAgentLookupCacheService.fuzzyOfficeMatchResults;\r\n }\r\n\r\n\r\n set fuzzyOfficeMatchResults(value: Employer[]) {\r\n this.officeAgentLookupCacheService.fuzzyOfficeMatchResults = value;\r\n }\r\n\r\n\r\n officeLookupRunningFlag = false;\r\n officeLookupErrorMessage: string = null;\r\n\r\n\r\n get isPlanOrder(): boolean {\r\n return this.officeAgentLookupService.isPlanOrder;\r\n }\r\n\r\n // lookup relationship type\r\n get lookupRelationshipType(): OfficeAgentLookupRelationshipType {\r\n return this.officeAgentLookupService.lookupRelationshipType;\r\n }\r\n\r\n\r\n get relationship(): Relationship {\r\n const lookupRelationshipType = this.lookupRelationshipType;\r\n\r\n let relationship: Relationship = null;\r\n\r\n if (lookupRelationshipType) {\r\n this.planLookupValueService.relationships.forEach((indexRelationship: Relationship) => {\r\n let correctRelationshipFlag = false;\r\n\r\n correctRelationshipFlag = correctRelationshipFlag ||\r\n (lookupRelationshipType.initiatingAgentFlag && indexRelationship.initiatingAgentFlag);\r\n\r\n correctRelationshipFlag = correctRelationshipFlag ||\r\n (lookupRelationshipType.cooperatingAgentFlag && indexRelationship.cooperatingAgentFlag);\r\n\r\n correctRelationshipFlag = correctRelationshipFlag ||\r\n (lookupRelationshipType.escrowOfficerFlag && indexRelationship.closingFlag);\r\n\r\n if (correctRelationshipFlag) {\r\n relationship = indexRelationship;\r\n }\r\n });\r\n }\r\n\r\n return relationship;\r\n }\r\n\r\n\r\n get authenticationService(): IOfficeAgentLookupAuthenticationInterface {\r\n return this.loginService.authenticationService;\r\n }\r\n\r\n\r\n get searchTitle(): string {\r\n let title = 'Search By Office:';\r\n\r\n const relationship = this.relationship;\r\n\r\n if (relationship) {\r\n if (relationship.initiatingAgentFlag) {\r\n title = 'Search for Initiating Real Estate Agent office:';\r\n\r\n } else if (relationship.cooperatingAgentFlag) {\r\n title = 'Search for Cooperating Real Estate Agent office:';\r\n\r\n } else if (relationship.closingFlag) {\r\n title = 'Search for Closing Company:';\r\n }\r\n }\r\n\r\n return title;\r\n }\r\n\r\n\r\n\r\n get skipLinkText(): string {\r\n let text: string = null;\r\n\r\n const relationship = this.relationship;\r\n\r\n if (relationship) {\r\n if (relationship.initiatingAgentFlag) {\r\n text = 'For Sale By Owner - no real estate agent involved';\r\n\r\n } else if (relationship.cooperatingAgentFlag) {\r\n text = 'No Cooperating Real Estate Agent Involved';\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n get productOfficeEmail(): string {\r\n return this.officeAgentLookupService.productOfficeEmail;\r\n }\r\n\r\n\r\n get productOfficeID(): number {\r\n return this.officeAgentLookupService.productOfficeID;\r\n }\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private loginService: PhxLoginService,\r\n private planLookupValueService: PlanLookupValueService,\r\n private productOfficeGroupLookupService: ProductOfficeGroupLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private officeAgentLookupCacheService: OfficeAgentLookupCacheService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private employerLookupService: EmployerLookupService) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n // default the office lookup to phone\r\n if (!this.selectedOfficeLookupType) {\r\n this.selectedOfficeLookupType = OfficeLookupType.officePhone;\r\n }\r\n\r\n // default the state search if the user is logged in\r\n if (this.searchEmployerStateCode === '') {\r\n const employer = this.authenticationService.employer;\r\n\r\n if (employer && employer.physicalAddress) {\r\n this.searchEmployerStateCode = employer.physicalAddress.stateCode;\r\n }\r\n }\r\n\r\n // if no previous search was run\r\n if (!this.lastOfficeLookupType) {\r\n this.lastOfficeLookupType = OfficeLookupType.none;\r\n\r\n // fetch recent offices\r\n if (this.lookupRelationshipType.shouldFetchRecentOffices) {\r\n this.fetchRecentOffices();\r\n }\r\n\r\n // if we're auto-focusing the search\r\n if (this.officeAgentLookupService.autoFocusOfficeSearchFlag) {\r\n // set the focus on the phone number\r\n if (this.selectedOfficeLookupType === OfficeLookupType.officePhone) {\r\n setTimeout(() => {\r\n this.searchPhoneTextInput.nativeElement.focus();\r\n });\r\n\r\n } else if (this.selectedOfficeLookupType === OfficeLookupType.officeName) {\r\n setTimeout(() => {\r\n this.searchEmployerNameTextInput.nativeElement.focus();\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n shouldDisplaySkipTopLink(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.lookupRelationshipType.initiatingAgentFlag) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplaySkipBottomLink(exactMatchFlag?: boolean): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.lookupRelationshipType.cooperatingAgentFlag) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayRecentOfficesMessage(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.lastOfficeLookupType === OfficeLookupType.recentOffices) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplaySearchResultsMessage(): boolean {\r\n let displayFlag = false;\r\n\r\n // restrict by search type\r\n let userSearchFlag = false;\r\n userSearchFlag = userSearchFlag || (this.lastOfficeLookupType === OfficeLookupType.officePhone);\r\n userSearchFlag = userSearchFlag || (this.lastOfficeLookupType === OfficeLookupType.officeName);\r\n\r\n // restrict by offices found\r\n if (this.lastOfficeLookupType === OfficeLookupType.recentOffices) {\r\n displayFlag = displayFlag && !!this.recentOfficeResults.length;\r\n\r\n } else if (userSearchFlag) {\r\n if (this.exactOfficeMatchResults && this.exactOfficeMatchResults.length) {\r\n displayFlag = true;\r\n }\r\n\r\n if (this.fuzzyOfficeMatchResults && this.fuzzyOfficeMatchResults.length) {\r\n displayFlag = true;\r\n }\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayNoSearchResultsMessage(): boolean {\r\n let resultsFoundFlag = false;\r\n\r\n // restrict by search type\r\n if (this.lastOfficeLookupType === OfficeLookupType.officePhone) {\r\n resultsFoundFlag = resultsFoundFlag || !!this.exactOfficeMatchResults.length;\r\n\r\n } else if (this.lastOfficeLookupType === OfficeLookupType.officeName) {\r\n resultsFoundFlag = resultsFoundFlag || !!this.exactOfficeMatchResults.length;\r\n resultsFoundFlag = resultsFoundFlag || !!this.fuzzyOfficeMatchResults.length;\r\n\r\n } else if (this.lastOfficeLookupType === OfficeLookupType.recentOffices) {\r\n resultsFoundFlag = resultsFoundFlag || !!this.recentOfficeResults.length;\r\n }\r\n\r\n let displayFlag = true;\r\n\r\n if (this.lastOfficeLookupType === OfficeLookupType.none) {\r\n displayFlag = false;\r\n\r\n } else if (resultsFoundFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayPhoneLookupFields(): boolean {\r\n return (this.selectedOfficeLookupType === OfficeLookupType.officePhone);\r\n }\r\n\r\n\r\n shouldDisplayNameLookupFields(): boolean {\r\n return (this.selectedOfficeLookupType === OfficeLookupType.officeName);\r\n }\r\n\r\n\r\n // fetches recent offices\r\n fetchRecentOffices() {\r\n const loginToken = this.loginService.loginTokenGetter();\r\n const loggedIn = (loginToken ? loginToken.loggedIn() : false);\r\n\r\n const planOrderFlag = this.officeAgentLookupService.isPlanOrder;\r\n\r\n if (loggedIn && planOrderFlag) {\r\n const params = new EmployerLookupParams();\r\n\r\n params.recentEmployersFlag = true;\r\n params.recentEmployersRelationship = this.relationship.relationship;\r\n\r\n this.officeLookupRunningFlag = true;\r\n\r\n this.employerLookupService.fetchEmployers(params).subscribe((employers: Employer[]) => {\r\n this.officeLookupRunningFlag = false;\r\n\r\n if (employers.length) {\r\n this.recentOfficeResults = employers;\r\n\r\n this.lastOfficeLookupType = OfficeLookupType.recentOffices;\r\n\r\n } else {\r\n this.lastOfficeLookupType = OfficeLookupType.none;\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n didClickPhoneSearchButton() {\r\n this.selectedOfficeLookupType = OfficeLookupType.officePhone;\r\n\r\n setTimeout(() => {\r\n this.searchPhoneTextInput.nativeElement.focus();\r\n this.searchPhoneTextInput.nativeElement.select();\r\n });\r\n }\r\n\r\n\r\n didClickNameSearchButton() {\r\n this.selectedOfficeLookupType = OfficeLookupType.officeName;\r\n\r\n setTimeout(() => {\r\n this.searchEmployerNameTextInput.nativeElement.focus();\r\n this.searchEmployerNameTextInput.nativeElement.select();\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // user clicked the office search button\r\n didClickOfficeSearch() {\r\n this.officeLookupErrorMessage = null;\r\n\r\n // validate the form\r\n const errorText = this.validateForm();\r\n\r\n // if there are errors\r\n if (!!errorText) {\r\n this.officeLookupErrorMessage = errorText;\r\n\r\n // no errors, continue\r\n } else {\r\n this.officeLookupErrorMessage = null;\r\n\r\n const params = new EmployerLookupParams();\r\n\r\n // is there a product office specified\r\n const productOfficeFlag = ((this.productOfficeEmail || '') !== '') || !!this.productOfficeID;\r\n\r\n // if there is no email specified\r\n if (!productOfficeFlag) {\r\n params.employerTypeCode = this.lookupRelationshipType.lookupEmployerTypeCode;\r\n\r\n } else {\r\n params.productOfficeID = this.productOfficeID;\r\n params.productOfficeEmail = this.productOfficeEmail;\r\n }\r\n\r\n // phone search\r\n if (this.selectedOfficeLookupType === OfficeLookupType.officePhone) {\r\n params.phone = this.searchEmployerPhone;\r\n\r\n // name/city search\r\n } else if (this.selectedOfficeLookupType === OfficeLookupType.officeName) {\r\n params.employerName = this.searchEmployerName || '';\r\n params.city = this.searchEmployerCity || '';\r\n params.stateCode = this.searchEmployerStateCode;\r\n }\r\n\r\n // clear the focus from the search fields\r\n setTimeout(() => {\r\n if (this.searchPhoneTextInput) {\r\n this.searchPhoneTextInput.nativeElement.blur();\r\n }\r\n\r\n if (this.searchEmployerNameTextInput) {\r\n this.searchEmployerNameTextInput.nativeElement.blur();\r\n }\r\n\r\n if (this.searchEmployerCityTextInput) {\r\n this.searchEmployerCityTextInput.nativeElement.blur();\r\n }\r\n\r\n if (this.searchEmployerStateTextInput) {\r\n this.searchEmployerStateTextInput.nativeElement.blur();\r\n }\r\n });\r\n\r\n // execute the office lookup and store the results\r\n this.officeLookupRunningFlag = true;\r\n\r\n this.employerLookupService.fetchEmployers(params).subscribe((employers: Employer[]) => {\r\n this.parseEmployerResults(employers);\r\n\r\n this.officeLookupRunningFlag = false;\r\n\r\n this.lastOfficeLookupType = this.selectedOfficeLookupType;\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n validateForm(): string {\r\n let errorText: string = null;\r\n\r\n if (this.selectedOfficeLookupType === OfficeLookupType.officePhone) {\r\n const searchPhone = (this.searchEmployerPhone || '');\r\n let validFlag = true;\r\n\r\n // if the phone is not empty\r\n if (searchPhone !== '') {\r\n // validate the phone\r\n if (!StringUtility.phoneValidate(this.searchEmployerPhone || '')) {\r\n validFlag = false;\r\n }\r\n\r\n // if the phone is empty\r\n } else {\r\n validFlag = false;\r\n }\r\n\r\n // if the phone isn't valid\r\n if (!validFlag) {\r\n errorText = 'Enter Main Office Phone to search';\r\n }\r\n\r\n // name/city search\r\n } else if (this.selectedOfficeLookupType === OfficeLookupType.officeName) {\r\n const searchName = (this.searchEmployerName || '');\r\n const searchCity = (this.searchEmployerCity || '');\r\n\r\n let validFlag = true;\r\n\r\n // if the name isn't filled in\r\n if (searchName === '') {\r\n validFlag = false;\r\n }\r\n\r\n // if the city isn't filled in\r\n if (searchCity === '') {\r\n validFlag = false;\r\n }\r\n\r\n if (!validFlag) {\r\n errorText = 'Enter Office Name/City/State to search';\r\n }\r\n }\r\n\r\n return errorText;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n parseEmployerResults(employers: Employer[]) {\r\n const exactOfficeMatchResults = [];\r\n const fuzzyOfficeMatchResults = [];\r\n\r\n // phone\r\n if (this.selectedOfficeLookupType === OfficeLookupType.officePhone) {\r\n employers.forEach((indexEmployer: Employer) => {\r\n exactOfficeMatchResults.push(indexEmployer);\r\n });\r\n\r\n // name\r\n } else if (this.selectedOfficeLookupType === OfficeLookupType.officeName) {\r\n employers.forEach((indexEmployer: Employer) => {\r\n if (this.isExactNameMatch(indexEmployer)) {\r\n exactOfficeMatchResults.push(indexEmployer);\r\n\r\n } else {\r\n fuzzyOfficeMatchResults.push(indexEmployer);\r\n }\r\n });\r\n }\r\n\r\n this.exactOfficeMatchResults = exactOfficeMatchResults;\r\n this.fuzzyOfficeMatchResults = fuzzyOfficeMatchResults;\r\n }\r\n\r\n\r\n isExactNameMatch(employer: Employer): boolean {\r\n let matchFlag = false;\r\n\r\n if (this.searchEmployerName !== '') {\r\n const regex = /[^a-z0-9\\ ]/;\r\n\r\n const employerNameRaw = employer.employerName.toLowerCase().replace(regex, '');\r\n const searchNameRaw = this.searchEmployerName.toLowerCase().replace(regex, '');\r\n\r\n const employerNamePartial = employerNameRaw.substr(0, searchNameRaw.length);\r\n\r\n matchFlag = (searchNameRaw === employerNamePartial);\r\n\r\n } else {\r\n matchFlag = true;\r\n }\r\n\r\n return matchFlag;\r\n }\r\n\r\n\r\n\r\n officeResultsForExactMatchFlag(exactMatchFlag: boolean) {\r\n let offices: Employer[] = [];\r\n\r\n if (exactMatchFlag) {\r\n // recent offices\r\n if (this.lastOfficeLookupType === OfficeLookupType.recentOffices) {\r\n offices = this.recentOfficeResults;\r\n\r\n // regular offices\r\n } else {\r\n offices = this.exactOfficeMatchResults;\r\n }\r\n\r\n } else {\r\n offices = this.fuzzyOfficeMatchResults;\r\n }\r\n\r\n return offices;\r\n }\r\n\r\n\r\n shouldDisplayHeaderForExactMatchFlag(exactMatchFlag: boolean): boolean {\r\n let displayFlag = false;\r\n\r\n const exactMatchResultsFlag = (this.exactOfficeMatchResults && this.exactOfficeMatchResults.length);\r\n const fuzzyMatchResultsFlag = (this.fuzzyOfficeMatchResults && this.fuzzyOfficeMatchResults.length);\r\n\r\n // if this is an exact match\r\n if (exactMatchFlag) {\r\n displayFlag = true;\r\n\r\n // if this is a fuzzy match\r\n } else {\r\n // display if there are both exact and fuzzy matches\r\n if (exactMatchResultsFlag && fuzzyMatchResultsFlag) {\r\n displayFlag = true;\r\n }\r\n }\r\n\r\n if (!this.shouldDisplaySearchResultsMessage()) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n officeDisplayName(employer: Employer): string {\r\n // what's the name to display?\r\n const name = this.employerLookupService.employerDisplayName(employer);\r\n\r\n return name;\r\n }\r\n\r\n\r\n\r\n shouldDisplayOfficeLookupError(): boolean {\r\n return ((this.officeLookupErrorMessage || '') !== '');\r\n }\r\n\r\n\r\n // user clicked the skip button\r\n didClickSkip() {\r\n this.officeAgentLookupService.skipEventEmitter.emit(true);\r\n }\r\n\r\n\r\n // should the new office entry be displayed\r\n shouldDisplayNewOfficeEntry(exactMatchFlag: boolean): boolean {\r\n let displayFlag = true;\r\n\r\n const exactMatchResultsFlag = (this.exactOfficeMatchResults && this.exactOfficeMatchResults.length);\r\n const fuzzyMatchResultsFlag = (this.fuzzyOfficeMatchResults && this.fuzzyOfficeMatchResults.length);\r\n\r\n // if this is the exact match section\r\n if (exactMatchFlag) {\r\n // if there are any fuzzy matches, do not display\r\n if (fuzzyMatchResultsFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n // if there are no matches at all, do not display\r\n if (!fuzzyMatchResultsFlag && !exactMatchResultsFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n // if this is the fuzzy match section\r\n } else {\r\n // if there are exact matches and no fuzzy matches, do not display\r\n if (exactMatchResultsFlag && !fuzzyMatchResultsFlag) {\r\n displayFlag = false;\r\n }\r\n }\r\n\r\n\r\n // if there's a product office that doesn't allow new office creation\r\n if (this.officeAgentLookupService.productOffice) {\r\n const productOffice = this.officeAgentLookupService.productOffice;\r\n const productOfficeToolbox = (!!productOffice ? productOffice.toolbox : null);\r\n\r\n if (!!productOfficeToolbox && !productOfficeToolbox.allowNewOfficeCreationFlag) {\r\n displayFlag = false;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // if it's not a name or phone lookup, don't allow it\r\n const nameLookupFlag = (this.lastOfficeLookupType === OfficeLookupType.officeName);\r\n const phoneLookupFlag = (this.lastOfficeLookupType === OfficeLookupType.officePhone);\r\n\r\n if (!nameLookupFlag && !phoneLookupFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // user clicked to add a new office\r\n didClickNewOffice() {\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = this.urlSerializer.parse(url);\r\n\r\n // replace the last url segment\r\n const urlSegment = new UrlSegment('new-office', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n // user clicked a specific office\r\n didClickOffice(employer: Employer) {\r\n this.officeAgentLookupPersistenceService.employer = employer;\r\n\r\n if (this.officeAgentLookupService.isPlanOrder) {\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = this.urlSerializer.parse(url);\r\n\r\n // replace the last url segment\r\n const urlSegment = new UrlSegment(employer.guid, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n } else {\r\n this.officeAgentLookupService.shouldDisplayEmployerSearch = false;\r\n }\r\n }\r\n\r\n\r\n shouldDisplayRole() {\r\n return this.officeAgentLookupService.isPlanOrder;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\nexport * from './plan-order-application';\r\nexport * from './plan-order-progress';\r\nexport * from './progress-bar-step';\r\n","\r\nimport {PropertyType} from '@orhp/phx-property-ui-module';\r\n\r\nimport {Customer, Employer} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\n\r\nimport {Product, ProductCoverage} from '@orhp/phx-product-ui-module';\r\nimport {ProductLookupValueService, ProductLookupService} from '@orhp/phx-product-ui-module';\r\n\r\nimport {ActivityResult, MessagingFormatter, PhxSerializer} from '@orhp/phx-common-ui-module';\r\n\r\nimport {PropertyLookupValueService} from '@orhp/phx-property-ui-module';\r\n\r\nimport {PlanOrdererRole, TransactionType} from '@orhp/phx-plan-ui-module';\r\nimport {NewConstructionFlag} from '@orhp/phx-plan-ui-module';\r\nimport {TransactionRole} from '@orhp/phx-plan-ui-module';\r\n\r\nimport {PlanOrderLookupValueService} from '../_services/plan-order-lookup-value.service';\r\n\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {Property} from '@orhp/phx-property-ui-module';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {CustomerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {PropertyDomainFactoryService} from '@orhp/phx-property-ui-module';\r\nimport {PlanInvoiceRecipient} from '@orhp/phx-plan-ui-module';\r\nimport {\r\n AccountingDomainFactoryService,\r\n CustomerInvoiceRecipient,\r\n PaymentPlan,\r\n PlanInvoicePaymentResult\r\n} from '@orhp/phx-accounting-ui-module';\r\nimport {CustomerInvoice} from '@orhp/phx-accounting-ui-module';\r\nimport {PlanDomainFactoryService} from '@orhp/phx-plan-ui-module';\r\nimport {Relationship} from '@orhp/phx-plan-ui-module';\r\nimport {EventEmitter} from '@angular/core';\r\nimport {TransactionRoleOrdererRelationship} from '@orhp/phx-plan-ui-module';\r\nimport {PlanStatus} from '@orhp/phx-plan-ui-module';\r\nimport {DatePart, DateUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanClaimHistory} from '@orhp/phx-claims-ui-module';\r\nimport {PlanCancel} from '@orhp/phx-plan-ui-module';\r\nimport {PhxDateService} from '@orhp/phx-common-ui-module';\r\nimport {NumberUtility} from '@orhp/phx-common-ui-module';\r\nimport {ActivityResultError, UsefulMap} from '@orhp/phx-common-ui-module';\r\nimport {Address} from '@orhp/phx-common-ui-module';\r\nimport {Region} from '@orhp/phx-geography-ui-module';\r\nimport {PlanInvoiceRecipientRelationship} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOption} from '@orhp/phx-plan-ui-module';\r\nimport {ArrayUtility} from '@orhp/phx-common-ui-module';\r\nimport {JobRole} from '@orhp/phx-customer-ui-module';\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport class PlanOrderApplication {\r\n\r\n updates: PlanOrderApplicationUpdates[] = [];\r\n edits: PlanOrderApplicationUpdates[] = [];\r\n\r\n\r\n // Current Step\r\n currentStep: string = null;\r\n\r\n // Plan Orderer Role\r\n planOrdererRole: PlanOrdererRole = null;\r\n\r\n // was the confirmation sent?\r\n confirmationSentFlag = false;\r\n\r\n\r\n // Demo Mode?\r\n demoModeFlag = false;\r\n demoModeSubmittedFlag = false;\r\n\r\n\r\n // errors from saving\r\n private _saveErrors: ActivityResultError[] = null;\r\n\r\n get saveErrors(): ActivityResultError[] {\r\n return ArrayUtility.arrayDuplicate(this._saveErrors);\r\n }\r\n\r\n set saveErrors(saveErrors: ActivityResultError[]) {\r\n this._saveErrors = ArrayUtility.arrayDuplicate(saveErrors);\r\n }\r\n\r\n\r\n // Logged in Customer\r\n private _loggedInCustomer: Customer = null;\r\n\r\n get loggedInCustomer(): Customer {\r\n return this._loggedInCustomer;\r\n }\r\n\r\n set loggedInCustomer(customer: Customer) {\r\n this._loggedInCustomer = customer;\r\n\r\n this.reconcileRoleRelationships();\r\n }\r\n\r\n\r\n // Logged in Role\r\n private _loggedInJobRole: JobRole = null;\r\n\r\n get loggedInJobRole(): JobRole {\r\n return this._loggedInJobRole;\r\n }\r\n\r\n set loggedInJobRole(jobRole: JobRole) {\r\n this._loggedInJobRole = jobRole;\r\n }\r\n\r\n\r\n\r\n // Have all steps been completed?\r\n private _allStepsCompletedFlag = false;\r\n\r\n get allStepsCompletedFlag(): boolean {\r\n return this._allStepsCompletedFlag;\r\n }\r\n\r\n set allStepsCompletedFlag(flag: boolean) {\r\n this._allStepsCompletedFlag = flag;\r\n\r\n if (flag) {\r\n this.clearEdits();\r\n }\r\n }\r\n\r\n\r\n\r\n // Plan #\r\n planID: number = null;\r\n planGUID: string = null;\r\n\r\n get formattedPlanID(): string {\r\n let formattedPlanID: string = null;\r\n\r\n if (this.planID) {\r\n formattedPlanID = StringUtility.formatPlanNumber(String(this.planID));\r\n }\r\n\r\n return formattedPlanID;\r\n }\r\n\r\n\r\n planReceivedDate: Date = null;\r\n\r\n get formattedPlanReceivedDate(): string {\r\n let text: string = null;\r\n\r\n if (this.planReceivedDate) {\r\n text = StringUtility.formatDate(this.planReceivedDate);\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n channelCode: string = null;\r\n\r\n\r\n planCoverageStarts: Date = null;\r\n planCoverageEnds: Date = null;\r\n\r\n\r\n\r\n // Transaction Type\r\n private _transactionType: TransactionType = null;\r\n\r\n get transactionType(): TransactionType {\r\n return this._transactionType;\r\n }\r\n\r\n set transactionType(transactionType: TransactionType) {\r\n let updateFlag = false;\r\n\r\n if (transactionType && !this._transactionType) {\r\n updateFlag = true;\r\n\r\n } else if (!transactionType && this._transactionType) {\r\n updateFlag = true;\r\n\r\n } else if (transactionType && this._transactionType && !transactionType.isEqual(this._transactionType)) {\r\n updateFlag = true;\r\n }\r\n\r\n if (updateFlag) {\r\n const prevTransactionType = this._transactionType;\r\n\r\n this._transactionType = transactionType;\r\n\r\n this.flagUpdate(PlanOrderApplicationUpdates.transactionType);\r\n\r\n // if we're changing escrow\r\n const prevActiveListingFlag = (prevTransactionType ? prevTransactionType.activeListingFlag : false);\r\n const prevInEscrowFlag = (prevTransactionType ? prevTransactionType.inEscrowFlag : false);\r\n const newActiveListingFlag = (this._transactionType ? this._transactionType.activeListingFlag : false);\r\n const newInEscrowFlag = (this._transactionType ? this._transactionType.inEscrowFlag : false);\r\n\r\n // if we're going from Active Listing to In Escrow, we need a Closing Agent update\r\n if (prevActiveListingFlag && newInEscrowFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.closingAgent);\r\n }\r\n\r\n // if we're going from In Escrow to Active Listing, remove the closing agent and flag an update\r\n if (prevInEscrowFlag && newActiveListingFlag) {\r\n this.closingAgent = null;\r\n\r\n this.flagUpdate(PlanOrderApplicationUpdates.closingAgent);\r\n }\r\n\r\n // are we updating the role?\r\n let updateRoleFlag = true;\r\n\r\n // the application has to be new\r\n updateRoleFlag = updateRoleFlag && !this.planID;\r\n\r\n // the user has to be logged in, with a job role\r\n updateRoleFlag = updateRoleFlag && !!this.loggedInJobRole;\r\n\r\n // Do Not update from active to in escrow\r\n if (prevTransactionType !== null) {\r\n updateRoleFlag = updateRoleFlag && (!prevTransactionType.activeListingFlag && !transactionType.inEscrowFlag);\r\n }\r\n\r\n if (updateRoleFlag) {\r\n const jobRoleCode = this.loggedInJobRole.jobRole;\r\n\r\n // look for a default plan role selection based on job role\r\n const defaultRole = this.planLookupValueService.ordererRoleDefaultByJobRole(transactionType, jobRoleCode);\r\n\r\n if (defaultRole && defaultRole.planRole) {\r\n this.role = defaultRole.planRole;\r\n\r\n } else {\r\n this.role = null;\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n\r\n // Property Type\r\n private _newConstructionFlag: NewConstructionFlag = null;\r\n\r\n get newConstructionFlag(): NewConstructionFlag {\r\n return this._newConstructionFlag;\r\n }\r\n\r\n set newConstructionFlag(newConstructionFlag: NewConstructionFlag) {\r\n let updateFlag = false;\r\n\r\n if (!this._newConstructionFlag || !newConstructionFlag) {\r\n updateFlag = true;\r\n\r\n } else if (!this._newConstructionFlag.isEqual(newConstructionFlag)) {\r\n updateFlag = true;\r\n }\r\n\r\n if (updateFlag) {\r\n this._newConstructionFlag = newConstructionFlag;\r\n\r\n this.flagUpdate(PlanOrderApplicationUpdates.propertyType);\r\n\r\n // the product needs to be re-selected if this was changed\r\n this.product = null;\r\n }\r\n }\r\n\r\n\r\n // Role\r\n private _role: TransactionRole = null;\r\n\r\n get role(): TransactionRole {\r\n return this._role;\r\n }\r\n\r\n set role(role: TransactionRole) {\r\n let updateFlag = false;\r\n\r\n if (role && !this._role) {\r\n updateFlag = true;\r\n\r\n } else if (!role && this._role) {\r\n updateFlag = true;\r\n\r\n } else if (role && this._role && !role.isEqual(this._role)) {\r\n updateFlag = true;\r\n }\r\n\r\n\r\n if (updateFlag) {\r\n let initiatingAgentListingFlag = false;\r\n let cooperatingAgentListingFlag = false;\r\n\r\n if (role) {\r\n initiatingAgentListingFlag = role.realtorListingFlag || role.realtorListingSellingFlag;\r\n cooperatingAgentListingFlag = role.realtorSellingFlag;\r\n }\r\n\r\n this._role = role;\r\n\r\n this.initiatingAgentListingFlag = initiatingAgentListingFlag;\r\n this.cooperatingAgentListingFlag = cooperatingAgentListingFlag;\r\n\r\n this.reconcileRoleRelationships();\r\n\r\n this.flagUpdate(PlanOrderApplicationUpdates.role);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n get initiatingAgentText(): string {\r\n let text = 'Initiating';\r\n\r\n if (this.transactionType && this.transactionType.realtorReferralFlag) {\r\n text = 'Insurance';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n // Initiating Agent\r\n private _initiatingAgent: Customer = null;\r\n\r\n get initiatingAgent(): Customer {\r\n return this._initiatingAgent;\r\n }\r\n\r\n set initiatingAgent(customer: Customer) {\r\n let updateCustomerFlag = false;\r\n let marketSegmentChangeFlag = false;\r\n\r\n // adding an initiating agent\r\n if (!this._initiatingAgent && customer) {\r\n updateCustomerFlag = true;\r\n marketSegmentChangeFlag = true;\r\n\r\n // removing an initiating agent\r\n } else if (this._initiatingAgent && !customer) {\r\n updateCustomerFlag = true;\r\n marketSegmentChangeFlag = true;\r\n\r\n // changing an existing initiating agent\r\n } else if (this._initiatingAgent && customer && !this._initiatingAgent.isEqualToCustomer(customer)) {\r\n updateCustomerFlag = true;\r\n }\r\n\r\n // if we're updating the customer\r\n if (updateCustomerFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.initiatingAgent);\r\n\r\n this._initiatingAgent = customer;\r\n }\r\n\r\n // if this is a market segment change\r\n if (marketSegmentChangeFlag && !this.planID) {\r\n this.product = null;\r\n }\r\n }\r\n\r\n get initiatingAgentOffice(): Employer {\r\n let employer: Employer = null;\r\n\r\n if (this.initiatingAgent && this.initiatingAgent.employer) {\r\n employer = this.initiatingAgent.employer;\r\n }\r\n\r\n return employer;\r\n }\r\n\r\n\r\n private _initiatingAgentSkippedFlag = false;\r\n\r\n get initiatingAgentSkippedFlag(): boolean {\r\n return this._initiatingAgentSkippedFlag;\r\n }\r\n\r\n set initiatingAgentSkippedFlag(initiatingAgentSkippedFlag: boolean) {\r\n const clearProductFlag = (this.initiatingAgentSkippedFlag !== initiatingAgentSkippedFlag);\r\n\r\n this._initiatingAgentSkippedFlag = initiatingAgentSkippedFlag;\r\n\r\n if (clearProductFlag) {\r\n this.product = null;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n private _initiatingAgentListingFlag = false;\r\n\r\n get initiatingAgentListingFlag(): boolean {\r\n return this._initiatingAgentListingFlag;\r\n }\r\n\r\n set initiatingAgentListingFlag(flag: boolean) {\r\n if (flag !== this._initiatingAgentListingFlag) {\r\n this._initiatingAgentListingFlag = flag;\r\n\r\n if (this.initiatingAgent) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.initiatingAgent);\r\n }\r\n }\r\n }\r\n\r\n\r\n // is this application double-ended\r\n get doubleEndFlag(): boolean {\r\n let flag = false;\r\n\r\n if (this.initiatingAgent &&\r\n this.cooperatingAgent &&\r\n this.initiatingAgent.isEqualToCustomer(this.cooperatingAgent)) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n // Product\r\n private _marketSegmentID: number = null;\r\n private _product: Product = null;\r\n\r\n get product(): Product {\r\n return this._product;\r\n }\r\n\r\n set product(product: Product) {\r\n let updateProductFlag = false;\r\n\r\n if (!this._product || !product) {\r\n updateProductFlag = true;\r\n\r\n } else if (this._product.productID !== product.productID) {\r\n updateProductFlag = true;\r\n }\r\n\r\n if (updateProductFlag) {\r\n if (product && product.marketSegment) {\r\n this._marketSegmentID = product.marketSegment.marketSegmentID;\r\n }\r\n\r\n this.productCoverages = null;\r\n\r\n this.flagUpdate(PlanOrderApplicationUpdates.product);\r\n }\r\n\r\n this._product = product;\r\n }\r\n\r\n get marketSegmentID(): number {\r\n return this._marketSegmentID;\r\n }\r\n\r\n\r\n set marketSegmentID(marketSegmentID: number) {\r\n // if the market segment ID is different\r\n if (this._marketSegmentID !== marketSegmentID) {\r\n this._marketSegmentID = marketSegmentID;\r\n\r\n this.product = null;\r\n }\r\n }\r\n\r\n\r\n // Optional Coverage\r\n private _planOptions: PlanOption[] = null;\r\n\r\n get planOptions(): PlanOption[] {\r\n return this._planOptions;\r\n }\r\n\r\n\r\n set planOptions(planOptions: PlanOption[]) {\r\n const prevSellersCoverageFlag = this.sellersCoverageFlag();\r\n\r\n this._planOptions = ArrayUtility.arrayDuplicate(planOptions);\r\n\r\n const newSellersCoverageFlag = this.sellersCoverageFlag();\r\n const hasHomeSellerFlag = !!(this.homeSellers || []).length;\r\n\r\n // if sellers coverage was added, but there is no Home Seller, flag that a Home Seller is needed\r\n if (!prevSellersCoverageFlag && newSellersCoverageFlag && !hasHomeSellerFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.homeSeller);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n private _productCoverages: ProductCoverage[] = null;\r\n selectedDisplayCodes: string[] = null;\r\n\r\n get productCoverages(): ProductCoverage[] {\r\n return this._productCoverages;\r\n }\r\n\r\n set productCoverages(coverages: ProductCoverage[]) {\r\n const prevSellersCoverageFlag = this.sellersCoverageFlag();\r\n\r\n // compare the two coverage arrays\r\n const coveragesMatchFlag = ArrayUtility.arrayCompare(\r\n this._productCoverages,\r\n coverages,\r\n (item1: any, item2: any) => {\r\n const coverage1 = item1;\r\n const coverage2 = item2;\r\n\r\n return (coverage1.coverageID === coverage2.coverageID);\r\n });\r\n\r\n let updateCoveragesFlag = false;\r\n\r\n if (!coveragesMatchFlag) {\r\n updateCoveragesFlag = true;\r\n }\r\n\r\n if (updateCoveragesFlag) {\r\n if (coverages) {\r\n const selectedDisplayCodes = [];\r\n\r\n coverages.forEach((indexCoverage: ProductCoverage) => {\r\n // only include the coverage if the price is not 0\r\n if ((indexCoverage.premium || 0) !== 0) {\r\n selectedDisplayCodes.push(indexCoverage.displayCode);\r\n }\r\n });\r\n\r\n this.selectedDisplayCodes = selectedDisplayCodes;\r\n }\r\n\r\n this.flagUpdate(PlanOrderApplicationUpdates.optionalCoverages);\r\n\r\n }\r\n\r\n this._productCoverages = coverages;\r\n\r\n const newSellersCoverageFlag = this.sellersCoverageFlag();\r\n const hasHomeSellerFlag = !!(this.homeSellers || []).length;\r\n\r\n if (!prevSellersCoverageFlag && newSellersCoverageFlag && !hasHomeSellerFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.homeSeller);\r\n }\r\n }\r\n\r\n\r\n\r\n // Property Address\r\n private _property: Property = null;\r\n\r\n get property(): Property {\r\n if (!this._property) {\r\n this._property = this.propertyDomainFactoryService.newProperty();\r\n\r\n this.flagUpdate(PlanOrderApplicationUpdates.propertyAddress);\r\n this.flagUpdate(PlanOrderApplicationUpdates.propertyType);\r\n }\r\n\r\n return this._property;\r\n }\r\n\r\n set property(property: Property) {\r\n let propertyUpdatedFlag = false;\r\n let propertyTypeUpdatedFlag = false;\r\n\r\n if (!this._property || !property) {\r\n propertyUpdatedFlag = true;\r\n\r\n } else {\r\n if (this._property.propertyID !== property.propertyID) {\r\n propertyUpdatedFlag = true;\r\n }\r\n\r\n if (this._property.tag !== property.tag) {\r\n propertyUpdatedFlag = true;\r\n }\r\n\r\n if (this._property.propertyType) {\r\n propertyTypeUpdatedFlag = !this._property.propertyType.isEqual(property.propertyType);\r\n }\r\n }\r\n\r\n if (propertyTypeUpdatedFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.propertyType);\r\n }\r\n\r\n if (propertyUpdatedFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.propertyAddress);\r\n\r\n // synchronize buyer and seller addresses if this is a new plan\r\n if (!this.planID) {\r\n this.synchronizeBuyerAddresses(property);\r\n this.synchronizeSellerAddresses(property);\r\n }\r\n }\r\n\r\n this._property = property;\r\n\r\n if (propertyTypeUpdatedFlag) {\r\n this.product = null;\r\n }\r\n }\r\n\r\n\r\n // Region\r\n private _propertyRegionID: number = null;\r\n\r\n get propertyRegionID(): number {\r\n return this._propertyRegionID;\r\n }\r\n\r\n set propertyRegionID(propertyRegionID: number) {\r\n let updateFlag = false;\r\n let resetProductFlag = false;\r\n\r\n if (!this._propertyRegionID || !propertyRegionID) {\r\n updateFlag = true;\r\n\r\n } else if (this._propertyRegionID !== propertyRegionID) {\r\n updateFlag = true;\r\n }\r\n\r\n if (updateFlag) {\r\n resetProductFlag = true;\r\n }\r\n\r\n if (updateFlag) {\r\n this._propertyRegionID = propertyRegionID;\r\n\r\n this.flagUpdate(PlanOrderApplicationUpdates.propertyType);\r\n }\r\n\r\n if (resetProductFlag) {\r\n this.product = null;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // Cooperating Agent\r\n private _cooperatingAgent: Customer = null;\r\n\r\n get cooperatingAgent(): Customer {\r\n return this._cooperatingAgent;\r\n }\r\n\r\n set cooperatingAgent(customer: Customer) {\r\n let updateCustomerFlag = false;\r\n\r\n if (!this._cooperatingAgent || !customer) {\r\n updateCustomerFlag = true;\r\n\r\n } else if (this._cooperatingAgent.customerID !== customer.customerID) {\r\n updateCustomerFlag = true;\r\n }\r\n\r\n if (updateCustomerFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.cooperatingAgent);\r\n }\r\n\r\n this._cooperatingAgent = customer;\r\n }\r\n\r\n\r\n get cooperatingAgentOffice(): Employer {\r\n let employer: Employer = null;\r\n\r\n if (this.cooperatingAgent && this.cooperatingAgent.employer) {\r\n employer = this.cooperatingAgent.employer;\r\n }\r\n\r\n return employer;\r\n }\r\n\r\n\r\n cooperatingAgentSkippedFlag = false;\r\n\r\n\r\n private _cooperatingAgentListingFlag = false;\r\n\r\n get cooperatingAgentListingFlag(): boolean {\r\n return this._cooperatingAgentListingFlag;\r\n }\r\n\r\n set cooperatingAgentListingFlag(flag: boolean) {\r\n if (flag !== this._cooperatingAgentListingFlag) {\r\n this._cooperatingAgentListingFlag = flag;\r\n\r\n if (this.cooperatingAgent) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.cooperatingAgent);\r\n this.flagUpdate(PlanOrderApplicationUpdates.cooperatingAgentListingFlag);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // Telemarketing Agent\r\n private _telemarketingAgent: Customer = null;\r\n\r\n get telemarketingAgent(): Customer {\r\n return this._telemarketingAgent;\r\n }\r\n\r\n set telemarketingAgent(customer: Customer) {\r\n let updateCustomerFlag = false;\r\n\r\n if (!this._telemarketingAgent || !customer) {\r\n updateCustomerFlag = true;\r\n\r\n } else if (this._telemarketingAgent.customerID !== customer.customerID) {\r\n updateCustomerFlag = true;\r\n }\r\n\r\n if (updateCustomerFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.telemarketing);\r\n }\r\n\r\n this._telemarketingAgent = customer;\r\n }\r\n\r\n\r\n get telemarketingAgentOffice(): Employer {\r\n let employer: Employer = null;\r\n\r\n if (this.telemarketingAgent && this.telemarketingAgent.employer) {\r\n employer = this.telemarketingAgent.employer;\r\n }\r\n\r\n return employer;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // Escrow\r\n private _closingAgent: Customer = null;\r\n\r\n get closingAgent(): Customer {\r\n return this._closingAgent;\r\n }\r\n\r\n set closingAgent(customer: Customer) {\r\n let updateCustomerFlag = false;\r\n\r\n if (!this._closingAgent || !customer) {\r\n updateCustomerFlag = true;\r\n\r\n } else if (this._closingAgent.customerID !== customer.customerID) {\r\n updateCustomerFlag = true;\r\n }\r\n\r\n if (updateCustomerFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.closingAgent);\r\n this.flagUpdate(PlanOrderApplicationUpdates.closingInfo);\r\n }\r\n\r\n this._closingAgent = customer;\r\n }\r\n\r\n\r\n get closingOffice(): Employer {\r\n let employer: Employer = null;\r\n\r\n if (this.closingAgent && this.closingAgent.employer) {\r\n employer = this.closingAgent.employer;\r\n }\r\n\r\n return employer;\r\n }\r\n\r\n\r\n closingAgentSkippedFlag = false;\r\n\r\n\r\n // Closing Info\r\n private _closingFileNumber: string = null;\r\n\r\n get closingFileNumber(): string {\r\n return this._closingFileNumber;\r\n }\r\n\r\n set closingFileNumber(closingFileNumber: string) {\r\n if (closingFileNumber !== this._closingFileNumber) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.closingInfo);\r\n }\r\n\r\n this._closingFileNumber = closingFileNumber;\r\n }\r\n\r\n\r\n private _estimatedClosingDate: Date = null;\r\n\r\n get estimatedClosingDate(): Date {\r\n return this._estimatedClosingDate;\r\n }\r\n\r\n set estimatedClosingDate(estimatedClosingDate: Date) {\r\n if (estimatedClosingDate !== this._estimatedClosingDate) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.closingInfo);\r\n }\r\n\r\n this._estimatedClosingDate = estimatedClosingDate;\r\n }\r\n\r\n\r\n get formattedEstimatedClosingDate(): string {\r\n return StringUtility.formatDate(this.estimatedClosingDate);\r\n }\r\n\r\n\r\n private _actualClosingDate: Date = null;\r\n\r\n get actualClosingDate(): Date {\r\n return this._actualClosingDate;\r\n }\r\n\r\n set actualClosingDate(actualClosingDate: Date) {\r\n if (actualClosingDate !== this._actualClosingDate) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.closingInfo);\r\n }\r\n\r\n this._actualClosingDate = actualClosingDate;\r\n }\r\n\r\n\r\n get formattedActualClosingDate(): string {\r\n return StringUtility.formatDate(this.actualClosingDate);\r\n }\r\n\r\n\r\n\r\n private _invoiceRecipient: PlanInvoiceRecipient = null;\r\n\r\n get invoiceRecipient(): PlanInvoiceRecipient {\r\n return this._invoiceRecipient;\r\n }\r\n\r\n set invoiceRecipient(invoiceRecipient: PlanInvoiceRecipient) {\r\n let updateFlag = false;\r\n\r\n if (invoiceRecipient && !this._invoiceRecipient) {\r\n updateFlag = true;\r\n } else if (!invoiceRecipient && this._invoiceRecipient) {\r\n updateFlag = true;\r\n } else if (invoiceRecipient && this._invoiceRecipient) {\r\n updateFlag = (invoiceRecipient.invoiceRecipientID !== this._invoiceRecipient.invoiceRecipientID);\r\n }\r\n\r\n if (updateFlag) {\r\n this._invoiceRecipient = invoiceRecipient;\r\n\r\n this.flagUpdate(PlanOrderApplicationUpdates.invoiceRecipient);\r\n\r\n // do we need a customer selection?\r\n if (invoiceRecipient) {\r\n if (invoiceRecipient.homeBuyerFlag) {\r\n const hasCustomerFlag = (this.homeBuyers ? !!this.homeBuyers.length : false);\r\n\r\n if (!hasCustomerFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.homeBuyer);\r\n }\r\n }\r\n\r\n if (invoiceRecipient.homeSellerFlag) {\r\n const hasCustomerFlag = (this.homeSellers ? !!this.homeSellers.length : false);\r\n\r\n if (!hasCustomerFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.homeSeller);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n // Invoice Recipient Customer\r\n invoiceRecipientCustomerID: number = null;\r\n\r\n get invoiceRecipientCustomer(): Customer {\r\n let customer: Customer = null;\r\n\r\n if (this.initiatingAgent && (this.initiatingAgent.customerID === this.invoiceRecipientCustomerID)) {\r\n customer = this.initiatingAgent;\r\n }\r\n\r\n if (this.cooperatingAgent && (this.cooperatingAgent.customerID === this.invoiceRecipientCustomerID)) {\r\n customer = this.cooperatingAgent;\r\n }\r\n\r\n if (this.closingAgent && (this.closingAgent.customerID === this.invoiceRecipientCustomerID)) {\r\n customer = this.closingAgent;\r\n }\r\n\r\n if (this.homeBuyers) {\r\n this.homeBuyers.forEach((indexCustomer: Customer) => {\r\n if (indexCustomer.customerID === this.invoiceRecipientCustomerID) {\r\n customer = indexCustomer;\r\n }\r\n });\r\n }\r\n\r\n if (this.homeSellers) {\r\n this.homeSellers.forEach((indexCustomer: Customer) => {\r\n if (indexCustomer.customerID === this.invoiceRecipientCustomerID) {\r\n customer = indexCustomer;\r\n }\r\n });\r\n }\r\n\r\n return customer;\r\n }\r\n\r\n\r\n\r\n // Additional Email Address entry\r\n additionalEmailAddresses: string[] = null;\r\n\r\n\r\n\r\n\r\n\r\n\r\n // Default homeowner\r\n defaultHomeownerCustomerID: number = null;\r\n\r\n\r\n\r\n get homeBuyerOrOwnerText(): string {\r\n let buyerFlag = true;\r\n\r\n if (this.transactionType && this.transactionType.directToConsumerFlag) {\r\n buyerFlag = false;\r\n }\r\n\r\n if (this.product && this.product.marketSegment && this.product.marketSegment.directFlag) {\r\n buyerFlag = false;\r\n }\r\n\r\n return (buyerFlag ? 'Home Buyer' : 'Homeowner');\r\n }\r\n\r\n\r\n\r\n // Home Buyer\r\n private _homeBuyers: Customer[] = null;\r\n\r\n get homeBuyers(): Customer[] {\r\n return this._homeBuyers;\r\n }\r\n\r\n set homeBuyers(customers: Customer[]) {\r\n let updateCustomersFlag = false;\r\n\r\n if (!this._homeBuyers || !customers) {\r\n updateCustomersFlag = true;\r\n\r\n } else if (this._homeBuyers.length !== customers.length) {\r\n updateCustomersFlag = true;\r\n\r\n } else {\r\n customers.forEach((indexNewCustomer: Customer) => {\r\n let indexCustomerFoundFlag = false;\r\n\r\n this._homeBuyers.forEach((indexExistingCustomer: Customer) => {\r\n if (indexNewCustomer.isEqualToCustomer(indexExistingCustomer)) {\r\n indexCustomerFoundFlag = true;\r\n }\r\n });\r\n\r\n if (!indexCustomerFoundFlag) {\r\n updateCustomersFlag = true;\r\n }\r\n\r\n if (indexNewCustomer.hasUpdateFlag) {\r\n updateCustomersFlag = true;\r\n }\r\n });\r\n }\r\n\r\n if (updateCustomersFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.homeBuyer);\r\n }\r\n\r\n\r\n // check home buyer updates\r\n const existingHomeBuyerCount = (this._homeBuyers ? this._homeBuyers.length : 0);\r\n const newHomeBuyerCount = (customers ? customers.length : 0);\r\n\r\n // if there were existing home buyers but no new ones, add a mailing address\r\n if (existingHomeBuyerCount && !newHomeBuyerCount) {\r\n const homeBuyer = this._homeBuyers[0];\r\n\r\n if ((homeBuyer.address || '') === '') {\r\n const mailingAddress = new Address();\r\n\r\n mailingAddress.address = homeBuyer.address;\r\n mailingAddress.city = homeBuyer.city;\r\n mailingAddress.stateCode = homeBuyer.stateCode;\r\n mailingAddress.zipCode = homeBuyer.zipCode;\r\n\r\n this.mailingAddress = mailingAddress;\r\n }\r\n }\r\n\r\n this._homeBuyers = customers;\r\n }\r\n\r\n\r\n // Home Seller\r\n private _homeSellers: Customer[] = null;\r\n\r\n get homeSellers(): Customer[] {\r\n return this._homeSellers;\r\n }\r\n\r\n set homeSellers(customers: Customer[]) {\r\n let updateCustomersFlag = false;\r\n\r\n if (!this._homeSellers || !customers) {\r\n updateCustomersFlag = true;\r\n\r\n } else if (this._homeSellers.length !== customers.length) {\r\n updateCustomersFlag = true;\r\n\r\n } else {\r\n customers.forEach((indexNewCustomer: Customer) => {\r\n let indexCustomerFoundFlag = false;\r\n\r\n this._homeSellers.forEach((indexExistingCustomer: Customer) => {\r\n if (indexNewCustomer.isEqualToCustomer(indexExistingCustomer)) {\r\n indexCustomerFoundFlag = true;\r\n }\r\n });\r\n\r\n if (!indexCustomerFoundFlag) {\r\n updateCustomersFlag = true;\r\n }\r\n\r\n if (indexNewCustomer.hasUpdateFlag) {\r\n updateCustomersFlag = true;\r\n }\r\n });\r\n }\r\n\r\n if (updateCustomersFlag) {\r\n this.flagUpdate(PlanOrderApplicationUpdates.homeSeller);\r\n }\r\n\r\n this._homeSellers = customers;\r\n }\r\n\r\n\r\n\r\n // mailing address\r\n private _mailingAddress: Address = null;\r\n\r\n get mailingAddress(): Address {\r\n let address = this._mailingAddress;\r\n\r\n if (!address) {\r\n // if there are home buyers\r\n if (this.homeBuyers && this.homeBuyers.length) {\r\n const homeBuyer = this.homeBuyers[0];\r\n\r\n const mailingAddress = (homeBuyer.address || '');\r\n\r\n if (mailingAddress !== '') {\r\n address = new Address();\r\n address.address = homeBuyer.address;\r\n address.city = homeBuyer.city;\r\n address.stateCode = homeBuyer.stateCode;\r\n address.zipCode = homeBuyer.zipCode;\r\n }\r\n }\r\n }\r\n\r\n if (!address) {\r\n // if there is a property address\r\n if (this.property) {\r\n const propertyAddress = (this.property.address || '');\r\n\r\n if (propertyAddress !== '') {\r\n address = new Address();\r\n address.address = this.property.address;\r\n address.city = this.property.city;\r\n address.stateCode = this.property.stateCode;\r\n address.zipCode = this.property.zipCode;\r\n }\r\n }\r\n }\r\n\r\n return address;\r\n }\r\n\r\n set mailingAddress(address: Address) {\r\n let updateFlag = false;\r\n\r\n if (address && !this._mailingAddress) {\r\n updateFlag = true;\r\n\r\n } else if (!address && this._mailingAddress) {\r\n updateFlag = true;\r\n\r\n } else if (address && this._mailingAddress) {\r\n updateFlag = updateFlag || (address.address !== this._mailingAddress.address);\r\n updateFlag = updateFlag || (address.city !== this._mailingAddress.city);\r\n updateFlag = updateFlag || (address.stateCode !== this._mailingAddress.stateCode);\r\n updateFlag = updateFlag || (address.zipCode !== this._mailingAddress.zipCode);\r\n }\r\n\r\n if (updateFlag) {\r\n this._mailingAddress = address;\r\n\r\n // if there is a primary home buyer\r\n if (this.homeBuyers && this.homeBuyers.length) {\r\n const homeBuyer = this.homeBuyers[0];\r\n const homeBuyerUpdatedFlag = homeBuyer.hasUpdateFlag;\r\n\r\n homeBuyer.address = address.address;\r\n homeBuyer.city = address.city;\r\n homeBuyer.stateCode = address.stateCode;\r\n homeBuyer.zipCode = address.zipCode;\r\n\r\n homeBuyer.overrideAddressValidationFlag = true;\r\n\r\n homeBuyer.hasUpdateFlag = homeBuyerUpdatedFlag;\r\n }\r\n\r\n this.flagUpdate(PlanOrderApplicationUpdates.mailingAddress);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // payment detail\r\n payNowFlag: boolean = null;\r\n\r\n paymentPlan: PaymentPlan = null;\r\n firstPaymentAmount: number = null;\r\n creditCardGUID: string = null;\r\n ccCardHolderName: string = null;\r\n ccNumber: string = null;\r\n ccExpirationMonth: number = null;\r\n ccExpirationYear: number = null;\r\n\r\n ccPaymentResult: ActivityResult = null;\r\n\r\n\r\n\r\n // premium invoice\r\n premiumInvoice: CustomerInvoice = null;\r\n\r\n\r\n\r\n // premium invoice recipients\r\n private _premiumInvoiceRecipients: CustomerInvoiceRecipient[] = null;\r\n\r\n get premiumInvoiceRecipients(): CustomerInvoiceRecipient[] {\r\n if (!this._premiumInvoiceRecipients && !!this.premiumInvoice) {\r\n this._premiumInvoiceRecipients = ArrayUtility.arrayDuplicate(this.premiumInvoice.recipients);\r\n }\r\n\r\n if (!this._premiumInvoiceRecipients) {\r\n this._premiumInvoiceRecipients = [];\r\n }\r\n\r\n return this._premiumInvoiceRecipients;\r\n }\r\n\r\n set premiumInvoiceRecipients(recipients: CustomerInvoiceRecipient[]) {\r\n this._premiumInvoiceRecipients = ArrayUtility.arrayDuplicate(recipients);\r\n }\r\n\r\n\r\n\r\n\r\n // plan status\r\n planStatus: PlanStatus = null;\r\n\r\n\r\n\r\n // claim history (read-only)\r\n planClaimHistory: PlanClaimHistory[] = null;\r\n\r\n\r\n\r\n // cancellation (read-only)\r\n planCancels: PlanCancel[] = null;\r\n\r\n get planCancel(): PlanCancel {\r\n let planCancel: PlanCancel = null;\r\n\r\n if (this.planCancels && this.planCancels.length) {\r\n planCancel = this.planCancels[0];\r\n }\r\n\r\n return planCancel;\r\n }\r\n\r\n\r\n\r\n // all relationships\r\n get customers(): Customer[] {\r\n const customers = [];\r\n\r\n if (this.initiatingAgent) {\r\n customers.push(this.initiatingAgent);\r\n }\r\n\r\n if (this.cooperatingAgent) {\r\n customers.push(this.cooperatingAgent);\r\n }\r\n\r\n if (this.closingAgent) {\r\n customers.push(this.closingAgent);\r\n }\r\n\r\n if (this.homeBuyers) {\r\n this.homeBuyers.forEach((indexCustomer: Customer) => {\r\n customers.push(indexCustomer);\r\n });\r\n }\r\n\r\n if (this.homeSellers) {\r\n this.homeSellers.forEach((indexCustomer: Customer) => {\r\n customers.push(indexCustomer);\r\n });\r\n }\r\n\r\n return customers;\r\n }\r\n\r\n // for Auto-renewal feature\r\n private _autoRenewFlag: boolean = null;\r\n\r\n get autoRenewFlag(): boolean {\r\n return this._autoRenewFlag;\r\n }\r\n\r\n set autoRenewFlag(autoRenewFlag: boolean) {\r\n this._autoRenewFlag = autoRenewFlag;\r\n }\r\n\r\n\r\n // for Auto-renewal feature\r\n private _directProcessFlag = false;\r\n\r\n get directProcessFlag(): boolean {\r\n return this._directProcessFlag;\r\n }\r\n\r\n set directProcessFlag(directProcessFlag: boolean) {\r\n this._directProcessFlag = directProcessFlag;\r\n }\r\n\r\n\r\n // should confirmations/invoices be sent immediately?\r\n sendConfirmationsOnSaveFlag = true;\r\n\r\n\r\n\r\n\r\n // services\r\n propertyDomainFactoryService: PropertyDomainFactoryService;\r\n customerDomainFactoryService: CustomerDomainFactoryService;\r\n employerDomainFactoryService: EmployerDomainFactoryService;\r\n planDomainFactoryService: PlanDomainFactoryService;\r\n planLookupValueService: PlanLookupValueService;\r\n accountingDomainFactoryService: AccountingDomainFactoryService;\r\n dateService: PhxDateService;\r\n\r\n\r\n\r\n\r\n constructor(propertyDomainFactoryService: PropertyDomainFactoryService,\r\n customerDomainFactoryService: CustomerDomainFactoryService,\r\n employerDomainFactoryService: EmployerDomainFactoryService,\r\n planDomainFactoryService: PlanDomainFactoryService,\r\n planLookupValueService: PlanLookupValueService,\r\n accountingDomainFactoryService: AccountingDomainFactoryService,\r\n dateService: PhxDateService) {\r\n\r\n this.propertyDomainFactoryService = propertyDomainFactoryService;\r\n this.customerDomainFactoryService = customerDomainFactoryService;\r\n this.employerDomainFactoryService = employerDomainFactoryService;\r\n this.planDomainFactoryService = planDomainFactoryService;\r\n this.planLookupValueService = planLookupValueService;\r\n this.accountingDomainFactoryService = accountingDomainFactoryService;\r\n this.dateService = dateService;\r\n\r\n this.planReceivedDate = this.dateService.currentDate();\r\n }\r\n\r\n\r\n\r\n\r\n\r\n closingDate(): Date {\r\n let closingDate: Date = null;\r\n\r\n if (this.actualClosingDate) {\r\n closingDate = this.actualClosingDate;\r\n\r\n } else if (this.estimatedClosingDate) {\r\n closingDate = this.estimatedClosingDate;\r\n }\r\n\r\n return closingDate;\r\n }\r\n\r\n\r\n\r\n // returns sellers coverage days\r\n sellersCoverageDays(): number {\r\n let sellersCoverageDays: number = null;\r\n\r\n let sellersCoverageDurationQty = 0;\r\n\r\n const sellersCoverage = ArrayUtility.arrayFind(this.productCoverages,\r\n (testCoverage: ProductCoverage): boolean => {\r\n\r\n const sellersCoverageFlag = testCoverage.coverageType.sellerCoverageFlag;\r\n const includedCoverageFlag = testCoverage.includedCoverageFlag;\r\n\r\n return (sellersCoverageFlag && !includedCoverageFlag);\r\n });\r\n\r\n if (sellersCoverage) {\r\n sellersCoverageDurationQty = sellersCoverage.durationQty;\r\n\r\n const currentDate = DateUtility.midnightDate(this.dateService.currentDate());\r\n const closingDate = DateUtility.midnightDate(this.closingDate());\r\n\r\n const planReceivedDate = DateUtility.midnightDate(this.planReceivedDate);\r\n const planCoverageStarts = (this.planCoverageStarts ? DateUtility.midnightDate(this.planCoverageStarts) : null);\r\n\r\n // does the plan have a start date?\r\n if (planCoverageStarts) {\r\n const planActiveDays = DateUtility.dateDiff(DatePart.days, planReceivedDate, planCoverageStarts);\r\n\r\n // is the plan coverage start date prior to the app received date?\r\n if (planActiveDays < 0) {\r\n sellersCoverageDays = 0;\r\n\r\n } else {\r\n sellersCoverageDays = planActiveDays;\r\n }\r\n\r\n\r\n // does the plan have a closing date?\r\n } else if (closingDate) {\r\n const closingDays = DateUtility.dateDiff(DatePart.days, planReceivedDate, closingDate);\r\n\r\n // is the estimated COE prior to the app received date\r\n if (closingDays < 0) {\r\n sellersCoverageDays = 0;\r\n\r\n } else {\r\n // is the closing date before today?\r\n const closingBeforeToday = (DateUtility.dateDiff(DatePart.days, currentDate, closingDate) < 0);\r\n\r\n // if it use, use the date count between app received and closing date\r\n if (closingBeforeToday) {\r\n sellersCoverageDays = closingDays;\r\n\r\n // if the closing days are greater than the maximum?\r\n } else if (closingDays > sellersCoverageDurationQty) {\r\n sellersCoverageDays = sellersCoverageDurationQty;\r\n\r\n } else {\r\n sellersCoverageDays = closingDays;\r\n }\r\n }\r\n\r\n // plan has neither\r\n } else {\r\n sellersCoverageDays = sellersCoverageDurationQty;\r\n }\r\n }\r\n\r\n return sellersCoverageDays;\r\n }\r\n\r\n\r\n\r\n // sellers coverage flag\r\n sellersCoverageFlag(): boolean {\r\n let flag = false;\r\n\r\n (this.productCoverages || []).forEach((indexCoverage: ProductCoverage) => {\r\n if (indexCoverage.coverageType.sellerCoverageFlag) {\r\n flag = true;\r\n }\r\n });\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n // returns sellers coverage cost\r\n sellersCoveragePremium(): number {\r\n const sellersCoverageDays = this.sellersCoverageDays();\r\n\r\n let premium: number = null;\r\n\r\n if (this.productCoverages) {\r\n this.productCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n // if this is sellers coverage\r\n if (indexCoverage.coverageType.sellerCoverageFlag) {\r\n // if the premium is a daily rate\r\n if (indexCoverage.dailyFlag) {\r\n let flag = true;\r\n flag = flag && (sellersCoverageDays > 0);\r\n flag = flag && (sellersCoverageDays !== indexCoverage.durationQty);\r\n\r\n // if sellers coverage days are positive\r\n if (flag) {\r\n premium = NumberUtility.roundDollarWithCents(indexCoverage.premium * sellersCoverageDays);\r\n\r\n // negative/0 sellers coverage days means 0 premium\r\n } else {\r\n premium = 0;\r\n }\r\n\r\n } else {\r\n premium = indexCoverage.premium;\r\n }\r\n }\r\n });\r\n }\r\n\r\n return premium;\r\n }\r\n\r\n\r\n // formatted sellers coverage premium\r\n formattedSellersCoveragePremium(): string {\r\n return StringUtility.formatDollarWithDecimal(this.sellersCoveragePremium());\r\n }\r\n\r\n\r\n // total premium\r\n coverageTotalPremium(): number {\r\n let premium = 0;\r\n\r\n if (this.product) {\r\n premium = this.product.premium;\r\n }\r\n\r\n const sellersCoverageDays = this.sellersCoverageDays();\r\n\r\n (this.productCoverages || []).forEach((indexCoverage: ProductCoverage) => {\r\n const sellersCoverageFlag = indexCoverage.coverageType.sellerCoverageFlag;\r\n const includedCoverageFlag = (indexCoverage.premium === 0);\r\n\r\n if (!includedCoverageFlag) {\r\n if (!indexCoverage.dailyFlag) {\r\n const optionUnits = this.optionUnitsForCoverage(indexCoverage);\r\n\r\n premium += (indexCoverage.premium * optionUnits);\r\n\r\n } else if (sellersCoverageFlag && sellersCoverageDays) {\r\n const sellerPremium = this.sellersCoveragePremium();\r\n\r\n if (sellerPremium) {\r\n premium += sellerPremium;\r\n }\r\n }\r\n\r\n premium = NumberUtility.roundDollarWithCents(premium);\r\n }\r\n });\r\n\r\n return premium;\r\n }\r\n\r\n\r\n // formatted total premium\r\n formattedCoverageTotalPremium(): string {\r\n return StringUtility.formatDollarWithDecimal(this.coverageTotalPremium());\r\n }\r\n\r\n\r\n // does the application have an initiating agent?\r\n hasInitiatingAgent(): boolean {\r\n let hasAgentFlag = false;\r\n\r\n if (this.initiatingAgent) {\r\n hasAgentFlag = true;\r\n\r\n } else {\r\n if (this.role) {\r\n hasAgentFlag = hasAgentFlag || this.role.realtorListingFlag;\r\n hasAgentFlag = hasAgentFlag || this.role.realtorSellingFlag;\r\n hasAgentFlag = hasAgentFlag || this.role.realtorListingSellingFlag;\r\n }\r\n }\r\n\r\n return hasAgentFlag;\r\n }\r\n\r\n\r\n\r\n\r\n // reconciles the role with relationships\r\n reconcileRoleRelationships() {\r\n const customer = this.loggedInCustomer || this.customerDomainFactoryService.newCustomer();\r\n\r\n let initiatingAgentFlag = false;\r\n let cooperatingAgentFlag = false;\r\n let closingFlag = false;\r\n let telemarketingFlag = false;\r\n\r\n // are we assigning the user to a role?\r\n if (this.role && customer) {\r\n this.role.ordererRelationships.forEach(\r\n (indexOrdererRelationship: TransactionRoleOrdererRelationship) => {\r\n const relationship = indexOrdererRelationship.assignToRelationship;\r\n\r\n if (relationship.initiatingAgentFlag) {\r\n initiatingAgentFlag = true;\r\n\r\n } else if (relationship.cooperatingAgentFlag) {\r\n cooperatingAgentFlag = true;\r\n\r\n } else if (relationship.closingFlag) {\r\n closingFlag = true;\r\n\r\n } else if (relationship.telemarketingFlag) {\r\n telemarketingFlag = true;\r\n }\r\n });\r\n\r\n // check previous assignments\r\n if (!initiatingAgentFlag) {\r\n if (this.initiatingAgent &&\r\n this.initiatingAgent.isEqualToCustomer(customer)) {\r\n this.initiatingAgent = null;\r\n }\r\n\r\n } else {\r\n this.initiatingAgent = customer;\r\n }\r\n\r\n if (!cooperatingAgentFlag) {\r\n if (this.cooperatingAgent &&\r\n this.cooperatingAgent.isEqualToCustomer(customer)) {\r\n this.cooperatingAgent = null;\r\n }\r\n\r\n } else {\r\n this.cooperatingAgent = customer;\r\n }\r\n\r\n if (!closingFlag) {\r\n if (this.closingAgent &&\r\n this.closingAgent.isEqualToCustomer(customer)) {\r\n this.closingAgent = null;\r\n }\r\n\r\n } else {\r\n this.closingAgent = customer;\r\n }\r\n\r\n if (!telemarketingFlag) {\r\n if (this.telemarketingAgent &&\r\n this.telemarketingAgent.isEqualToCustomer(customer)) {\r\n this.telemarketingAgent = null;\r\n }\r\n\r\n } else {\r\n this.telemarketingAgent = customer;\r\n }\r\n }\r\n }\r\n\r\n\r\n // does this plan have the specified display code\r\n hasDisplayCode(displayCode: string): boolean {\r\n let flag = false;\r\n\r\n if (this.productCoverages) {\r\n this.productCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n const indexDisplayCode = (indexCoverage.displayCode || 'blah').trim();\r\n\r\n if (indexDisplayCode.toLowerCase() === displayCode.toLowerCase()) {\r\n flag = true;\r\n }\r\n });\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n // does the customer have the property address\r\n customerHasPropertyAddress(customer: Customer): boolean {\r\n let flag = false;\r\n\r\n if ((customer.address || '') !== '') {\r\n const property = this.property;\r\n\r\n const customerAddress = (customer.address || '').toLowerCase();\r\n const customerZip = (customer.zipCode || '').substr(0, 5);\r\n\r\n const propertyAddress = (property.address || '').toLowerCase();\r\n const propertyZip = (property.zipCode || '').substr(0, 5);\r\n\r\n const addressFlag = (customerAddress === propertyAddress);\r\n const zipFlag = (customerZip === propertyZip);\r\n\r\n if (addressFlag && zipFlag) {\r\n flag = true;\r\n }\r\n\r\n } else {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n logError(identifier: string, error: Error) {\r\n const resultError = new ActivityResultError();\r\n\r\n resultError.identifier = identifier;\r\n\r\n if (error.stack) {\r\n resultError.message = error.stack;\r\n\r\n } else {\r\n resultError.message = error.toString();\r\n }\r\n\r\n this.saveErrors = [resultError];\r\n\r\n console.error(resultError.identifier);\r\n console.error(resultError.message);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // synchronizes customer addresses\r\n private synchronizeBuyerAddresses(newProperty: Property): boolean {\r\n let flag = false;\r\n\r\n if (this.homeBuyers) {\r\n flag = this.synchronizeCustomerAddresses(this.homeBuyers, newProperty);\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n private synchronizeSellerAddresses(newProperty: Property): boolean {\r\n let flag = false;\r\n\r\n if (this.homeSellers) {\r\n flag = this.synchronizeCustomerAddresses(this.homeSellers, newProperty);\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n private synchronizeCustomerAddresses(customers: Customer[], newProperty: Property): boolean {\r\n let flag = false;\r\n\r\n // loop over the supplied customers\r\n customers.forEach((indexCustomer: Customer) => {\r\n // if the customer has the same address as the property address\r\n if (this.customerHasPropertyAddress(indexCustomer)) {\r\n flag = true;\r\n\r\n indexCustomer.address = newProperty.address;\r\n indexCustomer.city = newProperty.city;\r\n indexCustomer.stateCode = newProperty.stateCode;\r\n indexCustomer.zipCode = newProperty.zipCode;\r\n indexCustomer.overrideAddressValidationFlag = true;\r\n }\r\n });\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n // returns JSON values\r\n jsonValues(): Map {\r\n const jsonValues = new Map();\r\n\r\n const newPlanFlag = !this.planID;\r\n\r\n jsonValues['planID'] = MessagingFormatter.integerToString(this.planID);\r\n jsonValues['guid'] = (this.planGUID || '');\r\n\r\n if (newPlanFlag && this.role) {\r\n jsonValues['planRoleID'] = MessagingFormatter.integerToString(this.role.roleID);\r\n }\r\n\r\n if (this.property && this.hasUpdate(PlanOrderApplicationUpdates.propertyAddress)) {\r\n jsonValues['propertyID'] = MessagingFormatter.integerToString(this.property.propertyID);\r\n jsonValues['propertyGUID'] = (this.property.guid || '');\r\n }\r\n\r\n const productCoveragesFlag = (this.productCoverages && this.hasUpdate(PlanOrderApplicationUpdates.optionalCoverages));\r\n\r\n let productFlag = false;\r\n\r\n productFlag = productFlag || (this.product && this.hasUpdate(PlanOrderApplicationUpdates.product));\r\n productFlag = productFlag || productCoveragesFlag;\r\n\r\n if (productFlag) {\r\n jsonValues['productID'] = MessagingFormatter.integerToString(this.product.productID);\r\n jsonValues['productGUID'] = (this.product.guid || '');\r\n }\r\n\r\n if (this.planOrdererRole) {\r\n jsonValues['planOrdererRole'] = this.planOrdererRole.jsonValues();\r\n }\r\n\r\n if (this.hasUpdate(PlanOrderApplicationUpdates.closingInfo)) {\r\n jsonValues['closingInfoUpdateFlag'] = MessagingFormatter.booleanToString(true);\r\n jsonValues['closingFileNumber'] = (this.closingFileNumber || '');\r\n jsonValues['estimatedClosingDate'] = MessagingFormatter.dateToString(this.estimatedClosingDate);\r\n jsonValues['actualClosingDate'] = MessagingFormatter.dateToString(this.actualClosingDate);\r\n }\r\n\r\n const invoiceRecipientID = (this.invoiceRecipient ? this.invoiceRecipient.invoiceRecipientID : null);\r\n\r\n if (invoiceRecipientID) {\r\n jsonValues['invoiceRecipientID'] = MessagingFormatter.integerToString(invoiceRecipientID);\r\n }\r\n\r\n\r\n if (this.channelCode) {\r\n jsonValues['channelCode'] = this.channelCode;\r\n }\r\n\r\n\r\n // if there is an initiating agent update\r\n if (this.hasUpdate(PlanOrderApplicationUpdates.initiatingAgent)) {\r\n // if there is an initiating agent\r\n if (this.initiatingAgent) {\r\n jsonValues['initiatingAgentCustomerID'] = MessagingFormatter.integerToString(this.initiatingAgent.customerID);\r\n jsonValues['initiatingAgentCustomerGUID'] = (this.initiatingAgent.guid || '');\r\n jsonValues['initiatingAgentListingFlag'] = MessagingFormatter.booleanToString(this.initiatingAgentListingFlag);\r\n\r\n // if there is no initiating agent\r\n } else {\r\n jsonValues['initiatingAgentCustomerID'] = '';\r\n }\r\n }\r\n\r\n\r\n // if there is a cooperating agent update\r\n if (this.hasUpdate(PlanOrderApplicationUpdates.cooperatingAgent)) {\r\n // if there is a cooperating agent\r\n if (this.cooperatingAgent) {\r\n jsonValues['cooperatingAgentCustomerID'] = MessagingFormatter.integerToString(this.cooperatingAgent.customerID);\r\n jsonValues['cooperatingAgentCustomerGUID'] = (this.cooperatingAgent.guid || '');\r\n jsonValues['cooperatingAgentListingFlag'] = MessagingFormatter.booleanToString(this.cooperatingAgentListingFlag);\r\n\r\n // if there is no cooperating agent\r\n } else {\r\n jsonValues['cooperatingAgentCustomerID'] = '';\r\n }\r\n }\r\n\r\n\r\n\r\n // if there is a telemarketing agent update\r\n if (this.hasUpdate(PlanOrderApplicationUpdates.telemarketing)) {\r\n // if there is a telemarketing agent\r\n if (this.telemarketingAgent) {\r\n jsonValues['telemarketingAgentCustomerID'] = PhxSerializer.fromInteger(this.telemarketingAgent.customerID);\r\n jsonValues['telemarketingAgentCustomerGUID'] = (this.telemarketingAgent.guid || '');\r\n\r\n // if there is no telemarketing agent\r\n } else {\r\n jsonValues['telemarketingAgentCustomerID'] = '';\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // if there is a closing agent update\r\n if (this.hasUpdate(PlanOrderApplicationUpdates.closingAgent)) {\r\n // if there is a closing agent\r\n if (this.closingAgent) {\r\n jsonValues['closingAgentCustomerID'] = MessagingFormatter.integerToString(this.closingAgent.customerID);\r\n jsonValues['closingAgentCustomerGUID'] = (this.closingAgent.guid || '');\r\n\r\n // if there is no closing agent\r\n } else {\r\n jsonValues['closingAgentCustomerID'] = '';\r\n }\r\n }\r\n\r\n\r\n\r\n if (this.homeBuyers && this.hasUpdate(PlanOrderApplicationUpdates.homeBuyer)) {\r\n const customerJsonValues = [];\r\n\r\n this.homeBuyers.forEach((indexCustomer: Customer) => {\r\n const customerIDText = MessagingFormatter.integerToString(indexCustomer.customerID);\r\n const customerGUID = (indexCustomer.guid || '');\r\n\r\n const indexCustomerJsonValues = {\r\n 'customerID': customerIDText,\r\n 'customerGUID': customerGUID\r\n };\r\n\r\n customerJsonValues.push(indexCustomerJsonValues);\r\n });\r\n\r\n jsonValues['homeBuyers'] = customerJsonValues;\r\n }\r\n\r\n if (this.homeSellers && this.hasUpdate(PlanOrderApplicationUpdates.homeSeller)) {\r\n const customerJsonValues = [];\r\n\r\n this.homeSellers.forEach((indexCustomer: Customer) => {\r\n const customerIDText = MessagingFormatter.integerToString(indexCustomer.customerID);\r\n const customerGUID = (indexCustomer.guid || '');\r\n\r\n const indexCustomerJsonValues = {\r\n 'customerID': customerIDText,\r\n 'customerGUID': customerGUID\r\n };\r\n\r\n customerJsonValues.push(indexCustomerJsonValues);\r\n });\r\n\r\n jsonValues['homeSellers'] = customerJsonValues;\r\n }\r\n\r\n if (productCoveragesFlag) {\r\n const coverageJsonValues = [];\r\n\r\n this.planOptions.forEach((indexOption: PlanOption) => {\r\n coverageJsonValues.push(indexOption.jsonValues());\r\n });\r\n\r\n jsonValues['coverages'] = coverageJsonValues;\r\n }\r\n\r\n // Additional Email Addresses\r\n if (this.additionalEmailAddresses) {\r\n jsonValues['additionalEmailAddresses'] = this.additionalEmailAddresses;\r\n }\r\n\r\n\r\n // if we're paying now\r\n if (this.payNowFlag) {\r\n jsonValues['paymentPlan'] = this.paymentPlan.paymentPlan;\r\n jsonValues['autoAssignPlanInvoiceFlag'] = PhxSerializer.fromBoolean(true);\r\n\r\n // if we're paying later and a payment plan was specified\r\n } else if (!this.payNowFlag && !!this.paymentPlan) {\r\n jsonValues['paymentPlan'] = this.paymentPlan.paymentPlan;\r\n }\r\n\r\n\r\n\r\n // credit card\r\n if ((this.creditCardGUID || '') !== '') {\r\n jsonValues['creditCardGUID'] = this.creditCardGUID;\r\n }\r\n\r\n\r\n // invoice recipients\r\n const recipientJsons = [];\r\n\r\n this.premiumInvoiceRecipients.forEach((indexRecipient: CustomerInvoiceRecipient) => {\r\n recipientJsons.push(indexRecipient.jsonValues());\r\n });\r\n\r\n jsonValues['premiumInvoiceRecipients'] = recipientJsons;\r\n\r\n\r\n // order confirmations\r\n jsonValues['sendConfirmationsOnSaveFlag'] = PhxSerializer.fromBoolean(this.sendConfirmationsOnSaveFlag);\r\n\r\n jsonValues['autoRenewFlag'] =\r\n this.autoRenewFlag === null || this.autoRenewFlag === undefined ? '' : PhxSerializer.fromBoolean(this.autoRenewFlag);\r\n\r\n jsonValues['directProcessFlag'] = PhxSerializer.fromBoolean(this.directProcessFlag);\r\n\r\n return jsonValues;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // serialize the plan\r\n persistenceJsonValues(): Map {\r\n const jsonValues = new Map();\r\n\r\n if (this.currentStep) {\r\n jsonValues['currentStep'] = this.currentStep;\r\n }\r\n\r\n jsonValues['confirmationSentFlag'] = MessagingFormatter.booleanToString(this.confirmationSentFlag);\r\n\r\n // Demo Mode\r\n if (this.demoModeFlag) {\r\n jsonValues['demoModeFlag'] = MessagingFormatter.booleanToString(this.demoModeFlag);\r\n }\r\n\r\n if (this.demoModeSubmittedFlag) {\r\n jsonValues['demoModeSubmittedFlag'] = MessagingFormatter.booleanToString(this.demoModeSubmittedFlag);\r\n }\r\n\r\n\r\n // All steps completed\r\n jsonValues['allStepsCompletedFlag'] = MessagingFormatter.booleanToString(this.allStepsCompletedFlag);\r\n\r\n\r\n // Save Errors\r\n if (this.saveErrors) {\r\n const saveErrorJson = [];\r\n\r\n this.saveErrors.forEach((indexError: ActivityResultError) => {\r\n saveErrorJson.push(indexError.jsonValues());\r\n });\r\n\r\n jsonValues['saveErrors'] = saveErrorJson;\r\n }\r\n\r\n\r\n // Plan\r\n if (this.planID) {\r\n jsonValues['planID'] = MessagingFormatter.integerToString(this.planID);\r\n }\r\n\r\n if (this.planGUID) {\r\n jsonValues['planGUID'] = this.planGUID;\r\n }\r\n\r\n if (this.channelCode) {\r\n jsonValues['channelCode'] = this.channelCode;\r\n }\r\n\r\n if (this.planReceivedDate) {\r\n jsonValues['planReceivedDate'] = MessagingFormatter.dateToString(this.planReceivedDate);\r\n }\r\n\r\n\r\n if (this.planCoverageStarts) {\r\n jsonValues['planCoverageStarts'] = MessagingFormatter.dateToString(this.planCoverageStarts);\r\n }\r\n\r\n if (this.planCoverageEnds) {\r\n jsonValues['planCoverageEnds'] = MessagingFormatter.dateToString(this.planCoverageEnds);\r\n }\r\n\r\n // Plan Status\r\n if (this.planStatus) {\r\n jsonValues['planStatus'] = MessagingFormatter.integerToString(this.planStatus.status);\r\n }\r\n\r\n // Transaction Type\r\n if (this.transactionType) {\r\n jsonValues['transactionTypeID'] = MessagingFormatter.integerToString(this.transactionType.transactionTypeID);\r\n }\r\n\r\n\r\n // Property Type\r\n if (this.newConstructionFlag) {\r\n jsonValues['newConstructionFlagID'] = MessagingFormatter.integerToString(this.newConstructionFlag.newConstructionFlagID);\r\n }\r\n\r\n // Role\r\n if (this.role) {\r\n jsonValues['roleID'] = MessagingFormatter.integerToString(this.role.roleID);\r\n }\r\n\r\n if (this.planOrdererRole) {\r\n jsonValues['planOrdererRole'] = this.planOrdererRole.jsonValues();\r\n }\r\n\r\n // Initiating Agent\r\n jsonValues['initiatingAgentSkippedFlag'] = MessagingFormatter.booleanToString(this.initiatingAgentSkippedFlag);\r\n\r\n if (this.initiatingAgent) {\r\n jsonValues['initiatingAgent'] = this.initiatingAgent.jsonValues();\r\n\r\n jsonValues['initiatingAgentListingFlag'] = MessagingFormatter.booleanToString(this.initiatingAgentListingFlag);\r\n }\r\n\r\n\r\n\r\n // Product\r\n if (this.product) {\r\n jsonValues['product'] = this.product.jsonValues();\r\n }\r\n\r\n\r\n // Optional Coverage\r\n if (this.productCoverages !== null) {\r\n const coverageJsonValues = [];\r\n\r\n this.productCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n coverageJsonValues.push(indexCoverage.jsonValues());\r\n });\r\n\r\n jsonValues['productCoverages'] = coverageJsonValues;\r\n }\r\n\r\n if (this.selectedDisplayCodes !== null) {\r\n jsonValues['selectedDisplayCodes'] = this.selectedDisplayCodes;\r\n }\r\n\r\n if (this.planOptions !== null) {\r\n const optionJsonValues = [];\r\n\r\n this.planOptions.forEach((indexOption: PlanOption) => {\r\n optionJsonValues.push(indexOption.jsonValues());\r\n });\r\n\r\n jsonValues['planOptions'] = optionJsonValues;\r\n }\r\n\r\n\r\n // Property Address\r\n jsonValues['property'] = this.property.jsonValues();\r\n\r\n if (this.propertyRegionID) {\r\n jsonValues['propertyRegionID'] = MessagingFormatter.integerToString(this.propertyRegionID);\r\n }\r\n\r\n // Cooperating Agent\r\n jsonValues['cooperatingAgentSkippedFlag'] = MessagingFormatter.booleanToString(this.cooperatingAgentSkippedFlag);\r\n\r\n if (this.cooperatingAgent !== null) {\r\n jsonValues['cooperatingAgent'] = this.cooperatingAgent.jsonValues();\r\n jsonValues['cooperatingAgentListingFlag'] = MessagingFormatter.booleanToString(this.cooperatingAgentListingFlag);\r\n }\r\n\r\n\r\n // Telemarketing\r\n if (!!this.telemarketingAgent) {\r\n jsonValues['telemarketingAgent'] = this.telemarketingAgent.jsonValues();\r\n }\r\n\r\n\r\n\r\n // Escrow\r\n jsonValues['closingAgentSkippedFlag'] = MessagingFormatter.booleanToString(this.closingAgentSkippedFlag);\r\n\r\n if (this.closingAgent !== null) {\r\n jsonValues['closingAgent'] = this.closingAgent.jsonValues();\r\n }\r\n\r\n jsonValues['closingFileNumber'] = (this.closingFileNumber || '');\r\n jsonValues['estimatedClosingDate'] = MessagingFormatter.dateToString(this.estimatedClosingDate);\r\n jsonValues['actualClosingDate'] = MessagingFormatter.dateToString(this.actualClosingDate);\r\n\r\n if (this.invoiceRecipient) {\r\n jsonValues['invoiceRecipientID'] = MessagingFormatter.integerToString(this.invoiceRecipient.invoiceRecipientID);\r\n }\r\n\r\n if (this.invoiceRecipientCustomerID) {\r\n jsonValues['invoiceRecipientCustomerID'] = MessagingFormatter.integerToString(this.invoiceRecipientCustomerID);\r\n }\r\n\r\n\r\n // Default Homeowner\r\n if (this.defaultHomeownerCustomerID) {\r\n jsonValues['defaultHomeownerCustomerID'] = MessagingFormatter.integerToString(this.defaultHomeownerCustomerID);\r\n }\r\n\r\n\r\n // Home Buyers\r\n if (this.homeBuyers) {\r\n const customerJsonValues = [];\r\n\r\n this.homeBuyers.forEach((indexCustomer: Customer) => {\r\n customerJsonValues.push(indexCustomer.jsonValues());\r\n });\r\n\r\n jsonValues['homeBuyers'] = customerJsonValues;\r\n }\r\n\r\n\r\n // Home Sellers\r\n if (this.homeSellers !== null) {\r\n const customerJsonValues = [];\r\n\r\n this.homeSellers.forEach((indexCustomer: Customer) => {\r\n customerJsonValues.push(indexCustomer.jsonValues());\r\n });\r\n\r\n jsonValues['homeSellers'] = customerJsonValues;\r\n }\r\n\r\n\r\n // Payment\r\n jsonValues['payNowFlag'] = PhxSerializer.fromBoolean(this.payNowFlag);\r\n\r\n if (this.paymentPlan) {\r\n jsonValues['paymentPlan'] = this.paymentPlan.jsonValues();\r\n }\r\n\r\n if (!this.payNowFlag) {\r\n const recipientJsons = [];\r\n\r\n this.premiumInvoiceRecipients.forEach((indexRecipient: CustomerInvoiceRecipient) => {\r\n recipientJsons.push(indexRecipient.jsonValues());\r\n });\r\n\r\n jsonValues['premiumInvoiceRecipients'] = recipientJsons;\r\n\r\n } else {\r\n jsonValues['firstPaymentAmount'] = PhxSerializer.fromDouble(this.firstPaymentAmount);\r\n jsonValues['creditCardGUID'] = this.creditCardGUID;\r\n jsonValues['ccCardHolderName'] = this.ccCardHolderName;\r\n jsonValues['ccNumber'] = this.ccNumber;\r\n jsonValues['ccExpirationMonth'] = PhxSerializer.fromInteger(this.ccExpirationMonth);\r\n jsonValues['ccExpirationYear'] = PhxSerializer.fromInteger(this.ccExpirationYear);\r\n }\r\n\r\n if (this.ccPaymentResult) {\r\n jsonValues['ccPaymentResult'] = this.ccPaymentResult.jsonValues();\r\n }\r\n\r\n\r\n\r\n // Premium invoice\r\n if (this.premiumInvoice) {\r\n jsonValues['premiumInvoice'] = this.premiumInvoice.jsonValues();\r\n }\r\n\r\n\r\n // Claim JSON Values\r\n if (this.planClaimHistory) {\r\n const claimJsonValues = [];\r\n\r\n this.planClaimHistory.forEach((indexClaim: PlanClaimHistory) => {\r\n claimJsonValues.push(indexClaim.jsonValues());\r\n });\r\n\r\n jsonValues['planClaimHistory'] = claimJsonValues;\r\n }\r\n\r\n\r\n // Plan Cancels\r\n if (this.planCancels) {\r\n const cancelJsonValues = [];\r\n\r\n this.planCancels.forEach((indexCancel: PlanCancel) => {\r\n cancelJsonValues.push(indexCancel.jsonValues());\r\n });\r\n\r\n jsonValues['planCancels'] = cancelJsonValues;\r\n }\r\n\r\n\r\n // Mailing Address\r\n if (this.mailingAddress) {\r\n jsonValues['mailingAddress'] = this.mailingAddress.jsonValues();\r\n }\r\n\r\n\r\n // Additional Email Addresses\r\n if (this.additionalEmailAddresses) {\r\n jsonValues['additionalEmailAddresses'] = this.additionalEmailAddresses;\r\n }\r\n\r\n jsonValues['autoRenewFlag'] =\r\n this.autoRenewFlag === null || this.autoRenewFlag === undefined ? '' : MessagingFormatter.booleanToString(this.autoRenewFlag);\r\n\r\n jsonValues['directProcessFlag'] = MessagingFormatter.booleanToString(this.directProcessFlag);\r\n\r\n\r\n // Updates\r\n jsonValues['updates'] = this.updates;\r\n jsonValues['edits'] = this.edits;\r\n\r\n return jsonValues;\r\n }\r\n\r\n\r\n flagUpdate(tag: PlanOrderApplicationUpdates) {\r\n if (!this.hasUpdate(tag)) {\r\n this.updates.push(tag);\r\n }\r\n\r\n this.confirmationSentFlag = false;\r\n\r\n this.flagEdit(tag);\r\n }\r\n\r\n\r\n hasUpdate(tag: PlanOrderApplicationUpdates): boolean {\r\n let hasUpdate = false;\r\n\r\n this.updates.forEach((indexUpdate: PlanOrderApplicationUpdates) => {\r\n if (indexUpdate === tag) {\r\n hasUpdate = true;\r\n }\r\n });\r\n\r\n return hasUpdate;\r\n }\r\n\r\n\r\n clearUpdates() {\r\n this.updates = [];\r\n }\r\n\r\n\r\n\r\n flagEdit(tag: PlanOrderApplicationUpdates) {\r\n if (!this.hasEdit(tag)) {\r\n this.edits.push(tag);\r\n }\r\n }\r\n\r\n\r\n hasEdit(tag: PlanOrderApplicationUpdates): boolean {\r\n let hasEdit = false;\r\n\r\n this.edits.forEach((indexEdit: PlanOrderApplicationUpdates) => {\r\n if (indexEdit === tag) {\r\n hasEdit = true;\r\n }\r\n });\r\n\r\n return hasEdit;\r\n }\r\n\r\n\r\n clearEdits() {\r\n this.edits = [];\r\n }\r\n\r\n\r\n\r\n\r\n // returns the relationship for the given customer\r\n relationshipForCustomerID(customerID: number): Relationship {\r\n let relationship: Relationship = null;\r\n\r\n this.planDomainFactoryService.relationships.forEach((indexRelationship: Relationship) => {\r\n\r\n if (indexRelationship.initiatingAgentFlag && this.initiatingAgent) {\r\n if (customerID === this.initiatingAgent.customerID) {\r\n relationship = indexRelationship;\r\n }\r\n\r\n } else if (indexRelationship.cooperatingAgentFlag && this.cooperatingAgent) {\r\n if (customerID === this.cooperatingAgent.customerID) {\r\n relationship = indexRelationship;\r\n }\r\n\r\n } else if (indexRelationship.closingFlag && this.closingAgent) {\r\n if (customerID === this.closingAgent.customerID) {\r\n relationship = indexRelationship;\r\n }\r\n\r\n } else if (indexRelationship.telemarketingFlag && this.telemarketingAgent) {\r\n if (customerID === this.telemarketingAgent.customerID) {\r\n relationship = indexRelationship;\r\n }\r\n\r\n } else if (indexRelationship.ownerFlag && this.homeBuyers) {\r\n this.homeBuyers.forEach((indexCustomer: Customer) => {\r\n if (customerID === indexCustomer.customerID) {\r\n relationship = indexRelationship;\r\n }\r\n });\r\n\r\n } else if (indexRelationship.sellerFlag && this.homeSellers) {\r\n this.homeSellers.forEach((indexCustomer: Customer) => {\r\n if (customerID === indexCustomer.customerID) {\r\n relationship = indexRelationship;\r\n }\r\n });\r\n }\r\n\r\n });\r\n\r\n return relationship;\r\n }\r\n\r\n\r\n\r\n // returns the premium for the coverage\r\n totalPremiumForCoverage(coverage: ProductCoverage): number {\r\n const units = this.optionUnitsForCoverage(coverage);\r\n\r\n let premium: number = null;\r\n\r\n // if units are specified\r\n if (units !== null) {\r\n // look for the corresponding PlanOption\r\n const planOption = ArrayUtility.arrayFind(this.planOptions,\r\n (testOption: PlanOption): boolean => {\r\n return (testOption.coverageID === coverage.coverageID);\r\n });\r\n\r\n let coveragePremium = (planOption ? planOption.optionAmount : null);\r\n\r\n if (coveragePremium === null) {\r\n coveragePremium = coverage.premium;\r\n }\r\n\r\n // calculate premium\r\n premium = coveragePremium * units;\r\n }\r\n\r\n return premium;\r\n }\r\n\r\n\r\n formattedTotalPremiumForCoverage(coverage: ProductCoverage): string {\r\n let text: string = null;\r\n\r\n const premium = this.totalPremiumForCoverage(coverage);\r\n\r\n if (premium !== null) {\r\n text = StringUtility.formatDollarNoDecimal(premium);\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n // returns the option units for the specified coverage\r\n optionUnitsForCoverage(coverage: ProductCoverage): number {\r\n let units: number = null;\r\n\r\n // look for the planOption value\r\n (this.planOptions || []).forEach((indexOption: PlanOption) => {\r\n if (indexOption.coverageID === coverage.coverageID) {\r\n units = indexOption.optionUnits;\r\n }\r\n });\r\n\r\n if (units === null) {\r\n units = 1;\r\n }\r\n\r\n return units;\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n\r\nexport enum PlanOrderApplicationUpdates {\r\n transactionType = 5,\r\n propertyAddress = 10,\r\n propertyZipCode = 15,\r\n propertyType = 20,\r\n role = 25,\r\n product = 30,\r\n optionalCoverages = 40,\r\n initiatingAgent = 50,\r\n cooperatingAgent = 60,\r\n cooperatingAgentListingFlag = 65,\r\n closingAgent = 70,\r\n closingInfo = 80,\r\n invoiceRecipient = 90,\r\n homeBuyer = 100,\r\n homeSeller = 110,\r\n mailingAddress = 120,\r\n telemarketing = 130,\r\n payment = 140\r\n}\r\n\r\n\r\n\r\ninterface IPlanOrderApplication {\r\n planID: string;\r\n guid: string;\r\n}\r\n\r\n\r\nexport interface IPlanOrderPersistedApplication {\r\n\r\n // Current Step\r\n currentStep: string;\r\n\r\n // Confirmation sent\r\n confirmationSentFlag: string;\r\n\r\n // Demo Mode\r\n demoModeFlag: string;\r\n demoModeSubmittedFlag: string;\r\n\r\n // save errors\r\n saveErrors: any[];\r\n\r\n // all steps completed\r\n allStepsCompletedFlag: string;\r\n\r\n // Plan #\r\n planID: string;\r\n planGUID: string;\r\n\r\n // Channel\r\n channelCode: string;\r\n\r\n // Plan Received Date\r\n planReceivedDate: string;\r\n planCoverageStarts: string;\r\n planCoverageEnds: string;\r\n\r\n // Plan Status\r\n planStatus: string;\r\n\r\n // Transaction Type\r\n transactionTypeID: string;\r\n\r\n // Property Type\r\n newConstructionFlagID: string;\r\n\r\n // Role\r\n roleID: string;\r\n\r\n // Initiating Agent\r\n initiatingAgentSkippedFlag: string;\r\n initiatingAgentOffice: any;\r\n initiatingAgent: any;\r\n initiatingAgentListingFlag: string;\r\n\r\n // Product\r\n product: string;\r\n\r\n // Optional Coverage\r\n planOptions: any[];\r\n productCoverages: any[];\r\n selectedDisplayCodes: any[];\r\n\r\n // Property Address\r\n property: any;\r\n propertyRegionID: string;\r\n\r\n // Cooperating Agent\r\n cooperatingAgentSkippedFlag: string;\r\n cooperatingAgentOffice: any;\r\n cooperatingAgent: any;\r\n cooperatingAgentListingFlag: string;\r\n\r\n // Telemarketing Agent\r\n telemarketingAgentOffice: any;\r\n telemarketingAgent: any;\r\n\r\n // Escrow\r\n closingAgentSkippedFlag: string;\r\n closingOffice: any;\r\n closingAgent: any;\r\n\r\n closingFileNumber: string;\r\n estimatedClosingDate: string;\r\n actualClosingDate: string;\r\n\r\n invoiceRecipientID: string;\r\n invoiceRecipientCustomerID: string;\r\n\r\n defaultHomeownerCustomerID: string;\r\n\r\n // Home Buyer\r\n homeBuyers: any[];\r\n\r\n // Home Seller\r\n homeSellers: any[];\r\n\r\n // Payment\r\n payNowFlag: any;\r\n\r\n paymentPlan: any;\r\n firstPaymentAmount: any;\r\n creditCardGUID: any;\r\n ccCardHolderName: any;\r\n ccNumber: any;\r\n ccExpirationMonth: any;\r\n ccExpirationYear: any;\r\n\r\n ccPaymentResult: any;\r\n\r\n // Premium Invoice\r\n premiumInvoice: any;\r\n premiumInvoiceRecipients: any;\r\n\r\n\r\n // Claim History\r\n planClaimHistory: any[];\r\n\r\n // Cancellation\r\n planCancels: any[];\r\n\r\n // Mailing Address\r\n mailingAddress: any;\r\n\r\n // Additional Email Addresses\r\n additionalEmailAddresses: string[];\r\n\r\n // Plan Orderer Role\r\n planOrdererRole: any;\r\n\r\n // Updates\r\n updates: number[];\r\n edits: number[];\r\n\r\n autoRenewFlag: boolean;\r\n directProcessFlag: boolean;\r\n}\r\n\r\n\r\n\r\nexport interface IPlanOrderFetchedApplication {\r\n planID: string;\r\n guid: string;\r\n propertyID: string;\r\n productID: string;\r\n channelCode: string;\r\n paymentPlan: string;\r\n planReceivedDate: string;\r\n planCoverageStarts: string;\r\n planCoverageEnds: string;\r\n status: string;\r\n transactionTypeID: string;\r\n closingFileNumber: string;\r\n estimatedClosingDate: string;\r\n actualClosingDate: string;\r\n initiatingAgentCustomerID: string;\r\n initiatingAgentCustomerGUID: string;\r\n initiatingAgentListingFlag: string;\r\n cooperatingAgentCustomerID: string;\r\n cooperatingAgentCustomerGUID: string;\r\n cooperatingAgentListingFlag: string;\r\n closingAgentCustomerID: string;\r\n closingAgentCustomerGUID: string;\r\n telemarketingAgentCustomerID: string;\r\n telemarketingAgentCustomerGUID: string;\r\n defaultHomeownerCustomerID: string;\r\n homeBuyers: any[];\r\n homeSellers: any[];\r\n coverages: any[];\r\n premiumInvoice: any;\r\n invoiceRecipientID: string;\r\n invoiceRecipientCustomerID: string;\r\n planCancels: any[];\r\n mailingAddress: any;\r\n planOrdererRole: any;\r\n autoRenewFlag: any;\r\n}\r\n\r\n\r\nexport interface IPlanOrderFetchedCustomer {\r\n customerID: string;\r\n customerGUID: string;\r\n}\r\n\r\n\r\n","\r\nexport class PlanOrderProgress {\r\n\r\n progressPercent = 0;\r\n progressMessage = null;\r\n successFlag = true;\r\n\r\n planID: number = null;\r\n planGUID: string = null;\r\n\r\n get completeFlag(): boolean {\r\n return (this.progressPercent === 100);\r\n }\r\n\r\n get progressPercentText(): string {\r\n return (String(this.progressPercent) + '%');\r\n }\r\n\r\n\r\n constructor(progressPercent: number, progressMessage: string, successFlag: boolean) {\r\n this.progressPercent = progressPercent;\r\n this.progressMessage = progressMessage;\r\n this.successFlag = successFlag;\r\n }\r\n\r\n}\r\n","\r\n\r\nexport class PlanOrderProgressBarStep {\r\n code: string;\r\n name: string;\r\n route: string;\r\n progressBarFlag = true;\r\n altStepCode: string = null;\r\n enabledFlag = true;\r\n\r\n constructor(code: string,\r\n name: string,\r\n route: string,\r\n progressBarFlag?: boolean,\r\n altStepCode?: string,\r\n enabledFlag?: boolean) {\r\n\r\n this.code = code;\r\n this.name = name;\r\n this.route = route;\r\n\r\n if (progressBarFlag === false) {\r\n this.progressBarFlag = progressBarFlag;\r\n }\r\n\r\n if (altStepCode) {\r\n this.altStepCode = altStepCode;\r\n }\r\n\r\n if (enabledFlag === false) {\r\n this.enabledFlag = enabledFlag;\r\n }\r\n }\r\n}\r\n","\r\nexport * from './plan-order-root.resolver';\r\nexport * from './plan-order.service';\r\nexport * from './plan-order-lookup.service';\r\nexport * from './plan-order-lookup-value.service';\r\nexport * from './plan-order-update.service';\r\n\r\n","\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Event, NavigationStart} from '@angular/router';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderAuthService} from './plan-order-auth.service';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class PlanOrderAuthGuard implements CanActivate {\r\n\r\n\r\n\r\n constructor(private router: Router,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private systemService: PhxSystemService\r\n ) { }\r\n\r\n\r\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n\r\n const urlx = this.router.routerState.snapshot.url;\r\n const urlSegs = urlx.split('/');\r\n const lastSegment = urlSegs.length > 0 ? urlSegs[urlSegs.length - 1] : null;\r\n const navStartExists = true && !!lastSegment;\r\n\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n let nextUrl = state.url;\r\n\r\n this.systemService.loadAppSettings().subscribe((appSettingsLoadedFlag: boolean) => {\r\n // if the user is not logged in\r\n if (!this.planOrderAuthService.loggedIn()) {\r\n // trigger the modal login\r\n this.planOrderAuthService.triggerModalLoginEventEmitter.emit(true);\r\n\r\n // register for login completion\r\n this.planOrderAuthService.onLoginCompletion.subscribe((successFlag: boolean) => {\r\n if (!navStartExists) {\r\n nextUrl = '/logout';\r\n }\r\n\r\n this.router.navigate([nextUrl]);\r\n });\r\n\r\n subscriber.next(false);\r\n subscriber.complete();\r\n\r\n // if the user is logged in\r\n } else {\r\n if (!navStartExists) {\r\n nextUrl = '/logout';\r\n this.router.navigate([nextUrl]);\r\n }\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n}\r\n\r\n","import {EventEmitter, Injectable, Input} from '@angular/core';\r\nimport {ArrayUtility, ObservableUtility, UserAuthorities} from '@orhp/phx-common-ui-module';\r\nimport {Customer, CustomerLookupParams, CustomerLookupService, Employer, JobRole} from '@orhp/phx-customer-ui-module';\r\nimport {Observable, Subscription} from 'rxjs/Rx';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {\r\n ProductOffice,\r\n ProductOfficeToolbox\r\n} from '@orhp/phx-product-ui-module';\r\nimport {PlanOrderService} from './plan-order.service';\r\n\r\n@Injectable()\r\nexport class PlanOrderAuthService {\r\n\r\n /**\r\n * Returns the current GuestGUID\r\n */\r\n get guestGUID(): string {\r\n return this.guestGuidGetter();\r\n }\r\n\r\n\r\n /**\r\n * Returns the current Customer\r\n */\r\n get customer(): Customer {\r\n return this.customerGetter();\r\n }\r\n\r\n\r\n /**\r\n * Returns the current Employer\r\n */\r\n get employer(): Employer {\r\n return this.employerGetter();\r\n }\r\n\r\n\r\n /**\r\n * Returns the current job role\r\n */\r\n get jobRole(): JobRole {\r\n return this.jobRoleGetter();\r\n }\r\n\r\n\r\n /**\r\n * Returns the current product/office\r\n */\r\n get productOffice(): ProductOffice {\r\n return this.productOfficeGetter();\r\n }\r\n\r\n\r\n /**\r\n * Returns the user authorities\r\n */\r\n get userAuthorities(): UserAuthorities {\r\n return this.userAuthoritiesGetter();\r\n }\r\n\r\n\r\n /**\r\n * AE Territories\r\n */\r\n get aeTerritories(): string[] {\r\n return this.aeTerritoriesGetter();\r\n }\r\n\r\n\r\n /**\r\n * Returns the modal login trigger event emitter\r\n */\r\n get triggerModalLoginEventEmitter(): EventEmitter {\r\n return this.triggerModalLoginEventEmitterGetter();\r\n\r\n }\r\n\r\n\r\n /**\r\n * Returns the login cancel event emitter\r\n */\r\n get loginCancelEventEmitter(): EventEmitter {\r\n return this.loginCancelEventEmitterGetter();\r\n }\r\n\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n return (!!this.productOffice ? this.productOffice.toolbox : null);\r\n }\r\n\r\n\r\n get appsPhoneNumber(): string {\r\n let phone = '800.445.6999';\r\n\r\n const productOfficePhone = (!!this.productOffice ? this.productOffice.appsPhoneNumber : null) || '';\r\n\r\n if (productOfficePhone !== '') {\r\n phone = productOfficePhone;\r\n }\r\n\r\n return phone;\r\n }\r\n\r\n\r\n\r\n\r\n onLoginCompletion = new EventEmitter();\r\n\r\n\r\n\r\n onLogout = new EventEmitter();\r\n\r\n\r\n loggedInGetter: () => boolean;\r\n\r\n\r\n\r\n constructor() {}\r\n\r\n\r\n\r\n\r\n /**\r\n * Getter to provide the GuestGUID\r\n */\r\n guestGuidGetter: () => string;\r\n\r\n\r\n /**\r\n * Getter to provide the Customer\r\n */\r\n customerGetter: () => Customer;\r\n\r\n\r\n /**\r\n * Getter to provide the Employer\r\n */\r\n employerGetter: () => Employer;\r\n\r\n\r\n /**\r\n * Getter to provide the JobRole\r\n */\r\n jobRoleGetter: () => JobRole;\r\n\r\n\r\n /**\r\n * Getter to provide the ProductOffice\r\n */\r\n productOfficeGetter: () => ProductOffice;\r\n\r\n\r\n /**\r\n * Getter to provide the User authorities\r\n */\r\n userAuthoritiesGetter: () => UserAuthorities;\r\n\r\n\r\n /**\r\n * Getter to provide AE territories\r\n */\r\n aeTerritoriesGetter: () => string[];\r\n\r\n\r\n\r\n /**\r\n * Getter to provide modal login event emitter trigger\r\n */\r\n triggerModalLoginEventEmitterGetter: () => EventEmitter;\r\n\r\n\r\n /**\r\n * Getter to provide cancel event emitter trigger\r\n */\r\n loginCancelEventEmitterGetter: () => EventEmitter;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // we're logged in if there's an auth with a customer\r\n loggedIn(): boolean {\r\n return (this.loggedInGetter ? this.loggedInGetter() : false);\r\n }\r\n\r\n\r\n\r\n isOrhpUser(): boolean {\r\n let orhpUserFlag = false;\r\n\r\n if (this.userAuthorities && this.userAuthorities.hasAuthority('ROLE_ORHP')) {\r\n orhpUserFlag = true;\r\n }\r\n\r\n return orhpUserFlag;\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n","\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderAuthService} from './plan-order-auth.service';\r\nimport {PlanOrderService} from './plan-order.service';\r\nimport {CustomUrlParser} from '../../../_src/custom-url-parser';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class PlanOrderCustomUrlGuard implements CanActivate {\r\n\r\n\r\n\r\n constructor(private router: Router,\r\n private planOrderService: PlanOrderService,\r\n private systemService: PhxSystemService\r\n ) { }\r\n\r\n\r\n async canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const currentUrl = CustomUrlParser.getCustomUrl() || '';\r\n const appUrl = this.planOrderService.planOrderCustomOrderingUrl || '';\r\n\r\n // if the URLs are different, clear and reset\r\n if (currentUrl !== appUrl) {\r\n this.planOrderService.clear();\r\n this.planOrderService.planOrderCustomOrderingUrl = currentUrl;\r\n this.router.navigate(['/plan-order'], {});\r\n\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {PlanOrderLookupValueService} from './plan-order-lookup-value.service';\r\nimport {\r\n IPlanOrderFetchedApplication, IPlanOrderFetchedCustomer, IPlanOrderPersistedApplication,\r\n PlanOrderApplication\r\n} from '../_models/plan-order-application';\r\nimport {PropertyDomainFactoryService} from '@orhp/phx-property-ui-module';\r\nimport {CustomerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {ActivityResult, DateUtility, MessagingFormatter, PhxSerializer} from '@orhp/phx-common-ui-module';\r\nimport {ProductDomainFactoryService} from '@orhp/phx-product-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupParams} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerLookupParams} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {Product} from '@orhp/phx-product-ui-module';\r\nimport {ProductLookupService} from '@orhp/phx-product-ui-module';\r\nimport {ProductCoverage} from '@orhp/phx-product-ui-module';\r\nimport {PropertyLookupParams} from '@orhp/phx-property-ui-module';\r\nimport {PropertyLookupService} from '@orhp/phx-property-ui-module';\r\nimport {Property} from '@orhp/phx-property-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from '../../office-agent-lookup/_services/persistence.service';\r\nimport {PlanLookupValueService, TransactionType} from '@orhp/phx-plan-ui-module';\r\nimport {\r\n AccountingDomainFactoryService, AccountingLookupValueService, CreditCard, CreditCardService, ICustomerInvoiceRecipient,\r\n IPlanInvoicePaymentResult,\r\n PaymentPlanService,\r\n PlanInvoicePaymentResult\r\n} from '@orhp/phx-accounting-ui-module';\r\nimport {PlanDomainFactoryService} from '@orhp/phx-plan-ui-module';\r\nimport {PlanInvoiceRecipient} from '@orhp/phx-plan-ui-module';\r\nimport {PlanInvoiceRecipientRelationship} from '@orhp/phx-plan-ui-module';\r\nimport {PlanClaimHistoryLookupService} from '@orhp/phx-claims-ui-module';\r\nimport {ClaimDomainFactoryService} from '@orhp/phx-claims-ui-module';\r\nimport {PlanClaimHistory} from '@orhp/phx-claims-ui-module';\r\nimport {PhxLoginService} from '@orhp/phx-common-ui-module';\r\nimport {PhxDateService} from '@orhp/phx-common-ui-module';\r\nimport {ActivityResultError, UsefulMap} from '@orhp/phx-common-ui-module';\r\nimport {Address} from '@orhp/phx-common-ui-module';\r\nimport {Region} from '@orhp/phx-geography-ui-module';\r\nimport {ArrayUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanOption} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderAuthService} from './plan-order-auth.service';\r\n\r\n\r\n@Injectable()\r\n\r\n\r\nexport class PlanOrderDomainFactoryService {\r\n\r\n\r\n constructor(private planOrderLookupValueService: PlanOrderLookupValueService,\r\n private propertyDomainFactoryService: PropertyDomainFactoryService,\r\n private productDomainFactoryService: ProductDomainFactoryService,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private employerDomainFactoryService: EmployerDomainFactoryService,\r\n private claimDomainFactoryService: ClaimDomainFactoryService,\r\n private planDomainFactoryService: PlanDomainFactoryService,\r\n private accountingDomainFactoryService: AccountingDomainFactoryService,\r\n private accountingLookupValueService: AccountingLookupValueService,\r\n private paymentPlanService: PaymentPlanService,\r\n private planClaimHistoryLookupService: PlanClaimHistoryLookupService,\r\n private planLookupValueService: PlanLookupValueService,\r\n private customerLookupService: CustomerLookupService,\r\n private employerLookupService: EmployerLookupService,\r\n private productLookupService: ProductLookupService,\r\n private propertyLookupService: PropertyLookupService,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private creditCardService: CreditCardService,\r\n private loginService: PhxLoginService,\r\n private dateService: PhxDateService\r\n ) {\r\n }\r\n\r\n\r\n // creates a new application\r\n newApplication(): PlanOrderApplication {\r\n const application = new PlanOrderApplication(\r\n this.propertyDomainFactoryService,\r\n this.customerDomainFactoryService,\r\n this.employerDomainFactoryService,\r\n this.planDomainFactoryService,\r\n this.planLookupValueService,\r\n this.accountingDomainFactoryService,\r\n this.dateService\r\n );\r\n\r\n // set the logged-in customer on the application\r\n application.loggedInCustomer = this.planOrderAuthService.customer;\r\n application.loggedInJobRole = this.planOrderAuthService.jobRole;\r\n\r\n\r\n\r\n // if the user attempts login\r\n this.planOrderAuthService.onLoginCompletion.subscribe((successFlag: boolean) => {\r\n if (successFlag) {\r\n application.loggedInCustomer = this.planOrderAuthService.customer;\r\n application.loggedInJobRole = this.planOrderAuthService.jobRole;\r\n\r\n } else {\r\n application.loggedInCustomer = null;\r\n application.loggedInJobRole = null;\r\n }\r\n });\r\n\r\n // when the user logs out\r\n this.planOrderAuthService.onLogout.subscribe((resultFlag: boolean) => {\r\n application.loggedInCustomer = null;\r\n application.loggedInJobRole = null;\r\n });\r\n\r\n return application;\r\n }\r\n\r\n\r\n\r\n // creates a new application from the persisted data\r\n newPersistedApplication(jsonObject?: any): PlanOrderApplication {\r\n const application = this.newApplication();\r\n\r\n this.populatePersistedApplication(application, jsonObject);\r\n\r\n return application;\r\n }\r\n\r\n\r\n // creates a new fetched application\r\n newFetchedApplication(jsonObject?: any): Observable {\r\n const application = this.newApplication();\r\n\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n\r\n this.populateFetchedApplication(application, jsonObject).subscribe((resultFlag: boolean) => {\r\n if (resultFlag) {\r\n subscriber.next(application);\r\n\r\n } else {\r\n subscriber.next(null);\r\n }\r\n\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n // populates an application from client-side storage\r\n populatePersistedApplication(application: PlanOrderApplication, jsonObject: any) {\r\n if (jsonObject) {\r\n const jsonValues = jsonObject;\r\n\r\n application.currentStep = jsonValues.currentStep;\r\n\r\n application.demoModeFlag = PhxSerializer.toBoolean(jsonValues.demoModeFlag) || false;\r\n application.demoModeSubmittedFlag = PhxSerializer.toBoolean(jsonValues.demoModeSubmittedFlag) || false;\r\n\r\n application.allStepsCompletedFlag = PhxSerializer.toBoolean(jsonValues.allStepsCompletedFlag) || false;\r\n\r\n // last error\r\n if (jsonValues.saveErrors) {\r\n const saveErrors = [];\r\n\r\n jsonValues.saveErrors.forEach((indexJson: any) => {\r\n const indexError = new ActivityResultError(indexJson);\r\n saveErrors.push(indexError);\r\n });\r\n\r\n application.saveErrors = saveErrors;\r\n\r\n } else {\r\n application.saveErrors = null;\r\n }\r\n\r\n application.planID = PhxSerializer.toInteger(jsonValues.planID);\r\n application.planGUID = jsonValues.planGUID;\r\n\r\n application.channelCode = jsonValues.channelCode;\r\n\r\n application.planReceivedDate = PhxSerializer.toDate(jsonValues.planReceivedDate);\r\n application.planCoverageStarts = PhxSerializer.toDate(jsonValues.planCoverageStarts);\r\n application.planCoverageEnds = PhxSerializer.toDate(jsonValues.planCoverageEnds);\r\n\r\n // plan status\r\n const planStatusCode = PhxSerializer.toInteger(jsonValues.planStatus);\r\n application.planStatus = this.planLookupValueService.planStatusByCode(planStatusCode);\r\n\r\n\r\n // Transaction Type\r\n const transactionTypeID = PhxSerializer.toInteger(jsonValues.transactionTypeID);\r\n application.transactionType = this.planLookupValueService.transactionTypeByID(transactionTypeID);\r\n\r\n\r\n // Property Type\r\n const newConstructionFlagID = PhxSerializer.toInteger(jsonValues.newConstructionFlagID);\r\n application.newConstructionFlag = this.planLookupValueService.newConstructionFlagByID(newConstructionFlagID);\r\n\r\n\r\n // Role\r\n const roleID = PhxSerializer.toInteger(jsonValues.roleID);\r\n application.role = this.planLookupValueService.transactionRoleByID(roleID);\r\n\r\n\r\n // Initiating Agent\r\n application.initiatingAgentSkippedFlag = PhxSerializer.toBoolean(jsonValues.initiatingAgentSkippedFlag);\r\n\r\n if (jsonValues.initiatingAgent) {\r\n application.initiatingAgent = this.customerDomainFactoryService.newCustomer(jsonValues.initiatingAgent);\r\n\r\n application.initiatingAgentListingFlag = PhxSerializer.toBoolean(jsonValues.initiatingAgentListingFlag);\r\n\r\n } else {\r\n application.initiatingAgent = null;\r\n }\r\n\r\n\r\n // Property Region\r\n if (jsonValues.propertyRegionID) {\r\n application.propertyRegionID = PhxSerializer.toInteger(jsonValues.propertyRegionID);\r\n\r\n } else {\r\n application.propertyRegionID = null;\r\n }\r\n\r\n\r\n\r\n // Product\r\n if (jsonValues.product) {\r\n application.product = this.productDomainFactoryService.newProduct(jsonValues.product);\r\n\r\n } else {\r\n application.product = null;\r\n }\r\n\r\n // Orderer Role\r\n if (jsonValues.planOrdererRole) {\r\n\r\n application.planOrdererRole = this.planDomainFactoryService.newPlanOrdererRole(jsonValues.planOrdererRole);\r\n\r\n } else {\r\n application.planOrdererRole = null;\r\n }\r\n\r\n\r\n // Optional Coverage\r\n if (jsonValues.planOptions) {\r\n const planOptions = [];\r\n\r\n jsonValues.planOptions.forEach((indexJsonObject: any) => {\r\n const indexOption = this.planDomainFactoryService.newPlanOption(indexJsonObject);\r\n planOptions.push(indexOption);\r\n });\r\n\r\n application.planOptions = planOptions;\r\n\r\n } else {\r\n application.planOptions = null;\r\n }\r\n\r\n\r\n if (jsonValues.productCoverages) {\r\n const productCoverages = [];\r\n\r\n jsonValues.productCoverages.forEach((indexJsonObject: any) => {\r\n const indexCoverage = this.productDomainFactoryService.newProductCoverage(indexJsonObject);\r\n productCoverages.push(indexCoverage);\r\n });\r\n\r\n application.productCoverages = productCoverages;\r\n\r\n } else {\r\n application.productCoverages = null;\r\n }\r\n\r\n if (jsonValues.selectedDisplayCodes) {\r\n const selectedDisplayCodes = [];\r\n\r\n jsonValues.selectedDisplayCodes.forEach((indexDisplayCode: any) => {\r\n selectedDisplayCodes.push(indexDisplayCode);\r\n });\r\n\r\n application.selectedDisplayCodes = selectedDisplayCodes;\r\n }\r\n\r\n\r\n\r\n // Property Address\r\n if (jsonValues.property) {\r\n application.property = this.propertyDomainFactoryService.newProperty(jsonValues.property);\r\n\r\n } else {\r\n application.property = null;\r\n }\r\n\r\n\r\n // Cooperating Agent\r\n application.cooperatingAgentSkippedFlag = PhxSerializer.toBoolean(jsonValues.cooperatingAgentSkippedFlag);\r\n\r\n if (jsonValues.cooperatingAgent) {\r\n application.cooperatingAgent = this.customerDomainFactoryService.newCustomer(jsonValues.cooperatingAgent);\r\n\r\n application.cooperatingAgentListingFlag = PhxSerializer.toBoolean(jsonValues.cooperatingAgentListingFlag);\r\n\r\n } else {\r\n application.cooperatingAgent = null;\r\n }\r\n\r\n\r\n\r\n\r\n // Telemarketing Agent\r\n if (jsonValues.telemarketingAgent) {\r\n application.telemarketingAgent = this.customerDomainFactoryService.newCustomer(jsonValues.telemarketingAgent);\r\n\r\n } else {\r\n application.telemarketingAgent = null;\r\n }\r\n\r\n\r\n\r\n\r\n // Escrow\r\n application.closingAgentSkippedFlag = PhxSerializer.toBoolean(jsonValues.closingAgentSkippedFlag);\r\n\r\n if (jsonValues.closingAgent) {\r\n application.closingAgent = this.customerDomainFactoryService.newCustomer(jsonValues.closingAgent);\r\n\r\n } else {\r\n application.closingAgent = null;\r\n }\r\n\r\n application.closingFileNumber = jsonValues.closingFileNumber;\r\n application.estimatedClosingDate = PhxSerializer.toDate(jsonValues.estimatedClosingDate);\r\n application.actualClosingDate = PhxSerializer.toDate(jsonValues.actualClosingDate);\r\n\r\n\r\n // Invoice Recipient\r\n const invoiceRecipientID = PhxSerializer.toInteger(jsonValues.invoiceRecipientID);\r\n\r\n if (invoiceRecipientID) {\r\n application.invoiceRecipient = this.planLookupValueService.invoiceRecipientByID(invoiceRecipientID);\r\n\r\n } else {\r\n application.invoiceRecipient = null;\r\n }\r\n\r\n const invoiceRecipientCustomerID = PhxSerializer.toInteger(jsonValues.invoiceRecipientCustomerID);\r\n\r\n if (invoiceRecipientCustomerID) {\r\n application.invoiceRecipientCustomerID = invoiceRecipientCustomerID;\r\n\r\n } else {\r\n application.invoiceRecipientCustomerID = null;\r\n }\r\n\r\n\r\n // Default Homeowner\r\n const defaultHomeownerCustomerID = PhxSerializer.toInteger(jsonValues.defaultHomeownerCustomerID);\r\n\r\n application.defaultHomeownerCustomerID = defaultHomeownerCustomerID;\r\n\r\n\r\n\r\n // Home Buyers\r\n const homeBuyerJsonValues = (jsonValues.homeBuyers || []);\r\n const homeBuyers = [];\r\n\r\n homeBuyerJsonValues.forEach((indexJsonValues: any) => {\r\n const indexCustomer = this.customerDomainFactoryService.newCustomer(indexJsonValues);\r\n homeBuyers.push(indexCustomer);\r\n });\r\n\r\n application.homeBuyers = homeBuyers;\r\n\r\n\r\n // Home Sellers\r\n const homeSellerJsonValues = (jsonValues.homeSellers || []);\r\n const homeSellers = [];\r\n\r\n homeSellerJsonValues.forEach((indexJsonValues: any) => {\r\n const indexCustomer = this.customerDomainFactoryService.newCustomer(indexJsonValues);\r\n homeSellers.push(indexCustomer);\r\n });\r\n\r\n application.homeSellers = homeSellers;\r\n\r\n\r\n\r\n // Payment\r\n application.payNowFlag = PhxSerializer.toBoolean(jsonValues.payNowFlag);\r\n\r\n if (!!jsonValues.paymentPlan) {\r\n application.paymentPlan = this.paymentPlanService.newPaymentPlan(jsonValues.paymentPlan);\r\n }\r\n\r\n application.firstPaymentAmount = PhxSerializer.toDouble(jsonValues.firstPaymentAmount);\r\n application.creditCardGUID = jsonValues.creditCardGUID;\r\n application.ccCardHolderName = jsonValues.ccCardHolderName;\r\n application.ccNumber = jsonValues.ccNumber;\r\n application.ccExpirationMonth = PhxSerializer.toInteger(jsonValues.ccExpirationMonth);\r\n application.ccExpirationYear = PhxSerializer.toInteger(jsonValues.ccExpirationYear);\r\n\r\n if (jsonValues.ccPaymentResult) {\r\n const jsonPaymentResult = new ActivityResult(jsonValues.ccPaymentResult);\r\n\r\n const ccPaymentResult = new ActivityResult();\r\n ccPaymentResult.errors = jsonPaymentResult.errors;\r\n\r\n if (jsonPaymentResult.object) {\r\n ccPaymentResult.object = new PlanInvoicePaymentResult(jsonPaymentResult.object);\r\n }\r\n\r\n application.ccPaymentResult = ccPaymentResult;\r\n }\r\n\r\n // Premium Invoice Recipients\r\n if (jsonValues.premiumInvoiceRecipients) {\r\n const recipients = [];\r\n const recipientJsons = (jsonValues.premiumInvoiceRecipients as ICustomerInvoiceRecipient[]);\r\n\r\n recipientJsons.forEach((indexJson: ICustomerInvoiceRecipient) => {\r\n recipients.push(this.accountingDomainFactoryService.newCustomerInvoiceRecipient(indexJson));\r\n });\r\n\r\n application.premiumInvoiceRecipients = recipients;\r\n\r\n } else {\r\n application.premiumInvoiceRecipients = null;\r\n }\r\n\r\n\r\n // Premium Invoice\r\n if (jsonValues.premiumInvoice) {\r\n application.premiumInvoice = this.accountingDomainFactoryService.newCustomerInvoice(jsonValues.premiumInvoice);\r\n\r\n } else {\r\n application.premiumInvoice = null;\r\n }\r\n\r\n\r\n\r\n\r\n // Claim History\r\n if (jsonValues.planClaimHistory) {\r\n const claims = [];\r\n\r\n jsonValues.planClaimHistory.forEach((indexClaimJsonObject: any) => {\r\n const claim = this.claimDomainFactoryService.newPlanClaimHistory(indexClaimJsonObject);\r\n claims.push(claim);\r\n });\r\n\r\n application.planClaimHistory = claims;\r\n }\r\n\r\n\r\n // Cancels\r\n if (jsonValues.planCancels) {\r\n const cancels = [];\r\n\r\n jsonValues.planCancels.forEach((indexCancelJsonObject: any) => {\r\n const cancel = this.planDomainFactoryService.newPlanCancel(indexCancelJsonObject);\r\n cancels.push(cancel);\r\n });\r\n\r\n application.planCancels = cancels;\r\n }\r\n\r\n\r\n // Mailing Address\r\n if (jsonValues.mailingAddress) {\r\n application.mailingAddress = new Address(jsonValues.mailingAddress);\r\n }\r\n\r\n\r\n application.autoRenewFlag = jsonValues.autoRenewFlag;\r\n application.directProcessFlag = jsonValues.directProcessFlag;\r\n\r\n\r\n // Updates\r\n application.updates = jsonValues.updates || [];\r\n application.edits = jsonValues.edits || [];\r\n\r\n // was the confirmation sent? make sure this is last, because the updates above will reset it\r\n application.confirmationSentFlag = PhxSerializer.toBoolean(jsonValues.confirmationSentFlag);\r\n }\r\n }\r\n\r\n\r\n\r\n // populates an application from a fetched application\r\n populateFetchedApplication(application: PlanOrderApplication, jsonObject: any): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n if (jsonObject) {\r\n const jsonValues = jsonObject;\r\n\r\n if (jsonValues.planID) {\r\n const transactionTypeID = PhxSerializer.toInteger(jsonValues.transactionTypeID);\r\n application.transactionType = this.planLookupValueService.transactionTypeByID(transactionTypeID);\r\n\r\n application.planID = PhxSerializer.toInteger(jsonValues.planID);\r\n application.planGUID = (jsonValues.guid || '');\r\n\r\n application.channelCode = jsonValues.channelCode;\r\n\r\n application.planReceivedDate = PhxSerializer.toDate(jsonValues.planReceivedDate);\r\n application.planCoverageStarts = PhxSerializer.toDate(jsonValues.planCoverageStarts);\r\n application.planCoverageEnds = PhxSerializer.toDate(jsonValues.planCoverageEnds);\r\n\r\n application.paymentPlan = this.accountingLookupValueService.paymentPlanByCode(jsonValues.paymentPlan);\r\n\r\n if (application.paymentPlan.creditCardFlag) {\r\n application.payNowFlag = true;\r\n }\r\n\r\n // Cancels\r\n if (jsonValues.planCancels) {\r\n const cancels = [];\r\n\r\n jsonValues.planCancels.forEach((indexCancelJsonObject: any) => {\r\n const cancel = this.planDomainFactoryService.newPlanCancel(indexCancelJsonObject);\r\n\r\n // if the cancellation was not reinstated\r\n if (!cancel.reinstateDate) {\r\n cancels.push(cancel);\r\n }\r\n });\r\n\r\n application.planCancels = cancels;\r\n }\r\n\r\n // mailing address\r\n if (jsonValues.mailingAddress) {\r\n const address = new Address(jsonValues.mailingAddress);\r\n application.mailingAddress = address;\r\n }\r\n\r\n\r\n // status\r\n const planStatusCode = PhxSerializer.toInteger(jsonValues.status);\r\n application.planStatus = this.planLookupValueService.planStatusByCode(planStatusCode);\r\n\r\n\r\n // Orderer Role\r\n if (jsonValues.planOrdererRole) {\r\n\r\n application.planOrdererRole = this.planDomainFactoryService.newPlanOrdererRole(jsonValues.planOrdererRole);\r\n\r\n } else {\r\n application.planOrdererRole = null;\r\n }\r\n\r\n\r\n\r\n // collect the customers to retrieve\r\n const customers = [];\r\n\r\n\r\n // initiating agent\r\n if (jsonValues.initiatingAgentCustomerGUID) {\r\n const customer = this.customerDomainFactoryService.newCustomer();\r\n customer.guid = jsonValues.initiatingAgentCustomerGUID;\r\n\r\n application.initiatingAgent = customer;\r\n\r\n customers.push(customer);\r\n\r\n } else {\r\n application.initiatingAgentSkippedFlag = true;\r\n }\r\n\r\n application.initiatingAgentListingFlag = PhxSerializer.toBoolean(jsonValues.initiatingAgentListingFlag);\r\n\r\n\r\n // cooperating agent\r\n if (jsonValues.cooperatingAgentCustomerGUID) {\r\n const customer = this.customerDomainFactoryService.newCustomer();\r\n customer.guid = jsonValues.cooperatingAgentCustomerGUID;\r\n\r\n application.cooperatingAgent = customer;\r\n\r\n customers.push(customer);\r\n }\r\n\r\n application.cooperatingAgentListingFlag = PhxSerializer.toBoolean(jsonValues.cooperatingAgentListingFlag);\r\n\r\n\r\n // closing agent\r\n if (jsonValues.closingAgentCustomerGUID) {\r\n const customer = this.customerDomainFactoryService.newCustomer();\r\n customer.guid = jsonValues.closingAgentCustomerGUID;\r\n\r\n application.closingAgent = customer;\r\n\r\n customers.push(customer);\r\n }\r\n\r\n\r\n // closing info\r\n application.closingFileNumber = (jsonValues.closingFileNumber || '');\r\n application.estimatedClosingDate = PhxSerializer.toDate(jsonValues.estimatedClosingDate);\r\n application.actualClosingDate = PhxSerializer.toDate(jsonValues.actualClosingDate);\r\n\r\n\r\n\r\n\r\n // telemarketing agent\r\n if (jsonValues.telemarketingAgentCustomerGUID) {\r\n const customer = this.customerDomainFactoryService.newCustomer();\r\n customer.guid = jsonValues.telemarketingAgentCustomerGUID;\r\n\r\n application.telemarketingAgent = customer;\r\n\r\n customers.push(customer);\r\n\r\n } else {\r\n application.telemarketingAgent = null;\r\n }\r\n\r\n\r\n // default homeowner\r\n const defaultHomeownerCustomerID = PhxSerializer.toInteger(jsonValues.defaultHomeownerCustomerID);\r\n\r\n application.defaultHomeownerCustomerID = defaultHomeownerCustomerID;\r\n\r\n\r\n // home buyers\r\n const homeBuyers = [];\r\n\r\n if (jsonValues.homeBuyers) {\r\n jsonValues.homeBuyers.forEach((indexCustomerJsonObject: any) => {\r\n const indexCustomerJsonValues = indexCustomerJsonObject;\r\n\r\n const customer = this.customerDomainFactoryService.newCustomer();\r\n customer.guid = indexCustomerJsonValues.customerGUID;\r\n\r\n homeBuyers.push(customer);\r\n\r\n customers.push(customer);\r\n });\r\n }\r\n\r\n application.homeBuyers = homeBuyers;\r\n\r\n\r\n // home sellers\r\n const homeSellers = [];\r\n\r\n if (jsonValues.homeSellers) {\r\n jsonValues.homeSellers.forEach((indexCustomerJsonObject: any) => {\r\n const indexCustomerJsonValues = indexCustomerJsonObject;\r\n\r\n const customer = this.customerDomainFactoryService.newCustomer();\r\n customer.guid = indexCustomerJsonValues.customerGUID;\r\n\r\n homeSellers.push(customer);\r\n\r\n customers.push(customer);\r\n });\r\n }\r\n\r\n application.homeSellers = homeSellers;\r\n\r\n\r\n // premium invoice\r\n if (jsonValues.premiumInvoice) {\r\n application.premiumInvoice = this.accountingDomainFactoryService.newCustomerInvoice(jsonValues.premiumInvoice);\r\n\r\n } else {\r\n application.premiumInvoice = null;\r\n }\r\n\r\n\r\n // Auto renew flag\r\n if (!!jsonValues.autoRenewFlag) {\r\n application.autoRenewFlag = jsonValues.autoRenewFlag;\r\n\r\n } else {\r\n application.autoRenewFlag = false;\r\n }\r\n\r\n\r\n // we need to do some other lookups\r\n const customerObservable = this.fetchAndPopulateCustomers(customers);\r\n\r\n // product\r\n const productID = PhxSerializer.toInteger(jsonValues.productID);\r\n\r\n const productObservable = this.fetchAndPopulateProduct(productID, jsonValues.coverages, application);\r\n\r\n // property\r\n const propertyID = PhxSerializer.toInteger(jsonValues.propertyID);\r\n\r\n const propertyObservable = this.fetchAndPopulateProperty(propertyID, application);\r\n\r\n // claim history\r\n const claimHistoryObservable = this.fetchAndPopulateClaimHistory(application.planID, application);\r\n\r\n // credit card\r\n const creditCardObservable = this.fetchAndPopulateCreditCard(application);\r\n\r\n // collect all observables\r\n const observables = [\r\n customerObservable,\r\n productObservable,\r\n propertyObservable,\r\n claimHistoryObservable,\r\n creditCardObservable\r\n ];\r\n\r\n\r\n\r\n // populate missing info\r\n Observable.forkJoin(observables).subscribe((results: any[]) => {\r\n\r\n // invoice recipient\r\n if (jsonValues.invoiceRecipientID) {\r\n const invoiceRecipientID = PhxSerializer.toInteger(jsonValues.invoiceRecipientID);\r\n application.invoiceRecipient = this.planLookupValueService.invoiceRecipientByID(invoiceRecipientID);\r\n\r\n } else {\r\n application.invoiceRecipient = null;\r\n }\r\n\r\n // invoice recipient customer\r\n if (jsonValues.invoiceRecipientCustomerID) {\r\n const invoiceRecipientCustomerID = PhxSerializer.toInteger(jsonValues.invoiceRecipientCustomerID);\r\n application.invoiceRecipientCustomerID = invoiceRecipientCustomerID;\r\n\r\n } else {\r\n application.invoiceRecipientCustomerID = null;\r\n }\r\n\r\n\r\n // clear all updates\r\n application.clearUpdates();\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n // if the plan wasn't found\r\n } else {\r\n subscriber.next(false);\r\n subscriber.complete();\r\n }\r\n }\r\n });\r\n\r\n return observable;\r\n\r\n }\r\n\r\n\r\n // fetches customers\r\n private fetchAndPopulateCustomers(customers: Customer[]): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n let customerGUIDs: string = null;\r\n\r\n // collect the GUID values to load\r\n customers.forEach((indexCustomer: Customer) => {\r\n customerGUIDs = (customerGUIDs ? customerGUIDs + ',' : '') + indexCustomer.guid;\r\n });\r\n\r\n if (!customerGUIDs) {\r\n customerGUIDs = '';\r\n }\r\n\r\n if (customerGUIDs.length > 0) {\r\n const employers = [];\r\n\r\n // initiate the customer fetch\r\n const params = new CustomerLookupParams();\r\n params.guid = customerGUIDs;\r\n\r\n // fetches the supplied customers\r\n this.customerLookupService.fetchCustomers(params).subscribe((fetchedCustomers: Customer[]) => {\r\n\r\n // loop over the existing customers\r\n customers.forEach((indexCustomer: Customer) => {\r\n\r\n // loop over the fetched customers\r\n fetchedCustomers.forEach((indexFetchedCustomer: Customer) => {\r\n\r\n // if the customers match\r\n if (indexCustomer.isEqualToCustomer(indexFetchedCustomer)) {\r\n\r\n // populate the existing customer with the new fetched data\r\n this.customerDomainFactoryService.populateCustomer(indexCustomer, indexFetchedCustomer.jsonValues());\r\n\r\n if (indexCustomer.employer) {\r\n employers.push(indexCustomer.employer);\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.fetchAndPopulateEmployers(employers).subscribe((boolValue: boolean) => {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n } else {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // fetches employers\r\n fetchAndPopulateEmployers(employers: Employer[]): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n let employerGUIDs: string = null;\r\n\r\n // collect the GUID values to load\r\n employers.forEach((indexEmployer: Employer) => {\r\n employerGUIDs = (employerGUIDs ? employerGUIDs + ',' : '') + indexEmployer.guid;\r\n });\r\n\r\n // if employers need to be fetched\r\n if (employers.length > 0) {\r\n // initiate the employer fetch\r\n const params = new EmployerLookupParams();\r\n params.guid = employerGUIDs;\r\n\r\n // fetch the employers\r\n this.employerLookupService.fetchEmployers(params).subscribe((fetchedEmployers: Employer[]) => {\r\n\r\n // loop over the existing employers\r\n employers.forEach((indexEmployer: Employer) => {\r\n\r\n // loop over the fetched employers\r\n fetchedEmployers.forEach((indexFetchedEmployer: Employer) => {\r\n\r\n // if the existing and fetched employer match\r\n if (indexEmployer.isEqualToEmployer(indexFetchedEmployer)) {\r\n\r\n // populate the existing employer with the fetched employer\r\n this.employerDomainFactoryService.populateEmployer(indexEmployer, indexFetchedEmployer.jsonValues());\r\n }\r\n });\r\n });\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n } else {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // fetches the product\r\n fetchAndPopulateProduct(productID: number, coverageJsonObjects: any[], application: PlanOrderApplication): Observable {\r\n\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n // perform the product fetch by ID\r\n this.productLookupService.fetchProductByID(productID).subscribe((product: Product) => {\r\n\r\n // if a market segment was returned, pull the new construction flag\r\n if (product.marketSegment) {\r\n application.newConstructionFlag = this.planLookupValueService.newConstructionFlagByValue(\r\n product.marketSegment.newConstructionFlag\r\n );\r\n }\r\n\r\n // product must be set after new construction flag\r\n application.propertyRegionID = product.regionID;\r\n application.product = product;\r\n\r\n this.fetchAndPopulateCoverages(coverageJsonObjects, application).subscribe((boolValue: boolean) => {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // fetches optional coverage\r\n fetchAndPopulateCoverages(coverageJsonObjects: any[], application: PlanOrderApplication): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n // if there is optional coverage\r\n if (coverageJsonObjects && coverageJsonObjects.length) {\r\n const product = application.product;\r\n\r\n // create some arrays\r\n const planOptions = [];\r\n const productCoverages = [];\r\n\r\n // query for the coverages for the product\r\n this.productLookupService.fetchCoverages(product).subscribe((fetchedCoverages: ProductCoverage[]) => {\r\n\r\n // loop over plan options\r\n coverageJsonObjects.forEach((indexJsonObject: any) => {\r\n const indexPlanOption = this.planDomainFactoryService.newPlanOption(indexJsonObject);\r\n planOptions.push(indexPlanOption);\r\n });\r\n\r\n // loop over fetched coverages\r\n fetchedCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n // find the PlanOption for this coverage\r\n const indexOption = ArrayUtility.arrayFind(planOptions, (testOption: PlanOption): boolean => {\r\n return (testOption.coverageID === indexCoverage.coverageID);\r\n });\r\n\r\n if (indexOption) {\r\n planOptions.push(indexOption);\r\n productCoverages.push(indexCoverage);\r\n }\r\n });\r\n\r\n application.productCoverages = productCoverages;\r\n application.planOptions = planOptions;\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n // no optional coverage\r\n } else {\r\n application.productCoverages = [];\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // fetches the property\r\n fetchAndPopulateProperty(propertyID: number, application: PlanOrderApplication): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n const params = new PropertyLookupParams();\r\n params.propertyID = propertyID;\r\n\r\n this.propertyLookupService.fetchProperties(params).subscribe((properties: Property[]) => {\r\n if (properties.length === 1) {\r\n application.property = properties[0];\r\n }\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // fetches claim history\r\n fetchAndPopulateClaimHistory(planID: number, application: PlanOrderApplication): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n const params = this.claimDomainFactoryService.newPlanClaimHistoryLookupParams();\r\n params.planID = planID;\r\n\r\n const userCustomer = this.planOrderAuthService.customer;\r\n\r\n // listing or selling agent?\r\n let listingAgentFlag = false;\r\n let sellingAgentFlag = false;\r\n\r\n if (application.initiatingAgent &&\r\n application.initiatingAgent.isEqualToCustomer(userCustomer)) {\r\n if (application.initiatingAgentListingFlag) {\r\n listingAgentFlag = true;\r\n } else {\r\n sellingAgentFlag = true;\r\n }\r\n }\r\n\r\n if (application.cooperatingAgent &&\r\n application.cooperatingAgent.isEqualToCustomer(userCustomer)) {\r\n if (application.cooperatingAgentListingFlag) {\r\n listingAgentFlag = true;\r\n } else {\r\n sellingAgentFlag = true;\r\n }\r\n }\r\n\r\n if (listingAgentFlag && !sellingAgentFlag) {\r\n params.sellerFlag = true;\r\n\r\n } else if (sellingAgentFlag && !listingAgentFlag) {\r\n params.buyerFlag = true;\r\n }\r\n\r\n this.planClaimHistoryLookupService.fetchPlanClaimHistory(params)\r\n .subscribe((planClaimHistories: PlanClaimHistory[]) => {\r\n\r\n application.planClaimHistory = planClaimHistories;\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n fetchAndPopulateCreditCard(application: PlanOrderApplication): Observable {\r\n const observable = new Observable((subscriber: Subscriber) => {\r\n const creditCardGUID = (application.premiumInvoice ? application.premiumInvoice.creditCardGUID : null);\r\n\r\n let loadCreditCardFlag = application.payNowFlag;\r\n loadCreditCardFlag = loadCreditCardFlag && ((creditCardGUID || '') !== '');\r\n\r\n\r\n if (loadCreditCardFlag) {\r\n this.creditCardService.creditCardSearch(creditCardGUID).subscribe((result: ActivityResult) => {\r\n if (result && result.object) {\r\n const creditCard = result.object;\r\n\r\n application.creditCardGUID = creditCard.creditCardGUID;\r\n application.ccCardHolderName = creditCard.cardholder;\r\n application.ccNumber = creditCard.creditCardNumberMasked;\r\n application.ccExpirationMonth = creditCard.expirationMonth + 1;\r\n application.ccExpirationYear = creditCard.expirationYear;\r\n }\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n } else {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","\r\nimport {TransactionRole} from '@orhp/phx-plan-ui-module';\r\nimport {TransactionTypeGroup} from '@orhp/phx-plan-ui-module';\r\nimport {TransactionType} from '@orhp/phx-plan-ui-module';\r\nimport {NewConstructionFlag} from '@orhp/phx-plan-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\n\r\nimport {PropertyLookupValueService} from '@orhp/phx-property-ui-module';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {ProductLookupValueService} from '@orhp/phx-product-ui-module';\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\n\r\nimport {Response} from '@angular/http';\r\nimport {Injectable} from '@angular/core';\r\n\r\nimport {PhxHttpService} from '@orhp/phx-common-ui-module';\r\nimport {ProductLookupValueFetchService} from '@orhp/phx-product-ui-module';\r\nimport {PlanLookupValueFetchService} from '@orhp/phx-plan-ui-module';\r\nimport {PropertyLookupValueFetchService} from '@orhp/phx-property-ui-module';\r\nimport {CustomerLookupValueFetchService} from '@orhp/phx-customer-ui-module';\r\nimport {PlanOrderAuthService} from './plan-order-auth.service';\r\nimport {AccountingLookupValueFetchService} from '@orhp/phx-accounting-ui-module';\r\nimport {CorrespondenceLookupValuesService} from '@orhp/phx-correspondence-ui-module';\r\n\r\n\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderLookupValueService {\r\n\r\n lookupValuesLoaded = false;\r\n\r\n\r\n constructor(private propertyLookupValueFetchService: PropertyLookupValueFetchService,\r\n private customerLookupValueFetchService: CustomerLookupValueFetchService,\r\n private productLookupValueFetchService: ProductLookupValueFetchService,\r\n private planLookupValueService: PlanLookupValueService,\r\n private planLookupValueFetchService: PlanLookupValueFetchService,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private accountingLookupValueFetchService: AccountingLookupValueFetchService,\r\n private correspondenceLookupValueService: CorrespondenceLookupValuesService,\r\n private http: PhxHttpService) {\r\n }\r\n\r\n\r\n // loads values if needed\r\n loadValuesIfNeeded(): Observable {\r\n const observable: Observable = Observable.create((subscriber) => {\r\n // if lookup values aren't loaded\r\n if (!this.lookupValuesLoaded) {\r\n this.loadValues().subscribe((boolValue) => {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n // if lookup values are loaded\r\n } else {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // loads values\r\n loadValues(): Observable {\r\n\r\n const observable: Observable = Observable.create((subscriber) => {\r\n\r\n // set up the observables to call\r\n const observables: Observable[] = [];\r\n\r\n observables.push(this.accountingLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.customerLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.productLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.propertyLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.planLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.correspondenceLookupValueService.fetchLookupValuesIfNeeded());\r\n\r\n // call all observables\r\n Observable.forkJoin(observables).subscribe((results: boolean[]) => {\r\n let resultFlag = true;\r\n\r\n results.forEach((indexResultFlag: boolean) => {\r\n resultFlag = resultFlag && indexResultFlag;\r\n });\r\n\r\n subscriber.next(resultFlag);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n\r\n // returns transaction types for display\r\n transactionTypesForDisplay(): TransactionType[] {\r\n const employerType = (!!this.planOrderAuthService.employer ? this.planOrderAuthService.employer.employerType : null);\r\n const telemarketingFlag = (employerType ? employerType.telemarketingFlag : false);\r\n\r\n const types = [];\r\n\r\n // filter transaction types\r\n const transactionTypeGroups = this.planLookupValueService.transactionTypeGroups;\r\n\r\n transactionTypeGroups.forEach((indexGroup: TransactionTypeGroup) => {\r\n indexGroup.transactionTypes.forEach((indexType: TransactionType) => {\r\n let flag = true;\r\n\r\n if (indexType.telemarketingFlag !== telemarketingFlag) {\r\n flag = false;\r\n }\r\n\r\n if (flag) {\r\n types.push(indexType);\r\n }\r\n });\r\n });\r\n\r\n return types;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n\r\n","\r\nimport {Injectable} from '@angular/core';\r\nimport {PhxHttpService} from '@orhp/phx-common-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Response} from '@angular/http';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {PlanOrderService} from './plan-order.service';\r\nimport {CustomerLookupParams} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerLookupParams} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {ProductLookupService} from '@orhp/phx-product-ui-module';\r\nimport {Product} from '@orhp/phx-product-ui-module';\r\nimport {MessagingFormatter} from '@orhp/phx-common-ui-module';\r\nimport {ProductCoverage} from '@orhp/phx-product-ui-module';\r\nimport {PropertyLookupService} from '@orhp/phx-property-ui-module';\r\nimport {PropertyLookupParams} from '@orhp/phx-property-ui-module';\r\nimport {Property} from '@orhp/phx-property-ui-module';\r\nimport {PlanOrderLookupValueService} from './plan-order-lookup-value.service';\r\nimport {CustomerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {PlanOrderDomainFactoryService} from './plan-order-domain-factory.service';\r\nimport {AuthenticationService} from '../../../login';\r\nimport {CustomUrlParser} from '../../../_src/custom-url-parser';\r\n\r\n@Injectable()\r\n\r\n\r\nexport class PlanOrderLookupService {\r\n\r\n constructor(private http: PhxHttpService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderDomainFactoryService: PlanOrderDomainFactoryService,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private authenticationService: AuthenticationService,\r\n private employerDomainFactoryService: EmployerDomainFactoryService) {\r\n }\r\n\r\n\r\n applicationLookupInProcess = false;\r\n\r\n\r\n // fetches a plan by GUID\r\n fetchPlanByID(application: PlanOrderApplication, planID?: number): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n const url = 'planOrder/get';\r\n\r\n const productOfficeGroup = this.authenticationService.productOffice;\r\n const directProcessFlag = !!productOfficeGroup && !!productOfficeGroup.homeBuyerEmailRequiredFlag;\r\n\r\n const jsonValues = {\r\n 'planID': MessagingFormatter.integerToString(planID || application.planID),\r\n 'directProcessFlag': MessagingFormatter.booleanToString(directProcessFlag)\r\n };\r\n\r\n const formBody = JSON.stringify(jsonValues);\r\n\r\n this.applicationLookupInProcess = true;\r\n\r\n this.http.post(url, formBody).subscribe((response: Response) => {\r\n\r\n const jsonObject = response.json();\r\n\r\n this.planOrderDomainFactoryService.populateFetchedApplication(application, jsonObject)\r\n .subscribe((fetchResult: boolean) => {\r\n this.planOrderService.planOrderCustomOrderingUrl = CustomUrlParser.getCustomUrl();\r\n\r\n subscriber.next(fetchResult);\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderAuthService} from './plan-order-auth.service';\r\nimport {Subscription} from 'rxjs/Rx';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class PlanOrderNoAuthGuard implements CanActivate {\r\n\r\n loginCompletionSubscription: Subscription = null;\r\n loginCancelSubscription: Subscription = null;\r\n\r\n\r\n constructor(private router: Router,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private systemService: PhxSystemService\r\n ) { }\r\n\r\n\r\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n const nextUrl = state.url;\r\n\r\n this.systemService.loadAppSettings().subscribe((appSettingsLoadedFlag: boolean) => {\r\n // only force a login if there's a product office group\r\n const forceLogin = !this.planOrderAuthService.loggedIn() && !!this.planOrderAuthService.productOffice;\r\n\r\n // if the user is not logged in\r\n if (forceLogin) {\r\n // trigger the modal login\r\n this.planOrderAuthService.triggerModalLoginEventEmitter.emit(true);\r\n\r\n // register for login completion\r\n this.loginCompletionSubscription = this.planOrderAuthService.onLoginCompletion\r\n .subscribe((successFlag: boolean) => {\r\n if (successFlag) {\r\n this._unsubscribe();\r\n\r\n this.router.navigate([nextUrl]);\r\n }\r\n });\r\n\r\n // register for login cancellation\r\n this.loginCancelSubscription = this.planOrderAuthService.loginCancelEventEmitter\r\n .subscribe((resultFlag: boolean) => {\r\n this._unsubscribe();\r\n\r\n this.router.navigate(['/']);\r\n });\r\n\r\n subscriber.next(false);\r\n subscriber.complete();\r\n\r\n // if the user is logged in\r\n } else {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n private _unsubscribe() {\r\n if (this.loginCompletionSubscription) {\r\n this.loginCompletionSubscription.unsubscribe();\r\n }\r\n\r\n if (this.loginCancelSubscription) {\r\n this.loginCancelSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\n","\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {\r\n ActivatedRoute, ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment,\r\n UrlSerializer\r\n} from '@angular/router';\r\nimport {PlanOrderService} from './plan-order.service';\r\nimport {PlanOrderLookupValueService} from './plan-order-lookup-value.service';\r\nimport {LocalStorageService} from '@orhp/phx-common-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderLookupService} from './plan-order-lookup.service';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {PlanOrderDomainFactoryService} from './plan-order-domain-factory.service';\r\nimport {OfficeAgentLookupPersistenceService} from '../../office-agent-lookup/_services/persistence.service';\r\n\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderRootResolver implements Resolve {\r\n\r\n\r\n constructor(private modalProgressService: PhxModalProgressService,\r\n private router: Router,\r\n private urlSerializer: UrlSerializer,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderDomainFactoryService: PlanOrderDomainFactoryService,\r\n private planOrderLookupService: PlanOrderLookupService) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n\r\n // present the user with a loading progress indicator\r\n const progress = new ModalProgress('Loading Plan Quote/Plan Ordering', 'Please wait...', 100);\r\n this.modalProgressService.progress = progress;\r\n\r\n // initialize the module\r\n this.planOrderService.initModuleIfNeeded().subscribe((initResultFlag: boolean) => {\r\n\r\n let observable: Observable = null;\r\n\r\n const currentApplication = this.planOrderService.planOrderApplication;\r\n\r\n // validate the plan number\r\n const planIDText = (snapshot.params['planID'] || this.planOrderService.newPlanRoute).toLowerCase();\r\n\r\n let validPlanID = false;\r\n validPlanID = validPlanID || (planIDText === this.planOrderService.newPlanRoute);\r\n validPlanID = validPlanID || (planIDText === this.planOrderService.forceNewPlanRoute);\r\n validPlanID = validPlanID || !isNaN(planIDText);\r\n\r\n // if the plan ID isn't valid\r\n if (!validPlanID) {\r\n observable = Observable.create((subscriber: Subscriber) => {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, planIDText);\r\n\r\n const urlSegment = new UrlSegment(this.planOrderService.newPlanRoute, {});\r\n\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n // if the plan ID is valid\r\n } else {\r\n const planID = (!isNaN(planIDText) ? Number(planIDText) : null);\r\n\r\n // if this is a new plan\r\n if (!planID) {\r\n // verify that the saved plan is new\r\n let forceNewPlanFlag = false;\r\n\r\n forceNewPlanFlag = forceNewPlanFlag || !!currentApplication.planID;\r\n forceNewPlanFlag = forceNewPlanFlag || (planIDText === this.planOrderService.forceNewPlanRoute);\r\n\r\n if (forceNewPlanFlag) {\r\n observable = Observable.create((subscriber: Subscriber) => {\r\n this.officeAgentLookupPersistenceService.clearPersistedValues();\r\n\r\n // create and save a new application\r\n this.planOrderService.planOrderApplication = this.planOrderDomainFactoryService.newApplication();\r\n\r\n this.planOrderService.persistPlanOrderApplication();\r\n\r\n this.planOrderService.backupPlanOrderApplication();\r\n\r\n this.planOrderService.newApplicationEventEmitter.emit(this.planOrderService.planOrderApplication);\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n // if this is an existing plan\r\n } else {\r\n // verify that the plan numbers match\r\n if (planID !== currentApplication.planID) {\r\n observable = Observable.create((subscriber: Subscriber) => {\r\n // create and populate a new application\r\n const newApplication = this.planOrderDomainFactoryService.newApplication();\r\n\r\n this.planOrderLookupService.fetchPlanByID(newApplication, planID)\r\n .subscribe((lookupResult: boolean) => {\r\n\r\n // if the lookup was successful\r\n if (lookupResult) {\r\n newApplication.confirmationSentFlag = true;\r\n\r\n this.planOrderService.planOrderApplication = newApplication;\r\n\r\n this.planOrderService.persistPlanOrderApplication();\r\n\r\n this.planOrderService.backupPlanOrderApplication();\r\n\r\n this.planOrderService.newApplicationEventEmitter.emit(this.planOrderService.planOrderApplication);\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n\r\n // if the lookup was unsuccessful\r\n } else {\r\n this.planOrderService.planOrderApplication = null;\r\n\r\n this.planOrderService.backupPlanOrderApplication();\r\n\r\n subscriber.next(false);\r\n subscriber.complete();\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n // if the observable is empty\r\n if (!observable) {\r\n observable = Observable.create((subscriber: Subscriber) => {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n // subscribe to the observable\r\n observable.subscribe((resultFlag: boolean) => {\r\n this.modalProgressService.progress = null;\r\n\r\n // if the result was successful\r\n if (resultFlag) {\r\n resolve(true);\r\n\r\n // if the result was unsuccessful\r\n } else {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, planIDText);\r\n\r\n const urlSegment = new UrlSegment(this.planOrderService.newPlanRoute, {});\r\n\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n resolve(false);\r\n }\r\n\r\n });\r\n\r\n });\r\n\r\n });\r\n\r\n return promise;\r\n }\r\n}\r\n","\r\nimport {Injectable} from '@angular/core';\r\nimport {PlanOrderProgressBarStep} from '../_models/progress-bar-step';\r\nimport {PlanOrderApplication, PlanOrderApplicationUpdates} from '../_models/plan-order-application';\r\nimport {PlanOrderService} from './plan-order.service';\r\nimport {\r\n PlanLookupParams,\r\n PlanDomainFactoryService,\r\n PlanLookupService,\r\n PlanLookupValueDomainFactoryService,\r\n PlanLookupValueService,\r\n PlanOrdererRole, Plan, TransactionRole, PlanOrdererRoleDefault\r\n} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderRoleResolver} from '../role/role.resolver';\r\nimport {HttpErrorResponse} from '@angular/common/http';\r\nimport {Response} from '@angular/http';\r\nimport {PlanOrderAuthService} from './plan-order-auth.service';\r\nimport {PlanOrderLookupValueService} from './plan-order-lookup-value.service';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderStepService {\r\n\r\n\r\n currentStep: PlanOrderProgressBarStep = null;\r\n\r\n get allSteps(): PlanOrderProgressBarStep[] {\r\n return this.buildSteps();\r\n }\r\n\r\n\r\n\r\n\r\n constructor(private planOrderAuthService: PlanOrderAuthService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderLookupValueService: PlanOrderLookupValueService,\r\n private planLookupValueService: PlanLookupValueService\r\n ) {}\r\n\r\n\r\n\r\n // is the user logged in?\r\n loggedIn(): boolean {\r\n return this.planOrderAuthService.loggedIn();\r\n }\r\n\r\n\r\n\r\n // is this the current step?\r\n isCurrentStepByCode(stepCode: string): boolean {\r\n let flag = false;\r\n\r\n if (this.currentStep) {\r\n flag = (this.currentStep.code.toLowerCase() === (stepCode || '').toLowerCase());\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n // sets the current step by code\r\n setCurrentStepByCode(application: any, stepCode?: string) {\r\n let step: PlanOrderProgressBarStep = null;\r\n\r\n this.allSteps.forEach((indexStep: PlanOrderProgressBarStep) => {\r\n if (indexStep.code === stepCode) {\r\n step = indexStep;\r\n }\r\n });\r\n\r\n this.currentStep = step;\r\n\r\n application.currentStep = stepCode;\r\n }\r\n\r\n\r\n\r\n\r\n isAccountExecutive(planID: number, guestGUID: string, planOrdererRole: PlanOrdererRole ): boolean {\r\n let planGuestGUID = '';\r\n\r\n if (planOrdererRole !== null) {\r\n planGuestGUID = planOrdererRole.guestGUID;\r\n }\r\n\r\n const hasPlanID = (planID !== null && planID !== undefined);\r\n const differentPlanAndCreatorGUIDS = (guestGUID || '').toLowerCase() !== planGuestGUID.toLowerCase();\r\n const planAndCreatorGUIDSAreNull = guestGUID === null && planGuestGUID === '';\r\n const hasTerritories = (this.planOrderAuthService.aeTerritories || []).length > 0;\r\n\r\n\r\n if (hasPlanID && hasTerritories &&\r\n ((differentPlanAndCreatorGUIDS && guestGUID !== null) || planAndCreatorGUIDSAreNull)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n buildSteps(): PlanOrderProgressBarStep[] {\r\n const allSteps = [];\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n const existingPlanFlag = !!application.planID;\r\n\r\n const reviewStepFlag = this.isCurrentStepByCode( 'review');\r\n\r\n\r\n let step: PlanOrderProgressBarStep = null;\r\n\r\n\r\n // Transaction Type\r\n let transactionTypeDisplayFlag = false;\r\n let transactionTypeEnabledFlag = false;\r\n\r\n const transactionTypeStepFlag = this.isCurrentStepByCode( 'transaction-type');\r\n const transactionTypeUpdateFlag = application.hasEdit(PlanOrderApplicationUpdates.transactionType);\r\n\r\n // if this is a new plan\r\n if (!existingPlanFlag) {\r\n transactionTypeDisplayFlag = true;\r\n\r\n // if all steps have been completed\r\n if (application.allStepsCompletedFlag) {\r\n transactionTypeEnabledFlag = transactionTypeEnabledFlag || transactionTypeUpdateFlag;\r\n transactionTypeEnabledFlag = transactionTypeEnabledFlag || transactionTypeStepFlag;\r\n transactionTypeEnabledFlag = transactionTypeEnabledFlag || reviewStepFlag;\r\n\r\n // all steps haven't been completed yet\r\n } else {\r\n transactionTypeEnabledFlag = true;\r\n }\r\n\r\n // if a transaction type has been selected, and only one is available\r\n const selectedTransactionType = application.transactionType;\r\n const transactionTypesForDisplay = this.planOrderLookupValueService.transactionTypesForDisplay();\r\n\r\n if (!!selectedTransactionType && (transactionTypesForDisplay.length === 1)) {\r\n // if they match, don't display the progress bar item\r\n if (selectedTransactionType.isEqual(transactionTypesForDisplay[0])) {\r\n transactionTypeDisplayFlag = false;\r\n }\r\n }\r\n\r\n }\r\n\r\n if (transactionTypeDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'transaction-type',\r\n 'Transaction',\r\n 'transaction-type',\r\n true,\r\n null,\r\n transactionTypeEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // Property Type\r\n let propertyTypeEnabledFlag = false;\r\n const propertyTypeDisplayFlag = true;\r\n\r\n let propertyTypeUpdateFlag = false;\r\n propertyTypeUpdateFlag = propertyTypeUpdateFlag || application.hasEdit(PlanOrderApplicationUpdates.propertyZipCode);\r\n propertyTypeUpdateFlag = propertyTypeUpdateFlag || application.hasEdit(PlanOrderApplicationUpdates.propertyType);\r\n\r\n const propertyTypeStepFlag = this.isCurrentStepByCode( 'property-type');\r\n\r\n // if this is an existing plan\r\n if (existingPlanFlag) {\r\n propertyTypeEnabledFlag = propertyTypeEnabledFlag || propertyTypeUpdateFlag;\r\n propertyTypeEnabledFlag = propertyTypeEnabledFlag || propertyTypeStepFlag;\r\n\r\n // if this is a new plan\r\n } else {\r\n // if all steps have been completed\r\n if (application.allStepsCompletedFlag) {\r\n propertyTypeEnabledFlag = propertyTypeEnabledFlag || propertyTypeUpdateFlag;\r\n propertyTypeEnabledFlag = propertyTypeEnabledFlag || propertyTypeStepFlag;\r\n propertyTypeEnabledFlag = propertyTypeEnabledFlag || reviewStepFlag;\r\n\r\n\r\n // if the steps have not been completed\r\n } else {\r\n propertyTypeEnabledFlag = true;\r\n }\r\n }\r\n\r\n\r\n if (propertyTypeDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'property-type',\r\n 'Property Type',\r\n 'property-type',\r\n true,\r\n null,\r\n propertyTypeEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n // Role\r\n let roleDisplayFlag = false;\r\n let roleEnabledFlag = false;\r\n\r\n const roleStepFlag = this.isCurrentStepByCode( 'role');\r\n const roleUpdateFlag = application.hasEdit(PlanOrderApplicationUpdates.role);\r\n\r\n // if this is a new plan\r\n if (!existingPlanFlag) {\r\n // default the role display to true\r\n roleDisplayFlag = true;\r\n\r\n // if the user is logged in\r\n if (this.planOrderAuthService.loggedIn()) {\r\n const jobRole = this.planOrderAuthService.jobRole;\r\n\r\n const jobRoleCode = (!!jobRole ? jobRole.jobRole : null);\r\n\r\n let defaultRole: PlanOrdererRoleDefault = null;\r\n\r\n if (!!application.transactionType && !!jobRoleCode) {\r\n defaultRole = this.planLookupValueService.ordererRoleDefaultByJobRole(application.transactionType, jobRoleCode);\r\n }\r\n\r\n // if we're skipping the Role step\r\n if (defaultRole && defaultRole.skipRoleStepFlag) {\r\n roleDisplayFlag = false;\r\n }\r\n }\r\n\r\n // if all steps have been completed\r\n if (application.allStepsCompletedFlag) {\r\n roleEnabledFlag = roleEnabledFlag || roleUpdateFlag;\r\n roleEnabledFlag = roleEnabledFlag || roleStepFlag;\r\n roleEnabledFlag = roleEnabledFlag || reviewStepFlag;\r\n\r\n // all steps have not been completed yet\r\n } else {\r\n roleEnabledFlag = true;\r\n }\r\n }\r\n\r\n\r\n if (roleDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'role',\r\n 'Role',\r\n 'role',\r\n true,\r\n null,\r\n roleEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // Initiating Agent\r\n let initiatingAgentEnabledFlag = false;\r\n let initiatingAgentDisplayFlag = false;\r\n\r\n const initiatingAgentStepFlag = this.isCurrentStepByCode( 'initiating-agent');\r\n const initiatingAgentUpdateFlag = application.hasEdit(PlanOrderApplicationUpdates.initiatingAgent);\r\n\r\n // if this is an existing plan\r\n if (existingPlanFlag) {\r\n initiatingAgentDisplayFlag = true;\r\n\r\n if (!!application.transactionType && application.transactionType.directToConsumerFlag) {\r\n initiatingAgentDisplayFlag = false;\r\n }\r\n\r\n initiatingAgentEnabledFlag = initiatingAgentEnabledFlag || initiatingAgentUpdateFlag;\r\n initiatingAgentEnabledFlag = initiatingAgentEnabledFlag || initiatingAgentStepFlag;\r\n\r\n // if this is a new plan\r\n } else {\r\n let promptFlag = true;\r\n\r\n // test for transaction type\r\n if (!!application.transactionType && !application.transactionType.promptForInitiatingAgentFlag) {\r\n promptFlag = false;\r\n }\r\n\r\n // test for role\r\n if (application.role && !application.role.promptForInitiatingAgentFlag) {\r\n promptFlag = false;\r\n }\r\n\r\n if (promptFlag) {\r\n initiatingAgentDisplayFlag = true;\r\n }\r\n\r\n // if all steps have been completed\r\n if (application.allStepsCompletedFlag) {\r\n initiatingAgentEnabledFlag = initiatingAgentEnabledFlag || initiatingAgentUpdateFlag;\r\n initiatingAgentEnabledFlag = initiatingAgentEnabledFlag || initiatingAgentStepFlag;\r\n initiatingAgentEnabledFlag = initiatingAgentEnabledFlag || reviewStepFlag;\r\n\r\n // if the steps have not been completed\r\n } else {\r\n initiatingAgentEnabledFlag = true;\r\n }\r\n }\r\n\r\n // if the user is an AE, do not show the Initiating Agent step\r\n if (this.isAccountExecutive(application.planID, this.planOrderAuthService.guestGUID, application.planOrdererRole)) {\r\n initiatingAgentDisplayFlag = false;\r\n }\r\n\r\n\r\n if (initiatingAgentDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'initiating-agent',\r\n 'Initiating Agent',\r\n 'initiating-agent',\r\n true,\r\n null,\r\n initiatingAgentEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // Product\r\n const optionalCoverageUpdateFlag = application.hasEdit(PlanOrderApplicationUpdates.optionalCoverages);\r\n\r\n let productEnabledFlag = false;\r\n const productDisplayFlag = true;\r\n\r\n const productStepFlag = this.isCurrentStepByCode( 'product');\r\n const productSelectedFlag = !!application.product;\r\n const productUpdateFlag = application.hasEdit(PlanOrderApplicationUpdates.product);\r\n\r\n // if this is an existing plan\r\n if (existingPlanFlag) {\r\n productEnabledFlag = productEnabledFlag || productStepFlag;\r\n productEnabledFlag = productEnabledFlag || !productSelectedFlag;\r\n productEnabledFlag = productEnabledFlag || productUpdateFlag;\r\n\r\n // if this is a new plan\r\n } else {\r\n // if all steps have been completed\r\n if (application.allStepsCompletedFlag) {\r\n productEnabledFlag = productEnabledFlag || productStepFlag;\r\n productEnabledFlag = productEnabledFlag || !productSelectedFlag;\r\n productEnabledFlag = productEnabledFlag || productUpdateFlag;\r\n productEnabledFlag = productEnabledFlag || reviewStepFlag;\r\n productEnabledFlag = productEnabledFlag || optionalCoverageUpdateFlag;\r\n\r\n // if all steps haven't been completed yet\r\n } else {\r\n productEnabledFlag = true;\r\n }\r\n }\r\n\r\n\r\n if (productDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'product',\r\n 'Product',\r\n 'product',\r\n true,\r\n null,\r\n productEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n // Optional Coverage\r\n let optionalCoverageEnabledFlag = false;\r\n const optionalCoverageDisplayFlag = true;\r\n\r\n let optionalCoverageHideFlag = false;\r\n\r\n const optionalCoverageStepFlag = this.isCurrentStepByCode( 'optional-coverage');\r\n const optionalCoverageSelectedFlag = !!application.productCoverages;\r\n\r\n // if this is an existing plan\r\n if (existingPlanFlag) {\r\n optionalCoverageEnabledFlag = optionalCoverageEnabledFlag || optionalCoverageStepFlag;\r\n optionalCoverageEnabledFlag = optionalCoverageEnabledFlag || !optionalCoverageSelectedFlag;\r\n optionalCoverageEnabledFlag = optionalCoverageEnabledFlag || optionalCoverageUpdateFlag;\r\n\r\n // if this is a new plan\r\n } else {\r\n optionalCoverageHideFlag = true;\r\n\r\n // if all steps have been completed\r\n if (application.allStepsCompletedFlag) {\r\n optionalCoverageEnabledFlag = optionalCoverageEnabledFlag || optionalCoverageStepFlag;\r\n optionalCoverageEnabledFlag = optionalCoverageEnabledFlag || !optionalCoverageSelectedFlag;\r\n optionalCoverageEnabledFlag = optionalCoverageEnabledFlag || optionalCoverageUpdateFlag;\r\n optionalCoverageEnabledFlag = optionalCoverageEnabledFlag || reviewStepFlag;\r\n\r\n // if all steps haven't been completed\r\n } else {\r\n optionalCoverageEnabledFlag = true;\r\n }\r\n }\r\n\r\n\r\n if (optionalCoverageDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'optional-coverage',\r\n 'Optional Coverage',\r\n 'optional-coverage',\r\n !optionalCoverageHideFlag,\r\n (optionalCoverageHideFlag ? 'product' : null),\r\n optionalCoverageEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n\r\n // Property Address\r\n let propertyAddressEnabledFlag = false;\r\n const propertyAddressDisplayFlag = true;\r\n\r\n let propertyAddressUpdateFlag = false;\r\n propertyAddressUpdateFlag = propertyAddressUpdateFlag || application.hasEdit(PlanOrderApplicationUpdates.propertyZipCode);\r\n propertyAddressUpdateFlag = propertyAddressUpdateFlag || application.hasEdit(PlanOrderApplicationUpdates.propertyAddress);\r\n\r\n const propertyAddressStepFlag = this.isCurrentStepByCode( 'property-address');\r\n const propertyAddressEnteredFlag = (application.property.address !== '');\r\n\r\n // if this is an existing plan\r\n if (existingPlanFlag) {\r\n propertyAddressEnabledFlag = propertyAddressEnabledFlag || propertyAddressUpdateFlag;\r\n propertyAddressEnabledFlag = propertyAddressEnabledFlag || propertyAddressStepFlag;\r\n\r\n // if this is a new plan\r\n } else {\r\n // if all steps have been completed\r\n if (application.allStepsCompletedFlag) {\r\n propertyAddressEnabledFlag = propertyAddressEnabledFlag || propertyAddressUpdateFlag;\r\n propertyAddressEnabledFlag = propertyAddressEnabledFlag || propertyAddressStepFlag;\r\n propertyAddressEnabledFlag = propertyAddressEnabledFlag || reviewStepFlag;\r\n\r\n // all steps have not been completed\r\n } else {\r\n propertyAddressEnabledFlag = true;\r\n }\r\n }\r\n\r\n\r\n if (propertyAddressDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'property-address',\r\n 'Property Address',\r\n 'property-address',\r\n true,\r\n null,\r\n propertyAddressEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // Cooperating Agent\r\n let cooperatingAgentEnabledFlag = false;\r\n let cooperatingAgentDisplayFlag = true;\r\n\r\n const cooperatingAgentStepFlag = this.isCurrentStepByCode( 'cooperating-agent');\r\n const cooperatingAgentUpdateFlag = application.hasEdit(PlanOrderApplicationUpdates.cooperatingAgent);\r\n\r\n // if this is an existing plan\r\n if (existingPlanFlag) {\r\n cooperatingAgentDisplayFlag = this.promptForCooperatingAgent(application);\r\n\r\n cooperatingAgentEnabledFlag = cooperatingAgentEnabledFlag || cooperatingAgentStepFlag;\r\n cooperatingAgentEnabledFlag = cooperatingAgentEnabledFlag || cooperatingAgentUpdateFlag;\r\n\r\n // if this is a new plan\r\n } else {\r\n cooperatingAgentDisplayFlag = this.promptForCooperatingAgent(application);\r\n\r\n // if all steps have been completed\r\n if (application.allStepsCompletedFlag) {\r\n cooperatingAgentEnabledFlag = cooperatingAgentEnabledFlag || cooperatingAgentStepFlag;\r\n cooperatingAgentEnabledFlag = cooperatingAgentEnabledFlag || cooperatingAgentUpdateFlag;\r\n cooperatingAgentEnabledFlag = cooperatingAgentEnabledFlag || reviewStepFlag;\r\n\r\n // if all steps have not been completed\r\n } else {\r\n cooperatingAgentEnabledFlag = true;\r\n }\r\n }\r\n\r\n if (this.isAccountExecutive(application.planID, this.planOrderAuthService.guestGUID, application.planOrdererRole)) {\r\n cooperatingAgentDisplayFlag = false;\r\n }\r\n\r\n if (cooperatingAgentDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'cooperating-agent',\r\n 'Cooperating Agent',\r\n 'cooperating-agent',\r\n true,\r\n null,\r\n cooperatingAgentEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n\r\n // Closing Info\r\n let escrowEnabledFlag = false;\r\n let escrowDisplayFlag = true;\r\n\r\n const escrowStepFlag = this.isCurrentStepByCode( 'closing-info');\r\n const escrowUpdateFlag = application.hasEdit(PlanOrderApplicationUpdates.closingAgent);\r\n\r\n // if this is an existing plan\r\n if (existingPlanFlag) {\r\n if (!!application.transactionType && application.transactionType.directToConsumerFlag) {\r\n escrowDisplayFlag = false;\r\n }\r\n\r\n escrowEnabledFlag = escrowEnabledFlag || escrowStepFlag;\r\n escrowEnabledFlag = escrowEnabledFlag || escrowUpdateFlag;\r\n\r\n // if this is a new plan\r\n } else {\r\n const promptForEscrowFlag = (!!application.transactionType ? application.transactionType.promptForEscrowFlag : true);\r\n\r\n if (!promptForEscrowFlag) {\r\n escrowDisplayFlag = false;\r\n }\r\n\r\n // if all steps have been completed\r\n if (application.allStepsCompletedFlag) {\r\n escrowEnabledFlag = escrowEnabledFlag || escrowStepFlag;\r\n escrowEnabledFlag = escrowEnabledFlag || escrowUpdateFlag;\r\n escrowEnabledFlag = escrowEnabledFlag || reviewStepFlag;\r\n\r\n // if all steps have not been completed\r\n } else {\r\n escrowEnabledFlag = true;\r\n }\r\n }\r\n\r\n\r\n if (escrowDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'closing-info',\r\n 'Closing\\nInfo',\r\n 'closing-info',\r\n true,\r\n null,\r\n escrowEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // Home Buyers\r\n let buyerEnabledFlag = false;\r\n let buyerDisplayFlag = true;\r\n\r\n const buyerStepFlag = this.isCurrentStepByCode( 'home-buyer');\r\n const buyerUpdateFlag = application.hasEdit(PlanOrderApplicationUpdates.homeBuyer);\r\n\r\n // if this is an existing plan\r\n if (existingPlanFlag) {\r\n buyerEnabledFlag = buyerEnabledFlag || buyerStepFlag;\r\n buyerEnabledFlag = buyerEnabledFlag || buyerUpdateFlag;\r\n\r\n // if this is a new plan\r\n } else {\r\n if (!this.promptForBuyer(application)) {\r\n buyerDisplayFlag = false;\r\n }\r\n\r\n // if all steps have been completed\r\n if (application.allStepsCompletedFlag) {\r\n buyerEnabledFlag = buyerEnabledFlag || buyerStepFlag;\r\n buyerEnabledFlag = buyerEnabledFlag || buyerUpdateFlag;\r\n buyerEnabledFlag = buyerEnabledFlag || reviewStepFlag;\r\n\r\n // if all steps haven't been completed\r\n } else {\r\n buyerEnabledFlag = true;\r\n }\r\n }\r\n\r\n\r\n if (buyerDisplayFlag) {\r\n let homeBuyerOwnerText = 'Buyer';\r\n\r\n if (application.transactionType && application.transactionType.directToConsumerFlag) {\r\n homeBuyerOwnerText = 'Owner';\r\n }\r\n\r\n const stepName = application.homeBuyerOrOwnerText;\r\n\r\n step = new PlanOrderProgressBarStep(\r\n 'home-buyer',\r\n stepName,\r\n 'home-buyer',\r\n true,\r\n null,\r\n buyerEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // Home Sellers\r\n let sellerEnabledFlag = false;\r\n let sellerDisplayFlag = true;\r\n\r\n const sellerStepFlag = this.isCurrentStepByCode( 'home-seller');\r\n const sellerUpdateFlag = application.hasEdit(PlanOrderApplicationUpdates.homeSeller);\r\n\r\n // if this is an existing plan\r\n if (existingPlanFlag) {\r\n if (!!application.transactionType && application.transactionType.directToConsumerFlag) {\r\n sellerDisplayFlag = false;\r\n }\r\n\r\n sellerEnabledFlag = sellerEnabledFlag || sellerStepFlag;\r\n sellerEnabledFlag = sellerEnabledFlag || sellerUpdateFlag;\r\n\r\n // if this is a new plan\r\n } else {\r\n // are we hiding the seller?\r\n if (!!application.transactionType && !application.transactionType.promptForHomeSellerFlag) {\r\n sellerDisplayFlag = false;\r\n }\r\n\r\n // if all steps have been completed\r\n if (application.allStepsCompletedFlag) {\r\n sellerEnabledFlag = sellerEnabledFlag || sellerStepFlag;\r\n sellerEnabledFlag = sellerEnabledFlag || sellerUpdateFlag;\r\n sellerEnabledFlag = sellerEnabledFlag || reviewStepFlag;\r\n\r\n // if all steps haven't been completed\r\n } else {\r\n sellerEnabledFlag = true;\r\n }\r\n }\r\n\r\n\r\n if (sellerDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'home-seller',\r\n 'Home\\nSeller',\r\n 'home-seller',\r\n true,\r\n null,\r\n sellerEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n // Mailing Address\r\n let mailingAddressEnabledFlag = false;\r\n let mailingAddressDisplayFlag = false;\r\n\r\n const mailingAddressStepFlag = this.isCurrentStepByCode( 'mailing-address');\r\n const mailingAddressUpdateFlag = application.hasEdit(PlanOrderApplicationUpdates.mailingAddress);\r\n\r\n mailingAddressDisplayFlag = mailingAddressDisplayFlag || mailingAddressStepFlag;\r\n mailingAddressDisplayFlag = mailingAddressDisplayFlag || mailingAddressUpdateFlag;\r\n\r\n mailingAddressEnabledFlag = mailingAddressDisplayFlag;\r\n\r\n if (mailingAddressDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'mailing-address',\r\n 'Mailing Address',\r\n 'mailing-address',\r\n false,\r\n null,\r\n mailingAddressEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n // Payment step\r\n const paymentEnabledFlag = true;\r\n let paymentDisplayFlag = false;\r\n\r\n\r\n // if a transaction type has been selected\r\n if (!!application.transactionType && application.transactionType.promptForPaymentFlag) {\r\n paymentDisplayFlag = true;\r\n }\r\n\r\n\r\n // if there was an attempted payment but it failed\r\n const ccPaymentResult = application.ccPaymentResult;\r\n const planInvoicePaymentResult = (!!ccPaymentResult ? ccPaymentResult.object : null);\r\n\r\n if (!!planInvoicePaymentResult && !planInvoicePaymentResult.successFlag) {\r\n paymentDisplayFlag = true;\r\n }\r\n\r\n if (paymentDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'payment',\r\n 'Payment',\r\n 'payment',\r\n true,\r\n null,\r\n paymentDisplayFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // Review step\r\n const reviewEnabledFlag = true;\r\n let reviewDisplayFlag = false;\r\n\r\n // if this is a new plan\r\n if (!existingPlanFlag) {\r\n reviewDisplayFlag = true;\r\n }\r\n\r\n if (reviewDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'review',\r\n 'Review',\r\n 'review',\r\n true,\r\n null,\r\n reviewEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n\r\n // Save step\r\n const saveEnabledFlag = true;\r\n const saveDisplayFlag = true;\r\n\r\n if (saveDisplayFlag) {\r\n step = new PlanOrderProgressBarStep(\r\n 'save',\r\n 'Save',\r\n 'save',\r\n false,\r\n null,\r\n saveEnabledFlag\r\n );\r\n\r\n allSteps.push(step);\r\n }\r\n\r\n return allSteps;\r\n }\r\n\r\n\r\n // returns the index of the step\r\n indexOfStepByCode(stepCode: string): number {\r\n let stepIndex = -1;\r\n\r\n for (let testStepIndex = 0; testStepIndex < this.allSteps.length; testStepIndex++) {\r\n const indexStep = this.allSteps[testStepIndex];\r\n\r\n // if this is the step\r\n if (indexStep.code === stepCode) {\r\n stepIndex = testStepIndex;\r\n }\r\n }\r\n\r\n return stepIndex;\r\n }\r\n\r\n\r\n // returns the index of the step\r\n indexOfStep(step: PlanOrderProgressBarStep): number {\r\n return this.indexOfStepByCode(step.code);\r\n }\r\n\r\n\r\n // returns the next step\r\n getNextStep(): PlanOrderProgressBarStep {\r\n let nextStep: PlanOrderProgressBarStep = null;\r\n\r\n if (this.currentStep) {\r\n const currentStepIndex = this.indexOfStep(this.currentStep);\r\n\r\n if (currentStepIndex < (this.allSteps.length - 1)) {\r\n let nextStepIndex = currentStepIndex + 1;\r\n\r\n while (!nextStep && (nextStepIndex < this.allSteps.length)) {\r\n const indexStep = this.allSteps[nextStepIndex];\r\n\r\n if (indexStep.enabledFlag) {\r\n nextStep = indexStep;\r\n }\r\n\r\n nextStepIndex++;\r\n }\r\n }\r\n }\r\n\r\n return nextStep;\r\n }\r\n\r\n\r\n // returns the next step code\r\n getNextRoute(): string {\r\n const nextStep = this.getNextStep();\r\n\r\n let nextRoute = 'review';\r\n\r\n if (nextStep) {\r\n nextRoute = nextStep.route;\r\n }\r\n\r\n return nextRoute;\r\n }\r\n\r\n\r\n // are we prompting for home buyer?\r\n promptForBuyer(application: PlanOrderApplication): boolean {\r\n const newPlanFlag = !application.planID;\r\n\r\n let promptFlag = true;\r\n\r\n // new plans with a transaction type defined\r\n if (newPlanFlag && application.transactionType) {\r\n if (!application.transactionType.promptForHomeBuyerFlag) {\r\n promptFlag = false;\r\n }\r\n }\r\n\r\n return promptFlag;\r\n }\r\n\r\n\r\n // are we prompting for cooperating agent?\r\n promptForCooperatingAgent(application: PlanOrderApplication): boolean {\r\n const newPlanFlag = !application.planID;\r\n\r\n let flag = true;\r\n\r\n if (newPlanFlag) {\r\n const doubleEndFlag = (application.role ? application.role.realtorListingSellingFlag : false);\r\n\r\n if (doubleEndFlag) {\r\n flag = false;\r\n }\r\n }\r\n\r\n\r\n // if a transaction type has been selected\r\n const promptForCooperatingAgentFlag =\r\n (application.transactionType ?\r\n application.transactionType.promptForCooperatingAgentFlag :\r\n true);\r\n\r\n if (!promptForCooperatingAgentFlag) {\r\n flag = false;\r\n }\r\n\r\n // if the initiating agent has been skipped\r\n if (application.initiatingAgentSkippedFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\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 {EventEmitter, Injectable} from '@angular/core';\r\nimport {\r\n ActivityResult,\r\n ActivityResultError,\r\n LocalStorageService,\r\n PhxHttpClientService,\r\n PhxHttpService,\r\n PhxSerializer\r\n} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderApplication, PlanOrderApplicationUpdates} from '../_models/plan-order-application';\r\nimport {PlanOrderProgress} from '../_models/plan-order-progress';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {\r\n Customer,\r\n CustomerDomainFactoryService,\r\n CustomerLookupValueService,\r\n CustomerUpdateService,\r\n Employer,\r\n EmployerDomainFactoryService,\r\n EmployerUpdateService\r\n} from '@orhp/phx-customer-ui-module';\r\nimport {\r\n IProperty,\r\n Property,\r\n PropertyDomainFactoryService,\r\n PropertyLookupValueService,\r\n PropertyUpdateService\r\n} from '@orhp/phx-property-ui-module';\r\nimport {Response} from '@angular/http';\r\nimport {PlanOrderService} from './plan-order.service';\r\nimport {PlanUpdateService} from '@orhp/phx-plan-ui-module';\r\nimport {PlanInvoicePaymentRequest, PlanInvoicePaymentResult, PlanInvoiceService} from '@orhp/phx-accounting-ui-module';\r\nimport {HttpErrorResponse} from '@angular/common/http';\r\nimport {PlanOrderConfirmationRequest} from '../_src/plan-order-confirmation-request';\r\n\r\n\r\n@Injectable()\r\n\r\n\r\nexport class PlanOrderUpdateService {\r\n\r\n constructor(private http: PhxHttpService,\r\n private httpClient: PhxHttpClientService,\r\n private localStorageService: LocalStorageService,\r\n private planUpdateService: PlanUpdateService,\r\n private planOrderService: PlanOrderService,\r\n private propertyDomainFactoryService: PropertyDomainFactoryService,\r\n private employerDomainFactoryService: EmployerDomainFactoryService,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private employerUpdateService: EmployerUpdateService,\r\n private customerUpdateService: CustomerUpdateService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private propertyLookupValueService: PropertyLookupValueService,\r\n private propertyUpdateService: PropertyUpdateService,\r\n private planInvoiceService: PlanInvoiceService\r\n ) { }\r\n\r\n\r\n\r\n applicationUpdateInProcess = false;\r\n\r\n updateProgressEventEmitter: EventEmitter = new EventEmitter();\r\n\r\n\r\n // submits the application for update\r\n submitApplication(application: PlanOrderApplication): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n let observableContainer: PlanOrderObservableContainer = null;\r\n const observables: PlanOrderObservableContainer[] = [];\r\n\r\n // create new initiating agent office\r\n if (application.initiatingAgentOffice && application.initiatingAgentOffice.hasUpdateFlag) {\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitEmployerUpdate(application, application.initiatingAgentOffice);\r\n observableContainer.statusMessage = 'Saving Initiating Agent Office';\r\n\r\n observables.push(observableContainer);\r\n }\r\n\r\n\r\n // create new cooperating agent office\r\n if (application.cooperatingAgentOffice && application.cooperatingAgentOffice.hasUpdateFlag) {\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitEmployerUpdate(application, application.cooperatingAgentOffice);\r\n observableContainer.statusMessage = 'Saving Cooperating Agent Office';\r\n\r\n observables.push(observableContainer);\r\n }\r\n\r\n\r\n // create new closing office\r\n if (application.closingOffice && application.closingOffice.hasUpdateFlag) {\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitEmployerUpdate(application, application.closingOffice);\r\n observableContainer.statusMessage = 'Saving Closing Office';\r\n\r\n observables.push(observableContainer);\r\n }\r\n\r\n\r\n // update initiating agent\r\n if (application.initiatingAgent && application.initiatingAgent.hasUpdateFlag) {\r\n application.initiatingAgent.employer = application.initiatingAgentOffice;\r\n\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitCustomerUpdate(application, application.initiatingAgent);\r\n observableContainer.statusMessage = 'Saving Initiating Agent';\r\n\r\n observables.push(observableContainer);\r\n\r\n }\r\n\r\n\r\n // update cooperating agent\r\n if (application.cooperatingAgent && application.cooperatingAgent.hasUpdateFlag) {\r\n application.cooperatingAgent.employer = application.cooperatingAgentOffice;\r\n\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitCustomerUpdate(application, application.cooperatingAgent);\r\n observableContainer.statusMessage = 'Saving Cooperating Agent';\r\n\r\n observables.push(observableContainer);\r\n }\r\n\r\n\r\n // update closing officer\r\n if (application.closingAgent && application.closingAgent.hasUpdateFlag) {\r\n application.closingAgent.employer = application.closingOffice;\r\n\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitCustomerUpdate(application, application.closingAgent);\r\n observableContainer.statusMessage = 'Saving Closing Agent';\r\n\r\n observables.push(observableContainer);\r\n }\r\n\r\n\r\n // update home buyers\r\n const homeBuyers = (application.homeBuyers || []);\r\n\r\n for (let customerIndex = 0; customerIndex < homeBuyers.length; customerIndex++) {\r\n const indexCustomer = homeBuyers[customerIndex];\r\n\r\n if (indexCustomer.hasUpdateFlag) {\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitCustomerUpdate(application, indexCustomer);\r\n observableContainer.statusMessage = 'Saving Home Buyer #' + (customerIndex + 1);\r\n\r\n observables.push(observableContainer);\r\n }\r\n }\r\n\r\n // update home sellers\r\n const homeSellers = (application.homeSellers || []);\r\n\r\n for (let customerIndex = 0; customerIndex < homeSellers.length; customerIndex++) {\r\n const indexCustomer = homeSellers[customerIndex];\r\n\r\n if (indexCustomer.hasUpdateFlag) {\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitCustomerUpdate(application, indexCustomer);\r\n observableContainer.statusMessage = 'Saving Home Seller #' + (customerIndex + 1);\r\n\r\n observables.push(observableContainer);\r\n }\r\n }\r\n\r\n\r\n // update property\r\n if (application.property.hasUpdateFlag) {\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitPropertyUpdate(application, application.property);\r\n observableContainer.statusMessage = 'Saving Property Address';\r\n\r\n observables.push(observableContainer);\r\n }\r\n\r\n\r\n // update mailing address\r\n if (application.hasUpdate(PlanOrderApplicationUpdates.mailingAddress)) {\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitMailingAddressUpdate(application);\r\n observableContainer.statusMessage = 'Saving Mailing Address';\r\n\r\n observables.push(observableContainer);\r\n }\r\n\r\n\r\n\r\n // should a credit card payment be made?\r\n let creditCardPaymentFlag = false;\r\n const paymentUpdateFlag = application.hasUpdate(PlanOrderApplicationUpdates.payment);\r\n\r\n // if we're paying immediately\r\n if (application.payNowFlag) {\r\n // if it's a new plan, submit the payment\r\n if (!application.planID) {\r\n creditCardPaymentFlag = true;\r\n }\r\n\r\n // if there's a payment update, submit the payment\r\n if (paymentUpdateFlag) {\r\n creditCardPaymentFlag = true;\r\n }\r\n }\r\n\r\n\r\n // if a credit card payment is being made, don't send confirmations immediately\r\n if (creditCardPaymentFlag) {\r\n application.sendConfirmationsOnSaveFlag = false;\r\n }\r\n\r\n\r\n\r\n // update application\r\n let updatePlanFlag = true;\r\n updatePlanFlag = updatePlanFlag && (application.updates.length > 0);\r\n\r\n const planStatus = application.planStatus;\r\n\r\n if (planStatus && !planStatus.editableFlag) {\r\n updatePlanFlag = false;\r\n }\r\n\r\n if (updatePlanFlag) {\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitApplicationUpdate(application);\r\n observableContainer.statusMessage = 'Saving Application';\r\n\r\n observables.push(observableContainer);\r\n }\r\n\r\n\r\n\r\n\r\n // if we're performing a credit card payment\r\n if (creditCardPaymentFlag) {\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.submitCreditCardPayment(application);\r\n observableContainer.statusMessage = 'Processing Payment';\r\n\r\n observables.push(observableContainer);\r\n }\r\n\r\n\r\n // if we need to send order confirmations\r\n if (!application.sendConfirmationsOnSaveFlag) {\r\n const newPlanFlag = !application.planID;\r\n\r\n observableContainer = new PlanOrderObservableContainer();\r\n observableContainer.observable = this.sendOrderConfirmations(application, newPlanFlag);\r\n observableContainer.statusMessage = 'Sending Confirmations/Invoices';\r\n\r\n observables.push(observableContainer);\r\n }\r\n\r\n\r\n // set that the application confirmation hasn't been sent\r\n application.confirmationSentFlag = false;\r\n\r\n this.planOrderService.persistPlanOrderApplication(application);\r\n\r\n\r\n\r\n setTimeout(() => {\r\n this.applicationUpdateInProcess = true;\r\n\r\n this.dequeueObservable(subscriber, application, observables, 0);\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // dequeues another observable\r\n dequeueObservable(subscriber: Subscriber,\r\n application: PlanOrderApplication,\r\n observableContainers: PlanOrderObservableContainer[],\r\n observableIndex: number = 0,\r\n previousProgress?: PlanOrderProgress) {\r\n\r\n try {\r\n\r\n // if there's another observable left\r\n if (observableIndex < observableContainers.length) {\r\n const observableContainer = observableContainers[observableIndex];\r\n\r\n console.log(observableContainer.statusMessage);\r\n\r\n const percentComplete = Math.floor(((observableIndex + 1) / (observableContainers.length + 1)) * 100);\r\n const progress = new PlanOrderProgress(percentComplete, observableContainer.statusMessage, true);\r\n\r\n subscriber.next(progress);\r\n\r\n this.updateProgressEventEmitter.emit(progress);\r\n\r\n observableContainer.observable.subscribe((result: PlanOrderUpdateResult) => {\r\n // if the result was successful\r\n if (result.successFlag) {\r\n // dequeue the next observable\r\n this.dequeueObservable(subscriber, application, observableContainers, (observableIndex + 1), progress);\r\n\r\n // if the result was not successful\r\n } else {\r\n application.saveErrors = result.errors;\r\n\r\n this.planOrderService.persistPlanOrderApplication(application);\r\n\r\n const failedProgress = new PlanOrderProgress(100, result.resultMessage, false);\r\n\r\n subscriber.next(failedProgress);\r\n subscriber.complete();\r\n }\r\n });\r\n\r\n // if there are no observables left\r\n } else {\r\n application.saveErrors = null;\r\n\r\n this.applicationUpdateInProcess = false;\r\n\r\n const completeProgress = new PlanOrderProgress(100, 'Complete', true);\r\n subscriber.next(completeProgress);\r\n\r\n this.updateProgressEventEmitter.emit(completeProgress);\r\n\r\n subscriber.complete();\r\n }\r\n\r\n } catch (error) {\r\n this.planOrderService.planOrderApplication.logError('phx.toolbox.ui.DequeueError', error);\r\n this.planOrderService.persistPlanOrderApplication();\r\n }\r\n }\r\n\r\n\r\n\r\n // submits an employer update\r\n submitEmployerUpdate(application: PlanOrderApplication, employer: Employer): Observable {\r\n\r\n const genericError = new ActivityResultError();\r\n genericError.identifier = 'phx.toolbox.ui.GenericEmployerUpdateError';\r\n genericError.message = 'There was an error while updating an Office';\r\n\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n\r\n const returnResult = new PlanOrderUpdateResult();\r\n\r\n this.employerUpdateService\r\n .performEmployerUpdate(employer)\r\n .subscribe((updateResult: ActivityResult) => {\r\n\r\n const updatedEmployer = updateResult.object;\r\n\r\n // if the employer was valid\r\n if (updatedEmployer && updatedEmployer.employerID) {\r\n this.employerDomainFactoryService.populateEmployer(employer, updatedEmployer.jsonValues());\r\n\r\n returnResult.successFlag = true;\r\n\r\n // if the employer wasn't valid\r\n } else {\r\n returnResult.successFlag = false;\r\n\r\n if (updateResult.errors.length) {\r\n returnResult.addErrorsFromResult(updateResult);\r\n\r\n } else {\r\n returnResult.errors.push(genericError);\r\n }\r\n }\r\n\r\n subscriber.next(returnResult);\r\n subscriber.complete();\r\n\r\n }, (error: any) => {\r\n returnResult.successFlag = false;\r\n returnResult.errors.push(genericError);\r\n\r\n subscriber.next(returnResult);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // submits a customer update\r\n submitCustomerUpdate(application: PlanOrderApplication, customer: Customer): Observable {\r\n\r\n const genericError = new ActivityResultError();\r\n genericError.identifier = 'phx.toolbox.ui.GenericCustomerUpdateError';\r\n genericError.message = 'There was an error while updating an Agent/Buyer/Seller';\r\n\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n\r\n const returnResult = new PlanOrderUpdateResult();\r\n\r\n this.customerUpdateService\r\n .performCustomerUpdate(customer)\r\n .subscribe((updateResult: ActivityResult) => {\r\n\r\n const returnedCustomer = updateResult.object;\r\n\r\n // if a valid returned customer was found\r\n if (returnedCustomer && returnedCustomer.customerID) {\r\n const returnedCustomerJsonObject = returnedCustomer.jsonValues();\r\n\r\n this.customerDomainFactoryService.populateCustomer(customer, returnedCustomerJsonObject);\r\n\r\n returnResult.successFlag = true;\r\n\r\n // if no valid customer was returned\r\n } else {\r\n returnResult.successFlag = false;\r\n\r\n // if there were any errors\r\n if (updateResult.errors.length) {\r\n returnResult.addErrorsFromResult(updateResult);\r\n\r\n // include a generic error\r\n } else {\r\n returnResult.errors.push(genericError);\r\n }\r\n }\r\n\r\n subscriber.next(returnResult);\r\n subscriber.complete();\r\n\r\n }, (error: any) => {\r\n returnResult.successFlag = false;\r\n returnResult.errors.push(genericError);\r\n\r\n subscriber.next(returnResult);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // submits a property update\r\n submitPropertyUpdate(application: PlanOrderApplication, property: Property): Observable {\r\n\r\n const genericError = new ActivityResultError();\r\n genericError.identifier = 'phx.toolbox.ui.GenericPropertyUpdateError';\r\n genericError.message = 'There was an error while updating the Property Address';\r\n\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n\r\n const updateResult = new PlanOrderUpdateResult();\r\n\r\n this.propertyUpdateService\r\n .performPropertyUpdate(property)\r\n .subscribe((result: ActivityResult) => {\r\n\r\n const propertyJsonObject = result.object;\r\n\r\n if (propertyJsonObject && propertyJsonObject.propertyID) {\r\n this.propertyDomainFactoryService.populateProperty(property, propertyJsonObject);\r\n\r\n updateResult.successFlag = true;\r\n\r\n } else {\r\n updateResult.successFlag = false;\r\n\r\n if (result.errors.length) {\r\n updateResult.addErrorsFromResult(result);\r\n\r\n } else {\r\n updateResult.errors.push(genericError);\r\n }\r\n }\r\n\r\n subscriber.next(updateResult);\r\n subscriber.complete();\r\n\r\n }, (error: any) => {\r\n updateResult.successFlag = false;\r\n updateResult.errors.push(genericError);\r\n\r\n subscriber.next(updateResult);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n\r\n // submits a mailing address update\r\n submitMailingAddressUpdate(application: PlanOrderApplication): Observable {\r\n\r\n const genericError = new ActivityResultError();\r\n genericError.identifier = 'phx.toolbox.ui.GenericMailingAddressUpdateError';\r\n genericError.message = 'There was an error while updating the Mailing Address';\r\n\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n\r\n const updateResult = new PlanOrderUpdateResult();\r\n\r\n this.planUpdateService.updateMailingAddress(application.planID, application.mailingAddress)\r\n .subscribe((resultFlag: boolean) => {\r\n\r\n updateResult.successFlag = resultFlag;\r\n\r\n if (!resultFlag) {\r\n updateResult.errors.push(genericError);\r\n }\r\n\r\n subscriber.next(updateResult);\r\n subscriber.complete();\r\n\r\n }, (error: any) => {\r\n updateResult.successFlag = false;\r\n updateResult.errors.push(genericError);\r\n\r\n subscriber.next(updateResult);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n // submits an application update\r\n submitApplicationUpdate(application: PlanOrderApplication): Observable {\r\n\r\n const genericError = new ActivityResultError();\r\n genericError.identifier = 'phx.toolbox.ui.GenericPlanUpdateError';\r\n genericError.message = 'There was an error while updating your Application';\r\n\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n\r\n const url = 'planOrder/put';\r\n const formBody = JSON.stringify(application.jsonValues());\r\n\r\n const updateResult = new PlanOrderUpdateResult();\r\n\r\n this.http.post(url, formBody).subscribe((response: Response) => {\r\n const responseResult = new ActivityResult(response.json());\r\n\r\n // if the update was successful\r\n if (responseResult.object && responseResult.object.guid) {\r\n application.planID = PhxSerializer.toInteger(responseResult.object.planID);\r\n application.planGUID = (responseResult.object.guid as string);\r\n\r\n this.planOrderService.persistPlanOrderApplication();\r\n\r\n updateResult.successFlag = true;\r\n\r\n // if the update was not successful\r\n } else {\r\n updateResult.successFlag = false;\r\n\r\n if (responseResult.errors.length) {\r\n updateResult.addErrorsFromResult(responseResult);\r\n\r\n } else {\r\n updateResult.errors.push(genericError);\r\n\r\n }\r\n }\r\n\r\n subscriber.next(updateResult);\r\n subscriber.complete();\r\n\r\n }, (error: Response) => {\r\n updateResult.successFlag = false;\r\n updateResult.errors.push(genericError);\r\n\r\n subscriber.next(updateResult);\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n submitCreditCardPayment(application: PlanOrderApplication): Observable {\r\n const genericError = new ActivityResultError();\r\n genericError.identifier = 'phx.toolbox.ui.GenericCreditCardPaymentError';\r\n genericError.message = 'There was an error while processing your payment';\r\n\r\n const observable = new Observable((subscriber: Subscriber) => {\r\n const paymentRequest = new PlanInvoicePaymentRequest();\r\n paymentRequest.planID = application.planID;\r\n paymentRequest.paymentNumbers = 1;\r\n paymentRequest.creditCardFlag = true;\r\n paymentRequest.directProcessFlag = application.directProcessFlag;\r\n\r\n const updateResult = new PlanOrderUpdateResult();\r\n updateResult.successFlag = false;\r\n\r\n this.planInvoiceService.processPayment(paymentRequest)\r\n .subscribe((paymentResult: ActivityResult) => {\r\n application.ccPaymentResult = paymentResult;\r\n\r\n this.planOrderService.persistPlanOrderApplication();\r\n\r\n // was the payment successful?\r\n const invoicePaymentResult = (paymentResult ? paymentResult.object : null);\r\n const creditCardSaleResult = (invoicePaymentResult ? invoicePaymentResult.creditCardSalesResult : null);\r\n\r\n if (creditCardSaleResult && creditCardSaleResult.successFlag) {\r\n updateResult.successFlag = true;\r\n }\r\n\r\n subscriber.next(updateResult);\r\n subscriber.complete();\r\n\r\n }, (error: HttpErrorResponse) => {\r\n const ccPaymentResult = new ActivityResult();\r\n ccPaymentResult.errors.push(genericError);\r\n\r\n genericError.message = 'Error processing payment: ' + error.message;\r\n\r\n application.ccPaymentResult = ccPaymentResult;\r\n\r\n this.planOrderService.persistPlanOrderApplication();\r\n\r\n subscriber.next(updateResult);\r\n subscriber.complete();\r\n }\r\n );\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // sends order confirmations\r\n sendOrderConfirmations(application: PlanOrderApplication, newPlanFlag: boolean): Observable {\r\n const genericError = new ActivityResultError();\r\n genericError.identifier = 'phx.toolbox.ui.GenericOrderConfirmationError';\r\n genericError.message = 'There was an error while processing your payment';\r\n\r\n const observable = new Observable((subscriber: Subscriber) => {\r\n const request = new PlanOrderConfirmationRequest();\r\n request.newPlanFlag = true;\r\n request.planID = application.planID;\r\n request.additionalEmailAddresses = application.additionalEmailAddresses;\r\n\r\n if (application.property) {\r\n request.propertyID = application.property.propertyID;\r\n }\r\n\r\n if (application.product) {\r\n request.productID = application.product.productID;\r\n }\r\n\r\n if (application.initiatingAgent) {\r\n request.initiatingAgentCustomerID = application.initiatingAgent.customerID;\r\n }\r\n\r\n const updateResult = new PlanOrderUpdateResult();\r\n\r\n // return success\r\n updateResult.successFlag = true;\r\n\r\n application.confirmationSentFlag = true;\r\n this.planOrderService.persistPlanOrderApplication();\r\n\r\n // send order confirmations\r\n this.planOrderService.sendPlanOrderConfirmation(request).subscribe((result: ActivityResult) => {\r\n this.planOrderService.persistPlanOrderApplication();\r\n\r\n subscriber.next(updateResult);\r\n subscriber.complete();\r\n\r\n }, (error: HttpErrorResponse) => {\r\n const confSendResult = new ActivityResult();\r\n confSendResult.errors.push(genericError);\r\n\r\n genericError.message = 'Error sending confirmation: ' + error.message;\r\n\r\n // application.ccPaymentResult = ccPaymentResult;\r\n\r\n this.planOrderService.persistPlanOrderApplication();\r\n\r\n subscriber.next(updateResult);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\n\r\nclass PlanOrderObservableContainer {\r\n observable: Observable = null;\r\n statusMessage = '';\r\n}\r\n\r\n\r\nclass PlanOrderUpdateResult {\r\n successFlag = false;\r\n resultMessage = '';\r\n errors: ActivityResultError[] = [];\r\n\r\n\r\n // adds errors from a result\r\n addErrorsFromResult(result: ActivityResult) {\r\n if (result && result.errors) {\r\n result.errors.forEach((indexError: ActivityResultError) => {\r\n this.errors.push(indexError);\r\n });\r\n }\r\n }\r\n\r\n\r\n // adds a single error\r\n addError(identifier: string, message: string) {\r\n const error = new ActivityResultError();\r\n error.identifier = identifier;\r\n error.message = message;\r\n\r\n this.errors.push(error);\r\n }\r\n\r\n}\r\n\r\n","\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from './plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderWildcardStepResolver implements Resolve {\r\n\r\n constructor(private router: Router,\r\n private urlSerializer: UrlSerializer,\r\n private planOrderService: PlanOrderService) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n // what's the plan # we're loading\r\n const planIDText = (snapshot.params['planID'] || this.planOrderService.newPlanRoute).toLowerCase();\r\n const validPlanFlag = (!isNaN(planIDText) || (planIDText === this.planOrderService.newPlanRoute.toLowerCase()));\r\n const newPlanFlag = (planIDText === this.planOrderService.newPlanRoute) || (isNaN(planIDText));\r\n\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, planIDText);\r\n\r\n let redirectTo: string = null;\r\n\r\n // if the plan number isn't valid\r\n if (!validPlanFlag) {\r\n RoutingUtility.removeLastUrlSegmentFromTree(urlTree);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n resolve(false);\r\n\r\n // if there are no children, we need to redirect somewhere\r\n } else {\r\n if (snapshot.children.length === 0) {\r\n // if the plan # is new, redirect to transaction type\r\n if (newPlanFlag) {\r\n redirectTo = 'transaction-type';\r\n\r\n // existing plans, redirect to review\r\n } else {\r\n redirectTo = 'review';\r\n }\r\n }\r\n\r\n // if we need to redirect somewhere\r\n if (redirectTo) {\r\n const newSegment = new UrlSegment(redirectTo, {});\r\n\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, newSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n resolve(false);\r\n\r\n // if we're allowing the user through\r\n } else {\r\n resolve(true);\r\n }\r\n }\r\n\r\n\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n\r\n","\r\nimport {EventEmitter, Injectable} from '@angular/core';\r\nimport {Response} from '@angular/http';\r\nimport {Observable} from 'rxjs/Observable';\r\n\r\nimport {PlanOrderApplication, PlanOrderApplicationUpdates} from '../_models/plan-order-application';\r\n\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\n\r\nimport {ProductLookupValueService, ProductLookupService} from '@orhp/phx-product-ui-module';\r\n\r\nimport {ActivityResult, IActivityResult, LocalStorageService, PhxHttpClientService, PhxHttpService} from '@orhp/phx-common-ui-module';\r\n\r\nimport {PropertyLookupValueService} from '@orhp/phx-property-ui-module';\r\n\r\nimport {PlanOrderLookupValueService} from './plan-order-lookup-value.service';\r\nimport {PlanOrderProgressBarStep} from '../_models/progress-bar-step';\r\n\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {PlanOrderProgress} from '../_models/plan-order-progress';\r\nimport {PlanOrderUpdateService} from './plan-order-update.service';\r\nimport {PlanOrderStepService} from './plan-order-step.service';\r\nimport {SessionStorage} from '@orhp/phx-localstorage-ui-module';\r\nimport {ActivatedRoute, ActivatedRouteSnapshot} from '@angular/router';\r\nimport {MessagingFormatter} from '@orhp/phx-common-ui-module';\r\nimport {CustomerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {PropertyDomainFactoryService} from '@orhp/phx-property-ui-module';\r\nimport {PlanOrderDomainFactoryService} from './plan-order-domain-factory.service';\r\nimport {PlanOrderAuthService} from './plan-order-auth.service';\r\nimport {PlanOrderConfirmationRequest} from '../_src/plan-order-confirmation-request';\r\nimport {HttpErrorResponse} from '@angular/common/http';\r\nimport {CustomUrlParser} from '../../../_src/custom-url-parser';\r\n\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderService {\r\n\r\n // we're storing the application here\r\n @SessionStorage('phx.toolbox.ui.PlanOrderApplicationJsonObject')\r\n planOrderApplicationJsonObject: any;\r\n\r\n\r\n // we'll keep the backup version here\r\n @SessionStorage('phx.toolbox.ui.PlanOrderApplicationBackupJsonObject')\r\n planOrderApplicationBackupJsonObject: any;\r\n\r\n\r\n\r\n @SessionStorage('phx.toolbox.ui.PlanOrderCustomOrderingUrl')\r\n planOrderCustomOrderingUrl: string;\r\n\r\n\r\n\r\n // here's a converted version of the application\r\n private _planOrderApplication: PlanOrderApplication = null;\r\n\r\n get planOrderApplication(): PlanOrderApplication {\r\n // if the application hasn't been loaded\r\n if (!this._planOrderApplication) {\r\n this._planOrderApplication = this.planOrderDomainFactoryService.newApplication();\r\n\r\n // validate that the custom URLs match\r\n const currentCustomUrl = CustomUrlParser.getCustomUrl() || '';\r\n const appCustomUrl = this.planOrderCustomOrderingUrl || '';\r\n const customUrlMatch = currentCustomUrl === appCustomUrl;\r\n\r\n // look for an existing application saved\r\n const json = this.planOrderApplicationJsonObject;\r\n\r\n // if the application was saved and the custom URLs match, load it\r\n if (json && customUrlMatch) {\r\n this.planOrderDomainFactoryService.populatePersistedApplication(this._planOrderApplication, json);\r\n\r\n // we have a new application, so persist it as-is\r\n } else {\r\n this.planOrderCustomOrderingUrl = CustomUrlParser.getCustomUrl();\r\n this.persistPlanOrderApplication();\r\n }\r\n }\r\n\r\n return this._planOrderApplication;\r\n }\r\n\r\n set planOrderApplication(application: PlanOrderApplication) {\r\n this._planOrderApplication = application;\r\n\r\n this.persistPlanOrderApplication();\r\n }\r\n\r\n\r\n newApplicationEventEmitter = new EventEmitter();\r\n\r\n\r\n\r\n newPlanRoute = 'new-application';\r\n forceNewPlanRoute = 'clear-application';\r\n\r\n\r\n moduleInitFlag = false;\r\n\r\n\r\n\r\n\r\n constructor(private planOrderLookupValueService: PlanOrderLookupValueService,\r\n private planOrderDomainFactoryService: PlanOrderDomainFactoryService,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private httpClient: PhxHttpClientService,\r\n private http: PhxHttpService) {\r\n\r\n // on logout, clear the plan order application\r\n this.planOrderAuthService.onLogout.subscribe((logoutFlag: boolean) => {\r\n if (logoutFlag) {\r\n this.planOrderApplication = null;\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n /**\r\n * Returns the auth service\r\n */\r\n authService(): PlanOrderAuthService {\r\n return this.planOrderAuthService;\r\n }\r\n\r\n\r\n\r\n // initializes the module, if needed\r\n initModuleIfNeeded(): Observable {\r\n let observable: Observable = null;\r\n\r\n // if the module has not been init\r\n if (!this.moduleInitFlag) {\r\n observable = this.initModule();\r\n\r\n // if the module has been init\r\n } else {\r\n observable = Observable.create((subscriber: Subscriber) => {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // initializes the module\r\n initModule(): Observable {\r\n const observable: Observable = Observable.create((subscriber) => {\r\n this.planOrderLookupValueService.loadValues().subscribe((boolValue) => {\r\n this.moduleInitFlag = true;\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // saves the application\r\n persistPlanOrderApplication(application?: PlanOrderApplication): void {\r\n let formBody = '{}';\r\n\r\n if (!application) {\r\n application = this._planOrderApplication;\r\n }\r\n\r\n // pull the persistence JSON values\r\n if (!application) {\r\n this.planOrderApplicationJsonObject = null;\r\n\r\n this.planOrderApplicationBackupJsonObject = null;\r\n\r\n } else {\r\n const applicationJsonObject = application.persistenceJsonValues();\r\n\r\n this.planOrderApplicationJsonObject = applicationJsonObject;\r\n\r\n const logObject = {\r\n 'currentStep': (application.currentStep || ''),\r\n 'applicationJson': JSON.stringify(applicationJsonObject)\r\n };\r\n\r\n formBody = JSON.stringify(logObject);\r\n }\r\n\r\n const apiUrl = 'planOrder/logTracking';\r\n\r\n this.http.post(apiUrl, formBody).subscribe((response: Response) => {\r\n // don't do anything here\r\n });\r\n }\r\n\r\n\r\n // backs up a copy of the application\r\n backupPlanOrderApplication() {\r\n this.planOrderApplicationBackupJsonObject = this.planOrderApplicationJsonObject;\r\n }\r\n\r\n\r\n // restores a copy of the application\r\n restorePlanOrderApplicationBackup() {\r\n this.planOrderApplicationJsonObject = this.planOrderApplicationBackupJsonObject;\r\n\r\n this._planOrderApplication = null;\r\n }\r\n\r\n\r\n\r\n // sends a plan order confirmation\r\n sendPlanOrderConfirmation(request: PlanOrderConfirmationRequest): Observable {\r\n const observable = new Observable((subscriber: Subscriber) => {\r\n const url = 'planOrder/sendOrderConfirmations';\r\n const params = request.jsonValues();\r\n\r\n this.httpClient.post(url, params).subscribe((json: IActivityResult) => {\r\n let result: ActivityResult = null;\r\n\r\n if (json) {\r\n result = new ActivityResult(json);\r\n }\r\n\r\n subscriber.next(result);\r\n subscriber.complete();\r\n\r\n }, (error: HttpErrorResponse) => {\r\n console.error('Error sending order confirmation:');\r\n console.error(error);\r\n\r\n subscriber.next(null);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n /**\r\n * Clears the application\r\n */\r\n clear() {\r\n this.planOrderApplication = null;\r\n this.planOrderCustomOrderingUrl = null;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n\r\n","\r\nimport {Injectable} from '@angular/core';\r\nimport {PhxHttpService} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderService} from './plan-order.service';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {IPlanQuoteResult, PlanQuoteResult} from '../_src/plan-quote-result';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {MessagingFormatter} from '@orhp/phx-common-ui-module';\r\nimport {ProductCoverage} from '@orhp/phx-product-ui-module';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {PlanQuoteRequest} from '../_src/plan-quote-request';\r\nimport {Http, RequestOptionsArgs, Response} from '@angular/http';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {IMapItem, MapUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanOption} from '@orhp/phx-plan-ui-module';\r\nimport {AuthenticationService} from '../../../login';\r\n\r\n@Injectable()\r\n\r\nexport class PlanQuoteService {\r\n\r\n constructor(private http: Http,\r\n private systemService: PhxSystemService,\r\n private planOrderService: PlanOrderService,\r\n private authenticationService: AuthenticationService\r\n ) {\r\n }\r\n\r\n\r\n // fetches a plan quote\r\n fetchPlanQuote(request: PlanQuoteRequest): Observable {\r\n const options = {\r\n headers: this.systemService.headers()\r\n };\r\n\r\n options.headers.set('Content-Type', 'text/plain');\r\n\r\n const urlParams = new URLSearchParams();\r\n urlParams.set('pid', String(request.product.productID));\r\n urlParams.set('optionID', request.coverageIDList);\r\n urlParams.set('pt', request.propertyType.propertyType);\r\n\r\n if (request.emailAddress) {\r\n urlParams.set('emailAddress', request.emailAddress);\r\n }\r\n\r\n if (!!this.authenticationService.productOffice && !!this.authenticationService.productOffice.homeBuyerEmailRequiredFlag) {\r\n urlParams.set('dtc', '1');\r\n } else {\r\n urlParams.set('dtc', '0');\r\n }\r\n\r\n if (request.productCoverages) {\r\n request.productCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n const optionUnits = request.optionUnitsByCoverageID[indexCoverage.coverageID];\r\n\r\n if (optionUnits) {\r\n const paramName = 'num' + String(indexCoverage.coverageID) + 'total';\r\n\r\n const paramValue = String(optionUnits.optionUnits);\r\n\r\n urlParams.set(paramName, paramValue);\r\n }\r\n });\r\n }\r\n\r\n\r\n let url = this.systemService.legacyToolboxUrl + 'plan/plan_quote_api.cfm';\r\n url = StringUtility.urlAppend(url, urlParams.toString());\r\n\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n this.http.get(url, options).subscribe((response: Response) => {\r\n const jsonObject = response.json();\r\n\r\n const result = (jsonObject ? this.newPlanQuoteResult(jsonObject) : null);\r\n\r\n subscriber.next(result);\r\n subscriber.complete();\r\n\r\n }, (error: Response) => {\r\n console.log('Error generating quote:');\r\n console.log(error);\r\n\r\n subscriber.next(null);\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // generates a new plan quote request\r\n newPlanQuoteRequest(jsonObject?: any): PlanQuoteRequest {\r\n const request = new PlanQuoteRequest(this);\r\n\r\n return request;\r\n }\r\n\r\n\r\n // generates a new plan quote result\r\n newPlanQuoteResult(jsonObject?: any): PlanQuoteResult {\r\n const result = new PlanQuoteResult(this);\r\n\r\n if (jsonObject) {\r\n const jsonValues = jsonObject;\r\n\r\n result.emailSuccessFlag = MessagingFormatter.stringToBoolean(jsonValues.emailSuccessFlag);\r\n result.errorMessage = (jsonValues.errorMessage || '');\r\n result.quoteHtml = (jsonValues.quoteHtml || '');\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n}\r\n\r\n","import {PhxSerializer} from '@orhp/phx-common-ui-module';\r\n\r\nexport class PlanOrderConfirmationRequest {\r\n\r\n newPlanFlag = false;\r\n planID: number = null;\r\n additionalEmailAddresses: string[] = null;\r\n propertyID: number = null;\r\n productID: number = null;\r\n initiatingAgentCustomerID: number = null;\r\n\r\n jsonValues(): IPlanOrderConfirmationRequest {\r\n const request = ({} as IPlanOrderConfirmationRequest);\r\n\r\n request.newPlanFlag = PhxSerializer.fromBoolean(this.newPlanFlag);\r\n request.planID = PhxSerializer.fromInteger(this.planID);\r\n\r\n if (!!(this.additionalEmailAddresses || []).length) {\r\n request.additionalEmailAddresses = this.additionalEmailAddresses;\r\n }\r\n\r\n request.propertyID = PhxSerializer.fromInteger(this.propertyID);\r\n request.productID = PhxSerializer.fromInteger(this.productID);\r\n request.initiatingAgentCustomerID = PhxSerializer.fromInteger(this.initiatingAgentCustomerID);\r\n\r\n return request;\r\n }\r\n\r\n}\r\n\r\nexport interface IPlanOrderConfirmationRequest {\r\n\r\n newPlanFlag: any;\r\n planID: any;\r\n additionalEmailAddresses: any;\r\n propertyID: any;\r\n productID: any;\r\n initiatingAgentCustomerID: any;\r\n\r\n}\r\n\r\n","\r\nimport {Product} from '@orhp/phx-product-ui-module';\r\nimport {ProductCoverage} from '@orhp/phx-product-ui-module';\r\nimport {PropertyType} from '@orhp/phx-property-ui-module';\r\nimport {PlanQuoteService} from '../_services/plan-quote.service';\r\nimport {UsefulMap} from '@orhp/phx-common-ui-module';\r\n\r\nexport class PlanQuoteRequest {\r\n\r\n planQuoteService: PlanQuoteService = null;\r\n\r\n product: Product = null;\r\n productCoverages: ProductCoverage[] = null;\r\n propertyType: PropertyType = null;\r\n emailAddress: string = null;\r\n\r\n optionUnitsByCoverageID: any = null;\r\n\r\n\r\n get coverageIDList(): string {\r\n let coverageIDList = '';\r\n\r\n if (this.productCoverages) {\r\n this.productCoverages.forEach((indexProductCoverage: ProductCoverage) => {\r\n coverageIDList = (coverageIDList !== '' ? coverageIDList + ',' : '') + String(indexProductCoverage.coverageID);\r\n });\r\n }\r\n\r\n return coverageIDList;\r\n }\r\n\r\n\r\n\r\n constructor(planQuoteService: PlanQuoteService) {\r\n this.planQuoteService = planQuoteService;\r\n }\r\n\r\n\r\n\r\n duplicate(): PlanQuoteRequest {\r\n const request = this.planQuoteService.newPlanQuoteRequest();\r\n\r\n // duplicate basic values\r\n request.product = this.product;\r\n request.propertyType = this.propertyType;\r\n request.emailAddress = this.emailAddress;\r\n\r\n // duplicate coverage array\r\n if (this.productCoverages) {\r\n const productCoverages = [];\r\n const optionUnitsByCoverageID = {};\r\n\r\n this.productCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n productCoverages.push(indexCoverage);\r\n\r\n const optionUnits = optionUnitsByCoverageID[indexCoverage.coverageID];\r\n optionUnitsByCoverageID[indexCoverage.coverageID] = optionUnits;\r\n });\r\n\r\n request.productCoverages = productCoverages;\r\n request.optionUnitsByCoverageID = optionUnitsByCoverageID;\r\n }\r\n\r\n\r\n return request;\r\n }\r\n\r\n}\r\n","\r\nimport {PlanQuoteService} from '../_services/plan-quote.service';\r\n\r\nexport class PlanQuoteResult {\r\n\r\n planQuoteService: PlanQuoteService = null;\r\n\r\n emailSuccessFlag = false;\r\n errorMessage: string = null;\r\n quoteHtml: string = null;\r\n\r\n\r\n constructor(planQuoteService: PlanQuoteService) {\r\n this.planQuoteService = planQuoteService;\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nexport interface IPlanQuoteResult {\r\n emailSuccessFlag: string;\r\n errorMessage: string;\r\n quoteHtml: string;\r\n}\r\n\r\n","export enum DurationEnum {\r\n Y = '/ year',\r\n S = '/ semi-annual',\r\n M = '/ month',\r\n Q = '/ quarter',\r\n T = '/ trimester',\r\n D = '/ day'\r\n}\r\n","module.exports = \"\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
Matching {{this.agentTitle | titlecase}} Found
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n We were able to match the {{this.agentTitle | lowercase}}:\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{this.customer.givenName}} {{this.customer.surName}}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{indexPhone.phoneType.description}}:\\r\\n {{indexPhone.formattedPhoneNumber}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \"\"","\r\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-agent-auto-match',\r\n templateUrl: './agent-auto-match.component.html',\r\n styleUrls: ['./agent-auto-match.component.scss']\r\n})\r\n\r\n\r\nexport class PlanOrderAgentAutoMatchComponent implements OnInit {\r\n\r\n\r\n @Input() customer: Customer = null;\r\n @Input() agentTitle = 'agent';\r\n\r\n @Output() onAgentConfirm = new EventEmitter();\r\n\r\n\r\n constructor() {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n didClickCorrectAgent() {\r\n this.onAgentConfirm.emit(false);\r\n }\r\n\r\n\r\n didClickAcceptAgent() {\r\n this.onAgentConfirm.emit(true);\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"\\r\\n

Cancel Application

\\r\\n\\r\\n\\r\\n
\\r\\n Please correct the validation errors below\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n {{this.planCancelErrorTitle}}\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n {{this.planCancelErrorText}}\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n Plan #: {{this.planOrderApplication.formattedPlanID}}\\r\\n
\\r\\n\\r\\n {{this.property.address}}
\\r\\n {{this.property.city}} {{this.property.stateCode}} {{this.property.zipCode}}\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n Who is requesting the cancellation of the application?\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{indexCustomer.customer.fullName}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{indexCustomer.relationship.description}}\\r\\n\\r\\n \\r\\n {{indexCustomer.relationshipText}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Cancellation Relationship is required\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Why is this Application being cancelled?\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n Cancellation Reason is required\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Other Home Warranty Company:\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n Other Home Warranty Company is required\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n Once cancelled, this application cannot be reinstated. A new application must be placed.\\r\\n
\\r\\n\\r\\n
\\r\\n You must confirm that you want to cancel this Application\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"\"","\r\n\r\n\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {Relationship} from '@orhp/phx-plan-ui-module';\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {CancelReason} from '@orhp/phx-plan-ui-module';\r\nimport {Property} from '@orhp/phx-property-ui-module';\r\nimport {PlanCancelService} from '@orhp/phx-plan-ui-module';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {PlanCancelParams} from '@orhp/phx-plan-ui-module';\r\nimport {PlanCancel} from '@orhp/phx-plan-ui-module';\r\nimport {ActivityResult} from '@orhp/phx-common-ui-module';\r\nimport {Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderLookupService} from '../_services/plan-order-lookup.service';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-cancel',\r\n templateUrl: './cancel.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './cancel.component.scss'\r\n ]\r\n})\r\n\r\n\r\nexport class PlanOrderCancelComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n\r\n cancellationCustomers: CancelRelationshipCustomer[] = null;\r\n\r\n cancelReasons: CancelReason[] = null;\r\n otherWarrantyCancelReasons: CancelReason[] = null;\r\n\r\n selectedCancellationCustomer: CancelRelationshipCustomer = null;\r\n\r\n validationAttemptedFlag = false;\r\n pageStatus: PageStatus = PageStatus.none;\r\n\r\n planCancelErrorTitle: string = null;\r\n planCancelErrorText: string = null;\r\n\r\n userConfirmFlag = false;\r\n\r\n\r\n private _selectedCancelReasonCode: string = null;\r\n\r\n get selectedCancelReasonCode(): string {\r\n return this._selectedCancelReasonCode;\r\n }\r\n\r\n set selectedCancelReasonCode(selectedCancelReasonCode: string) {\r\n if (this._selectedCancelReasonCode !== selectedCancelReasonCode) {\r\n this._selectedCancelReasonCode = selectedCancelReasonCode;\r\n\r\n const cancelReason = this.planLookupValueService.cancelReasonByCode(selectedCancelReasonCode);\r\n\r\n if (cancelReason && !cancelReason.otherWarrantyCompanyGenericFlag) {\r\n this.selectedOtherCompanyCancelReasonCode = null;\r\n }\r\n }\r\n }\r\n\r\n selectedOtherCompanyCancelReasonCode: string = null;\r\n\r\n\r\n\r\n get property(): Property {\r\n return this.planOrderApplication.property;\r\n }\r\n\r\n\r\n get selectedCancelReason(): CancelReason {\r\n return this.planLookupValueService.cancelReasonByCode(this.selectedCancelReasonCode);\r\n }\r\n\r\n\r\n get selectedOtherCompanyCancelReason(): CancelReason {\r\n return this.planLookupValueService.cancelReasonByCode(this.selectedOtherCompanyCancelReasonCode);\r\n }\r\n\r\n\r\n\r\n constructor(private urlSerializer: UrlSerializer,\r\n private router: Router,\r\n private planOrderService: PlanOrderService,\r\n private planOrderLookupService: PlanOrderLookupService,\r\n private planLookupValueService: PlanLookupValueService,\r\n private planCancelService: PlanCancelService,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private modalProgressService: PhxModalProgressService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n // we need customers to be cancelling\r\n const customers = [];\r\n\r\n this.planLookupValueService.relationships.forEach((indexRelationship: Relationship) => {\r\n\r\n // initiating agent\r\n if (indexRelationship.initiatingAgentFlag && this.planOrderApplication.initiatingAgent) {\r\n const customer = new CancelRelationshipCustomer();\r\n customer.customer = this.planOrderApplication.initiatingAgent;\r\n customer.relationship = indexRelationship;\r\n\r\n customers.push(customer);\r\n }\r\n\r\n // cooperating agent\r\n if (indexRelationship.cooperatingAgentFlag && this.planOrderApplication.cooperatingAgent) {\r\n const customer = new CancelRelationshipCustomer();\r\n customer.customer = this.planOrderApplication.cooperatingAgent;\r\n customer.relationship = indexRelationship;\r\n\r\n customers.push(customer);\r\n }\r\n\r\n // closing agent\r\n if (indexRelationship.closingFlag && this.planOrderApplication.closingAgent) {\r\n const customer = new CancelRelationshipCustomer();\r\n customer.customer = this.planOrderApplication.closingAgent;\r\n customer.relationship = indexRelationship;\r\n\r\n customers.push(customer);\r\n }\r\n\r\n // home buyers\r\n if (indexRelationship.ownerFlag) {\r\n let customerIndex = 1;\r\n\r\n this.planOrderApplication.homeBuyers.forEach((indexCustomer: Customer) => {\r\n const customer = new CancelRelationshipCustomer();\r\n customer.customer = indexCustomer;\r\n customer.relationship = indexRelationship;\r\n customer.relationshipText = '#' + String(customerIndex);\r\n\r\n customers.push(customer);\r\n\r\n customerIndex++;\r\n });\r\n }\r\n\r\n // home sellers\r\n if (indexRelationship.sellerFlag) {\r\n let customerIndex = 1;\r\n\r\n this.planOrderApplication.homeSellers.forEach((indexCustomer: Customer) => {\r\n const customer = new CancelRelationshipCustomer();\r\n customer.customer = indexCustomer;\r\n customer.relationship = indexRelationship;\r\n customer.relationshipText = '#' + String(customerIndex);\r\n\r\n customers.push(customer);\r\n\r\n customerIndex++;\r\n });\r\n }\r\n\r\n });\r\n\r\n\r\n const authenticatedCustomer = this.planOrderAuthService.customer;\r\n\r\n if (authenticatedCustomer) {\r\n customers.forEach((indexCustomer: CancelRelationshipCustomer) => {\r\n let selectCustomerFlag = true;\r\n\r\n if (authenticatedCustomer.customerID !== indexCustomer.customer.customerID) {\r\n selectCustomerFlag = false;\r\n }\r\n\r\n if (this.selectedCancellationCustomer) {\r\n selectCustomerFlag = false;\r\n }\r\n\r\n if (selectCustomerFlag) {\r\n this.selectedCancellationCustomer = indexCustomer;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n const sortedCustomers = customers.sort(\r\n (customer1: CancelRelationshipCustomer, customer2: CancelRelationshipCustomer): number => {\r\n let sortValue = 0;\r\n\r\n const relationship1 = customer1.relationship;\r\n const relationship2 = customer2.relationship;\r\n\r\n if (relationship1.sortOrder < relationship2.sortOrder) {\r\n sortValue = -1;\r\n\r\n } else if (relationship1.sortOrder > relationship2.sortOrder) {\r\n sortValue = 1;\r\n }\r\n\r\n return sortValue;\r\n });\r\n\r\n this.cancellationCustomers = sortedCustomers;\r\n\r\n\r\n\r\n // we need reasons for why we're cancelling\r\n const reasons = [];\r\n const otherWarrantyReasons = [];\r\n\r\n this.planLookupValueService.cancelReasons.forEach((indexReason: CancelReason) => {\r\n // if we're allowing selection\r\n if (indexReason.allowSelectionFlag) {\r\n // if this reason has another warranty company name\r\n if (indexReason.otherWarrantyCompanyNameFlag) {\r\n otherWarrantyReasons.push(indexReason);\r\n\r\n // if this is a general reason\r\n } else {\r\n reasons.push(indexReason);\r\n }\r\n }\r\n });\r\n\r\n this.cancelReasons = reasons;\r\n this.otherWarrantyCancelReasons = otherWarrantyReasons;\r\n }\r\n\r\n\r\n\r\n shouldDisplayOtherWarrantyCompanySelection(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.selectedCancelReason && this.selectedCancelReason.otherWarrantyCompanyGenericFlag) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayCancellationCustomerQuestion(): boolean {\r\n return (this.cancellationCustomers.length > 0);\r\n }\r\n\r\n\r\n\r\n isCustomerSelected(customer: CancelRelationshipCustomer): boolean {\r\n return (this.selectedCancellationCustomer === customer);\r\n }\r\n\r\n\r\n didClickCancellationCustomer(customer: CancelRelationshipCustomer) {\r\n this.selectedCancellationCustomer = customer;\r\n }\r\n\r\n\r\n didClickUserConfirm() {\r\n this.userConfirmFlag = !this.userConfirmFlag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayValidationFailed(): boolean {\r\n return (this.pageStatus === PageStatus.validationFailed);\r\n }\r\n\r\n\r\n shouldDisplayCustomerCancelError(): boolean {\r\n let displayFlag = true;\r\n\r\n displayFlag = displayFlag && this.validationAttemptedFlag;\r\n displayFlag = displayFlag && this.shouldDisplayCancellationCustomerQuestion();\r\n\r\n if (this.shouldDisplayCancellationCustomerQuestion()) {\r\n displayFlag = displayFlag && !this.selectedCancellationCustomer;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayCancelReasonError(): boolean {\r\n const displayFlag = (this.validationAttemptedFlag && !this.selectedCancelReasonCode);\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayOtherCompanyError(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.validationAttemptedFlag) {\r\n const otherCompanyFlag = (this.selectedCancelReason ? this.selectedCancelReason.otherWarrantyCompanyGenericFlag : false);\r\n\r\n displayFlag = otherCompanyFlag && !this.selectedOtherCompanyCancelReasonCode;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayConfirmationError(): boolean {\r\n const displayFlag = (this.validationAttemptedFlag && !this.userConfirmFlag);\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayCancelProgressBar(): boolean {\r\n return (this.pageStatus === PageStatus.cancelInProgress);\r\n }\r\n\r\n\r\n didClickNextButton() {\r\n this.validationAttemptedFlag = true;\r\n\r\n let validationSuccessFlag = true;\r\n validationSuccessFlag = validationSuccessFlag && !this.shouldDisplayCustomerCancelError();\r\n validationSuccessFlag = validationSuccessFlag && !this.shouldDisplayCancelReasonError();\r\n validationSuccessFlag = validationSuccessFlag && !this.shouldDisplayOtherCompanyError();\r\n validationSuccessFlag = validationSuccessFlag && !this.shouldDisplayConfirmationError();\r\n\r\n if (validationSuccessFlag) {\r\n this.pageStatus = PageStatus.cancelInProgress;\r\n\r\n const progress = new ModalProgress('Cancelling Application', 'Please wait...', 100);\r\n\r\n this.modalProgressService.progress = progress;\r\n\r\n this.performPlanCancellation();\r\n\r\n } else {\r\n this.pageStatus = PageStatus.validationFailed;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n // performs the plan cancellation\r\n performPlanCancellation() {\r\n const params = new PlanCancelParams();\r\n\r\n params.planID = this.planOrderApplication.planID;\r\n params.planGUID = this.planOrderApplication.planGUID;\r\n params.cancelReason = this.selectedOtherCompanyCancelReason || this.selectedCancelReason;\r\n\r\n if (this.selectedCancellationCustomer) {\r\n params.customerID = this.selectedCancellationCustomer.customer.customerID;\r\n\r\n } else {\r\n params.customerID = this.planOrderApplication.defaultHomeownerCustomerID;\r\n }\r\n\r\n this.planCancelService.performCancellation(params).subscribe((planCancel: PlanCancel) => {\r\n // on success\r\n const planID = this.planOrderApplication.planID;\r\n\r\n // re-fetch the plan to get the updated status\r\n this.planOrderLookupService.fetchPlanByID(this.planOrderApplication, planID)\r\n .subscribe((resultFlag: boolean) => {\r\n\r\n this.persistPlanOrderApplication();\r\n\r\n this.modalProgressService.progress = null;\r\n\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, 'cancel');\r\n\r\n let urlSegment: UrlSegment = null;\r\n\r\n urlSegment = new UrlSegment('review', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n urlSegment = new UrlSegment('confirm-cancel', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n });\r\n\r\n\r\n }, (errorResult: ActivityResult) => {\r\n // on failure\r\n this.modalProgressService.progress = null;\r\n\r\n const errors = errorResult.errors || [];\r\n\r\n if (errors.length) {\r\n const error = errors[0];\r\n\r\n this.planCancelErrorTitle = error.message;\r\n this.planCancelErrorText = error.identifier;\r\n\r\n } else {\r\n this.planCancelErrorTitle = 'There was an unknown error cancelling this Application';\r\n this.planCancelErrorText = 'phx.toolbox.ui.PlanCancelGenericError';\r\n }\r\n\r\n });\r\n }\r\n\r\n\r\n\r\n shouldDisplayPlanCancelError(): boolean {\r\n return !!this.planCancelErrorTitle;\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n\r\nenum PageStatus {\r\n none = 10,\r\n validationFailed = 20,\r\n cancelInProgress = 30,\r\n cancelComplete = 40\r\n}\r\n\r\n\r\n\r\n\r\nclass CancelRelationshipCustomer {\r\n customer: Customer = null;\r\n relationship: Relationship = null;\r\n relationshipText: string = null;\r\n}\r\n\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n The Estimated Closing Date has just been provided.\\r\\n
\\r\\n\\r\\n
\\r\\n The Actual Closing Date has just been provided.\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Would you like it cleared so that you can enter the\\r\\n\\r\\n \\r\\n Estimated Closing Date?\\r\\n \\r\\n\\r\\n \\r\\n Actual Closing Date?\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n Correct the validation errors below\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Estimated / Actual Closing Date\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n {{this.estimatedClosingDateErrorText()}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n {{this.actualClosingDateErrorText()}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n No Estimated Closing Date\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n You must enter an Estimated or Actual Closing Date, or indicate that there is no Estimated Closing Date.\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"div.closing-date-container{border:1px solid #F5D961;border-radius:5px;padding-left:5px;padding-right:5px;background-color:#FFFDDA}div.closing-date-container div.list-row-clickable:hover{background-color:#F5D961}div.closing-date-container div.form-radio-deselected::before,div.closing-date-container div.form-radio-selected::before,div.closing-date-container div.form-checkmark-deselected::before,div.closing-date-container div.form-checkmark-selected::before{color:#9A7A00}div.closing-date-container div.form-group{margin-bottom:0}div.closing-date-container.has-danger{border:1px solid #ecbec0;background-color:#fee8ed}div.closing-date-container.has-danger div.list-row-clickable:hover{background-color:#ecbec0}div.has-danger div.form-radio-deselected::before,div.has-danger div.form-radio-selected::before,div.has-danger div.form-checkmark-deselected::before,div.has-danger div.form-checkmark-selected::before{color:#a4343a}\\n\"","\r\n\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {Component, ElementRef, EventEmitter, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\n\r\nimport {Customer, Employer} from '@orhp/phx-customer-ui-module';\r\n\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\n\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {CustomerUpdateService} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerUpdateService} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {EmployerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {PlanOrderProgress} from '../_models/plan-order-progress';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {OfficeAgentLookupPersistenceService} from '../../office-agent-lookup/_services/persistence.service';\r\nimport {OfficeAgentLookupService} from '../../office-agent-lookup/_services/lookup.service';\r\nimport {PlanInvoiceRecipient} from '@orhp/phx-plan-ui-module';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {DatePart, DateUtility} from '@orhp/phx-common-ui-module';\r\nimport {\r\n IOfficeAgentLookupValidateResult,\r\n OfficeAgentLookupValidateService\r\n} from '../../office-agent-lookup/_services/validate.service';\r\nimport {OfficeAgentLookupRelationshipType} from '../../office-agent-lookup/_src/lookup-relationship-type';\r\nimport {PhxSystemModule} from '@orhp/phx-system-ui-module';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {PhxDateService} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupCacheService} from '../../office-agent-lookup/_services/lookup-cache.service';\r\nimport {Subscription} from 'rxjs/Subscription';\r\nimport {Address} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrdererRoleDefault} from '@orhp/phx-plan-ui-module';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-closing-info',\r\n templateUrl: './closing-info.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './closing-info.component.scss'\r\n ]\r\n})\r\n\r\n\r\nexport class PlanOrderClosingInfoComponent\r\n extends PlanOrderBaseComponent\r\n implements OnInit, OnDestroy {\r\n\r\n // what is the lookup relationship passed to the component\r\n lookupRelationshipType = 'escrow-officer';\r\n\r\n // selected office and agent\r\n selectedEmployer: Employer = this.officeAgentLookupPersistenceService.employer;\r\n selectedCustomer: Customer = this.officeAgentLookupPersistenceService.customer;\r\n relationshipSkippedFlag = (this.planOrderApplication.closingAgentSkippedFlag || false);\r\n\r\n // validation error collection\r\n validationStatus: ValidationStatus = ValidationStatus.none;\r\n employerValidateResult: EmployerValidateResult = null;\r\n customerValidateResult: CustomerValidateResult = null;\r\n\r\n\r\n // if we're auto-matching to an office\r\n employerAutoMatch: Employer = null;\r\n customerAutoMatch: Customer = null;\r\n\r\n\r\n // closing info\r\n closingDateMode = ClosingDateMode.none;\r\n closingFileNumber = (this.planOrderApplication.closingFileNumber || '');\r\n estimatedClosingDateText: string = null;\r\n actualClosingDateText: string = null;\r\n\r\n\r\n get estimatedClosingDate(): Date {\r\n return this.dateService.parseDate(this.estimatedClosingDateText, true);\r\n }\r\n\r\n get actualClosingDate(): Date {\r\n return this.dateService.parseDate(this.actualClosingDateText, true);\r\n }\r\n\r\n\r\n // invoice recipients\r\n private _invoiceRecipients: PlanInvoiceRecipient[] = null;\r\n\r\n get invoiceRecipients(): PlanInvoiceRecipient[] {\r\n if (!this._invoiceRecipients) {\r\n // decide which invoice recipients to show\r\n const invoiceRecipients: PlanInvoiceRecipient[] = [];\r\n\r\n const hasInitiatingAgent = !!this.planOrderApplication.initiatingAgent;\r\n const hasCooperatingAgent = !!this.planOrderApplication.cooperatingAgent;\r\n\r\n this.planLookupValueService.invoiceRecipients.forEach((indexInvoiceRecipient: PlanInvoiceRecipient) => {\r\n let displayFlag = false;\r\n\r\n // test for listing agent\r\n if (indexInvoiceRecipient.listingAgentFlag) {\r\n if (hasInitiatingAgent && this.planOrderApplication.initiatingAgentListingFlag) {\r\n displayFlag = true;\r\n\r\n } else if (hasCooperatingAgent && this.planOrderApplication.cooperatingAgentListingFlag) {\r\n displayFlag = true;\r\n }\r\n\r\n // test for selling agent\r\n } else if (indexInvoiceRecipient.sellingAgentFlag) {\r\n if (hasInitiatingAgent && !this.planOrderApplication.initiatingAgentListingFlag) {\r\n displayFlag = true;\r\n\r\n } else if (hasCooperatingAgent && !this.planOrderApplication.cooperatingAgentListingFlag) {\r\n displayFlag = true;\r\n }\r\n\r\n // test for closing\r\n } else if (indexInvoiceRecipient.closingAgentFlag) {\r\n displayFlag = true;\r\n\r\n // test for home buyer/seller\r\n } else if (indexInvoiceRecipient.homeBuyerFlag || indexInvoiceRecipient.homeSellerFlag) {\r\n displayFlag = true;\r\n }\r\n\r\n\r\n if (displayFlag) {\r\n invoiceRecipients.push(indexInvoiceRecipient);\r\n }\r\n });\r\n\r\n this._invoiceRecipients = invoiceRecipients;\r\n }\r\n\r\n return this._invoiceRecipients;\r\n }\r\n\r\n\r\n // selected invoice recipient\r\n private _selectedInvoiceRecipientID: number = null;\r\n\r\n get selectedInvoiceRecipientID(): number {\r\n if (!this._selectedInvoiceRecipientID) {\r\n const appInvoiceRecipient = this.planOrderApplication.invoiceRecipient;\r\n\r\n if (appInvoiceRecipient) {\r\n this._selectedInvoiceRecipientID = appInvoiceRecipient.invoiceRecipientID;\r\n }\r\n }\r\n\r\n if (!this._selectedInvoiceRecipientID) {\r\n // look for the default invoice recipient\r\n this.invoiceRecipients.forEach((indexInvoiceRecipient: PlanInvoiceRecipient) => {\r\n if (indexInvoiceRecipient.defaultFlag) {\r\n this._selectedInvoiceRecipientID = indexInvoiceRecipient.invoiceRecipientID;\r\n }\r\n });\r\n }\r\n\r\n return this._selectedInvoiceRecipientID;\r\n }\r\n\r\n set selectedInvoiceRecipientID(selectedInvoiceRecipientID: number) {\r\n this._selectedInvoiceRecipientID = Number(selectedInvoiceRecipientID);\r\n }\r\n\r\n\r\n get selectedInvoiceRecipient(): PlanInvoiceRecipient {\r\n let recipient: PlanInvoiceRecipient = null;\r\n\r\n this.invoiceRecipients.forEach((indexInvoiceRecipient: PlanInvoiceRecipient) => {\r\n if (indexInvoiceRecipient.invoiceRecipientID === this.selectedInvoiceRecipientID) {\r\n recipient = indexInvoiceRecipient;\r\n }\r\n });\r\n\r\n return recipient;\r\n }\r\n\r\n\r\n employerEventSubscription: Subscription = null;\r\n customerEventSubscription: Subscription = null;\r\n skipEventSubscription: Subscription = null;\r\n\r\n allowDifferentOfficeSelectionFlag = true;\r\n allowDifferentAgentSelectionFlag = true;\r\n\r\n\r\n @ViewChild('estimatedClosingDateInput') estimatedClosingDateInput: ElementRef;\r\n @ViewChild('actualClosingDateInput') actualClosingDateInput: ElementRef;\r\n\r\n\r\n\r\n // constructor\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private dateService: PhxDateService,\r\n private employerUpdateService: EmployerUpdateService,\r\n private customerUpdateService: CustomerUpdateService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private officeAgentLookupValidateService: OfficeAgentLookupValidateService,\r\n private officeAgentLookupCacheService: OfficeAgentLookupCacheService,\r\n private planLookupValueService: PlanLookupValueService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderStepService: PlanOrderStepService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n\r\n // called when loaded\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.planLookupValueService.ordererRoleDefaults.forEach((indexRoleDefault: PlanOrdererRoleDefault) => {\r\n let flag = true;\r\n\r\n flag = flag && (indexRoleDefault.planRole === this.planOrderApplication.role);\r\n flag = flag && (indexRoleDefault.planTransactionType === this.planOrderApplication.transactionType);\r\n\r\n if (flag && indexRoleDefault.skipRoleStepFlag) {\r\n this.allowDifferentOfficeSelectionFlag = false;\r\n this.allowDifferentAgentSelectionFlag = false;\r\n }\r\n });\r\n\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'closing-info');\r\n\r\n this.estimatedClosingDateText = (this.dateService.formatDate(this.planOrderApplication.estimatedClosingDate, false) || '');\r\n this.actualClosingDateText = (this.dateService.formatDate(this.planOrderApplication.actualClosingDate, false) || '');\r\n\r\n const savedFileNumber = (this.planOrderApplication.closingFileNumber || '');\r\n\r\n // if we've been here before\r\n if (savedFileNumber !== '') {\r\n // what is the current closing date mode\r\n if (this.planOrderApplication.estimatedClosingDate) {\r\n this.closingDateMode = ClosingDateMode.estimatedClosingDate;\r\n\r\n } else if (this.planOrderApplication.actualClosingDate) {\r\n this.closingDateMode = ClosingDateMode.actualClosingDate;\r\n\r\n } else {\r\n this.closingDateMode = ClosingDateMode.noEstimatedClosingDate;\r\n }\r\n }\r\n\r\n\r\n // subscribe to employer updates\r\n this.employerEventSubscription = this.officeAgentLookupPersistenceService.employerEventEmitter.subscribe(\r\n (employer: Employer) => {\r\n\r\n this.selectedEmployer = employer;\r\n\r\n this.validationStatus = ValidationStatus.none;\r\n });\r\n\r\n // subscribe to customer updates\r\n this.customerEventSubscription = this.officeAgentLookupPersistenceService.customerEventEmitter.subscribe(\r\n (customer: Customer) => {\r\n\r\n this.selectedCustomer = customer;\r\n\r\n this.validationStatus = ValidationStatus.none;\r\n });\r\n\r\n // subscribe to skip events\r\n this.skipEventSubscription = this.officeAgentLookupService.skipEventEmitter.subscribe(\r\n (skipFlag: boolean) => {\r\n\r\n if (skipFlag) {\r\n this.didClickSkip();\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.officeAgentLookupCacheService.clearCache();\r\n\r\n this.employerEventSubscription.unsubscribe();\r\n this.customerEventSubscription.unsubscribe();\r\n this.skipEventSubscription.unsubscribe();\r\n }\r\n\r\n\r\n isNoClosingDateSelected(): boolean {\r\n return (this.closingDateMode === ClosingDateMode.noEstimatedClosingDate);\r\n }\r\n\r\n\r\n didClickSkipEstimatedClosingDate() {\r\n this.closingDateMode = ClosingDateMode.noEstimatedClosingDate;\r\n\r\n this.estimatedClosingDateText = '';\r\n this.actualClosingDateText = '';\r\n }\r\n\r\n\r\n didFocusEstimatedClosingDate() {\r\n this.closingDateMode = ClosingDateMode.estimatedClosingDate;\r\n\r\n if (this.shouldDisplayEstimatedClosingDateFocusWarning()) {\r\n this.estimatedClosingDateInput.nativeElement.blur();\r\n }\r\n }\r\n\r\n\r\n shouldDisplayEstimatedClosingDateFocusWarning(): boolean {\r\n let flag = true;\r\n\r\n if (this.actualClosingDateText === '') {\r\n flag = false;\r\n }\r\n\r\n let modeFlag = false;\r\n modeFlag = modeFlag || (this.closingDateMode === ClosingDateMode.estimatedClosingDate);\r\n modeFlag = modeFlag || (this.closingDateMode === ClosingDateMode.estimatedClosingDateCalendar);\r\n\r\n if (!modeFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n didFocusActualClosingDate() {\r\n this.closingDateMode = ClosingDateMode.actualClosingDate;\r\n\r\n if (this.shouldDisplayActualClosingDateFocusWarning()) {\r\n this.actualClosingDateInput.nativeElement.blur();\r\n }\r\n }\r\n\r\n shouldDisplayActualClosingDateFocusWarning(): boolean {\r\n let flag = true;\r\n\r\n if (this.estimatedClosingDateText === '') {\r\n flag = false;\r\n }\r\n\r\n let modeFlag = false;\r\n modeFlag = modeFlag || (this.closingDateMode === ClosingDateMode.actualClosingDate);\r\n modeFlag = modeFlag || (this.closingDateMode === ClosingDateMode.actualClosingDateCalendar);\r\n\r\n if (!modeFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n shouldDisplayDateFocusWarning(): boolean {\r\n let flag = false;\r\n\r\n flag = flag || this.shouldDisplayEstimatedClosingDateFocusWarning();\r\n flag = flag || this.shouldDisplayActualClosingDateFocusWarning();\r\n\r\n return flag;\r\n }\r\n\r\n\r\n didClickCancelDatePrompt() {\r\n if (this.estimatedClosingDateText !== '') {\r\n this.closingDateMode = ClosingDateMode.estimatedClosingDate;\r\n\r\n } else if (this.actualClosingDateText !== '') {\r\n this.closingDateMode = ClosingDateMode.actualClosingDate;\r\n }\r\n }\r\n\r\n\r\n didClickClearOtherDate() {\r\n let estimatedFlag = false;\r\n estimatedFlag = estimatedFlag || (this.closingDateMode === ClosingDateMode.estimatedClosingDate);\r\n estimatedFlag = estimatedFlag || (this.closingDateMode === ClosingDateMode.estimatedClosingDateCalendar);\r\n\r\n let actualFlag = false;\r\n actualFlag = actualFlag || (this.closingDateMode === ClosingDateMode.actualClosingDate);\r\n actualFlag = actualFlag || (this.closingDateMode === ClosingDateMode.actualClosingDateCalendar);\r\n\r\n if (estimatedFlag) {\r\n this.actualClosingDateText = '';\r\n\r\n if (this.closingDateMode === ClosingDateMode.estimatedClosingDate) {\r\n this.estimatedClosingDateInput.nativeElement.focus();\r\n }\r\n\r\n } else if (actualFlag) {\r\n this.estimatedClosingDateText = '';\r\n\r\n if (this.closingDateMode === ClosingDateMode.actualClosingDate) {\r\n this.actualClosingDateInput.nativeElement.focus();\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n didClickEstimatedClosingDateCalendarButton() {\r\n // if the calendar is open, close it\r\n if (this.closingDateMode === ClosingDateMode.estimatedClosingDateCalendar) {\r\n this.closingDateMode = ClosingDateMode.estimatedClosingDate;\r\n\r\n // the calendar is not open so open it\r\n } else {\r\n this.closingDateMode = ClosingDateMode.estimatedClosingDateCalendar;\r\n }\r\n }\r\n\r\n\r\n didClickActualClosingDateCalendarButton() {\r\n // if the calendar is open, close it\r\n if (this.closingDateMode === ClosingDateMode.actualClosingDateCalendar) {\r\n this.closingDateMode = ClosingDateMode.actualClosingDate;\r\n\r\n // the calendar is not open so open it\r\n } else {\r\n this.closingDateMode = ClosingDateMode.actualClosingDateCalendar;\r\n }\r\n }\r\n\r\n\r\n didSelectEstimatedClosingDate(date: Date) {\r\n this.closingDateMode = ClosingDateMode.estimatedClosingDate;\r\n\r\n this.estimatedClosingDateText = this.dateService.formatDate(date, true);\r\n }\r\n\r\n\r\n didSelectActualClosingDate(date: Date) {\r\n this.closingDateMode = ClosingDateMode.actualClosingDate;\r\n\r\n this.actualClosingDateText = this.dateService.formatDate(date, true);\r\n }\r\n\r\n\r\n\r\n shouldDisplayEstimatedClosingDateCalendar(): boolean {\r\n let flag = true;\r\n\r\n if (this.closingDateMode !== ClosingDateMode.estimatedClosingDateCalendar) {\r\n flag = false;\r\n }\r\n\r\n if (this.shouldDisplayEstimatedClosingDateFocusWarning()) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n shouldDisplayActualClosingDateCalendar(): boolean {\r\n let flag = true;\r\n\r\n if (this.closingDateMode !== ClosingDateMode.actualClosingDateCalendar) {\r\n flag = false;\r\n }\r\n\r\n if (this.shouldDisplayActualClosingDateFocusWarning()) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayEmployerAutoMatch(): boolean {\r\n return !!this.employerAutoMatch;\r\n }\r\n\r\n\r\n shouldDisplayCustomerAutoMatch(): boolean {\r\n return !!this.customerAutoMatch;\r\n }\r\n\r\n\r\n // should the Next button be displayed\r\n shouldDisplayNextButton(): boolean {\r\n return (this.selectedCustomer !== null);\r\n }\r\n\r\n\r\n // user clicked the Back button\r\n didClickBackButton(): void {\r\n\r\n }\r\n\r\n\r\n // user clicked the Next button\r\n didClickNextButton(): void {\r\n this.performValidation();\r\n }\r\n\r\n\r\n // performs validation\r\n performValidation(): void {\r\n\r\n const newEmployerFlag = !this.selectedEmployer.employerID;\r\n\r\n // validate the closing dates against the mode\r\n const skipClosingDateFlag = (this.closingDateMode === ClosingDateMode.noEstimatedClosingDate);\r\n const missingEstimatedClosingDateFlag = (this.estimatedClosingDateText === '');\r\n const missingActualClosingDateFlag = (this.actualClosingDateText === '');\r\n\r\n if (missingEstimatedClosingDateFlag && missingActualClosingDateFlag && !skipClosingDateFlag) {\r\n this.closingDateMode = ClosingDateMode.none;\r\n }\r\n\r\n\r\n const lookupTypeCode = OfficeAgentLookupRelationshipType.typeCodeEscrowOfficer;\r\n\r\n this.officeAgentLookupValidateService.performValidation(this.selectedEmployer, this.selectedCustomer, lookupTypeCode)\r\n .subscribe((results: IOfficeAgentLookupValidateResult) => {\r\n\r\n this.customerValidateResult = results.customerValidateResult;\r\n this.employerValidateResult = results.employerValidateResult;\r\n\r\n\r\n // are we allowing auto-match?\r\n let allowAutoMatch = true;\r\n\r\n if (this.validationError()) {\r\n allowAutoMatch = false;\r\n }\r\n\r\n if (allowAutoMatch) {\r\n this.customerAutoMatch = results.customerAutoMatch;\r\n this.employerAutoMatch = results.employerAutoMatch;\r\n }\r\n\r\n\r\n // set the validation status\r\n let validationStatus = ValidationStatus.success;\r\n\r\n // if there was a customer auto-match\r\n if (this.customerAutoMatch) {\r\n validationStatus = ValidationStatus.customerAutoMatch;\r\n\r\n // if there was an employer auto-match\r\n } else if (this.employerAutoMatch) {\r\n validationStatus = ValidationStatus.employerAutoMatch;\r\n\r\n // if there are any validation errors\r\n } else if (this.validationError()) {\r\n validationStatus = ValidationStatus.validationFailure;\r\n\r\n // checks specific to new offices\r\n } else if (newEmployerFlag) {\r\n\r\n // if the physical address was updated with validation\r\n if (this.employerValidateResult.employerPhysicalAddressUpdated()) {\r\n validationStatus = ValidationStatus.addressValidationSuccess;\r\n\r\n // if the physical address wasn't validated\r\n } else if (!this.employerValidateResult.employerPhysicalAddressValidated()) {\r\n validationStatus = ValidationStatus.addressValidationFailure;\r\n }\r\n\r\n }\r\n\r\n this.validationStatus = validationStatus;\r\n\r\n\r\n // if the validation was successful\r\n if (validationStatus === ValidationStatus.success) {\r\n this.gotoNextStep();\r\n }\r\n\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n employerPhysicalAddressForValidation(): Address[] {\r\n const addresses = [];\r\n\r\n if (this.employerValidateResult) {\r\n const address = this.employerValidateResult.employerPhysicalAddress();\r\n\r\n addresses.push(address);\r\n }\r\n\r\n return addresses;\r\n }\r\n\r\n\r\n shouldDisplayAddressValidationModal(): boolean {\r\n let flag = false;\r\n\r\n flag = flag || (this.validationStatus === ValidationStatus.addressValidationSuccess);\r\n flag = flag || (this.validationStatus === ValidationStatus.addressValidationFailure);\r\n\r\n return flag;\r\n }\r\n\r\n\r\n handleAddressValidationUserResponse(flag: boolean) {\r\n // if the user wants to continue\r\n if (flag) {\r\n const physicalAddress = this.selectedEmployer.physicalAddress;\r\n\r\n // if the address was validated\r\n if (this.employerValidateResult.employerPhysicalAddressValidated()) {\r\n const validatedAddress = this.employerValidateResult.employerValidatedPhysicalAddress();\r\n\r\n physicalAddress.address = validatedAddress.address;\r\n physicalAddress.city = validatedAddress.city;\r\n physicalAddress.stateCode = validatedAddress.stateCode;\r\n physicalAddress.zipCode = validatedAddress.zipCode;\r\n }\r\n\r\n this.gotoNextStep();\r\n\r\n // if the user wants to make changes\r\n } else {\r\n this.validationStatus = ValidationStatus.none;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // should the validation error be displayed\r\n shouldDisplayValidationError(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.validationStatus === ValidationStatus.validationFailure) {\r\n displayFlag = this.validationError();\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n validationError(): boolean {\r\n let errorFlag = false;\r\n\r\n if (this.employerValidateResult) {\r\n errorFlag = errorFlag || this.employerValidateResult.errorFlag;\r\n }\r\n\r\n if (this.customerValidateResult) {\r\n errorFlag = errorFlag || this.customerValidateResult.errorFlag;\r\n }\r\n\r\n if (this.closingDateMode === ClosingDateMode.actualClosingDate) {\r\n errorFlag = errorFlag || !!this.actualClosingDateErrorText();\r\n }\r\n\r\n if (this.closingDateMode === ClosingDateMode.estimatedClosingDate) {\r\n errorFlag = errorFlag || !!this.estimatedClosingDateErrorText();\r\n }\r\n\r\n errorFlag = errorFlag || this.generalClosingDateError();\r\n\r\n errorFlag = errorFlag || this.fileNumberError();\r\n\r\n return errorFlag;\r\n }\r\n\r\n\r\n\r\n\r\n // should the closing info be displayed\r\n shouldDisplayClosingInfo(): boolean {\r\n return !!this.selectedCustomer;\r\n }\r\n\r\n\r\n // should the file number error be displayed?\r\n shouldDisplayFileNumberError(): boolean {\r\n let errorFlag = false;\r\n\r\n if (this.validationStatus !== ValidationStatus.none) {\r\n errorFlag = this.fileNumberError();\r\n }\r\n\r\n return errorFlag;\r\n }\r\n\r\n\r\n\r\n fileNumberError(): boolean {\r\n let errorFlag = false;\r\n\r\n const fileNumber = (this.closingFileNumber || '');\r\n\r\n if (fileNumber === '') {\r\n errorFlag = true;\r\n }\r\n\r\n return errorFlag;\r\n }\r\n\r\n\r\n\r\n\r\n // should the estimated closing date error be displayed\r\n shouldDisplayEstimatedClosingDateError(): boolean {\r\n let errorFlag = false;\r\n\r\n if (this.validationStatus !== ValidationStatus.none) {\r\n let estimatedFlag = false;\r\n estimatedFlag = estimatedFlag || (this.closingDateMode === ClosingDateMode.estimatedClosingDate);\r\n estimatedFlag = estimatedFlag || (this.closingDateMode === ClosingDateMode.estimatedClosingDateCalendar);\r\n\r\n if (estimatedFlag && this.estimatedClosingDateErrorText()) {\r\n errorFlag = true;\r\n }\r\n }\r\n\r\n return errorFlag;\r\n }\r\n\r\n\r\n estimatedClosingDateErrorText(): string {\r\n let errorText: string = null;\r\n\r\n const testDate = this.dateService.parseDate(this.estimatedClosingDateText, true);\r\n\r\n if (!errorText) {\r\n if (!testDate) {\r\n errorText = 'Estimated Closing Date is required (' + this.displayDateMask + ')';\r\n }\r\n }\r\n\r\n if (!errorText) {\r\n const minDate = DateUtility.midnightDate(DateUtility.timeZoneLocalDate(this.planOrderApplication.planReceivedDate));\r\n const maxDate = DateUtility.dateAdd(DatePart.years, 1, minDate);\r\n\r\n\r\n if (testDate.toISOString().split(\"T\")[0] > maxDate.toISOString().split(\"T\")[0]) {\r\n errorText = 'Estimated Closing Date must be on or before ' + this.dateService.formatDate(maxDate, true);\r\n\r\n } else if (testDate.toISOString().split(\"T\")[0] < minDate.toISOString().split(\"T\")[0]) {\r\n errorText = 'Estimated Closing Date must be on or after ' + this.dateService.formatDate(minDate, true);\r\n }\r\n }\r\n\r\n return errorText;\r\n }\r\n\r\n\r\n // should the actual closing date error be displayed\r\n shouldDisplayActualClosingDateError(): boolean {\r\n let errorFlag = false;\r\n\r\n if (this.validationStatus !== ValidationStatus.none) {\r\n let actualFlag = false;\r\n actualFlag = actualFlag || (this.closingDateMode === ClosingDateMode.actualClosingDate);\r\n actualFlag = actualFlag || (this.closingDateMode === ClosingDateMode.actualClosingDateCalendar);\r\n\r\n if (actualFlag && this.actualClosingDateErrorText()) {\r\n errorFlag = true;\r\n }\r\n }\r\n\r\n return errorFlag;\r\n }\r\n\r\n\r\n actualClosingDateErrorText(): string {\r\n let errorText: string = null;\r\n\r\n const testDate = this.dateService.parseDate(this.actualClosingDateText, true);\r\n\r\n if (!errorText) {\r\n if (!testDate) {\r\n errorText = 'Actual Closing Date is required (' + this.displayDateMask + ')';\r\n }\r\n }\r\n\r\n if (!errorText) {\r\n const minDate = DateUtility.dateAdd(DatePart.years, -1, this.planOrderApplication.planReceivedDate);\r\n const maxDate = DateUtility.dateAdd(DatePart.years, 1, this.planOrderApplication.planReceivedDate);\r\n\r\n if (testDate.toISOString().split(\"T\")[0] > maxDate.toISOString().split(\"T\")[0]) {\r\n errorText = 'Actual Closing Date must be on or before ' + this.dateService.formatDate(maxDate, true);\r\n\r\n } else if (testDate.toISOString().split(\"T\")[0] < minDate.toISOString().split(\"T\")[0]) {\r\n errorText = 'Actual Closing Date must be on or after ' + this.dateService.formatDate(minDate, true);\r\n }\r\n }\r\n\r\n return errorText;\r\n }\r\n\r\n\r\n\r\n\r\n // should the general closing date error be displayed\r\n shouldDisplayGeneralClosingDateError(): boolean {\r\n let errorFlag = false;\r\n\r\n if (this.validationStatus !== ValidationStatus.none) {\r\n errorFlag = this.generalClosingDateError();\r\n }\r\n\r\n return errorFlag;\r\n }\r\n\r\n\r\n generalClosingDateError(): boolean {\r\n let errorFlag = false;\r\n\r\n if (this.closingDateMode === ClosingDateMode.none) {\r\n errorFlag = true;\r\n }\r\n\r\n return errorFlag;\r\n }\r\n\r\n\r\n\r\n\r\n // the user responded to the office auto-match\r\n didClickOfficeAutoMatchResponse(responseFlag: boolean) {\r\n // if the user wants to accept the office\r\n if (responseFlag) {\r\n this.selectedEmployer = this.employerAutoMatch;\r\n\r\n this.selectedCustomer.employer = this.selectedEmployer;\r\n\r\n this.gotoNextStep();\r\n\r\n\r\n // if the user does not want to accept the office\r\n } else {\r\n this.employerAutoMatch = null;\r\n }\r\n }\r\n\r\n\r\n\r\n // the user clicked the agent auto match response\r\n didClickAgentAutoMatchResponse(responseFlag: boolean) {\r\n // if the user wants to accept the agent\r\n if (responseFlag) {\r\n this.selectedCustomer = this.customerAutoMatch;\r\n\r\n this.selectedCustomer.employer = this.selectedEmployer;\r\n\r\n this.gotoNextStep();\r\n\r\n // if the user does not want to accept the agent\r\n } else {\r\n this.customerAutoMatch = null;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n // user clicked to Skip\r\n didClickSkip(): void {\r\n this.relationshipSkippedFlag = true;\r\n this.selectedEmployer = null;\r\n this.selectedCustomer = null;\r\n\r\n this.gotoNextStep();\r\n }\r\n\r\n\r\n // go to the next step\r\n gotoNextStep() {\r\n this.planOrderApplication.closingFileNumber = this.closingFileNumber;\r\n this.planOrderApplication.estimatedClosingDate = DateUtility.timeZoneRemoteDate(this.estimatedClosingDate);\r\n this.planOrderApplication.actualClosingDate = DateUtility.timeZoneRemoteDate(this.actualClosingDate);\r\n\r\n this.planOrderApplication.invoiceRecipient = this.selectedInvoiceRecipient;\r\n\r\n this.planOrderApplication.closingAgent = this.selectedCustomer;\r\n this.planOrderApplication.closingAgentSkippedFlag = !this.selectedCustomer;\r\n\r\n\r\n this.officeAgentLookupPersistenceService.clearPersistedValues();\r\n\r\n // next step logic\r\n this.persistPlanOrderApplication();\r\n\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n const url = '../' + nextRoute;\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n\r\nenum ClosingDateMode {\r\n none = 100,\r\n noEstimatedClosingDate = 200,\r\n estimatedClosingDate = 300,\r\n estimatedClosingDateCalendar = 350,\r\n actualClosingDate = 400,\r\n actualClosingDateCalendar = 450\r\n}\r\n\r\n\r\n\r\n\r\nenum ValidationStatus {\r\n none = 10,\r\n validationFailure = 20,\r\n addressValidationFailure = 30,\r\n addressValidationSuccess = 40,\r\n employerAutoMatch = 50,\r\n customerAutoMatch = 60,\r\n success = 70\r\n}\r\n\r\n\r\n\r\n","\r\n\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from '../../office-agent-lookup/_services/persistence.service';\r\nimport {OfficeAgentLookupRelationshipType} from '../../office-agent-lookup/_src/lookup-relationship-type';\r\nimport {OfficeAgentLookupService} from '../../office-agent-lookup/_services/lookup.service';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderClosingInfoResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private urlSerializer: UrlSerializer,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const returnObservable = Observable.create((subscriber: Subscriber) => {\r\n\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plans\r\n if (!application.planID) {\r\n if (!application.property.address) {\r\n redirectTo = 'property-address';\r\n }\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'closing-info');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n subscriber.next(null);\r\n\r\n // validate the closing relationship\r\n } else {\r\n const relationship = OfficeAgentLookupRelationshipType.typeCodeEscrowOfficer;\r\n\r\n this.officeAgentLookupPersistenceService.validateLookupType(relationship);\r\n\r\n this.officeAgentLookupPersistenceService.lookupTypeCode = relationship;\r\n\r\n const params = {};\r\n params['lookupTypeCode'] = relationship;\r\n\r\n // pass the office and agent\r\n if (application.closingOffice) {\r\n this.officeAgentLookupPersistenceService.setEmployerIfDifferent(application.closingOffice);\r\n\r\n params['employer'] = application.closingOffice;\r\n }\r\n\r\n if (application.closingAgent) {\r\n this.officeAgentLookupPersistenceService.setCustomerIfDifferent(application.closingAgent);\r\n\r\n params['customer'] = application.closingAgent;\r\n }\r\n\r\n subscriber.next(params);\r\n }\r\n\r\n subscriber.complete();\r\n });\r\n\r\n return returnObservable;\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n Fetching Plan Number, please wait...\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n Your Application has been received\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n Plan Number:\\r\\n \\r\\n {{this.application.formattedPlanID}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{this.application.property.address}}
\\r\\n {{this.application.property.city}}, {{this.application.property.stateCode}} {{this.application.property.zipCode}}\\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\nimport {Component, OnInit} from '@angular/core';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {PlanOrderLookupService} from '../_services/plan-order-lookup.service';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {PlanOrderProgress} from '../_models/plan-order-progress';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {PlanOrderDomainFactoryService} from '../_services/plan-order-domain-factory.service';\r\n\r\n@Component({\r\n selector: 'app-plan-confirmation',\r\n templateUrl: './confirmation.component.html',\r\n styleUrls: ['../plan-order.scss']\r\n})\r\n\r\nexport class PlanOrderConfirmationComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n displayConfirmationMessage = false;\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private planOrderService: PlanOrderService,\r\n private planOrderDomainFactoryService: PlanOrderDomainFactoryService,\r\n private planOrderLookupService: PlanOrderLookupService,\r\n private planOrderStepService: PlanOrderStepService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n // if we need to load the plan\r\n if (!this.planOrderApplication.planID) {\r\n const planID = Number(this.route.snapshot.params['planID']);\r\n\r\n this.planOrderLookupService\r\n .fetchPlanByID(this.planOrderApplication, planID)\r\n .subscribe((fetchResultFlag: boolean) => {\r\n\r\n this.displayConfirmationMessage = fetchResultFlag;\r\n });\r\n\r\n // if the plan is already loaded\r\n } else {\r\n\r\n }\r\n }\r\n\r\n\r\n shouldDisplayConfirmationMessage(): boolean {\r\n return this.displayConfirmationMessage;\r\n }\r\n\r\n\r\n didClickEditApplication() {\r\n const url = '../review';\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n\r\n\r\n didClickNewApplication() {\r\n this.planOrderApplication = this.planOrderDomainFactoryService.newApplication();\r\n\r\n this.persistPlanOrderApplication();\r\n\r\n const url = '../../new';\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n Correct the validation errors below\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n {{agentRoleUpdatedMessage()}}\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","\r\n\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {Component, EventEmitter, OnDestroy, OnInit} from '@angular/core';\r\n\r\nimport {Customer, Employer} from '@orhp/phx-customer-ui-module';\r\n\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\n\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {CustomerUpdateService} from '@orhp/phx-customer-ui-module';\r\n\r\nimport {EmployerUpdateService} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {EmployerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {PlanOrderProgress} from '../_models/plan-order-progress';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {OfficeAgentLookupPersistenceService} from '../../office-agent-lookup/_services/persistence.service';\r\nimport {OfficeAgentLookupService} from '../../office-agent-lookup/_services/lookup.service';\r\nimport {\r\n IOfficeAgentLookupValidateResult,\r\n OfficeAgentLookupValidateService\r\n} from '../../office-agent-lookup/_services/validate.service';\r\nimport {OfficeAgentLookupRelationshipType} from '../../office-agent-lookup/_src/lookup-relationship-type';\r\nimport {OfficeAgentLookupCacheService} from '../../office-agent-lookup/_services/lookup-cache.service';\r\nimport {PlanOrderApplicationUpdates} from '../_models';\r\nimport {Subscription} from 'rxjs/Subscription';\r\nimport {Address} from '@orhp/phx-common-ui-module';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-cooperating-agent',\r\n templateUrl: './cooperating-agent.component.html',\r\n styleUrls: ['../plan-order.scss']\r\n})\r\n\r\n\r\nexport class PlanOrderCooperatingAgentComponent\r\n extends PlanOrderBaseComponent\r\n implements OnInit, OnDestroy {\r\n\r\n // what is the lookup relationship passed to the component\r\n lookupRelationshipType = 'cooperating-agent';\r\n\r\n // selected office and agent\r\n selectedEmployer: Employer = this.officeAgentLookupPersistenceService.employer;\r\n selectedCustomer: Customer = this.officeAgentLookupPersistenceService.customer;\r\n relationshipSkippedFlag = (this.planOrderApplication.cooperatingAgentSkippedFlag || false);\r\n\r\n // validation error collection\r\n validationStatus: ValidationStatus = ValidationStatus.none;\r\n employerValidateResult: EmployerValidateResult = null;\r\n customerValidateResult: CustomerValidateResult = null;\r\n\r\n // if we're auto-matching to an office or agent\r\n employerAutoMatch: Employer = null;\r\n customerAutoMatch: Customer = null;\r\n\r\n roleUpdateMessageFlag = false;\r\n\r\n employerEventSubscription: Subscription = null;\r\n customerEventSubscription: Subscription = null;\r\n skipEventSubscription: Subscription = null;\r\n\r\n\r\n // constructor\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupValidateService: OfficeAgentLookupValidateService,\r\n private officeAgentLookupCacheService: OfficeAgentLookupCacheService,\r\n private employerUpdateService: EmployerUpdateService,\r\n private customerUpdateService: CustomerUpdateService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderStepService: PlanOrderStepService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n\r\n // called when loaded\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.roleUpdateMessageFlag = this.planOrderApplication.hasUpdate(PlanOrderApplicationUpdates.cooperatingAgentListingFlag);\r\n\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, this.lookupRelationshipType);\r\n\r\n // subscribe to employer updates\r\n this.employerEventSubscription = this.officeAgentLookupPersistenceService.employerEventEmitter.subscribe(\r\n (employer: Employer) => {\r\n\r\n this.selectedEmployer = employer;\r\n\r\n this.validationStatus = ValidationStatus.none;\r\n });\r\n\r\n // subscribe to customer updates\r\n this.customerEventSubscription = this.officeAgentLookupPersistenceService.customerEventEmitter.subscribe(\r\n (customer: Customer) => {\r\n\r\n this.selectedCustomer = customer;\r\n\r\n this.validationStatus = ValidationStatus.none;\r\n });\r\n\r\n // subscribe to skip events\r\n this.skipEventSubscription = this.officeAgentLookupService.skipEventEmitter.subscribe(\r\n (skipFlag: boolean) => {\r\n\r\n if (skipFlag) {\r\n this.didClickSkip();\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n ngOnDestroy() {\r\n this.officeAgentLookupCacheService.clearCache();\r\n\r\n this.employerEventSubscription.unsubscribe();\r\n this.customerEventSubscription.unsubscribe();\r\n this.skipEventSubscription.unsubscribe();\r\n }\r\n\r\n\r\n shouldDisplayEmployerAutoMatch(): boolean {\r\n return !!this.employerAutoMatch;\r\n }\r\n\r\n\r\n shouldDisplayCustomerAutoMatch(): boolean {\r\n return !!this.customerAutoMatch;\r\n }\r\n\r\n\r\n // should the Next button be displayed\r\n shouldDisplayNextButton(): boolean {\r\n return (this.selectedCustomer !== null);\r\n }\r\n\r\n\r\n agentRoleUpdatedMessage(): string {\r\n let message: string = null;\r\n\r\n if (this.roleUpdateMessageFlag) {\r\n const roleText = (this.planOrderApplication.cooperatingAgentListingFlag ? 'Listing' : 'Selling');\r\n\r\n message = 'The Cooperating Agent role has been updated to ' + roleText + ' Agent';\r\n }\r\n\r\n return message;\r\n }\r\n\r\n\r\n\r\n // user clicked the Back button\r\n didClickBackButton(): void {\r\n\r\n }\r\n\r\n\r\n // user clicked the Next button\r\n didClickNextButton(): void {\r\n this.performValidation();\r\n }\r\n\r\n\r\n // performs validation\r\n performValidation(): void {\r\n\r\n const newEmployerFlag = !this.selectedEmployer.employerID;\r\n\r\n const lookupTypeCode = OfficeAgentLookupRelationshipType.typeCodeCooperatingAgent;\r\n\r\n this.officeAgentLookupValidateService.performValidation(this.selectedEmployer, this.selectedCustomer, lookupTypeCode)\r\n .subscribe((results: IOfficeAgentLookupValidateResult) => {\r\n\r\n this.customerValidateResult = results.customerValidateResult;\r\n this.employerValidateResult = results.employerValidateResult;\r\n\r\n this.customerAutoMatch = results.customerAutoMatch;\r\n this.employerAutoMatch = results.employerAutoMatch;\r\n\r\n\r\n // set the validation status\r\n let validationStatus = ValidationStatus.success;\r\n\r\n // if there was a customer auto-match\r\n if (this.customerAutoMatch) {\r\n validationStatus = ValidationStatus.customerAutoMatch;\r\n\r\n // if there was an employer auto-match\r\n } else if (this.employerAutoMatch) {\r\n validationStatus = ValidationStatus.employerAutoMatch;\r\n\r\n // if there are any validation errors\r\n } else if (this.validationError()) {\r\n validationStatus = ValidationStatus.validationFailure;\r\n\r\n // checks specific to new offices\r\n } else if (newEmployerFlag) {\r\n\r\n // if the physical address was updated with validation\r\n if (this.employerValidateResult.employerPhysicalAddressUpdated()) {\r\n validationStatus = ValidationStatus.addressValidationSuccess;\r\n\r\n // if the physical address wasn't validated\r\n } else if (!this.employerValidateResult.employerPhysicalAddressValidated()) {\r\n validationStatus = ValidationStatus.addressValidationFailure;\r\n }\r\n\r\n }\r\n\r\n this.validationStatus = validationStatus;\r\n\r\n\r\n // if the validation was successful\r\n if (validationStatus === ValidationStatus.success) {\r\n this.gotoNextStep();\r\n }\r\n\r\n\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n employerPhysicalAddressForValidation(): Address[] {\r\n const addresses = [];\r\n\r\n if (this.employerValidateResult) {\r\n const address = this.employerValidateResult.employerPhysicalAddress();\r\n\r\n addresses.push(address);\r\n }\r\n\r\n return addresses;\r\n }\r\n\r\n\r\n shouldDisplayAddressValidationModal(): boolean {\r\n let flag = false;\r\n\r\n flag = flag || (this.validationStatus === ValidationStatus.addressValidationSuccess);\r\n flag = flag || (this.validationStatus === ValidationStatus.addressValidationFailure);\r\n\r\n return flag;\r\n }\r\n\r\n\r\n handleAddressValidationUserResponse(flag: boolean) {\r\n // if the user wants to continue\r\n if (flag) {\r\n const physicalAddress = this.selectedEmployer.physicalAddress;\r\n\r\n // if the address was validated\r\n if (this.employerValidateResult.employerPhysicalAddressValidated()) {\r\n const validatedAddress = this.employerValidateResult.employerValidatedPhysicalAddress();\r\n\r\n physicalAddress.address = validatedAddress.address;\r\n physicalAddress.city = validatedAddress.city;\r\n physicalAddress.stateCode = validatedAddress.stateCode;\r\n physicalAddress.zipCode = validatedAddress.zipCode;\r\n }\r\n\r\n this.gotoNextStep();\r\n\r\n // if the user wants to make changes\r\n } else {\r\n this.validationStatus = ValidationStatus.none;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // should the validation error be displayed\r\n validationError(): boolean {\r\n let errorFlag = false;\r\n\r\n if (this.employerValidateResult) {\r\n errorFlag = errorFlag || this.employerValidateResult.errorFlag;\r\n }\r\n\r\n if (this.customerValidateResult) {\r\n errorFlag = errorFlag || this.customerValidateResult.errorFlag;\r\n }\r\n\r\n return errorFlag;\r\n }\r\n\r\n\r\n shouldDisplayValidationError(): boolean {\r\n let displayFlag = true;\r\n\r\n if (!this.validationError()) {\r\n displayFlag = false;\r\n }\r\n\r\n if (this.validationStatus !== ValidationStatus.validationFailure) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n // the user responded to the office auto-match\r\n didClickOfficeAutoMatchResponse(responseFlag: boolean) {\r\n // if the user wants to accept the office\r\n if (responseFlag) {\r\n this.selectedEmployer = this.employerAutoMatch;\r\n\r\n this.selectedCustomer.employer = this.selectedEmployer;\r\n\r\n this.gotoNextStep();\r\n\r\n\r\n // if the user does not want to accept the office\r\n } else {\r\n this.employerAutoMatch = null;\r\n }\r\n }\r\n\r\n\r\n // the user clicked the agent auto match response\r\n didClickAgentAutoMatchResponse(responseFlag: boolean) {\r\n // if the user wants to accept the agent\r\n if (responseFlag) {\r\n this.selectedCustomer = this.customerAutoMatch;\r\n\r\n this.selectedCustomer.employer = this.selectedEmployer;\r\n\r\n this.gotoNextStep();\r\n\r\n // if the user does not want to accept the agent\r\n } else {\r\n this.customerAutoMatch = null;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n // user clicked to Skip\r\n didClickSkip(): void {\r\n this.relationshipSkippedFlag = true;\r\n this.selectedEmployer = null;\r\n this.selectedCustomer = null;\r\n\r\n this.gotoNextStep();\r\n }\r\n\r\n\r\n // go to the next step\r\n gotoNextStep() {\r\n // are we adding a cooperating agent?\r\n const previousAgentFlag = !!this.planOrderApplication.cooperatingAgent;\r\n\r\n this.planOrderApplication.cooperatingAgentSkippedFlag = this.relationshipSkippedFlag;\r\n this.planOrderApplication.cooperatingAgent = this.selectedCustomer;\r\n\r\n // are we adding a cooperating agent?\r\n if (!previousAgentFlag && this.planOrderApplication.cooperatingAgent) {\r\n this.planOrderApplication.cooperatingAgentListingFlag = !this.planOrderApplication.initiatingAgentListingFlag;\r\n }\r\n\r\n this.officeAgentLookupPersistenceService.clearPersistedValues();\r\n\r\n // next step logic\r\n this.persistPlanOrderApplication();\r\n\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n const url = '../' + nextRoute;\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n\r\nenum ValidationStatus {\r\n none = 10,\r\n validationFailure = 20,\r\n addressValidationFailure = 30,\r\n addressValidationSuccess = 40,\r\n employerAutoMatch = 50,\r\n customerAutoMatch = 60,\r\n success = 70\r\n}\r\n\r\n\r\n","\r\n\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from '../../office-agent-lookup/_services/persistence.service';\r\nimport {OfficeAgentLookupRelationshipType} from '../../office-agent-lookup/_src/lookup-relationship-type';\r\nimport {OfficeAgentLookupService} from '../../office-agent-lookup/_services/lookup.service';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderCooperatingAgentResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plans\r\n if (!application.planID) {\r\n if (!application.property.address) {\r\n redirectTo = 'property-address';\r\n }\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'cooperating-agent');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n // validate the cooperating relationship\r\n } else {\r\n const relationship = OfficeAgentLookupRelationshipType.typeCodeCooperatingAgent;\r\n\r\n this.officeAgentLookupPersistenceService.validateLookupType(relationship);\r\n\r\n this.officeAgentLookupPersistenceService.lookupTypeCode = relationship;\r\n\r\n // pass the office and agent\r\n if (application.cooperatingAgentOffice) {\r\n this.officeAgentLookupPersistenceService.setEmployerIfDifferent(application.cooperatingAgentOffice);\r\n }\r\n\r\n if (application.cooperatingAgent) {\r\n this.officeAgentLookupPersistenceService.setCustomerIfDifferent(application.cooperatingAgent);\r\n }\r\n }\r\n\r\n resolve(!redirectTo);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Start New Plan Quote / Application

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Are you sure that you want to start a new Plan Quote / Application?\\r\\n
\\r\\n\\r\\n
\\r\\n This action CANNOT be undone.\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Cancel Changes
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n This will cancel your changes and return to the Review screen. Are you sure?\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"\"","\r\n\r\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderLookupService} from '../_services/plan-order-lookup.service';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderDomainFactoryService} from '../_services/plan-order-domain-factory.service';\r\n\r\n@Component({\r\n selector: 'app-plan-order-form-submit-bar',\r\n templateUrl: './form-submit-bar.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './form-submit-bar.component.scss'\r\n ]\r\n})\r\n\r\nexport class PlanOrderFormSubmitBarComponent implements OnInit {\r\n\r\n defaultNextButtonTitle = 'Next';\r\n\r\n @Input() showBackButton = false;\r\n @Input() showPrintQuoteButton = false;\r\n @Input() showNextButton = false;\r\n @Input() showStartOverButton = true;\r\n @Input() nextButtonTitle = this.defaultNextButtonTitle;\r\n\r\n @Output() nextButtonEventEmitter = new EventEmitter();\r\n @Output() printQuoteButtonEventEmitter = new EventEmitter();\r\n @Output() startOverButtonEventEmitter = new EventEmitter();\r\n\r\n showStartOverConfirmationFlag = false;\r\n\r\n showReturnToReviewConfirmationFlag = false;\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private planOrderLookupService: PlanOrderLookupService,\r\n private planOrderStepService: PlanOrderStepService,\r\n private planOrderDomainFactoryService: PlanOrderDomainFactoryService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router,\r\n private route: ActivatedRoute) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n didClickBackButton() {\r\n self.window.history.back();\r\n }\r\n\r\n\r\n shouldDisplayFormSubmitBar(): boolean {\r\n let displayFlag = false;\r\n\r\n displayFlag = displayFlag || this.showBackButton;\r\n displayFlag = displayFlag || this.showNextButton;\r\n displayFlag = displayFlag || this.showStartOverButton;\r\n displayFlag = displayFlag || this.showPrintQuoteButton;\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n didClickPrintQuoteButton() {\r\n this.printQuoteButtonEventEmitter.emit(true);\r\n }\r\n\r\n\r\n didClickNextButton() {\r\n this.nextButtonEventEmitter.emit(true);\r\n }\r\n\r\n\r\n didClickStartOverButton() {\r\n this.showStartOverConfirmationFlag = true;\r\n }\r\n\r\n\r\n shouldDisplayReturnToReviewButton() {\r\n let flag = false;\r\n\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n if (application && application.allStepsCompletedFlag) {\r\n flag = true;\r\n }\r\n\r\n const currentStep = this.planOrderStepService.currentStep;\r\n\r\n if (currentStep && (currentStep.code === 'review')) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n didClickReturnToReviewButton() {\r\n this.showReturnToReviewConfirmationFlag = true;\r\n }\r\n\r\n\r\n didClickReturnToReviewConfirm(confirmFlag: boolean) {\r\n this.showReturnToReviewConfirmationFlag = false;\r\n\r\n if (confirmFlag) {\r\n // restore a backup of the plan\r\n this.planOrderService.restorePlanOrderApplicationBackup();\r\n\r\n const planIDText = (this.route.snapshot.params['planID'] || this.planOrderService.newPlanRoute).toLowerCase();\r\n\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, planIDText);\r\n\r\n const urlSegment = new UrlSegment('review', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n didClickStartOverCancel() {\r\n this.showStartOverConfirmationFlag = false;\r\n }\r\n\r\n\r\n didClickStartOverProceed() {\r\n this.showStartOverConfirmationFlag = false;\r\n\r\n this.startOverButtonEventEmitter.emit(true);\r\n\r\n const planIDText = (this.route.snapshot.params['planID'] || this.planOrderService.newPlanRoute).toLowerCase();\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plan\r\n if (planIDText === this.planOrderService.newPlanRoute) {\r\n this.planOrderService.planOrderApplication = this.planOrderDomainFactoryService.newApplication();\r\n\r\n redirectTo = 'transaction-type';\r\n\r\n // existing plan\r\n } else {\r\n redirectTo = 'review';\r\n }\r\n\r\n if (redirectTo) {\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, planIDText);\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n }\r\n\r\n\r\n shouldDisplayVerticalMobileButtons(): boolean {\r\n return (this.nextButtonTitle !== this.defaultNextButtonTitle);\r\n }\r\n\r\n}\r\n\r\n\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n No {{this.nameForRelationshipCode()}} Entered\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Please enter the {{this.nameForRelationshipCode()}}'s name, if available.\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
Validating {{this.nameForRelationshipCode()}}s, please wait...
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n {{buyerConfirmationMessage()}}\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n Please correct the validation errors below\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n At least one {{this.nameForRelationshipCode()}} is required\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n

\\r\\n {{customerEntryTitle(indexCustomer)}}\\r\\n\\r\\n \\r\\n

\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.mailingAddressInstructionsForCustomer(indexCustomer)}}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"button.btn-remove-homeowner{background-color:#f2d4d6;border:1px solid #ecbec0;color:#a4343a;font-size:10pt;margin-left:20px}button.btn-remove-homeowner:hover{background-color:#a58789;border:1px solid #999999}button.btn-additional-homeowner{background-color:#F5D961}@media (max-width: 576px){button.btn-additional-homeowner{width:100%}}button.btn-additional-homeowner:hover{background-color:#9A7A00}@-webkit-keyframes relationship-call-out{0%{-webkit-transform:translateX(400px);transform:translateX(400px)}100%{-webkit-transform:translateX(0px);transform:translateX(0px)}}@keyframes relationship-call-out{0%{-webkit-transform:translateX(400px);transform:translateX(400px)}100%{-webkit-transform:translateX(0px);transform:translateX(0px)}}.relationship-call-out{display:inline-block;-webkit-animation-name:relationship-call-out;animation-name:relationship-call-out;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-iteration-count:1;animation-iteration-count:1}\\n\"","\r\nimport {ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {Address} from '@orhp/phx-common-ui-module';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {CustomerUpdateService} from '@orhp/phx-customer-ui-module';\r\nimport {ActivityResult, ActivityResultError} from '@orhp/phx-common-ui-module';\r\nimport {PhoneType} from '@orhp/phx-common-ui-module';\r\nimport {CustomerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Property} from '@orhp/phx-property-ui-module';\r\nimport {LocalStorage} from '@orhp/phx-localstorage-ui-module';\r\nimport {ICustomer} from '@orhp/phx-customer-ui-module';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\nimport {ProductOfficeToolbox} from '@orhp/phx-product-ui-module';\r\n\r\n@Component({\r\n selector: 'app-plan-order-generic-customer',\r\n templateUrl: './generic-customer.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './generic-customer.component.scss'\r\n ]\r\n})\r\n\r\n\r\nexport class PlanOrderGenericCustomerComponent implements OnInit {\r\n\r\n static homeBuyerRelationshipCode = 'home-buyer';\r\n static homeSellerRelationshipCode = 'home-seller';\r\n\r\n @Input() relationshipCode: string = null;\r\n @Input() customers: Customer[] = null;\r\n @Input() promptOnNoCustomersFlag = false;\r\n @Input() requireCustomerFlag = false;\r\n @Input() property: Property = null;\r\n @Input() application: PlanOrderApplication = null;\r\n\r\n @Output() nextButtonEventEmitter: EventEmitter = new EventEmitter();\r\n\r\n validationStatus = ValidationStatus.noneAttempted;\r\n\r\n customerValidateResults: CustomerValidateResult[] = null;\r\n hasConfirmEmailValidationError = false;\r\n hasMobilePhoneValidationError = false;\r\n\r\n\r\n get defaultOverrideAddressValidationFlag(): boolean {\r\n return (this.property ? this.property.overrideValidationFlag : false);\r\n }\r\n\r\n\r\n get defaultAddress(): string {\r\n return ((this.property ? this.property.address : null) || '').toUpperCase();\r\n }\r\n\r\n get defaultCity(): string {\r\n return ((this.property ? this.property.city : null) || '').toUpperCase();\r\n }\r\n\r\n get defaultStateCode(): string {\r\n return ((this.property ? this.property.stateCode : null) || '').toUpperCase();\r\n }\r\n\r\n get defaultZipCode(): string {\r\n return ((this.property ? this.property.zipCode : null) || '').toUpperCase();\r\n }\r\n\r\n\r\n @ViewChild('givenNameInput')\r\n givenNameInput: ElementRef;\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private customerUpdateService: CustomerUpdateService,\r\n private planOrderAuthService: PlanOrderAuthService) {\r\n }\r\n\r\n\r\n\r\n // on init\r\n ngOnInit() {\r\n const customers = [];\r\n\r\n (this.customers || []).forEach((indexCustomer: Customer) => {\r\n const editableCustomer = indexCustomer.duplicate();\r\n\r\n // if the customer has a different mailing address\r\n if (!this.customerHasMailingAddress(indexCustomer, false)) {\r\n editableCustomer.hasMailingAddress = false;\r\n }\r\n\r\n if (indexCustomer.confirmEmail) {\r\n editableCustomer.confirmEmail = indexCustomer.confirmEmail;\r\n }\r\n\r\n if (indexCustomer.mobilePhone) {\r\n editableCustomer.mobilePhone = indexCustomer.mobilePhone;\r\n }\r\n\r\n customers.push(editableCustomer);\r\n });\r\n\r\n // if there are no customers, create a default customer\r\n if (customers.length === 0) {\r\n const customer = this.newCustomer();\r\n customers.push(customer);\r\n\r\n setTimeout(() => {\r\n if (!!this.givenNameInput) {\r\n this.givenNameInput.nativeElement.focus();\r\n }\r\n });\r\n }\r\n\r\n this.customers = customers;\r\n }\r\n\r\n\r\n buyerConfirmationMessage(): string {\r\n const introMode = String(this.route.snapshot.params['intro-mode']) || '';\r\n\r\n // default that we want a message\r\n let flag = true;\r\n\r\n // if HIGHLIGHT isn't displayed, don't display the message\r\n if (introMode.toUpperCase() !== 'HIGHLIGHT') {\r\n flag = false;\r\n }\r\n\r\n // if some validation has been attempted, don't display the message\r\n if (this.validationStatus !== ValidationStatus.noneAttempted) {\r\n flag = false;\r\n }\r\n\r\n // if we want to display the message\r\n let message: string = null;\r\n\r\n if (flag) {\r\n message = this.application.homeBuyerOrOwnerText;\r\n\r\n // if there were home buyers\r\n const homeBuyers = (this.application ? this.application.homeBuyers : null);\r\n\r\n if (homeBuyers && homeBuyers.length) {\r\n if (homeBuyers.length > 1) {\r\n message += 's';\r\n }\r\n\r\n message += ' Updated';\r\n\r\n // if there are no home buyers\r\n } else {\r\n message += ' Skipped';\r\n }\r\n }\r\n\r\n return message;\r\n }\r\n\r\n\r\n\r\n // creates a new customer\r\n newCustomer(): Customer {\r\n const customer = this.customerDomainFactoryService.newCustomer();\r\n\r\n this.populateCustomerWithDefaultAddress(customer);\r\n\r\n return customer;\r\n }\r\n\r\n\r\n // populates a customer with defaults\r\n populateCustomerWithDefaultAddress(customer: Customer) {\r\n if (this.defaultAddress !== '') {\r\n customer.address = this.defaultAddress;\r\n }\r\n\r\n if (this.defaultCity !== '') {\r\n customer.city = this.defaultCity;\r\n }\r\n\r\n if (this.defaultStateCode !== '') {\r\n customer.stateCode = this.defaultStateCode;\r\n }\r\n\r\n if (this.defaultZipCode !== '') {\r\n customer.zipCode = this.defaultZipCode;\r\n }\r\n\r\n customer.overrideAddressValidationFlag = this.defaultOverrideAddressValidationFlag;\r\n }\r\n\r\n\r\n\r\n // customer has mailing address?\r\n customerHasMailingAddress(customer: Customer, includeMailingAddressFlag = true): boolean {\r\n let hasAddress = false;\r\n\r\n const address = (customer.address || '').toUpperCase();\r\n const city = (customer.city || '').toUpperCase();\r\n const stateCode = (customer.stateCode || '').toUpperCase();\r\n const zipCode = (customer.zipCode || '').toUpperCase();\r\n\r\n const defaultAddress = (this.defaultAddress || '').toUpperCase();\r\n const defaultCity = (this.defaultCity || '').toUpperCase();\r\n const defaultStateCode = (this.defaultStateCode || '').toUpperCase();\r\n const defaultZipCode = (this.defaultZipCode || '').toUpperCase();\r\n\r\n hasAddress = hasAddress || ((address !== '') && (address !== defaultAddress));\r\n hasAddress = hasAddress || ((city !== '') && (city !== defaultCity));\r\n hasAddress = hasAddress || ((stateCode !== '') && (stateCode !== defaultStateCode));\r\n hasAddress = hasAddress || ((zipCode !== '') && (zipCode !== defaultZipCode));\r\n\r\n if (includeMailingAddressFlag) {\r\n hasAddress = hasAddress || customer.hasMailingAddress;\r\n }\r\n\r\n return hasAddress;\r\n }\r\n\r\n\r\n\r\n\r\n // filled-in customers\r\n filledInCustomers(): Customer[] {\r\n const filledInCustomers: Customer[] = [];\r\n\r\n this.customers.forEach((indexCustomer: Customer) => {\r\n let filledInFlag = false;\r\n\r\n filledInFlag = filledInFlag || ((indexCustomer.givenName || '') !== '');\r\n filledInFlag = filledInFlag || ((indexCustomer.surName || '') !== '');\r\n filledInFlag = filledInFlag || ((indexCustomer.confirmEmail || '') !== '');\r\n filledInFlag = filledInFlag || ((indexCustomer.homePhone.formattedPhoneNumber || '') !== '');\r\n filledInFlag = filledInFlag || ((indexCustomer.workPhone.formattedPhoneNumber || '') !== '');\r\n filledInFlag = filledInFlag || ((indexCustomer.mobilePhone.formattedPhoneNumber || '') !== '');\r\n\r\n if (indexCustomer.hasMailingAddress) {\r\n filledInFlag = filledInFlag || ((indexCustomer.address || '') !== '');\r\n filledInFlag = filledInFlag || ((indexCustomer.city || '') !== '');\r\n filledInFlag = filledInFlag || ((indexCustomer.stateCode || '') !== '');\r\n filledInFlag = filledInFlag || ((indexCustomer.zipCode || '') !== '');\r\n }\r\n\r\n if (filledInFlag) {\r\n filledInCustomers.push(indexCustomer);\r\n }\r\n });\r\n\r\n return filledInCustomers;\r\n }\r\n\r\n\r\n\r\n // what is the proper name to use based on relationship code\r\n nameForRelationshipCode(): string {\r\n let relationshipName = '';\r\n\r\n switch (this.relationshipCode) {\r\n case PlanOrderGenericCustomerComponent.homeBuyerRelationshipCode:\r\n relationshipName = this.application.homeBuyerOrOwnerText;\r\n break;\r\n\r\n case PlanOrderGenericCustomerComponent.homeSellerRelationshipCode:\r\n relationshipName = 'Home Seller';\r\n break;\r\n }\r\n\r\n return relationshipName;\r\n }\r\n\r\n\r\n\r\n\r\n // what is the index of the customer\r\n indexOfCustomer(customer: Customer): number {\r\n let selectedCustomerIndex = -1;\r\n\r\n for (let customerIndex = 0; customerIndex < this.customers.length; customerIndex++) {\r\n const indexCustomer = this.customers[customerIndex];\r\n\r\n if (indexCustomer === customer) {\r\n selectedCustomerIndex = customerIndex;\r\n }\r\n }\r\n\r\n return selectedCustomerIndex;\r\n }\r\n\r\n\r\n\r\n\r\n // mailing address instructions for customer\r\n mailingAddressInstructionsForCustomer(customer: Customer): string {\r\n const relationship = this.nameForRelationshipCode();\r\n const customerIndex = this.indexOfCustomer(customer);\r\n\r\n let instructionText = 'Check here if the ' + relationship + ' mailing address is different from property address';\r\n\r\n if (customerIndex > 0) {\r\n instructionText += ' and ' + relationship + ' #1 Address';\r\n }\r\n\r\n return instructionText;\r\n }\r\n\r\n\r\n\r\n // should multiple customers be allowed\r\n allowMultipleCustomers(): boolean {\r\n let flag = true;\r\n\r\n if (this.relationshipCode === PlanOrderGenericCustomerComponent.homeSellerRelationshipCode) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // should the \"Remove Customer\" button be shown for this customer\r\n showRemoveCustomerButton(customer: Customer): boolean {\r\n return (this.customers.length > 1);\r\n }\r\n\r\n\r\n // should the \"add additional\" button be shown?\r\n showAddCustomerButton(): boolean {\r\n return this.allowMultipleCustomers();\r\n }\r\n\r\n\r\n // customer entry title\r\n customerEntryTitle(customer: Customer): string {\r\n let title = this.nameForRelationshipCode();\r\n\r\n // if multiple customers are allowed\r\n if (this.allowMultipleCustomers()) {\r\n title += ' #' + String(this.indexOfCustomer(customer) + 1);\r\n }\r\n\r\n return title;\r\n }\r\n\r\n\r\n\r\n\r\n // is this the first customer?\r\n isFirstCustomer(customer: Customer): boolean {\r\n return (this.indexOfCustomer(customer) === 0);\r\n }\r\n\r\n\r\n // is this the last customer?\r\n isLastCustomer(customer: Customer): boolean {\r\n return (this.indexOfCustomer(customer) === (this.customers.length - 1));\r\n }\r\n\r\n\r\n\r\n // the user clicked the \"Add Customer\" button\r\n didClickAdditionalCustomerButton(): void {\r\n const customer = this.newCustomer();\r\n\r\n this.customers.push(customer);\r\n }\r\n\r\n\r\n\r\n // the user clicked the \"Remove Customer\" button\r\n didClickRemoveCustomer(customer: Customer): void {\r\n const customers = [];\r\n\r\n this.customers.forEach((indexCustomer: Customer) => {\r\n if (indexCustomer !== customer) {\r\n customers.push(indexCustomer);\r\n }\r\n });\r\n\r\n this.customers = customers;\r\n }\r\n\r\n\r\n // the user clicked the Alt Mailling address for a customer\r\n didClickAlternateMailingAddress(customer: Customer): void {\r\n customer.hasMailingAddress = !customer.hasMailingAddress;\r\n\r\n if (!customer.hasMailingAddress) {\r\n this.populateCustomerWithDefaultAddress(customer);\r\n\r\n } else {\r\n customer.address = '';\r\n customer.city = '';\r\n customer.stateCode = '';\r\n customer.zipCode = '';\r\n\r\n customer.overrideAddressValidationFlag = false;\r\n }\r\n }\r\n\r\n\r\n\r\n // returns the customer by tag\r\n customerByTag(tag: number): Customer {\r\n let customer: Customer = null;\r\n\r\n this.customers.forEach((indexCustomer: Customer) => {\r\n if (indexCustomer.tag === tag) {\r\n customer = indexCustomer;\r\n }\r\n });\r\n\r\n return customer;\r\n }\r\n\r\n\r\n // returns the validation object for the Customer\r\n validationObjectForCustomer(customer: Customer): CustomerValidateResult {\r\n let validation: CustomerValidateResult = null;\r\n\r\n if (this.customerValidateResults) {\r\n this.customerValidateResults.forEach((indexValidation: CustomerValidateResult) => {\r\n if (indexValidation.customer === customer) {\r\n validation = indexValidation;\r\n }\r\n });\r\n }\r\n\r\n\r\n return validation;\r\n }\r\n\r\n\r\n // should the first name error be displayed for the customer\r\n shouldDisplayFirstNameError(customer: Customer): boolean {\r\n const validation = this.validationObjectForCustomer(customer);\r\n\r\n return (validation ? ((validation.customerGivenNameError || '') !== '') : false);\r\n }\r\n\r\n\r\n\r\n // should the last name error be displayed for the customer\r\n shouldDisplayLastNameError(customer: Customer): boolean {\r\n const validation = this.validationObjectForCustomer(customer);\r\n\r\n return (validation ? ((validation.customerSurNameError || '') !== '') : false);\r\n }\r\n\r\n\r\n // should the home phone error be displayed for the customer\r\n shouldDisplayHomePhoneError(customer: Customer): boolean {\r\n const validation = this.validationObjectForCustomer(customer);\r\n\r\n return (validation ? ((validation.customerHomePhoneError || '') !== '') : false);\r\n }\r\n\r\n\r\n // should the mobile phone error be displayed for the customer\r\n shouldDisplayMobilePhoneError(customer: Customer): boolean {\r\n const validation = this.validationObjectForCustomer(customer);\r\n\r\n return (validation ? ((validation.customerMobilePhoneError || '') !== '') : false);\r\n }\r\n\r\n\r\n // should the work phone error be displayed for the customer\r\n shouldDisplayWorkPhoneError(customer: Customer): boolean {\r\n const validation = this.validationObjectForCustomer(customer);\r\n\r\n return (validation ? ((validation.customerWorkPhoneError || '') !== '') : false);\r\n }\r\n\r\n\r\n // should the email error be displayed for the customer\r\n shouldDisplayEmailError(customer: Customer): boolean {\r\n const validation = this.validationObjectForCustomer(customer);\r\n\r\n return (validation ? ((validation.customerEmailError || '') !== '') : false);\r\n }\r\n\r\n shouldDisplayConfirmEmailError(customer: Customer): boolean {\r\n\r\n if (customer.confirmEmail && customer.email.formattedPhoneNumber && (customer.confirmEmail === customer.email.formattedPhoneNumber)) {\r\n this.hasConfirmEmailValidationError = false;\r\n return false;\r\n }\r\n this.hasConfirmEmailValidationError = true;\r\n\r\n return true;\r\n }\r\n\r\n shouldDisplayMobilePhoneRequiredError(mobilePhone, indexCustomer): boolean {\r\n\r\n if (this.isDTCOrOlive() && !mobilePhone && this.isFirstCustomer(indexCustomer)) {\r\n this.hasMobilePhoneValidationError = true;\r\n return true;\r\n }\r\n this.hasMobilePhoneValidationError = false;\r\n\r\n return false;\r\n }\r\n\r\n\r\n // should the street address error be displayed for the customer\r\n shouldDisplayStreetAddressError(customer: Customer): boolean {\r\n const validation = this.validationObjectForCustomer(customer);\r\n\r\n let displayFlag = false;\r\n\r\n if (validation) {\r\n displayFlag = displayFlag || ((validation.customerStreetAddressError || '') !== '');\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the city error be displayed for the customer\r\n shouldDisplayCityError(customer: Customer): boolean {\r\n const validation = this.validationObjectForCustomer(customer);\r\n\r\n let displayFlag = false;\r\n\r\n if (validation) {\r\n displayFlag = displayFlag || ((validation.customerCityError || '') !== '');\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the strate error be displayed for the customer\r\n shouldDisplayStateCodeError(customer: Customer): boolean {\r\n const validation = this.validationObjectForCustomer(customer);\r\n\r\n let displayFlag = false;\r\n\r\n if (validation) {\r\n displayFlag = displayFlag || ((validation.customerStateCodeError || '') !== '');\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the zip code error be displayed for the customer\r\n shouldDisplayZipCodeError(customer: Customer): boolean {\r\n const validation = this.validationObjectForCustomer(customer);\r\n\r\n let displayFlag = false;\r\n\r\n if (validation) {\r\n displayFlag = displayFlag || ((validation.customerZipCodeError || '') !== '');\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should display validation in process\r\n shouldDisplayValidationInProgress(): boolean {\r\n return (this.validationStatus === ValidationStatus.inProgress);\r\n }\r\n\r\n\r\n // should display validation error\r\n shouldDisplayValidationError(): boolean {\r\n return (this.validationStatus === ValidationStatus.failed);\r\n }\r\n\r\n\r\n // should the \"are you sure\" message display if no customers\r\n shouldDisplayNoCustomersValidationMessage(): boolean {\r\n return (this.validationStatus === ValidationStatus.confirmNoCustomers);\r\n }\r\n\r\n\r\n // should the \"a customer is required\" message be displayed\r\n shouldDisplayCustomerRequiredMessage(): boolean {\r\n return (this.validationStatus === ValidationStatus.customerRequired);\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayAddressValidationSuccess(): boolean {\r\n return (this.validationStatus === ValidationStatus.confirmValidatedAddress);\r\n }\r\n\r\n\r\n shouldDisplayAddressValidationModal(): boolean {\r\n let flag = false;\r\n\r\n if (this.validationStatus === ValidationStatus.confirmValidatedAddress) {\r\n flag = true;\r\n }\r\n\r\n if (this.validationStatus === ValidationStatus.confirmNotValidatedAddress) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n shouldDisplayEmailAsRequired(): boolean {\r\n return !!this.planOrderAuthService.productOffice &&\r\n this.planOrderAuthService.productOffice.homeBuyerEmailRequiredFlag;\r\n }\r\n\r\n\r\n addressValidationResponseHandler(flag: boolean) {\r\n // if the user wants to continue\r\n if (flag) {\r\n // loop over the customer validation results\r\n this.customerValidateResults.forEach((indexResult: CustomerValidateResult) => {\r\n const indexCustomer = indexResult.customer;\r\n const indexAddress = this.addressFromValidationResult(indexResult);\r\n\r\n indexCustomer.address = (indexAddress.address || '').toUpperCase();\r\n indexCustomer.city = (indexAddress.city || '').toUpperCase();\r\n indexCustomer.stateCode = (indexAddress.stateCode || '').toUpperCase();\r\n indexCustomer.zipCode = (indexAddress.zipCode || '').toUpperCase();\r\n\r\n // does the customer have a mailing address\r\n const customerHasMailingAddressFlag = this.customerHasMailingAddress(indexCustomer);\r\n\r\n // if the customer doesn't have a mailing address, use the default validation\r\n if (!customerHasMailingAddressFlag) {\r\n indexCustomer.overrideAddressValidationFlag = this.defaultOverrideAddressValidationFlag;\r\n\r\n } else {\r\n indexCustomer.overrideAddressValidationFlag = !indexAddress.validatedFlag;\r\n }\r\n });\r\n\r\n this.performValidation();\r\n\r\n\r\n // if the user wants to revise the addresses\r\n } else {\r\n this.validationStatus = ValidationStatus.noneAttempted;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n addressesForValidation(): Address[] {\r\n const addresses = [];\r\n\r\n (this.customerValidateResults || []).forEach((indexResult: CustomerValidateResult) => {\r\n // if the customer has a mailing address\r\n const customer = indexResult.customer;\r\n\r\n if (customer.hasMailingAddress) {\r\n const address = this.addressFromValidationResult(indexResult);\r\n addresses.push(address);\r\n }\r\n });\r\n\r\n return addresses;\r\n }\r\n\r\n\r\n addressFromValidationResult(result: CustomerValidateResult): Address {\r\n return result.customerAddress();\r\n }\r\n\r\n\r\n // the user clicked the next button\r\n didClickNextButton() {\r\n if (!!this.productOfficeToolbox && !this.productOfficeToolbox.allowPremiumPayLaterFlag) {\r\n if (this.hasConfirmEmailValidationError || this.hasMobilePhoneValidationError) {\r\n return;\r\n }\r\n }\r\n\r\n this.performValidation();\r\n }\r\n\r\n\r\n\r\n // performs validation\r\n performValidation() {\r\n const customers = this.filledInCustomers();\r\n\r\n // perform customer validation\r\n this.validationStatus = ValidationStatus.inProgress;\r\n\r\n\r\n let validationObservable: Observable;\r\n\r\n // if customers were specified\r\n if (customers.length) {\r\n customers.forEach(cust => {\r\n if (this.shouldDisplayEmailAsRequired()) {\r\n cust.emailRequiredFlag = true;\r\n }\r\n });\r\n validationObservable = this.customerUpdateService.performCustomerValidationMultiple(customers);\r\n\r\n // if no customers were specified\r\n } else {\r\n validationObservable = Observable.create((subscriber: Subscriber) => {\r\n const results = [];\r\n\r\n subscriber.next(results);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n\r\n // execute the observable\r\n validationObservable.subscribe((results: CustomerValidateResult[]) => {\r\n let hasErrors = false;\r\n let hasAddressValidationUpdate = false;\r\n let hasAddressValidationError = false;\r\n\r\n const propertyAddress = Address.withAddressValues(\r\n this.property.address,\r\n this.property.city,\r\n this.property.stateCode,\r\n this.property.zipCode\r\n );\r\n\r\n // loop over the customer validation results\r\n results.forEach((indexResult: CustomerValidateResult) => {\r\n\r\n const indexCustomer = indexResult.customer;\r\n const indexCleanParams = indexResult.customerResult.object;\r\n\r\n // we need the entered customer address\r\n const indexUserAddress = Address.withAddressValues(\r\n indexCustomer.address,\r\n indexCustomer.city,\r\n indexCustomer.stateCode,\r\n indexCustomer.zipCode\r\n );\r\n\r\n\r\n // we need the validated address\r\n let indexCleanAddress: Address = null;\r\n\r\n if (indexCleanParams.address) {\r\n indexCleanAddress = Address.withAddressValues(\r\n indexCleanParams.address,\r\n indexCleanParams.city,\r\n indexCleanParams.stateCode,\r\n indexCleanParams.zipCode\r\n );\r\n }\r\n\r\n\r\n // if the entered address is different from the validated address\r\n if (indexCleanAddress) {\r\n if (!indexCleanAddress.compare(indexUserAddress)) {\r\n hasAddressValidationUpdate = true;\r\n }\r\n }\r\n\r\n\r\n if (indexResult.customerEmailRequiredError != null) {\r\n indexResult.customerEmailError = indexResult.customerEmailRequiredError;\r\n }\r\n\r\n // if there was an error\r\n if (indexResult.errorFlag) {\r\n // if there's only a street address error\r\n if (indexResult.customerAddressValidationError && (indexResult.errors.length === 1)) {\r\n // if the street address does not match the property address\r\n if (!indexUserAddress.compare(propertyAddress)) {\r\n hasAddressValidationError = true;\r\n }\r\n\r\n } else {\r\n hasErrors = true;\r\n }\r\n }\r\n });\r\n\r\n this.customerValidateResults = results;\r\n\r\n\r\n // if there were no errors found\r\n if (!hasErrors && !hasAddressValidationError) {\r\n let validationStatus = ValidationStatus.success;\r\n\r\n // if no customers were specified\r\n if (!customers.length) {\r\n\r\n if (this.requireCustomerFlag) {\r\n validationStatus = ValidationStatus.customerRequired;\r\n\r\n } else if (this.promptOnNoCustomersFlag) {\r\n validationStatus = ValidationStatus.confirmNoCustomers;\r\n }\r\n }\r\n\r\n\r\n // if there was an address validation update\r\n if (hasAddressValidationUpdate) {\r\n validationStatus = ValidationStatus.confirmValidatedAddress;\r\n }\r\n\r\n\r\n\r\n this.validationStatus = validationStatus;\r\n\r\n\r\n // if the validation status is successful\r\n if (validationStatus === ValidationStatus.success) {\r\n\r\n // loop over the customers for final treatment\r\n customers.forEach((indexCustomer: Customer) => {\r\n // capitalize the first and last name\r\n indexCustomer.givenName = (indexCustomer.givenName || '').toUpperCase();\r\n indexCustomer.surName = (indexCustomer.surName || '').toUpperCase();\r\n\r\n // populate missing addresses with the default\r\n const address = (indexCustomer.address || '');\r\n\r\n if (address === '') {\r\n this.populateCustomerWithDefaultAddress(indexCustomer);\r\n\r\n } else {\r\n const overrideAddressValidationFlag = indexCustomer.overrideAddressValidationFlag;\r\n\r\n indexCustomer.address = indexCustomer.address.toUpperCase();\r\n indexCustomer.city = indexCustomer.city.toUpperCase();\r\n indexCustomer.stateCode = indexCustomer.stateCode.toUpperCase();\r\n indexCustomer.zipCode = indexCustomer.zipCode.toUpperCase();\r\n\r\n indexCustomer.overrideAddressValidationFlag = overrideAddressValidationFlag;\r\n }\r\n });\r\n\r\n this.nextButtonEventEmitter.emit(customers);\r\n }\r\n\r\n\r\n // there are errors\r\n } else if (hasErrors) {\r\n this.validationStatus = ValidationStatus.failed;\r\n\r\n } else if (hasAddressValidationError) {\r\n this.validationStatus = ValidationStatus.confirmNotValidatedAddress;\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n // returns customers with invalid addresses\r\n customersWithInvalidAddresses(): Customer[] {\r\n const customers = [];\r\n\r\n if (this.customerValidateResults) {\r\n this.customerValidateResults.forEach((indexResult: CustomerValidateResult) => {\r\n if (indexResult.customerAddressValidationError) {\r\n customers.push(indexResult.customer);\r\n }\r\n });\r\n }\r\n\r\n return customers;\r\n }\r\n\r\n\r\n\r\n\r\n // the user clicked the \"add after all\" button\r\n didClickAddCustomerAfterAll() {\r\n this.validationStatus = ValidationStatus.noneAttempted;\r\n }\r\n\r\n\r\n // the user clicked the skip button\r\n didClickSkip() {\r\n this.validationStatus = ValidationStatus.noneAttempted;\r\n\r\n this.nextButtonEventEmitter.emit([]);\r\n }\r\n\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n return this.planOrderAuthService.productOfficeToolbox;\r\n }\r\n\r\n isDTCOrOlive() {\r\n return !!this.productOfficeToolbox && !this.productOfficeToolbox.allowPremiumPayLaterFlag;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\nenum ValidationStatus {\r\n noneAttempted = 10,\r\n inProgress = 20,\r\n failed = 30,\r\n success = 40,\r\n confirmNoCustomers = 50,\r\n customerRequired = 60,\r\n confirmNotValidatedAddress = 70,\r\n confirmValidatedAddress = 80\r\n}\r\n\r\n\r\n\r\n\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {PlanOrderProgress} from '../_models/plan-order-progress';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\n\r\n@Component({\r\n selector: 'app-plan-order-home-buyer',\r\n templateUrl: './home-buyer.component.html',\r\n styleUrls: ['../plan-order.scss']\r\n})\r\n\r\n\r\nexport class PlanOrderHomeBuyerComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n relationshipCode = 'home-buyer';\r\n customers: Customer[] = null;\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private planOrderService: PlanOrderService,\r\n private planOrderStepService: PlanOrderStepService,\r\n private planOrderAuthService: PlanOrderAuthService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n get promptOnNoCustomersFlag(): boolean {\r\n let prompt = false;\r\n\r\n // if there's escrow, prompt them\r\n if (this.planOrderApplication.closingAgent) {\r\n prompt = true;\r\n }\r\n\r\n // if the initiating agent is the selling agent\r\n if (this.planOrderApplication.initiatingAgent && !this.planOrderApplication.initiatingAgentListingFlag) {\r\n prompt = true;\r\n }\r\n\r\n // if the cooperating agent is the selling agent\r\n if (this.planOrderApplication.cooperatingAgent && !this.planOrderApplication.cooperatingAgentListingFlag) {\r\n prompt = true;\r\n }\r\n\r\n return prompt;\r\n }\r\n\r\n\r\n get requireCustomerFlag(): boolean {\r\n let require = false;\r\n\r\n const invoiceRecipient = this.planOrderApplication.invoiceRecipient;\r\n\r\n if (invoiceRecipient && invoiceRecipient.homeBuyerFlag) {\r\n require = true;\r\n }\r\n\r\n if (!!this.planOrderAuthService.productOffice && this.planOrderAuthService.productOffice.homeBuyerEmailRequiredFlag) {\r\n require = true;\r\n }\r\n\r\n return require;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'home-buyer');\r\n\r\n this.customers = this.planOrderApplication.homeBuyers || [];\r\n }\r\n\r\n\r\n\r\n didClickNextButton(customers: Customer[]): void {\r\n this.customers = customers;\r\n\r\n this.planOrderApplication.homeBuyers = this.customers;\r\n\r\n // next step logic\r\n this.persistPlanOrderApplication();\r\n\r\n // get the next route\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, 'home-buyer');\r\n\r\n const urlSegment = new UrlSegment(nextRoute, {});\r\n\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n // if the next route is home seller\r\n if (nextRoute.toUpperCase() === 'HOME-SELLER') {\r\n const highlightUrlSegment = new UrlSegment('highlight', {});\r\n\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, highlightUrlSegment);\r\n }\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderHomeBuyerResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plans\r\n if (!application.planID) {\r\n if (!application.property.address) {\r\n redirectTo = 'property-address';\r\n }\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'home-buyer');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n resolve(!redirectTo);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {PlanOrderProgress} from '../_models/plan-order-progress';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {ProductCoverage} from '@orhp/phx-product-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Component({\r\n selector: 'app-plan-order-home-seller',\r\n templateUrl: './home-seller.component.html',\r\n styleUrls: ['../plan-order.scss']\r\n})\r\n\r\n\r\nexport class PlanOrderHomeSellerComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n relationshipCode = 'home-seller';\r\n customers: Customer[] = null;\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private planOrderService: PlanOrderService,\r\n private planOrderStepService: PlanOrderStepService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n\r\n get promptOnNoCustomersFlag(): boolean {\r\n let prompt = false;\r\n\r\n // if the initiating agent is the listing agent\r\n if (this.planOrderApplication.initiatingAgent && this.planOrderApplication.initiatingAgentListingFlag) {\r\n prompt = true;\r\n }\r\n\r\n // if the cooperating agent is the listing agent\r\n if (this.planOrderApplication.cooperatingAgent && this.planOrderApplication.cooperatingAgentListingFlag) {\r\n prompt = true;\r\n }\r\n\r\n return prompt;\r\n }\r\n\r\n\r\n\r\n get requireCustomerFlag(): boolean {\r\n let require = false;\r\n\r\n // test for invoice recipient\r\n const invoiceRecipient = this.planOrderApplication.invoiceRecipient;\r\n\r\n if (invoiceRecipient && invoiceRecipient.homeSellerFlag) {\r\n require = true;\r\n }\r\n\r\n // test for sellers coverage\r\n this.planOrderApplication.productCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n // if this is sellers coverage\r\n if (indexCoverage.coverageType.sellerCoverageFlag && !indexCoverage.includedCoverageFlag) {\r\n require = true;\r\n }\r\n });\r\n\r\n // test for requirement by product market segment\r\n const marketSegment = this.planOrderApplication.product.marketSegment;\r\n\r\n if (marketSegment.requireHomeSellerFlag) {\r\n require = true;\r\n }\r\n\r\n return require;\r\n }\r\n\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'home-seller');\r\n\r\n this.customers = this.planOrderApplication.homeSellers || [];\r\n }\r\n\r\n\r\n\r\n didClickNextButton(customers: Customer[]): void {\r\n this.customers = customers;\r\n\r\n this.planOrderApplication.homeSellers = this.customers;\r\n\r\n this.persistPlanOrderApplication();\r\n\r\n // next step logic\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, 'home-seller');\r\n\r\n const urlSegment = new UrlSegment(nextRoute, {});\r\n\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderHomeSellerResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plans\r\n if (!application.planID) {\r\n if (!application.property.address) {\r\n redirectTo = 'property-address';\r\n }\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'home-seller');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n resolve(!redirectTo);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n Correct the validation errors below\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n {{roleAutoSelectionMessage()}}\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {Component, EventEmitter, OnDestroy, OnInit} from '@angular/core';\r\nimport {Observable} from 'rxjs/Observable';\r\n\r\nimport {Customer, Employer} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerUpdateService, EmployerUpdateService} from '@orhp/phx-customer-ui-module';\r\n\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\n\r\nimport {AgentRole} from '@orhp/phx-plan-ui-module';\r\n\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\n\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {OfficeAgentLookupPersistenceService} from '../../office-agent-lookup/_services/persistence.service';\r\nimport {OfficeAgentLookupService} from '../../office-agent-lookup/_services/lookup.service';\r\nimport {init} from 'protractor/built/launcher';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {AddressValidateService} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {AddressValidateRequest} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {AddressValidateResult} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {\r\n IOfficeAgentLookupValidateResult,\r\n OfficeAgentLookupValidateService\r\n} from '../../office-agent-lookup/_services/validate.service';\r\nimport {OfficeAgentLookupRelationshipType} from '../../office-agent-lookup/_src/lookup-relationship-type';\r\nimport {OfficeAgentLookupCacheService} from '../../office-agent-lookup/_services/lookup-cache.service';\r\nimport {PlanOrdererRole} from '@orhp/phx-plan-ui-module';\r\nimport {Subscription} from 'rxjs/Subscription';\r\nimport {Address} from '@orhp/phx-common-ui-module';\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-initiating-agent',\r\n templateUrl: './initiating-agent.component.html',\r\n styleUrls: ['../plan-order.scss']\r\n})\r\n\r\n\r\nexport class PlanOrderInitiatingAgentComponent\r\n extends PlanOrderBaseComponent\r\n implements OnInit, OnDestroy {\r\n\r\n // selected office and agent\r\n selectedEmployer: Employer = this.officeAgentLookupPersistenceService.employer;\r\n selectedCustomer: Customer = this.officeAgentLookupPersistenceService.customer;\r\n relationshipSkippedFlag = (this.planOrderApplication.initiatingAgentSkippedFlag || false);\r\n\r\n // selected role\r\n private _selectedRole: AgentRole = null;\r\n\r\n get selectedRole(): AgentRole {\r\n if (!this._selectedRole) {\r\n // if there is only one role\r\n if (this.roles.length === 1) {\r\n this._selectedRole = this.roles[0];\r\n }\r\n }\r\n\r\n if (!this._selectedRole) {\r\n const initiatingAgent = this.planOrderApplication.initiatingAgent;\r\n const cooperatingAgent = this.planOrderApplication.cooperatingAgent;\r\n\r\n let listingAgentFlag = false;\r\n let sellingAgentFlag = false;\r\n let doubleEndFlag = false;\r\n\r\n // double-ending\r\n if (initiatingAgent && cooperatingAgent && initiatingAgent.isEqualToCustomer(cooperatingAgent)) {\r\n doubleEndFlag = true;\r\n\r\n } else if (this.planOrderApplication.initiatingAgentListingFlag) {\r\n listingAgentFlag = true;\r\n\r\n } else if (this.planOrderApplication.cooperatingAgentListingFlag) {\r\n sellingAgentFlag = true;\r\n }\r\n\r\n // if none were found\r\n if (initiatingAgent && !listingAgentFlag && !sellingAgentFlag && !doubleEndFlag) {\r\n // it's the selling agent\r\n sellingAgentFlag = true;\r\n }\r\n\r\n this.planLookupValueService.roles.forEach((indexRole: AgentRole) => {\r\n if (indexRole.doubleEndFlag) {\r\n if (doubleEndFlag) {\r\n this._selectedRole = indexRole;\r\n }\r\n\r\n } else {\r\n if (listingAgentFlag && indexRole.listingAgentFlag) {\r\n this._selectedRole = indexRole;\r\n\r\n } else if (sellingAgentFlag && indexRole.sellingAgentFlag) {\r\n this._selectedRole = indexRole;\r\n }\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n return this._selectedRole;\r\n }\r\n\r\n\r\n set selectedRole(role: AgentRole) {\r\n this._selectedRole = role;\r\n }\r\n\r\n\r\n // validation error collection\r\n validationStatus: ValidationStatus = ValidationStatus.none;\r\n employerValidateResult: EmployerValidateResult = null;\r\n customerValidateResult: CustomerValidateResult = null;\r\n\r\n // resets search history\r\n resetLookupEventEmitter: EventEmitter = new EventEmitter();\r\n\r\n // if we're auto-matching to an office\r\n employerAutoMatch: Employer = null;\r\n customerAutoMatch: Customer = null;\r\n\r\n\r\n employerEventSubscription: Subscription = null;\r\n customerEventSubscription: Subscription = null;\r\n skipEventSubscription: Subscription = null;\r\n\r\n\r\n // constructor\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private officeAgentLookupValidateService: OfficeAgentLookupValidateService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private officeAgentLookupCacheService: OfficeAgentLookupCacheService,\r\n private planLookupValueService: PlanLookupValueService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderStepService: PlanOrderStepService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n\r\n get roles(): AgentRole[] {\r\n const transactionType = this.planOrderApplication.transactionType;\r\n\r\n const roles = [];\r\n\r\n this.planLookupValueService.roles.forEach((indexRole: AgentRole) => {\r\n let includeFlag = true;\r\n\r\n // if this is an active listing\r\n if (transactionType && transactionType.activeListingFlag) {\r\n // do not include selling agents\r\n if (indexRole.sellingAgentFlag) {\r\n includeFlag = false;\r\n }\r\n }\r\n\r\n if (includeFlag) {\r\n roles.push(indexRole);\r\n }\r\n });\r\n\r\n return roles;\r\n }\r\n\r\n\r\n\r\n\r\n // called when loaded\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n // sets the current step\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'initiating-agent');\r\n\r\n // if there is only one role\r\n let defaultRole: AgentRole = null;\r\n\r\n if (this.roles.length === 1) {\r\n defaultRole = this.roles[0];\r\n }\r\n\r\n\r\n // subscribe to employer updates\r\n this.employerEventSubscription = this.officeAgentLookupPersistenceService.employerEventEmitter.subscribe(\r\n (employer: Employer) => {\r\n\r\n this.selectedEmployer = employer;\r\n\r\n this.selectedRole = defaultRole;\r\n\r\n this.validationStatus = ValidationStatus.none;\r\n });\r\n\r\n // subscribe to customer updates\r\n this.customerEventSubscription = this.officeAgentLookupPersistenceService.customerEventEmitter.subscribe(\r\n (customer: Customer) => {\r\n\r\n this.selectedCustomer = customer;\r\n\r\n this.selectedRole = defaultRole;\r\n\r\n this.validationStatus = ValidationStatus.none;\r\n });\r\n\r\n // subscribe to skip events\r\n this.skipEventSubscription = this.officeAgentLookupService.skipEventEmitter.subscribe(\r\n (skipFlag: boolean) => {\r\n\r\n if (skipFlag) {\r\n this.didClickSkip();\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.officeAgentLookupCacheService.clearCache();\r\n\r\n this.employerEventSubscription.unsubscribe();\r\n this.customerEventSubscription.unsubscribe();\r\n this.skipEventSubscription.unsubscribe();\r\n }\r\n\r\n\r\n\r\n shouldDisplayEmployerAutoMatch(): boolean {\r\n return !!this.employerAutoMatch;\r\n }\r\n\r\n\r\n shouldDisplayCustomerAutoMatch(): boolean {\r\n return !!this.customerAutoMatch;\r\n }\r\n\r\n\r\n shouldDisplayRoleSelection(): boolean {\r\n let displayFlag = true;\r\n\r\n // do not display if no customer has been selected\r\n if (!this.selectedCustomer) {\r\n displayFlag = false;\r\n }\r\n\r\n // do not display if there is one or fewer roles available\r\n if (this.roles.length <= 1) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n roleAutoSelectionMessage(): string {\r\n let message: string = null;\r\n\r\n const roleFlag = (this.roles.length === 1);\r\n const customerFlag = !!this.selectedCustomer;\r\n\r\n if (roleFlag && customerFlag) {\r\n const role = this.roles[0];\r\n\r\n message = 'The Initiating Agent role has been updated to ' + role.description;\r\n }\r\n\r\n return message;\r\n }\r\n\r\n\r\n\r\n shouldDisplayRoleSelectionError(): boolean {\r\n let flag = true;\r\n\r\n if (this.selectedRole) {\r\n flag = false;\r\n }\r\n\r\n if (this.validationStatus === ValidationStatus.none) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n isRoleSelected(role: AgentRole): boolean {\r\n return (role === this.selectedRole);\r\n }\r\n\r\n\r\n didClickRole(role: AgentRole) {\r\n this.selectedRole = role;\r\n }\r\n\r\n\r\n // should the Next button be displayed\r\n shouldDisplayNextButton(): boolean {\r\n return (this.selectedCustomer !== null);\r\n }\r\n\r\n\r\n // user clicked the Back button\r\n didClickBackButton(): void {\r\n\r\n }\r\n\r\n\r\n // user clicked the Next button\r\n didClickNextButton(): void {\r\n this.performValidation();\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // performs validation\r\n performValidation(): void {\r\n\r\n const newEmployerFlag = !this.selectedEmployer.employerID;\r\n\r\n const lookupTypeCode = OfficeAgentLookupRelationshipType.typeCodeInitiatingAgent;\r\n\r\n this.officeAgentLookupValidateService.performValidation(\r\n this.selectedEmployer,\r\n this.selectedCustomer,\r\n lookupTypeCode)\r\n .subscribe((results: IOfficeAgentLookupValidateResult) => {\r\n\r\n this.customerValidateResult = results.customerValidateResult;\r\n this.employerValidateResult = results.employerValidateResult;\r\n\r\n\r\n // are we allowing auto-match?\r\n let allowAutoMatch = true;\r\n\r\n if (this.shouldDisplayRoleSelectionError()) {\r\n allowAutoMatch = false;\r\n }\r\n\r\n if (allowAutoMatch) {\r\n this.customerAutoMatch = results.customerAutoMatch;\r\n this.employerAutoMatch = results.employerAutoMatch;\r\n }\r\n\r\n\r\n // set the validation status\r\n let validationStatus = ValidationStatus.success;\r\n\r\n // if there was a customer auto-match\r\n if (this.customerAutoMatch) {\r\n validationStatus = ValidationStatus.customerAutoMatch;\r\n\r\n // if there was an employer auto-match\r\n } else if (this.employerAutoMatch) {\r\n validationStatus = ValidationStatus.employerAutoMatch;\r\n\r\n // if there are any validation errors\r\n } else if (this.validationError()) {\r\n validationStatus = ValidationStatus.validationFailure;\r\n\r\n // checks specific to new offices\r\n } else if (newEmployerFlag) {\r\n\r\n // if the physical address was updated with validation\r\n if (this.employerValidateResult.employerPhysicalAddressUpdated()) {\r\n validationStatus = ValidationStatus.addressValidationSuccess;\r\n\r\n // if the physical address wasn't validated\r\n } else if (!this.employerValidateResult.employerPhysicalAddressValidated()) {\r\n validationStatus = ValidationStatus.addressValidationFailure;\r\n }\r\n\r\n }\r\n\r\n this.validationStatus = validationStatus;\r\n\r\n\r\n // if the validation was successful\r\n if (validationStatus === ValidationStatus.success) {\r\n this.gotoNextStep();\r\n }\r\n\r\n });\r\n }\r\n\r\n\r\n employerPhysicalAddressForValidation(): Address[] {\r\n const addresses = [];\r\n\r\n if (this.employerValidateResult) {\r\n const address = this.employerValidateResult.employerPhysicalAddress();\r\n\r\n addresses.push(address);\r\n }\r\n\r\n return addresses;\r\n }\r\n\r\n\r\n shouldDisplayAddressValidationModal(): boolean {\r\n let flag = false;\r\n\r\n flag = flag || (this.validationStatus === ValidationStatus.addressValidationSuccess);\r\n flag = flag || (this.validationStatus === ValidationStatus.addressValidationFailure);\r\n\r\n return flag;\r\n }\r\n\r\n\r\n handleAddressValidationUserResponse(flag: boolean) {\r\n // if the user wants to continue\r\n if (flag) {\r\n const physicalAddress = this.selectedEmployer.physicalAddress;\r\n\r\n // if the address was validated\r\n if (this.employerValidateResult.employerPhysicalAddressValidated()) {\r\n const validatedAddress = this.employerValidateResult.employerValidatedPhysicalAddress();\r\n\r\n physicalAddress.address = validatedAddress.address;\r\n physicalAddress.city = validatedAddress.city;\r\n physicalAddress.stateCode = validatedAddress.stateCode;\r\n physicalAddress.zipCode = validatedAddress.zipCode;\r\n }\r\n\r\n this.gotoNextStep();\r\n\r\n // if the user wants to make changes\r\n } else {\r\n this.validationStatus = ValidationStatus.none;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // should the validation error be displayed\r\n validationError(): boolean {\r\n let errorFlag = false;\r\n\r\n if (this.employerValidateResult) {\r\n errorFlag = errorFlag || this.employerValidateResult.errorFlag;\r\n }\r\n\r\n if (this.customerValidateResult) {\r\n errorFlag = errorFlag || this.customerValidateResult.errorFlag;\r\n }\r\n\r\n if (!this.selectedRole) {\r\n errorFlag = true;\r\n }\r\n\r\n return errorFlag;\r\n }\r\n\r\n\r\n shouldDisplayValidationError(): boolean {\r\n let displayFlag = true;\r\n\r\n if (!this.validationError()) {\r\n displayFlag = false;\r\n }\r\n\r\n if (this.validationStatus !== ValidationStatus.validationFailure) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // the user responded to the office auto-match\r\n didClickOfficeAutoMatchResponse(responseFlag: boolean) {\r\n // if the user wants to accept the office\r\n if (responseFlag) {\r\n this.selectedEmployer = this.employerAutoMatch;\r\n\r\n this.selectedCustomer.employer = this.selectedEmployer;\r\n\r\n this.gotoNextStep();\r\n\r\n\r\n // if the user does not want to accept the office\r\n } else {\r\n this.employerAutoMatch = null;\r\n }\r\n }\r\n\r\n\r\n // the user clicked the agent auto match response\r\n didClickAgentAutoMatchResponse(responseFlag: boolean) {\r\n // if the user wants to accept the agent\r\n if (responseFlag) {\r\n this.selectedCustomer = this.customerAutoMatch;\r\n\r\n this.selectedCustomer.employer = this.selectedEmployer;\r\n\r\n this.gotoNextStep();\r\n\r\n // if the user does not want to accept the agent\r\n } else {\r\n this.customerAutoMatch = null;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n // user clicked to Skip\r\n didClickSkip(): void {\r\n this.relationshipSkippedFlag = true;\r\n this.selectedEmployer = null;\r\n this.selectedCustomer = null;\r\n\r\n this.gotoNextStep();\r\n }\r\n\r\n\r\n // go to the next step\r\n gotoNextStep() {\r\n\r\n // was this application previously double-ended? (hold onto for later)\r\n const prevDoubleEndFlag = this.planOrderApplication.doubleEndFlag;\r\n\r\n\r\n // save the initiating agent info\r\n this.planOrderApplication.initiatingAgentSkippedFlag = this.relationshipSkippedFlag;\r\n this.planOrderApplication.initiatingAgent = this.selectedCustomer;\r\n\r\n // set the listing/selling flag\r\n let initiatingAgentListingFlag = false;\r\n\r\n if (this.selectedRole) {\r\n initiatingAgentListingFlag = initiatingAgentListingFlag || this.selectedRole.listingAgentFlag;\r\n initiatingAgentListingFlag = initiatingAgentListingFlag || this.selectedRole.doubleEndFlag;\r\n }\r\n\r\n this.planOrderApplication.initiatingAgentListingFlag = initiatingAgentListingFlag;\r\n this.planOrderApplication.cooperatingAgentListingFlag = !this.planOrderApplication.initiatingAgentListingFlag;\r\n\r\n // if they are being double-ended now\r\n if (this.selectedRole && this.selectedRole.doubleEndFlag) {\r\n this.planOrderApplication.cooperatingAgent = this.selectedCustomer;\r\n\r\n // if the application was previously double-ended\r\n } else if (prevDoubleEndFlag) {\r\n this.planOrderApplication.cooperatingAgent = null;\r\n }\r\n\r\n\r\n // next step logic\r\n this.officeAgentLookupPersistenceService.clearPersistedValues();\r\n\r\n this.persistPlanOrderApplication();\r\n\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n\r\n const url = '../' + nextRoute;\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n\r\n}\r\n\r\n\r\nenum ValidationStatus {\r\n none = 10,\r\n validationFailure = 20,\r\n addressValidationFailure = 30,\r\n addressValidationSuccess = 40,\r\n employerAutoMatch = 50,\r\n customerAutoMatch = 60,\r\n success = 70\r\n}\r\n\r\n","\r\n\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupPersistenceService} from '../../office-agent-lookup/_services/persistence.service';\r\nimport {OfficeAgentLookupRelationshipType} from '../../office-agent-lookup/_src/lookup-relationship-type';\r\nimport {OfficeAgentLookupService} from '../../office-agent-lookup/_services/lookup.service';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderInitiatingAgentResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plans\r\n if (!application.planID) {\r\n // make sure the role is selected\r\n if (!application.role) {\r\n redirectTo = 'role';\r\n }\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'initiating-agent');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n // validate the initiating relationship\r\n } else {\r\n const relationship = OfficeAgentLookupRelationshipType.typeCodeInitiatingAgent;\r\n\r\n this.officeAgentLookupPersistenceService.validateLookupType(relationship);\r\n\r\n this.officeAgentLookupPersistenceService.lookupTypeCode = relationship;\r\n\r\n // check that the saved customer and employer matches the one in the application\r\n if (application.initiatingAgentOffice) {\r\n this.officeAgentLookupPersistenceService.setEmployerIfDifferent(application.initiatingAgentOffice);\r\n }\r\n\r\n if (application.initiatingAgent) {\r\n this.officeAgentLookupPersistenceService.setCustomerIfDifferent(application.initiatingAgent);\r\n }\r\n }\r\n\r\n resolve(!redirectTo);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n We may have updated the Mailing Address\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{this.validatedAddress}}
\\r\\n {{this.validatedCity}}, {{this.validatedStateCode}} {{this.validatedZipCode}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n We could not validate this address to USPS.\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Please review the address. If you believe the address is correct, click Accept and Continue.\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.userAddress | uppercase}}
\\r\\n {{this.userCity | uppercase}}, {{this.userStateCode | uppercase}} {{this.userZipCode}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n Property Address:\\r\\n \\r\\n\\r\\n \\r\\n {{property.address}}, {{property.city}}, {{property.stateCode}} {{property.zipCode}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
Validating Mailing Address, please wait...
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Check Box if the Home Buyer mailing address is different from property address\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \"\"","import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {PropertyLookupService} from '@orhp/phx-property-ui-module';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {PlanDomainFactoryService, PlanUpdateService} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {AddressValidateService} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {PlanLookupService} from '@orhp/phx-plan-ui-module';\r\nimport {SystemMessageLookupService} from '@orhp/phx-system-ui-module';\r\nimport {AddressValidateRequest, AddressValidateResult} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {Property} from '@orhp/phx-property-ui-module';\r\nimport {Address} from '@orhp/phx-common-ui-module';\r\nimport {validate} from 'codelyzer/walkerFactory/walkerFn';\r\n\r\n@Component({\r\n selector: 'app-plan-order-mailing-address',\r\n templateUrl: './mailing-address.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './mailing-address.component.scss'\r\n ]\r\n})\r\n\r\nexport class PlanOrderMailingAddressComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n addressValidationState = AddressValidationState.none;\r\n\r\n titleText = 'Update Home Buyer Mailing Address';\r\n\r\n originalAddress: Address = null;\r\n\r\n userAddress = '';\r\n userCity = '';\r\n userStateCode = '';\r\n userZipCode = '';\r\n\r\n validatedAddress = '';\r\n validatedCity = '';\r\n validatedStateCode = '';\r\n validatedZipCode = '';\r\n\r\n\r\n get property(): Property {\r\n return this.planOrderApplication.property;\r\n }\r\n\r\n\r\n mailingAddressSameAsPropertyFlag = false;\r\n\r\n\r\n @ViewChild('addressInput')\r\n addressInput: ElementRef;\r\n\r\n\r\n // constructor\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private systemMessageLookupService: SystemMessageLookupService,\r\n private addressValidateService: AddressValidateService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderStepService: PlanOrderStepService,\r\n private planUpdateService: PlanUpdateService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'mailing-address');\r\n\r\n const mailingAddress = this.planOrderApplication.mailingAddress;\r\n\r\n this.originalAddress = mailingAddress;\r\n\r\n if (mailingAddress) {\r\n this.userAddress = (mailingAddress.address || '');\r\n this.userCity = (mailingAddress.city || '');\r\n this.userStateCode = (mailingAddress.stateCode || '');\r\n this.userZipCode = (mailingAddress.zipCode || '');\r\n\r\n this.reconcileMailingAddressSameAsPropertyFlag();\r\n }\r\n\r\n if (this.userAddress === '') {\r\n this.addressInput.nativeElement.focus();\r\n }\r\n }\r\n\r\n\r\n reconcileMailingAddressSameAsPropertyFlag() {\r\n let addressMatch = true;\r\n addressMatch = addressMatch && (this.userAddress === this.property.address);\r\n addressMatch = addressMatch && (this.userZipCode === this.property.zipCode);\r\n\r\n this.mailingAddressSameAsPropertyFlag = addressMatch;\r\n }\r\n\r\n\r\n didClickMailingAddressSameAsProperty() {\r\n this.mailingAddressSameAsPropertyFlag = !this.mailingAddressSameAsPropertyFlag;\r\n\r\n if (this.mailingAddressSameAsPropertyFlag) {\r\n this.userAddress = this.property.address;\r\n this.userCity = this.property.city;\r\n this.userStateCode = this.property.stateCode;\r\n this.userZipCode = this.property.zipCode;\r\n\r\n } else {\r\n this.userAddress = '';\r\n this.userCity = '';\r\n this.userStateCode = '';\r\n this.userZipCode = '';\r\n\r\n setTimeout(() => {\r\n this.addressInput.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n\r\n shouldDisableAddressFields(): boolean {\r\n return this.mailingAddressSameAsPropertyFlag;\r\n }\r\n\r\n\r\n shouldDisplayAddressValidationSuccess(): boolean {\r\n return (this.addressValidationState === AddressValidationState.validationSuccess);\r\n }\r\n\r\n\r\n shouldDisplayAddressValidationError(): boolean {\r\n return (this.addressValidationState === AddressValidationState.validationFailure);\r\n }\r\n\r\n\r\n shouldDisplayRunningMessage(): boolean {\r\n return (this.addressValidationState === AddressValidationState.running);\r\n }\r\n\r\n\r\n\r\n\r\n streetAddressError(): string {\r\n let error: string = null;\r\n\r\n if (this.addressValidationState === AddressValidationState.attemped) {\r\n if (this.userAddress === '') {\r\n error = 'Street Address is required';\r\n }\r\n }\r\n\r\n return error;\r\n }\r\n\r\n\r\n cityError(): string {\r\n let error: string = null;\r\n\r\n if (this.addressValidationState === AddressValidationState.attemped) {\r\n if (this.userCity === '') {\r\n error = 'City is required';\r\n }\r\n }\r\n\r\n return error;\r\n }\r\n\r\n\r\n stateCodeError(): string {\r\n let error: string = null;\r\n\r\n if (this.addressValidationState === AddressValidationState.attemped) {\r\n if (this.userStateCode === '') {\r\n error = 'State is required';\r\n }\r\n }\r\n\r\n return error;\r\n }\r\n\r\n\r\n zipCodeError(): string {\r\n let error: string = null;\r\n\r\n if (this.addressValidationState === AddressValidationState.attemped) {\r\n if (this.userZipCode === '') {\r\n error = 'Zip Code is required';\r\n }\r\n }\r\n\r\n return error;\r\n }\r\n\r\n\r\n didClickNext() {\r\n let addressChangeFlag = false;\r\n\r\n if (!this.originalAddress) {\r\n addressChangeFlag = true;\r\n\r\n } else {\r\n addressChangeFlag = addressChangeFlag || (this.userAddress !== this.originalAddress.address);\r\n addressChangeFlag = addressChangeFlag || (this.userCity !== this.originalAddress.city);\r\n addressChangeFlag = addressChangeFlag || (this.userStateCode !== this.originalAddress.stateCode);\r\n addressChangeFlag = addressChangeFlag || (this.userZipCode !== this.userZipCode);\r\n }\r\n\r\n\r\n // if the address wasn't updated\r\n if (!addressChangeFlag) {\r\n this.gotoNextStep();\r\n\r\n // if the property address is different than the mailing address\r\n } else if (!this.mailingAddressSameAsPropertyFlag) {\r\n this.addressValidationState = AddressValidationState.attemped;\r\n\r\n let addressOkayFlag = true;\r\n addressOkayFlag = addressOkayFlag && !this.streetAddressError();\r\n addressOkayFlag = addressOkayFlag && !this.cityError();\r\n addressOkayFlag = addressOkayFlag && !this.stateCodeError();\r\n addressOkayFlag = addressOkayFlag && !this.zipCodeError();\r\n\r\n if (addressOkayFlag) {\r\n const request = new AddressValidateRequest();\r\n\r\n request.address = this.userAddress;\r\n request.city = this.userCity;\r\n request.stateCode = this.userStateCode;\r\n request.zipCode = this.userZipCode;\r\n\r\n this.addressValidationState = AddressValidationState.running;\r\n\r\n this.addressValidateService.validateAddress(request)\r\n .subscribe((result: AddressValidateResult) => {\r\n\r\n // if the address was validated\r\n if (result.validatedFlag) {\r\n this.validatedAddress = result.cleanAddress;\r\n this.validatedCity = result.cleanCity;\r\n this.validatedStateCode = result.cleanStateCode;\r\n this.validatedZipCode = result.cleanZipCode;\r\n\r\n // if the validated address matches\r\n let validatedMatchFlag = true;\r\n validatedMatchFlag = validatedMatchFlag && (this.userAddress === this.validatedAddress);\r\n validatedMatchFlag = validatedMatchFlag && (this.userCity === this.validatedCity);\r\n validatedMatchFlag = validatedMatchFlag && (this.userStateCode === this.validatedStateCode);\r\n validatedMatchFlag = validatedMatchFlag && (this.userZipCode === this.validatedZipCode);\r\n\r\n if (validatedMatchFlag) {\r\n this.didClickSuccessContinue();\r\n\r\n } else {\r\n this.addressValidationState = AddressValidationState.validationSuccess;\r\n }\r\n\r\n // if the address was not validated\r\n } else {\r\n this.addressValidationState = AddressValidationState.validationFailure;\r\n }\r\n });\r\n }\r\n\r\n // if the property address is the same as the mailing address\r\n } else {\r\n const address = new Address();\r\n\r\n address.address = this.property.address;\r\n address.city = this.property.city;\r\n address.stateCode = this.property.stateCode;\r\n address.zipCode = this.property.zipCode;\r\n\r\n this.planOrderApplication.mailingAddress = address;\r\n\r\n this.gotoNextStep();\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n didClickUpdateAddress() {\r\n this.addressValidationState = AddressValidationState.none;\r\n }\r\n\r\n\r\n\r\n didClickSuccessContinue() {\r\n const address = new Address();\r\n\r\n address.address = this.validatedAddress;\r\n address.city = this.validatedCity;\r\n address.stateCode = this.validatedStateCode;\r\n address.zipCode = this.validatedZipCode;\r\n\r\n this.planOrderApplication.mailingAddress = address;\r\n\r\n this.gotoNextStep();\r\n }\r\n\r\n\r\n didClickErrorContinue() {\r\n const address = new Address();\r\n\r\n address.address = this.userAddress.toUpperCase();\r\n address.city = this.userCity.toUpperCase();\r\n address.stateCode = this.userStateCode.toUpperCase();\r\n address.zipCode = this.userZipCode.toUpperCase();\r\n\r\n this.planOrderApplication.mailingAddress = address;\r\n\r\n this.gotoNextStep();\r\n }\r\n\r\n\r\n gotoNextStep() {\r\n\r\n this.submitMailingAddress();\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n const url = '../' + nextRoute;\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n\r\n\r\n submitMailingAddress() {\r\n this.planUpdateService.updatePlanHomeOwnerMailingAddress(this.planOrderApplication.planID, this.planOrderApplication.mailingAddress, true).subscribe();\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\nenum AddressValidationState {\r\n none = 10,\r\n attemped = 15,\r\n running = 20,\r\n validationSuccess = 40,\r\n validationFailure = 50\r\n}\r\n\r\n","module.exports = \"\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
Matching Office Found
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n We were able to match the office:\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{this.employer.employerName}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.employer.physicalAddress.address}}
\\r\\n {{this.employer.physicalAddress.city}}\\r\\n {{this.employer.physicalAddress.stateCode}}\\r\\n {{this.employer.physicalAddress.zipCode}}\\r\\n
\\r\\n\\r\\n
\\r\\n Phone: {{this.employer.mainPhone.formattedPhoneNumber}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \"\"","\r\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-office-auto-match',\r\n templateUrl: './office-auto-match.component.html',\r\n styleUrls: ['./office-auto-match.component.scss']\r\n})\r\n\r\n\r\nexport class PlanOrderOfficeAutoMatchComponent implements OnInit {\r\n\r\n\r\n @Input() employer: Employer = null;\r\n\r\n @Output() onOfficeConfirm = new EventEmitter();\r\n\r\n\r\n constructor() {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n didClickCorrectOffice() {\r\n this.onOfficeConfirm.emit(false);\r\n }\r\n\r\n\r\n didClickAcceptOffice() {\r\n this.onOfficeConfirm.emit(true);\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Guest Home/Casita\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n {{guestHomeExceedsSizeQuestionMessage.message}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Guest Home/Casita\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n {{guestHomeExceedsSizeWarningMessage.message}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n There was a problem generating your Plan Quote\\r\\n
\\r\\n\\r\\n\\r\\n
Coverage Selected
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n {{product.premium | premiumDollarFormat: productOfficeToolbox?.priceDisplayDurationCode | dollarFormatOptionalDecimal}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.planCvgDuration}}\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n {{product.productDescription}}\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n Trade Call Fee: ${{product.formattedTradeCallFee}}\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n Select a different product\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
Loading optional coverage, please wait...
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n {{optionReselectionMessage()}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{noSellersCoverageMessage()}}\\r\\n
\\r\\n\\r\\n
\\r\\n Choose your optional coverage:\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n {{sectionTitleText(indexSellerCoverageFlag)}}\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{indexCoverage.premium | premiumDollarFormat: productOfficeToolbox?.priceDisplayDurationCode | dollarFormatOptionalDecimal}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.optionalCvgDuration}}\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n {{indexCoverage.coverageDescription}}\\r\\n\\r\\n \\r\\n
{{indexCoverage.coverageDetail}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Total\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n {{coverageTotalAmount() | premiumDollarFormat: productOfficeToolbox?.priceDisplayDurationCode | dollarFormatOptionalDecimal}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.planCvgDuration}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n Ready to order? Click Next!\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{coverageTotalAmount() | premiumDollarFormat: productOfficeToolbox?.priceDisplayDurationCode | dollarFormatOptionalDecimal}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Total\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.planCvgDuration}}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Ready to order? Tap Next!\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n {{indexMessage}}\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"div.optional-coverage-price-included::before{font-style:italic;color:#999999;content:\\\"(included)\\\"}@media (max-width: 576px){div.optional-coverage-price-included::before{font-size:0.8em}}div.optional-coverage-price-extra{font-weight:bold;float:left}@media (max-width: 576px){div.optional-coverage-price-extra{width:100%;padding-right:15px}}@media (min-width: 577px){div.optional-coverage-price-extra{width:75px}}div.optional-coverage-price-extra div.optional-coverage-price-extra-amount{float:right}div.optional-coverage-price-extra::before{content:\\\"$\\\"}@media (max-width: 576px){div.optional-coverage-price-daily{text-align:right}}@media (min-width: 577px){div.optional-coverage-price-daily{float:left;margin-left:5px}}span.optional-coverage-is-prerequisite-alert::after{content:\\\"Requires this coverage\\\";margin-left:10px;font-size:0.8em;color:#a4343a}@media (max-width: 767px){span.optional-coverage-is-prerequisite-alert::after{display:block}}@media (min-width: 768px){span.optional-coverage-is-prerequisite-alert::after{top:-0.5em;position:relative}}span.optional-coverage-has-prerequisite span.optional-coverage-detail{padding-left:20px}span.optional-coverage-has-prerequisite::before{padding-left:20px;content:\\\"\\\\f054\\\";font-family:\\\"FontAwesome\\\"}span.optional-coverage-detail{font-size:10pt;font-style:italic}div.total-row{color:#003087}@media (min-width: 577px){div.total-row-mobile{display:none}}div.total-row-mobile div.quote-button-container button.btn-quote{width:100%}@media (max-width: 576px){div.total-row-full{display:none}}button.btn-quote{min-width:150px}@media (max-width: 767px){div.optional-coverage-row{min-height:44px}}\\n\"","\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {ProductCoverage, ProductOffice, ProductOfficeToolbox} from '@orhp/phx-product-ui-module';\r\nimport {ProductLookupService} from '@orhp/phx-product-ui-module';\r\nimport {ProductLookupValueService} from '@orhp/phx-product-ui-module';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {Product} from '@orhp/phx-product-ui-module';\r\nimport {PlanOrderProgress} from '../_models/plan-order-progress';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {DateUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanQuoteService} from '../_services/plan-quote.service';\r\nimport {PlanQuoteRequest} from '../_src/plan-quote-request';\r\nimport {PlanQuoteResult} from '../_src/plan-quote-result';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {IMapItem, MapUtility} from '@orhp/phx-common-ui-module';\r\nimport {SystemMessageLookupService} from '@orhp/phx-system-ui-module';\r\nimport {SystemMessageLookupParams} from '@orhp/phx-system-ui-module';\r\nimport {SystemMessage} from '@orhp/phx-system-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {ProductDomainFactoryService} from '@orhp/phx-product-ui-module';\r\nimport {UsefulMap} from '@orhp/phx-common-ui-module';\r\nimport {PlanDomainFactoryService} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOption} from '@orhp/phx-plan-ui-module';\r\nimport {ArrayUtility} from '@orhp/phx-common-ui-module';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\nimport {DurationEnum} from '../_src/price-duration-enum';\r\n\r\n@Component({\r\n selector: 'app-plan-order-optional-coverage',\r\n templateUrl: './optional-coverage.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './optional-coverage.component.scss'\r\n ]\r\n})\r\n\r\nexport class PlanOrderOptionalCoverageComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n coveragesLoadedFlag = false;\r\n\r\n sellerCoverageFlags = [true, false];\r\n\r\n coverages: SelectableProductCoverage[] = null;\r\n\r\n optionUnits = [1, 2, 3, 4];\r\n\r\n coverageWithPrerequisitesAttempted: SelectableProductCoverage = null;\r\n\r\n optionalCoverageSystemMessages: SystemMessage[] = null;\r\n\r\n optionalCoverageReselectionMessage: SystemMessage = null;\r\n\r\n buyerCoverageHeaderMessage: SystemMessage = null;\r\n sellerCoverageHeaderMessage: SystemMessage = null;\r\n\r\n quoteStatus: QuoteStatus = QuoteStatus.none;\r\n emailQuoteRequest: PlanQuoteRequest = null;\r\n\r\n\r\n optionalCoverageReselectMessageType = 'plan-order-optional-coverage-reselect-message';\r\n\r\n optionalCoverageMessageType = 'plan-order-optional-coverage-message';\r\n\r\n buyerCoverageHeaderMessageType = 'plan-order-optional-coverage-buyer-header';\r\n sellerCoverageHeaderMessageType = 'plan-order-optional-coverage-seller-header';\r\n\r\n /* ORHP-3017 */\r\n// shows the guest home option modal\r\n showGuestHomeOptionModal = false;\r\n\r\n// shows the guest home warning modal\r\n showGuestHomeWarningModal = false;\r\n\r\n// stores the answer to the guest home modal question\r\n guestHomeExceedsSizeFlag: boolean = null;\r\n\r\n\r\n guestHomeExceedsSizeQuestionType = 'guest-home-exceeds-size-question';\r\n guestHomeExceedsSizeWarningType = 'guest-home-exceeds-size-warning';\r\n guestHomeExceedsSizeQuestionMessage: SystemMessage = null;\r\n guestHomeExceedsSizeWarningMessage: SystemMessage = null;\r\n optionalCvgDuration = '';\r\n planCvgDuration = '';\r\n\r\n\r\n\r\n\r\n get productOfficeGroup(): ProductOffice {\r\n return this.planOrderAuthService.productOffice;\r\n }\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n return this.planOrderAuthService.productOfficeToolbox;\r\n }\r\n\r\n\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private systemService: PhxSystemService,\r\n private systemMessageLookupService: SystemMessageLookupService,\r\n private productLookupValueService: ProductLookupValueService,\r\n private productLookupService: ProductLookupService,\r\n private productDomainFactoryService: ProductDomainFactoryService,\r\n private planDomainFactoryService: PlanDomainFactoryService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderStepService: PlanOrderStepService,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private planQuoteService: PlanQuoteService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n get product(): Product {\r\n return this.planOrderApplication.product;\r\n }\r\n\r\n\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'optional-coverage');\r\n\r\n // load system messages\r\n const messageLookupParams = new SystemMessageLookupParams();\r\n messageLookupParams.type = this.optionalCoverageMessageType + ',' +\r\n this.buyerCoverageHeaderMessageType + ',' +\r\n this.sellerCoverageHeaderMessageType + ',' +\r\n this.optionalCoverageReselectMessageType + ',' +\r\n this.guestHomeExceedsSizeQuestionType + ',' +\r\n this.guestHomeExceedsSizeWarningType;\r\n messageLookupParams.includeCriteriaFlag = true;\r\n\r\n\r\n const observables: Observable[] = [];\r\n\r\n observables.push(this.systemMessageLookupService.systemMessageLookup(messageLookupParams));\r\n observables.push(this.productLookupService.fetchCoverages(this.product));\r\n\r\n Observable.forkJoin(observables).subscribe((results: any[]) => {\r\n // handle system messages\r\n const systemMessages = results[0];\r\n\r\n // update system messages\r\n systemMessages.forEach((indexSystemMessage: SystemMessage) => {\r\n let text = indexSystemMessage.message;\r\n\r\n text = text.replace('${appsPhoneNumber}', this.planOrderAuthService.appsPhoneNumber);\r\n\r\n indexSystemMessage.message = text;\r\n });\r\n\r\n this.optionalCoverageSystemMessages = ArrayUtility.arrayFindMultiple(\r\n systemMessages,\r\n (testMessage: SystemMessage): boolean => {\r\n return (testMessage.type === this.optionalCoverageMessageType);\r\n });\r\n\r\n this.optionalCoverageReselectionMessage = ArrayUtility.arrayFind(\r\n systemMessages,\r\n (testMessage: SystemMessage): boolean => {\r\n return (testMessage.type === this.optionalCoverageReselectMessageType);\r\n }\r\n );\r\n\r\n this.buyerCoverageHeaderMessage = ArrayUtility.arrayFind(\r\n systemMessages,\r\n (testMessage: SystemMessage): boolean => {\r\n return (testMessage.type === this.buyerCoverageHeaderMessageType);\r\n }\r\n );\r\n\r\n this.sellerCoverageHeaderMessage = ArrayUtility.arrayFind(\r\n systemMessages,\r\n (testMessage: SystemMessage): boolean => {\r\n return (testMessage.type === this.sellerCoverageHeaderMessageType);\r\n }\r\n );\r\n\r\n this.guestHomeExceedsSizeQuestionMessage = ArrayUtility.arrayFind(\r\n systemMessages,\r\n (testMessage: SystemMessage): boolean => {\r\n return (testMessage.type === this.guestHomeExceedsSizeQuestionType);\r\n }\r\n );\r\n\r\n\r\n this.guestHomeExceedsSizeWarningMessage = ArrayUtility.arrayFind(\r\n systemMessages,\r\n (testMessage: SystemMessage): boolean => {\r\n return (testMessage.type === this.guestHomeExceedsSizeWarningType);\r\n }\r\n );\r\n\r\n\r\n // handle optional coverages\r\n const fetchedCoverages = results[1];\r\n\r\n\r\n const planOptions = this.planOrderApplication.planOptions;\r\n\r\n const selectableCoverages = [];\r\n\r\n fetchedCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n const indexOption = ArrayUtility.arrayFind(planOptions, (testOption: PlanOption): boolean => {\r\n return (testOption.coverageID === indexCoverage.coverageID);\r\n });\r\n\r\n // create a new selectable product coverage\r\n const indexSelectableCoverage = new SelectableProductCoverage(\r\n this.productDomainFactoryService,\r\n this.planDomainFactoryService,\r\n indexCoverage,\r\n indexOption\r\n );\r\n\r\n selectableCoverages.push(indexSelectableCoverage);\r\n\r\n // should this coverage be selected?\r\n let shouldCoverageBeSelected = false;\r\n\r\n // if the coverage is included\r\n if (this.isCoverageIncluded(indexSelectableCoverage)) {\r\n shouldCoverageBeSelected = true;\r\n }\r\n\r\n // if the CoverageID was selected\r\n if (indexOption) {\r\n shouldCoverageBeSelected = true;\r\n }\r\n\r\n // if we're selecting the coverage\r\n if (shouldCoverageBeSelected) {\r\n this.addCoverage(indexSelectableCoverage);\r\n }\r\n });\r\n\r\n this.coverages = selectableCoverages;\r\n\r\n this.coveragesLoadedFlag = true;\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n\r\n sellersCoverageFlagsToDisplay(): boolean[] {\r\n const flags = [];\r\n\r\n this.sellerCoverageFlags.forEach((indexFlag: boolean) => {\r\n if (this.shouldDisplayCoverageSection(indexFlag)) {\r\n flags.push(indexFlag);\r\n }\r\n });\r\n\r\n return flags;\r\n }\r\n\r\n\r\n\r\n\r\n // retrieves the coverage by ID\r\n coverageByID(coverageID: number): SelectableProductCoverage {\r\n const coverage = ArrayUtility.arrayFind(this.coverages, (testCoverage: SelectableProductCoverage): boolean => {\r\n return (testCoverage.productCoverage.coverageID === coverageID);\r\n });\r\n\r\n return coverage;\r\n }\r\n\r\n\r\n\r\n // is the product selected\r\n productSelected(): boolean {\r\n return (this.product !== null);\r\n }\r\n\r\n\r\n // should display coverage section\r\n shouldDisplayCoverageSection(sellerCoverageFlag: boolean): boolean {\r\n return (this.coveragesWithSellersFlag(sellerCoverageFlag).length !== 0);\r\n }\r\n\r\n\r\n // should the no sellers coverage message be displayed?\r\n noSellersCoverageMessage(): string {\r\n let displayFlag = true;\r\n\r\n // look for sellers coverage; do not display if found\r\n const hasSellersCoverage = !!ArrayUtility.arrayFind(this.coverages,\r\n (testCoverage: SelectableProductCoverage): boolean => {\r\n\r\n return testCoverage.productCoverage.coverageType.sellerCoverageFlag;\r\n });\r\n\r\n if (hasSellersCoverage) {\r\n displayFlag = false;\r\n }\r\n\r\n // does the product/office not want messages displayed?\r\n if (!!this.productOfficeToolbox && this.productOfficeToolbox.hideBuyerSellerCoverageTitleFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n // what is the sellers coverage message\r\n const propertyType = this.planOrderApplication.property.propertyType;\r\n const noSellersCoverageMessage = propertyType.noSellersCoverageMessage;\r\n\r\n if (!noSellersCoverageMessage) {\r\n displayFlag = false;\r\n }\r\n\r\n const message = (displayFlag ? noSellersCoverageMessage : null);\r\n\r\n return message;\r\n }\r\n\r\n\r\n optionReselectionMessage(): string {\r\n let displayFlag = false;\r\n\r\n // are there any selected coverages?\r\n let hasSelectedCoveragesFlag = false;\r\n\r\n if (this.planOrderApplication.productCoverages) {\r\n hasSelectedCoveragesFlag = !!this.planOrderApplication.productCoverages.length;\r\n }\r\n\r\n // were there previous display codes?\r\n let hasPreviousDisplayCodesFlag = false;\r\n\r\n if (this.planOrderApplication.selectedDisplayCodes) {\r\n const selectedDisplayCodes = this.planOrderApplication.selectedDisplayCodes;\r\n\r\n hasPreviousDisplayCodesFlag = (selectedDisplayCodes ? !!selectedDisplayCodes.length : false);\r\n }\r\n\r\n\r\n // if there are no selected coverages, but there are display codes\r\n if (!hasSelectedCoveragesFlag && hasPreviousDisplayCodesFlag) {\r\n displayFlag = true;\r\n }\r\n\r\n\r\n // pull the message if neede\r\n let message: string = null;\r\n\r\n if (displayFlag) {\r\n message = this.optionalCoverageReselectionMessage.message;\r\n }\r\n\r\n return message;\r\n }\r\n\r\n\r\n\r\n\r\n // coverages by sellers flag\r\n coveragesWithSellersFlag(sellerCoverageFlag: boolean): SelectableProductCoverage[] {\r\n const coverages = [];\r\n\r\n this.coverages.forEach((indexSelectableCoverage: SelectableProductCoverage) => {\r\n const indexCoverage = indexSelectableCoverage.productCoverage;\r\n const indexCoverageType = indexCoverage.coverageType;\r\n\r\n let includeCoverageFlag = true;\r\n\r\n // if the sellers coverage category doesn't match\r\n if (indexCoverageType.sellerCoverageFlag !== sellerCoverageFlag) {\r\n includeCoverageFlag = false;\r\n }\r\n\r\n // if the coverage is standard\r\n if (!indexCoverageType.optionalCoverageFlag) {\r\n includeCoverageFlag = false;\r\n }\r\n\r\n if (includeCoverageFlag) {\r\n coverages.push(indexSelectableCoverage);\r\n }\r\n });\r\n\r\n return coverages;\r\n }\r\n\r\n\r\n // section title for sellers coverage flag\r\n sectionTitleText(sellerCoverageFlag: boolean): string {\r\n let text: string = null;\r\n\r\n // if we're allowing any title text\r\n let textFlag = true;\r\n\r\n if (!!this.productOfficeToolbox && this.productOfficeToolbox.hideBuyerSellerCoverageTitleFlag) {\r\n textFlag = false;\r\n }\r\n\r\n if (textFlag) {\r\n if (sellerCoverageFlag) {\r\n text = this.sellerCoverageHeaderMessage.message;\r\n\r\n } else {\r\n text = this.buyerCoverageHeaderMessage.message;\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n // is the coverage selected?\r\n isCoverageSelected(selectableCoverage: SelectableProductCoverage): boolean {\r\n return selectableCoverage.selectedFlag;\r\n }\r\n\r\n\r\n // should the coverage be displayed?\r\n shouldCoverageBeDisplayed(selectableCoverage: SelectableProductCoverage): boolean {\r\n const coverage = selectableCoverage.productCoverage;\r\n\r\n return coverage.coverageType.optionalCoverageFlag;\r\n }\r\n\r\n\r\n // is the coverage daily?\r\n isCoverageDaily(selectableCoverage: SelectableProductCoverage): boolean {\r\n const coverage = selectableCoverage.productCoverage;\r\n\r\n return (coverage.premiumPer && coverage.premiumPer.toUpperCase() === 'D');\r\n }\r\n\r\n\r\n // is the coverage clickable?\r\n isCoverageClickable(selectableCoverage: SelectableProductCoverage): boolean {\r\n const coverage = selectableCoverage.productCoverage;\r\n\r\n return (coverage.premium !== 0);\r\n }\r\n\r\n\r\n // is the coverage included?\r\n isCoverageIncluded(selectableCoverage: SelectableProductCoverage): boolean {\r\n const coverage = selectableCoverage.productCoverage;\r\n\r\n return coverage.includedCoverageFlag;\r\n }\r\n\r\n\r\n // does the coverage have prerequisites?\r\n doesCoverageHavePrerequisites(selectableCoverage: SelectableProductCoverage): boolean {\r\n const coverage = selectableCoverage.productCoverage;\r\n\r\n return (coverage.coveragePrerequisites.length > 0);\r\n }\r\n\r\n\r\n // should display coverage detail?\r\n shouldDisplayCoverageDetail(selectableCoverage: SelectableProductCoverage): boolean {\r\n const coverage = selectableCoverage.productCoverage;\r\n\r\n return (coverage.coverageDetail !== '');\r\n }\r\n\r\n\r\n // returns the coverages that have the specified coverage as a prerequisite\r\n coveragesWithPrerequisite(selectableCoverage: SelectableProductCoverage): SelectableProductCoverage[] {\r\n const selectableCoverages: SelectableProductCoverage[] = [];\r\n\r\n // loop over all displayed coverages\r\n this.coverages.forEach((indexSelectableCoverage: SelectableProductCoverage) => {\r\n const indexCoverage = indexSelectableCoverage.productCoverage;\r\n\r\n // loop over all of the prerequisites for the specified coverage\r\n indexCoverage.coveragePrerequisites.forEach((indexPrerequisiteCoverageID: number) => {\r\n\r\n // if the displayed coverage matches the specified coverage\r\n if (indexPrerequisiteCoverageID === selectableCoverage.productCoverage.coverageID) {\r\n selectableCoverages.push(indexSelectableCoverage);\r\n }\r\n });\r\n });\r\n\r\n return selectableCoverages;\r\n }\r\n\r\n\r\n\r\n // returns the prerequisite coverages for the specified coverage\r\n prerequisitesForCoverage(selectableCoverage: SelectableProductCoverage): SelectableProductCoverage[] {\r\n const prerequisites: SelectableProductCoverage[] = [];\r\n\r\n // loop over all displayed coverages\r\n this.coverages.forEach((indexSelectableCoverage: SelectableProductCoverage) => {\r\n const indexCoverage = indexSelectableCoverage.productCoverage;\r\n\r\n // loop over all of the prerequisites for the specified coverage\r\n selectableCoverage.productCoverage.coveragePrerequisites\r\n .forEach((indexPrerequisiteCoverageID: number) => {\r\n\r\n // if the displayed coverage matches the specified coverage\r\n if (indexCoverage.coverageID === indexPrerequisiteCoverageID) {\r\n prerequisites.push(indexSelectableCoverage);\r\n }\r\n });\r\n });\r\n\r\n return prerequisites;\r\n }\r\n\r\n\r\n\r\n allowPlanQuote(): boolean {\r\n let flag = true;\r\n\r\n if (!!this.productOfficeToolbox && !this.productOfficeToolbox.allowPlanQuoteFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n addCoverage(coverage: SelectableProductCoverage) {\r\n coverage.selectedFlag = true;\r\n\r\n // if we need to create a new PlanOption\r\n if (!coverage.planOption) {\r\n const planOption = this.planDomainFactoryService.newPlanOption();\r\n\r\n planOption.coverageID = coverage.coverageID;\r\n planOption.optionUnits = 1;\r\n planOption.optionAmount = coverage.premium;\r\n\r\n coverage.planOption = planOption;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n removeCoverage(coverage: SelectableProductCoverage) {\r\n coverage.selectedFlag = false;\r\n\r\n coverage.planOption = null;\r\n }\r\n\r\n\r\n\r\n\r\n shouldEnableOptionUnitSelector(coverage: SelectableProductCoverage): boolean {\r\n let enable = true;\r\n\r\n if (!this.isCoverageSelected(coverage)) {\r\n enable = false;\r\n }\r\n\r\n return enable;\r\n }\r\n\r\n // the user clicked YES it's too big\r\n didClickGuestHomeOptionYes() {\r\n // hide the guest home option modal\r\n this.showGuestHomeOptionModal = false;\r\n\r\n // store that it's too big so they can't continue\r\n this.guestHomeExceedsSizeFlag = true;\r\n\r\n // show the warning modal\r\n this.showGuestHomeWarningModal = true;\r\n }\r\n\r\n didClickGuestHomeOptionNo() {\r\n // hide the guest home option modal\r\n this.showGuestHomeOptionModal = false;\r\n\r\n // store that it's not too big so they can continue\r\n this.guestHomeExceedsSizeFlag = false;\r\n\r\n // run the Next button function again, it'll work since we've set this.guestHomeExceedsSizeFlag to false\r\n this.didClickNextButton();\r\n }\r\n\r\n // the user clicked the warning modal button to dismiss\r\n didClickGuestHomeWarningOKButton() {\r\n // hide the guest home option modal\r\n this.showGuestHomeWarningModal = false;\r\n }\r\n\r\n\r\n // the user clicked a coverage\r\n didClickCoverage(selectableCoverage: SelectableProductCoverage): void {\r\n this.coverageWithPrerequisitesAttempted = null;\r\n\r\n\r\n // only make changes if the coverage is clickable\r\n if (this.isCoverageClickable(selectableCoverage)) {\r\n\r\n // if the coverage is selected, deselect it\r\n if (this.isCoverageSelected(selectableCoverage)) {\r\n\r\n this.removeCoverage(selectableCoverage);\r\n\r\n // loop over the child coverages and deselect them\r\n const childCoverages = this.coveragesWithPrerequisite(selectableCoverage);\r\n\r\n childCoverages.forEach((indexChildCoverage: SelectableProductCoverage) => {\r\n this.removeCoverage(indexChildCoverage);\r\n });\r\n\r\n // if the coverage is not selected, select it\r\n } else {\r\n\r\n // pull prerequisites for the coverage\r\n const prerequisites = this.prerequisitesForCoverage(selectableCoverage);\r\n\r\n // if there's 0 or 1 prerequisite, auto-select it\r\n if (prerequisites.length <= 1) {\r\n this.addCoverage(selectableCoverage);\r\n\r\n prerequisites.forEach((indexPrerequisiteCoverage: SelectableProductCoverage) => {\r\n this.addCoverage(indexPrerequisiteCoverage);\r\n });\r\n\r\n // for multiple prerequisites\r\n } else {\r\n // are any selected?\r\n let prerequisiteSelected = false;\r\n\r\n prerequisites.forEach((indexPrerequisiteCoverage: SelectableProductCoverage) => {\r\n if (indexPrerequisiteCoverage.selectedFlag) {\r\n prerequisiteSelected = true;\r\n }\r\n });\r\n\r\n // if at least one prerequisite was selected, allow the selection\r\n if (prerequisiteSelected) {\r\n this.addCoverage(selectableCoverage);\r\n\r\n // if no prerequisites, flash an alert for this coverage\r\n } else {\r\n // delay this call so that the browser refreshes appropriately\r\n setTimeout(() => {\r\n this.coverageWithPrerequisitesAttempted = selectableCoverage;\r\n\r\n setTimeout(() => {\r\n this.coverageWithPrerequisitesAttempted = null;\r\n }, 6000);\r\n }, 100);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n shouldDisplayCoveragePrerequisiteAlert(selectableCoverage: SelectableProductCoverage): boolean {\r\n const coverages = this.coveragesWithPrerequisite(selectableCoverage);\r\n\r\n let displayFlag = false;\r\n\r\n if (this.coverageWithPrerequisitesAttempted) {\r\n coverages.forEach((indexSelectableCoverage: SelectableProductCoverage) => {\r\n if (indexSelectableCoverage.coverageID === this.coverageWithPrerequisitesAttempted.productCoverage.coverageID) {\r\n displayFlag = true;\r\n }\r\n });\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n // should the coverage total row be displayed\r\n shouldDisplayCoverageTotalRow(sellerCoverageFlag: boolean): boolean {\r\n const displayFlag = !sellerCoverageFlag;\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // returns the coverage total\r\n coverageTotalAmount(): number {\r\n let totalAmount = this.product.premium;\r\n\r\n this.coverages.forEach((indexSelectableCoverage: SelectableProductCoverage) => {\r\n const indexCoverage = indexSelectableCoverage.productCoverage;\r\n const indexOption = indexSelectableCoverage.planOption;\r\n\r\n // if the coverage is selected, and it's not daily\r\n let includeAmountFlag = true;\r\n includeAmountFlag = includeAmountFlag && this.isCoverageSelected(indexSelectableCoverage);\r\n includeAmountFlag = includeAmountFlag && !indexCoverage.dailyFlag;\r\n includeAmountFlag = includeAmountFlag && !!indexOption;\r\n\r\n if (includeAmountFlag) {\r\n const optionUnits = indexOption.optionUnits || 1;\r\n\r\n totalAmount += (indexCoverage.premium * optionUnits);\r\n }\r\n });\r\n\r\n return totalAmount;\r\n }\r\n\r\n\r\n // coverage total amount text\r\n formattedCoverageTotalAmount(): string {\r\n const totalAmount = this.coverageTotalAmount();\r\n\r\n const totalAmountText = StringUtility.formatDollarNoDecimal(totalAmount);\r\n return totalAmountText;\r\n }\r\n\r\n\r\n // user clicked to select a different product\r\n didClickDifferentProduct(): void {\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, 'optional-coverage');\r\n\r\n const urlSegment = new UrlSegment('product', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n\r\n\r\n // should the option unit selector be displayed\r\n shouldDisplayOptionUnitSelector(selectableCoverage: SelectableProductCoverage): boolean {\r\n const coverage = selectableCoverage.productCoverage;\r\n\r\n let flag = true;\r\n\r\n // if the option units aren't editable\r\n if (!coverage.optionUnitsEditableFlag) {\r\n flag = false;\r\n }\r\n\r\n // if the coverage is included\r\n if (coverage.includedCoverageFlag) {\r\n flag = false;\r\n }\r\n\r\n // test by property type\r\n const propertyType = this.planOrderApplication.property.propertyType;\r\n\r\n if (!propertyType.multipleOptionUnitFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n // should the print error display\r\n shouldDisplayQuotePrintError(): boolean {\r\n return (this.quoteStatus === QuoteStatus.printError);\r\n }\r\n\r\n\r\n\r\n\r\n // user clicked the Print Quote button\r\n didClickPrintQuoteButton(): void {\r\n this.generatePrintQuote();\r\n }\r\n\r\n\r\n // user clicked the Email Quote button\r\n didClickEmailQuoteButton(): void {\r\n this.emailQuoteRequest = this.generateQuoteRequest();\r\n\r\n this.quoteStatus = QuoteStatus.emailPrompt;\r\n }\r\n\r\n\r\n // should the plan quote email box be shown\r\n shouldDisplayEmailQuoteBox(): boolean {\r\n return (this.quoteStatus === QuoteStatus.emailPrompt);\r\n }\r\n\r\n\r\n\r\n emailQuoteCompleteHandler(resultFlag: boolean) {\r\n this.quoteStatus = QuoteStatus.none;\r\n }\r\n\r\n\r\n\r\n\r\n optionUnitsByCoverageID(): any {\r\n let map = {};\r\n\r\n if (this.coverages) {\r\n map = ArrayUtility.arrayToMap(this.coverages, (item: SelectableProductCoverage): number => {\r\n return item.coverageID;\r\n });\r\n }\r\n\r\n return map;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // generates the quote to the specified recipient\r\n generateQuoteRequest(): PlanQuoteRequest {\r\n\r\n // creates the request\r\n const request = this.planQuoteService.newPlanQuoteRequest();\r\n\r\n // populate simple values\r\n request.product = this.planOrderApplication.product;\r\n request.propertyType = this.planOrderApplication.property.propertyType;\r\n\r\n // add coverages\r\n const selectedCoverages = [];\r\n\r\n this.coverages.forEach((indexSelectableCoverage: SelectableProductCoverage) => {\r\n const indexCoverage = indexSelectableCoverage.productCoverage;\r\n\r\n let includeCoverageFlag = false;\r\n\r\n if (this.isCoverageSelected(indexSelectableCoverage)) {\r\n includeCoverageFlag = true;\r\n }\r\n\r\n if (indexCoverage.includedCoverageFlag) {\r\n includeCoverageFlag = false;\r\n }\r\n\r\n if (includeCoverageFlag) {\r\n selectedCoverages.push(indexCoverage);\r\n }\r\n });\r\n\r\n request.productCoverages = selectedCoverages;\r\n\r\n // include option units by CoverageID\r\n request.optionUnitsByCoverageID = this.optionUnitsByCoverageID();\r\n\r\n\r\n return request;\r\n }\r\n\r\n\r\n\r\n // generate a print quote\r\n generatePrintQuote() {\r\n // send Google Analytics tracking\r\n this.systemService.sendGoogleAnalyticsTracking('/plan-quote/print');\r\n\r\n // generate a plan quote request\r\n const request = this.generateQuoteRequest();\r\n\r\n // open a separate window\r\n const quoteWindow = window.open();\r\n\r\n // perform the quote fetch\r\n this.planQuoteService.fetchPlanQuote(request).subscribe((result: PlanQuoteResult) => {\r\n\r\n // if the result was successful, populate the window\r\n if (result && (result.quoteHtml !== '')) {\r\n quoteWindow.document.write(result.quoteHtml);\r\n\r\n quoteWindow.document.close();\r\n\r\n } else {\r\n quoteWindow.close();\r\n }\r\n });\r\n }\r\n\r\n\r\n messagesForSelectedCoverages(): string[] {\r\n const messages: string[] = [];\r\n\r\n const property = this.planOrderApplication.property;\r\n const propertyTypeCode = property.propertyType.propertyType;\r\n\r\n if (this.optionalCoverageSystemMessages) {\r\n // loop over system messages\r\n this.optionalCoverageSystemMessages.forEach((indexSystemMessage: SystemMessage) => {\r\n // loop over all coverages\r\n this.coverages.forEach((indexSelectableCoverage: SelectableProductCoverage) => {\r\n // if the coverage is selected\r\n if (this.isCoverageSelected(indexSelectableCoverage)) {\r\n let criteriaFlag = true;\r\n\r\n // test for state criteria\r\n if (indexSystemMessage.hasStateCodeCriteria()) {\r\n if (!indexSystemMessage.hasStateCodeCriteria(property.stateCode)) {\r\n criteriaFlag = false;\r\n }\r\n }\r\n\r\n // test for property type criteria\r\n if (indexSystemMessage.hasPropertyTypeCriteria()) {\r\n if (!indexSystemMessage.hasPropertyTypeCriteria(propertyTypeCode)) {\r\n criteriaFlag = false;\r\n }\r\n }\r\n\r\n // test for display code criteria\r\n if (indexSystemMessage.hasDisplayCodeCriteria()) {\r\n const displayCode = indexSelectableCoverage.productCoverage.displayCode;\r\n\r\n if (!indexSystemMessage.hasDisplayCodeCriteria(displayCode)) {\r\n criteriaFlag = false;\r\n }\r\n }\r\n\r\n if (criteriaFlag) {\r\n messages.push(indexSystemMessage.message);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n return messages;\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayNextButton(): boolean {\r\n let displayFlag = true;\r\n\r\n const role = this.planOrderApplication.role;\r\n\r\n if (role && role.onlyQuoteFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n if (!this.coveragesLoadedFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n // user clicked the Next button\r\n didClickNextButton(): void {\r\n this.quoteStatus = QuoteStatus.none;\r\n\r\n const selectedPlanOptions = [];\r\n const selectedCoverages = [];\r\n\r\n // is one of the guest home options selected? we're looking for guest home display codes\r\n let guestHomeSelectedFlag = false;\r\n const guestHomeDisplayCodes = ['$', '$$', '$$$'];\r\n\r\n\r\n this.coverages.forEach((indexSelectableCoverage: SelectableProductCoverage) => {\r\n const indexOption = indexSelectableCoverage.planOption;\r\n const indexCoverage = indexSelectableCoverage.productCoverage;\r\n\r\n let persistFlag = true;\r\n\r\n if (!indexSelectableCoverage.selectedFlag) {\r\n persistFlag = false;\r\n }\r\n\r\n if (!indexCoverage.coverageType.optionalCoverageFlag) {\r\n persistFlag = false;\r\n }\r\n\r\n if (persistFlag) {\r\n selectedCoverages.push(indexCoverage);\r\n selectedPlanOptions.push(indexOption);\r\n\r\n // if this is a guest home display code, set the flag to true\r\n if (guestHomeDisplayCodes.indexOf(indexCoverage.displayCode) > -1 ) {\r\n guestHomeSelectedFlag = true;\r\n }\r\n }\r\n });\r\n\r\n // if the guest home exceeds the size, show the warning modal and stop\r\n if (guestHomeSelectedFlag && this.guestHomeExceedsSizeFlag) {\r\n this.showGuestHomeWarningModal = true;\r\n return;\r\n }\r\n\r\n // if the guest home is selected and the guest home exceeds question isn't answered, show the option modal\r\n if (guestHomeSelectedFlag && (this.guestHomeExceedsSizeFlag === null)) {\r\n this.showGuestHomeOptionModal = true;\r\n return;\r\n }\r\n\r\n this.planOrderApplication.planOptions = selectedPlanOptions;\r\n this.planOrderApplication.productCoverages = selectedCoverages;\r\n\r\n\r\n // next step logic\r\n this.persistPlanOrderApplication();\r\n\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n const url = '../' + nextRoute;\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n\r\n displayOptionalCvgDuration(selectableCoverage: SelectableProductCoverage): boolean {\r\n let displayDuration = false;\r\n\r\n if (!!selectableCoverage && this.isCoverageDaily(selectableCoverage)) {\r\n\r\n this.optionalCvgDuration = DurationEnum.D;\r\n displayDuration = true;\r\n\r\n } else if (!selectableCoverage && !!this.productOfficeToolbox && !this.productOfficeToolbox.allowPremiumPayLaterFlag &&\r\n !!DurationEnum[this.productOfficeToolbox.priceDisplayDurationCode]) {\r\n\r\n this.planCvgDuration = DurationEnum[this.productOfficeToolbox.priceDisplayDurationCode].toString();\r\n displayDuration = true;\r\n\r\n }\r\n\r\n return displayDuration;\r\n }\r\n\r\n\r\n protected readonly Number = Number;\r\n}\r\n\r\n\r\n\r\n\r\nclass SelectableProductCoverage {\r\n\r\n // selected?\r\n private _selectedFlag = false;\r\n\r\n get selectedFlag(): boolean {\r\n return this._selectedFlag;\r\n }\r\n\r\n set selectedFlag(selectedFlag: boolean) {\r\n if (selectedFlag) {\r\n\r\n } else {\r\n\r\n }\r\n\r\n this._selectedFlag = selectedFlag;\r\n }\r\n\r\n\r\n // misc vars\r\n productDomainFactoryService: ProductDomainFactoryService = null;\r\n planDomainFactoryService: PlanDomainFactoryService = null;\r\n productCoverage: ProductCoverage = null;\r\n planOption: PlanOption = null;\r\n\r\n\r\n get coverageID(): number {\r\n return this.productCoverage.coverageID;\r\n }\r\n\r\n get premium(): number {\r\n return this.productCoverage.premium;\r\n }\r\n\r\n get coverageDescription(): string {\r\n return this.productCoverage.coverageDescription;\r\n }\r\n\r\n get coverageDetail(): string {\r\n return this.productCoverage.coverageDetail;\r\n }\r\n\r\n get optionUnits(): number {\r\n return this.planOption.optionUnits;\r\n }\r\n\r\n set optionUnits(optionUnits: number) {\r\n this.planOption.optionUnits = optionUnits;\r\n }\r\n\r\n\r\n constructor(productDomainFactoryService: ProductDomainFactoryService,\r\n planDomainFactoryService: PlanDomainFactoryService,\r\n productCoverage: ProductCoverage,\r\n planOption: PlanOption) {\r\n this.productDomainFactoryService = productDomainFactoryService;\r\n this.planDomainFactoryService = planDomainFactoryService;\r\n this.productCoverage = productCoverage;\r\n this.planOption = planOption;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\n\r\nenum QuoteStatus {\r\n none = 10,\r\n emailPrompt = 20,\r\n emailSuccess = 30,\r\n printInProgress = 40,\r\n printSuccess = 50,\r\n printError = 60\r\n}\r\n\r\n\r\n\r\nenum QuoteRecipient {\r\n email = 10,\r\n print = 20\r\n}\r\n\r\n","\r\n\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderOptionalCoverageResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plans\r\n if (!application.planID) {\r\n // verify that a product has been\r\n if (!application.product) {\r\n redirectTo = 'product';\r\n }\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'optional-coverage');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n resolve(!redirectTo);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Validating Credit Card\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Validating credit card, please wait...\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
Payment
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n Loading payment plans, please wait...\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n How would you like to pay?\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Pay Now\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Pay Later - Send {{invoiceDescription()}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{coverageDelayText()}}\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n {{errorText()}}\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n The following credit card payment plan is available:\\r\\n
\\r\\n\\r\\n
\\r\\n Select a payment plan:\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n {{paymentPlanDisplayText(indexPaymentPlan)}}\\r\\n\\r\\n \\r\\n + ${{installmentFeeForPaymentPlan(indexPaymentPlan) | dollarFormatOptionalDecimal}}\\r\\n Convenience Billing\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{paymentPlanErrorText()}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Enter the email address(es) where you would like the {{invoiceDescription() | lowercase}} sent:\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n {{editingEmailErrorText(indexEmail)}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n The following credit card payment plan is available:\\r\\n
\\r\\n\\r\\n
\\r\\n Select a credit card payment plan:\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n {{paymentPlanDisplayText(indexPaymentPlan)}}\\r\\n\\r\\n \\r\\n + ${{installmentFeeForPaymentPlan(indexPaymentPlan) | dollarFormatOptionalDecimal}}\\r\\n Convenience Billing\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{paymentPlanErrorText()}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n When you complete your application, your credit card will be charged\\r\\n ${{firstPaymentAmount | dollarFormatWithDecimal}}. Payment will show as Old Republic Home Protect.\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n Enter your credit card info:\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n {{cardholderNameErrorText()}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n {{creditCardNumberErrorDisplayText()}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{creditCardExpirationDateErrorText()}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Plan:\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n {{product.productDescription}}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n ${{determineAmount(product.premium) | dollarFormatWithDecimal}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Optional Coverage:\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n {{indexCoverage.coverageDescription}}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Included\\r\\n
\\r\\n\\r\\n
\\r\\n ${{determineAmount(indexCoverage.premium) | dollarFormatWithDecimal}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{displayTotalText()}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n ${{determineAmount(totalAmount) | dollarFormatWithDecimal}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Automatic Renewal Option
\\r\\n We also offer the convenience of automatic renewal.\\r\\n When you select automatic renewal, your coverage will automatically renew providing you seamless home warranty protection.\\r\\n

\\r\\n  Yes! Sign me up for Automatic Renewal.
\\r\\n Your renewal Plan fee will be charged on the Plan expiration date, according to the payment plan you indicated above.\\r\\n The Automatic Renewal feature will take effect on each subsequent anniversary of Plan expiration, seamlessly extending\\r\\n coverage for an additional one-year period, subject to non-renewal provisions outlined in the Plan.\\r\\n

\\r\\n If you change your mind and decide to cancel your coverage or remove the automatic renewal provision, email us at\\r\\n .\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Credit Card Payment Plans:\\r\\n Convenience billing applies per payment transaction.\\r\\n First payment is charged upon receipt of application.\\r\\n All remaining payments are automatically charged monthly to the credit card on file.\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Click Next to attempt your credit card charge immediately.\\r\\n
\\r\\n\\r\\n
\\r\\n Click Next to view order summary. Your credit card will not be charged until you review your order.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\"","module.exports = \"div.payment-selector div.list-row-noborder{margin-top:0;margin-bottom:0}div.list-row.list-row-noborder-top{border-top:0}div.list-row-coverages:last-child{border-bottom:0}button.btn-email-link{padding:0;margin:0}span.no-spaces{padding:0;margin:0}.form-checkmark-deselected::before,.form-checkmark-selected::before{font-family:\\\"FontAwesome\\\";color:#000000;position:relative;margin-right:3px;font-size:larger}\\n\"","import {Component, OnInit} from '@angular/core';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {PlanOrderService} from '../_services';\r\nimport {ActivityResult, ActivityResultError, ArrayUtility, PremiumDurations, StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {\r\n Product,\r\n ProductCoverage,\r\n ProductLookupService,\r\n ProductOffice,\r\n ProductOfficeToolbox,\r\n ProductPaymentPlan\r\n} from '@orhp/phx-product-ui-module';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {Observable} from 'rxjs/Rx';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {\r\n AccountingDomainFactoryService,\r\n AccountingLookupValueService,\r\n CreditCard,\r\n CreditCardSaveResult,\r\n CreditCardService,\r\n CustomerInvoiceRecipient,\r\n PaymentPlan\r\n} from '@orhp/phx-accounting-ui-module';\r\nimport {PlanOrderApplicationUpdates} from '../_models';\r\nimport {PaymentPlanPayment} from '@orhp/phx-accounting-ui-module/_models/payment-plan-payment';\r\nimport {PlanOrderPaymentEditingEmail} from './plan-order-payment-editing-email';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\nimport {CorrespondenceLookupValuesService, InvoiceCommunicationType} from '@orhp/phx-correspondence-ui-module';\r\nimport {DurationEnum} from '../_src/price-duration-enum';\r\n\r\n@Component({\r\n selector: 'app-plan-order-payment',\r\n templateUrl: './payment.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './payment.component.scss'\r\n ]\r\n})\r\n\r\nexport class PlanOrderPaymentComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n creditCardPaymentPlans: PaymentPlan[] = null;\r\n checkPaymentPlans: PaymentPlan[] = null;\r\n\r\n defaultEmailCount = 2;\r\n\r\n invoiceEditingEmails: PlanOrderPaymentEditingEmail[] = null;\r\n\r\n selectedPaymentPlan: PaymentPlan = null;\r\n\r\n cardholderName = this.planOrderApplication.ccCardHolderName || '';\r\n initialCardholderName = this.planOrderApplication.ccCardHolderName || 'abcd12344321';\r\n\r\n creditCardNumber = this.planOrderApplication.ccNumber || '';\r\n initialCreditCardNumber = this.planOrderApplication.ccNumber || 'a';\r\n\r\n maxCreditCardYears = 7;\r\n\r\n expirationMonth = String(this.planOrderApplication.ccExpirationMonth || (new Date()).getMonth() + 1);\r\n initialExpirationMonth = String(this.planOrderApplication.ccExpirationMonth || '');\r\n\r\n expirationYear = String(this.planOrderApplication.ccExpirationYear || (new Date()).getFullYear());\r\n initialExpirationYear = String(this.planOrderApplication.ccExpirationYear || '');\r\n cancellationEmail = 'cancellation@orhp.com';\r\n\r\n\r\n private _payNowFlag: boolean = null;\r\n\r\n get payNowFlag(): boolean {\r\n if (this._payNowFlag === null) {\r\n this._payNowFlag = this.planOrderApplication.payNowFlag;\r\n }\r\n\r\n if (this._payNowFlag === null) {\r\n const paymentPlan = this.planOrderApplication.paymentPlan;\r\n\r\n if (!!paymentPlan) {\r\n this._payNowFlag = paymentPlan.creditCardFlag;\r\n }\r\n }\r\n\r\n if (this._payNowFlag === null) {\r\n this._payNowFlag = true;\r\n }\r\n\r\n return this._payNowFlag;\r\n }\r\n\r\n set payNowFlag(payNowFlag: boolean) {\r\n this._payNowFlag = payNowFlag;\r\n }\r\n\r\n\r\n\r\n\r\n private _expirationMonths: string[] = null;\r\n\r\n get expirationMonths(): string[] {\r\n if (!this._expirationMonths) {\r\n this._expirationMonths = [];\r\n\r\n for (let index = 1; index <= 12; index++) {\r\n this._expirationMonths.push(String(index));\r\n }\r\n }\r\n\r\n return this._expirationMonths;\r\n }\r\n\r\n\r\n private _expirationYears: string[] = null;\r\n\r\n get expirationYears(): string[] {\r\n if (!this._expirationYears) {\r\n const now = new Date();\r\n\r\n this._expirationYears = [];\r\n\r\n for (let index = -1; index <= this.maxCreditCardYears; index++) {\r\n this._expirationYears.push(String(now.getFullYear() + index));\r\n }\r\n }\r\n\r\n return this._expirationYears;\r\n }\r\n\r\n\r\n get product(): Product {\r\n return this.planOrderApplication.product;\r\n }\r\n\r\n\r\n private _productCoverages: ProductCoverage[] = null;\r\n\r\n get productCoverages(): ProductCoverage[] {\r\n if (!this._productCoverages) {\r\n const displayCodes = this.planOrderApplication.selectedDisplayCodes;\r\n const productCoverages = [];\r\n\r\n this.planOrderApplication.productCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n let coverageFlag = !!ArrayUtility.arrayFind(displayCodes, (testCode: string): boolean => {\r\n return (testCode.toLowerCase() === indexCoverage.displayCode.toLowerCase());\r\n });\r\n\r\n if (!indexCoverage.premium) {\r\n coverageFlag = true;\r\n }\r\n\r\n if (coverageFlag) {\r\n productCoverages.push(indexCoverage);\r\n }\r\n });\r\n\r\n this._productCoverages = productCoverages;\r\n }\r\n\r\n return this._productCoverages;\r\n }\r\n\r\n\r\n get totalAmount(): number {\r\n let amount = this.product.premium;\r\n\r\n this.productCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n amount += indexCoverage.premium;\r\n });\r\n\r\n return amount;\r\n }\r\n\r\n\r\n get firstPaymentAmount(): number {\r\n let paymentAmount: number = null;\r\n\r\n if (this.selectedPaymentPlan) {\r\n paymentAmount = this.totalAmount * this.getFirstPayment().paymentPlanPercent / 100.0;\r\n\r\n paymentAmount += this.installmentFeeForPaymentPlan(this.selectedPaymentPlan);\r\n\r\n paymentAmount = Math.round(paymentAmount * 100.0) / 100.0;\r\n }\r\n\r\n return paymentAmount;\r\n }\r\n\r\n\r\n get productOfficeGroup(): ProductOffice {\r\n return this.planOrderAuthService.productOffice;\r\n }\r\n\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n return this.planOrderAuthService.productOfficeToolbox;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n paymentPlansLoadingFlag = true;\r\n\r\n displayPaymentOptionsFlag = false;\r\n\r\n displayConvenienceFeeMessageFlag = false;\r\n\r\n validateFlag = false;\r\n\r\n saveInProcessFlag = false;\r\n saveResult: ActivityResult = null;\r\n\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private planOrderStepService: PlanOrderStepService,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private creditCardService: CreditCardService,\r\n private productLookupService: ProductLookupService,\r\n private accountingLookupValueService: AccountingLookupValueService,\r\n private accountingDomainFactoryService: AccountingDomainFactoryService,\r\n private correspondenceLookupValueService: CorrespondenceLookupValuesService,\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) {\r\n super(planOrderService);\r\n if (!!this.productOfficeToolbox && !this.productOfficeToolbox.allowPremiumPayLaterFlag) {\r\n this.payNowFlag = true;\r\n }\r\n }\r\n\r\n\r\n static invoiceDescriptionWithInfo(correspondenceLookupValueService: CorrespondenceLookupValuesService,\r\n productOfficeGroup: ProductOffice): string {\r\n let text = 'Invoice';\r\n\r\n // if a custom invoice communication type was specified\r\n if (!!productOfficeGroup && productOfficeGroup.invoiceCommunicationTypeID) {\r\n const invoiceCommTypeID = productOfficeGroup.invoiceCommunicationTypeID;\r\n\r\n const invoiceCommType: InvoiceCommunicationType = ArrayUtility.arrayFind(\r\n correspondenceLookupValueService.invoiceCommunicationTypes,\r\n (testType: InvoiceCommunicationType): boolean => {\r\n return (testType.invoiceCommunicationTypeID === invoiceCommTypeID);\r\n });\r\n\r\n const testText = (invoiceCommType ? invoiceCommType.description : null) || '';\r\n\r\n if (testText !== '') {\r\n text = invoiceCommType.description;\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n static coverageDelayTextWithProduct(product: Product, productOffice: ProductOffice): string {\r\n let text: string = null;\r\n\r\n const coverageDelayDays = product.effectiveDateDelay || 0;\r\n\r\n // show text if there's a delay\r\n let textFlag = !!coverageDelayDays;\r\n\r\n // don't display for new construction\r\n if (product.marketSegment.newConstructionFlag) {\r\n textFlag = false;\r\n }\r\n\r\n // don't display if the config says not to\r\n if (!!productOffice && !!productOffice.toolbox) {\r\n if (!productOffice.toolbox.displayCoverageDelayTextFlag) {\r\n textFlag = false;\r\n }\r\n }\r\n\r\n if (textFlag) {\r\n text = 'Coverage becomes effective ' + String(coverageDelayDays) + ' days from receipt of payment.';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'payment');\r\n\r\n this.fetchProductPaymentPlans();\r\n\r\n this.populateInvoiceEditingEmails();\r\n }\r\n\r\n\r\n populateInvoiceEditingEmails() {\r\n this.invoiceEditingEmails = [];\r\n\r\n const existingRecipients = (this.planOrderApplication.premiumInvoiceRecipients || []);\r\n\r\n existingRecipients.forEach((indexRecipient: CustomerInvoiceRecipient) => {\r\n this.invoiceEditingEmails.push(new PlanOrderPaymentEditingEmail(indexRecipient));\r\n });\r\n\r\n if (!this.invoiceEditingEmails.length) {\r\n for (let emailIndex = 0; emailIndex < this.defaultEmailCount; emailIndex++) {\r\n this.invoiceEditingEmails.push(new PlanOrderPaymentEditingEmail());\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n fetchProductPaymentPlans() {\r\n const productID = this.planOrderApplication.product.productID;\r\n\r\n this.productLookupService.fetchPaymentPlans(productID)\r\n .subscribe((productPaymentPlans: ProductPaymentPlan[]) => {\r\n const creditCardPaymentPlans = [];\r\n const checkPaymentPlans = [];\r\n\r\n const allPaymentPlans = this.accountingLookupValueService.paymentPlans;\r\n\r\n allPaymentPlans.forEach((indexPaymentPlan: PaymentPlan) => {\r\n let useFlag = false;\r\n\r\n // loop over product payment plans\r\n productPaymentPlans.forEach((indexProductPaymentPlan: ProductPaymentPlan) => {\r\n // if the payment plan is valid for the product\r\n if (indexPaymentPlan.paymentPlan.toLowerCase() === indexProductPaymentPlan.paymentPlan.toLowerCase()) {\r\n useFlag = true;\r\n }\r\n });\r\n\r\n // if we're using the payment plan\r\n if (useFlag) {\r\n // is it a credit card payment plan?\r\n if (indexPaymentPlan.creditCardFlag) {\r\n creditCardPaymentPlans.push(indexPaymentPlan);\r\n\r\n // is it a check payment plan?\r\n } else {\r\n checkPaymentPlans.push(indexPaymentPlan);\r\n }\r\n }\r\n });\r\n\r\n this.creditCardPaymentPlans = creditCardPaymentPlans;\r\n this.checkPaymentPlans = checkPaymentPlans;\r\n this.selectedPaymentPlan = this.planOrderApplication.paymentPlan;\r\n\r\n if (!this.selectedPaymentPlan) {\r\n if (this.payNowFlag && !!this.creditCardPaymentPlans.length) {\r\n this.selectedPaymentPlan = this.creditCardPaymentPlans[0];\r\n }\r\n\r\n if (!this.payNowFlag && !!this.checkPaymentPlans.length) {\r\n this.selectedPaymentPlan = this.checkPaymentPlans[0];\r\n }\r\n }\r\n\r\n\r\n // if we're not allowing Pay Now or Pay Later, do not display payment options\r\n const optionTotal =\r\n (this.shouldDisplayPayNow() ? 1 : 0) +\r\n (this.shouldDisplaySendBill() ? 1 : 0);\r\n\r\n if (optionTotal === 2) {\r\n this.displayPaymentOptionsFlag = true;\r\n }\r\n\r\n this.paymentPlansLoadingFlag = false;\r\n });\r\n }\r\n\r\n\r\n multiplePaymentPlansAvailable(): boolean {\r\n const paymentPlans = (this.payNowFlag ? this.creditCardPaymentPlans : this.checkPaymentPlans);\r\n\r\n return ((paymentPlans || []).length > 1);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n coverageDelayText(): string {\r\n const product = this.planOrderApplication.product;\r\n const text = PlanOrderPaymentComponent.coverageDelayTextWithProduct(product, this.planOrderAuthService.productOffice);\r\n\r\n return text;\r\n }\r\n\r\n\r\n shouldDisplayCoverageDelayText(): boolean {\r\n return !!this.coverageDelayText();\r\n }\r\n\r\n\r\n /**\r\n * When should the Pay Now button display\r\n */\r\n shouldDisplayPayNow(): boolean {\r\n return true;\r\n }\r\n\r\n\r\n /**\r\n * When should \"Send Bill\" be displayed\r\n */\r\n shouldDisplaySendBill(): boolean {\r\n\r\n return !!this.productOfficeToolbox && !!this.productOfficeToolbox.allowPremiumPayLaterFlag;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n isPayNow(): boolean {\r\n return (this.payNowFlag === true);\r\n }\r\n\r\n\r\n isPayLater(): boolean {\r\n return (this.payNowFlag === false);\r\n }\r\n\r\n\r\n\r\n didClickPayNow() {\r\n if (!this.payNowFlag) {\r\n this.validateFlag = false;\r\n\r\n this.payNowFlag = true;\r\n\r\n this.selectedPaymentPlan = this.creditCardPaymentPlans[0];\r\n }\r\n }\r\n\r\n\r\n didClickPayLater() {\r\n if (this.payNowFlag) {\r\n this.validateFlag = false;\r\n\r\n this.payNowFlag = false;\r\n\r\n this.selectedPaymentPlan = this.checkPaymentPlans[0];\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n invoiceDescription(): string {\r\n return PlanOrderPaymentComponent.invoiceDescriptionWithInfo(\r\n this.correspondenceLookupValueService,\r\n this.productOfficeGroup\r\n );\r\n }\r\n\r\n\r\n\r\n shouldDisplayAddEmailButton(emailIndex: number): boolean {\r\n return (emailIndex === (this.invoiceEditingEmails.length - 1));\r\n }\r\n\r\n\r\n didClickAddEmail() {\r\n this.invoiceEditingEmails.push(new PlanOrderPaymentEditingEmail());\r\n }\r\n\r\n\r\n\r\n resetValidation() {\r\n this.validateFlag = false;\r\n }\r\n\r\n\r\n\r\n isPaymentPlanSelected(paymentPlan: PaymentPlan): boolean {\r\n return paymentPlan.isEqual(this.selectedPaymentPlan);\r\n }\r\n\r\n\r\n didClickPaymentPlan(paymentPlan: PaymentPlan) {\r\n this.selectedPaymentPlan = paymentPlan;\r\n }\r\n\r\n\r\n\r\n installmentFeeForPaymentPlan(paymentPlan: PaymentPlan): number {\r\n let fee = 0;\r\n this.displayConvenienceFeeMessageFlag = false;\r\n\r\n if (!!this.productOfficeToolbox && !this.productOfficeToolbox.allowPremiumPayLaterFlag) {\r\n if (paymentPlan.assessInstallmentFee) {\r\n if (this.product.paymentInstallmentFee !== null) {\r\n fee = this.product.paymentInstallmentFee;\r\n } else {\r\n fee = this.getInstallmentFee(paymentPlan, fee);\r\n }\r\n }\r\n }else {\r\n fee = this.getInstallmentFee(paymentPlan, fee);\r\n }\r\n\r\n\r\n if (fee > 0) {\r\n this.displayConvenienceFeeMessageFlag = true;\r\n }\r\n return fee;\r\n }\r\n\r\n getInstallmentFee(paymentPlan, fee) {\r\n if (paymentPlan.installmentFeeAmount) {\r\n fee = paymentPlan.installmentFeeAmount;\r\n } else if (this.accountingLookupValueService.defaultInstallmentFee) {\r\n fee = this.accountingLookupValueService.defaultInstallmentFee;\r\n }\r\n return fee;\r\n }\r\n\r\n\r\n nameForMonth(monthIndexAsString: string): string {\r\n let name = '';\r\n\r\n const monthIndex = Number(monthIndexAsString);\r\n\r\n switch (monthIndex) {\r\n case 1: name = 'Jan'; break;\r\n case 2: name = 'Feb'; break;\r\n case 3: name = 'Mar'; break;\r\n case 4: name = 'Apr'; break;\r\n case 5: name = 'May'; break;\r\n case 6: name = 'Jun'; break;\r\n case 7: name = 'Jul'; break;\r\n case 8: name = 'Aug'; break;\r\n case 9: name = 'Sep'; break;\r\n case 10: name = 'Oct'; break;\r\n case 11: name = 'Nov'; break;\r\n case 12: name = 'Dec'; break;\r\n\r\n }\r\n\r\n return name;\r\n }\r\n\r\n\r\n\r\n\r\n maskCreditCardNumber(enteredNumber: string): string {\r\n return StringUtility.maskCreditCardNumber(enteredNumber, 4);\r\n }\r\n\r\n\r\n emailRequiredErrorText(): string {\r\n let text: string = null;\r\n\r\n if (!this.payNowFlag) {\r\n let emailCount = 0;\r\n\r\n this.invoiceEditingEmails.forEach((indexEmail: PlanOrderPaymentEditingEmail) => {\r\n const indexEmailAddress = indexEmail.emailAddress || '';\r\n\r\n if (indexEmailAddress !== '') {\r\n emailCount++;\r\n }\r\n });\r\n\r\n if (!emailCount) {\r\n text = 'At least one Email Address is required';\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n editingEmailErrorText(email: PlanOrderPaymentEditingEmail): string {\r\n let text: string = null;\r\n\r\n if (!this.payNowFlag) {\r\n const emailText = email.emailAddress || '';\r\n\r\n if (!this.payNowFlag && (emailText !== '') && !StringUtility.emailValidate(emailText)) {\r\n text = 'Email Address requires a valid email address';\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n paymentPlanDisplayText(paymentPlan: PaymentPlan): string {\r\n return StringUtility.nullIfEmptyString(paymentPlan.internetDescription) || paymentPlan.paymentPlan;\r\n }\r\n\r\n\r\n shouldDisplayImmediateChargeInstructions(): boolean {\r\n let flag = false;\r\n\r\n // if the plan has been created, it's an immediate charge\r\n if (!!this.planOrderApplication.planID) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n shouldDisplayReviewChargeInstructions(): boolean {\r\n return !this.shouldDisplayImmediateChargeInstructions();\r\n }\r\n\r\n\r\n nextButtonInstructionText(): string {\r\n let text: string = null;\r\n\r\n if (this.planOrderApplication.planID) {\r\n text = 'Click Next to attempt your credit card charge immediately.';\r\n\r\n } else {\r\n text = 'Click Next to view order summary. Your credit card will not be charged until you review your order.';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n paymentPlanErrorText(): string {\r\n let text: string = null;\r\n\r\n if (this.payNowFlag && !this.selectedPaymentPlan) {\r\n text = 'Payment Plan is required';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n cardholderNameErrorText(): string {\r\n let text: string = null;\r\n\r\n if (this.payNowFlag && ((this.cardholderName || '') === '')) {\r\n text = 'Cardholder Name is required';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n creditCardNumberErrorText(): string {\r\n let text: string = null;\r\n\r\n // if a new credit card number was entered\r\n if (this.payNowFlag && (this.creditCardNumber !== this.initialCreditCardNumber)) {\r\n // remove all characters from the credit card number\r\n const rawCreditCardNumber = StringUtility.stripNonNumeric(this.creditCardNumber) || '';\r\n\r\n if (rawCreditCardNumber.length < 4) {\r\n text = 'Credit Card # requires at least 4 digits';\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n creditCardNumberSaveErrorText(): string {\r\n let text: string = null;\r\n // if there's a save result that returned an invalid number\r\n const errorIdentifier = 'phx.legacy.api.InvalidCreditCardNumber';\r\n\r\n if (!!this.saveResult && this.saveResult.containsErrorIdentifier(errorIdentifier)) {\r\n text = 'Invalid Credit Card Number';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n creditCardExpirationDateErrorText(): string {\r\n let tooEarlyFlag = false;\r\n const now = new Date();\r\n\r\n const expirationYear = Number(this.expirationYear);\r\n const expirationMonth = Number(this.expirationMonth) - 1;\r\n\r\n // early year\r\n if (expirationYear < now.getFullYear()) {\r\n tooEarlyFlag = true;\r\n\r\n // current year\r\n } else if ((expirationYear === now.getFullYear()) && (expirationMonth < now.getMonth())) {\r\n tooEarlyFlag = true;\r\n }\r\n\r\n\r\n let text: string = null;\r\n\r\n if (tooEarlyFlag) {\r\n text = 'Credit Card is expired';\r\n }\r\n\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n creditCardSaveErrorText(): string {\r\n let text: string = null;\r\n\r\n if (this.saveResult) {\r\n this.saveResult.errors.forEach((indexError: ActivityResultError) => {\r\n text = (!!text ? text + ', ' : '') + indexError.message + ' (' + indexError.identifier + ')';\r\n });\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n errorText(): string {\r\n let text: string = null;\r\n\r\n // errors for pay by invoice\r\n if (!this.payNowFlag) {\r\n // assemble the text from the editing emails\r\n this.invoiceEditingEmails.forEach((indexEmail: PlanOrderPaymentEditingEmail) => {\r\n const indexEmailText = this.editingEmailErrorText(indexEmail);\r\n\r\n if (!!indexEmailText) {\r\n text = (!!text ? text + '\\n' : '') + indexEmailText;\r\n }\r\n });\r\n\r\n // is an invoice email required?\r\n if (!!this.emailRequiredErrorText()) {\r\n text = (!!text ? text + '\\n' : '') + this.emailRequiredErrorText();\r\n }\r\n }\r\n\r\n\r\n // errors for pay by credit card\r\n if (this.payNowFlag) {\r\n if (!!this.paymentPlanErrorText()) {\r\n text = (!!text ? text + '\\n' : '') + this.paymentPlanErrorText();\r\n }\r\n\r\n if (!!this.cardholderNameErrorText()) {\r\n text = (!!text ? text + '\\n' : '') + this.cardholderNameErrorText();\r\n }\r\n\r\n if (!!this.creditCardNumberErrorText()) {\r\n text = (!!text ? text + '\\n' : '') + this.creditCardNumberErrorText();\r\n }\r\n\r\n if (!!this.creditCardSaveErrorText()) {\r\n text = (!!text ? text + '\\n' : '') + this.creditCardSaveErrorText();\r\n }\r\n\r\n if (!!this.creditCardExpirationDateErrorText()) {\r\n text = (!!text ? text + '\\n' : '') + this.creditCardExpirationDateErrorText();\r\n } }\r\n\r\n return text;\r\n }\r\n\r\n\r\n creditCardNumberErrorDisplayText(): string {\r\n let text = null;\r\n\r\n if (this.validateFlag && !!this.creditCardNumberErrorText()) {\r\n text = this.creditCardNumberErrorText();\r\n\r\n } else if (!!this.creditCardNumberSaveErrorText()) {\r\n text = this.creditCardNumberSaveErrorText();\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n shouldDisplayErrors(): boolean {\r\n let flag = false;\r\n\r\n if (this.validateFlag && !!this.errorText()) {\r\n flag = true;\r\n }\r\n\r\n if (!!this.creditCardSaveErrorText()) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n validateForm(): boolean {\r\n let flag = false;\r\n\r\n // invoice errors\r\n if (!this.payNowFlag) {\r\n this.invoiceEditingEmails.forEach((indexEmail: PlanOrderPaymentEditingEmail) => {\r\n const indexEmailText = this.editingEmailErrorText(indexEmail);\r\n flag = flag || !!indexEmailText;\r\n });\r\n\r\n flag = flag || !!this.emailRequiredErrorText();\r\n }\r\n\r\n\r\n // credit card errors\r\n if (this.payNowFlag) {\r\n flag = flag || !!this.paymentPlanErrorText();\r\n flag = flag || !!this.cardholderNameErrorText();\r\n flag = flag || !!this.creditCardNumberErrorText();\r\n flag = flag || !!this.creditCardExpirationDateErrorText();\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n /**\r\n * Saves the entered credit card\r\n */\r\n saveCreditCard(): Observable> {\r\n const observable = new Observable((subscriber: Subscriber>) => {\r\n // save if there is no credit card on file\r\n let saveFlag = ((this.planOrderApplication.creditCardGUID || '') === '');\r\n\r\n // if the credit card info hasn't changed, don't save it\r\n saveFlag = saveFlag || (this.creditCardNumber !== this.initialCreditCardNumber);\r\n saveFlag = saveFlag || (this.expirationYear !== this.initialExpirationYear);\r\n saveFlag = saveFlag || (this.expirationMonth !== this.initialExpirationMonth);\r\n saveFlag = saveFlag || (this.cardholderName !== this.initialCardholderName);\r\n\r\n if (saveFlag) {\r\n const creditCard = new CreditCard();\r\n creditCard.expirationMonth = Number(this.expirationMonth);\r\n creditCard.expirationYear = Number(this.expirationYear);\r\n creditCard.cardholder = this.cardholderName;\r\n\r\n if (this.creditCardNumber !== this.initialCreditCardNumber) {\r\n creditCard.creditCardNumber = this.creditCardNumber;\r\n\r\n } else {\r\n creditCard.creditCardGUID = this.planOrderApplication.creditCardGUID;\r\n }\r\n\r\n this.creditCardService.creditCardSave(creditCard).subscribe(\r\n (result: ActivityResult) => {\r\n // if success was returned\r\n if (result.object && result.object.successFlag) {\r\n this.validateFlag = false;\r\n }\r\n\r\n subscriber.next(result);\r\n subscriber.complete();\r\n });\r\n\r\n // if a save isn't necessary\r\n } else {\r\n const saveResult = new CreditCardSaveResult();\r\n saveResult.successFlag = true;\r\n saveResult.creditCardGUID = this.planOrderApplication.creditCardGUID;\r\n\r\n const result = new ActivityResult();\r\n result.object = saveResult;\r\n\r\n subscriber.next(result);\r\n subscriber.complete();\r\n }\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n didClickDismissSaveWindow() {\r\n this.saveInProcessFlag = false;\r\n }\r\n\r\n\r\n\r\n\r\n didClickNext() {\r\n this.validateFlag = true;\r\n\r\n // if there's no validation problem\r\n if (!this.validateForm()) {\r\n // if we're processing a credit card payment\r\n if (this.payNowFlag) {\r\n this.saveResult = null;\r\n\r\n this.saveInProcessFlag = true;\r\n\r\n this.saveCreditCard().subscribe((result: ActivityResult) => {\r\n this.saveInProcessFlag = false;\r\n\r\n const saveResult = (result ? result.object : null);\r\n\r\n // if the save was successful\r\n if (saveResult && saveResult.successFlag) {\r\n this.planOrderApplication.premiumInvoiceRecipients = [];\r\n\r\n this.planOrderApplication.payNowFlag = this.payNowFlag;\r\n this.planOrderApplication.paymentPlan = this.selectedPaymentPlan;\r\n this.planOrderApplication.firstPaymentAmount = this.firstPaymentAmount;\r\n this.planOrderApplication.creditCardGUID = saveResult.creditCardGUID;\r\n this.planOrderApplication.ccCardHolderName = this.cardholderName.toUpperCase();\r\n this.planOrderApplication.ccExpirationMonth = Number(this.expirationMonth);\r\n this.planOrderApplication.ccExpirationYear = Number(this.expirationYear);\r\n\r\n if (this.creditCardNumber !== this.initialCreditCardNumber) {\r\n this.planOrderApplication.ccNumber = this.maskCreditCardNumber(this.creditCardNumber);\r\n }\r\n\r\n this.planOrderApplication.flagUpdate(PlanOrderApplicationUpdates.payment);\r\n\r\n this.persistPlanOrderApplication();\r\n\r\n this.gotoNextStep();\r\n\r\n // if the save was not successful\r\n } else {\r\n this.saveResult = result;\r\n }\r\n\r\n });\r\n\r\n // if we're paying by invoice\r\n } else {\r\n this.planOrderApplication.payNowFlag = this.payNowFlag;\r\n this.planOrderApplication.paymentPlan = this.selectedPaymentPlan;\r\n\r\n const recipients = [];\r\n\r\n this.invoiceEditingEmails.forEach((indexEmail: PlanOrderPaymentEditingEmail) => {\r\n // if there is an email address\r\n if ((indexEmail.emailAddress || '') !== '') {\r\n let indexRecipient = indexEmail.customerInvoiceRecipient;\r\n\r\n // if it's a new recipient\r\n if (!indexRecipient) {\r\n indexRecipient = new CustomerInvoiceRecipient();\r\n }\r\n\r\n indexRecipient.emailAddress = indexEmail.emailAddress;\r\n\r\n recipients.push(indexRecipient);\r\n }\r\n });\r\n\r\n this.planOrderApplication.premiumInvoiceRecipients = recipients;\r\n\r\n this.planOrderApplication.firstPaymentAmount = null;\r\n this.planOrderApplication.creditCardGUID = null;\r\n this.planOrderApplication.ccNumber = null;\r\n this.planOrderApplication.ccCardHolderName = null;\r\n this.planOrderApplication.ccExpirationMonth = null;\r\n this.planOrderApplication.ccExpirationYear = null;\r\n this.planOrderApplication.ccPaymentResult = null;\r\n\r\n this.planOrderApplication.flagUpdate(PlanOrderApplicationUpdates.payment);\r\n\r\n this.persistPlanOrderApplication();\r\n\r\n this.gotoNextStep();\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n gotoNextStep() {\r\n // next step logic\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n const url = '../' + nextRoute;\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n\r\n\r\n getFirstPayment(): PaymentPlanPayment {\r\n const firstPayment: PaymentPlanPayment = ArrayUtility.arrayFind(\r\n this.selectedPaymentPlan.payments,\r\n (testPayment: PaymentPlanPayment): boolean => {\r\n return (testPayment.paymentPlanNumber === 1);\r\n });\r\n\r\n return firstPayment;\r\n }\r\n\r\n\r\n determineAmount(amount: number): number {\r\n let dollarAmount = amount;\r\n\r\n if (this.selectedPaymentPlan && !!this.productOfficeToolbox &&\r\n this.productOfficeToolbox.priceDisplayDurationCode === PremiumDurations.Month &&\r\n this.selectedPaymentPlan.creditCardFlag && this.selectedPaymentPlan.paymentCount > 1) {\r\n dollarAmount = amount * this.getFirstPayment().paymentPlanPercent / 100.0;\r\n\r\n dollarAmount = Math.round(dollarAmount * 100.0) / 100.0;\r\n }\r\n\r\n return dollarAmount;\r\n }\r\n\r\n\r\n displayTotalText(): string {\r\n let duration = '';\r\n\r\n if (!!this.productOfficeToolbox && !this.productOfficeToolbox.allowPremiumPayLaterFlag &&\r\n !!DurationEnum[this.productOfficeToolbox.priceDisplayDurationCode]) {\r\n duration = ' (per' + DurationEnum['Y'].toString().split('/')[1] + ')';\r\n\r\n if (this.selectedPaymentPlan && this.productOfficeToolbox.priceDisplayDurationCode === PremiumDurations.Month &&\r\n this.selectedPaymentPlan.creditCardFlag && this.selectedPaymentPlan.paymentCount > 1) {\r\n duration = ' (per' + DurationEnum['M'].toString().split('/')[1] + ')';\r\n\r\n }\r\n }\r\n\r\n return 'Total' + duration + ':';\r\n }\r\n\r\n\r\n shouldDisplayAutoRenewal(): boolean {\r\n if (!!this.productOfficeGroup && this.productOfficeGroup.homeBuyerEmailRequiredFlag &&\r\n this.planOrderApplication.autoRenewFlag === null) {\r\n this.planOrderApplication.autoRenewFlag = false;\r\n }\r\n return !!this.productOfficeGroup && this.productOfficeGroup.homeBuyerEmailRequiredFlag;\r\n }\r\n\r\n\r\n isAutoRenewalSelected(): boolean {\r\n return this.planOrderApplication.autoRenewFlag;\r\n }\r\n\r\n\r\n didClickAutoRenewalOption() {\r\n this.planOrderApplication.autoRenewFlag = !this.planOrderApplication.autoRenewFlag;\r\n }\r\n\r\n\r\n didClickEmailAddress() {\r\n const subject =\r\n 'ORHP Warranty Cancellation/Remove Automatic Renewal: ' + this.planOrderApplication.formattedPlanID;\r\n\r\n const url = 'mailto:' + encodeURIComponent(this.cancellationEmail) +\r\n '?subject=' + encodeURIComponent(subject);\r\n\r\n window.open(url, '_self');\r\n }\r\n\r\n}\r\n\r\n\r\n","import {CustomerInvoiceRecipient} from '@orhp/phx-accounting-ui-module';\r\n\r\nexport class PlanOrderPaymentEditingEmail {\r\n\r\n constructor(customerInvoiceRecipient?: CustomerInvoiceRecipient) {\r\n if (customerInvoiceRecipient) {\r\n this.customerInvoiceRecipient = customerInvoiceRecipient;\r\n this.emailAddress = customerInvoiceRecipient.emailAddress;\r\n }\r\n }\r\n\r\n emailAddress: string = null;\r\n customerInvoiceRecipient: CustomerInvoiceRecipient = null;\r\n deletedFlag = false;\r\n\r\n}\r\n","\r\nimport {PlanOrderService} from './_services/plan-order.service';\r\nimport {PlanOrderApplication} from './_models/plan-order-application';\r\nimport {AfterViewInit, OnInit} from '@angular/core';\r\n\r\nexport class PlanOrderBaseComponent implements OnInit, AfterViewInit {\r\n\r\n // keep a local copy of the service\r\n private basePlanOrderService: PlanOrderService;\r\n\r\n\r\n // what date mask do we want to display?\r\n displayDateMask = 'mm/dd/yyyy';\r\n\r\n\r\n // constructor\r\n constructor(planOrderService: PlanOrderService) {\r\n this.basePlanOrderService = planOrderService;\r\n }\r\n\r\n get planOrderApplication(): PlanOrderApplication {\r\n return this.basePlanOrderService.planOrderApplication;\r\n }\r\n\r\n set planOrderApplication(application: PlanOrderApplication) {\r\n this.basePlanOrderService.planOrderApplication = application;\r\n }\r\n\r\n\r\n\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n\r\n ngAfterViewInit() {\r\n // scroll to the top of the window\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n\r\n\r\n\r\n // saves the application\r\n persistPlanOrderApplication(): void {\r\n this.basePlanOrderService.persistPlanOrderApplication();\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","\r\nimport {Component, EventEmitter, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, ActivatedRouteSnapshot, Router} from '@angular/router';\r\nimport {PlanOrderService} from './_services/plan-order.service';\r\nimport {PlanOrderLookupService} from './_services/plan-order-lookup.service';\r\nimport {PlanOrderBaseComponent} from './plan-order-base-component';\r\nimport {ModalProgress, PhxModalProgressService, UserAuthorities} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderAuthService} from './_services/plan-order-auth.service';\r\n\r\n@Component({\r\n selector: 'app-plan-order-frame',\r\n templateUrl: './plan-order-frame.component.html',\r\n styleUrls: ['./plan-order.scss']\r\n})\r\n\r\n\r\nexport class PlanOrderFrameComponent extends PlanOrderBaseComponent implements OnInit, OnDestroy {\r\n\r\n @Input() rootActivatedRoute: ActivatedRoute;\r\n\r\n\r\n\r\n loadedFlag = true;\r\n\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private planOrderService: PlanOrderService,\r\n private modalProgressService: PhxModalProgressService,\r\n private planOrderAuthService: PlanOrderAuthService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n\r\n shouldDisplayPlanOrder(): boolean {\r\n return this.loadedFlag;\r\n }\r\n\r\n\r\n}\r\n\r\n","\r\n\r\nimport {CommonModule} from '@angular/common';\r\nimport {NgModule} from '@angular/core';\r\nimport {RouterModule} from '@angular/router';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport {PlanOrderFrameComponent} from './plan-order-frame.component';\r\nimport {PlanOrderPropertyTypeComponent} from './property-type/property-type.component';\r\nimport {PlanOrderProgressBarComponent} from './progress-bar/progress-bar.component';\r\nimport {PlanOrderPropertyAddressComponent} from './property-address/property-address.component';\r\nimport {PlanOrderProductComponent} from './product/product.component';\r\nimport {PlanOrderOptionalCoverageComponent} from './optional-coverage/optional-coverage.component';\r\nimport {PlanOrderTransactionTypeComponent} from './transaction-type/transaction-type.component';\r\nimport {PlanOrderRoleComponent} from './role/role.component';\r\nimport {PlanOrderInitiatingAgentComponent} from './initiating-agent/initiating-agent.component';\r\nimport {OfficeAgentLookupModule} from '../office-agent-lookup/office-agent-lookup.module';\r\nimport {PlanOrderHomeBuyerComponent} from './home-buyer/home-buyer.component';\r\nimport {PlanOrderHomeSellerComponent} from './home-seller/home-seller.component';\r\nimport {PlanOrderCooperatingAgentComponent} from './cooperating-agent/cooperating-agent.component';\r\nimport {PlanOrderClosingInfoComponent} from './closing-info/closing-info.component';\r\nimport {PlanOrderReviewComponent} from './review/review.component';\r\nimport {PhxProductModule} from '@orhp/phx-product-ui-module';\r\nimport {PlanOrderService} from './_services/plan-order.service';\r\nimport {PhxPropertyModule} from '@orhp/phx-property-ui-module';\r\nimport {PlanOrderRootResolver} from './_services/plan-order-root.resolver';\r\nimport {PlanOrderLookupValueService} from './_services/plan-order-lookup-value.service';\r\nimport {PlanOrderFormSubmitBarComponent} from './form-submit-bar/form-submit-bar.component';\r\nimport {PlanOrderGenericCustomerComponent} from './generic-customer/generic-customer.component';\r\nimport {PhxGeographyModule} from '@orhp/phx-geography-ui-module';\r\nimport {PhxAddressValidateModule} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {PhxPlanModule} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderSaveInterstitialComponent} from './save-interstitial/save-interstitial.component';\r\nimport {PlanOrderUpdateService} from './_services/plan-order-update.service';\r\nimport {PlanOrderLookupService} from './_services/plan-order-lookup.service';\r\nimport {PlanOrderConfirmationComponent} from './confirmation/confirmation.component';\r\nimport {PlanOrderStepService} from './_services/plan-order-step.service';\r\nimport {PlanOrderWildcardStepResolver} from './_services/plan-order-wildcard-step.resolver';\r\nimport {PlanOrderPropertyTypeResolver} from './property-type/property-type.resolver';\r\nimport {PlanOrderRoleResolver} from './role/role.resolver';\r\nimport {PlanOrderInitiatingAgentResolver} from './initiating-agent/initiating-agent.resolver';\r\nimport {PlanOrderProductResolver} from './product/product.resolver';\r\nimport {PlanOrderOptionalCoverageResolver} from './optional-coverage/optional-coverage.resolver';\r\nimport {PlanOrderPropertyAddressResolver} from './property-address/property-address.resolver';\r\nimport {PlanOrderCooperatingAgentResolver} from './cooperating-agent/cooperating-agent.resolver';\r\nimport {PlanOrderClosingInfoResolver} from './closing-info/closing-info.resolver';\r\nimport {PlanOrderHomeBuyerResolver} from './home-buyer/home-buyer.resolver';\r\nimport {PlanOrderHomeSellerResolver} from './home-seller/home-seller.resolver';\r\nimport {PlanOrderTransactionTypeResolver} from './transaction-type/transaction-type.resolver';\r\nimport {PlanOrderDomainFactoryService} from './_services/plan-order-domain-factory.service';\r\nimport {PlanOrderReviewResolver} from './review/review.resolver';\r\nimport {PhxAccountingModule} from '@orhp/phx-accounting-ui-module';\r\nimport {PlanOrderAuthGuard} from './_services/plan-order-auth.guard';\r\nimport {PlanOrderCancelComponent} from './cancel/cancel.component';\r\nimport {PhxClaimsModule} from '@orhp/phx-claims-ui-module';\r\nimport {PlanQuoteService} from './_services/plan-quote.service';\r\nimport {CalendarWidgetModule} from '@orhp/phx-calendar-widget-ui-module';\r\nimport {PlanOrderOfficeAutoMatchComponent} from './office-auto-match/office-auto-match.component';\r\nimport {PhxCommonModule} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderAgentAutoMatchComponent} from './agent-auto-match/agent-auto-match.component';\r\nimport {PlanOrderMailingAddressComponent} from './mailing-address/mailing-address.component';\r\nimport {CorrespondenceService} from '../../user/_services/correspondence.service';\r\nimport {PlanOrderEmailQuoteComponent} from './plan-quote/email-quote.component';\r\nimport {PlanOrderReviewDeactivateGuard} from './review/review-deactivate.guard';\r\nimport {PlanOrderReviewActionButtonsComponent} from './review/review-action-buttons.component';\r\nimport {ProgressBarImageService} from './progress-bar/progress-bar-image.service';\r\nimport {PlanOrderPaymentComponent} from './payment/payment.component';\r\nimport {PlanOrderReviewPaymentComponent} from './review/payment/review-payment.component';\r\nimport {PlanOrderAuthService} from './_services/plan-order-auth.service';\r\nimport {PlanOrderReviewAgentComponent} from './review/agent/review-agent.component';\r\nimport {PlanOrderNoAuthGuard} from './_services/plan-order-no-auth.guard';\r\nimport {PhxCorrespondenceModule} from '@orhp/phx-correspondence-ui-module';\r\nimport {HomeModule} from '../../home/home.module';\r\nimport {PlanOrderCustomUrlGuard} from './_services/plan-order-custom-url-guard';\r\n\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n OfficeAgentLookupModule,\r\n PhxCommonModule,\r\n PhxCorrespondenceModule,\r\n PhxPropertyModule,\r\n PhxProductModule,\r\n PhxGeographyModule,\r\n PhxPlanModule,\r\n PhxAddressValidateModule,\r\n PhxAccountingModule,\r\n PhxClaimsModule,\r\n CalendarWidgetModule,\r\n HomeModule\r\n ],\r\n declarations: [\r\n PlanOrderFrameComponent,\r\n PlanOrderFormSubmitBarComponent,\r\n PlanOrderProgressBarComponent,\r\n PlanOrderGenericCustomerComponent,\r\n PlanOrderOfficeAutoMatchComponent,\r\n PlanOrderAgentAutoMatchComponent,\r\n PlanOrderEmailQuoteComponent,\r\n\r\n PlanOrderTransactionTypeComponent,\r\n PlanOrderPropertyTypeComponent,\r\n PlanOrderRoleComponent,\r\n PlanOrderInitiatingAgentComponent,\r\n PlanOrderProductComponent,\r\n PlanOrderOptionalCoverageComponent,\r\n PlanOrderPropertyAddressComponent,\r\n PlanOrderCooperatingAgentComponent,\r\n PlanOrderClosingInfoComponent,\r\n PlanOrderHomeBuyerComponent,\r\n PlanOrderHomeSellerComponent,\r\n PlanOrderPaymentComponent,\r\n\r\n PlanOrderReviewComponent,\r\n PlanOrderReviewAgentComponent,\r\n PlanOrderReviewPaymentComponent,\r\n PlanOrderReviewActionButtonsComponent,\r\n\r\n PlanOrderSaveInterstitialComponent,\r\n PlanOrderConfirmationComponent,\r\n PlanOrderCancelComponent,\r\n PlanOrderMailingAddressComponent\r\n ],\r\n providers: [\r\n PlanOrderRootResolver,\r\n PlanOrderWildcardStepResolver,\r\n PlanOrderService,\r\n PlanOrderAuthService,\r\n PlanOrderLookupValueService,\r\n PlanOrderUpdateService,\r\n PlanOrderLookupService,\r\n PlanOrderStepService,\r\n PlanOrderDomainFactoryService,\r\n PlanQuoteService,\r\n CorrespondenceService,\r\n ProgressBarImageService,\r\n\r\n PlanOrderAuthGuard,\r\n PlanOrderNoAuthGuard,\r\n PlanOrderCustomUrlGuard,\r\n PlanOrderReviewDeactivateGuard,\r\n\r\n PlanOrderTransactionTypeResolver,\r\n PlanOrderPropertyTypeResolver,\r\n PlanOrderRoleResolver,\r\n PlanOrderInitiatingAgentResolver,\r\n PlanOrderProductResolver,\r\n PlanOrderOptionalCoverageResolver,\r\n PlanOrderPropertyAddressResolver,\r\n PlanOrderCooperatingAgentResolver,\r\n PlanOrderClosingInfoResolver,\r\n PlanOrderHomeBuyerResolver,\r\n PlanOrderHomeSellerResolver,\r\n PlanOrderReviewResolver\r\n ],\r\n exports: [\r\n PlanOrderFrameComponent\r\n ]\r\n})\r\n\r\n\r\nexport class PlanOrderModule {\r\n\r\n}\r\n\r\n","\r\nimport {Routes} from '@angular/router';\r\nimport {PlanOrderPropertyTypeComponent} from './property-type/property-type.component';\r\nimport {PlanOrderPropertyAddressComponent} from './property-address/property-address.component';\r\nimport {PlanOrderProductComponent} from './product/product.component';\r\nimport {PlanOrderOptionalCoverageComponent} from './optional-coverage/optional-coverage.component';\r\nimport {PlanOrderTransactionTypeComponent} from './transaction-type/transaction-type.component';\r\nimport {PlanOrderRoleComponent} from './role/role.component';\r\nimport {PlanOrderInitiatingAgentComponent} from './initiating-agent/initiating-agent.component';\r\nimport {PlanOrderHomeBuyerComponent} from './home-buyer/home-buyer.component';\r\nimport {PlanOrderHomeSellerComponent} from './home-seller/home-seller.component';\r\nimport {PlanOrderCooperatingAgentComponent} from './cooperating-agent/cooperating-agent.component';\r\nimport {PlanOrderClosingInfoComponent} from './closing-info/closing-info.component';\r\nimport {PlanOrderReviewComponent} from './review/review.component';\r\nimport {OfficeAgentLookupRoutes} from '../office-agent-lookup/office-agent-lookup.routes';\r\nimport {PlanOrderSaveInterstitialComponent} from './save-interstitial/save-interstitial.component';\r\nimport {PlanOrderConfirmationComponent} from './confirmation/confirmation.component';\r\nimport {PlanOrderRootResolver} from './_services/plan-order-root.resolver';\r\nimport {PlanOrderWildcardStepResolver} from './_services/plan-order-wildcard-step.resolver';\r\nimport {PlanOrderPropertyTypeResolver} from './property-type/property-type.resolver';\r\nimport {PlanOrderRoleResolver} from './role/role.resolver';\r\nimport {PlanOrderInitiatingAgentResolver} from './initiating-agent/initiating-agent.resolver';\r\nimport {PlanOrderProductResolver} from './product/product.resolver';\r\nimport {PlanOrderOptionalCoverageResolver} from './optional-coverage/optional-coverage.resolver';\r\nimport {PlanOrderPropertyAddressResolver} from './property-address/property-address.resolver';\r\nimport {PlanOrderCooperatingAgentResolver} from './cooperating-agent/cooperating-agent.resolver';\r\nimport {PlanOrderClosingInfoResolver} from './closing-info/closing-info.resolver';\r\nimport {PlanOrderHomeBuyerResolver} from './home-buyer/home-buyer.resolver';\r\nimport {PlanOrderHomeSellerResolver} from './home-seller/home-seller.resolver';\r\nimport {PlanOrderTransactionTypeResolver} from './transaction-type/transaction-type.resolver';\r\nimport {PlanOrderReviewResolver} from './review/review.resolver';\r\nimport {PlanOrderAuthGuard} from './_services/plan-order-auth.guard';\r\nimport {PlanOrderCancelComponent} from './cancel/cancel.component';\r\nimport {PlanOrderMailingAddressComponent} from './mailing-address/mailing-address.component';\r\nimport {PlanOrderReviewDeactivateGuard} from \"./review/review-deactivate.guard\";\r\nimport {PlanOrderPaymentComponent} from './payment/payment.component';\r\nimport {PlanOrderNoAuthGuard} from './_services/plan-order-no-auth.guard';\r\nimport {PlanOrderCustomUrlGuard} from './_services/plan-order-custom-url-guard';\r\n\r\n\r\nexport const PlanOrderRoutes: Routes = [\r\n\r\n {\r\n path: ':planID',\r\n canActivate: [PlanOrderCustomUrlGuard],\r\n resolve: [\r\n PlanOrderRootResolver\r\n ],\r\n children: [\r\n {\r\n path: 'transaction-type',\r\n component: PlanOrderTransactionTypeComponent,\r\n canActivate: [PlanOrderNoAuthGuard],\r\n resolve: [PlanOrderTransactionTypeResolver]\r\n },\r\n {\r\n path: 'property-type',\r\n resolve: [PlanOrderPropertyTypeResolver],\r\n canActivate: [PlanOrderNoAuthGuard],\r\n children: [\r\n {\r\n path: '',\r\n component: PlanOrderPropertyTypeComponent\r\n },\r\n {\r\n path: ':code',\r\n component: PlanOrderPropertyTypeComponent\r\n }\r\n ]\r\n },\r\n {\r\n path: 'role',\r\n component: PlanOrderRoleComponent,\r\n canActivate: [PlanOrderNoAuthGuard],\r\n resolve: [PlanOrderRoleResolver]\r\n },\r\n {\r\n path: 'initiating-agent',\r\n component: PlanOrderInitiatingAgentComponent,\r\n resolve: [PlanOrderInitiatingAgentResolver],\r\n canActivate: [PlanOrderNoAuthGuard],\r\n children: OfficeAgentLookupRoutes\r\n },\r\n {\r\n path: 'product',\r\n component: PlanOrderProductComponent,\r\n canActivate: [PlanOrderNoAuthGuard],\r\n resolve: [PlanOrderProductResolver]\r\n },\r\n {\r\n path: 'optional-coverage',\r\n component: PlanOrderOptionalCoverageComponent,\r\n canActivate: [PlanOrderNoAuthGuard],\r\n resolve: [PlanOrderOptionalCoverageResolver]\r\n },\r\n {\r\n path: 'property-address',\r\n component: PlanOrderPropertyAddressComponent,\r\n canActivate: [PlanOrderAuthGuard],\r\n resolve: [PlanOrderPropertyAddressResolver]\r\n },\r\n {\r\n path: 'cooperating-agent',\r\n component: PlanOrderCooperatingAgentComponent,\r\n resolve: [PlanOrderCooperatingAgentResolver],\r\n canActivate: [PlanOrderAuthGuard],\r\n children: OfficeAgentLookupRoutes\r\n },\r\n {\r\n path: 'closing-info',\r\n component: PlanOrderClosingInfoComponent,\r\n canActivate: [PlanOrderAuthGuard],\r\n resolve: [PlanOrderClosingInfoResolver],\r\n children: OfficeAgentLookupRoutes\r\n },\r\n {\r\n path: 'home-buyer',\r\n component: PlanOrderHomeBuyerComponent,\r\n canActivate: [PlanOrderAuthGuard],\r\n resolve: [PlanOrderHomeBuyerResolver]\r\n },\r\n {\r\n path: 'home-seller/:intro-mode',\r\n canActivate: [PlanOrderAuthGuard],\r\n resolve: [PlanOrderHomeSellerResolver],\r\n component: PlanOrderHomeSellerComponent\r\n },\r\n {\r\n path: 'home-seller',\r\n canActivate: [PlanOrderAuthGuard],\r\n resolve: [PlanOrderHomeSellerResolver],\r\n component: PlanOrderHomeSellerComponent\r\n },\r\n {\r\n path: 'payment',\r\n canActivate: [PlanOrderAuthGuard],\r\n component: PlanOrderPaymentComponent\r\n },\r\n {\r\n path: 'review/:confirm-message',\r\n component: PlanOrderReviewComponent,\r\n canActivate: [PlanOrderAuthGuard],\r\n canDeactivate: [PlanOrderReviewDeactivateGuard],\r\n resolve: [PlanOrderReviewResolver]\r\n },\r\n {\r\n path: 'review',\r\n component: PlanOrderReviewComponent,\r\n canActivate: [PlanOrderAuthGuard],\r\n resolve: [PlanOrderReviewResolver]\r\n },\r\n {\r\n path: 'save',\r\n canActivate: [PlanOrderAuthGuard],\r\n component: PlanOrderSaveInterstitialComponent\r\n },\r\n {\r\n path: 'confirmation',\r\n canActivate: [PlanOrderAuthGuard],\r\n component: PlanOrderConfirmationComponent\r\n },\r\n {\r\n path: 'cancel',\r\n canActivate: [PlanOrderAuthGuard],\r\n component: PlanOrderCancelComponent\r\n },\r\n {\r\n path: 'mailing-address',\r\n canActivate: [PlanOrderAuthGuard],\r\n component: PlanOrderMailingAddressComponent\r\n },\r\n {\r\n path: '**',\r\n resolve: [\r\n PlanOrderWildcardStepResolver\r\n ],\r\n children: []\r\n }\r\n ]\r\n },\r\n {\r\n path: '',\r\n redirectTo: 'new-application',\r\n pathMatch: 'prefix'\r\n }\r\n\r\n];\r\n","module.exports = \"button.btn-start-over{background-color:#F5D961;color:black}button.btn-start-over::before{font-family:\\\"FontAwesome\\\";content:\\\"\\\\f12d\\\";margin-right:4px}button.btn-start-over::after{content:\\\"Start Over\\\"}button.btn-start-over:hover{background-color:#9A7A00;color:white}div.order-steps-container{text-align:center;margin-top:15px;margin-bottom:15px}@media (max-width: 991px){div.order-steps-container{width:100%;overflow-x:scroll;white-space:nowrap;-webkit-overflow-scrolling:touch;border:1px solid #cccccc;border-radius:5px;margin-bottom:10px}}div.order-steps-container div.order-steps{margin-bottom:10px;display:inline-block;font-size:0}div.order-steps-container div.order-steps div.order-step-item{vertical-align:top;display:inline-block;width:80px}div.order-steps-container div.order-steps div.order-step-item div.order-step-line{float:left}div.order-steps-container div.order-steps div.order-step-item div.order-step-line img{width:20px;height:40px}div.order-steps-container div.order-steps div.order-step-item div.order-step-marker{float:left;width:40px}div.order-steps-container div.order-steps div.order-step-item div.order-step-name{clear:left;text-align:center;font-size:10pt;line-height:14pt;padding-left:5px;padding-right:5px}div.order-steps-container div.order-steps div.order-step-item div.order-step-name span.order-step-name{white-space:pre-line}div.order-steps-container div.order-steps div.order-step-item a:link,div.order-steps-container div.order-steps div.order-step-item a:visited{color:#9A7A00}div.order-steps-container div.order-steps div.order-step-item a:hover{color:#524100}div.order-steps-container div.order-steps div.order-step-current div.order-step-name{font-weight:bold;color:#524100}div.order-steps-container div.order-steps div.order-step-pending div.order-step-name{color:#aaaaaa}.form-group label{width:100%}div.lookup-offices{display:none}div.initial-offices span.office-name-1,div.initial-offices span.office-name-2,div.initial-offices span.office-name-3,div.initial-offices span.office-name-4,div.initial-offices span.office-name-5,div.initial-offices span.office-name-6,div.initial-offices span.office-name-7,div.lookup-offices span.office-name-1,div.lookup-offices span.office-name-2,div.lookup-offices span.office-name-3,div.lookup-offices span.office-name-4,div.lookup-offices span.office-name-5,div.lookup-offices span.office-name-6,div.lookup-offices span.office-name-7{display:none}input.form-agent-lookup-universal{max-width:400px}button.btn-office-search{background-color:#85AEFF;width:100%}button.btn-office-search:hover{background-color:#005DE5}div.new-agent-entry{display:none}div.agent-email-entry,div.agent-phone-entry{display:none}div.order-property-instructions{margin-bottom:10px}div.address-form{padding-right:20px;border-right:1px solid #eeeeee}div.address-validate-container div.address-validate-result{margin-top:10px;margin-bottom:20px}div.address-validate-container button.btn-primary{width:300px}div.order-review-instructions{margin-bottom:20px}fieldset.order-section{padding-bottom:20px;border-bottom:1px solid #dddddd;margin-bottom:20px}fieldset.order-section span.review-price-included{font-style:italic}fieldset.order-section div.review-optional-coverage-container div.row{margin-bottom:5px}fieldset.order-section div.row-total{border-top:1px solid #aaaaaa;padding-top:5px}div.my-applications-filter div.my-applications-filter-instructions{font-weight:bold;margin-bottom:10px}div.my-applications-filter div.find-apps-button-container{margin-bottom:10px}div.my-applications-filter div.find-apps-button-container button.btn-primary{width:100%}div.my-applications-list{border-left:1px solid #dddddd;padding-left:20px}div.my-applications-list div.row-title{font-size:14pt}div.my-applications-list div.row-plan{font-size:12pt}\\n\"","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Email Plan Quote\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n We had a problem sending your Plan Quote email\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n {{quoteValidationErrorText()}}\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n Sending Plan Quote, please wait...\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Your Quote has been sent to {{this.quoteEmailAddress}}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"button.btn-quote-dismiss{min-width:200px}\\n\"","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {PlanQuoteResult} from '../_src/plan-quote-result';\r\nimport {PlanQuoteRequest} from '../_src/plan-quote-request';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanQuoteService} from '../_services/plan-quote.service';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {IPlan} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-email-quote',\r\n templateUrl: './email-quote.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './email-quote.component.scss'\r\n ]\r\n})\r\n\r\nexport class PlanOrderEmailQuoteComponent implements OnInit {\r\n\r\n @Input() quoteRequest: PlanQuoteRequest;\r\n\r\n @Output() onComplete = new EventEmitter();\r\n\r\n\r\n quoteStatus: QuoteStatus = QuoteStatus.emailPrompt;\r\n\r\n\r\n // user email\r\n get userEmailAddress(): string {\r\n let email: string = null;\r\n\r\n if (this.planOrderAuthService.loggedIn()) {\r\n const customer = this.planOrderAuthService.customer;\r\n\r\n if (customer && customer.email) {\r\n email = customer.email.phoneNumber;\r\n }\r\n }\r\n\r\n return email;\r\n }\r\n\r\n\r\n // quote email address\r\n private _quoteEmailAddress: string = null;\r\n\r\n get quoteEmailAddress(): string {\r\n if (!this._quoteEmailAddress && this.shouldDefaultLoggedInEmail()) {\r\n this._quoteEmailAddress = '';\r\n }\r\n\r\n if (this._quoteEmailAddress === null) {\r\n this._quoteEmailAddress = '';\r\n }\r\n\r\n return this._quoteEmailAddress;\r\n }\r\n\r\n set quoteEmailAddress(quoteEmailAddress: string) {\r\n this._quoteEmailAddress = quoteEmailAddress;\r\n }\r\n\r\n\r\n\r\n\r\n constructor(private planOrderAuthService: PlanOrderAuthService,\r\n private planQuoteService: PlanQuoteService,\r\n private systemService: PhxSystemService) {\r\n }\r\n\r\n\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n\r\n /**\r\n * Should the component default to the logged-in email address?\r\n */\r\n shouldDefaultLoggedInEmail(): boolean {\r\n let flag = this.planOrderAuthService.loggedIn();\r\n\r\n // pull the product/office info\r\n const productOffice = this.planOrderAuthService.productOffice;\r\n const productOfficeToolbox = (productOffice ? productOffice.toolbox : null);\r\n\r\n // if the user is an auto-login, do not populate\r\n if (productOfficeToolbox && productOfficeToolbox.autoLoginGuestGUID) {\r\n flag = false;\r\n }\r\n\r\n // if the user has a telemarketing employer, do not populate\r\n const customer = this.planOrderAuthService.customer;\r\n const employer = (customer ? customer.employer : null);\r\n const employerType = (employer ? employer.employerType : null);\r\n\r\n if (employerType && employerType.telemarketingFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n // should display quote email prompt\r\n shouldDisplayQuoteEmailModal(): boolean {\r\n let displayFlag = false;\r\n\r\n displayFlag = displayFlag || (this.quoteStatus !== QuoteStatus.none);\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayQuoteEmailForm(): boolean {\r\n let displayFlag = false;\r\n\r\n displayFlag = displayFlag || (this.quoteStatus === QuoteStatus.emailPrompt);\r\n displayFlag = displayFlag || (this.quoteStatus === QuoteStatus.validationError);\r\n displayFlag = displayFlag || (this.quoteStatus === QuoteStatus.emailError);\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the quote error display\r\n shouldDisplayQuoteEmailError(): boolean {\r\n return (this.quoteStatus === QuoteStatus.emailError);\r\n }\r\n\r\n\r\n // should we display a quote success message\r\n shouldDisplayQuoteEmailSuccess(): boolean {\r\n return (this.quoteStatus === QuoteStatus.emailSent);\r\n }\r\n\r\n\r\n\r\n // user clicked to send the email quote\r\n didClickConfirmEmailQuoteButton(): void {\r\n this.validateQuote();\r\n }\r\n\r\n\r\n // user clicked to cancel sending the email quote\r\n didClickCancelEmailQuoteButton(): void {\r\n this.quoteStatus = QuoteStatus.emailPrompt;\r\n\r\n this.quoteEmailAddress = null;\r\n\r\n this.onComplete.emit(false);\r\n }\r\n\r\n\r\n // user clicked to dismiss the confirmation modal\r\n didClickDismissModal() {\r\n this.quoteStatus = QuoteStatus.emailPrompt;\r\n\r\n this.onComplete.emit(true);\r\n }\r\n\r\n\r\n shouldDisplayQuoteInProgress(): boolean {\r\n return (this.quoteStatus === QuoteStatus.emailInProgress);\r\n }\r\n\r\n\r\n shouldDisplayQuoteSuccess(): boolean {\r\n return (this.quoteStatus === QuoteStatus.emailSent);\r\n }\r\n\r\n\r\n // performs quote validation\r\n validateQuote() {\r\n let flag = true;\r\n\r\n // if there is a validation error\r\n if (this.quoteValidationErrorText()) {\r\n flag = false;\r\n }\r\n\r\n // if we should proceed with the quote\r\n if (flag) {\r\n this.generateQuote();\r\n\r\n // if there was a validation error\r\n } else {\r\n this.quoteStatus = QuoteStatus.validationError;\r\n }\r\n }\r\n\r\n\r\n // should the quote validation error text be displayed\r\n shouldDisplayQuoteValidationErrorText(): boolean {\r\n let flag = true;\r\n\r\n // if there is no error text, there's no flag\r\n if (!this.quoteValidationErrorText()) {\r\n flag = false;\r\n }\r\n\r\n // if the quote status isn't validation error, don't display\r\n if (this.quoteStatus !== QuoteStatus.validationError) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n // is there a validation error\r\n quoteValidationErrorText(): string {\r\n let text: string = null;\r\n\r\n // validate email address\r\n if (!text) {\r\n const emailAddress = (this.quoteEmailAddress || '');\r\n\r\n if (!StringUtility.emailValidate(emailAddress)) {\r\n text = 'Valid Email Address is required';\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n // generates the quote to the specified recipient\r\n generateQuote() {\r\n\r\n // we're in progress\r\n this.quoteStatus = QuoteStatus.emailInProgress;\r\n\r\n // send Google Analytics tracking\r\n this.systemService.sendGoogleAnalyticsTracking('/plan-quote/email');\r\n\r\n // duplicate the request\r\n const request = this.quoteRequest.duplicate();\r\n\r\n // sprinkle in the email address\r\n request.emailAddress = this.quoteEmailAddress;\r\n\r\n // fetch the plan quote\r\n this.planQuoteService.fetchPlanQuote(request).subscribe((result: PlanQuoteResult) => {\r\n\r\n // if the email was successful\r\n if (result && result.emailSuccessFlag) {\r\n this.quoteStatus = QuoteStatus.emailSent;\r\n\r\n // if the email was unsuccessful\r\n } else {\r\n this.quoteStatus = QuoteStatus.emailError;\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nenum QuoteStatus {\r\n none = 10,\r\n validationError = 20,\r\n emailPrompt = 40,\r\n emailInProgress = 60,\r\n emailSent = 70,\r\n emailError = 80\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Non-CRES Product Selected\\r\\n
\\r\\n\\r\\n
\\r\\n CRES Product Selected\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{cresMemberConfirmationMessage}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{nonCresMemberConfirmationMessage}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
Loading products, please wait
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n {{this.noProductsMessage}}\\r\\n \\r\\n
If you're a real estate professional, simply visit your\\r\\n Agent Toolbox to place an order.\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Selected Product:\\r\\n\\r\\n
\\r\\n \\r\\n Choose optional coverage\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{this.planOrderApplication.product.productDescription}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Step 1:\\r\\n {{step1DisplayInstructions()}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n CRES Members Only\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Step 2:\\r\\n {{step2DisplayInstructions()}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{indexProductSection.marketingText}}\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n 0\\\">{{displayPlanFeeDuration()}}
\\r\\n Plan Fee\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{displayTradeCallFeeText()}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n ${{indexDisplayColumn.premium | premiumDollarFormat: productOfficeToolbox?.priceDisplayDurationCode | dollarFormatOptionalDecimal}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ${{indexDisplayColumn.tradeCallFee | dollarFormatNoDecimal}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

Coverage Includes:

\\r\\n\\r\\n
\\r\\n \\r\\n {{ixText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n BASIC\\r\\n
\\r\\n
{{basicCoverage}}
\\r\\n
\\r\\n
\\r\\n
And more!\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n DELUXE\\r\\n
\\r\\n
{{deluxeCoverage}}
\\r\\n
\\r\\n
\\r\\n
And much more!\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ELITE\\r\\n
\\r\\n
{{eliteCoverage}}
\\r\\n
\\r\\n
\\r\\n
And so much more!\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
*A trade call fee (TCF) is a co-pay that is due when we dispatch a service provider to your home.

\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n {{this.noProductsMessage}}\\r\\n \\r\\n
If you're a real estate professional, simply visit your\\r\\n Agent Toolbox to place an order.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n Step 1:\\r\\n {{step1DisplayInstructions()}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Step 2:\\r\\n {{step2DisplayInstructions()}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{indexProductSection.marketingText}}\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n 0\\\">{{displayPlanFeeDuration()}}
\\r\\n Plan Fee\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{displayTradeCallFeeText()}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n ${{indexProductPrice.premium | premiumDollarFormat: productOfficeToolbox?.priceDisplayDurationCode | dollarFormatNoDecimal}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ${{indexProductPrice.tradeCallFee | dollarFormatNoDecimal}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n BASIC\\r\\n
\\r\\n
{{basicCoverage}}
\\r\\n
\\r\\n
\\r\\n
And more!\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n DELUXE\\r\\n
\\r\\n
{{deluxeCoverage}}
\\r\\n
\\r\\n
\\r\\n
And much more!\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ELITE\\r\\n
\\r\\n
{{eliteCoverage}}
\\r\\n
\\r\\n
\\r\\n
And so much more!\\r\\n
\\r\\n
\\r\\n
\\r\\n
*A trade call fee (TCF) is a co-pay that is due when we dispatch a service provider to your home.

\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"@media screen and (max-width: 767px){div.product-container-full-size{display:none}div.product-container-mobile-size{display:block}}@media screen and (min-width: 768px){div.product-container-full-size{display:block}div.product-container-mobile-size{display:none}}@media print{div.product-container-full-size{display:block}div.product-container-mobile-size{display:none}}div.product-container-mobile-size div.section-button-group-container{width:100%}div.product-container-mobile-size div.section-button-group-container button.btn{width:100%;margin-bottom:10px}div.view-brochure-button-container button.link{text-decoration:underline}div.view-brochure-button-container button.link:hover{text-decoration:none}div.pick-your-plan-text,div.choose-your-coverage-text{white-space:pre-line;font-size:16pt;line-height:20pt;color:#a4343a;text-align:center;margin-bottom:16px}div.btn-group div.product-section-type{display:inline-block}div.btn-group div.product-section-type button.btn{margin-right:6px}div.btn-group div.product-section-type div.cres-members-notice{text-align:center;margin-top:5px;font-style:italic;color:#666666}div.product-group div.intro-text{padding:7px 7px;border:1px solid #dddddd;border-radius:5px;font-size:14pt;margin-bottom:10px;text-align:center}@media (min-width: 768px){div.product-group div.product-card{max-width:350px;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;height:100%}}@media (max-width: 767px){div.product-group div.product-card{border:1px solid #ccc;border-radius:5px;padding:10px;margin-bottom:20px}}div.product-group div.product-card-top{border-top:1px solid #ccc;border-right:1px solid #ccc;border-left:1px solid #ccc;border-radius:5px 5px 0 0;padding:10px 10px 0 10px}div.product-group div.product-card-middle{border-right:1px solid #ccc;border-left:1px solid #ccc;border-radius:0;padding:5px 10px 0 10px}div.product-group div.product-card-bottom{border-bottom:1px solid #ccc;border-right:1px solid #ccc;border-left:1px solid #ccc;border-radius:0 0 5px 5px;padding:0 10px 10px 10px}div.product-group div.product-card-bottom ul{padding-top:5px;margin-bottom:5px;padding-left:0;margin-left:0;border-top:1px solid #ccc;list-style-type:none}div.product-group div.product-container hr{margin-top:0}div.product-group div.product-container div.button-container{max-width:350px;margin-left:auto;margin-right:auto}div.product-group div.product-container div.button-container button.btn-product-selection{width:100%;margin-bottom:10px;text-align:center;white-space:normal;padding-top:10px;padding-bottom:10px}div.product-group div.product-container div.button-container button.btn-product-selection span.button-text-pre{white-space:pre}div.product-group div.product-container div.button-container div.product-subtitle-group div.product-subtitle{margin-left:10px;margin-right:10px;font-style:italic;color:#666666}@media (max-width: 767px){div.product-group div.product-container div.button-container div.product-subtitle-group div.product-subtitle{margin-bottom:10px}}.product-group-coverage-text{border-top:1px solid #ccc;padding-top:15px}button.btn-product-section-selector.product-colors-1,button.btn-product-section-selector.product-colors-1::before{color:#fff}button.btn-product-section-selector.product-colors-1{background-color:#8e9fbc}button.btn-product-section-selector.product-colors-1.selected,button.btn-product-section-selector.product-colors-1.selected::before{color:#fff}button.btn-product-section-selector.product-colors-1.selected{background-color:#003087}button.btn-product-section-selector.product-colors-1:hover,button.btn-product-section-selector.product-colors-1:hover:before{color:#fff}button.btn-product-section-selector.product-colors-1:hover{background-color:#012755}div.product-group.product-colors-1 button.btn-product-selection{background-color:#003087;color:#fff}div.product-group.product-colors-1 button.btn-product-selection.selected{background-color:#012755;color:#fff}div.product-group.product-colors-1 button.btn-product-selection:hover{background-color:#012755;color:#fff}button.btn-product-section-selector.product-colors-2,button.btn-product-section-selector.product-colors-2::before{color:#fff}button.btn-product-section-selector.product-colors-2{background-color:#8e9fbc}button.btn-product-section-selector.product-colors-2.selected,button.btn-product-section-selector.product-colors-2.selected::before{color:#fff}button.btn-product-section-selector.product-colors-2.selected{background-color:#1b365d}button.btn-product-section-selector.product-colors-2:hover,button.btn-product-section-selector.product-colors-2:hover:before{color:#fff}button.btn-product-section-selector.product-colors-2:hover{background-color:#002855}div.product-group.product-colors-2 button.btn-product-selection{background-color:#1b365d;color:#fff}div.product-group.product-colors-2 button.btn-product-selection.selected{background-color:#002855;color:#fff}div.product-group.product-colors-2 button.btn-product-selection:hover{background-color:#002855;color:#fff}button.btn-product-section-selector.product-colors-5,button.btn-product-section-selector.product-colors-5::before{color:#fff}button.btn-product-section-selector.product-colors-5{background-color:#8e9fbc}button.btn-product-section-selector.product-colors-5.selected,button.btn-product-section-selector.product-colors-5.selected::before{color:#fff}button.btn-product-section-selector.product-colors-5.selected{background-color:#425563}button.btn-product-section-selector.product-colors-5:hover,button.btn-product-section-selector.product-colors-5:hover:before{color:#fff}button.btn-product-section-selector.product-colors-5:hover{background-color:#1e2e3c}div.product-group.product-colors-5 button.btn-product-selection{background-color:#425563;color:#fff}div.product-group.product-colors-5 button.btn-product-selection.selected{background-color:#1e2e3c;color:#fff}div.product-group.product-colors-5 button.btn-product-selection:hover{background-color:#1e2e3c;color:#fff}button.btn-product-section-selector.product-colors-fr1,button.btn-product-section-selector.product-colors-fr1::before{color:#fff}button.btn-product-section-selector.product-colors-fr1{background-color:#8b676d}button.btn-product-section-selector.product-colors-fr1.selected,button.btn-product-section-selector.product-colors-fr1.selected::before{color:#fff}button.btn-product-section-selector.product-colors-fr1.selected{background-color:#83181c}button.btn-product-section-selector.product-colors-fr1:hover,button.btn-product-section-selector.product-colors-fr1:hover:before{color:#fff}button.btn-product-section-selector.product-colors-fr1:hover{background-color:#610515}div.product-group.product-colors-fr1 button.btn-product-selection{background-color:#83181c;color:#fff}div.product-group.product-colors-fr1 button.btn-product-selection.selected{background-color:#610515;color:#fff}div.product-group.product-colors-fr1 button.btn-product-selection:hover{background-color:#610515;color:#fff}button.btn-product-section-selector.product-colors-fr2,button.btn-product-section-selector.product-colors-fr2::before{color:#fff}button.btn-product-section-selector.product-colors-fr2{background-color:#8b676d}button.btn-product-section-selector.product-colors-fr2.selected,button.btn-product-section-selector.product-colors-fr2.selected::before{color:#fff}button.btn-product-section-selector.product-colors-fr2.selected{background-color:#af2d2e}button.btn-product-section-selector.product-colors-fr2:hover,button.btn-product-section-selector.product-colors-fr2:hover:before{color:#fff}button.btn-product-section-selector.product-colors-fr2:hover{background-color:#971826}div.product-group.product-colors-fr2 button.btn-product-selection{background-color:#af2d2e;color:#fff}div.product-group.product-colors-fr2 button.btn-product-selection.selected{background-color:#971826;color:#fff}div.product-group.product-colors-fr2 button.btn-product-selection:hover{background-color:#971826;color:#fff}button.btn-product-section-selector.product-colors-cres-1,button.btn-product-section-selector.product-colors-cres-1::before{color:#fff}button.btn-product-section-selector.product-colors-cres-1{background-color:#92a885}button.btn-product-section-selector.product-colors-cres-1.selected,button.btn-product-section-selector.product-colors-cres-1.selected::before{color:#fff}button.btn-product-section-selector.product-colors-cres-1.selected{background-color:#8ac155}button.btn-product-section-selector.product-colors-cres-1:hover,button.btn-product-section-selector.product-colors-cres-1:hover:before{color:#fff}button.btn-product-section-selector.product-colors-cres-1:hover{background-color:#618c46}div.product-group.product-colors-cres-1 button.btn-product-selection{background-color:#8ac155;color:#fff}div.product-group.product-colors-cres-1 button.btn-product-selection.selected{background-color:#618c46;color:#fff}div.product-group.product-colors-cres-1 button.btn-product-selection:hover{background-color:#618c46;color:#fff}button.btn-product-section-selector.product-colors-cres-2,button.btn-product-section-selector.product-colors-cres-2::before{color:#fff}button.btn-product-section-selector.product-colors-cres-2{background-color:#92a885}button.btn-product-section-selector.product-colors-cres-2.selected,button.btn-product-section-selector.product-colors-cres-2.selected::before{color:#fff}button.btn-product-section-selector.product-colors-cres-2.selected{background-color:#5b9149}button.btn-product-section-selector.product-colors-cres-2:hover,button.btn-product-section-selector.product-colors-cres-2:hover:before{color:#fff}button.btn-product-section-selector.product-colors-cres-2:hover{background-color:#325229}div.product-group.product-colors-cres-2 button.btn-product-selection{background-color:#5b9149;color:#fff}div.product-group.product-colors-cres-2 button.btn-product-selection.selected{background-color:#325229;color:#fff}div.product-group.product-colors-cres-2 button.btn-product-selection:hover{background-color:#325229;color:#fff}div.section-button-group-container button.btn{background-color:#eeeeee;color:black;border:1px solid #cccccc}div.section-button-group-container button.btn:hover{background-color:#aaaaaa}div.section-button-group-container button.btn::before{color:black}div.section-button-group-container button.btn-selected{background-color:#aaaaaa}div.plan-fees{padding-bottom:10px}div.plan-fees div.plan-fee-label{text-align:center;font-size:18pt;line-height:22pt}div.plan-fees div.plan-fee-amount{text-align:center;font-size:26pt;line-height:32pt;font-weight:bold}div.plan-fees div.tcf-label{text-align:center;font-size:14pt}div.plan-fees div.tcf-amount{text-align:center;font-weight:bold;font-size:20pt;line-height:22pt}div.plan-fees div.plan-fee-amount,div.plan-fees div.tcf-amount{color:#783435}.tick-within-circle{position:relative;width:20px;height:20px;line-height:15px;text-align:center;font-size:20px;font-weight:900;border:1px solid #aaa;background:#012755;border-radius:50%;box-shadow:inset 0 1px 3px rgba(0,0,0,0.3)}.tick-within-circle::before{content:'\\\\2713';color:white;position:absolute;top:0;left:0;width:100%;height:100%}\\n\"","\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {ProductOffice, ProductOfficeToolbox, ProductSectionLookupService} from '@orhp/phx-product-ui-module';\r\nimport {ProductSection} from '@orhp/phx-product-ui-module';\r\nimport {ProductGroupProduct} from '@orhp/phx-product-ui-module';\r\nimport {ProductGroup} from '@orhp/phx-product-ui-module';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {ProductLookupParams} from '@orhp/phx-product-ui-module';\r\nimport {Product} from '@orhp/phx-product-ui-module';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {ArrayUtility, MessagingFormatter} from '@orhp/phx-common-ui-module';\r\nimport {ProductGroupType} from '@orhp/phx-product-ui-module';\r\nimport {SystemMessageLookupService} from '@orhp/phx-system-ui-module';\r\nimport {SystemMessage} from '@orhp/phx-system-ui-module';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {SystemMessageLookupParams} from '@orhp/phx-system-ui-module';\r\nimport {RegionLookupService} from '@orhp/phx-geography-ui-module';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\nimport {DurationEnum} from '../_src/price-duration-enum';\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-product',\r\n templateUrl: './product.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './product.component.scss'\r\n ]\r\n})\r\n\r\nexport class PlanOrderProductComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n formSeries: string[] = null;\r\n\r\n allProductSections: ProductSection[] = null;\r\n\r\n selectedProductSection: ProductSection = null;\r\n\r\n noProductsMessage: string = null;\r\n cresMemberConfirmationMessage: string = null;\r\n nonCresMemberConfirmationMessage: string = null;\r\n\r\n step1Text: string = null;\r\n step1RegionText: string = null;\r\n step2Text: string = null;\r\n\r\n productsLoadedFlag = false;\r\n\r\n selectedProduct: Product = null;\r\n\r\n basicCoverages = ['Heating System', 'Electrical System', 'Plumbing System', 'Kitchen Appliances', 'Rekey Service'];\r\n\r\n deluxeCoverages = ['Everything In Basic', 'Air Conditioner/Cooler', 'Washer/Dryer', 'Code Violations', 'Permits/Haul Away', 'Deluxe Enhancements'];\r\n\r\n eliteCoverages = ['Everything In Deluxe', 'Pre-season HVAC Tune-Up', 'No HVAC Refrigerant Limit', 'Ice/Water Dispensers', 'Doubles Appliance Limit', 'Doubles Washer/Dryer Limit', 'Doubles Enhancement Limit'];\r\n\r\n get productSections(): ProductSection[] {\r\n const sections = [];\r\n\r\n this.allProductSections.forEach((indexProductSection: ProductSection) => {\r\n sections.push(indexProductSection);\r\n });\r\n\r\n return sections;\r\n }\r\n\r\n get productOfficeGroup(): ProductOffice {\r\n return this.planOrderAuthService.productOffice;\r\n }\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n return this.planOrderAuthService.productOfficeToolbox;\r\n }\r\n\r\n // constructor\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private systemService: PhxSystemService,\r\n private systemMessageLookupService: SystemMessageLookupService,\r\n private regionLookupService: RegionLookupService,\r\n private productSectionLookupService: ProductSectionLookupService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderStepService: PlanOrderStepService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n // on init\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'product');\r\n\r\n const observables = [];\r\n\r\n observables.push(this.fetchProducts());\r\n observables.push(this.fetchSystemMessages());\r\n observables.push(this.fetchMarketingHeaderMessage());\r\n\r\n Observable.forkJoin(observables).subscribe((results: any[]) => {\r\n this.productsLoadedFlag = true;\r\n });\r\n\r\n }\r\n\r\n\r\n // is the current user a CRES user\r\n isCresUser(): boolean {\r\n let cresFlag = false;\r\n\r\n const customer = this.planOrderAuthService.customer;\r\n\r\n if (customer) {\r\n if (customer.cresFlag) {\r\n cresFlag = true;\r\n }\r\n\r\n if (customer.employer && customer.employer.cresFlag) {\r\n cresFlag = true;\r\n }\r\n }\r\n\r\n return cresFlag;\r\n }\r\n\r\n\r\n // loads system messages\r\n fetchSystemMessages(): Observable {\r\n const observable = Observable.create((subscriber: Subscriber) => {\r\n const params = new SystemMessageLookupParams();\r\n\r\n params.type =\r\n SystemMessageTypes.cresMemberConfirmation + ',' +\r\n SystemMessageTypes.nonCresMemberConfirmation + ',' +\r\n SystemMessageTypes.step1Message + ',' +\r\n SystemMessageTypes.step2Message;\r\n\r\n // fetch the system messages\r\n this.systemMessageLookupService.systemMessageLookup(params).subscribe((messages: SystemMessage[]) => {\r\n // loop over the results\r\n messages.forEach((indexMessage: SystemMessage) => {\r\n\r\n const indexMessageType = indexMessage.type.toLowerCase();\r\n\r\n if (indexMessageType === SystemMessageTypes.cresMemberConfirmation) {\r\n this.cresMemberConfirmationMessage = indexMessage.message;\r\n\r\n } else if (indexMessageType === SystemMessageTypes.nonCresMemberConfirmation) {\r\n this.nonCresMemberConfirmationMessage = indexMessage.message;\r\n\r\n } else if (indexMessageType === SystemMessageTypes.step1Message) {\r\n this.step1Text = indexMessage.message;\r\n\r\n } else if (indexMessageType === SystemMessageTypes.step2Message) {\r\n this.step2Text = indexMessage.message;\r\n }\r\n });\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n\r\n // fetches the marketing header message\r\n fetchMarketingHeaderMessage(): Observable {\r\n const observable = Observable.create((subscriber: Subscriber) => {\r\n const params = new SystemMessageLookupParams();\r\n\r\n params.type = SystemMessageTypes.step1MessageByRegion;\r\n params.regionID = MessagingFormatter.integerToString(this.planOrderApplication.propertyRegionID);\r\n\r\n this.systemMessageLookupService.systemMessageLookup(params).subscribe((systemMessages: SystemMessage[]) => {\r\n // if a message was returned\r\n if ((systemMessages || []).length) {\r\n const systemMessage = systemMessages[0];\r\n\r\n this.step1RegionText = systemMessage.message;\r\n }\r\n\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // load products\r\n fetchProducts(): Observable {\r\n const observable = Observable.create((subscriber: Subscriber) => {\r\n const property = this.planOrderApplication.property;\r\n\r\n const params = new ProductLookupParams();\r\n\r\n params.zipCode = property.zipCode;\r\n\r\n if (property.propertyType) {\r\n params.propertyType = property.propertyType.propertyType;\r\n }\r\n\r\n // if the user specified a transaction type\r\n const fetchTransactionType = this.planOrderApplication.transactionType;\r\n\r\n if (fetchTransactionType) {\r\n params.transactionTypeID = fetchTransactionType.transactionTypeID;\r\n\r\n // if the user selected a New Construction Flag\r\n if (this.planOrderApplication.newConstructionFlag) {\r\n params.newConstructionFlagID = this.planOrderApplication.newConstructionFlag.newConstructionFlagID;\r\n }\r\n\r\n // what's the orderer role\r\n const role = this.planOrderApplication.role;\r\n\r\n // if a role was specified\r\n if (role) {\r\n if (role.onlyQuoteFlag) {\r\n params.onlyQuoteFlag = true;\r\n\r\n } else {\r\n params.hasInitiatingAgentFlag = this.planOrderApplication.hasInitiatingAgent();\r\n params.hasTelemarketingAgentFlag = !!this.planOrderApplication.telemarketingAgent;\r\n }\r\n }\r\n\r\n // if we're looking up based on market segment\r\n } else if (this.planOrderApplication.marketSegmentID) {\r\n params.marketSegmentID = this.planOrderApplication.marketSegmentID;\r\n }\r\n\r\n\r\n // test for agent\r\n const initiatingAgent = this.planOrderApplication.initiatingAgent;\r\n const initiatingOffice = (initiatingAgent ? initiatingAgent.employer : null);\r\n\r\n if (initiatingOffice && initiatingOffice.employerID) {\r\n params.employerID = String(initiatingOffice.employerID);\r\n }\r\n\r\n\r\n // if no agent was specified, test for the current user\r\n if (!params.employerID) {\r\n const employer = this.planOrderAuthService.employer;\r\n\r\n if (!!employer) {\r\n params.employerID = String(employer.employerID);\r\n }\r\n }\r\n\r\n\r\n\r\n this.productSectionLookupService.fetchProductSections(params)\r\n .subscribe((fetchedProductSections: ProductSection[]) => {\r\n\r\n const filteredProductSections = [];\r\n const transactionType = this.planOrderApplication.transactionType;\r\n\r\n fetchedProductSections.forEach((indexSection: ProductSection) => {\r\n let includeSectionFlag = true;\r\n\r\n // filter out CRES products for Realtor Referrals\r\n if (indexSection.cresFlag && transactionType && transactionType.realtorReferralFlag) {\r\n includeSectionFlag = false;\r\n }\r\n\r\n if (includeSectionFlag) {\r\n filteredProductSections.push(indexSection);\r\n }\r\n });\r\n\r\n\r\n let formSeries = [];\r\n const productSections = [];\r\n\r\n // loop over product sections, pulling out groups\r\n filteredProductSections.forEach((indexSection: ProductSection) => {\r\n // if the section has products, include it\r\n const hasProductsFlag = !!indexSection.productGroups.length;\r\n\r\n if (hasProductsFlag) {\r\n productSections.push(indexSection);\r\n\r\n // look for the form series\r\n const formSeriesFound = !!ArrayUtility.arrayFind(formSeries, (testSeries: string): boolean => {\r\n return (indexSection.formSeries.toLowerCase() === testSeries.toLowerCase());\r\n });\r\n\r\n // if the form series wasn't found, add it\r\n if (!formSeriesFound) {\r\n formSeries.push(indexSection.formSeries);\r\n }\r\n }\r\n });\r\n\r\n // if there are fewer than 4 product sections, do NOT group by series\r\n if (productSections.length <= 4) {\r\n formSeries = ['all'];\r\n }\r\n\r\n this.formSeries = formSeries;\r\n this.allProductSections = productSections;\r\n\r\n\r\n // if a product has already been selected\r\n const selectedProduct = this.planOrderApplication.product;\r\n\r\n if (selectedProduct) {\r\n this.selectedProductSection = ArrayUtility.arrayFind(this.productSections,\r\n (testSection: ProductSection): boolean => {\r\n\r\n return testSection.hasProduct(selectedProduct);\r\n });\r\n }\r\n\r\n\r\n // if there was no product section selected and the user is CRES\r\n if (!this.selectedProductSection && this.isCresUser()) {\r\n // loop over sections and pick the first CRES one\r\n this.productSections.forEach((indexSection: ProductSection) => {\r\n if (indexSection.cresFlag && !this.selectedProductSection) {\r\n this.selectedProductSection = indexSection;\r\n }\r\n });\r\n }\r\n\r\n\r\n // if there was no product section selected and there are product sections\r\n if (!this.selectedProductSection && this.productSections.length) {\r\n // default to the first product section\r\n this.selectedProductSection = this.productSections[0];\r\n }\r\n\r\n\r\n // if there are no product sections, load the \"no products\" message\r\n if (!this.productSections.length) {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/no-products-found');\r\n let lookupMessageType = 'plan-order-no-products-found-message';\r\n if (this.isConsumerSpecificOnly()) {\r\n lookupMessageType = 'plan-order-no-dtc-specific-products-message';\r\n }\r\n\r\n this.systemMessageLookupService.systemMessageLookupByType(lookupMessageType)\r\n .subscribe((systemMessage: SystemMessage) => {\r\n let messageText = systemMessage.message;\r\n\r\n // substitute in the apps phone number\r\n const appsPhoneNumber = this.planOrderAuthService.appsPhoneNumber;\r\n\r\n messageText = messageText.replace('{{appsPhoneNumber}}', appsPhoneNumber);\r\n\r\n this.noProductsMessage = messageText;\r\n\r\n subscriber.next(false);\r\n subscriber.complete();\r\n });\r\n\r\n } else {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }\r\n\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n productSectionsByCresFlag(cresFlag: boolean): ProductSection[] {\r\n return this.filteredProductSections(null, cresFlag);\r\n }\r\n\r\n\r\n\r\n\r\n step1DisplayInstructions(): string {\r\n const text = (!!this.step1RegionText ? this.step1RegionText : this.step1Text);\r\n\r\n return text;\r\n }\r\n\r\n\r\n step2DisplayInstructions(): string {\r\n return this.step2Text;\r\n }\r\n\r\n\r\n isDirectToConsumer(): boolean {\r\n return !!this.productOfficeToolbox && !this.productOfficeToolbox.allowPremiumPayLaterFlag;\r\n }\r\n\r\n\r\n isConsumerSpecificOnly(): boolean {\r\n return !!this.productOfficeToolbox && !!this.productOfficeToolbox.autoLoginGuestGUID;\r\n }\r\n\r\n\r\n displayPlanFeeDuration(): string {\r\n let textToDisplay = '';\r\n\r\n if (this.isDirectToConsumer() && !!DurationEnum[this.productOfficeToolbox.priceDisplayDurationCode]) {\r\n let theDuration = (DurationEnum[this.productOfficeToolbox.priceDisplayDurationCode].toString().split('/')[1]).trim();\r\n if (theDuration === 'day') {\r\n theDuration = 'dai';\r\n }\r\n\r\n const firstCharToUpper = theDuration.charAt(0);\r\n textToDisplay = firstCharToUpper.toUpperCase() + theDuration.substring(1) + 'ly';\r\n }\r\n\r\n return textToDisplay;\r\n }\r\n\r\n\r\n displayTradeCallFeeText(): string {\r\n let textToDisplay = 'Trade Call Fee';\r\n\r\n if (this.isDirectToConsumer() && !!DurationEnum[this.productOfficeToolbox.priceDisplayDurationCode]) {\r\n textToDisplay = textToDisplay + '*';\r\n }\r\n\r\n return textToDisplay;\r\n }\r\n\r\n\r\n // returns product sections by CRES flag\r\n filteredProductSections(formSeries: string, cresFlag: boolean): ProductSection[] {\r\n const sections = [];\r\n\r\n if (this.productSections) {\r\n this.productSections.forEach((indexSection: ProductSection) => {\r\n let includeFlag = true;\r\n\r\n if (indexSection.cresFlag !== cresFlag) {\r\n includeFlag = false;\r\n }\r\n\r\n if (formSeries) {\r\n let formValidFlag = false;\r\n\r\n formValidFlag = formValidFlag || (indexSection.formSeries === formSeries);\r\n formValidFlag = formValidFlag || (formSeries === 'all');\r\n\r\n if (!formValidFlag) {\r\n includeFlag = false;\r\n }\r\n }\r\n\r\n if (includeFlag) {\r\n sections.push(indexSection);\r\n }\r\n });\r\n }\r\n\r\n return sections;\r\n }\r\n\r\n\r\n\r\n // should the CRES Members Only message be displayed\r\n shouldDisplayCresMembersOnlyMessage(formSeries: string, cresFlag: boolean): boolean {\r\n let displayFlag = true;\r\n\r\n // if this is not a CRES section\r\n if (!cresFlag) {\r\n displayFlag = false;\r\n\r\n // if this is a CRES section\r\n } else {\r\n let hasProductsFlag = false;\r\n\r\n const productSections = this.filteredProductSections(formSeries, cresFlag);\r\n\r\n productSections.forEach((indexSection: ProductSection) => {\r\n indexSection.productGroups.forEach((indexGroup: ProductGroup) => {\r\n hasProductsFlag = hasProductsFlag || !!indexGroup.products.length;\r\n });\r\n });\r\n\r\n if (!hasProductsFlag) {\r\n displayFlag = false;\r\n }\r\n }\r\n\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n /**\r\n * Returns the title for the given product group\r\n * @param group\r\n */\r\n subtitleTexts(group: ProductGroup): string[] {\r\n const texts: string[] = [];\r\n const products = (group.products || []);\r\n\r\n // if there are any products, pull the first product\r\n if (products.length) {\r\n const text = products[0].subtitleText;\r\n\r\n if (!!text) {\r\n text.split('\\n').forEach((ixString: string) => {\r\n const ixTestString = ixString.trim();\r\n\r\n if (ixTestString.length) {\r\n texts.push(ixTestString);\r\n }\r\n });\r\n }\r\n }\r\n\r\n return texts;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n productPricesForGroup(productGroup: ProductGroup): ProductDisplayPrice[] {\r\n const productPricesList = [];\r\n\r\n // loop over the products\r\n productGroup.products.forEach((indexProductGroupProduct: ProductGroupProduct) => {\r\n const indexProduct = indexProductGroupProduct.product;\r\n\r\n // look for an existing matching price\r\n let productDisplayPrice: ProductDisplayPrice = ArrayUtility.arrayFind(\r\n productPricesList,\r\n (testPrice: ProductDisplayPrice): boolean => {\r\n\r\n let flag = true;\r\n\r\n flag = flag && (testPrice.premium === indexProduct.premium);\r\n flag = flag && (testPrice.tradeCallFee === indexProduct.tradeCallFee);\r\n\r\n return flag;\r\n });\r\n\r\n // if it wasn't found, create one\r\n if (!productDisplayPrice) {\r\n productDisplayPrice = new ProductDisplayPrice();\r\n productDisplayPrice.premium = indexProduct.premium;\r\n productDisplayPrice.tradeCallFee = indexProduct.tradeCallFee;\r\n\r\n productPricesList.push(productDisplayPrice);\r\n }\r\n\r\n productDisplayPrice.productGroupProducts.push(indexProductGroupProduct);\r\n });\r\n\r\n return productPricesList;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n productRowsForSelectedSection(): ProductDisplayRow[] {\r\n const section = this.selectedProductSection;\r\n\r\n const productPricesByGroupID = {};\r\n\r\n\r\n let maxProductPricePerGroupCount = 0;\r\n\r\n\r\n // pull unique pricing from all of the products\r\n section.productGroups.forEach((indexProductGroup: ProductGroup) => {\r\n const indexProductGroupID = indexProductGroup.productGroupID;\r\n\r\n const productPricesList = this.productPricesForGroup(indexProductGroup);\r\n\r\n if (productPricesList.length > maxProductPricePerGroupCount) {\r\n maxProductPricePerGroupCount = productPricesList.length;\r\n }\r\n\r\n productPricesByGroupID[indexProductGroupID] = productPricesList;\r\n });\r\n\r\n\r\n\r\n // create an array of rows\r\n const rows = [];\r\n\r\n // loop until the maximum number of unique prices per group\r\n for (let productPriceIndex = 0; productPriceIndex < maxProductPricePerGroupCount; productPriceIndex++) {\r\n // what is the maximum number of products per unique price?\r\n let maxProductsPerPrice = 0;\r\n\r\n section.productGroups.forEach((indexProductGroup: ProductGroup) => {\r\n // retrieve product prices for the group\r\n const productPricesList = productPricesByGroupID[indexProductGroup.productGroupID] || [];\r\n\r\n productPricesList.forEach((indexProductDisplayPrice: ProductDisplayPrice) => {\r\n const indexProductCount = indexProductDisplayPrice.productGroupProducts.length;\r\n\r\n if (indexProductCount > maxProductsPerPrice) {\r\n maxProductsPerPrice = indexProductCount;\r\n }\r\n });\r\n });\r\n\r\n\r\n\r\n\r\n // loop over the maximum products per price\r\n for (let productInPriceIndex = 0; productInPriceIndex < maxProductsPerPrice; productInPriceIndex++) {\r\n const row = new ProductDisplayRow();\r\n row.rowType = ProductDisplayRowType.productButton;\r\n\r\n let rowHasProductFlag = false;\r\n\r\n // loop over the product groups\r\n section.productGroups.forEach((indexProductGroup: ProductGroup) => {\r\n const column = new ProductDisplayColumn();\r\n column.row = row;\r\n\r\n row.columns.push(column);\r\n\r\n // pull the produce prices for the group\r\n const productPricesForGroup = productPricesByGroupID[indexProductGroup.productGroupID] || [];\r\n\r\n // pull the current product price\r\n let productPrice: ProductDisplayPrice = null;\r\n\r\n if (productPriceIndex < productPricesForGroup.length) {\r\n productPrice = productPricesForGroup[productPriceIndex];\r\n }\r\n\r\n // pull the current ProductGroupProduct\r\n if (productPrice) {\r\n if (productInPriceIndex < productPrice.productGroupProducts.length) {\r\n column.productGroupProduct = productPrice.productGroupProducts[productInPriceIndex];\r\n\r\n rowHasProductFlag = true;\r\n }\r\n }\r\n });\r\n\r\n\r\n if (rowHasProductFlag) {\r\n rows.push(row);\r\n }\r\n }\r\n\r\n\r\n // Add a price row\r\n const priceRow = new ProductDisplayRow();\r\n priceRow.rowType = ProductDisplayRowType.priceDisplay;\r\n\r\n let includePriceRow = false;\r\n\r\n // loop over the product groups\r\n section.productGroups.forEach((indexProductGroup: ProductGroup) => {\r\n const priceColumn = new ProductDisplayColumn();\r\n priceColumn.row = priceRow;\r\n\r\n priceRow.columns.push(priceColumn);\r\n\r\n // pull the produce prices for the group\r\n const productPricesForGroup = productPricesByGroupID[indexProductGroup.productGroupID] || [];\r\n\r\n // pull the current product price\r\n let productPrice: ProductDisplayPrice = null;\r\n\r\n if (productPriceIndex < productPricesForGroup.length) {\r\n productPrice = productPricesForGroup[productPriceIndex];\r\n }\r\n\r\n // pull the current ProductGroupProduct\r\n if (productPrice) {\r\n priceColumn.premium = productPrice.premium;\r\n priceColumn.tradeCallFee = productPrice.tradeCallFee;\r\n priceColumn.priceFlag = true;\r\n\r\n includePriceRow = true;\r\n }\r\n });\r\n\r\n\r\n if (includePriceRow) {\r\n rows.push(priceRow);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n // loop over all of the rows\r\n for (let rowIndex = 1; rowIndex < rows.length; rowIndex++) {\r\n const indexCurrentRow: ProductDisplayRow = rows[rowIndex];\r\n const indexPrevRow: ProductDisplayRow = rows[rowIndex - 1];\r\n\r\n // loop over the columns\r\n for (let columnIndex = 0; columnIndex < indexCurrentRow.columns.length; columnIndex++) {\r\n const indexCurrentCol: ProductDisplayColumn = indexCurrentRow.columns[columnIndex];\r\n const indexPrevCol: ProductDisplayColumn = indexPrevRow.columns[columnIndex];\r\n\r\n let flag = false;\r\n\r\n // if the previous row is a button row\r\n if (this.isProductDisplayRowButton(indexPrevRow)) {\r\n // if the previous row had a product and the new column has a product\r\n flag = flag || (!!indexPrevCol.product && !!indexCurrentCol.product);\r\n\r\n // if the current row is a price row and it has a price in it\r\n flag = flag || (this.isProductDisplayRowPrice(indexCurrentRow) && indexCurrentCol.priceFlag);\r\n }\r\n\r\n // if the previous row is a price row\r\n if (this.isProductDisplayRowPrice(indexPrevRow)) {\r\n // if the current row has a product\r\n flag = flag || !!indexCurrentCol.product;\r\n }\r\n\r\n if (flag) {\r\n indexCurrentCol.borderTopFlag = true;\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n return rows;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n isProductDisplayRowButton(row: ProductDisplayRow): boolean {\r\n return (row.rowType === ProductDisplayRowType.productButton);\r\n }\r\n\r\n\r\n\r\n shouldDisplayProductSelectorButton(column: ProductDisplayColumn): boolean {\r\n let flag = true;\r\n\r\n flag = flag && this.isProductDisplayRowButton(column.row);\r\n\r\n flag = flag && !!column.product;\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n isProductDisplayRowPrice(row: ProductDisplayRow): boolean {\r\n return (row.rowType === ProductDisplayRowType.priceDisplay);\r\n }\r\n\r\n\r\n shouldDisplayProductPrice(column: ProductDisplayColumn): boolean {\r\n let flag = true;\r\n\r\n flag = flag && this.isProductDisplayRowPrice(column.row);\r\n\r\n flag = flag && (column.premium !== null);\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n // should the existing product be displayed?\r\n shouldDisplaySelectedProduct(): boolean {\r\n return !!this.planOrderApplication.product;\r\n }\r\n\r\n\r\n // should display No Products found\r\n shouldDisplayNoProductsFound(): boolean {\r\n let displayFlag = true;\r\n\r\n if (this.productSections.length) {\r\n displayFlag = false;\r\n }\r\n\r\n if (!this.noProductsMessage) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n cssClassForProductSectionSelectorButton(section: ProductSection): any {\r\n const css = {};\r\n\r\n css['btn'] = true;\r\n css['btn-product-section-selector'] = true;\r\n css[section.cssClassName] = true;\r\n\r\n return css;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n selectedBrochureUrl(language: ProductBrochureLanguage): string {\r\n let url: string = null;\r\n\r\n const productGroup = (this.selectedProductSection ? this.selectedProductSection.firstProductGroup : null);\r\n\r\n if (productGroup) {\r\n const form = productGroup.planForm;\r\n\r\n let filename: string = null;\r\n\r\n if (language === ProductBrochureLanguage.english) {\r\n filename = form.englishFormURL;\r\n\r\n } else if (language === ProductBrochureLanguage.spanish) {\r\n filename = form.spanishFormURL;\r\n }\r\n\r\n if (filename) {\r\n url = this.systemService.productPdfUrlForFile(filename);\r\n }\r\n }\r\n\r\n return url;\r\n }\r\n\r\n\r\n\r\n\r\n viewBrochureButtonText(language: ProductBrochureLanguage): string {\r\n let text: string = null;\r\n\r\n let languageText = '';\r\n\r\n if (language === ProductBrochureLanguage.english) {\r\n languageText = 'English';\r\n\r\n } else if (language === ProductBrochureLanguage.spanish) {\r\n languageText = 'Spanish';\r\n }\r\n\r\n const englishUrl = this.selectedBrochureUrl(ProductBrochureLanguage.english);\r\n const spanishUrl = this.selectedBrochureUrl(ProductBrochureLanguage.spanish);\r\n\r\n\r\n // if there is both an english and spanish url\r\n if (englishUrl && spanishUrl) {\r\n text = this.selectedProductSection.viewBrochureMultiLanguageText;\r\n if (this.isDirectToConsumer()) {\r\n text = 'View Sample Coverage';\r\n text = text.replace(' Brochure', '');\r\n }\r\n\r\n // if there is an english url\r\n } else if (englishUrl && (language === ProductBrochureLanguage.english)) {\r\n text = this.selectedProductSection.viewBrochureSingleLanguageText;\r\n if (this.isDirectToConsumer()) {\r\n text = 'View Sample Coverage';\r\n text = text.replace(' Brochure', '');\r\n }\r\n\r\n // if there is a spanish url\r\n } else if (spanishUrl && (language === ProductBrochureLanguage.spanish)) {\r\n text = this.selectedProductSection.viewBrochureSingleLanguageText;\r\n }\r\n\r\n if (text) {\r\n text = text.replace('{{language}}', languageText);\r\n }\r\n\r\n return text;\r\n\r\n }\r\n\r\n\r\n\r\n // should the brochure buttons be displayed?\r\n shouldDisplayBrochureButtons(): boolean {\r\n const displayFlag = !!this.viewBrochureEnglishButtonText() || !!this.viewBrochureSpanishButtonText();\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the View Current Brochure button be displayed\r\n viewBrochureEnglishButtonText(): string {\r\n return this.viewBrochureButtonText(ProductBrochureLanguage.english);\r\n }\r\n\r\n\r\n viewBrochureSpanishButtonText(): string {\r\n return this.viewBrochureButtonText(ProductBrochureLanguage.spanish);\r\n }\r\n\r\n\r\n\r\n // should the section tab bar be displayed\r\n shouldDisplaySectionTabBar(): boolean {\r\n return (this.allProductSections.length > 1);\r\n }\r\n\r\n\r\n\r\n\r\n // should the \"Choose your Coverage\" text display?\r\n shouldDisplayChooseYourCoverageText(): boolean {\r\n return this.shouldDisplaySectionTabBar();\r\n }\r\n\r\n\r\n\r\n\r\n // should the marketing text be displayed for the section?\r\n shouldDislayMarketingTextForSection(productSection: ProductSection): boolean {\r\n const marketingText = (productSection.marketingText || '');\r\n const displayFlag = (marketingText !== '');\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // user clicked a section\r\n didClickProductSection(productSection: ProductSection): void {\r\n this.selectedProductSection = productSection;\r\n }\r\n\r\n\r\n // is the section selected?\r\n isSectionSelected(productSection: ProductSection): boolean {\r\n return (this.selectedProductSection === productSection);\r\n }\r\n\r\n\r\n // is the product selected?\r\n isProductGroupProductSelected(productGroupProduct: ProductGroupProduct): boolean {\r\n return this.isProductSelected(productGroupProduct.product);\r\n }\r\n\r\n\r\n\r\n // splits the button title for a product\r\n productSelectionTitleParts(productGroupProduct: ProductGroupProduct): string[] {\r\n let text = productGroupProduct.selectionTitle;\r\n text = text.replace(/\\\\n/g, '\\n');\r\n\r\n const textParts = text.split('\\n');\r\n\r\n return textParts;\r\n }\r\n\r\n\r\n\r\n // button title\r\n buttonTitleForProduct(productGroupProduct: ProductGroupProduct): string {\r\n const textParts = this.productSelectionTitleParts(productGroupProduct);\r\n\r\n return textParts[0];\r\n }\r\n\r\n\r\n // button text\r\n buttonTextForProduct(productGroupProduct: ProductGroupProduct): string[] {\r\n const text = productGroupProduct.selectionText || '';\r\n\r\n const textParts: string[] = [];\r\n\r\n if (text === '') {\r\n const titleParts = this.productSelectionTitleParts(productGroupProduct);\r\n\r\n for (let partIndex = 1; partIndex < titleParts.length; partIndex++) {\r\n textParts.push(titleParts[partIndex]);\r\n }\r\n\r\n } else {\r\n textParts.push(text);\r\n }\r\n\r\n return textParts;\r\n }\r\n\r\n\r\n\r\n // is the product selected?\r\n isProductSelected(product: Product): boolean {\r\n let selectedFlag = false;\r\n\r\n const selectedProduct = this.planOrderApplication.product;\r\n\r\n if (selectedProduct && selectedProduct.isEqual(product)) {\r\n selectedFlag = true;\r\n }\r\n\r\n return selectedFlag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayMobileSeparatorLine(productGroupProduct: ProductGroupProduct): boolean {\r\n const productPrices = this.productPricesForGroup(productGroupProduct.productGroup);\r\n\r\n let lineFlag = false;\r\n\r\n for (let priceIndex = 0; priceIndex < productPrices.length; priceIndex++) {\r\n const indexPrice = productPrices[priceIndex];\r\n\r\n for (let productIndex = 0; productIndex < indexPrice.productGroupProducts.length; productIndex++) {\r\n const indexProductGroupProduct = indexPrice.productGroupProducts[productIndex];\r\n\r\n if (productGroupProduct === indexProductGroupProduct) {\r\n if (productIndex > 0) {\r\n lineFlag = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return lineFlag;\r\n }\r\n\r\n\r\n\r\n\r\n // user clicked the PDF for the product\r\n didClickEnglishBrochureButton() {\r\n this.didClickBrochureButton(ProductBrochureLanguage.english);\r\n }\r\n\r\n\r\n didClickSpanishBrochureButton() {\r\n this.didClickBrochureButton(ProductBrochureLanguage.spanish);\r\n }\r\n\r\n\r\n didClickBrochureButton(language: ProductBrochureLanguage) {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/product-pdf/' + language);\r\n\r\n const pdfUrl = this.selectedBrochureUrl(language);\r\n\r\n if (pdfUrl) {\r\n setTimeout(() => {\r\n window.open(pdfUrl, '_blank');\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // user clicked to continue to the optional coverage screen\r\n didClickExistingProduct() {\r\n const url = '../optional-coverage';\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n\r\n\r\n // user clicked a product\r\n didClickProductGroupProduct(productGroupProduct: ProductGroupProduct): void {\r\n this.selectedProduct = productGroupProduct.product;\r\n\r\n if (!this.shouldDisplayCresConfirmation()) {\r\n this.gotoNextStep();\r\n }\r\n }\r\n\r\n\r\n // go to the next step\r\n gotoNextStep() {\r\n this.planOrderApplication.product = this.selectedProduct;\r\n\r\n // next step logic\r\n this.persistPlanOrderApplication();\r\n\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n const url = '../' + nextRoute;\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n\r\n\r\n\r\n // should the CRES dialog display\r\n shouldDisplayCresConfirmation(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.shouldDisplayCresMemberConfirmation()) {\r\n displayFlag = true;\r\n }\r\n\r\n if (this.shouldDisplayNonCresMemberConfirmation()) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the CRES-member dialog display\r\n shouldDisplayCresMemberConfirmation(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.selectedProduct) {\r\n const productCresFlag = this.selectedProduct.cresFlag;\r\n const cresUserFlag = this.isCresUser();\r\n\r\n const cresProducts = this.productSectionsByCresFlag(true);\r\n const hasCresProductsFlag = !!cresProducts.length;\r\n\r\n const orhpUserFlag = this.planOrderAuthService.isOrhpUser();\r\n\r\n if (cresUserFlag && !productCresFlag && hasCresProductsFlag && !orhpUserFlag) {\r\n displayFlag = true;\r\n }\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the non-CRES member dialog display?\r\n shouldDisplayNonCresMemberConfirmation(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.selectedProduct) {\r\n const productCresFlag = this.selectedProduct.cresFlag;\r\n const cresUserFlag = this.isCresUser();\r\n\r\n const nonCresProducts = this.productSectionsByCresFlag(false);\r\n const hasNonCresProductsFlag = !!nonCresProducts.length;\r\n\r\n const orhpUserFlag = this.planOrderAuthService.isOrhpUser();\r\n\r\n if (!cresUserFlag && productCresFlag && hasNonCresProductsFlag && !orhpUserFlag) {\r\n displayFlag = true;\r\n }\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n // the user clicked the CRES redo button\r\n didClickCresRedo() {\r\n if (this.selectedProduct) {\r\n let productSections: ProductSection[] = null;\r\n\r\n // if the selected product is CRES\r\n if (this.selectedProduct.cresFlag) {\r\n productSections = this.productSectionsByCresFlag(false);\r\n\r\n // if the selected product is not CRES\r\n } else {\r\n productSections = this.productSectionsByCresFlag(true);\r\n }\r\n\r\n if (productSections && productSections.length) {\r\n this.selectedProductSection = productSections[0];\r\n }\r\n }\r\n\r\n this.selectedProduct = null;\r\n }\r\n\r\n\r\n // the user clicking to continue\r\n didClickCresContinue() {\r\n this.gotoNextStep();\r\n }\r\n\r\n\r\n didClickAgentToolbox() {\r\n self.window.location.replace('/home');\r\n }\r\n\r\n}\r\n\r\n\r\nenum ProductBrochureLanguage {\r\n english = 100,\r\n spanish = 200\r\n}\r\n\r\n\r\nclass SystemMessageTypes {\r\n static cresMemberConfirmation = 'plan-order-product-cres-member-confirmation';\r\n static nonCresMemberConfirmation = 'plan-order-product-non-cres-member-confirmation';\r\n static step1MessageByRegion = 'plan-order-product-step-1-message-by-region';\r\n static step1Message = 'plan-order-product-step-1-message';\r\n static step2Message = 'plan-order-product-step-2-message';\r\n}\r\n\r\n\r\n\r\nclass ProductDisplayPrice {\r\n premium: number;\r\n tradeCallFee: number;\r\n productGroupProducts: ProductGroupProduct[] = [];\r\n}\r\n\r\n\r\nenum ProductDisplayRowType {\r\n productButton = 10,\r\n priceDisplay = 20\r\n}\r\n\r\n\r\nclass ProductDisplayRow {\r\n\r\n rowType: ProductDisplayRowType = null;\r\n\r\n columns: ProductDisplayColumn[] = [];\r\n\r\n}\r\n\r\n\r\nclass ProductDisplayColumn {\r\n\r\n row: ProductDisplayRow = null;\r\n\r\n productGroupProduct: ProductGroupProduct = null;\r\n\r\n priceFlag = false;\r\n\r\n premium: number = null;\r\n tradeCallFee: number = null;\r\n\r\n borderTopFlag = false;\r\n\r\n get product(): Product {\r\n return (this.productGroupProduct ? this.productGroupProduct.product : null);\r\n }\r\n\r\n get productGroup(): ProductGroup {\r\n return (this.productGroupProduct ? this.productGroupProduct.productGroup : null);\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\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderProductResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plans\r\n if (!application.planID) {\r\n let allowProduct = true;\r\n\r\n allowProduct = allowProduct && !!application.transactionType;\r\n allowProduct = allowProduct && !!application.property.zipCode;\r\n allowProduct = allowProduct && !!application.property.propertyType;\r\n allowProduct = allowProduct && !!application.role;\r\n\r\n if (!allowProduct) {\r\n redirectTo = 'role';\r\n }\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'product');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n resolve(!redirectTo);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n\r\n\r\n@Injectable()\r\n\r\nexport class ProgressBarImageService {\r\n\r\n private _images: any = null;\r\n\r\n get images(): any {\r\n if (!this._images) {\r\n\r\n const images = {};\r\n\r\n images['clear-1x1'] = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAA63GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzggNzkuMTU5ODI0LCAyMDE2LzA5LzE0LTAxOjA5OjAxICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxNy0wNi0xOVQyMDoyMDoyNC0wNzowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE3LTA2LTE5VDIwOjIxOjMwLTA3OjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNy0wNi0xOVQyMDoyMTozMC0wNzowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDo1ZDI3OWEwZS05NGM3LTRlZjItODI5MC1kYjQzNzk5OTk5ZWI8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmMzFlZDJmNy05NWY1LTExN2EtYTg2Yy1kODVhNzM1NzQyMWY8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo0ODdkNWY3My1lYmVlLTQyZGQtODdmZS0wZmYzMmM0NjIzMDI8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NDg3ZDVmNzMtZWJlZS00MmRkLTg3ZmUtMGZmMzJjNDYyMzAyPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE3LTA2LTE5VDIwOjIwOjI0LTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNvbnZlcnRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6cGFyYW1ldGVycz5mcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nPC9zdEV2dDpwYXJhbWV0ZXJzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo1ZDI3OWEwZS05NGM3LTRlZjItODI5MC1kYjQzNzk5OTk5ZWI8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTctMDYtMTlUMjA6MjE6MzAtMDc6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE3IChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjE8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pmp5oRkAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAABNJREFUeNpi+P//PwMAAAD//wMACPwC/tOldWEAAAAASUVORK5CYII=';\r\n\r\n images['progress-c-complete-c'] = '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';\r\n\r\n images['progress-c-current-n'] = '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';\r\n\r\n images['progress-c-current-p'] = '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';\r\n\r\n images['progress-line-complete'] = 'iVBORw0KGgoAAAANSUhEUgAAAIIAAACiCAYAAACNrxXLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWdJREFUeNrs3bENwjAQhtE7dC3DIDEAm5MBYA5XrqjsxqBkBKB7T8oCvz7JKaI411oBJxMgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAECCqtXYzA/V57mbA0cAuxxgufiRyuQEURwNCQAgIASEgBISAEBACQkAICAEhIASEwG/Vej2tQOR8XHyYgqMBISAEhIAQEAJCQAgIASEgBISAEPhe5flqBfwfAUcDQkAICAEhIASEgBAQAkJACAgBISAEhIAQ+I/qvVuBqDmnFdhvedvMQPpkES+LCAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhgBA4vAUYAAHBI0kXoWYdAAAAAElFTkSuQmCC';\r\n\r\n images['progress-line-pending'] = 'iVBORw0KGgoAAAANSUhEUgAAAIEAAACiCAYAAABmmK7IAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWZJREFUeNrs3bEJgDAURVEjIVnL1ZzMcbJBuhC1ErSz/eeACzwuxkI0zTkXYltNgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASLgh9xaO8wQPILr2swQPIJSihWCS9OPET0YmgARIAJEgAgQASJABIgAESACRIAIEAEiQAS85N67FaJHMMawguMAESACEyACRIAIEAEiQASIABEgAkTAI9darRCcj1TgOEAEiAARIAJEgAgQASJABIgAESACRIAIEAEf94+wrOBOQPg7wXXtZogtecUQxwEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIgD9OAQYAXO8cLZ7q1msAAAAASUVORK5CYII=';\r\n\r\n images['progress-n-complete-c'] = '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';\r\n\r\n images['progress-n-complete-p'] = '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';\r\n\r\n images['progress-n-current-p'] = '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';\r\n\r\n images['progress-n-pending-p'] = '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';\r\n\r\n images['progress-p-complete-c'] = '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';\r\n\r\n images['progress-p-complete-p'] = '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';\r\n\r\n images['progress-p-current-c'] = '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';\r\n\r\n images['progress-p-current-n'] = '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';\r\n\r\n images['progress-p-current-p'] = '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';\r\n\r\n images['progress-p-pending-n'] = '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';\r\n\r\n images['progress-p-pending-p'] = 'iVBORw0KGgoAAAANSUhEUgAAAKEAAACiCAYAAAApxa0YAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAADxhJREFUeNrsnWtW3EYThqUxvnIb8OUHvyYrCFlB8Ao+WIFhBYEV2KzAeAUmKwhZQcgKQlYQfo3PAQxjLr7bfHqVqkm7rQFpVC11S/WeozNgxsygefRWVXd1K45U36nf7y/Rl4vJ0aWvfy7wKwbJ8bfx9R4eFxYW9vTsfq+45bAtEmg/0mOPDpfap+NPetxrO5xxy6CDwy2Rqy0V+b83b96M4jjf6bq8vIw+ffpU5NfDLXfJPXfaBmXccOh6BNv/6LE76rm3bt2Kbty4EU1MTKRHp9MZPpbRly9fvjkAJz/mgPJ3gnKgEIYFHkBbTY4nFGIzXQ2A3b59O33E93UIIH78+HH4CDhHaKfJQMYNgm+ZwFu2fwaHg9MBOhxl3c2VACFg/PDhQ3p8/fo162nbADKBcUch9Cfcsuv1bPDu3LkT3b17tzanKysA+f79+/TIcEkUNS8AZejuGAcM31MCcCg4HJxucnIyWPBGiWHMcMgBhevNBMZ9hbAm+AAcwIPrNV0AECCenZ1lueN2iDDGIcMH6O7du5fme20UwjVgxGPIMMaew9cl+NZt+Kanp9O8T/VvlX1xcRG9e/fODtPIGbd8zxljjwFcJwC7Cl/+6nowGNjOCDfc8Lmajj2ED2N7zyNjRgPhdmZmpnHFRsVhejc51nwM0bFnAD4j9xsOswA+DLWoigvh+fT01KymB5QrbimE2e73MjJmOBB2UXT4OrAcUjV9fn6e5oy+umLsAYDrFH5TIeTOzs5q6HUQopEvGsM6A8oVt1sLIVW+cL9l0/2mpqaUmGpdcZtgHLQKQgq/v0U01Ybcb25uTt2vQlc8OTkxc0W0jq3UFZ7jGgBcpfCbDr2g6ED41dyvelcEiEYFPSAQdxsNoV39ovLFdJuqPqF6tsLzWtV5YlwhgMj/4IKp6yH8+jzdhu5ouAUOfA19/vw51/9Fj2J6cuM4/Vtx5O3KrkMZQzmYZdloDIR2AeJj9QvIUDXiQwBoJnhiJ5qABKDIgX0DE1N/x8fHJohoEVsLHkIC8I+Ixv8A3vz8vBf5H6ADcAxdHcJ54C5vX84J8kRj6UElIMZVAYjQixBc58nmtR0AT9rpJIDkpQZ1niNckHBEA8QdyhMHQUFoA4jGg263W1uoxQnFUZfjjeuQRVb4uQYxgXAlGAh9ARAnkhcRhSoACHdEFKnaHTNAdBaaXUAIAJfqAhAhF53HV6xcC1JwxaphrArEWBjA4TAMBqGRA1Z5wgBf3mEUhXFsEMWHb2JBAJ9FNBBdZRWMnA9hN6PFvbFCmAaIVeWMGSCKDmjHQgDC/V5WDSBcDyvQfKt0qyxgEHGq6DRHenN0dGQWd4+lpvhiAQAXqRDp4qQAQNcD0YAO8DU99OYVihfA6NoVrQFtDNn8JNH0EJcEEFXHXxF1w9y/f9/5VFzb3a9uV8QUH/oSSXvkiKXGEMvGzJcMIJoRXAOIwgMnQQHMztvevn3rPDfGiIfRdMLrgaJaIKSO6GWuhF12w+AEo9OjTcVHmQsVMLq8UC3DWaV9gKoNx5QHIgyn9v/gwQNnhQhf4ep+xcMzXMvl53J4eCiSH477Dl/yFy7ng5EIK4DlLl5XU5X4zNENReqaTDiHkMYD0yk5rAlxVQkDQC1Ayo8iII1xNXVppWFLlKK5DcdmGAZ8CMMuAVTJAuPCMOC0GD+kadKxwnJRJxxarmHFCmAAwjl14YgIy0Z/wFhhOTeEZLVOw7ACGCaIqJSNbfmWilbLnZwA8u5YaTWMnREUwHBBdFGsYNjGKFCfi0MYGbtjWS8mllcogNXJRdUMJoyNC3pUwMoUJrRB5T9su5iaczGUoFVwtQI0iGjS880HBwdmkfJDnim9PJb2zTph6SEEnYarR7j4rU01RWQVKbmGbOK8LuiiS9pVoqwqVlRgs3lJvX79mqdYc7nhdU44dEFUxNKFiAJYv665ic9YMljJ5YZxHS6oeaBfQl6ImQ/J/LCIG3bqcEGdjvNL3CRclxt2Rrgg3x9OvFHShf2ryot3o5DMNY0JjV/GyQlX+QvJPkFelKTyU+hFlIxQBjtdWodUCMKUXL4xoa9/pEpWyNUli0XUEkYUfZIbQlo73JPOBXPc41fliRtKzqYYU7wjW71iKw98zqFYulUL1bDmgmEIn73UbTusVi9oM7LuMhXTth0pqUN77HRSAKUKErwBQKgKR8jnpHoEMvY+hHZNCC/tqka6ZV9dsN1uyCBiN9iswnSCCw9+Uellm4BPAQxPgEZyzxvwheaXrJuIx5eOy1VMkutOCeqGV8nphjG8B7QqTFW1o61TCHVIJmzxLrdBQ6gu2IzcMFgI69wVXyWbUrn+HJ1CqFI3VAhVQXyWHVdvWhsVNCTXCqFWxc2Tyxa8jourRkNxM/NCZzt8Sf9CXcTeXKHNy3sItXW/+QWKk02VJO3a1ZWi8kd284E3EOpmRu2SdFNKqS6aNt5NSfWfsHODROvf2BDC/QCfTs21WxL3TykEIQ+/hHTvYFV1MI57F/v44uIiF4Ra9apyQxXHhUCcULhU0kJwLcJVR0+ZqvZQrqdApRCqFEI9BSqFUKUQ6ilQKYQqhVBPgUohVCmEegpUCqFKIdRToFIIVa3XRJ77mnFXhHbcqK4Tt3GhyTXvHaIKd1bzTVd0gbvKFDe04igM7rjt/XyjbHXHlofSBDpE0zLbCpfeLpiXeureM+0Lu1hbMo7ziUPIrqh37WwXgLhJjtSm6iK/xdWt7FXNB1AMQgZR+g7iKv+E+9VJAigKoVkhqZopLHSXvO2wEwghdcPmhmHpGy05g5AXQaua54Kucv6OqzesapZcpllOIIQbSievqvrk+vPshHjlqKqV6/SqE+obVzUjFDuFUENyM4QhGdefo9Pfrm6ooVghVJUShmSCh7CqP0LlRlUNtU28evVq+IJozZGeG8Tv1QZYdUGIu63Qh2oyMSx7eAP0i4uLaG5uTuwN8AyKghheRSw5QwLw3rx5k7nNNCDcTI7Z5FhOjh46pY+Pj6P5+XkxENUNw3NByVCMW04MBgPzn/aS4/fh65k/6ff768nDc3awhw8fioVm24JV/krq1hAQTO3o6IgdECSuLSws7IwsTJIfbuFJZvwOLclV+ZULnp2dmSF4xQYwszpOnrRNdikKoTa9hlMRS+WCgM+41dxuwtZuJhsj/v8LtlLEcynhCtNZFH+Fz0Y6FzRccHPk62b9I7nhQNoNeYWWyk9heE5SGGkh7Y9ywauccOiG0veuw1ykdtj4WYxIRim4oLEmffNKB77iZ1vshkguJQU31LDc3DBsMTOgyFocwuQ/Dly5oYZlv6ph6TBsueCLay+Ca37uzA0RlrVabl4Ytl2QGBofQpduyMMBmh/WJ4xWSM8P2y5IDF3txtc9od/vd5OHf5KjC/d69OiR6JvG1iGowPXWtdXngZOTk6K/E5/h4eEhf5aoiH/I9V6ue4LphiDcKLtFcxLdQqRaALGVh7QsM9nMzUDeJyaOCDfsSc8pm1eRbqpUTSEivZcMG9TBwQF/i9mRx7kvigKvM5xTRkuOq6tTHTE8ANMK5NsumY1Cn33eJ9KIdzr5jI4Y6SKFQdSKOTwAkaIZPGwlrOw5gdAgfMDkuygmUK2pI4YDIMLw+fk5f7tfJBccC8KE8OGL4MVPT0+dnDRU4Qqi/wBmmNFGniGZsk7IPYcIzemYEEKzywpOQSx/Dl0BmBGGd8Z6n2O+/gqHZRQprjZP57EsnWceP5q4Onfokjci4VhhuBSEZLnDavnk5MRpOAGIunQ0vzAT5TKKZHzmK+OE4bJOGJH1bvFVYZXo4kLDAw4Nz1dfsBj4dz3CYEW/jaLV8Hfvu+wb6vf7fyUPi/i62+2Kd2RkXYVWx66Kwm8VLXKohI0GhZ0EwJXSaZfA+3ocGcM2LsYPs/JEHU/8z/1wLlzmfyxc/AaAe5yS1Q4h5QJDEJErVLG0E3kPYHSxkXdoxUcVKxmtlIuXborkYGIJVhKWV5OHl+xWLuaXrzpBcOC2hGieWaqqDQ7nFxsiGOf3p7J5oBMIbRBRzWIXh6pAROMDw9jUJgjeGaHKNdwZAK5d165fK4QEIiBcrQPEpsLI+/ngqHJ0AOBh9wSjEhYH0AmEPoBowogj1DDNC5DqGCPFOYMDGvk9ZkQ2XLyWs8vKBxBZId2jGU6HXA/nrK6iKyMEbycArjn7m13+MTaI2HKuzmoW7shA4vBJfMNq6S3ZfAfQOYQ2iHBCyS3nygKJXAcw4rHqkI1zAeB82gwAeTSG2MwW/QTAZ87dv4o/LgER282t88mfnZ31bt0xTjwfABOQSoGJv5nDLL4GeL5NP2bsIeikCKkNQnv4BpqZmRFf7eUKTgYyb7UNwBi8EDqA0A1jLWCrDMBKISQQlwlELCNN55kBo7Zq1XeBIfwaU63p7JfkQLR3EBKIaHb4LTl6XLAgPGurVvUFCAA0xgAB3gp1z0eNhpBA7BKIS5wzTU1NBRGemyCrEyatgKMxW/ODhdCAEZXXU/4exQpcUcOzG8H1MjqdNmjJRm2qvURLQFyiPLHHrog80XVfYtuEwgMOaFT8e1SA7NX93rwYJ6DwDBCX+d8wXYUm2Ta3aknlfqh+LfeD823WFX69hHBU9QxNT09X0rDZxMoXzmcNveyT++369F69W7BBrog8cZ3/DW4IGDVEjx16IayG2/LF/byG0MoVn3IFrTBeL26/t5bg7pL77fv6vr1fukYzLU+5cFEYc8O3T5Xvju/vP5j1kzSc84uZLzKMLra8DSHnw1Z6ODLg26xy2q01EBr54roNI6+5aMMieVS7yPkybnIUHHxBQmjBuGyHaQgQIkxL37e5TsHpsOcP4MvYciVY+IKG0AISMD6JjDFGFmZg+GbioY03MnhwvBEd4YDuV9+GW1oJoQEjHHGVgOzZP4dD8ko1HL65JHI8vkMC4BuxyRRmN36N/u12HjTls2vkxi7UqcPu2Mt6DkOJR17TUaUAG0DDXTCvWf+CcLtDrrfXxM+r8bsLEZCA8efIGHMcBSZvqwHx+l6E8qLhHFBxEyxPmQE4gJdjKz2EWNwZfbep4LUKwoyCBiAu5oGyIg0ozP4ZXXFPYIWw+U65SGEbYHbpexfaJej+JvD22+B0CmE512QYe6Nyyyu0T0fURncrov8LMADdDdhi4+eHLgAAAABJRU5ErkJggg==';\r\n\r\n this._images = images;\r\n }\r\n\r\n return this._images;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n base64ImageByName(name: string): string {\r\n const src = this.images[name] || '';\r\n\r\n const fullSrc = 'data:image/png;base64,' + src;\r\n\r\n return fullSrc;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","module.exports = \"\\r\\n
\\r\\n Plan #: {{planNumberDisplay() | planNumberFormat}}\\r\\n
\\r\\n\\r\\n

\\r\\n {{displayedTitleText}}\\r\\n\\r\\n
\\r\\n Demo Mode\\r\\n
\\r\\n

\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n {{indexStep.name}}\\r\\n \\r\\n\\r\\n \\r\\n {{indexStep.name}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"div.demo-mode{display:inline-block;font-size:0.8em;color:#a4343a;font-weight:normal;padding:5px;margin-left:5px;border:1px solid #a4343a;border-radius:5px}div.plan-number-display{float:right;color:#999999;font-size:10pt}\\n\"","\r\nimport {Component, OnInit, Input, AfterViewInit} from '@angular/core';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {PlanOrderProgressBarStep} from '../_models/progress-bar-step';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {Plan} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer, UrlTree} from '@angular/router';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanUtility} from '@orhp/phx-plan-ui-module';\r\nimport {ProgressBarImageService} from './progress-bar-image.service';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\n\r\n@Component({\r\n selector: 'app-plan-order-progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './progress-bar.component.scss'\r\n ]\r\n})\r\n\r\nexport class PlanOrderProgressBarComponent extends PlanOrderBaseComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() titleText: string;\r\n @Input() displayPlanNumberFlag = true;\r\n\r\n planNumberLookup = '';\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private planOrderService: PlanOrderService,\r\n private planOrderStepService: PlanOrderStepService,\r\n private progressBarImageService: ProgressBarImageService,\r\n private planOrderAuthService: PlanOrderAuthService\r\n ) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n\r\n get displayedTitleText(): string {\r\n let text = this.titleText;\r\n\r\n if (!text) {\r\n const productOfficeGroup = this.planOrderAuthService.productOffice;\r\n const productOfficeToolbox = (!!productOfficeGroup ? productOfficeGroup.toolbox : null);\r\n\r\n if (!!productOfficeToolbox && !productOfficeToolbox.allowPlanQuoteFlag) {\r\n text = 'Order Warranty';\r\n\r\n } else {\r\n text = 'Get a Quote / Place Application';\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n get allSteps(): PlanOrderProgressBarStep[] {\r\n return this.planOrderStepService.allSteps;\r\n }\r\n\r\n\r\n get stepsToDisplay(): PlanOrderProgressBarStep[] {\r\n const allSteps = [];\r\n\r\n this.allSteps.forEach((indexStep: PlanOrderProgressBarStep) => {\r\n if (indexStep.progressBarFlag) {\r\n allSteps.push(indexStep);\r\n }\r\n });\r\n\r\n return allSteps;\r\n }\r\n\r\n\r\n get currentStep(): PlanOrderProgressBarStep {\r\n return this.planOrderStepService.currentStep;\r\n }\r\n\r\n\r\n get currentVisibleStep(): PlanOrderProgressBarStep {\r\n return (this.currentStep ? this.visibleStepForStep(this.currentStep) : null);\r\n }\r\n\r\n\r\n // on init\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n // scroll to the current step in the progress bar\r\n ngAfterViewInit() {\r\n const divActive = document.getElementById('step-current');\r\n\r\n if (divActive) {\r\n divActive.scrollIntoView();\r\n }\r\n }\r\n\r\n\r\n\r\n // if we're displaying the plan number\r\n planNumberDisplay(): string {\r\n let displayFlag = this.displayPlanNumberFlag;\r\n\r\n\r\n // if this is a new plan\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n if (!application.planID) {\r\n displayFlag = false;\r\n }\r\n\r\n let planNumberDisplay: string = null;\r\n\r\n if (displayFlag) {\r\n planNumberDisplay = String(application.planID);\r\n }\r\n\r\n return planNumberDisplay;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // the user clicked a step\r\n didClickStep(step: PlanOrderProgressBarStep) {\r\n const currentStep = this.planOrderStepService.currentStep;\r\n const currentRoute = currentStep.route;\r\n\r\n const url = this.router.routerState.snapshot.url;\r\n\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, currentRoute);\r\n\r\n const newUrlSegment = new UrlSegment(step.route, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, newUrlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n // should demo mode be displayed?\r\n shouldDisplayDemoMode(): boolean {\r\n return this.planOrderApplication.demoModeFlag;\r\n }\r\n\r\n\r\n\r\n // should the progress bar be displayed?\r\n shouldDisplayProgressBar(): boolean {\r\n let displayFlag = true;\r\n\r\n const step = this.currentStep;\r\n\r\n // if the current step is not defined\r\n if (!step) {\r\n displayFlag = false;\r\n\r\n // if there is a current step\r\n } else {\r\n // if the current step is not displayed in the progress bar, and there is no alt step\r\n if (!step.progressBarFlag && !step.altStepCode) {\r\n displayFlag = false;\r\n }\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // returns the index of the step\r\n indexOfStepByCode(stepCode: string): number {\r\n let stepIndex: number = null;\r\n\r\n let stepCounter = 0;\r\n\r\n this.allSteps.forEach((indexStep: PlanOrderProgressBarStep) => {\r\n if (indexStep.code === stepCode) {\r\n stepIndex = stepCounter;\r\n }\r\n\r\n stepCounter++;\r\n });\r\n\r\n return stepIndex;\r\n }\r\n\r\n\r\n indexOfStep(step: PlanOrderProgressBarStep): number {\r\n let index: number = null;\r\n\r\n if (step) {\r\n index = this.indexOfStepByCode(step.code);\r\n }\r\n\r\n return index;\r\n }\r\n\r\n\r\n idForStep(step: PlanOrderProgressBarStep): string {\r\n let id = step.code;\r\n\r\n if (this.isStepCurrent(step)) {\r\n id = 'step-current';\r\n }\r\n\r\n return id;\r\n }\r\n\r\n\r\n\r\n // returns the visible step for the given step\r\n visibleStepForStep(step: PlanOrderProgressBarStep): PlanOrderProgressBarStep {\r\n let visibleStep = step;\r\n\r\n if (step.altStepCode) {\r\n const altStepIndex = this.indexOfStepByCode(step.altStepCode);\r\n\r\n visibleStep = this.allSteps[altStepIndex];\r\n }\r\n\r\n return visibleStep;\r\n }\r\n\r\n\r\n // returns the previous visible step\r\n previousVisibleStep(step: PlanOrderProgressBarStep): PlanOrderProgressBarStep {\r\n const visibleStep = this.visibleStepForStep(step);\r\n const visibleStepIndex = this.indexOfStep(visibleStep);\r\n\r\n let previousVisibleStep: PlanOrderProgressBarStep = null;\r\n\r\n let stepIteratorIndex = visibleStepIndex - 1;\r\n\r\n while (!previousVisibleStep && (stepIteratorIndex >= 0)) {\r\n const indexStep = this.allSteps[stepIteratorIndex];\r\n\r\n if (indexStep.progressBarFlag) {\r\n previousVisibleStep = indexStep;\r\n }\r\n\r\n stepIteratorIndex--;\r\n }\r\n\r\n return previousVisibleStep;\r\n }\r\n\r\n\r\n // returns the next visible step\r\n nextVisibleStep(step: PlanOrderProgressBarStep): PlanOrderProgressBarStep {\r\n const visibleStep = this.visibleStepForStep(step);\r\n const visibleStepIndex = this.indexOfStep(visibleStep);\r\n\r\n let nextVisibleStep: PlanOrderProgressBarStep = null;\r\n\r\n let stepIteratorIndex = visibleStepIndex + 1;\r\n\r\n while (!nextVisibleStep && (stepIteratorIndex < this.allSteps.length)) {\r\n const indexStep = this.allSteps[stepIteratorIndex];\r\n\r\n if (indexStep.progressBarFlag) {\r\n nextVisibleStep = indexStep;\r\n }\r\n\r\n stepIteratorIndex++;\r\n }\r\n\r\n return nextVisibleStep;\r\n }\r\n\r\n\r\n\r\n // is there a single step?\r\n isSingleStep(): boolean {\r\n return (this.allSteps.length === 1);\r\n }\r\n\r\n\r\n // is this the first step\r\n isFirstStep(step: PlanOrderProgressBarStep): boolean {\r\n const previousStep = this.previousVisibleStep(step);\r\n\r\n return !previousStep;\r\n }\r\n\r\n\r\n // is this the last step\r\n isLastStep(step: PlanOrderProgressBarStep): boolean {\r\n const nextStep = this.nextVisibleStep(step);\r\n\r\n return !nextStep;\r\n }\r\n\r\n\r\n // is this a pending step\r\n isStepPending(step: PlanOrderProgressBarStep): boolean {\r\n const visibleStep = this.visibleStepForStep(step);\r\n const visibleStepIndex = this.indexOfStep(visibleStep);\r\n\r\n const currentVisibleStepIndex = this.indexOfStep(this.currentVisibleStep);\r\n\r\n let isStepPending = false;\r\n\r\n // if the step is not enabled, it's pending\r\n if (!step.enabledFlag) {\r\n isStepPending = true;\r\n\r\n // if the current step is less than this step, it's pending\r\n } else if (currentVisibleStepIndex < visibleStepIndex) {\r\n isStepPending = true;\r\n }\r\n\r\n return isStepPending;\r\n }\r\n\r\n // is this the current step\r\n isStepCurrent(step: PlanOrderProgressBarStep): boolean {\r\n const visibleStep = this.visibleStepForStep(step);\r\n const visibleStepIndex = this.indexOfStep(visibleStep);\r\n\r\n const currentVisibleStepIndex = this.indexOfStep(this.currentVisibleStep);\r\n\r\n return (visibleStepIndex === currentVisibleStepIndex);\r\n }\r\n\r\n\r\n // is the previous step complete?\r\n isStepComplete(step: PlanOrderProgressBarStep): boolean {\r\n const visibleStep = this.visibleStepForStep(step);\r\n const visibleStepIndex = this.indexOfStep(visibleStep);\r\n\r\n const currentVisibleStepIndex = this.indexOfStep(this.currentVisibleStep);\r\n\r\n let isStepComplete = true;\r\n\r\n if (!step.enabledFlag) {\r\n isStepComplete = false;\r\n\r\n } else if (currentVisibleStepIndex <= visibleStepIndex) {\r\n isStepComplete = false;\r\n }\r\n\r\n return isStepComplete;\r\n }\r\n\r\n\r\n // is the previous step complete?\r\n isPreviousStepComplete(step: PlanOrderProgressBarStep): boolean {\r\n const visibleStep = this.visibleStepForStep(step);\r\n\r\n const previousVisibleStep = this.previousVisibleStep(visibleStep);\r\n\r\n let isPreviousStepComplete = false;\r\n\r\n if (previousVisibleStep) {\r\n const previousVisibleStepIndex = this.indexOfStep(previousVisibleStep);\r\n\r\n const currentVisibleStepIndex = this.indexOfStep(this.currentVisibleStep);\r\n\r\n isPreviousStepComplete = (previousVisibleStepIndex < currentVisibleStepIndex);\r\n\r\n isPreviousStepComplete = isPreviousStepComplete && previousVisibleStep.enabledFlag;\r\n }\r\n\r\n\r\n return isPreviousStepComplete;\r\n }\r\n\r\n\r\n // is the next step complete?\r\n isNextStepComplete(step: PlanOrderProgressBarStep): boolean {\r\n const visibleStep = this.visibleStepForStep(step);\r\n\r\n const nextVisibleStep = this.nextVisibleStep(visibleStep);\r\n const nextVisibleStepIndex = this.indexOfStep(nextVisibleStep);\r\n\r\n const currentVisibleStepIndex = this.indexOfStep(this.currentVisibleStep);\r\n\r\n let completeFlag = (nextVisibleStepIndex < currentVisibleStepIndex);\r\n\r\n if (nextVisibleStep && !nextVisibleStep.enabledFlag) {\r\n completeFlag = false;\r\n }\r\n\r\n return completeFlag;\r\n }\r\n\r\n\r\n // is the next step current?\r\n isNextStepCurrent(step: PlanOrderProgressBarStep): boolean {\r\n const visibleStep = this.visibleStepForStep(step);\r\n\r\n const nextVisibleStep = this.nextVisibleStep(visibleStep);\r\n const nextVisibleStepIndex = this.indexOfStep(nextVisibleStep);\r\n\r\n const currentVisibleStepIndex = this.indexOfStep(this.currentVisibleStep);\r\n\r\n return (nextVisibleStepIndex === currentVisibleStepIndex);\r\n }\r\n\r\n // is the next step enabled?\r\n isNextStepEnabled(step: PlanOrderProgressBarStep): boolean {\r\n const visibleStep = this.visibleStepForStep(step);\r\n\r\n const nextVisibleStep = this.nextVisibleStep(visibleStep);\r\n\r\n let enabled = false;\r\n\r\n if (nextVisibleStep) {\r\n enabled = nextVisibleStep.enabledFlag;\r\n }\r\n\r\n return enabled;\r\n }\r\n\r\n\r\n // returns the appropriate image for the step\r\n imageSrcForStep(step: PlanOrderProgressBarStep): string {\r\n const visibleStep = this.visibleStepForStep(step);\r\n\r\n const isFirstStep = this.isFirstStep(visibleStep);\r\n const isLastStep = this.isLastStep(visibleStep);\r\n const isStepCurrent = this.isStepCurrent(visibleStep);\r\n const isStepComplete = this.isStepComplete(visibleStep);\r\n const isStepEnabled = visibleStep.enabledFlag;\r\n const isNextStepEnabled = this.isNextStepEnabled(visibleStep);\r\n const isPreviousStepComplete = this.isPreviousStepComplete(visibleStep);\r\n\r\n // now build the image name\r\n let imageName = 'progress-';\r\n\r\n if (isFirstStep) {\r\n imageName += 'n';\r\n\r\n } else if (isPreviousStepComplete && isStepEnabled) {\r\n imageName += 'c';\r\n\r\n } else {\r\n imageName += 'p';\r\n }\r\n\r\n imageName += '-';\r\n\r\n if (isStepComplete) {\r\n imageName += 'complete';\r\n\r\n } else if (isStepCurrent) {\r\n imageName += 'current';\r\n\r\n } else {\r\n imageName += 'pending';\r\n }\r\n\r\n imageName += '-';\r\n\r\n if (isLastStep) {\r\n imageName += 'n';\r\n\r\n } else if (isStepComplete && isNextStepEnabled) {\r\n imageName += 'c';\r\n\r\n } else {\r\n imageName += 'p';\r\n }\r\n\r\n const imageSrc = this.progressBarImageService.base64ImageByName(imageName);\r\n\r\n return imageSrc;\r\n }\r\n\r\n\r\n // returns the image for the left of the step marker\r\n imageSrcForStepLineLeft(step: PlanOrderProgressBarStep): string {\r\n const visibleStep = this.visibleStepForStep(step);\r\n\r\n const isFirstStep = this.isFirstStep(visibleStep);\r\n const isPreviousStepComplete = this.isPreviousStepComplete(visibleStep);\r\n\r\n let imageName = '';\r\n\r\n if (isFirstStep) {\r\n imageName = 'clear-1x1';\r\n\r\n } else if (isPreviousStepComplete && step.enabledFlag) {\r\n imageName = 'progress-line-complete';\r\n\r\n } else {\r\n imageName = 'progress-line-pending';\r\n }\r\n\r\n const imageSrc = this.progressBarImageService.base64ImageByName(imageName);\r\n\r\n return imageSrc;\r\n }\r\n\r\n\r\n // returns the image for the right of the step marker\r\n imageSrcForStepLineRight(step: PlanOrderProgressBarStep): string {\r\n const visibleStep = this.visibleStepForStep(step);\r\n\r\n const isStepComplete = this.isStepComplete(visibleStep);\r\n const isLastStep = this.isLastStep(visibleStep);\r\n const isNextStepComplete = this.isNextStepComplete(visibleStep);\r\n const isNextStepCurrent = this.isNextStepCurrent(visibleStep);\r\n\r\n let imageName = '';\r\n\r\n if (isLastStep) {\r\n imageName = 'clear-1x1';\r\n\r\n } else if (isStepComplete && (isNextStepComplete || isNextStepCurrent)) {\r\n imageName = 'progress-line-complete';\r\n\r\n } else {\r\n imageName = 'progress-line-pending';\r\n }\r\n\r\n const imageSrc = this.progressBarImageService.base64ImageByName(imageName);\r\n\r\n return imageSrc;\r\n\r\n }\r\n\r\n\r\n // should the step link be enabled?\r\n shouldEnableStepLink(step: PlanOrderProgressBarStep): boolean {\r\n let enableLink = false;\r\n\r\n if (step.enabledFlag) {\r\n const stepIndex = this.indexOfStep(step);\r\n const currentStepIndex = this.indexOfStep(this.currentStep);\r\n\r\n if (stepIndex < currentStepIndex) {\r\n enableLink = true;\r\n }\r\n }\r\n\r\n return enableLink;\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Significant change in Zip Code\\r\\n
\\r\\n\\r\\n
\\r\\n Due to a significant change in Zip Code, click below to re-confirm product availability.\\r\\n
\\r\\n\\r\\n
\\r\\n {{validatedAddress.address}}
\\r\\n {{validatedAddress.city}}, {{validatedAddress.stateCode}} {{validatedAddress.zipCode}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n Zip Code does not match the City. Please update the City or Zip Code below, or confirm that this is correct.\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n {{this.existingPlanMessage}}\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n {{this.doNotRenewMessage}}\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
Validating Property Address, please wait...
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Enter the covered property address:\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n City and Zip Code are correct\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Change to:\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n {{indexCity.city}}, {{indexCity.stateCode}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Change to:\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n {{indexZipCode.zipCode}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \"div.address-form-row div.form-group{margin-bottom:0}div.city-zip-mismatch-update-container{max-height:200px;overflow-x:auto;overflow-y:auto}\\n\"","\r\nimport {Component, ElementRef, OnInit, ViewChild} from '@angular/core';\r\n\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {AddressValidateService} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {AddressValidateResult} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {PlanOrderProgress} from '../_models/plan-order-progress';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {Property} from '@orhp/phx-property-ui-module';\r\nimport {PropertyLookupService} from '@orhp/phx-property-ui-module';\r\nimport {PropertyLookupParams} from '@orhp/phx-property-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {AddressValidateRequest} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {PlanLookupService} from '@orhp/phx-plan-ui-module';\r\nimport {PlanLookupParams} from '@orhp/phx-plan-ui-module';\r\nimport {PlanDomainFactoryService} from '@orhp/phx-plan-ui-module';\r\nimport {PlanCounts} from '@orhp/phx-plan-ui-module';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {SystemMessageLookupService} from '@orhp/phx-system-ui-module';\r\nimport {SystemMessage} from '@orhp/phx-system-ui-module';\r\nimport {PropertyType} from '@orhp/phx-property-ui-module';\r\nimport {Address} from '@orhp/phx-common-ui-module';\r\nimport {ObservableUtility, RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {RegionLookupService} from '@orhp/phx-geography-ui-module';\r\nimport {Region} from '@orhp/phx-geography-ui-module';\r\nimport {CityLookupService} from '@orhp/phx-geography-ui-module';\r\nimport {City} from '@orhp/phx-geography-ui-module';\r\nimport {observable} from 'rxjs/symbol/observable';\r\nimport {ZipCodeLookupService} from '@orhp/phx-geography-ui-module';\r\nimport {CityZip} from '@orhp/phx-geography-ui-module';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\n\r\n@Component({\r\n selector: 'app-plan-order-property-address',\r\n templateUrl: './property-address.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './property-address.component.scss'\r\n ]\r\n})\r\n\r\nexport class PlanOrderPropertyAddressComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n addressValidationState: AddressValidationState = AddressValidationState.pending;\r\n\r\n userAddress: Address = null;\r\n\r\n addressValidationAttempted = false;\r\n addressValidationErrorMessage = null;\r\n\r\n validatedAddress: Address = null;\r\n\r\n originalProperty: Property = null;\r\n existingProperty: Property = null;\r\n propertyType: PropertyType = null;\r\n\r\n existingPlanMessage: string = null;\r\n doNotRenewMessage: string = null;\r\n\r\n cityZipCorrectFlag = false;\r\n\r\n citiesByZipCode: City[] = null;\r\n zipCodesByCity: CityZip[] = null;\r\n\r\n\r\n\r\n get userFieldsDisabled(): boolean {\r\n let disabledFlag = true;\r\n\r\n disabledFlag = disabledFlag && (this.addressValidationState !== AddressValidationState.cityZipMismatch);\r\n\r\n return disabledFlag;\r\n }\r\n\r\n\r\n @ViewChild('addressInput')\r\n addressInput: ElementRef;\r\n\r\n\r\n // constructor\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private systemService: PhxSystemService,\r\n private systemMessageLookupService: SystemMessageLookupService,\r\n private regionLookupService: RegionLookupService,\r\n private cityLookupService: CityLookupService,\r\n private zipCodeLookupService: ZipCodeLookupService,\r\n private addressValidateService: AddressValidateService,\r\n private propertyLookupService: PropertyLookupService,\r\n private planLookupService: PlanLookupService,\r\n private planDomainFactoryService: PlanDomainFactoryService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderStepService: PlanOrderStepService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n\r\n // on init\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'property-address');\r\n\r\n // duplicate the original property\r\n const property = this.planOrderApplication.property.duplicate();\r\n\r\n this.originalProperty = property;\r\n this.propertyType = property.propertyType;\r\n\r\n this.userAddress = new Address();\r\n\r\n this.userAddress.address = property.address;\r\n this.userAddress.city = property.city;\r\n this.userAddress.stateCode = property.stateCode;\r\n this.userAddress.zipCode = property.zipCode;\r\n\r\n this.addressInput.nativeElement.focus();\r\n this.addressInput.nativeElement.select();\r\n }\r\n\r\n\r\n // should the running message be displayed\r\n shouldDisplayRunningMessage(): boolean {\r\n return (this.addressValidationState === AddressValidationState.running);\r\n }\r\n\r\n\r\n // should the address validation error message be displayed\r\n shouldDisplayAddressValidationError(): boolean {\r\n return (this.addressValidationState === AddressValidationState.validationFailure);\r\n }\r\n\r\n\r\n // should the address validation success message be displayed\r\n shouldDisplayAddressValidationSuccess(): boolean {\r\n return (this.addressValidationState === AddressValidationState.validationSuccess);\r\n }\r\n\r\n\r\n // should the city zip confirm checkbox appear\r\n shouldDisplayCityZipConfirmCheckbox(): boolean {\r\n return (this.addressValidationState === AddressValidationState.cityZipMismatch);\r\n }\r\n\r\n\r\n // address validation attempted?\r\n addressValidationPrompt(): boolean {\r\n let flag = false;\r\n\r\n if (this.addressValidationState === AddressValidationState.validationFailure) {\r\n flag = true;\r\n }\r\n\r\n if (this.addressValidationState === AddressValidationState.validationSuccess) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n // was address validation successful?\r\n addressValidationSuccess(): boolean {\r\n return (this.addressValidationState === AddressValidationState.validationSuccess);\r\n }\r\n\r\n\r\n // validation user reponse handler\r\n validationResponseHandler(flag: boolean) {\r\n // if the user wants to continue\r\n if (flag) {\r\n // if the address is validated\r\n if (this.addressValidationState === AddressValidationState.validationSuccess) {\r\n this.continueWithValidatedAddress();\r\n\r\n // if the address is not validated\r\n } else if (this.addressValidationState === AddressValidationState.validationFailure) {\r\n this.continueWithUserAddress();\r\n }\r\n\r\n // if the user wants to cancel\r\n } else {\r\n this.didClickTryAgain();\r\n }\r\n }\r\n\r\n\r\n\r\n // validation failure handler\r\n continueWithUserAddress() {\r\n const newProperty = this.planOrderApplication.property.duplicate();\r\n\r\n newProperty.address = this.userAddress.address.toUpperCase();\r\n newProperty.city = this.userAddress.city.toUpperCase();\r\n newProperty.stateCode = this.userAddress.stateCode.toUpperCase();\r\n newProperty.zipCode = this.userAddress.zipCode.toUpperCase();\r\n newProperty.overrideValidationFlag = true;\r\n\r\n newProperty.validationAttemptedFlag = true;\r\n\r\n if (newProperty.hasUpdateFlag) {\r\n this.planOrderApplication.property = newProperty;\r\n }\r\n\r\n this.gotoNextStep();\r\n }\r\n\r\n\r\n\r\n // should the disallowed message be displayed\r\n shouldDisplayDoNotRenewMessage(): boolean {\r\n let displayFlag = true;\r\n\r\n if (this.addressValidationState !== AddressValidationState.doNotRenew) {\r\n displayFlag = false;\r\n }\r\n\r\n if (!this.doNotRenewMessage) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the existing plan message be displayed?\r\n shouldDisplayExistingPlanMessage(): boolean {\r\n let displayFlag = true;\r\n\r\n if (this.addressValidationState !== AddressValidationState.existingPlan) {\r\n displayFlag = false;\r\n }\r\n\r\n if (!this.existingPlanMessage) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the zip code change prompt be displayed?\r\n shouldDisplayRegionChangeMessage(): boolean {\r\n let displayFlag = false;\r\n\r\n displayFlag = displayFlag || (this.addressValidationState === AddressValidationState.regionChange);\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n // should the city change prompt be displayed?\r\n shouldDisplayCityZipMismatch(): boolean {\r\n let displayFlag = false;\r\n\r\n displayFlag = displayFlag || (this.addressValidationState === AddressValidationState.cityZipMismatch);\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // validate the street address\r\n shouldDisplayStreetAddressError(): boolean {\r\n return (this.addressValidationAttempted && !this.validateStreetAddress());\r\n }\r\n\r\n\r\n shouldDisplayCityError(): boolean {\r\n return (this.addressValidationAttempted && !this.validateCity());\r\n }\r\n\r\n\r\n shouldDisplayStateCodeError(): boolean {\r\n return (this.addressValidationAttempted && !this.validateStateCode());\r\n }\r\n\r\n\r\n shouldDisplayZipCodeError(): boolean {\r\n return (this.addressValidationAttempted && !this.validateZipCode());\r\n }\r\n\r\n\r\n // validate the street address\r\n validateStreetAddress(): boolean {\r\n return (this.userAddress.address.trim() !== '');\r\n }\r\n\r\n\r\n // validate the city\r\n validateCity(): boolean {\r\n return (this.userAddress.city.trim() !== '');\r\n }\r\n\r\n\r\n // validate the state\r\n validateStateCode(): boolean {\r\n return (this.userAddress.stateCode.trim() !== '');\r\n }\r\n\r\n\r\n // validate the zip\r\n validateZipCode(): boolean {\r\n return (this.userAddress.zipCode.trim() !== '');\r\n }\r\n\r\n\r\n addressSameAsProperty(address: Address, property: Property): boolean {\r\n // was the address changed?\r\n let addressChangeFlag = false;\r\n addressChangeFlag = addressChangeFlag || (property.address !== address.address);\r\n addressChangeFlag = addressChangeFlag || (property.city !== address.city);\r\n addressChangeFlag = addressChangeFlag || (property.stateCode !== address.stateCode);\r\n addressChangeFlag = addressChangeFlag || (property.zipCode !== address.zipCode);\r\n\r\n return !addressChangeFlag;\r\n }\r\n\r\n\r\n\r\n // validates the address\r\n didClickValidateAddress(): void {\r\n this.addressValidationAttempted = true;\r\n\r\n // was the address changed?\r\n const addressChangeFlag = !this.addressSameAsProperty(this.userAddress, this.originalProperty);\r\n\r\n const autoNextStep = !addressChangeFlag && this.originalProperty.validationAttemptedFlag;\r\n\r\n // if the address wasn't changed, skip validation\r\n if (autoNextStep) {\r\n this.gotoNextStep();\r\n\r\n // if the address has changed, perform validation\r\n } else {\r\n this.performAddressValidation();\r\n }\r\n }\r\n\r\n\r\n didClickCityZipCorrectFlag() {\r\n this.cityZipCorrectFlag = !this.cityZipCorrectFlag;\r\n }\r\n\r\n\r\n // returns an address object with validation\r\n addressForValidationPrompt(): Address {\r\n const address = (this.validatedAddress ? this.validatedAddress : new Address());\r\n\r\n return address;\r\n }\r\n\r\n\r\n\r\n didClickChooseCity(city: City) {\r\n this.userAddress.city = city.city;\r\n this.userAddress.stateCode = city.stateCode;\r\n\r\n this.performAddressValidation();\r\n }\r\n\r\n\r\n didClickChooseZipCode(cityZip: CityZip) {\r\n this.userAddress.zipCode = cityZip.zipCode;\r\n\r\n this.performAddressValidation();\r\n }\r\n\r\n\r\n\r\n\r\n // performs address validation\r\n performAddressValidation() {\r\n const cityZipCorrectFlag = this.cityZipCorrectFlag;\r\n\r\n this.cityZipCorrectFlag = false;\r\n\r\n // reset the existing property if one was found\r\n this.existingProperty = null;\r\n\r\n // are the address entries valid\r\n let validFlag = true;\r\n validFlag = validFlag && this.validateStreetAddress();\r\n validFlag = validFlag && this.validateCity();\r\n validFlag = validFlag && this.validateStateCode();\r\n validFlag = validFlag && this.validateZipCode();\r\n\r\n // if an address was entered\r\n if (validFlag) {\r\n this.addressValidationState = AddressValidationState.running;\r\n\r\n // validate the user address with the zip code\r\n this.validateAddress(true).subscribe((address: Address) => {\r\n // if the address did not validate, make sure the zip code is only 5 digits\r\n if (!address.validatedFlag) {\r\n address.zipCode = address.zipCode5;\r\n }\r\n\r\n this.validatedAddress = address;\r\n\r\n // perform a city/zip mismatch if the address didn't validate\r\n const cityZipMismatchObservable =\r\n (address.validatedFlag ?\r\n ObservableUtility.emptyObservable(false) :\r\n this.matchCityAgainstZip());\r\n\r\n cityZipMismatchObservable.subscribe((cityZipMismatchFlag: boolean) => {\r\n\r\n // look for an existing property\r\n this.performAddressLookup(address).subscribe((existingProperty: Property) => {\r\n\r\n // if an existing property returned\r\n if (existingProperty) {\r\n this.existingProperty = existingProperty;\r\n\r\n this.handleExistingPropertyValidation();\r\n\r\n // if there was a city/zip mismatch\r\n } else if (cityZipMismatchFlag) {\r\n // if the user has selected that the city and zip are correct\r\n if (cityZipCorrectFlag) {\r\n // continue with the user address\r\n this.continueWithUserAddress();\r\n\r\n } else {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/city-zip-mismatch');\r\n\r\n this.addressValidationState = AddressValidationState.cityZipMismatch;\r\n }\r\n\r\n // handle the address\r\n } else {\r\n this.handleAcceptedAddress();\r\n }\r\n });\r\n });\r\n\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // performs an address validation with or without zip code\r\n validateAddress(zipCodeFlag: boolean): Observable
{\r\n const observable = Observable.create((subscriber: Subscriber
) => {\r\n const request = new AddressValidateRequest();\r\n\r\n request.address = this.userAddress.address;\r\n\r\n if (zipCodeFlag) {\r\n request.zipCode = this.userAddress.zipCode5;\r\n\r\n } else {\r\n request.city = this.userAddress.city;\r\n request.stateCode = this.userAddress.stateCode;\r\n }\r\n\r\n // execute the address validation\r\n this.addressValidateService.validateAddress(request).subscribe((result: AddressValidateResult) => {\r\n let address: Address = null;\r\n\r\n // if the address is validated\r\n if (result.validatedFlag) {\r\n address = new Address();\r\n address.validatedFlag = true;\r\n\r\n address.address = result.cleanAddress;\r\n address.city = result.cleanCity;\r\n address.stateCode = result.cleanStateCode;\r\n address.zipCode = result.cleanZipCode;\r\n\r\n subscriber.next(address);\r\n subscriber.complete();\r\n\r\n // if the address is not validated and we haven't searched by zip code yet\r\n } else if (zipCodeFlag) {\r\n this.validateAddress(false).subscribe((noZipAddress: Address) => {\r\n subscriber.next(noZipAddress);\r\n subscriber.complete();\r\n\r\n });\r\n\r\n // if we're using the dirty address\r\n } else {\r\n address = new Address();\r\n address.validatedFlag = false;\r\n\r\n address.address = this.userAddress.address.toUpperCase();\r\n address.city = this.userAddress.city.toUpperCase();\r\n address.stateCode = this.userAddress.stateCode.toUpperCase();\r\n address.zipCode = this.userAddress.zipCode;\r\n\r\n subscriber.next(address);\r\n subscriber.complete();\r\n }\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n // perform a city lookup against the zip code\r\n matchCityAgainstZip(): Observable {\r\n const returnObservable = Observable.create((subscriber: Subscriber) => {\r\n\r\n let observable: Observable = null;\r\n const observables = [];\r\n\r\n // look for cities based on the zip\r\n observable = this.cityLookupService.fetchCities(this.userAddress.zipCode);\r\n observables.push(observable);\r\n\r\n // look for zips based on city\r\n observable = this.zipCodeLookupService.fetchZipCodes(this.userAddress.city, this.userAddress.stateCode);\r\n observables.push(observable);\r\n\r\n // perform the fetches\r\n Observable.forkJoin(observables).subscribe((results: any[]) => {\r\n const citiesByZipCode = results[0];\r\n const zipCodesByCity = results[1];\r\n\r\n // lets attempt to validate that the city and zip match base\r\n this.citiesByZipCode = citiesByZipCode;\r\n this.zipCodesByCity = zipCodesByCity;\r\n\r\n // look for a matching city\r\n let cityMatchFoundFlag = false;\r\n\r\n citiesByZipCode.forEach((indexCity: City) => {\r\n cityMatchFoundFlag = cityMatchFoundFlag || (indexCity.city.toUpperCase() === this.userAddress.city.toUpperCase());\r\n });\r\n\r\n // look for a matching zip code\r\n let zipMatchFoundFlag = false;\r\n\r\n zipCodesByCity.forEach((indexZip: CityZip) => {\r\n zipMatchFoundFlag = zipMatchFoundFlag || (indexZip.zipCode === this.userAddress.zipCode5);\r\n });\r\n\r\n // if there was a city/zip mismatch found\r\n let cityZipMismatchFlag = true;\r\n\r\n cityZipMismatchFlag = cityZipMismatchFlag && !cityMatchFoundFlag;\r\n cityZipMismatchFlag = cityZipMismatchFlag && !zipMatchFoundFlag;\r\n\r\n cityZipMismatchFlag = cityZipMismatchFlag && (!!citiesByZipCode.length || !!zipCodesByCity.length);\r\n\r\n subscriber.next(cityZipMismatchFlag);\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n\r\n return returnObservable;\r\n }\r\n\r\n\r\n\r\n // handles existing property validation\r\n handleExistingPropertyValidation() {\r\n const property = this.existingProperty;\r\n\r\n // if the property is DNR'd\r\n if (property.doNotRenewReasonID) {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/do-not-renew');\r\n\r\n // retrieve the system message\r\n this.systemMessageLookupService.systemMessageLookupByType('plan-order-dnr-property-message')\r\n .subscribe((systemMessage: SystemMessage) => {\r\n this.doNotRenewMessage = systemMessage.message;\r\n\r\n this.addressValidationState = AddressValidationState.doNotRenew;\r\n });\r\n\r\n // are there any disqualifying plans on the property?\r\n } else {\r\n const planLookupParams = this.planDomainFactoryService.newPlanLookupParams();\r\n\r\n planLookupParams.propertyID = property.propertyID;\r\n planLookupParams.toolboxNewPlanIneligibleFlag = true;\r\n\r\n if (this.planOrderApplication.planID) {\r\n planLookupParams.excludePlanID = String(this.planOrderApplication.planID);\r\n }\r\n\r\n this.planLookupService.fetchPlanCounts(planLookupParams).subscribe((counts: PlanCounts) => {\r\n\r\n let messageCode: string = null;\r\n\r\n // if unpaid or paid plans were returned\r\n if (counts.unpaidPlanCount || counts.paidPlanCount) {\r\n messageCode = 'plan-order-existing-plan-message';\r\n\r\n // if cancelled or expired plans were returned\r\n } else if (counts.expiredPlanCount || counts.cancelledPlanCount) {\r\n messageCode = 'plan-order-dnr-property-message';\r\n }\r\n\r\n\r\n // if we're returning a message\r\n if (messageCode) {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/' + messageCode);\r\n\r\n // retrieve the system message\r\n this.systemMessageLookupService.systemMessageLookupByType(messageCode)\r\n .subscribe((systemMessage: SystemMessage) => {\r\n\r\n this.existingPlanMessage = systemMessage.message;\r\n this.addressValidationState = AddressValidationState.existingPlan;\r\n });\r\n\r\n // if there were no plans\r\n } else {\r\n this.handleAcceptedAddress();\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n // performs a property address lookup\r\n performAddressLookup(address: Address): Observable {\r\n const params = new PropertyLookupParams();\r\n\r\n params.address = address.address;\r\n params.city = address.city;\r\n params.stateCode = address.stateCode;\r\n params.zipCode = address.zipCode;\r\n\r\n\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n // execute the property fetch\r\n this.propertyLookupService.fetchProperties(params).subscribe((properties: Property[]) => {\r\n let property: Property = null;\r\n\r\n // if a property was returned\r\n if (properties.length > 0) {\r\n property = properties[0];\r\n }\r\n\r\n subscriber.next(property);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n handleAcceptedAddress() {\r\n const sameAddressFlag = (this.validatedAddress.address.toLowerCase() === this.userAddress.address.toLowerCase());\r\n const sameCityFlag = (this.validatedAddress.city.toLowerCase() === this.userAddress.city.toLowerCase());\r\n const sameStateFlag = (this.validatedAddress.stateCode.toLowerCase() === this.userAddress.stateCode.toLowerCase());\r\n const sameZipFlag = (this.validatedAddress.zipCode5 === this.originalProperty.zipCode5);\r\n\r\n // test if we need to handle the zip code update\r\n const zipCodeUpdateObservable = (sameZipFlag ? ObservableUtility.emptyObservable(true) : this.handleZipCodeUpdate());\r\n\r\n zipCodeUpdateObservable.subscribe((zipOkayFlag: boolean) => {\r\n // if we can proceed\r\n if (zipOkayFlag) {\r\n // if the address is validated\r\n if (this.validatedAddress.validatedFlag) {\r\n // if the validated and user addresses are the same\r\n if (sameAddressFlag && sameCityFlag && sameStateFlag && sameZipFlag) {\r\n this.continueWithValidatedAddress();\r\n\r\n } else {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/address-validated');\r\n\r\n this.addressValidationState = AddressValidationState.validationSuccess;\r\n }\r\n\r\n // if the address is not validated\r\n } else {\r\n const addressMatchFlag = this.addressSameAsProperty(this.validatedAddress, this.originalProperty);\r\n\r\n let continueFlag = true;\r\n continueFlag = continueFlag && addressMatchFlag;\r\n continueFlag = continueFlag && this.originalProperty.validationAttemptedFlag;\r\n\r\n // if validation was already attempted, skip it\r\n if (continueFlag) {\r\n this.continueWithValidatedAddress();\r\n\r\n // if the validation was not attempted, display a message\r\n } else {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/address-not-validated');\r\n\r\n this.addressValidationState = AddressValidationState.validationFailure;\r\n }\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n handleZipCodeUpdate(): Observable {\r\n const returnObservable = Observable.create((subscriber: Subscriber) => {\r\n\r\n // fetch the region for the old and new zip code\r\n let observable: Observable = null;\r\n const observables = [];\r\n\r\n observable = this.regionLookupService.fetchRegion(this.originalProperty.zipCode5);\r\n observables.push(observable);\r\n\r\n observable = this.regionLookupService.fetchRegion(this.validatedAddress.zipCode5);\r\n observables.push(observable);\r\n\r\n Observable.forkJoin(observables).subscribe((results: any[]) => {\r\n const userRegion = results[0];\r\n const validatedRegion = results[1];\r\n\r\n // are the regions the same?\r\n let sameRegionFlag = false;\r\n\r\n if (userRegion && validatedRegion) {\r\n sameRegionFlag = userRegion.isEqual(validatedRegion);\r\n }\r\n\r\n // if the regions are the same, just continue\r\n if (sameRegionFlag) {\r\n subscriber.next(true);\r\n\r\n // if the regions aren't the same, prompt the user\r\n } else {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/region-change');\r\n\r\n this.addressValidationState = AddressValidationState.regionChange;\r\n\r\n subscriber.next(false);\r\n }\r\n\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n\r\n return returnObservable;\r\n }\r\n\r\n\r\n\r\n continueWithValidatedAddress() {\r\n const property = this.planOrderApplication.property.duplicate();\r\n\r\n if (this.existingProperty) {\r\n property.propertyID = this.existingProperty.propertyID;\r\n property.address = this.existingProperty.address;\r\n property.city = this.existingProperty.city;\r\n property.stateCode = this.existingProperty.stateCode;\r\n property.zipCode = this.existingProperty.zipCode;\r\n property.guid = this.existingProperty.guid;\r\n\r\n } else {\r\n property.address = this.validatedAddress.address;\r\n property.city = this.validatedAddress.city;\r\n property.stateCode = this.validatedAddress.stateCode;\r\n property.zipCode = this.validatedAddress.zipCode;\r\n\r\n property.overrideValidationFlag = true;\r\n }\r\n\r\n property.validationAttemptedFlag = true;\r\n\r\n if (property.hasUpdateFlag) {\r\n this.planOrderApplication.property = property;\r\n }\r\n\r\n this.gotoNextStep();\r\n }\r\n\r\n\r\n\r\n // try again\r\n didClickTryAgain() {\r\n this.addressValidationState = AddressValidationState.pending;\r\n\r\n this.addressValidationAttempted = false;\r\n }\r\n\r\n\r\n // update zip code\r\n didClickUpdateZipCode() {\r\n let propertyTypeResultCode = '';\r\n\r\n if (this.addressValidationState === AddressValidationState.regionChange) {\r\n const property = this.planOrderApplication.property.duplicate();\r\n\r\n property.address = this.validatedAddress.address;\r\n property.city = this.validatedAddress.city;\r\n property.stateCode = this.validatedAddress.stateCode;\r\n property.zipCode = this.validatedAddress.zipCode;\r\n\r\n this.planOrderApplication.property = property;\r\n\r\n this.persistPlanOrderApplication();\r\n\r\n propertyTypeResultCode = 'region-change';\r\n }\r\n\r\n\r\n let urlSegment: UrlSegment = null;\r\n const urlTree = this.urlSerializer.parse(this.router.routerState.snapshot.url);\r\n\r\n urlSegment = new UrlSegment('property-type', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n urlSegment = new UrlSegment(propertyTypeResultCode, {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n // persists and goto next step\r\n gotoNextStep() {\r\n // next step logic\r\n this.persistPlanOrderApplication();\r\n\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n\r\n let urlSegment: UrlSegment = null;\r\n const urlTree = this.urlSerializer.parse(this.router.routerState.snapshot.url);\r\n\r\n urlSegment = new UrlSegment(nextRoute, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n}\r\n\r\n\r\n\r\nenum AddressValidationState {\r\n pending = 10,\r\n running = 20,\r\n doNotRenew = 30,\r\n validationSuccess = 40,\r\n validationFailure = 50,\r\n existingPlan = 60,\r\n cityZipMismatch = 70,\r\n regionChange = 80\r\n}\r\n","\r\n\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderPropertyAddressResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plans\r\n if (!application.planID) {\r\n // verify that optional coverages has been completed\r\n if (!application.productCoverages) {\r\n redirectTo = 'optional-coverage';\r\n }\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'property-address');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n resolve(!redirectTo);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n We were unable to match the Property Address\\r\\n
\\r\\n\\r\\n
Zip Code Lookup
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Looking up Zip Code, please wait...\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Please correct the validation errors below\\r\\n
\\r\\n\\r\\n
Enter the Property Address:
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n We could not validate this address to USPS. Select a zip code from the list below:\\r\\n
\\r\\n\\r\\n
\\r\\n Multiple zip codes were found:\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{indexCityZip.city}}, {{indexCityZip.stateCode}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{indexCityZip.zipCode}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n Due to a significant change in Zip Code, click below to re-confirm product availability.\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n {{this.redlineMessage}}\\r\\n
\\r\\n\\r\\n
\\r\\n Please correct the validation errors below\\r\\n
\\r\\n\\r\\n
\\r\\n
Validating Zip Code
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n Please call {{appsPhoneNumber}} if:\\r\\n\\r\\n
    \\r\\n
  • Property is a multi-unit dwelling with 4+ units
  • \\r\\n
  • Property has multiple dwellings with one address
  • \\r\\n
  • The covered property is not in a resale transaction\\r\\n
  • \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Check here if this property is new construction\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\"","module.exports = \"@media (min-width: 993px){div.call-if-box{float:right;border:1px solid #aaaaaa;background-color:#eeeeee;padding:10px;border-radius:5px}}@media (max-width: 992px){div.call-if-box{margin-bottom:10px}}div.call-if-box ul{padding-left:0px;margin-bottom:0px}div.call-if-box ul li{list-style:none}input.form-zip-code{max-width:150px}@media (min-width: 993px){div.zip-code,div.property-type{width:50%}}div.zip-lookup-multiple-results{overflow-x:hidden;overflow-y:scroll}@media (min-width: 768px){div.zip-lookup-multiple-results{max-height:350px}}\\n\"","\r\nimport {Component, ElementRef, EventEmitter, OnInit, ViewChild} from '@angular/core';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PropertyType} from '@orhp/phx-property-ui-module';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {PropertyLookupValueService} from '@orhp/phx-property-ui-module';\r\nimport {NewConstructionFlag} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderLookupValueService} from '../_services/plan-order-lookup-value.service';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {Region} from '@orhp/phx-geography-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {RegionLookupService} from '@orhp/phx-geography-ui-module';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {CityLookupService} from '@orhp/phx-geography-ui-module';\r\nimport {City} from '@orhp/phx-geography-ui-module';\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {SystemMessageLookupService} from '@orhp/phx-system-ui-module';\r\nimport {SystemMessage} from '@orhp/phx-system-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {AddressValidateRequest, AddressValidateResult} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {AddressValidateService} from '@orhp/phx-addressvalidate-ui-module';\r\nimport {ZipCodeLookupService} from '@orhp/phx-geography-ui-module';\r\nimport {CityZip} from '@orhp/phx-geography-ui-module';\r\nimport {ArrayUtility} from '@orhp/phx-common-ui-module';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\nimport {Subscription} from 'rxjs/Rx';\r\nimport {ProductOffice, ProductOfficeToolbox} from '@orhp/phx-product-ui-module';\r\n\r\n@Component({\r\n selector: 'app-plan-order-property-type',\r\n templateUrl: './property-type.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './property-type.component.scss'\r\n ]\r\n})\r\n\r\nexport class PlanOrderPropertyTypeComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n private _zipCode = '';\r\n\r\n get zipCode(): string {\r\n return this._zipCode;\r\n }\r\n\r\n set zipCode(zipCode: string) {\r\n this._zipCode = String(zipCode);\r\n }\r\n\r\n selectedPropertyTypeCode: string = null;\r\n propertyTypes: PropertyType[] = null;\r\n\r\n selectedNewConstructionFlag: NewConstructionFlag = null;\r\n newConstructionFlags: NewConstructionFlag[] = null;\r\n\r\n userAttemptedSubmit = false;\r\n shouldNotSubmit = false;\r\n\r\n zipCodeErrorMessage: string = null;\r\n propertyTypeErrorMessage: string = null;\r\n newConstructionFlagErrorMessage: string = null;\r\n\r\n displayValidationErrorFlag = false;\r\n zipCodeValidationInProgress = false;\r\n region: Region = null;\r\n city: City = null;\r\n\r\n redlineMessage: string = null;\r\n\r\n zipLookupAddress = '';\r\n zipLookupCity = '';\r\n zipLookupStateCode = '';\r\n zipLookupCityZipResults: CityZip[] = null;\r\n\r\n zipValidatedAddress = '';\r\n zipValidatedCity = '';\r\n zipValidatedStateCode = '';\r\n zipValidatedZipCode = '';\r\n\r\n zipCodeLookupStatus = ZipCodeLookupStatus.none;\r\n\r\n zipCodeLookupSubscription: Subscription = null;\r\n\r\n @ViewChild('zipCodeInput')\r\n zipCodeInput: ElementRef;\r\n\r\n\r\n @ViewChild('zipLookupAddressInput')\r\n zipLookupAddressInput: ElementRef;\r\n\r\n\r\n\r\n get urlCode(): string {\r\n return this.route.snapshot.params['code'];\r\n }\r\n\r\n\r\n get productOfficeGroup(): ProductOffice {\r\n return this.planOrderAuthService.productOffice;\r\n }\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n return this.planOrderAuthService.productOfficeToolbox;\r\n }\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private systemService: PhxSystemService,\r\n private systemMessageLookupService: SystemMessageLookupService,\r\n private addressValidateService: AddressValidateService,\r\n private regionLookupService: RegionLookupService,\r\n private propertyLookupValueService: PropertyLookupValueService,\r\n private cityLookupService: CityLookupService,\r\n private zipCodeLookupService: ZipCodeLookupService,\r\n private planLookupValueService: PlanLookupValueService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private planOrderLookupValueService: PlanOrderLookupValueService,\r\n private planOrderStepService: PlanOrderStepService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.propertyTypes = this.propertyLookupValueService.propertyTypes;\r\n\r\n this.newConstructionFlags = this.planLookupValueService.newConstructionFlags;\r\n\r\n const property = this.planOrderApplication.property;\r\n\r\n this.zipCode = (property.zipCode || '').substr(0, 5);\r\n this.selectedPropertyTypeCode = (property.propertyType ? property.propertyType.propertyType : null);\r\n this.selectedNewConstructionFlag = this.planOrderApplication.newConstructionFlag;\r\n\r\n // if there's no selection, default to resale transaction\r\n if (!this.selectedNewConstructionFlag) {\r\n this.selectedNewConstructionFlag = ArrayUtility.arrayFind(\r\n this.newConstructionFlags,\r\n (testFlag: NewConstructionFlag): boolean => {\r\n return !testFlag.newConstructionFlag;\r\n }\r\n );\r\n }\r\n\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'property-type');\r\n\r\n if (this.zipCode === '') {\r\n this.zipCodeInput.nativeElement.focus();\r\n }\r\n }\r\n\r\n\r\n get appsPhoneNumber(): string {\r\n return this.planOrderAuthService.appsPhoneNumber;\r\n }\r\n\r\n\r\n shouldDisplayBackButton(): boolean {\r\n let flag = true;\r\n\r\n // if this is a new plan\r\n if (!this.planOrderApplication.planID) {\r\n // if there's only one transaction type available, don't display it\r\n const transactionTypes = this.planOrderLookupValueService.transactionTypesForDisplay();\r\n\r\n if ((transactionTypes || []).length <= 1) {\r\n flag = false;\r\n }\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayResaleTransactionHelpText(): boolean {\r\n const type = this.planOrderApplication.transactionType;\r\n\r\n let flag = true;\r\n\r\n if (type && type.directToConsumerFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n // should the zip code update message be displayed\r\n shouldDisplayRegionChangeMessage(): boolean {\r\n return (this.urlCode === 'region-change');\r\n }\r\n\r\n\r\n\r\n\r\n\r\n newConstructionFlagByBoolean(flag: boolean): NewConstructionFlag {\r\n return ArrayUtility.arrayFind(\r\n this.newConstructionFlags,\r\n (testFlag: NewConstructionFlag): boolean => {\r\n return (testFlag.newConstructionFlag === flag);\r\n }\r\n );\r\n }\r\n\r\n\r\n setNewConstruction(flag: boolean) {\r\n this.selectedNewConstructionFlag = this.newConstructionFlagByBoolean(flag);\r\n }\r\n\r\n\r\n isNewConstructionSelected(): boolean {\r\n return (this.selectedNewConstructionFlag === this.newConstructionFlagByBoolean(true));\r\n }\r\n\r\n\r\n\r\n // user clicked a New Construction answer\r\n didClickNewConstruction(): void {\r\n this.setNewConstruction(!this.isNewConstructionSelected());\r\n }\r\n\r\n\r\n shouldDisplayZipCodeLookup(): boolean {\r\n let displayFlag = false;\r\n\r\n displayFlag = displayFlag || (this.zipCodeLookupStatus === ZipCodeLookupStatus.addressPrompt);\r\n displayFlag = displayFlag || (this.zipCodeLookupStatus === ZipCodeLookupStatus.lookupInProgress);\r\n displayFlag = displayFlag || (this.zipCodeLookupStatus === ZipCodeLookupStatus.multipleZipsReturned);\r\n displayFlag = displayFlag || (this.zipCodeLookupStatus === ZipCodeLookupStatus.addressNotFound);\r\n displayFlag = displayFlag || (this.zipCodeLookupStatus === ZipCodeLookupStatus.zipSearchValidationFailure);\r\n displayFlag = displayFlag || (this.zipCodeLookupStatus === ZipCodeLookupStatus.lookupError);\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayZipCodeLookupForm(): boolean {\r\n let displayFlag = false;\r\n\r\n displayFlag = displayFlag || (this.zipCodeLookupStatus === ZipCodeLookupStatus.addressPrompt);\r\n displayFlag = displayFlag || (this.zipCodeLookupStatus === ZipCodeLookupStatus.addressNotFound);\r\n displayFlag = displayFlag || (this.zipCodeLookupStatus === ZipCodeLookupStatus.zipSearchValidationFailure);\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayZipCodeLookupInProgress(): boolean {\r\n return (this.zipCodeLookupStatus === ZipCodeLookupStatus.lookupInProgress);\r\n }\r\n\r\n\r\n shouldDisplayZipCodeLookupAddressNotFound(): boolean {\r\n return (this.zipCodeLookupStatus === ZipCodeLookupStatus.addressNotFound);\r\n }\r\n\r\n\r\n shouldDisplayMultipleZipsReturned(): boolean {\r\n return (this.zipCodeLookupStatus === ZipCodeLookupStatus.multipleZipsReturned);\r\n }\r\n\r\n\r\n shouldDisplayMultipleZipsAddressAttempted(): boolean {\r\n return (this.zipLookupAddress !== '');\r\n }\r\n\r\n\r\n zipCodeLookupCityError(): string {\r\n let error: string = null;\r\n\r\n const minCityLength = 3;\r\n\r\n if (this.zipLookupCity.length === 0) {\r\n error = 'City is required';\r\n\r\n } else if (this.zipLookupCity.length < minCityLength) {\r\n error = 'City must be at least ' + String(minCityLength) + ' characters';\r\n }\r\n\r\n return error;\r\n }\r\n\r\n\r\n shouldDisplayZipCodeLookupCityError(): boolean {\r\n let displayFlag = true;\r\n\r\n if (!this.zipCodeLookupCityError()) {\r\n displayFlag = false;\r\n }\r\n\r\n if (this.zipCodeLookupStatus !== ZipCodeLookupStatus.zipSearchValidationFailure) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n zipCodeLookupStateCodeError(): string {\r\n let error: string = null;\r\n\r\n if (this.zipLookupStateCode.length !== 2) {\r\n error = 'State Code is required';\r\n }\r\n\r\n return error;\r\n }\r\n\r\n\r\n shouldDisplayZipCodeLookupStateCodeError(): boolean {\r\n let displayFlag = true;\r\n\r\n if (!this.zipCodeLookupStateCodeError()) {\r\n displayFlag = false;\r\n }\r\n\r\n if (this.zipCodeLookupStatus !== ZipCodeLookupStatus.zipSearchValidationFailure) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayZipCodeLookupValidationFailure(): boolean {\r\n return (this.zipCodeLookupStatus === ZipCodeLookupStatus.zipSearchValidationFailure);\r\n }\r\n\r\n\r\n\r\n // the user clicked the zip code lookup button\r\n didClickZipCodeLookup() {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/zip-lookup');\r\n\r\n this.zipLookupAddress = '';\r\n this.zipLookupCity = '';\r\n this.zipLookupStateCode = '';\r\n\r\n this.zipCodeLookupStatus = ZipCodeLookupStatus.addressPrompt;\r\n\r\n setTimeout(() => {\r\n this.zipLookupAddressInput.nativeElement.focus();\r\n });\r\n }\r\n\r\n\r\n didClickPerformZipCodeLookup() {\r\n let validFlag = true;\r\n\r\n validFlag = validFlag && !this.zipCodeLookupCityError();\r\n validFlag = validFlag && !this.zipCodeLookupStateCodeError();\r\n\r\n if (validFlag) {\r\n this.zipCodeLookupStatus = ZipCodeLookupStatus.lookupInProgress;\r\n\r\n // if the user entered an address\r\n if (this.zipLookupAddress !== '') {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/zip-lookup/by-address');\r\n\r\n this.performZipCodeLookupByAddress();\r\n\r\n // if not, lookup by city\r\n } else {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/zip-lookup/by-city');\r\n\r\n this.performZipCodeLookupByCity();\r\n }\r\n\r\n } else {\r\n this.zipCodeLookupStatus = ZipCodeLookupStatus.zipSearchValidationFailure;\r\n }\r\n\r\n }\r\n\r\n\r\n performZipCodeLookupByAddress() {\r\n // perform an address validation\r\n const request = new AddressValidateRequest();\r\n\r\n request.address = this.zipLookupAddress.trim();\r\n request.city = this.zipLookupCity.trim();\r\n request.stateCode = this.zipLookupStateCode.trim();\r\n\r\n if (this.zipCodeLookupSubscription) {\r\n this.zipCodeLookupSubscription.unsubscribe();\r\n }\r\n\r\n this.zipCodeLookupSubscription = this.addressValidateService.validateAddress(request)\r\n .subscribe((result: AddressValidateResult) => {\r\n // if a clean zip code was found\r\n const cleanZipCode = (result.cleanZipCode || '').substr(0, 5);\r\n\r\n if (cleanZipCode !== '') {\r\n this.zipValidatedAddress = result.cleanAddress;\r\n this.zipValidatedCity = result.cleanCity;\r\n this.zipValidatedStateCode = result.cleanStateCode;\r\n this.zipValidatedZipCode = result.cleanZipCode;\r\n\r\n this.zipCode = cleanZipCode;\r\n\r\n this.zipCodeLookupStatus = ZipCodeLookupStatus.none;\r\n\r\n // if no exact match was found, try lookup by city\r\n } else {\r\n this.performZipCodeLookupByCity();\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n performZipCodeLookupByCity() {\r\n const city = this.zipLookupCity.trim();\r\n const stateCode = this.zipLookupStateCode.trim();\r\n\r\n this.zipCodeLookupSubscription = this.zipCodeLookupService.fetchZipCodes(city, stateCode)\r\n .subscribe((cityZips: CityZip[]) => {\r\n\r\n // if results were returned\r\n if (cityZips && cityZips.length) {\r\n\r\n // if there was one zip code\r\n if (cityZips.length === 1) {\r\n this.zipCode = cityZips[0].zipCode;\r\n\r\n this.zipCodeLookupStatus = ZipCodeLookupStatus.none;\r\n\r\n // if there were multiple zips returned\r\n } else {\r\n this.zipLookupCityZipResults = ArrayUtility.arrayDuplicate(cityZips);\r\n\r\n this.zipCodeLookupStatus = ZipCodeLookupStatus.multipleZipsReturned;\r\n }\r\n\r\n } else {\r\n this.zipCodeLookupStatus = ZipCodeLookupStatus.addressNotFound;\r\n }\r\n\r\n }, (error: Response) => {\r\n this.zipCodeLookupStatus = ZipCodeLookupStatus.addressNotFound;\r\n });\r\n }\r\n\r\n\r\n didClickZipCodeLookupSearchAgain() {\r\n this.zipCodeLookupStatus = ZipCodeLookupStatus.addressPrompt;\r\n\r\n setTimeout(() => {\r\n this.zipLookupAddressInput.nativeElement.focus();\r\n });\r\n }\r\n\r\n\r\n didClickCancelZipCodeLookup() {\r\n if (this.zipCodeLookupSubscription) {\r\n this.zipCodeLookupSubscription.unsubscribe();\r\n }\r\n\r\n this.zipCodeLookupStatus = ZipCodeLookupStatus.none;\r\n }\r\n\r\n\r\n didClickZipCodeLookupResult(cityZip: CityZip) {\r\n this.zipValidatedAddress = this.zipLookupAddress.toUpperCase();\r\n this.zipValidatedCity = cityZip.city.toUpperCase();\r\n this.zipValidatedStateCode = cityZip.stateCode.toUpperCase();\r\n this.zipValidatedZipCode = cityZip.zipCode;\r\n\r\n this.zipCode = cityZip.zipCode;\r\n\r\n this.zipCodeLookupStatus = ZipCodeLookupStatus.none;\r\n }\r\n\r\n\r\n /**\r\n * Filters property types for display purposes\r\n */\r\n propertyTypesToDisplay(): PropertyType[] {\r\n const productOffice = this.planOrderAuthService.productOffice;\r\n const productOfficePropertyTypes = (productOffice ? productOffice.propertyTypes : null) || [];\r\n\r\n const toolbox = this.planOrderAuthService.productOfficeToolbox;\r\n const existingProperty = this.planOrderApplication.property;\r\n const existingPropertyType = (existingProperty ? existingProperty.propertyType : null);\r\n\r\n const propertyTypes = this.propertyTypes.filter((ixPropertyType: PropertyType): boolean => {\r\n let flag = true;\r\n\r\n // if the product/office requires client-specific products only, and there are property types\r\n if (toolbox && toolbox.officeSpecificProductsOnlyFlag && productOfficePropertyTypes.length) {\r\n const found = !!productOfficePropertyTypes.filter((testPropertyType: string): boolean => {\r\n return (testPropertyType === ixPropertyType.propertyType) ||\r\n (existingPropertyType && !this.selectedPropertyTypeCode && (testPropertyType === existingPropertyType.propertyType));\r\n }).length;\r\n\r\n if (!found) {\r\n flag = false;\r\n }\r\n }\r\n\r\n return flag;\r\n });\r\n\r\n return propertyTypes;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // validates zip code\r\n validateZipCode(): Observable {\r\n const observable: Observable = Observable.create((subscriber) => {\r\n this.zipCodeErrorMessage = null;\r\n\r\n if (!StringUtility.validateZipCode(this.zipCode)) {\r\n this.zipCodeErrorMessage = 'Zip Code is required';\r\n }\r\n\r\n // if the zip code is valid\r\n if (!this.zipCodeErrorMessage) {\r\n this.zipCodeValidationInProgress = true;\r\n\r\n const cleanZip = this.zipCode.substr(0, 5);\r\n\r\n const observables: Observable[] = [];\r\n\r\n observables.push(this.regionLookupService.fetchRegion(cleanZip));\r\n observables.push(this.cityLookupService.fetchCities(cleanZip));\r\n\r\n Observable.forkJoin(observables).subscribe((results: any[]) => {\r\n const region = results[0];\r\n const cities = results[1];\r\n\r\n const city = (cities.length ? cities[0] : null);\r\n\r\n let redlineFlag = false;\r\n\r\n if (!region || !city) {\r\n this.zipCodeErrorMessage = 'Unable to locate Zip Code';\r\n\r\n } else {\r\n this.region = region;\r\n this.city = city;\r\n\r\n redlineFlag = region.redlineFlag;\r\n }\r\n\r\n // if this is a redline zip\r\n if (redlineFlag) {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/redline-zip');\r\n\r\n this.systemMessageLookupService.systemMessageLookupByType('plan-order-redline-message')\r\n .subscribe((systemMessage: SystemMessage) => {\r\n\r\n this.redlineMessage = systemMessage.message;\r\n\r\n this.zipCodeValidationInProgress = false;\r\n\r\n subscriber.next(false);\r\n subscriber.complete();\r\n });\r\n\r\n // if this is not a redline zip\r\n } else {\r\n this.zipCodeValidationInProgress = false;\r\n\r\n const validFlag = !this.zipCodeErrorMessage;\r\n\r\n subscriber.next(validFlag);\r\n subscriber.complete();\r\n }\r\n\r\n });\r\n\r\n // if the zip code is not valid\r\n } else {\r\n subscriber.next(false);\r\n subscriber.complete();\r\n }\r\n });\r\n\r\n\r\n return observable;\r\n }\r\n\r\n\r\n // should the redline error be displayed\r\n shouldDisplayRedlineError(): boolean {\r\n let displayFlag = true;\r\n\r\n if (this.region && !this.region.redlineFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n if (!this.redlineMessage) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the zip code error be displayed\r\n shouldDisplayZipCodeError(): boolean {\r\n return (this.userAttemptedSubmit && !!this.zipCodeErrorMessage);\r\n }\r\n\r\n\r\n // should the empty property type be displayed?\r\n shouldDisplayEmptyPropertyType(): boolean {\r\n let flag = true;\r\n\r\n if (this.planOrderApplication.property.propertyType) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n // validates the property type\r\n validatePropertyType(): boolean {\r\n let valid = true;\r\n\r\n const propertyType = this.propertyLookupValueService.propertyTypeByCode(this.selectedPropertyTypeCode);\r\n\r\n if (propertyType === null) {\r\n valid = false;\r\n\r\n this.propertyTypeErrorMessage = 'Property Type is required';\r\n }\r\n\r\n if (valid) {\r\n this.propertyTypeErrorMessage = null;\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n\r\n // should the property type error be displayed\r\n shouldDisplayPropertyTypeError(): boolean {\r\n return (this.userAttemptedSubmit && !!this.propertyTypeErrorMessage);\r\n }\r\n\r\n\r\n // validate new construction flag\r\n validateNewConstructionFlag(): boolean {\r\n let valid = true;\r\n\r\n if (!this.selectedNewConstructionFlag) {\r\n valid = false;\r\n\r\n this.newConstructionFlagErrorMessage = 'New Construction is required';\r\n }\r\n\r\n if (valid) {\r\n this.newConstructionFlagErrorMessage = null;\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n\r\n\r\n shouldDisplayNewConstructionQuestion(): boolean {\r\n let flag = true;\r\n\r\n // if a transaction type is defined\r\n if (this.planOrderApplication.transactionType) {\r\n flag = this.planOrderApplication.transactionType.promptForNewConstructionFlag;\r\n }\r\n\r\n // if a product office group is defined\r\n if (!!this.productOfficeToolbox && this.productOfficeToolbox.hideNewConstructionSelectionFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n shouldDisplayNewConstructionFlagError(): boolean {\r\n return (this.userAttemptedSubmit && !!this.newConstructionFlagErrorMessage);\r\n }\r\n\r\n\r\n shouldDisplayValidationError(): boolean {\r\n let displayFlag = this.displayValidationErrorFlag;\r\n\r\n if (this.region) {\r\n if (this.region.redlineFlag) {\r\n displayFlag = false;\r\n }\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n isConsumerSpecificOnly(): boolean {\r\n return !!this.productOfficeToolbox && !!this.productOfficeToolbox.autoLoginGuestGUID;\r\n }\r\n\r\n\r\n // user clicked the Next button\r\n didClickNextButton(boolValue: boolean): void {\r\n this.userAttemptedSubmit = true;\r\n\r\n let valid = true;\r\n\r\n if (!this.validateNewConstructionFlag()) {\r\n valid = false;\r\n }\r\n\r\n if (!this.validatePropertyType()) {\r\n valid = false;\r\n }\r\n\r\n this.planOrderApplication.directProcessFlag = !!this.productOfficeGroup && !!this.productOfficeGroup.homeBuyerEmailRequiredFlag;\r\n\r\n\r\n this.validateZipCode().subscribe((zipCodeValidationFlag: boolean) => {\r\n if (!zipCodeValidationFlag) {\r\n valid = false;\r\n }\r\n\r\n if (valid && !this.shouldNotSubmit) {\r\n this.shouldNotSubmit = true;\r\n this.gotoNextStep();\r\n\r\n // not valid\r\n } else if (!valid) {\r\n this.displayValidationErrorFlag = true;\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n gotoNextStep() {\r\n // update property detail\r\n const property = this.planOrderApplication.property.duplicate();\r\n const prevPropertyType = property.propertyType;\r\n\r\n\r\n // if the validated zip code matches the user zip code\r\n const validatedZipCode = (this.zipValidatedZipCode ? this.zipValidatedZipCode.substr(0, 5) : null);\r\n\r\n if (validatedZipCode === this.zipCode) {\r\n property.address = this.zipValidatedAddress;\r\n property.city = this.zipValidatedCity;\r\n property.stateCode = this.zipValidatedStateCode;\r\n property.zipCode = this.zipValidatedZipCode;\r\n\r\n // if the user didn't use the zip lookup\r\n } else {\r\n property.city = this.city.city.toUpperCase();\r\n property.stateCode = this.city.stateCode.toUpperCase();\r\n property.zipCode = this.zipCode;\r\n }\r\n\r\n // set the property type\r\n property.propertyType = this.propertyLookupValueService.propertyTypeByCode(this.selectedPropertyTypeCode);\r\n\r\n const newPropertyType = property.propertyType;\r\n\r\n // if the new property type is different from the previous property type, clear the product\r\n if (!newPropertyType.isEqual(prevPropertyType)) {\r\n this.planOrderApplication.product = null;\r\n }\r\n\r\n this.planOrderApplication.property = property;\r\n\r\n this.planOrderApplication.newConstructionFlag = this.selectedNewConstructionFlag;\r\n\r\n this.planOrderApplication.propertyRegionID = this.region.regionID;\r\n\r\n // next step logic\r\n this.persistPlanOrderApplication();\r\n\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n\r\n let urlSegment: UrlSegment = null;\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, 'property-type');\r\n\r\n urlSegment = new UrlSegment(nextRoute, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nenum ZipCodeLookupStatus {\r\n none = 100,\r\n addressPrompt = 200,\r\n lookupInProgress = 300,\r\n addressNotFound = 400,\r\n multipleZipsReturned = 500,\r\n zipSearchValidationFailure = 600,\r\n lookupError = 700\r\n}\r\n\r\n\r\n","\r\n\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderPropertyTypeResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plans, make sure transaction type is selected\r\n if (!application.planID) {\r\n if (!application.transactionType) {\r\n redirectTo = 'transaction-type';\r\n }\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'property-type');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n resolve(!redirectTo);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n","\r\nexport class PlanOrderReviewAgentType {\r\n\r\n static initiatingAgent = 10;\r\n static cooperatingAgent = 20;\r\n static closingOfficer = 30;\r\n static telemarketing = 40;\r\n\r\n\r\n get initiatingAgent(): number {\r\n return PlanOrderReviewAgentType.initiatingAgent;\r\n }\r\n\r\n\r\n get cooperatingAgent(): number {\r\n return PlanOrderReviewAgentType.cooperatingAgent;\r\n }\r\n\r\n\r\n get closingOfficer(): number {\r\n return PlanOrderReviewAgentType.closingOfficer;\r\n }\r\n\r\n\r\n get telemarketing(): number {\r\n return PlanOrderReviewAgentType.telemarketing;\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"\\r\\n
\\r\\n
\\r\\n \\r\\n {{agentText}}\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n No {{noAgentSelectedText}} Specified\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n {{customer.givenName}} {{customer.surName}}\\r\\n \\r\\n\\r\\n \\r\\n ({{listingSellingText}})\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n UNKNOWN\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Mobile: {{customer.mobilePhone.phoneNumber | phoneFormat}}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{employerDisplayName(employer)}}\\r\\n
\\r\\n\\r\\n {{employer.physicalAddress.address}}
\\r\\n {{employer.physicalAddress.city}},\\r\\n {{employer.physicalAddress.stateCode}}\\r\\n {{employer.physicalAddress.zipCode}}\\r\\n
\\r\\n\\r\\n
\\r\\n Main Phone: {{employer.mainPhone.phoneNumber | phoneFormat}}\\r\\n
\\r\\n\\r\\n
\\r\\n Main Fax: {{employer.mainFax.phoneNumber | phoneFormat}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".office-name{white-space:pre-line}\\n\"","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {PlanOrderApplication} from '../../_models';\r\nimport {ActivatedRoute, Router, UrlSerializer} from '@angular/router';\r\nimport {Customer, Employer, EmployerLookupService} from '@orhp/phx-customer-ui-module';\r\nimport {PlanOrderReviewAgentType} from './plan-order-review-agent-type';\r\nimport {PlanOrderAuthService} from '../../_services/plan-order-auth.service';\r\nimport {ProductOffice, ProductOfficeToolbox} from '@orhp/phx-product-ui-module';\r\n\r\n@Component({\r\n selector: 'app-plan-order-review-agent',\r\n templateUrl: './review-agent.component.html',\r\n styleUrls: [\r\n '../../plan-order.scss',\r\n '../review.component.scss',\r\n './review-agent.component.scss'\r\n ]\r\n})\r\n\r\nexport class PlanOrderReviewAgentComponent {\r\n\r\n @Input()\r\n canEditApplication: boolean;\r\n\r\n @Input()\r\n application: PlanOrderApplication;\r\n\r\n @Input()\r\n agentType: number;\r\n\r\n @Output()\r\n onEditAgent = new EventEmitter();\r\n\r\n\r\n\r\n get customer(): Customer {\r\n let customer: Customer = null;\r\n\r\n switch (this.agentType) {\r\n case PlanOrderReviewAgentType.initiatingAgent:\r\n customer = this.application.initiatingAgent;\r\n break;\r\n\r\n case PlanOrderReviewAgentType.cooperatingAgent:\r\n customer = this.application.cooperatingAgent;\r\n break;\r\n\r\n case PlanOrderReviewAgentType.closingOfficer:\r\n customer = this.application.closingAgent;\r\n break;\r\n\r\n case PlanOrderReviewAgentType.telemarketing:\r\n customer = this.application.telemarketingAgent;\r\n break;\r\n }\r\n\r\n return customer;\r\n }\r\n\r\n\r\n\r\n get listingSellingText(): string {\r\n let text: string = null;\r\n\r\n switch (this.agentType) {\r\n case PlanOrderReviewAgentType.initiatingAgent:\r\n text = (this.application.initiatingAgentListingFlag ? 'Listing' : 'Selling') + ' Agent';\r\n break;\r\n\r\n case PlanOrderReviewAgentType.cooperatingAgent:\r\n text = (this.application.cooperatingAgentListingFlag ? 'Listing' : 'Selling') + ' Agent';\r\n break;\r\n }\r\n\r\n if (!!text && (this.application.initiatingAgent.isEqualToCustomer(this.application.cooperatingAgent))) {\r\n text = 'Both Listing & Selling Agent';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n get employer(): Employer {\r\n let employer: Employer = null;\r\n\r\n switch (this.agentType) {\r\n case PlanOrderReviewAgentType.initiatingAgent:\r\n employer = this.application.initiatingAgentOffice;\r\n break;\r\n\r\n case PlanOrderReviewAgentType.cooperatingAgent:\r\n employer = this.application.cooperatingAgentOffice;\r\n break;\r\n\r\n case PlanOrderReviewAgentType.closingOfficer:\r\n employer = this.application.closingOffice;\r\n break;\r\n\r\n case PlanOrderReviewAgentType.telemarketing:\r\n employer = this.application.telemarketingAgentOffice;\r\n break;\r\n }\r\n\r\n return employer;\r\n }\r\n\r\n\r\n\r\n get agentText(): string {\r\n let agentText = '';\r\n\r\n if (this.isUserCustomer && !!this.customRoleDisplayText) {\r\n agentText = this.customRoleDisplayText;\r\n\r\n } else {\r\n switch (this.agentType) {\r\n case PlanOrderReviewAgentType.initiatingAgent:\r\n agentText = 'Initiating Agent';\r\n break;\r\n\r\n case PlanOrderReviewAgentType.cooperatingAgent:\r\n agentText = 'Cooperating Agent';\r\n break;\r\n\r\n case PlanOrderReviewAgentType.closingOfficer:\r\n agentText = 'Closing Officer';\r\n break;\r\n\r\n case PlanOrderReviewAgentType.telemarketing:\r\n agentText = 'Telemarketing Agent';\r\n\r\n break;\r\n }\r\n }\r\n\r\n return agentText;\r\n }\r\n\r\n\r\n\r\n get noAgentSelectedText(): string {\r\n let agentText = '';\r\n\r\n switch (this.agentType) {\r\n case PlanOrderReviewAgentType.initiatingAgent:\r\n case PlanOrderReviewAgentType.cooperatingAgent:\r\n case PlanOrderReviewAgentType.telemarketing:\r\n agentText = this.agentText;\r\n break;\r\n\r\n case PlanOrderReviewAgentType.closingOfficer:\r\n agentText = 'Closing Company';\r\n break;\r\n }\r\n\r\n return agentText;\r\n }\r\n\r\n\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n const productOffice = this.planOrderAuthService.productOffice;\r\n\r\n return (!!productOffice ? productOffice.toolbox : null);\r\n }\r\n\r\n\r\n\r\n get isUserCustomer(): boolean {\r\n let flag = false;\r\n\r\n if (!!this.customer && !!this.planOrderAuthService.customer) {\r\n flag = this.customer.isEqualToCustomer(this.planOrderAuthService.customer);\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n get customRoleDisplayText(): string {\r\n let text: string = null;\r\n\r\n if (!!this.productOfficeToolbox) {\r\n if ((this.productOfficeToolbox.customPlanRoleDisplayText || '') !== '') {\r\n text = this.productOfficeToolbox.customPlanRoleDisplayText;\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private employerLookupService: EmployerLookupService\r\n ) {\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // should the agent's name be displayed?\r\n shouldDisplayAgentName(): boolean {\r\n return !this.shouldDisplayUnknownClosingAgent();\r\n }\r\n\r\n\r\n // should UNKNOWN be displayed\r\n shouldDisplayUnknownClosingAgent(): boolean {\r\n let flag = false;\r\n\r\n if (this.agentType === PlanOrderReviewAgentType.closingOfficer) {\r\n if (this.customer && this.customer.unknownEscrowFlag) {\r\n flag = true;\r\n }\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n employerDisplayName(employer: Employer): string {\r\n return this.employerLookupService.employerDisplayName(employer);\r\n }\r\n\r\n\r\n\r\n\r\n didClickEditAgent() {\r\n this.onEditAgent.emit(this.agentType);\r\n }\r\n\r\n\r\n\r\n didClickEmailAddress(email: string) {\r\n const mailToUrl = 'mailto:' + encodeURIComponent(email);\r\n\r\n window.location.href = mailToUrl;\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"\"","module.exports = \"\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n Payment\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n Pay Later - Send {{invoiceDescription()}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{indexRecipient.emailAddress}}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n Pay Now\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Payment Plan:\\r\\n
\\r\\n\\r\\n
\\r\\n {{planOrderApplication.paymentPlan.internetDescription}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Card Holder:\\r\\n
\\r\\n\\r\\n
\\r\\n {{planOrderApplication.ccCardHolderName}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Credit Card #:\\r\\n
\\r\\n\\r\\n
\\r\\n {{planOrderApplication.ccNumber}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Expiration Date:\\r\\n
\\r\\n\\r\\n
\\r\\n {{planOrderApplication.ccExpirationMonth}}/{{planOrderApplication.ccExpirationYear}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n No credit card information provided\\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 {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {PlanOrderApplication} from '../../_models';\r\nimport {ArrayUtility, RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {ConfirmationAutoSendMode} from '../review.component';\r\nimport {CorrespondenceLookupValuesService, InvoiceCommunicationType} from '@orhp/phx-correspondence-ui-module';\r\nimport {ProductOffice} from '@orhp/phx-product-ui-module';\r\nimport {PlanOrderAuthService} from '../../_services/plan-order-auth.service';\r\nimport {PlanOrderPaymentComponent} from '../../payment/payment.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-review-payment',\r\n templateUrl: './review-payment.component.html',\r\n styleUrls: [\r\n '../../plan-order.scss',\r\n '../review.component.scss',\r\n './review-payment-component.scss'\r\n ]\r\n})\r\n\r\n\r\nexport class PlanOrderReviewPaymentComponent {\r\n\r\n @Input()\r\n canEditApplication: boolean;\r\n\r\n @Input()\r\n planOrderApplication: PlanOrderApplication;\r\n\r\n @Output()\r\n onEditEventEmitter = new EventEmitter();\r\n\r\n\r\n\r\n get productOfficeGroup(): ProductOffice {\r\n return this.planOrderAuthService.productOffice;\r\n }\r\n\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private correspondenceLookupValueService: CorrespondenceLookupValuesService\r\n ) {\r\n\r\n }\r\n\r\n\r\n\r\n didClickEditPayment() {\r\n this.onEditEventEmitter.emit(true);\r\n }\r\n\r\n\r\n\r\n shouldDisplayCreditCardDetail(): boolean {\r\n return ((this.planOrderApplication.creditCardGUID || '') !== '');\r\n }\r\n\r\n\r\n noCreditCardDetail(): boolean {\r\n return ((this.planOrderApplication.creditCardGUID || '') === '');\r\n }\r\n\r\n\r\n\r\n\r\n // what's the description we're using for the invoice\r\n invoiceDescription(): string {\r\n return PlanOrderPaymentComponent.invoiceDescriptionWithInfo(\r\n this.correspondenceLookupValueService,\r\n this.productOfficeGroup\r\n );\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n

\\r\\n {{titleText}}\\r\\n

\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \"button.btn-print-desktop,button.btn-email-desktop{width:120px}@media print{div.action-button-container button{display:none}}\\n\"","import {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-review-action-buttons',\r\n templateUrl: './review-action-buttons.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './review-action-buttons.component.scss'\r\n ]\r\n})\r\n\r\n\r\nexport class PlanOrderReviewActionButtonsComponent implements OnInit, OnDestroy {\r\n\r\n\r\n @Input() displayPrintButtonFlag = true;\r\n @Input() displayEmailButtonFlag = true;\r\n @Input() displayNewApplicationButtonFlag = true;\r\n @Input() mobileFlag = false;\r\n @Input() desktopFlag = false;\r\n @Input() titleText: string = null;\r\n\r\n @Output() onPrintButtonClick = new EventEmitter();\r\n @Output() onEmailButtonClick = new EventEmitter();\r\n @Output() onNewPlanButtonClick = new EventEmitter();\r\n @Output() onRouteToORHPClick = new EventEmitter();\r\n\r\n\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n\r\n\r\n shouldDisplayTitleText(): boolean {\r\n let flag = false;\r\n\r\n if ((this.titleText || '') !== '') {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n didClickPrintButton() {\r\n this.onPrintButtonClick.emit(true);\r\n }\r\n\r\n\r\n didClickSendEmails() {\r\n this.onEmailButtonClick.emit(true);\r\n }\r\n\r\n\r\n didClickNewPlanButton() {\r\n this.onNewPlanButtonClick.emit(true);\r\n }\r\n\r\n\r\n didClickRouteToORHP() {\r\n this.onRouteToORHPClick.emit(true);\r\n }\r\n\r\n}\r\n","import {Observable} from \"rxjs/Observable\";\r\nimport {CanDeactivate} from \"@angular/router\";\r\nimport {PlanOrderReviewComponent} from \"./review.component\";\r\nimport {Subscriber} from \"rxjs/Subscriber\";\r\n\r\n\r\nexport class PlanOrderReviewDeactivateGuard implements CanDeactivate {\r\n\r\n modalEventEmitterSubscription: Subscriber = null;\r\n\r\n canDeactivate(component: PlanOrderReviewComponent): Observable {\r\n\r\n const observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n // determine if we need to auto-send the confirmations on completion\r\n const autoSendFlag = component.shouldAutoSendConfirmation();\r\n\r\n // if we need to auto-send\r\n if (autoSendFlag) {\r\n // subscribe to confirmation email events\r\n this.modalEventEmitterSubscription = component.confirmationAutoSendEventEmitter\r\n .subscribe((resultFlag: boolean) => {\r\n\r\n // unsubscribe if we're moving onward\r\n if (resultFlag) {\r\n this.modalEventEmitterSubscription.unsubscribe();\r\n }\r\n\r\n subscriber.next(resultFlag);\r\n subscriber.complete();\r\n });\r\n\r\n // auto-send the confirmations\r\n component.autoSendConfirmation();\r\n\r\n // if we're not auto-sending\r\n } else {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{emailTitleLanguage}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Are you sure you want to resend the confirmation and premium invoice (if applicable)?\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
Sending Emails, please wait...
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{emailSuccessLanguage}}\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{emailFailureLanguage}}\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Resend Plan via Mail\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
Requesting Declaration of Coverage, please wait...
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Your request has been received.\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n There was a problem requesting the Declaration of Coverage to be sent.\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Send Invoice To\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n Transaction type is currently set to {{transactionType.description}}, but must be updated to {{transactionTypeInEscrow().description}} to continue.\\r\\n
\\r\\n\\r\\n
\\r\\n You will also be required to enter Closing Info.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{additionalEmailTitleText()}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n {{additionalEmailEntryErrorText()}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{additionalEmailInstructionText()}}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n

\\r\\n {{titleText}}\\r\\n

\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n An error has occurred while updating your Application\\r\\n\\r\\n
\\r\\n
  • \\r\\n {{indexError.message}} ({{indexError.identifier}})\\r\\n
  • \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n {{applicationFailedPaymentMessage()}}\\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n {{noEditingMessage()}}\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n \\r\\n Please confirm your order and click Submit Application below:\\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n Cancellation Information\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n By: {{cancelledByName()}}
    \\r\\n
    \\r\\n\\r\\n Date: {{this.planOrderApplication.planCancel.cancelDate | dateFormat }}
    \\r\\n Reason: {{this.cancelReasonText()}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Covered Property\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{this.property.address}}
    \\r\\n {{this.property.city}}, {{this.property.stateCode}} {{this.property.zipCode}}
    \\r\\n\\r\\n Property Type:\\r\\n {{this.propertyType.description}}\\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n {{coverageDelayText()}}\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Coverage Term\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{planOrderApplication.planCoverageStarts | dateFormat}} to\\r\\n {{planOrderApplication.planCoverageEnds | dateFormat}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n Coverage\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{this.product.productDescription}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{amountToDisplay(this.product.premium) | dollarFormatNoDecimal }}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n Optional Coverage\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n No optional coverage selected\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{indexCoverage.coverageDescription}}\\r\\n\\r\\n
    \\r\\n Expired on {{coverageExpirationDate(indexCoverage) | dateFormat}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n (Included)\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n {{amountToDisplay(this.planOrderApplication.totalPremiumForCoverage(indexCoverage)) | dollarFormatNoDecimal }}\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n {{amountToDisplay(sellersCoveragePremium(indexCoverage)) | dollarFormatOptionalDecimal}}\\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n / day\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{this.planOrderApplication.sellersCoverageDays()}}\\r\\n\\r\\n day\\r\\n days\\r\\n\\r\\n @\\r\\n ${{indexCoverage.premium | dollarFormatWithDecimal }} / day\\r\\n
    \\r\\n\\r\\n
    \\r\\n {{this.planOrderApplication.optionUnitsForCoverage(indexCoverage)}}\\r\\n unit\\r\\n 1\\\">units\\r\\n @\\r\\n ${{indexCoverage.premium | dollarFormatNoDecimal}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{displayTotalText()}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{amountToDisplay(this.planOrderApplication.coverageTotalPremium()) | dollarFormatOptionalDecimal}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Auto Renew?\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{displayAutoRenewYesOrNo()}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n Service History\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n No Service History for this Plan\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n {{indexServiceHistory.trade}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n ${{indexServiceHistory.amount | dollarFormatWithDecimal}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n Closing Information\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n No Closing Information Specified\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n File Number:\\r\\n \\r\\n\\r\\n
    \\r\\n {{this.planOrderApplication.closingFileNumber}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n Estimated Closing Date:\\r\\n \\r\\n\\r\\n
    \\r\\n {{this.planOrderApplication.estimatedClosingDate | dateFormat}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n Actual Closing Date:\\r\\n \\r\\n\\r\\n
    \\r\\n {{this.planOrderApplication.actualClosingDate | dateFormat}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n {{homeBuyerText()}}\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n No {{homeBuyerText()}}s Specified\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n {{indexCustomer.givenName}} {{indexCustomer.surName}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n Mailing address same as covered property address\\r\\n
    \\r\\n\\r\\n
    \\r\\n {{indexCustomer.address}}
    \\r\\n {{indexCustomer.city}}, {{indexCustomer.stateCode}} {{indexCustomer.zipCode}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n \\r\\n {{indexPhone.phoneType.description}}: {{indexPhone.phoneNumber | phoneFormat}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n Home Seller\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n No Home Sellers Specified\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n {{indexCustomer.givenName}} {{indexCustomer.surName}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n Mailing address same as covered property address\\r\\n
    \\r\\n\\r\\n
    \\r\\n {{indexCustomer.address}}
    \\r\\n {{indexCustomer.city}}, {{indexCustomer.stateCode}} {{indexCustomer.zipCode}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n \\r\\n {{indexPhone.phoneType.description}}: {{indexPhone.phoneNumber | phoneFormat}}\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Plan Number\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{this.formattedPlanID}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n Application Received\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{this.planOrderApplication.planReceivedDate | dateFormat}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Plan Summary\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Plan Total\\r\\n
    \\r\\n\\r\\n
    \\r\\n ${{amountToDisplay(this.planOrderApplication.coverageTotalPremium()) | dollarFormatOptionalDecimal}}\\r\\n
    {{displayFeeDuration()}}
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Trade Call Fee\\r\\n
    \\r\\n\\r\\n
    \\r\\n ${{this.product.tradeCallFee | dollarFormatNoDecimal}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Send Invoice To\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n {{invoiceRecipientText()}}\\r\\n \\r\\n\\r\\n \\r\\n Not Selected\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    Most Recent Invoice To
    \\r\\n\\r\\n
    \\r\\n {{lastInvoiceRecipientText()}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n Not Issued\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    Waiting For Invoice...
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n {{additionalEmailTitleText()}}\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n {{additionalEmailsText()}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n {{homeBuyerText()}} Mailing Address\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n {{this.planOrderApplication.mailingAddress.address}}
    \\r\\n {{this.planOrderApplication.mailingAddress.city}},\\r\\n {{this.planOrderApplication.mailingAddress.stateCode}}\\r\\n {{this.planOrderApplication.mailingAddress.zipCode}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Resend E-Cards\\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Please acknowledge, then click Submit Application:\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n I agree that:\\r\\n
    \\r\\n
    \\r\\n\\r\\n
      \\r\\n
    • I am the party identified herein, and I represent the office indicated.
    • \\r\\n
    • To the best of my knowledge:
    • \\r\\n\\r\\n
        \\r\\n
      • All information entered is true and correct.
      • \\r\\n
      • All covered home systems and appliances are in proper working order.
      • \\r\\n
      \\r\\n
    \\r\\n\\r\\n
    \\r\\n You must agree to the terms above by checking the box.\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n When you click\\r\\n \\r\\n Submit Application,\\r\\n \\r\\n\\r\\n your credit card will be charged\\r\\n \\r\\n ${{planOrderApplication.firstPaymentAmount | dollarFormatWithDecimal}}.\\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n {{indexMessage}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"button.btn-action-icon{background-color:rgba(255,255,255,0);border:0;font-size:1.6em;margin-left:10px;margin-right:10px;color:#012755}button.btn-action-icon:hover{color:black;cursor:pointer}button.btn-cancel-confirm,button.btn-cancel-hesitate{width:300px}button.btn-cancel-hesitate{color:#407442;background-color:#e0efd9;border-color:#d1e8c8}button.btn-cancel-hesitate:hover{color:#1a351a;background-color:#b0bfa9;border-color:#b0bfa9}button.btn-cancel-confirm{color:#a4343a;background-color:#f2d4d6;border-color:#ecbec0}button.btn-cancel-confirm:hover{color:#4b1616;background-color:#a58789;border-color:#a58789}@media print{button.btn-cancel-application{display:none}}button.btn-email-link{padding:0;margin:0}div.section{margin-bottom:10px}@media print{div.section{page-break-inside:avoid}}.section-header{font-size:1.2em;color:#012755}div.section-content{margin-left:20px}div.highlight-background{background-color:#FFFDDA}div.highlight-background-secondary{background-color:#eeeeee}div.card{margin-bottom:20px}div.card div.card-body{margin:5px}div.card div.card-body hr{margin-top:5px;margin-bottom:5px}button.btn-edit{background-color:rgba(255,255,255,0);border:0}button.btn-edit:hover{text-decoration:underline;cursor:pointer}button.btn-edit::before{font-size:0.8em;color:#003087;content:\\\"Edit\\\"}button.btn-edit::after{margin-left:10px;font-family:\\\"FontAwesome\\\";font-size:0.8em;color:#003087;content:\\\"\\\\f040\\\"}div.optional-coverage-row{margin-top:5px;margin-bottom:5px;padding-top:5px;padding-bottom:5px;border-top:1px solid #eee}div.optional-coverage-expired{font-style:italic;color:#999999;font-size:10pt}div.optional-coverage-price-included{font-style:italic;color:#999999}@media (max-width: 576px){div.optional-coverage-price-included{font-size:0.8em}}@media (max-width: 576px){div.optional-coverage-price-extra{width:100%}}@media (min-width: 577px){div.optional-coverage-price-extra{float:left;width:75px}}div.optional-coverage-price-extra div.optional-coverage-price-extra-amount{float:right}div.optional-coverage-price-extra::before{content:\\\"$\\\"}@media (max-width: 576px){div.optional-coverage-daily-generic{text-align:right}}@media (min-width: 577px){div.optional-coverage-daily-generic{float:left;margin-left:5px}}div.optional-coverage-total{border-top:1px solid #cccccc;margin-top:2px;padding-top:2px}div.sellers-coverage-cost{clear:left;font-size:0.8em;color:#999999}div.option-units{font-size:0.8em;color:#999999}div.customer-address-same-as-property{font-style:italic;color:#999999;font-size:10pt}hr{color:#eee;border-color:#eee;background-color:#eee}div.service-history-item{float:left;padding-right:20px}div.service-history-item div.service-history-trade{font-weight:bold}div.disclosure-title{color:#a4343a}div.disclosure-check::before{font-size:1.4em}\\n\"","\r\n\r\nimport {Component, ElementRef, EventEmitter, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {Customer, CustomerDomainFactoryService} from '@orhp/phx-customer-ui-module';\r\nimport {MarketSegment, ProductCoverage, ProductOffice, ProductOfficeToolbox} from '@orhp/phx-product-ui-module';\r\nimport {ActivatedRoute, Router, RouterState, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {ActivityResult, PremiumDurations, RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {PropertyType} from '@orhp/phx-property-ui-module';\r\nimport {Property} from '@orhp/phx-property-ui-module';\r\nimport {NewConstructionFlag, Plan, PlanDomainFactoryService, PlanLookupService} from '@orhp/phx-plan-ui-module';\r\nimport {Product} from '@orhp/phx-product-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {TransactionType} from '@orhp/phx-plan-ui-module';\r\nimport {TransactionRole} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderLookupService} from '../_services/plan-order-lookup.service';\r\nimport {PlanOrderDomainFactoryService} from '../_services/plan-order-domain-factory.service';\r\nimport {CustomerPhone} from '@orhp/phx-customer-ui-module';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {PlanUtility} from '@orhp/phx-plan-ui-module';\r\nimport {PlanStatus} from '@orhp/phx-plan-ui-module';\r\nimport {CancelReason} from '@orhp/phx-plan-ui-module';\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {PlanCancelService} from '@orhp/phx-plan-ui-module';\r\nimport {PlanCancelParams} from '@orhp/phx-plan-ui-module';\r\nimport {PlanCancel} from '@orhp/phx-plan-ui-module';\r\nimport {Relationship} from '@orhp/phx-plan-ui-module';\r\nimport {ProblemLookupService} from '@orhp/phx-claims-ui-module';\r\nimport {ProblemLookupParams} from '@orhp/phx-claims-ui-module';\r\nimport {Problem} from '@orhp/phx-claims-ui-module';\r\nimport {PlanConfirmationService} from '@orhp/phx-plan-ui-module';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {PlanInvoiceRecipient} from '@orhp/phx-plan-ui-module';\r\nimport {PlanInvoiceRecipientRelationship} from '@orhp/phx-plan-ui-module';\r\nimport {SystemMessageLookupService} from '@orhp/phx-system-ui-module';\r\nimport {SystemMessageLookupParams} from '@orhp/phx-system-ui-module';\r\nimport {SystemMessage, SystemMessageCriteria} from '@orhp/phx-system-ui-module';\r\nimport {PlanService} from '@orhp/phx-plan-ui-module';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {OfficeAgentLookupPersistenceService} from '../../office-agent-lookup/_services/persistence.service';\r\nimport {CustomerInvoiceLookupService, PlanInvoicePaymentResult} from '@orhp/phx-accounting-ui-module';\r\nimport {CustomerInvoice} from '@orhp/phx-accounting-ui-module';\r\nimport {CorrespondenceService} from '../../../user/_services/correspondence.service';\r\nimport {ArrayUtility} from '@orhp/phx-common-ui-module';\r\nimport {ActivityResultError} from '@orhp/phx-common-ui-module';\r\nimport {PhxDateService} from '@orhp/phx-common-ui-module';\r\nimport {PlanOption} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\nimport {PlanOrderReviewAgentType} from './agent/plan-order-review-agent-type';\r\nimport {PlanOrderPaymentComponent} from '../payment/payment.component';\r\nimport {CorrespondenceLookupValuesService, InvoiceCommunicationType} from '@orhp/phx-correspondence-ui-module';\r\nimport {DurationEnum} from '../_src/price-duration-enum';\r\nimport {PaymentPlanPayment} from '@orhp/phx-accounting-ui-module/_models/payment-plan-payment';\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-review',\r\n templateUrl: './review.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './review.component.scss'\r\n ]\r\n})\r\n\r\n\r\nexport class PlanOrderReviewComponent extends PlanOrderBaseComponent implements OnInit, OnDestroy {\r\n\r\n submitAttemptedFlag = false;\r\n disclosureFlag = false;\r\n\r\n\r\n private _randomPlanID: number = null;\r\n\r\n\r\n selectedCancelReasonCode: string = null;\r\n\r\n disallowEditFlag = false;\r\n\r\n sendEmailPageMode = SendEmailPageMode.none;\r\n\r\n resendDecSheetPageMode = ResendDecSheetPageMode.none;\r\n resendDecSheetConfirmationMessage: string = null;\r\n\r\n updateInvoiceRecipientMode = UpdateInvoiceRecipientMode.none;\r\n\r\n nextButtonTitle = 'Submit Application';\r\n\r\n footerMessages: string[] = null;\r\n\r\n premiumInvoiceRefreshTimeoutHandle: any = null;\r\n premiumInvoiceRefreshCounter = 0;\r\n premiumInvoiceMaxRefreshCount = 5;\r\n premiumInvoiceRefreshFlag = false;\r\n\r\n updateAdditionalEmailMessage: SystemMessage = null;\r\n updateAdditionalEmailMode = UpdateAdditionalEmailMode.none;\r\n\r\n @ViewChild('messageContainer')\r\n messageContainer: ElementRef;\r\n\r\n private _updateAdditionalEmailEditing = '';\r\n\r\n get updateAdditionalEmailEditing(): string {\r\n return this._updateAdditionalEmailEditing;\r\n }\r\n\r\n set updateAdditionalEmailEditing(value: string) {\r\n if (this._updateAdditionalEmailEditing !== value) {\r\n this._updateAdditionalEmailEditing = value;\r\n\r\n if (this.updateAdditionalEmailMode === UpdateAdditionalEmailMode.promptError) {\r\n this.updateAdditionalEmailMode = UpdateAdditionalEmailMode.promptUser;\r\n }\r\n }\r\n }\r\n\r\n\r\n canResendAnniversaryCard = false;\r\n canResendCongratulationsCard = false;\r\n\r\n emailTitleLanguage = '';\r\n emailSuccessLanguage = '';\r\n emailFailureLanguage = '';\r\n onEmailSendSuccess: Observable[] = [];\r\n\r\n confirmationSentFlag = this.planOrderApplication.confirmationSentFlag;\r\n confirmationAutoSendMode = ConfirmationAutoSendMode.none;\r\n confirmationAutoSendEventEmitter = new EventEmitter();\r\n\r\n saveErrors: ActivityResultError[] = null;\r\n\r\n planOrderReviewAgentTypes = new PlanOrderReviewAgentType();\r\n\r\n get planInvoicePaymentResult(): PlanInvoicePaymentResult {\r\n const ccPaymentResult = this.planOrderApplication.ccPaymentResult;\r\n\r\n return (ccPaymentResult ? ccPaymentResult.object : null);\r\n }\r\n\r\n\r\n get isAccountExecutive(): boolean {\r\n const role = this.planOrderApplication.planOrdererRole;\r\n\r\n let guestGUID = '';\r\n\r\n if (role !== null) {\r\n guestGUID = this.planOrderApplication.planOrdererRole.guestGUID;\r\n }\r\n\r\n const hasPlanID = this.planOrderApplication.planID !== null;\r\n const differentPlanAndCreatorGUIDS = (this.planOrderAuthService.guestGUID || '').toLowerCase() !== (guestGUID || '').toLowerCase();\r\n const planAndCreatorGUIDSAreNull = this.planOrderAuthService.guestGUID === null && guestGUID === '';\r\n const hasTerritories = (this.planOrderAuthService.aeTerritories || []).length > 0;\r\n\r\n\r\n\r\n if (hasPlanID && hasTerritories && ((this.planOrderAuthService.guestGUID !== null && differentPlanAndCreatorGUIDS )\r\n || (planAndCreatorGUIDSAreNull))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n\r\n }\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private urlSerializer: UrlSerializer,\r\n private modalProgressService: PhxModalProgressService,\r\n private systemMessageLookupService: SystemMessageLookupService,\r\n private problemLookupService: ProblemLookupService,\r\n private dateService: PhxDateService,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private planService: PlanService,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private planConfirmationService: PlanConfirmationService,\r\n private planLookupValueService: PlanLookupValueService,\r\n private planCancelService: PlanCancelService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderDomainFactoryService: PlanOrderDomainFactoryService,\r\n private planOrderLookupService: PlanOrderLookupService,\r\n private planLookupService: PlanLookupService,\r\n private planDomainFactoryService: PlanDomainFactoryService,\r\n private planOrderStepService: PlanOrderStepService,\r\n private customerInvoiceLookupService: CustomerInvoiceLookupService,\r\n private correspondenceLookupValueService: CorrespondenceLookupValuesService,\r\n private correspondenceService: CorrespondenceService) {\r\n super(planOrderService);\r\n\r\n }\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n // clear the office/agent lookup\r\n this.officeAgentLookupPersistenceService.clearPersistedValues();\r\n\r\n // set the current step is the review step\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'review');\r\n\r\n // if there was an error saving the application\r\n this.saveErrors = this.planOrderApplication.saveErrors;\r\n\r\n if (this.shouldDisplayErrorMessage()) {\r\n this.planOrderService.restorePlanOrderApplicationBackup();\r\n\r\n this.planOrderApplication.saveErrors = this.saveErrors;\r\n }\r\n\r\n // flag that all steps have been completed\r\n this.planOrderApplication.allStepsCompletedFlag = true;\r\n\r\n this.planOrderService.persistPlanOrderApplication();\r\n\r\n if (this.pageMode === PageMode.confirmNewPlan) {\r\n this.disallowEditFlag = true;\r\n }\r\n\r\n if (this.pageMode === PageMode.reviewNewPlan) {\r\n this.fetchReviewScreenFooterMessages();\r\n\r\n this.planOrderService.persistPlanOrderApplication();\r\n }\r\n\r\n this.planOrderService.backupPlanOrderApplication();\r\n\r\n\r\n\r\n // are we fetching the premium invoice?\r\n let shouldFetchPremiumInvoice = true;\r\n\r\n // if there is no invoice recipient\r\n if (!this.planOrderApplication.invoiceRecipient) {\r\n shouldFetchPremiumInvoice = false;\r\n }\r\n\r\n // if the confirmation has not been sent yet\r\n if (!this.planOrderApplication.confirmationSentFlag) {\r\n shouldFetchPremiumInvoice = false;\r\n }\r\n\r\n\r\n // only certain page modes\r\n if ((this.pageMode !== PageMode.confirmNewPlan) &&\r\n (this.pageMode !== PageMode.confirmUpdatePlan)) {\r\n shouldFetchPremiumInvoice = false;\r\n }\r\n\r\n\r\n // if the \"Send Invoice To\" is the same as \"Most Recent Invoice To\"\r\n if (this.invoiceRecipientText() === this.lastInvoiceRecipientText()) {\r\n shouldFetchPremiumInvoice = false;\r\n }\r\n\r\n\r\n // if the recipient does not have an email address\r\n const invoiceRecipientCustomerEmailFlag = this.invoiceRecipientHasEmailFlag();\r\n\r\n if (!invoiceRecipientCustomerEmailFlag) {\r\n shouldFetchPremiumInvoice = false;\r\n }\r\n\r\n\r\n if (shouldFetchPremiumInvoice) {\r\n this.fetchPremiumInvoice();\r\n }\r\n\r\n\r\n // load the additional email message\r\n this.fetchAdditionalEmailMessage();\r\n\r\n\r\n if (this.planOrderApplication.planID !== null) {\r\n this.correspondenceService.canResendAnniversaryCard(this.planOrderApplication.planID).subscribe(\r\n (r: boolean) => {\r\n this.canResendAnniversaryCard = r;\r\n }\r\n );\r\n\r\n this.correspondenceService.canResendCongratulationsCard(this.planOrderApplication.planID).subscribe(\r\n (r: boolean) => {\r\n this.canResendCongratulationsCard = r;\r\n }\r\n );\r\n }\r\n\r\n\r\n\r\n\r\n\r\n }\r\n\r\n\r\n\r\n ngOnDestroy() {\r\n clearTimeout(this.premiumInvoiceRefreshTimeoutHandle);\r\n }\r\n\r\n\r\n\r\n get pageMode(): PageMode {\r\n let pageMode: PageMode = null;\r\n\r\n if (this.planOrderApplication.demoModeSubmittedFlag) {\r\n pageMode = PageMode.confirmNewPlan;\r\n\r\n } else if (!this.planOrderApplication.planID) {\r\n pageMode = PageMode.reviewNewPlan;\r\n\r\n } else if (this.confirmMessageCode === 'confirm-new') {\r\n pageMode = PageMode.confirmNewPlan;\r\n\r\n } else if (this.confirmMessageCode === 'confirm-update') {\r\n pageMode = PageMode.confirmUpdatePlan;\r\n\r\n } else {\r\n pageMode = PageMode.reviewExistingPlan;\r\n }\r\n\r\n return pageMode;\r\n\r\n }\r\n\r\n\r\n\r\n get productOfficeGroup(): ProductOffice {\r\n return this.planOrderAuthService.productOffice;\r\n }\r\n\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n return this.planOrderAuthService.productOfficeToolbox;\r\n }\r\n\r\n\r\n get titleText(): string {\r\n let text: string = null;\r\n\r\n if (this.planOrderApplication.planCancel) {\r\n text = 'Application Cancelled';\r\n\r\n } else {\r\n switch (this.pageMode) {\r\n case PageMode.reviewNewPlan:\r\n text = 'Review Application';\r\n break;\r\n\r\n case PageMode.confirmNewPlan:\r\n text = 'Confirmation';\r\n break;\r\n\r\n case PageMode.confirmUpdatePlan:\r\n text = 'Confirmation';\r\n break;\r\n\r\n case PageMode.reviewExistingPlan:\r\n text = 'Review / Update';\r\n break;\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n get pathToReview(): string {\r\n return RoutingUtility.relativePathToUrlSegment(this.router, 'review');\r\n }\r\n\r\n\r\n get confirmMessageCode(): string {\r\n const messageCode = (this.route.snapshot.params['confirm-message'] || '').toLowerCase();\r\n\r\n return messageCode;\r\n }\r\n\r\n\r\n get confirmationMessage(): string {\r\n const messageCode = this.confirmMessageCode;\r\n\r\n let message: string = null;\r\n\r\n switch (messageCode) {\r\n case 'confirm-new':\r\n message = 'Thank you for choosing ORHP! ';\r\n\r\n if (!this.planOrderApplication.payNowFlag) {\r\n message += 'Confirmation and invoice emails/faxes have been sent to the appropriate parties.';\r\n\r\n } else {\r\n const firstPaymentAmount = (this.planInvoicePaymentResult ? this.planInvoicePaymentResult.transactionAmount : 0);\r\n\r\n message += 'We\\'ve charged your credit card $' +\r\n StringUtility.formatDollarWithDecimal(firstPaymentAmount) + '.';\r\n\r\n if (!!this.productOfficeGroup && this.productOfficeGroup.homeBuyerEmailRequiredFlag) {\r\n message = this.addEmailConfirmation(message);\r\n }\r\n\r\n message += '

    Look for an email containing your Declaration of Coverage - an important document that contains your ' +\r\n 'home warranty coverage details.';\r\n }\r\n\r\n break;\r\n\r\n case 'confirm-cancel':\r\n message = 'Your application has been cancelled';\r\n break;\r\n\r\n case 'confirm-update':\r\n // if the payment was confirmed successful\r\n const ccPaymentResult = this.planOrderApplication.ccPaymentResult;\r\n const planInvoicePaymentResult = (!!ccPaymentResult ? ccPaymentResult.object : null);\r\n\r\n if (!!planInvoicePaymentResult && planInvoicePaymentResult.successFlag) {\r\n message = 'Thank you for choosing ORHP! ';\r\n message += 'We\\'ve charged your credit card $' +\r\n StringUtility.formatDollarWithDecimal(planInvoicePaymentResult.transactionAmount) + '.';\r\n\r\n if (!!this.productOfficeGroup && this.productOfficeGroup.homeBuyerEmailRequiredFlag) {\r\n message = this.addEmailConfirmation(message);\r\n }\r\n\r\n message += '

    Look for an email containing your Declaration of Coverage - an important document that contains your ' +\r\n 'home warranty coverage details.';\r\n\r\n } else if (this.planOrderApplication.confirmationSentFlag) {\r\n message = 'Your application has been updated. Confirmation and invoice emails/faxes have been sent to the appropriate parties.';\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (!!message && !!this.messageContainer) {\r\n this.messageContainer.nativeElement.innerHTML = message;\r\n }\r\n\r\n return message;\r\n }\r\n\r\n\r\n\r\n\r\n get existingPlanFlag(): boolean {\r\n return !!this.planOrderApplication.planID;\r\n }\r\n\r\n\r\n // returns the formatted plan number\r\n get formattedPlanID(): string {\r\n let formattedPlanID = '';\r\n\r\n // if there is a plan number\r\n if (this.planOrderApplication.planID) {\r\n formattedPlanID = this.planOrderApplication.formattedPlanID;\r\n\r\n // if there is no plan number\r\n } else {\r\n if (!this._randomPlanID) {\r\n this._randomPlanID = Math.floor(Math.random() * 10000000);\r\n }\r\n\r\n formattedPlanID = 'D' + PlanUtility.formatPlanNumber(this._randomPlanID);\r\n }\r\n\r\n return formattedPlanID;\r\n }\r\n\r\n\r\n // returns the transaction type\r\n get transactionType(): TransactionType {\r\n const transactionType = this.planOrderApplication.transactionType;\r\n\r\n return transactionType;\r\n }\r\n\r\n\r\n\r\n // returns the role\r\n get role(): TransactionRole {\r\n const role = this.planOrderApplication.role;\r\n\r\n return role;\r\n }\r\n\r\n\r\n // returns the property\r\n get property(): Property {\r\n const property = this.planOrderApplication.property;\r\n\r\n return property;\r\n }\r\n\r\n\r\n // returns the property type\r\n get propertyType(): PropertyType {\r\n let propertyType: PropertyType = null;\r\n\r\n if (this.property && this.property.propertyType) {\r\n propertyType = this.property.propertyType;\r\n }\r\n\r\n return propertyType;\r\n }\r\n\r\n\r\n // returns the new construction flag\r\n get newConstructionFlag(): NewConstructionFlag {\r\n const newConstructionFlag = this.planOrderApplication.newConstructionFlag;\r\n\r\n return newConstructionFlag;\r\n }\r\n\r\n\r\n // returns the product\r\n get product(): Product {\r\n const product = this.planOrderApplication.product;\r\n\r\n return product;\r\n }\r\n\r\n\r\n // returns the market segment for the product\r\n get marketSegment(): MarketSegment {\r\n return this.product.marketSegment;\r\n }\r\n\r\n\r\n\r\n // returns optional coverage\r\n get optionalCoverages(): ProductCoverage[] {\r\n const optionalCoverages = [];\r\n\r\n const appCoverages = (this.planOrderApplication.productCoverages || []);\r\n\r\n appCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n if (indexCoverage.coverageType.optionalCoverageFlag) {\r\n optionalCoverages.push(indexCoverage);\r\n }\r\n });\r\n\r\n return optionalCoverages;\r\n }\r\n\r\n\r\n\r\n // returns home buyers\r\n get homeBuyers(): Customer[] {\r\n const customers = this.planOrderApplication.homeBuyers || [];\r\n\r\n return customers;\r\n }\r\n\r\n\r\n // returns home sellers\r\n get homeSellers(): Customer[] {\r\n const customers = this.planOrderApplication.homeSellers || [];\r\n\r\n return customers;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // fetches review screen messages\r\n fetchReviewScreenFooterMessages() {\r\n const params = new SystemMessageLookupParams();\r\n\r\n params.type = 'plan-order-review-footer-message';\r\n params.includeCriteriaFlag = true;\r\n\r\n this.systemMessageLookupService.systemMessageLookup(params).subscribe((systemMessages: SystemMessage[]) => {\r\n const messages = [];\r\n\r\n if (systemMessages) {\r\n systemMessages.forEach((indexSystemMessage: SystemMessage) => {\r\n let includeFlag = true;\r\n\r\n\r\n // if the system message has a state restriction\r\n if (indexSystemMessage.hasStateCodeCriteria()) {\r\n const stateCode = this.planOrderApplication.property.stateCode;\r\n\r\n if (!indexSystemMessage.hasStateCodeCriteria(stateCode)) {\r\n includeFlag = false;\r\n }\r\n }\r\n\r\n\r\n // if the system message has a property type restriction\r\n if (indexSystemMessage.hasPropertyTypeCriteria()) {\r\n const propertyType = this.planOrderApplication.property.propertyType;\r\n\r\n if (!indexSystemMessage.hasPropertyTypeCriteria(propertyType.propertyType)) {\r\n includeFlag = false;\r\n }\r\n }\r\n\r\n\r\n // if the system message has a display code restriction\r\n if (indexSystemMessage.hasDisplayCodeCriteria()) {\r\n let displayCodeFlag = false;\r\n\r\n this.planOrderApplication.productCoverages.forEach((indexCoverage: ProductCoverage) => {\r\n if (indexSystemMessage.hasDisplayCodeCriteria(indexCoverage.displayCode)) {\r\n displayCodeFlag = true;\r\n }\r\n });\r\n\r\n if (!displayCodeFlag) {\r\n includeFlag = false;\r\n }\r\n }\r\n\r\n // if we're including the system message\r\n if (includeFlag) {\r\n messages.push(indexSystemMessage.message);\r\n }\r\n });\r\n }\r\n\r\n this.footerMessages = messages;\r\n });\r\n }\r\n\r\n\r\n // fetches the customer invoice\r\n fetchPremiumInvoice() {\r\n // if the counter hasn't hit the maximum yet\r\n if (this.premiumInvoiceRefreshCounter <= this.premiumInvoiceMaxRefreshCount) {\r\n this.premiumInvoiceRefreshFlag = true;\r\n\r\n const planID = this.planOrderApplication.planID;\r\n\r\n const premiumInvoice = this.planOrderApplication.premiumInvoice;\r\n const lastInvoiceDelivery = (premiumInvoice ? premiumInvoice.lastInvoiceDelivery : null);\r\n const lastInvoiceDeliveryGUID = (lastInvoiceDelivery ? lastInvoiceDelivery.guid.toLowerCase() : null);\r\n\r\n // fetch the most recent premium invoice\r\n this.customerInvoiceLookupService.fetchPremiumInvoice(planID)\r\n .subscribe((invoice: CustomerInvoice) => {\r\n\r\n this.premiumInvoiceRefreshCounter++;\r\n\r\n const newInvoiceDelivery = (invoice ? invoice.lastInvoiceDelivery : null);\r\n const newInvoiceDeliveryGUID = (newInvoiceDelivery ? newInvoiceDelivery.guid.toLowerCase() : null);\r\n\r\n // is the new invoice delivery different?\r\n if (lastInvoiceDeliveryGUID !== newInvoiceDeliveryGUID) {\r\n this.premiumInvoiceRefreshFlag = false;\r\n\r\n this.planOrderApplication.premiumInvoice.lastInvoiceDelivery = newInvoiceDelivery;\r\n\r\n this.persistPlanOrderApplication();\r\n\r\n this.planOrderService.backupPlanOrderApplication();\r\n\r\n // if it is not different, try again after a pause\r\n } else {\r\n this.premiumInvoiceRefreshTimeoutHandle = setTimeout(() => {\r\n this.fetchPremiumInvoice();\r\n }, 5000);\r\n }\r\n });\r\n\r\n // if we've hit the maximum counter\r\n } else {\r\n this.premiumInvoiceRefreshFlag = false;\r\n }\r\n }\r\n\r\n\r\n shouldDisplayPremiumInvoiceLastSentTo(): boolean {\r\n let displayFlag = true;\r\n\r\n // if the refresh is displayed\r\n if (this.shouldDisplayPremiumInvoiceRefresh()) {\r\n displayFlag = false;\r\n }\r\n\r\n // if this is a new application\r\n if (!this.planOrderApplication.planID) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayPremiumInvoiceRefresh(): boolean {\r\n return this.premiumInvoiceRefreshFlag;\r\n }\r\n\r\n\r\n invoiceRecipientHasEmailFlag(): boolean {\r\n const customer = this.planOrderApplication.invoiceRecipientCustomer;\r\n let emailFlag = false;\r\n\r\n if (customer && customer.phones) {\r\n customer.phones.forEach((indexPhone: CustomerPhone) => {\r\n if (indexPhone.phoneType.emailFlag) {\r\n emailFlag = true;\r\n }\r\n });\r\n }\r\n\r\n return emailFlag;\r\n }\r\n\r\n\r\n\r\n fetchAdditionalEmailMessage() {\r\n let fetchFlag = false;\r\n fetchFlag = fetchFlag || (this.pageMode === PageMode.reviewNewPlan);\r\n fetchFlag = fetchFlag || (this.pageMode === PageMode.confirmNewPlan);\r\n\r\n if (!this.planOrderAuthService.employer) {\r\n fetchFlag = false;\r\n }\r\n\r\n if (fetchFlag) {\r\n\r\n const params = new SystemMessageLookupParams();\r\n params.type = 'plan-order-review-additional-emails';\r\n params.employerID = String(this.planOrderAuthService.employer.employerID);\r\n\r\n this.systemMessageLookupService.systemMessageLookup(params).subscribe((messages: SystemMessage[]) => {\r\n if ((messages || []).length) {\r\n this.updateAdditionalEmailMessage = messages[0];\r\n\r\n if (this.pageMode === PageMode.reviewNewPlan) {\r\n this.updateAdditionalEmailMode = UpdateAdditionalEmailMode.promptUser;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // should the footer messages be displayed\r\n shouldDisplayFooterMessages(): boolean {\r\n let displayFlag = true;\r\n\r\n if (this.footerMessages) {\r\n if (!this.footerMessages.length) {\r\n displayFlag = false;\r\n }\r\n\r\n } else {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n shouldDisplaySendDecSheetButton(): boolean {\r\n if (!!this.productOfficeToolbox && !this.productOfficeToolbox.allowPremiumPayLaterFlag) {\r\n\r\n return false;\r\n\r\n } else {\r\n const status = this.planOrderApplication.planStatus;\r\n\r\n const flag = (status ? status.canResendDecSheetFlag : false);\r\n\r\n return flag;\r\n }\r\n }\r\n\r\n\r\n shouldDisplaySendDecSheetModal(): boolean {\r\n return (this.resendDecSheetPageMode !== ResendDecSheetPageMode.none);\r\n }\r\n\r\n\r\n\r\n\r\n decSheetRecipientText(): string {\r\n let recipient = '';\r\n\r\n let homeBuyerFlag = false;\r\n\r\n if (this.planOrderApplication.homeBuyers.length) {\r\n const homeBuyer = this.planOrderApplication.homeBuyers[0];\r\n\r\n if (!this.isCustomerAddressSameAsProperty(homeBuyer)) {\r\n homeBuyerFlag = true;\r\n }\r\n }\r\n\r\n if (homeBuyerFlag) {\r\n recipient = 'buyer\\'s mailing address';\r\n\r\n } else {\r\n recipient = 'covered property address';\r\n }\r\n\r\n return recipient;\r\n }\r\n\r\n\r\n\r\n shouldDisplayDecSheetInProgress(): boolean {\r\n return (this.resendDecSheetPageMode === ResendDecSheetPageMode.inProgress);\r\n }\r\n\r\n\r\n shouldDisplayDecSheetSuccess(): boolean {\r\n return (this.resendDecSheetPageMode === ResendDecSheetPageMode.resendSuccess);\r\n }\r\n\r\n\r\n shouldDisplayDecSheetFailure(): boolean {\r\n return (this.resendDecSheetPageMode === ResendDecSheetPageMode.resendFailure);\r\n }\r\n\r\n didClickResendDecSheetConfirm(confirmFlag: boolean) {\r\n this.resendDecSheetPageMode = ResendDecSheetPageMode.none;\r\n }\r\n\r\n\r\n didClickResendDecSheet() {\r\n const planID = this.planOrderApplication.planID;\r\n\r\n this.resendDecSheetPageMode = ResendDecSheetPageMode.inProgress;\r\n\r\n const successMessageCode = 'resend-dec-sheet-confirmation-message';\r\n\r\n let observable: Observable = null;\r\n const observables = [];\r\n\r\n // resends the Dec Sheet\r\n observable = this.planService.resendDecSheet(planID);\r\n observables.push(observable);\r\n\r\n // returns the success message\r\n observable = this.systemMessageLookupService.systemMessageLookupByType(successMessageCode);\r\n observables.push(observable);\r\n\r\n // run the observables\r\n Observable.forkJoin(observables).subscribe((results: any[]) => {\r\n const decSheetResultFlag = results[0];\r\n const successMessage = results[1];\r\n\r\n // if the result was successful\r\n if (decSheetResultFlag) {\r\n this.resendDecSheetConfirmationMessage = successMessage.message;\r\n\r\n this.resendDecSheetPageMode = ResendDecSheetPageMode.resendSuccess;\r\n\r\n // if the result was unsuccessful\r\n } else {\r\n this.resendDecSheetPageMode = ResendDecSheetPageMode.resendFailure;\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n\r\n indexOfCustomer(customers: Customer[], customer: Customer): number {\r\n let foundIndex = -1;\r\n let customerIndex = 0;\r\n\r\n (customers || []).forEach((indexCustomer: Customer) => {\r\n if (indexCustomer === customer) {\r\n foundIndex = customerIndex;\r\n }\r\n\r\n customerIndex++;\r\n });\r\n\r\n return foundIndex;\r\n }\r\n\r\n\r\n\r\n\r\n doesCustomerHaveAddress(customer: Customer): boolean {\r\n return ((customer.address || '') !== '');\r\n }\r\n\r\n\r\n displayPhonesForCustomer(customer: Customer): CustomerPhone[] {\r\n const phones: CustomerPhone[] = [];\r\n\r\n customer.phones.forEach((indexPhone: CustomerPhone) => {\r\n let includePhoneFlag = false;\r\n\r\n includePhoneFlag = includePhoneFlag || ((indexPhone.formattedPhoneNumber || '') !== '');\r\n\r\n if (includePhoneFlag) {\r\n phones.push(indexPhone);\r\n }\r\n });\r\n\r\n return phones;\r\n }\r\n\r\n\r\n\r\n // can the application be edited\r\n canEditApplication(): boolean {\r\n let editFlag = false;\r\n\r\n // if this is a new application\r\n if (!this.planOrderApplication.planID) {\r\n editFlag = true;\r\n\r\n // if this is an existing application, check plan status\r\n } else {\r\n const planStatus = this.planOrderApplication.planStatus;\r\n\r\n if (planStatus && planStatus.editableFlag) {\r\n editFlag = true;\r\n }\r\n }\r\n\r\n if (this.disallowEditFlag) {\r\n editFlag = false;\r\n }\r\n\r\n return editFlag;\r\n }\r\n\r\n\r\n\r\n planStatusEditable(): boolean {\r\n const planStatus = this.planOrderApplication.planStatus;\r\n\r\n let flag = false;\r\n\r\n if (planStatus && planStatus.editableFlag) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n shouldDisplayNoEditingMessage(): boolean {\r\n return !!this.noEditingMessage();\r\n }\r\n\r\n\r\n noEditingMessage(): string {\r\n let message: string = null;\r\n\r\n const planStatus = this.planOrderApplication.planStatus;\r\n\r\n if (planStatus && !planStatus.editableFlag) {\r\n // if the plan has been cancelled\r\n if (this.planOrderApplication.planCancel) {\r\n message = 'This Application has been cancelled and cannot be modified';\r\n\r\n } else {\r\n message = 'This Application has been paid and cannot be modified';\r\n }\r\n }\r\n\r\n if (this.isAccountExecutive && message === null) {\r\n message = 'This App was not placed by you. You will not be able to edit Realtor information.';\r\n }\r\n\r\n // if there is already a confirmation message\r\n if (this.shouldDisplayConfirmationMessage()) {\r\n message = null;\r\n }\r\n\r\n return message;\r\n }\r\n\r\n\r\n\r\n shouldDisplayCombinedInstructionBox(): boolean {\r\n let flag = false;\r\n\r\n flag = flag || !this.savedPlanFlag();\r\n flag = flag || this.shouldDisplayCancelInfo();\r\n flag = flag || this.shouldDisplaySendDecSheetButton();\r\n flag = flag || this.shouldDisplayPlanListButton();\r\n flag = flag || !!this.combinedInstructionBoxText();\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n combinedInstructionBoxText(): string {\r\n let text: string = null;\r\n let testText: string = null;\r\n let flag = false;\r\n\r\n // test for product/office/group text\r\n if (!!this.productOfficeGroup) {\r\n testText = this.productOfficeGroup.invoiceCoverageTermHtml || '';\r\n\r\n flag = true;\r\n flag = flag && this.savedPlanFlag();\r\n flag = flag && (testText !== '');\r\n flag = flag && !this.product.effectiveDateDelay;\r\n }\r\n\r\n if (flag) {\r\n text = testText;\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // can the application be cancelled\r\n canCancelApplication(): boolean {\r\n let flag = this.canEditApplication();\r\n\r\n if (this.pageMode === PageMode.confirmNewPlan) {\r\n flag = false;\r\n\r\n } else if (this.pageMode === PageMode.reviewNewPlan) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayCancelInfo(): boolean {\r\n let displayFlag = true;\r\n\r\n if ((this.pageMode !== PageMode.confirmUpdatePlan) &&\r\n (this.pageMode !== PageMode.reviewExistingPlan)) {\r\n displayFlag = false;\r\n }\r\n\r\n if (!this.planOrderApplication.planCancel) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n cancelledByName(): string {\r\n let name: string = null;\r\n\r\n const cancelCustomerID = this.planOrderApplication.planCancel.customerID;\r\n\r\n this.planOrderApplication.customers.forEach((indexCustomer: Customer) => {\r\n if (indexCustomer.customerID === cancelCustomerID) {\r\n name = indexCustomer.fullName;\r\n }\r\n });\r\n\r\n if (!name) {\r\n const defaultHomeownerFlag = (this.planOrderApplication.defaultHomeownerCustomerID === cancelCustomerID);\r\n\r\n if (defaultHomeownerFlag) {\r\n name = 'HOMEOWNER';\r\n }\r\n }\r\n\r\n return name;\r\n }\r\n\r\n\r\n cancelReasonText(): string {\r\n const cancelReason = this.planOrderApplication.planCancel.cancelReason;\r\n\r\n let text = cancelReason.description;\r\n\r\n if (cancelReason.otherWarrantyCompanyNameFlag) {\r\n this.planLookupValueService.cancelReasons.forEach((indexCancelReason: CancelReason) => {\r\n if (indexCancelReason.otherWarrantyCompanyGenericFlag) {\r\n text = indexCancelReason.description + ' - ' + text;\r\n }\r\n });\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n // is this an existing plan\r\n savedPlanFlag(): boolean {\r\n let flag = false;\r\n\r\n // if the plan has been saved\r\n if (this.planOrderApplication.planID) {\r\n flag = true;\r\n }\r\n\r\n // if this is a demo mode submitted plan\r\n if (this.planOrderApplication.demoModeSubmittedFlag) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayConfirmationResendButton(): boolean {\r\n let flag = true;\r\n\r\n // if the credit card payment failed\r\n const paymentResult = this.planOrderApplication.ccPaymentResult;\r\n const invoicePaymentResult = (paymentResult ? paymentResult.object : null);\r\n const ccPaymentResult = (!!invoicePaymentResult ? invoicePaymentResult.creditCardSalesResult : null);\r\n\r\n if (ccPaymentResult && !ccPaymentResult.successFlag) {\r\n flag = false;\r\n }\r\n\r\n\r\n // if this step is confirm/new\r\n if (this.pageMode === PageMode.confirmNewPlan) {\r\n flag = false;\r\n }\r\n\r\n\r\n // only if an existing application has been updated\r\n if (this.planOrderApplication.confirmationSentFlag) {\r\n flag = false;\r\n }\r\n\r\n // if this is the review step for a new plan\r\n if (this.pageMode === PageMode.reviewNewPlan) {\r\n flag = false;\r\n }\r\n\r\n // if the plan is cancelled\r\n if (this.planOrderApplication.planCancel) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n // should the resend confirmation button include invoice text?\r\n shouldDisplayConfirmationResendButtonInvoiceText(): boolean {\r\n let flag = this.invoiceRecipientHasEmailFlag();\r\n\r\n // if a payment has been made, don't display it\r\n if (!!this.planInvoicePaymentResult && this.planInvoicePaymentResult.successFlag) {\r\n flag = false;\r\n }\r\n\r\n // if there are other invoice recipients, don't display it\r\n if (!!(this.planOrderApplication.premiumInvoiceRecipients || []).length) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n // should the plan number be displayed\r\n shouldDisplayPlanNumber(): boolean {\r\n return this.savedPlanFlag();\r\n }\r\n\r\n\r\n // should the transaction type section be displayed?\r\n shouldDisplayTransactionTypeSection(): boolean {\r\n // do not display for existing plans\r\n return !this.planOrderApplication.planID;\r\n }\r\n\r\n\r\n // should the role section be displayed?\r\n shouldDisplayRoleSection(): boolean {\r\n // do not display for existing plans\r\n return !this.planOrderApplication.planID;\r\n }\r\n\r\n\r\n\r\n // is the customer address the same as the property address?\r\n isCustomerAddressSameAsProperty(customer: Customer): boolean {\r\n return this.planOrderApplication.customerHasPropertyAddress(customer);\r\n }\r\n\r\n\r\n\r\n shouldDisplayCoverageTerm(): boolean {\r\n let flag = !!this.planOrderApplication.planCoverageStarts && !!this.planOrderApplication.planCoverageEnds;\r\n\r\n if (!!this.planOrderApplication.planCancel) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n shouldDisplayCoverageDelayText(): boolean {\r\n return !!this.coverageDelayText();\r\n }\r\n\r\n\r\n\r\n\r\n\r\n coverageDelayText(): string {\r\n const product = this.planOrderApplication.product;\r\n const text = PlanOrderPaymentComponent.coverageDelayTextWithProduct(product, this.planOrderAuthService.productOffice);\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // should the No Optional Coverage message be displayed?\r\n shouldDisplayNoOptionalCoverageMessage(): boolean {\r\n return !this.optionalCoverages.length;\r\n }\r\n\r\n\r\n // is this coverage sellers coverage?\r\n isSellersCoverage(coverage: ProductCoverage): boolean {\r\n return coverage.coverageType.sellerCoverageFlag;\r\n }\r\n\r\n\r\n\r\n sellersCoveragePremium(indexCoverage: ProductCoverage): number {\r\n const sellersCoverageDays = this.planOrderApplication.sellersCoverageDays();\r\n\r\n let dayFlag = true;\r\n dayFlag = dayFlag && (sellersCoverageDays > 0);\r\n dayFlag = dayFlag && (sellersCoverageDays < indexCoverage.durationQty);\r\n\r\n let premium: number = null;\r\n\r\n if (dayFlag) {\r\n premium = this.planOrderApplication.sellersCoveragePremium();\r\n\r\n } else {\r\n premium = indexCoverage.premium;\r\n }\r\n\r\n return premium;\r\n }\r\n\r\n\r\n\r\n // should display premium per day\r\n shouldDisplayPremiumPerDayText(coverage: ProductCoverage): boolean {\r\n let displayFlag = true;\r\n\r\n if (!coverage.coverageType.sellerCoverageFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n if (coverage.includedCoverageFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n if (!coverage.dailyFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n // test for sellers coverage days\r\n const sellersCoverageDays = this.planOrderApplication.sellersCoverageDays() || 0;\r\n\r\n if ((sellersCoverageDays !== 0) && (sellersCoverageDays !== coverage.durationQty)) {\r\n displayFlag = false;\r\n }\r\n\r\n\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the sellers coverage subtitle be displayed\r\n shouldDisplaySellersCoverageSubtitle(coverage: ProductCoverage): boolean {\r\n let displayFlag = true;\r\n\r\n // test for sellers coverage type\r\n if (!coverage.coverageType.sellerCoverageFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n // test for included sellers coverage\r\n if (coverage.includedCoverageFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n // if the coverage isn't daily\r\n if (!coverage.dailyFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n // test for sellers coverage days\r\n const sellersCoverageDays = this.planOrderApplication.sellersCoverageDays() || 0;\r\n\r\n if (sellersCoverageDays === 0) {\r\n displayFlag = false;\r\n }\r\n\r\n if (sellersCoverageDays === coverage.durationQty) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n // should the option units be displayed?\r\n shouldDisplayOptionUnits(coverage: ProductCoverage): boolean {\r\n let displayFlag = true;\r\n\r\n if (!coverage.optionUnitsEditableFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n if (coverage.includedCoverageFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n if (coverage.coverageType.sellerCoverageFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n\r\n // property type\r\n const propertyType = this.planOrderApplication.property.propertyType;\r\n\r\n if (!propertyType.multipleOptionUnitFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // option expiration date\r\n coverageExpirationDate(coverage: ProductCoverage): Date {\r\n const planOption = ArrayUtility.arrayFind(this.planOrderApplication.planOptions,\r\n (option: PlanOption): boolean => {\r\n return (option.coverageID === coverage.coverageID);\r\n });\r\n\r\n const optionCoverageEnds = (planOption ? planOption.optionCoverageEnds : null);\r\n\r\n return optionCoverageEnds;\r\n }\r\n\r\n\r\n // is the coverage expired?\r\n isCoverageExpired(coverage: ProductCoverage): boolean {\r\n let expiredFlag = false;\r\n\r\n const optionCoverageEnds = this.coverageExpirationDate(coverage);\r\n\r\n const planStatus = this.planOrderApplication.planStatus;\r\n const activeFlag = (planStatus ? (planStatus.buyerActiveFlag || planStatus.sellerActiveFlag) : false);\r\n\r\n if (optionCoverageEnds && activeFlag) {\r\n const currentDate = this.dateService.currentDate();\r\n\r\n if (optionCoverageEnds.getTime() < currentDate.getTime()) {\r\n expiredFlag = true;\r\n }\r\n }\r\n\r\n return expiredFlag;\r\n }\r\n\r\n\r\n\r\n // should the service history be displayed?\r\n shouldDisplayServiceHistory(): boolean {\r\n let displayFlag = true;\r\n\r\n if (!this.planOrderApplication.planClaimHistory) {\r\n displayFlag = false;\r\n }\r\n\r\n if (this.pageMode === PageMode.reviewNewPlan) {\r\n displayFlag = false;\r\n }\r\n\r\n if (this.pageMode === PageMode.confirmNewPlan) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the no service message be displayed?\r\n shouldDisplayNoServiceHistoryMessage(): boolean {\r\n let displayFlag = true;\r\n\r\n if (this.planOrderApplication.planClaimHistory) {\r\n displayFlag = displayFlag && (this.planOrderApplication.planClaimHistory.length === 0);\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n\r\n // should the initiating agent be editable?\r\n canEditInitiatingAgent(): boolean {\r\n let editFlag = this.canEditApplication();\r\n\r\n // if this is an existing plan\r\n const newPlanFlag = !this.planOrderApplication.planID;\r\n\r\n if (!newPlanFlag) {\r\n // if the Market Segment doesn't allow it\r\n const marketSegment = this.product.marketSegment;\r\n\r\n if (!marketSegment.promptForInitiatingAgentFlag) {\r\n editFlag = false;\r\n }\r\n }\r\n\r\n if (this.isAccountExecutive) {\r\n editFlag = false;\r\n }\r\n\r\n return editFlag;\r\n }\r\n\r\n\r\n\r\n\r\n // should the cooperating agent be editable?\r\n canEditCooperatingAgent(): boolean {\r\n let editFlag = this.canEditApplication();\r\n\r\n const newPlanFlag = !this.planOrderApplication.planID;\r\n\r\n // if this is a new plan\r\n if (newPlanFlag) {\r\n if (!this.planOrderStepService.promptForCooperatingAgent(this.planOrderApplication)) {\r\n editFlag = false;\r\n }\r\n\r\n // if this is not a new plan\r\n } else {\r\n // if the Market Segment doesn't allow it\r\n const marketSegment = this.product.marketSegment;\r\n\r\n if (!marketSegment.promptForCooperatingAgentFlag) {\r\n editFlag = false;\r\n }\r\n }\r\n\r\n if (this.isAccountExecutive) {\r\n editFlag = false;\r\n }\r\n\r\n return editFlag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayInitiatingAgentSection(): boolean {\r\n let flag = true;\r\n\r\n if (!!this.planOrderApplication.transactionType && this.planOrderApplication.transactionType.directToConsumerFlag) {\r\n flag = false;\r\n }\r\n\r\n if (this.marketSegment.directFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayCooperatingAgentSection(): boolean {\r\n let flag = true;\r\n\r\n if (!!this.planOrderApplication.transactionType && this.planOrderApplication.transactionType.directToConsumerFlag) {\r\n flag = false;\r\n }\r\n\r\n if (this.marketSegment.directFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n // should the closing section be displayed\r\n shouldDisplayClosingSection(): boolean {\r\n let displayFlag = true;\r\n\r\n const transactionType = this.planOrderApplication.transactionType;\r\n\r\n // if this is a new plan\r\n if (!this.planOrderApplication.planID) {\r\n if (!!transactionType && transactionType.activeListingFlag) {\r\n displayFlag = false;\r\n }\r\n }\r\n\r\n if (!!transactionType && transactionType.directToConsumerFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n if (this.marketSegment.directFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n\r\n // should any closing info be displayed\r\n shouldDisplayClosingInfo(): boolean {\r\n let displayFlag = false;\r\n\r\n displayFlag = displayFlag || this.shouldDisplayClosingFileNumber();\r\n displayFlag = displayFlag || this.shouldDisplayEstimatedClosingDate();\r\n displayFlag = displayFlag || this.shouldDisplayActualClosingDate();\r\n displayFlag = displayFlag || this.shouldDisplayInvoiceRecipient();\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // should the file number be displayed\r\n shouldDisplayClosingFileNumber(): boolean {\r\n const closingFileNumber = (this.planOrderApplication.closingFileNumber || '');\r\n\r\n return (closingFileNumber !== '');\r\n }\r\n\r\n\r\n // should the estimated closing date be displayed?\r\n shouldDisplayEstimatedClosingDate(): boolean {\r\n return !!this.planOrderApplication.estimatedClosingDate;\r\n }\r\n\r\n\r\n // should the actual closing date be displayed?\r\n shouldDisplayActualClosingDate(): boolean {\r\n return !!this.planOrderApplication.actualClosingDate;\r\n }\r\n\r\n\r\n // should the 'no closing info' message be displayed?\r\n shouldDisplayNoClosingInfoMessage(): boolean {\r\n let displayFlag = true;\r\n\r\n displayFlag = displayFlag && !this.shouldDisplayClosingFileNumber();\r\n displayFlag = displayFlag && !this.shouldDisplayEstimatedClosingDate();\r\n displayFlag = displayFlag && !this.shouldDisplayActualClosingDate();\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayTelemarketingAgentSection(): boolean {\r\n let flag = !!this.planOrderApplication.telemarketingAgent;\r\n\r\n if (!!this.productOfficeToolbox && !!this.productOfficeToolbox.autoLoginGuestGUID) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n homeBuyerText(): string {\r\n return this.planOrderApplication.homeBuyerOrOwnerText;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // should the home buyer be editable?\r\n canEditHomeBuyer(): boolean {\r\n let editFlag = this.canEditApplication();\r\n\r\n if (!this.planOrderStepService.promptForBuyer(this.planOrderApplication)) {\r\n editFlag = false;\r\n }\r\n\r\n return editFlag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayHomeSellerSection(): boolean {\r\n let flag = true;\r\n\r\n if (!!this.planOrderApplication.transactionType && this.planOrderApplication.transactionType.directToConsumerFlag) {\r\n flag = false;\r\n }\r\n\r\n if (this.marketSegment.directFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayPaymentSection(): boolean {\r\n let flag = false;\r\n\r\n // if the transaction type tells us to prompt for payment\r\n const transactionType = this.planOrderApplication.transactionType;\r\n\r\n if (transactionType && transactionType.promptForPaymentFlag) {\r\n flag = true;\r\n }\r\n\r\n // if a payment has been charged\r\n if (!!this.planOrderApplication.ccPaymentResult) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n canEditPayment(): boolean {\r\n let flag = false;\r\n\r\n if (this.canEditApplication()) {\r\n // pull the payment result\r\n const ccPaymentResult = this.planOrderApplication.ccPaymentResult;\r\n\r\n // if it doesn't exist, we can edit it\r\n if (!ccPaymentResult) {\r\n flag = true;\r\n\r\n // if it does exist, check for a payment failure\r\n } else {\r\n const successFlag = (!!ccPaymentResult.object ? ccPaymentResult.object.successFlag : false);\r\n\r\n if (!successFlag) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayFirstPaymentAmount(): boolean {\r\n return (this.planOrderApplication.payNowFlag && !this.planOrderApplication.planID);\r\n }\r\n\r\n\r\n\r\n\r\n // should display invoice recipient\r\n shouldDisplayInvoiceRecipient(): boolean {\r\n return !!this.planOrderApplication.invoiceRecipient;\r\n }\r\n\r\n\r\n\r\n\r\n // invoice recipient text\r\n invoiceRecipientText(): string {\r\n const invoiceRecipient = this.planOrderApplication.invoiceRecipient;\r\n\r\n const invoiceRecipientText = (invoiceRecipient ? invoiceRecipient.description : null);\r\n\r\n return invoiceRecipientText;\r\n }\r\n\r\n\r\n lastInvoiceRecipientText(): string {\r\n let invoiceRecipient: PlanInvoiceRecipient = null;\r\n\r\n // check by CustomerID\r\n let customerID: number = null;\r\n\r\n // if there is a premium invoice, look for the last invoice delivery\r\n const premiumInvoice = this.planOrderApplication.premiumInvoice;\r\n\r\n if (premiumInvoice && premiumInvoice.lastInvoiceDelivery) {\r\n customerID = premiumInvoice.lastInvoiceDelivery.customerID;\r\n }\r\n\r\n // if we're checking by customerID\r\n if (customerID) {\r\n const relationship = this.planOrderApplication.relationshipForCustomerID(customerID);\r\n\r\n if (relationship) {\r\n let listAgentFlag: boolean = null;\r\n\r\n if (relationship.initiatingAgentFlag) {\r\n listAgentFlag = this.planOrderApplication.initiatingAgentListingFlag;\r\n\r\n } else if (relationship.cooperatingAgentFlag) {\r\n listAgentFlag = this.planOrderApplication.cooperatingAgentListingFlag;\r\n }\r\n\r\n invoiceRecipient = this.planLookupValueService.invoiceRecipientByRelationship(relationship, listAgentFlag);\r\n }\r\n }\r\n\r\n const invoiceRecipientText = (invoiceRecipient ? invoiceRecipient.description : null);\r\n\r\n return invoiceRecipientText;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // send invoice to message\r\n shouldDisplayInvoiceRecipientPrompt(): boolean {\r\n // if we're in Prompt User mode\r\n const displayFlag = (this.updateInvoiceRecipientMode === UpdateInvoiceRecipientMode.promptUser);\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n transactionTypeInEscrow(): TransactionType {\r\n return this.planLookupValueService.transactionTypeInEscrow();\r\n }\r\n\r\n\r\n didClickInvoiceRecipientActiveListingPromptButton(flag: boolean) {\r\n // user clicked confirm\r\n if (flag) {\r\n this.planOrderApplication.transactionType = this.transactionTypeInEscrow();\r\n\r\n this.persistPlanOrderApplication();\r\n\r\n this.didClickEditClosingInfo();\r\n\r\n // user clicked cancel\r\n } else {\r\n this.updateInvoiceRecipientMode = UpdateInvoiceRecipientMode.none;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // should the \"no customers\" message be displayed?\r\n shouldDisplayNoCustomers(customers: Customer[]): boolean {\r\n return !customers.length;\r\n }\r\n\r\n\r\n\r\n shouldDisplaySendInvoiceToSidebar(): boolean {\r\n let flag = true;\r\n\r\n if (!!this.planOrderApplication.transactionType && this.planOrderApplication.transactionType.directToConsumerFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n // only display the Next button for new plans\r\n shouldDisplayNextButtion(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.pageMode === PageMode.reviewNewPlan) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // only display the Back button for new plans\r\n shouldDisplayBackButton(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.pageMode === PageMode.reviewNewPlan) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // only display the Start Over button for new plans\r\n shouldDisplayStartOverButton(): boolean {\r\n return !this.planOrderApplication.planID;\r\n }\r\n\r\n\r\n // only display the Disclosure for new plans\r\n shouldDisplayDisclosure(): boolean {\r\n return false;\r\n\r\n /*\r\n let displayFlag = true;\r\n\r\n displayFlag = displayFlag && (this.pageMode === PageMode.reviewNewPlan);\r\n\r\n const role = this.planOrderApplication.role;\r\n\r\n if (role) {\r\n displayFlag = displayFlag && role.promptForDisclosureFlag;\r\n }\r\n\r\n return displayFlag;\r\n\r\n */\r\n }\r\n\r\n\r\n // should the disclosure error display\r\n shouldDisplayDisclosureError(): boolean {\r\n let errorFlag = false;\r\n\r\n if (this.submitAttemptedFlag && this.shouldDisplayDisclosure()) {\r\n if (!this.disclosureFlag) {\r\n errorFlag = true;\r\n }\r\n }\r\n\r\n return errorFlag;\r\n }\r\n\r\n\r\n // should the confirmation message be displayed?\r\n shouldDisplayConfirmationMessage(): boolean {\r\n let flag = (this.confirmationMessage !== null);\r\n\r\n if (this.applicationHasFailedPayment()) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n applicationHasFailedPayment(): boolean {\r\n let flag = false;\r\n\r\n // if there was a failed payment\r\n const ccPaymentResult = this.planOrderApplication.ccPaymentResult;\r\n\r\n if (!!ccPaymentResult && !ccPaymentResult.object.successFlag) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n applicationFailedPaymentMessage(): string {\r\n let text: string = null;\r\n\r\n if (this.applicationHasFailedPayment()) {\r\n const ccPaymentResult = this.planOrderApplication.ccPaymentResult;\r\n\r\n // test for a sale result\r\n const ccSaleResult = (!!ccPaymentResult.object ? ccPaymentResult.object.creditCardSalesResult : null);\r\n\r\n let ccSaleStatusText = ccSaleResult.resultStatusText;\r\n\r\n if (ccSaleResult.ccExpiredFlag) {\r\n ccSaleStatusText = 'your credit card is expired';\r\n }\r\n\r\n text = 'We’re sorry. It looks like we were unable to process a payment with the card information entered (' + ccSaleStatusText +\r\n '). Please review the information and try again.';\r\n\r\n if (!!this.productOfficeToolbox && this.productOfficeToolbox.allowPremiumPayLaterFlag) {\r\n text += ' You can also select Pay Later to have an invoice sent via email.';\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n\r\n didClickEditPayment() {\r\n const url = this.router.routerState.snapshot.url;\r\n\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, 'review');\r\n\r\n const urlSegment = new UrlSegment('payment', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n\r\n\r\n // should the error message be displayed?\r\n shouldDisplayErrorMessage(): boolean {\r\n let displayFlag = false;\r\n\r\n displayFlag = displayFlag || (this.saveErrors && !!this.saveErrors.length);\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n didClickDisclosure(): void {\r\n this.disclosureFlag = !this.disclosureFlag;\r\n }\r\n\r\n\r\n\r\n validateForm(): boolean {\r\n let validFlag = true;\r\n\r\n // if the disclosure was displayed\r\n validFlag = validFlag && !this.shouldDisplayDisclosureError();\r\n\r\n return validFlag;\r\n }\r\n\r\n\r\n didClickNext(): void {\r\n try {\r\n this.submitAttemptedFlag = true;\r\n\r\n if (this.planOrderApplication.demoModeFlag) {\r\n this.planOrderApplication.demoModeSubmittedFlag = true;\r\n\r\n this.persistPlanOrderApplication();\r\n }\r\n\r\n // if the form is valid\r\n const validFlag = this.validateForm();\r\n\r\n if (validFlag) {\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n const url = this.pathToReview + '../' + nextRoute;\r\n\r\n this.router.navigate([url], {relativeTo: this.route});\r\n }\r\n\r\n } catch (error) {\r\n this.planOrderApplication.logError('phx.toolbox.ui.ErrorReviewNextClick', error);\r\n this.persistPlanOrderApplication();\r\n }\r\n }\r\n\r\n\r\n shouldDisplayPlanListButton(): boolean {\r\n let displayFlag = true;\r\n\r\n if (this.pageMode === PageMode.reviewNewPlan) {\r\n displayFlag = false;\r\n }\r\n\r\n if (this.pageMode === PageMode.confirmUpdatePlan) {\r\n// displayFlag = false;\r\n }\r\n\r\n if (!!this.productOfficeToolbox && !!this.productOfficeToolbox.autoLoginGuestGUID) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n didClickPlanListButton() {\r\n const url = '/home';\r\n\r\n if (!!this.productOfficeToolbox && !!this.productOfficeToolbox.autoLoginGuestGUID) {\r\n this.didClickNewPlanButton();\r\n } else {\r\n\r\n this.router.navigate([url]);\r\n }\r\n }\r\n\r\n\r\n shouldDisplayNewPlanButton(): boolean {\r\n let displayFlag = true;\r\n\r\n if (this.pageMode === PageMode.reviewNewPlan) {\r\n displayFlag = false;\r\n }\r\n\r\n if (!!this.productOfficeToolbox && !!this.productOfficeToolbox.autoLoginGuestGUID) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n didClickNewPlanButton() {\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, 'review');\r\n\r\n RoutingUtility.removeLastUrlSegmentFromTree(urlTree);\r\n\r\n const urlSegment = new UrlSegment('clear-application', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n\r\n didClickPrintButton() {\r\n window.print();\r\n }\r\n\r\n\r\n didClickEmailButton() {\r\n this.sendEmailPageMode = SendEmailPageMode.promptUser;\r\n }\r\n\r\n\r\n didClickRouteToORHP() {\r\n this.router.navigateByUrl('/plan-order/clear-application', {replaceUrl: true});\r\n window.location.replace('https://www.orhp.com');\r\n }\r\n\r\n\r\n didClickCancelApplicationButton() {\r\n this.confirmationAutoSendMode = ConfirmationAutoSendMode.skip;\r\n\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, 'review');\r\n\r\n const urlSegment = new UrlSegment('cancel', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n\r\n shouldDisplayMailingAddress(): boolean {\r\n let flag = true;\r\n\r\n const application = this.planOrderApplication;\r\n\r\n // if this is a new plan\r\n if (!application.planID) {\r\n flag = false;\r\n }\r\n\r\n // if there is no mailing address\r\n if (!application.mailingAddress) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n canUpdateMailingAddress(): boolean {\r\n let flag = true;\r\n\r\n const application = this.planOrderApplication;\r\n\r\n // if the status says not to update it it\r\n const planStatus = application.planStatus;\r\n\r\n if (planStatus && !planStatus.canUpdateMailingAddressFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayAdditionalEmail(): boolean {\r\n let pageModeFlag = false;\r\n\r\n pageModeFlag = pageModeFlag || (this.pageMode === PageMode.reviewNewPlan);\r\n pageModeFlag = pageModeFlag || (this.pageMode === PageMode.confirmNewPlan);\r\n\r\n let flag = pageModeFlag;\r\n flag = flag && !!this.updateAdditionalEmailMessage;\r\n\r\n return flag;\r\n\r\n }\r\n\r\n\r\n canUpdateAdditionalEmail(): boolean {\r\n let flag = true;\r\n\r\n flag = flag && (this.pageMode === PageMode.reviewNewPlan);\r\n\r\n return flag;\r\n }\r\n\r\n\r\n additionalEmailsText(): string {\r\n let emailText: string = null;\r\n\r\n (this.planOrderApplication.additionalEmailAddresses || []).forEach((indexEmail: string) => {\r\n emailText = (emailText ? emailText + '\\n' : '') + indexEmail;\r\n });\r\n\r\n if (!emailText) {\r\n emailText = 'Not Selected';\r\n }\r\n\r\n return emailText;\r\n }\r\n\r\n\r\n additionalEmailTitleText(): string {\r\n return (this.updateAdditionalEmailMessage ? this.updateAdditionalEmailMessage.message : null);\r\n }\r\n\r\n additionalEmailInstructionText(): string {\r\n return (this.updateAdditionalEmailMessage ? this.updateAdditionalEmailMessage.details : null);\r\n }\r\n\r\n\r\n shouldDisplayAdditionalEmailEntry(): boolean {\r\n let flag = false;\r\n\r\n flag = flag || (this.updateAdditionalEmailMode === UpdateAdditionalEmailMode.promptUser);\r\n flag = flag || (this.updateAdditionalEmailMode === UpdateAdditionalEmailMode.promptError);\r\n\r\n return flag;\r\n }\r\n\r\n\r\n didClickUpdateAdditionalEmail() {\r\n let updateAdditionalEmailEditing = '';\r\n\r\n (this.planOrderApplication.additionalEmailAddresses || []).forEach((indexEmail: string) => {\r\n updateAdditionalEmailEditing += (updateAdditionalEmailEditing !== '' ? ', ' : '') + indexEmail;\r\n });\r\n\r\n this.updateAdditionalEmailEditing = updateAdditionalEmailEditing;\r\n\r\n this.updateAdditionalEmailMode = UpdateAdditionalEmailMode.promptUser;\r\n }\r\n\r\n\r\n parseAdditionalEmailEntry(): string[] {\r\n // validate the entered emails\r\n let emails: string[] = null;\r\n\r\n if (this.updateAdditionalEmailEditing !== '') {\r\n emails = this.updateAdditionalEmailEditing.split(/[,; ]+/);\r\n\r\n } else {\r\n emails = [];\r\n }\r\n\r\n return emails;\r\n }\r\n\r\n\r\n shouldDisplayAdditionalEmailEntryError(): boolean {\r\n let flag = true;\r\n\r\n flag = flag && (this.updateAdditionalEmailMode === UpdateAdditionalEmailMode.promptError);\r\n flag = flag && !!this.additionalEmailEntryErrorText();\r\n\r\n return flag;\r\n }\r\n\r\n\r\n additionalEmailEntryErrorText(): string {\r\n const emails = this.parseAdditionalEmailEntry();\r\n\r\n const invalidEmails = [];\r\n\r\n emails.forEach((indexEmail: string) => {\r\n if (!StringUtility.emailValidate(indexEmail)) {\r\n invalidEmails.push(indexEmail);\r\n }\r\n });\r\n\r\n let errorText: string = null;\r\n\r\n invalidEmails.forEach((indexEmail: string) => {\r\n errorText = (errorText ? errorText + ', ' : '') + indexEmail;\r\n });\r\n\r\n if (errorText) {\r\n errorText = 'Invalid Email' + (invalidEmails.length > 1 ? 's' : '') + ': ' + errorText;\r\n }\r\n\r\n return errorText;\r\n }\r\n\r\n\r\n\r\n didClickConfirmAdditionalEmailEntry() {\r\n const errorText = this.additionalEmailEntryErrorText();\r\n\r\n if (!errorText) {\r\n this.planOrderApplication.additionalEmailAddresses = this.parseAdditionalEmailEntry();\r\n\r\n this.updateAdditionalEmailMode = UpdateAdditionalEmailMode.none;\r\n\r\n this.updateAdditionalEmailEditing = '';\r\n\r\n } else {\r\n this.updateAdditionalEmailMode = UpdateAdditionalEmailMode.promptError;\r\n }\r\n }\r\n\r\n\r\n didClickCancelAdditionalEmailEntry() {\r\n this.updateAdditionalEmailMode = UpdateAdditionalEmailMode.none;\r\n\r\n this.updateAdditionalEmailEditing = '';\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n didClickEditInvoiceRecipient() {\r\n let promptUserFlag = true;\r\n\r\n promptUserFlag = promptUserFlag && (this.transactionType ? this.transactionType.activeListingFlag : false);\r\n promptUserFlag = promptUserFlag && !this.planOrderApplication.planID;\r\n\r\n // if we're prompting the user\r\n if (promptUserFlag) {\r\n this.updateInvoiceRecipientMode = UpdateInvoiceRecipientMode.promptUser;\r\n\r\n // if we're going directly\r\n } else {\r\n this.didClickEditClosingInfo();\r\n }\r\n }\r\n\r\n\r\n\r\n didClickEditRoute(route: string) {\r\n this.confirmationAutoSendMode = ConfirmationAutoSendMode.skip;\r\n\r\n const url = this.router.routerState.snapshot.url;\r\n\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, 'review');\r\n\r\n const urlSegment = new UrlSegment(route, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n didClickEmailAddress(email: string) {\r\n const subject = 'ORHP Warranty ' + this.formattedPlanID + ' | ' + this.property.address;\r\n\r\n const url = 'mailto:' + encodeURIComponent(email) +\r\n '?subject=' + encodeURIComponent(subject);\r\n\r\n window.open(url, '_self');\r\n }\r\n\r\n\r\n\r\n didClickEditTransactionType() {\r\n this.didClickEditRoute('transaction-type');\r\n }\r\n\r\n didClickEditPropertyType() {\r\n this.didClickEditRoute('property-type');\r\n }\r\n\r\n didClickEditRole() {\r\n this.didClickEditRoute('role');\r\n }\r\n\r\n didClickEditInitiatingAgent() {\r\n this.didClickEditRoute('initiating-agent');\r\n }\r\n\r\n didClickEditProduct() {\r\n this.didClickEditRoute('product');\r\n }\r\n\r\n didClickEditOptionalCoverage() {\r\n this.didClickEditRoute('optional-coverage');\r\n }\r\n\r\n didClickEditPropertyAddress() {\r\n this.didClickEditRoute('property-address');\r\n }\r\n\r\n didClickEditClosingInfo() {\r\n this.didClickEditRoute('closing-info');\r\n }\r\n\r\n didClickEditCooperatingAgent() {\r\n this.didClickEditRoute('cooperating-agent');\r\n }\r\n\r\n didClickEditHomeBuyer() {\r\n this.didClickEditRoute('home-buyer');\r\n }\r\n\r\n didClickEditHomeSeller() {\r\n this.didClickEditRoute('home-seller');\r\n }\r\n\r\n didClickEditMailingAddress() {\r\n this.didClickEditRoute('mailing-address');\r\n }\r\n\r\n\r\n // Email Modal Actions\r\n shouldDisplayEmailConfirmModal(): boolean {\r\n return (this.sendEmailPageMode !== SendEmailPageMode.none);\r\n }\r\n\r\n\r\n shouldDisplayEmailConfirmQuestion(): boolean {\r\n return (this.sendEmailPageMode === SendEmailPageMode.promptUser);\r\n }\r\n\r\n\r\n shouldDisplayEmailInProgress(): boolean {\r\n return (this.sendEmailPageMode === SendEmailPageMode.inProgress);\r\n }\r\n\r\n\r\n shouldDisplayEmailSuccess(): boolean {\r\n return (this.sendEmailPageMode === SendEmailPageMode.emailSuccess);\r\n }\r\n\r\n\r\n shouldDisplayEmailFailure(): boolean {\r\n return (this.sendEmailPageMode === SendEmailPageMode.emailFailure);\r\n }\r\n\r\n shouldDisplayResendCards(): boolean {\r\n return (this.canResendAnniversaryCard || this.canResendCongratulationsCard );\r\n }\r\n\r\n\r\n didClickEmailSuccessDismiss() {\r\n\r\n if (this.onEmailSendSuccess.length) {\r\n Observable.forkJoin(this.onEmailSendSuccess).subscribe((results: any[]) => {\r\n this.sendEmailPageMode = SendEmailPageMode.none;\r\n });\r\n\r\n } else {\r\n this.sendEmailPageMode = SendEmailPageMode.none;\r\n }\r\n\r\n }\r\n\r\n\r\n didClickEmailCancel() {\r\n this.sendEmailPageMode = SendEmailPageMode.none;\r\n }\r\n\r\n\r\n\r\n didClickConfirmChanges() {\r\n const successObservable = Observable.create((subscriber: Subscriber) => {\r\n this.confirmationAutoSendEventEmitter.emit(true);\r\n\r\n this.didClickPlanListButton();\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n this.onEmailSendSuccess.push(successObservable);\r\n\r\n this.sendConfirmationEmails(SendEmailRequestMode.userRequested);\r\n }\r\n\r\n\r\n didClickSendEmails() {\r\n this.emailTitleLanguage = 'Resend Confirmation / Premium Invoice';\r\n this.emailSuccessLanguage = 'The confirmation and premium invoice (if applicable) have been sent.';\r\n this.emailFailureLanguage = 'There was a problem sending the premium invoice and order confirmation emails.';\r\n\r\n this.sendEmailPageMode = SendEmailPageMode.promptUser;\r\n }\r\n\r\n\r\n didClickConfirmSendEmails() {\r\n this.sendConfirmationEmails(SendEmailRequestMode.userRequested);\r\n }\r\n\r\n\r\n sendConfirmationEmails(mode: SendEmailRequestMode) {\r\n this.sendEmailPageMode = SendEmailPageMode.inProgress;\r\n\r\n const planID = this.planOrderApplication.planID;\r\n\r\n const customer = this.planOrderAuthService.customer;\r\n const customerID = String(customer.customerID);\r\n\r\n // send the plan confirmations\r\n this.planConfirmationService.sendPlanConfirmations(planID, customerID)\r\n .subscribe((resultFlag: boolean) => {\r\n\r\n // if the result was successful\r\n if (resultFlag) {\r\n this.confirmationSentFlag = true;\r\n\r\n // if the user requested them\r\n if (mode === SendEmailRequestMode.userRequested) {\r\n this.emailSuccessLanguage = 'The confirmation and premium invoice (if applicable) have been sent.';\r\n this.sendEmailPageMode = SendEmailPageMode.emailSuccess;\r\n\r\n // if they were auto-sent\r\n } else if (mode === SendEmailRequestMode.autoSend) {\r\n this.confirmationAutoSendEventEmitter.emit(true);\r\n }\r\n\r\n\r\n // the result was failure\r\n } else {\r\n this.emailFailureLanguage = 'There was a problem sending the premium invoice and order confirmation emails.';\r\n this.sendEmailPageMode = SendEmailPageMode.emailFailure;\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n // should the confirmation be auto-sent?\r\n shouldAutoSendConfirmation(): boolean {\r\n let autoSendFlag = true;\r\n\r\n // if the confirmation has been sent, we don't want to resend it\r\n if (this.confirmationSentFlag) {\r\n autoSendFlag = false;\r\n }\r\n\r\n // if we're in skip mode, don't auto-send\r\n if (this.confirmationAutoSendMode === ConfirmationAutoSendMode.skip) {\r\n autoSendFlag = false;\r\n }\r\n\r\n // if the page mode is not ConfirmUpdatePlan, don't auto-send\r\n if (this.pageMode !== PageMode.confirmUpdatePlan) {\r\n autoSendFlag = false;\r\n }\r\n\r\n // if the plan is cancelled, don't auto-send\r\n if (this.planOrderApplication.planCancel) {\r\n autoSendFlag = false;\r\n }\r\n\r\n return autoSendFlag;\r\n }\r\n\r\n\r\n // called when auto-sending confirmation emails\r\n autoSendConfirmation() {\r\n // called when the emails are sent successfully\r\n const successObservable = Observable.create((subscriber: Subscriber) => {\r\n // flag the the emails were sent\r\n this.confirmationAutoSendMode = ConfirmationAutoSendMode.sent;\r\n\r\n // notify interested parties that the confirmation was auto-sent\r\n this.confirmationAutoSendEventEmitter.emit(true);\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n this.onEmailSendSuccess.push(successObservable);\r\n\r\n this.confirmationAutoSendMode = ConfirmationAutoSendMode.inProgress;\r\n\r\n this.sendConfirmationEmails(SendEmailRequestMode.autoSend);\r\n }\r\n\r\n\r\n\r\n didClickResendAnniversaryCard() {\r\n this.emailTitleLanguage = 'Resend Anniversary Card';\r\n this.sendEmailPageMode = SendEmailPageMode.inProgress;\r\n\r\n this.correspondenceService.resendAnniversaryCard(this.planOrderApplication.planID)\r\n .subscribe((resultFlag: boolean) => {\r\n if (resultFlag) {\r\n this.emailSuccessLanguage = 'The Anniversary E-Card has been sent.';\r\n this.canResendAnniversaryCard = false;\r\n this.sendEmailPageMode = SendEmailPageMode.emailSuccess;\r\n } else {\r\n this.emailFailureLanguage = 'There was a problem sending the Anniversary E-Card.';\r\n this.sendEmailPageMode = SendEmailPageMode.emailFailure;\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n didClickResendCongratulationsCard() {\r\n this.emailTitleLanguage = 'Resend Congratulations Card';\r\n this.sendEmailPageMode = SendEmailPageMode.inProgress;\r\n\r\n this.correspondenceService.resendCongratulationsCard(this.planOrderApplication.planID)\r\n .subscribe((resultFlag: boolean) => {\r\n if (resultFlag) {\r\n this.emailSuccessLanguage = 'The Congratulations E-Card has been sent.';\r\n this.canResendCongratulationsCard = false;\r\n this.sendEmailPageMode = SendEmailPageMode.emailSuccess;\r\n } else {\r\n this.emailFailureLanguage = 'There was a problem sending the Congratulations E-Card.';\r\n this.sendEmailPageMode = SendEmailPageMode.emailFailure;\r\n }\r\n }\r\n );\r\n }\r\n\r\n addEmailConfirmation(message: string): string {\r\n let confirmMessage = message;\r\n\r\n const homeOwner = this.homeBuyers[0];\r\n const phones = this.displayPhonesForCustomer(homeOwner);\r\n const anEmail = phones.find((indexPhone: CustomerPhone) => indexPhone.phoneType.emailFlag);\r\n\r\n if (!!anEmail) {\r\n confirmMessage += ' Email confirmation has been sent to ' + anEmail.phoneNumber + '.';\r\n }\r\n\r\n return confirmMessage;\r\n }\r\n\r\n\r\n displayEditPaymentLink(): string {\r\n let message = 'Click here to correct your credit card';\r\n\r\n if (!!this.productOfficeToolbox && this.productOfficeToolbox.allowPremiumPayLaterFlag) {\r\n message += '/send an invoice via email';\r\n }\r\n\r\n return message;\r\n }\r\n\r\n\r\n shouldDisplayTag(): boolean {\r\n return !!this.productOfficeGroup && this.productOfficeGroup.homeBuyerEmailRequiredFlag;\r\n }\r\n\r\n\r\n displayAutoRenewYesOrNo(): string {\r\n return this.planOrderApplication.autoRenewFlag ? 'Yes' : 'No';\r\n }\r\n\r\n\r\n getFirstPayment(): PaymentPlanPayment {\r\n const firstPayment: PaymentPlanPayment = ArrayUtility.arrayFind(\r\n this.planOrderApplication.paymentPlan.payments,\r\n (testPayment: PaymentPlanPayment): boolean => {\r\n return (testPayment.paymentPlanNumber === 1);\r\n });\r\n\r\n return firstPayment;\r\n }\r\n\r\n\r\n amountToDisplay(amount: number): number {\r\n const selectedPaymentPlan = this.planOrderApplication.paymentPlan;\r\n let dollarAmount = amount;\r\n\r\n if (!!selectedPaymentPlan && selectedPaymentPlan.creditCardFlag && selectedPaymentPlan.paymentCount > 1 &&\r\n !!this.productOfficeToolbox && this.productOfficeToolbox.priceDisplayDurationCode === PremiumDurations.Month ) {\r\n dollarAmount = amount * this.getFirstPayment().paymentPlanPercent / 100.0;\r\n\r\n dollarAmount = Math.round(dollarAmount * 100.0) / 100.0;\r\n }\r\n\r\n return dollarAmount;\r\n }\r\n\r\n\r\n displayTotalText(): string {\r\n return 'Total' + this.displayFeeDuration() + ':';\r\n }\r\n\r\n\r\n displayFeeDuration(): string {\r\n const selectedPaymentPlan = this.planOrderApplication.paymentPlan;\r\n let duration = '';\r\n\r\n if (!!this.productOfficeToolbox && !this.productOfficeToolbox.allowPremiumPayLaterFlag &&\r\n !!DurationEnum[this.productOfficeToolbox.priceDisplayDurationCode]) {\r\n duration = ' ' + DurationEnum['Y'];\r\n\r\n if (selectedPaymentPlan && selectedPaymentPlan.creditCardFlag && selectedPaymentPlan.paymentCount > 1 &&\r\n this.productOfficeToolbox.priceDisplayDurationCode === PremiumDurations.Month ) {\r\n duration = ' ' + DurationEnum['M'];\r\n\r\n }\r\n }\r\n\r\n return duration;\r\n }\r\n\r\n}\r\n\r\n\r\nenum PageMode {\r\n reviewNewPlan = 100,\r\n confirmNewPlan = 200,\r\n confirmUpdatePlan = 300,\r\n reviewExistingPlan = 400\r\n}\r\n\r\n\r\nenum SendEmailPageMode {\r\n none = 100,\r\n promptUser = 200,\r\n inProgress = 300,\r\n emailSuccess = 400,\r\n emailFailure = 500\r\n}\r\n\r\n\r\nenum SendEmailRequestMode {\r\n userRequested = 100,\r\n autoSend = 200\r\n}\r\n\r\nenum ResendDecSheetPageMode {\r\n none = 100,\r\n inProgress = 300,\r\n resendSuccess = 400,\r\n resendFailure = 500\r\n}\r\n\r\nenum UpdateInvoiceRecipientMode {\r\n none = 100,\r\n promptUser = 200\r\n}\r\n\r\nenum UpdateAdditionalEmailMode {\r\n none = 100,\r\n promptUser = 200,\r\n promptError = 300\r\n}\r\n\r\n\r\nexport enum ConfirmationAutoSendMode {\r\n none = 100,\r\n skip = 200,\r\n inProgress = 300,\r\n sent = 400\r\n}\r\n\r\n","\r\n\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderReviewResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plans, make sure transaction type is selected\r\n if (!application.planID) {\r\n if (!application.property.address) {\r\n redirectTo = 'property-address';\r\n }\r\n\r\n if (!application.productCoverages) {\r\n redirectTo = 'optional-coverage';\r\n }\r\n\r\n if (!application.product) {\r\n redirectTo = 'product';\r\n }\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'review');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n resolve(!redirectTo);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n
    \\r\\n What best describes your role in this transaction?\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n {{indexTransactionRole.description}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\"","\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {TransactionRole} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderLookupValueService} from '../_services/plan-order-lookup-value.service';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {TransactionRoleOrdererRelationship} from '@orhp/phx-plan-ui-module';\r\nimport {PhxLoginService} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\n\r\n@Component({\r\n selector: 'app-plan-order-role',\r\n templateUrl: './role.component.html',\r\n styleUrls: ['../plan-order.scss']\r\n})\r\n\r\nexport class PlanOrderRoleComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n selectedTransactionRole: TransactionRole;\r\n\r\n get transactionRoles(): TransactionRole[] {\r\n // pull out which transaction roles to display\r\n const transactionRoles: TransactionRole[] = [];\r\n\r\n this.planLookupValueService.transactionRoles.forEach((indexRole: TransactionRole) => {\r\n let includeRoleFlag = indexRole.displayForRoleSelectionFlag;\r\n\r\n // if the role is ORHP Acct Exec, only include it if they're logged in\r\n if (indexRole.acctExecFlag && !this.planOrderAuthService.isOrhpUser()) {\r\n includeRoleFlag = false;\r\n }\r\n\r\n // if the user selected Active Listing, test for if it should be included\r\n const transactionType = this.planOrderApplication.transactionType;\r\n\r\n if (transactionType) {\r\n // if the transaction type is active listing\r\n if (transactionType.activeListingFlag) {\r\n if (!indexRole.displayForActiveListingFlag) {\r\n includeRoleFlag = false;\r\n }\r\n }\r\n }\r\n\r\n if (includeRoleFlag) {\r\n transactionRoles.push(indexRole);\r\n }\r\n });\r\n\r\n return transactionRoles;\r\n }\r\n\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private planLookupValueService: PlanLookupValueService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderLookupValueService: PlanOrderLookupValueService,\r\n private planOrderStepService: PlanOrderStepService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n // initially try defaulting to the application role\r\n if (!this.selectedTransactionRole) {\r\n this.selectedTransactionRole = this.planOrderApplication.role;\r\n }\r\n\r\n // set the current step\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'role');\r\n }\r\n\r\n\r\n // is this the selected transaction role\r\n isSelectedTransactionRole(transactionRole: TransactionRole): boolean {\r\n return (transactionRole === this.selectedTransactionRole);\r\n }\r\n\r\n\r\n // should the Next button be displayed\r\n shouldDisplayNextButton(): boolean {\r\n return !!this.selectedTransactionRole;\r\n }\r\n\r\n\r\n // the user clicked one of the roles\r\n didClickTransactionRole(transactionRole: TransactionRole): void {\r\n this.selectedTransactionRole = transactionRole;\r\n\r\n this.gotoNextStep();\r\n }\r\n\r\n\r\n gotoNextStep() {\r\n const previousRole = this.planOrderApplication.role;\r\n\r\n // if the previous role was double-ending, and this is not double-ending\r\n if (previousRole &&\r\n previousRole.realtorListingSellingFlag &&\r\n !this.selectedTransactionRole.realtorListingSellingFlag) {\r\n this.planOrderApplication.cooperatingAgent = null;\r\n }\r\n\r\n this.planOrderApplication.role = this.selectedTransactionRole;\r\n\r\n // next step logic\r\n this.persistPlanOrderApplication();\r\n\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n const url = '../' + nextRoute;\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderRoleResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // new plans\r\n if (!application.planID) {\r\n // make sure the property type is selected\r\n if (!application.property.propertyType) {\r\n redirectTo = 'property-type';\r\n }\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'role');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n resolve(!redirectTo);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n
    \\r\\n\\r\\n
    {{this.progress.progressMessage}}
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\"","\r\n\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {PlanOrderUpdateService} from '../_services/plan-order-update.service';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderProgress} from '../_models/plan-order-progress';\r\nimport {ActivatedRoute, Router, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {PlanOrderLookupService} from '../_services/plan-order-lookup.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {ActivityResultError} from '@orhp/phx-common-ui-module';\r\n\r\n@Component({\r\n selector: 'app-plan-save-interstitial',\r\n templateUrl: './save-interstitial.component.html',\r\n styleUrls: ['../plan-order.scss']\r\n})\r\n\r\nexport class PlanOrderSaveInterstitialComponent extends PlanOrderBaseComponent implements OnInit {\r\n\r\n progress: PlanOrderProgress = new PlanOrderProgress(0, 'Getting Ready to Update', true);\r\n\r\n\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private planOrderUpdateService: PlanOrderUpdateService,\r\n private planOrderLookupService: PlanOrderLookupService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router,\r\n private route: ActivatedRoute) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n try {\r\n // is this demo mode?\r\n if (this.planOrderApplication.demoModeSubmittedFlag) {\r\n this.demoMode();\r\n\r\n // if this is real mode\r\n } else {\r\n const existingPlanFlag = !!this.planOrderApplication.planID;\r\n\r\n // if a credit card payment failed\r\n const paymentResult = this.planOrderApplication.ccPaymentResult;\r\n const invoicePaymentResult = (paymentResult ? paymentResult.object : null);\r\n const ccPaymentResult = (invoicePaymentResult ? invoicePaymentResult.creditCardSalesResult : null);\r\n\r\n let prevCcPaymentFailureFlag = false;\r\n\r\n if (ccPaymentResult && !ccPaymentResult.successFlag) {\r\n prevCcPaymentFailureFlag = true;\r\n }\r\n\r\n this.planOrderApplication.confirmationSentFlag = false;\r\n this.planOrderService.persistPlanOrderApplication();\r\n\r\n\r\n // perform the update\r\n this.planOrderUpdateService\r\n .submitApplication(this.planOrderApplication)\r\n .subscribe((progress: PlanOrderProgress) => {\r\n\r\n this.progress = progress;\r\n\r\n let confirmationSentFlag = this.planOrderApplication.confirmationSentFlag;\r\n\r\n // if the progress is failure\r\n if (!progress.successFlag) {\r\n this.handleUpdateFailure();\r\n\r\n // if the progress is success\r\n } else {\r\n // if we're complete\r\n if (progress.completeFlag) {\r\n\r\n // what text do we display to the user\r\n let loadPlanText: string = null;\r\n\r\n if (existingPlanFlag) {\r\n loadPlanText = 'Accessing updated application';\r\n\r\n } else {\r\n loadPlanText = 'Accessing new application';\r\n }\r\n\r\n this.progress = new PlanOrderProgress(100, loadPlanText, true);\r\n\r\n this.planOrderLookupService\r\n .fetchPlanByID(this.planOrderApplication)\r\n .subscribe((fetchResultFlag: boolean) => {\r\n\r\n // if the result wasn't found\r\n if (!fetchResultFlag) {\r\n const error = new ActivityResultError();\r\n error.identifier = 'phx.planOrder.api.UnableToFetchPlanError';\r\n error.message = 'Unable to retrieve the new Application';\r\n\r\n this.planOrderApplication.saveErrors = [error];\r\n\r\n this.progress = new PlanOrderProgress(100, 'phx.planOrder.api.GenericPlanFetchError', false);\r\n\r\n\r\n this.handleUpdateFailure();\r\n\r\n // if the result was found\r\n } else {\r\n // if this is a new plan, flag that the confirmations have been sent\r\n if (!existingPlanFlag) {\r\n confirmationSentFlag = true;\r\n }\r\n\r\n if (confirmationSentFlag) {\r\n this.planOrderApplication.confirmationSentFlag = true;\r\n }\r\n\r\n this.persistPlanOrderApplication();\r\n\r\n const url = this.router.routerState.snapshot.url;\r\n let urlSegment: UrlSegment = null;\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, 'save');\r\n\r\n RoutingUtility.removeLastUrlSegmentFromTree(urlTree);\r\n RoutingUtility.removeLastUrlSegmentFromTree(urlTree);\r\n\r\n const redirectPlanID = this.planOrderApplication.planID;\r\n urlSegment = new UrlSegment(String(redirectPlanID), {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n urlSegment = new UrlSegment('review', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n // if there was a previous payment failure, or it's a new plan\r\n if (prevCcPaymentFailureFlag || !existingPlanFlag) {\r\n urlSegment = new UrlSegment('confirm-new', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n // if it's an existing plan\r\n } else {\r\n urlSegment = new UrlSegment('confirm-update', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n }\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n } catch (error) {\r\n this.planOrderApplication.logError('phx.toolbox.ui.ErrorSaving', error);\r\n this.persistPlanOrderApplication();\r\n\r\n this.handleUpdateFailure();\r\n }\r\n\r\n }\r\n\r\n\r\n shouldDisplayInProgressBar(): boolean {\r\n return this.progress.successFlag;\r\n }\r\n\r\n\r\n inProgressBarStyle(): any {\r\n const style = {\r\n 'width': this.progress.progressPercentText\r\n };\r\n\r\n return style;\r\n }\r\n\r\n\r\n handleUpdateFailure(): void {\r\n const urlTree = this.urlSerializer.parse(this.router.routerState.snapshot.url);\r\n\r\n let urlSegment: UrlSegment = null;\r\n\r\n urlSegment = new UrlSegment('review', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n const errorCode = 'update-error';\r\n urlSegment = new UrlSegment(errorCode, {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n\r\n\r\n demoMode() {\r\n const progressMessages: string[] = [];\r\n\r\n progressMessages.push('Saving Initiating Agent');\r\n progressMessages.push('Saving Cooperating Agent');\r\n progressMessages.push('Saving Closing Agent');\r\n progressMessages.push('Saving Home Buyer #1');\r\n progressMessages.push('Saving Home Buyer #2');\r\n progressMessages.push('Saving Home Seller #1');\r\n progressMessages.push('Saving Property Address');\r\n progressMessages.push('Saving Application');\r\n\r\n const progressPercent = Math.floor(100 / (progressMessages.length + 1));\r\n\r\n const progresses: PlanOrderProgress[] = [];\r\n\r\n let progressIndex = 1;\r\n\r\n progressMessages.forEach((indexMessage: string) => {\r\n const indexProgressPercent = progressIndex * progressPercent;\r\n\r\n const progress = new PlanOrderProgress(indexProgressPercent, indexMessage, true);\r\n\r\n progresses.push(progress);\r\n\r\n progressIndex++;\r\n });\r\n\r\n this.scheduleProgressAtIndex(progresses, 0);\r\n }\r\n\r\n\r\n scheduleProgressAtIndex(progresses: PlanOrderProgress[], progressIndex: number) {\r\n const indexProgress = progresses[progressIndex];\r\n\r\n this.progress = new PlanOrderProgress(\r\n indexProgress.progressPercent,\r\n indexProgress.progressMessage,\r\n indexProgress.successFlag\r\n );\r\n\r\n setTimeout(() => {\r\n if (progressIndex < (progresses.length - 1)) {\r\n this.scheduleProgressAtIndex(progresses, (progressIndex + 1));\r\n\r\n } else {\r\n const url = this.router.routerState.snapshot.url;\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, url, 'save');\r\n\r\n let segment: UrlSegment;\r\n\r\n segment = new UrlSegment('review', {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, segment);\r\n\r\n segment = new UrlSegment('confirm-new', {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, segment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n }, 300);\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n Loading Transaction Types, please wait...\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{instructionText}}\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n {{indexTransactionType.description}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Demo Mode\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n\\r\\n\"","module.exports = \"div.transaction-type-question{margin-top:20px;font-weight:bold}div.transaction-type-section{margin-top:20px}div.transaction-type-section div.transaction-type-title{font-weight:bold}div.transaction-type-section span.transaction-type-title-subhead{font-weight:normal;font-size:12pt;font-style:italic}\\n\"","\r\n\r\nimport {Component, OnChanges, OnDestroy, OnInit, SimpleChanges} from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\n\r\nimport {TransactionType} from '@orhp/phx-plan-ui-module';\r\nimport {TransactionTypeGroup} from '@orhp/phx-plan-ui-module';\r\nimport {PlanOrderLookupValueService} from '../_services/plan-order-lookup-value.service';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {PlanOrderApplication} from '../_models/plan-order-application';\r\nimport {PlanOrderStepService} from '../_services/plan-order-step.service';\r\nimport {PlanOrderBaseComponent} from '../plan-order-base-component';\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {PhxLoginService} from '@orhp/phx-common-ui-module';\r\nimport {Observable, Subscription} from 'rxjs/Rx';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {SystemMessage, SystemMessageLookupParams, SystemMessageLookupService} from '@orhp/phx-system-ui-module';\r\nimport {PlanOrderAuthService} from '../_services/plan-order-auth.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-plan-order-transaction-type',\r\n templateUrl: './transaction-type.component.html',\r\n styleUrls: [\r\n '../plan-order.scss',\r\n './transaction-type.component.scss'\r\n ]\r\n})\r\n\r\nexport class PlanOrderTransactionTypeComponent\r\n extends PlanOrderBaseComponent\r\n implements OnInit, OnDestroy {\r\n\r\n transactionTypeGroups: TransactionTypeGroup[];\r\n selectedTransactionType: TransactionType;\r\n\r\n demoModeSelectedFlag = this.planOrderApplication.demoModeFlag;\r\n\r\n pageLoadedFlag = false;\r\n\r\n instructionText: string = null;\r\n\r\n\r\n newApplicationSubscription: Subscription = null;\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private systemMessageLookupService: SystemMessageLookupService,\r\n private planLookupValueService: PlanLookupValueService,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private planOrderService: PlanOrderService,\r\n private planOrderLookupValueService: PlanOrderLookupValueService,\r\n private planOrderStepService: PlanOrderStepService) {\r\n super(planOrderService);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.newApplicationSubscription = this.planOrderService.newApplicationEventEmitter.subscribe(\r\n (application: PlanOrderApplication) => {\r\n this.autoSelectTransactionType();\r\n }\r\n );\r\n\r\n this.transactionTypeGroups = this.planLookupValueService.transactionTypeGroups;\r\n\r\n // if there's only one transaction type available, auto-select it\r\n this.autoSelectTransactionType();\r\n\r\n // pull the selected transaction type\r\n this.selectedTransactionType = this.planOrderApplication.transactionType;\r\n\r\n this.planOrderStepService.setCurrentStepByCode(this.planOrderApplication, 'transaction-type');\r\n\r\n // retrieve the instruction text\r\n this.retrieveInstructionText().subscribe((resultFlag: boolean) => {\r\n this.pageLoadedFlag = true;\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.newApplicationSubscription) {\r\n this.newApplicationSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n\r\n autoSelectTransactionType() {\r\n const transactionTypes = this.transactionTypesForDisplay();\r\n\r\n let gotoNextStepFlag = false;\r\n\r\n // if there's only one transaction type available\r\n if ((transactionTypes.length) === 1) {\r\n const transactionType = transactionTypes[0];\r\n\r\n // if the application transaction type is not selected\r\n if (!this.planOrderApplication.transactionType) {\r\n this.planOrderApplication.transactionType = transactionType;\r\n this.persistPlanOrderApplication();\r\n }\r\n\r\n // if the transaction types match, go to the next step\r\n if (transactionType.isEqual(this.planOrderApplication.transactionType)) {\r\n gotoNextStepFlag = true;\r\n }\r\n }\r\n\r\n if (gotoNextStepFlag) {\r\n setTimeout(() => {\r\n this.gotoNextStep();\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n retrieveInstructionText(): Observable {\r\n const observable = new Observable((subscriber: Subscriber) => {\r\n const params = new SystemMessageLookupParams();\r\n params.type = InstructionCodes.multipleTypes + ',' + InstructionCodes.singleType;\r\n\r\n this.systemMessageLookupService.systemMessageLookup(params).subscribe((messages: SystemMessage[]) => {\r\n // decide what message to use based on type count\r\n const typeCount = this.transactionTypesForDisplay();\r\n\r\n messages.forEach((indexMessage: SystemMessage) => {\r\n let useMessageFlag = false;\r\n\r\n if (this.shouldDisplaySingleTransactionType() && (indexMessage.type === InstructionCodes.singleType)) {\r\n useMessageFlag = true;\r\n\r\n } else if (this.shouldDisplayMultipleTransactionTypes() && (indexMessage.type === InstructionCodes.multipleTypes)) {\r\n useMessageFlag = true;\r\n }\r\n\r\n if (useMessageFlag) {\r\n this.instructionText = indexMessage.message;\r\n }\r\n });\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n shouldDisplaySingleTransactionType(): boolean {\r\n return (this.transactionTypesForDisplay().length === 1);\r\n }\r\n\r\n\r\n shouldDisplayMultipleTransactionTypes(): boolean {\r\n return (this.transactionTypesForDisplay().length > 1);\r\n }\r\n\r\n\r\n\r\n\r\n transactionTypesForDisplay(): TransactionType[] {\r\n return this.planOrderLookupValueService.transactionTypesForDisplay();\r\n }\r\n\r\n\r\n\r\n // should the demo mode option be displayed?\r\n shouldDisplayDemoModeOption(): boolean {\r\n let displayFlag = false;\r\n\r\n const newPlanFlag = !this.planOrderApplication.planID;\r\n const demoModeSubmittedFlag = this.planOrderApplication.demoModeSubmittedFlag;\r\n const orhpUserFlag = this.planOrderAuthService.isOrhpUser();\r\n\r\n // only show the demo mode option for a new plan\r\n if (newPlanFlag && !demoModeSubmittedFlag && orhpUserFlag) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // the user clicked the demo mode button\r\n didClickDemoMode() {\r\n this.demoModeSelectedFlag = !this.demoModeSelectedFlag;\r\n }\r\n\r\n\r\n\r\n\r\n // is this transaction type selected?\r\n isTransactionTypeSelected(transactionType: TransactionType): boolean {\r\n return (this.selectedTransactionType === transactionType);\r\n }\r\n\r\n\r\n // should the Next button be displayed\r\n shouldDisplayNextButton(): boolean {\r\n return !!this.selectedTransactionType;\r\n }\r\n\r\n\r\n // should the start over button be displayed\r\n shouldDisplayStartOverButton(): boolean {\r\n let displayFlag = false;\r\n\r\n if (this.planOrderApplication.transactionType) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n // user clicked a transaction type\r\n didClickTransactionType(transactionType: TransactionType): void {\r\n if (this.shouldDisplayMultipleTransactionTypes()) {\r\n this.selectedTransactionType = transactionType;\r\n\r\n this.gotoNextStep();\r\n }\r\n }\r\n\r\n\r\n // go to the next step\r\n gotoNextStep() {\r\n this.planOrderApplication.demoModeFlag = this.demoModeSelectedFlag;\r\n\r\n this.planOrderApplication.transactionType = this.selectedTransactionType;\r\n\r\n this.persistPlanOrderApplication();\r\n\r\n // next step logic\r\n const nextRoute = this.planOrderStepService.getNextRoute();\r\n const url = '../' + nextRoute;\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n\r\n\r\n // the user clicked the start over button\r\n didClickStartOverButton() {\r\n this.selectedTransactionType = null;\r\n }\r\n}\r\n\r\n\r\nenum InstructionCodes {\r\n multipleTypes = 'plan-order-transaction-type-multiple-instructions',\r\n singleType = 'plan-order-transaction-type-single-instructions'\r\n}\r\n\r\n","\r\n\r\n\r\nimport {ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot, UrlSegment, UrlSerializer} from '@angular/router';\r\nimport {PlanOrderService} from '../_services/plan-order.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Injectable()\r\n\r\nexport class PlanOrderTransactionTypeResolver implements Resolve {\r\n\r\n constructor(private planOrderService: PlanOrderService,\r\n private urlSerializer: UrlSerializer,\r\n private router: Router) {\r\n }\r\n\r\n resolve(snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const promise = new Promise((resolve, reject) => {\r\n\r\n const application = this.planOrderService.planOrderApplication;\r\n\r\n let redirectTo: string = null;\r\n\r\n // existing plans aren't allowed to select this step\r\n if (application.planID) {\r\n redirectTo = 'review';\r\n }\r\n\r\n // if we're not allowing\r\n if (redirectTo) {\r\n const urlTree = RoutingUtility.urlTreeToSegment(this.urlSerializer, state.url, 'transaction-type');\r\n\r\n const urlSegment = new UrlSegment(redirectTo, {});\r\n RoutingUtility.replaceLastUrlSegmentInTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n }\r\n\r\n resolve(!redirectTo);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\r\nimport {AppSettingsLoadStatus, ModalProgress, PhxModalProgressService, PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {\r\n ProductLookupValueFetchService,\r\n ProductOffice,\r\n ProductOfficeGroupLookupParams,\r\n ProductOfficeGroupLookupService\r\n} from '@orhp/phx-product-ui-module';\r\nimport {CustomUrlParser} from '../_src/custom-url-parser';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {PlanLookupValueFetchService} from '@orhp/phx-plan-ui-module';\r\nimport {PropertyLookupValueFetchService} from '@orhp/phx-property-ui-module';\r\nimport {CustomerLookupValueFetchService} from '@orhp/phx-customer-ui-module';\r\nimport {HomeService} from '../home/home.service';\r\nimport {AuthenticationService} from '../login/service/authentication.service';\r\nimport {AccountingLookupValueFetchService} from '@orhp/phx-accounting-ui-module';\r\nimport {CorrespondenceLookupValuesService} from '@orhp/phx-correspondence-ui-module';\r\n\r\n@Injectable()\r\nexport class AppSettingsGuard implements CanActivate {\r\n\r\n\r\n /**\r\n * Progress Title\r\n */\r\n readonly progressTitle = 'Initializing Toolbox';\r\n\r\n\r\n\r\n /**\r\n * Constructor\r\n * @param router\r\n * @param systemService\r\n * @param modalProgressService\r\n * @param authenticationService\r\n * @param accountingLookupValueFetchService\r\n * @param productLookupValueFetchService\r\n * @param correspondenceLookupValueService\r\n * @param planLookupValueFetchService\r\n * @param propertyLookupValueFetchService\r\n * @param customerLookupValueFetchService\r\n * @param homeService\r\n * @param productOfficeGroupLookupService\r\n */\r\n constructor(private router: Router,\r\n private systemService: PhxSystemService,\r\n private modalProgressService: PhxModalProgressService,\r\n private authenticationService: AuthenticationService,\r\n private accountingLookupValueFetchService: AccountingLookupValueFetchService,\r\n private productLookupValueFetchService: ProductLookupValueFetchService,\r\n private correspondenceLookupValueService: CorrespondenceLookupValuesService,\r\n private planLookupValueFetchService: PlanLookupValueFetchService,\r\n private propertyLookupValueFetchService: PropertyLookupValueFetchService,\r\n private customerLookupValueFetchService: CustomerLookupValueFetchService,\r\n private homeService: HomeService,\r\n private productOfficeGroupLookupService: ProductOfficeGroupLookupService) {\r\n }\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Can the page activate?\r\n * @param route\r\n * @param state\r\n */\r\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n console.log('!!!AppSettingsGuard Start');\r\n\r\n this.writeProgress('Reticulating splines...', 10);\r\n\r\n // loads app settings\r\n const appSettingsLoaded = await this.loadAppSettings();\r\n\r\n if (!appSettingsLoaded) {\r\n return false;\r\n }\r\n\r\n this.writeProgress('Loading data...', 30);\r\n\r\n // loads lookup data\r\n const lookupDataLoaded = await this.loadLookupData();\r\n\r\n if (!lookupDataLoaded) {\r\n return false;\r\n }\r\n\r\n this.writeProgress('Loading customizations...', 50);\r\n\r\n // is there a custom URL?\r\n let productOffice: ProductOffice;\r\n\r\n if (CustomUrlParser.getCustomUrl()) {\r\n productOffice = await this.processCustomUrl();\r\n\r\n // if no product office was found, redirect the user\r\n if (!productOffice) {\r\n window.location.href = '/';\r\n return false;\r\n }\r\n }\r\n\r\n this.authenticationService.urlProductOffice = productOffice;\r\n\r\n this.writeProgress('Almost there...', 70);\r\n\r\n // process the auto-login if there is one\r\n let autoLogin = false;\r\n\r\n if (productOffice) {\r\n autoLogin = await this.processAutoLogin(productOffice);\r\n }\r\n\r\n this.writeProgress('Finishing up...', 90);\r\n\r\n // if there's a login token but no customer\r\n if (this.authenticationService.loginToken && !this.authenticationService.customer) {\r\n await this.authenticationService.loginCompletionHandler();\r\n }\r\n\r\n this.modalProgressService.progress = null;\r\n\r\n if (autoLogin) {\r\n console.log('!!!Redirecting');\r\n this.router.navigate(['/plan-order'], {});\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n /**\r\n * Writes a modal progress\r\n * @param text\r\n * @param percent\r\n */\r\n writeProgress(text: string, percent: number) {\r\n this.modalProgressService.progress = new ModalProgress(this.progressTitle, text, percent);\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Loads app settings\r\n */\r\n loadAppSettings(): Promise {\r\n return new Promise((resolve, reject) => {\r\n // if app settings were loaded, return true\r\n if (this.systemService.appSettingsLoadStatus === AppSettingsLoadStatus.success) {\r\n resolve(true);\r\n return;\r\n }\r\n\r\n // loads app settings\r\n this.systemService.loadAppSettings().subscribe((flag: boolean) => {\r\n resolve(flag);\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n /**\r\n * Loads lookup data\r\n */\r\n loadLookupData(): Promise {\r\n return new Promise((resolve, reject) => {\r\n // load the home upper-right message async\r\n this.homeService.fetchHomeUpperRightMessage().subscribe();\r\n\r\n const observables: Observable[] = [];\r\n\r\n observables.push(this.planLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.propertyLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.customerLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.accountingLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.productLookupValueFetchService.fetchLookupValuesIfNeeded());\r\n observables.push(this.correspondenceLookupValueService.fetchLookupValuesIfNeeded());\r\n\r\n Observable.forkJoin(observables).subscribe((results: any[]) => {\r\n resolve(true);\r\n });\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Processes the custom URL\r\n */\r\n async processCustomUrl(): Promise {\r\n // is there a custom URL?\r\n let productOffice: ProductOffice;\r\n const customUrl = CustomUrlParser.getCustomUrl();\r\n\r\n if (customUrl) {\r\n // if the custom URL is different from what's stored, log the user out\r\n if (customUrl !== this.authenticationService.customUrlCode) {\r\n this.authenticationService.clearUserSession();\r\n }\r\n\r\n // pull the product office from the custom URL\r\n productOffice = await this.loadCustomUrlProductOffice();\r\n\r\n if (productOffice) {\r\n if (this.authenticationService.productOffice !== productOffice) {\r\n this.authenticationService.productOffice = productOffice;\r\n }\r\n } else {\r\n this.authenticationService.productOffice = undefined;\r\n }\r\n\r\n } else if (this.authenticationService.customUrlCode) {\r\n // if there's a saved custom URL code but no current URL code, remove it and clear the session\r\n this.authenticationService.customUrlCode = undefined;\r\n this.authenticationService.clearUserSession();\r\n }\r\n\r\n return productOffice;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Loads custom URL detail\r\n */\r\n loadCustomUrlProductOffice(): Promise {\r\n return new Promise((resolve, reject) => {\r\n const customUrl = CustomUrlParser.getCustomUrl();\r\n\r\n if (!customUrl) {\r\n resolve(undefined);\r\n return;\r\n }\r\n\r\n // pull the existing product/office\r\n const productOffice = this.authenticationService.productOffice;\r\n const productOfficeToolbox = (productOffice ? productOffice.toolbox : undefined);\r\n const productOfficeUrl = (productOfficeToolbox ? productOfficeToolbox.customUrlPath : undefined);\r\n\r\n // if the custom URL code is the same, return the same product/office\r\n if (productOfficeUrl === CustomUrlParser.getCustomUrl()) {\r\n resolve(productOffice);\r\n return;\r\n }\r\n\r\n // otherwise look it up\r\n const params = new ProductOfficeGroupLookupParams();\r\n params.customToolboxUrlPath = CustomUrlParser.getCustomUrl();\r\n params.jsonToolboxFlag = true;\r\n params.jsonPropertyTypesFlag = true;\r\n params.generateAutoLoginToken = true;\r\n\r\n this.productOfficeGroupLookupService.fetchProductOfficeGroups(params)\r\n .subscribe((productOffices: ProductOffice[]) => {\r\n // if product/offices were returned\r\n if ((productOffices || []).length) {\r\n resolve(productOffices[0]);\r\n } else {\r\n resolve(undefined);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Processes the auto-login\r\n * @param productOffice\r\n */\r\n async processAutoLogin(productOffice: ProductOffice): Promise {\r\n // if there's an auto-login\r\n const autoLoginJwt = (productOffice && productOffice.toolbox ? productOffice.toolbox.autoLoginToken : undefined);\r\n\r\n if (autoLoginJwt) {\r\n // if the auto-login was successful\r\n return await this.authenticationService.loginWithExistingJwt(autoLoginJwt);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {ActivityResult, PhxSystemService, PhxUserLoginTokenService, UserLoginToken} from '@orhp/phx-common-ui-module';\r\nimport {Router} from '@angular/router';\r\n\r\n@Injectable()\r\nexport class LegacyToolboxService {\r\n\r\n constructor(private userLoginTokenService: PhxUserLoginTokenService,\r\n private systemService: PhxSystemService,\r\n private router: Router\r\n ) { }\r\n\r\n\r\n\r\n redirectToLegacySite(code: any) {\r\n // retrieve a user login token\r\n this.userLoginTokenService.generateCurrentUserJumpToken().subscribe((result: ActivityResult) => {\r\n const token = result.object;\r\n\r\n this.redirectWithLoginToken(code, token.guid);\r\n });\r\n }\r\n\r\n\r\n\r\n legacyUrlFromRedirectCode(code: string): string {\r\n let gotoUrl: string = null;\r\n\r\n switch (code) {\r\n case RedirectCode.marketingTools:\r\n gotoUrl = this.systemService.legacyToolboxUrl + 'tools/ct_portal.cfm';\r\n break;\r\n\r\n case RedirectCode.aeToolbox:\r\n gotoUrl = this.systemService.legacyToolboxUrl + 'ae_toolbox/';\r\n break;\r\n }\r\n\r\n return gotoUrl;\r\n }\r\n\r\n\r\n\r\n\r\n redirectWithLoginToken(redirectCode: string, loginToken: string) {\r\n // pull the URL to redirect to\r\n let gotoUrl = this.legacyUrlFromRedirectCode(redirectCode);\r\n\r\n // append the login token\r\n const urlAppender = (gotoUrl.indexOf('?') === -1 ? '?' : ':');\r\n\r\n gotoUrl += urlAppender + 'styxFerryman=' + encodeURIComponent(loginToken);\r\n gotoUrl += '&phxToolboxUrl=' + encodeURIComponent(this.systemService.currentProtocolAndHost());\r\n\r\n window.location.href = gotoUrl;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\nexport enum RedirectCode {\r\n marketingTools = 'marketing-tools',\r\n aeToolbox = 'ae-toolbox'\r\n}\r\n\r\n","import {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\r\nimport {AuthenticationService} from '../login/service/authentication.service';\r\n\r\n\r\n@Injectable()\r\nexport class NoAutoLoginGuard implements CanActivate {\r\n\r\n /**\r\n * Constructor\r\n * @param router\r\n * @param authenticationService\r\n */\r\n constructor(private router: Router,\r\n private authenticationService: AuthenticationService) {\r\n }\r\n\r\n\r\n /**\r\n * Can the page activate?\r\n * @param route\r\n * @param state\r\n */\r\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n console.log('!!!NoAutoLoginGuard Start');\r\n\r\n // if there's an auto-login\r\n if (this.authenticationService.isAutoLogin()) {\r\n // redirect to plan order\r\n this.router.navigate(['/plan-order'], {});\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot} from '@angular/router';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\n\r\n@Injectable()\r\n\r\n\r\nexport class ResetGuard implements CanActivate {\r\n\r\n constructor() {\r\n }\r\n\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const observable = new Observable((subscriber: Subscriber) => {\r\n\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n\r\n location.href = '/';\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {AuthenticationService} from '../login';\r\nimport {ProductOffice, ProductOfficeToolbox} from '@orhp/phx-product-ui-module';\r\n\r\n@Injectable()\r\nexport class ToolboxSettingsService {\r\n\r\n get productOffice(): ProductOffice {\r\n const productOffices = (this.authenticationService.productOffices || []);\r\n\r\n return (!!productOffices.length ? productOffices[0] : null);\r\n }\r\n\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n return (!!this.productOffice ? this.productOffice.toolbox : null);\r\n }\r\n\r\n\r\n\r\n get appsPhoneNumber(): string {\r\n let phone = '800.445.6999';\r\n\r\n if (!!this.productOfficeToolbox && ((this.productOfficeToolbox.appsPhoneNumber || '') !== '')) {\r\n phone = this.productOfficeToolbox.appsPhoneNumber;\r\n }\r\n\r\n return phone;\r\n }\r\n\r\n\r\n\r\n constructor(private authenticationService: AuthenticationService\r\n ) {}\r\n\r\n}\r\n","\r\nexport class CustomUrlParser {\r\n\r\n\r\n /**\r\n * Returns a Custom URL\r\n */\r\n static getCustomUrl(): string {\r\n let customUrl: string = null;\r\n\r\n // pull the first path part\r\n const pathParts = window.location.pathname.split('/');\r\n let firstPathPart = pathParts[0];\r\n\r\n if ((firstPathPart === '') && (pathParts.length > 1)) {\r\n firstPathPart = pathParts[1];\r\n }\r\n\r\n // if the first path part contains something\r\n if (firstPathPart !== '') {\r\n // we're ignoring these paths\r\n const ignorePaths = [\r\n 'plan-order',\r\n 'home',\r\n 'login-passthru',\r\n 'login',\r\n 'logout',\r\n 'welcome',\r\n 'account',\r\n 'my-profile',\r\n 'signup',\r\n 'legacy-toolbox',\r\n 'debug',\r\n 'reset'\r\n ];\r\n\r\n // if the first path part does not match any of these, it's custom\r\n if (!ignorePaths.includes(firstPathPart)) {\r\n customUrl = firstPathPart;\r\n }\r\n }\r\n\r\n return customUrl;\r\n }\r\n\r\n\r\n\r\n /**\r\n * Returns the base HREF\r\n */\r\n static getBaseHref(): string {\r\n // default the HREF\r\n let baseHref = '/';\r\n\r\n // pull the custom URL\r\n const customUrl = CustomUrlParser.getCustomUrl();\r\n\r\n // if there's a custom URL, make it the base href\r\n if (customUrl) {\r\n baseHref = '/' + customUrl;\r\n }\r\n\r\n return baseHref;\r\n }\r\n\r\n}\r\n\r\n\r\n","module.exports = \"\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{this.modalProgress.title}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{this.modalProgress.message}}\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n Sorry but it looks like we're having some technical difficulties right now. Please try again in a few minutes.\\r\\n\\r\\n
    \\r\\n
    \\r\\n {{indexError}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n © {{currentYearText}}\\r\\n Old Republic Home Protection, Inc., a subsidiary of Old Republic International Corporation.\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\"","import {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\r\nimport {PhxHttpService} from '@orhp/phx-common-ui-module';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {AuthenticationService} from './login/service/authentication.service';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {Subscription} from 'rxjs/Subscription';\r\n\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: []\r\n})\r\n\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n title = 'app';\r\n\r\n appSettingsLoaded = false;\r\n\r\n\r\n private _currentYearText: string = null;\r\n\r\n get currentYearText(): string {\r\n if (!this._currentYearText) {\r\n const now = new Date();\r\n\r\n this._currentYearText = String(now.getFullYear());\r\n }\r\n\r\n return this._currentYearText;\r\n }\r\n\r\n\r\n\r\n get modalProgress(): ModalProgress {\r\n return this.modalProgressService.progress;\r\n }\r\n\r\n\r\n get customer(): Customer {\r\n return this.authenticationService.customer;\r\n }\r\n\r\n\r\n get globalErrorMessages(): string[] {\r\n return this.systemService.globalErrorMessages;\r\n }\r\n\r\n\r\n urlUpdateSubscription: Subscription = null;\r\n\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private http: PhxHttpService,\r\n private modalProgressService: PhxModalProgressService,\r\n private authenticationService: AuthenticationService,\r\n private systemService: PhxSystemService,\r\n private customerLookupValueService: CustomerLookupValueService) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.registerGoogleAnalyticsTracking();\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.urlUpdateSubscription) {\r\n this.urlUpdateSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n\r\n // registers the Google Analytics tracking\r\n registerGoogleAnalyticsTracking() {\r\n // subscribe to the router events\r\n this.urlUpdateSubscription = this.router.events.subscribe((event: any) => {\r\n if (event instanceof NavigationEnd) {\r\n const navEvent = event;\r\n\r\n this.systemService.sendGoogleAnalyticsTracking(navEvent.urlAfterRedirects);\r\n }\r\n });\r\n }\r\n\r\n\r\n shouldDisplayModalLogin(): boolean {\r\n return this.authenticationService.displayModalLoginFlag;\r\n }\r\n\r\n\r\n shouldDisplayGlobalErrorMessage(): boolean {\r\n return !!this.globalErrorMessages.length;\r\n }\r\n\r\n\r\n loggedIn(): boolean {\r\n return this.authenticationService.loggedIn();\r\n }\r\n\r\n\r\n didClickLogin() {\r\n this.router.navigate(['/login']);\r\n }\r\n\r\n\r\n didClickLogout() {\r\n this.authenticationService.logout();\r\n\r\n this.router.navigate(['/login']);\r\n }\r\n\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport {ErrorHandler, NgModule} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport {routes} from './app.routes';\r\n\r\nimport { AppComponent } from './app.component';\r\n\r\nimport {PlanOrderModule} from './_modules/plan-order/plan-order.module';\r\nimport {OfficeAgentLookupModule} from './_modules/office-agent-lookup/office-agent-lookup.module';\r\nimport {PhxCommonModule, PhxErrorService} from '@orhp/phx-common-ui-module';\r\nimport {PhxCustomerModule} from '@orhp/phx-customer-ui-module';\r\nimport {PlanOrderComponent} from './plan-order/plan-order.component';\r\nimport {NavbarComponent} from \"./navbar/navbar.component\";\r\nimport {HomeModule} from \"./home/home.module\";\r\nimport {LoginModule} from \"./login/login.module\";\r\nimport {UserModule} from \"./user/user.module\";\r\nimport {DebugComponent} from \"./debug/debug.component\";\r\nimport {PhxSystemModule} from '@orhp/phx-system-ui-module';\r\nimport {NavbarService} from './navbar/service/navbar.service';\r\nimport {DebugGuard} from './debug/debug.guard';\r\nimport {LegacyToolboxComponent} from './legacy-toolbox/legacy-toolbox.component';\r\nimport {ToolboxSettingsService} from './_services/toolbox-settings.service';\r\nimport {ResetGuard} from './_services/reset.guard';\r\nimport {LegacyToolboxService} from './_services/legacy-toolbox.service';\r\nimport {AppSettingsGuard} from './_services/app-settings.guard';\r\n\r\nimport {APP_BASE_HREF} from '@angular/common';\r\nimport {CustomUrlParser} from './_src/custom-url-parser';\r\nimport {NoAutoLoginGuard} from './_services/no-auto-login-guard';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n PlanOrderComponent,\r\n NavbarComponent,\r\n DebugComponent,\r\n LegacyToolboxComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n PhxCommonModule,\r\n PhxCustomerModule,\r\n PhxSystemModule,\r\n PlanOrderModule,\r\n OfficeAgentLookupModule,\r\n HomeModule,\r\n LoginModule,\r\n UserModule,\r\n FormsModule,\r\n routes\r\n ],\r\n providers: [\r\n AppSettingsGuard,\r\n NoAutoLoginGuard,\r\n ResetGuard,\r\n NavbarService,\r\n ToolboxSettingsService,\r\n LegacyToolboxService,\r\n DebugGuard,\r\n {\r\n provide: ErrorHandler,\r\n useClass: PhxErrorService\r\n },\r\n { provide: APP_BASE_HREF,\r\n useValue: CustomUrlParser.getBaseHref()\r\n }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\n\r\n\r\nexport class AppModule { }\r\n","\r\nimport {Routes, RouterModule} from '@angular/router';\r\nimport {PlanOrderRoutes} from './_modules/plan-order/plan-order.routes';\r\nimport {PlanOrderModule} from './_modules/plan-order/plan-order.module';\r\nimport {PlanOrderComponent} from './plan-order/plan-order.component';\r\nimport {HomeRoutes} from \"./home/home.routes\";\r\nimport {LoginComponent} from \"./login/login.component\";\r\nimport {AppSettingsGuard} from './_services/app-settings.guard';\r\nimport {WelcomeComponent} from './login/welcome.component';\r\nimport {UserRoutes} from \"./user/user.routes\";\r\nimport {LogoutComponent} from \"./login/logout.component\";\r\nimport {DebugComponent} from './debug/debug.component';\r\nimport {DebugGuard} from './debug/debug.guard';\r\nimport {LegacyToolboxComponent} from './legacy-toolbox/legacy-toolbox.component';\r\nimport {ResetGuard} from './_services/reset.guard';\r\nimport {LoginPassthruComponent} from './login/login-passthru.component';\r\nimport {NoAutoLoginGuard} from './_services/no-auto-login-guard';\r\n\r\nconst appRoutes: Routes = [\r\n {\r\n path: '',\r\n canActivate: [AppSettingsGuard],\r\n children: [\r\n {\r\n path: 'plan-order',\r\n component: PlanOrderComponent,\r\n children: PlanOrderRoutes\r\n },\r\n ...HomeRoutes,\r\n {\r\n path: 'login-passthru',\r\n children: [\r\n {\r\n path: ':loginTokenGUID/x/:externalRedirectTo',\r\n component: LoginPassthruComponent\r\n },\r\n {\r\n path: ':loginTokenGUID/:redirectTo',\r\n component: LoginPassthruComponent\r\n },\r\n {\r\n path: ':loginTokenGUID',\r\n component: LoginPassthruComponent\r\n },\r\n {\r\n path: '',\r\n pathMatch: 'full',\r\n redirectTo: '/welcome'\r\n }\r\n ]\r\n },\r\n {\r\n path: 'login',\r\n pathMatch: 'full',\r\n redirectTo: 'welcome'\r\n },\r\n {\r\n path: 'logout',\r\n component: LogoutComponent,\r\n canActivate: [NoAutoLoginGuard]\r\n },\r\n {\r\n path: 'welcome',\r\n component: WelcomeComponent,\r\n canActivate: [NoAutoLoginGuard]\r\n },\r\n ...UserRoutes,\r\n {\r\n path: 'legacy-toolbox',\r\n canActivate: [NoAutoLoginGuard],\r\n children: [\r\n {\r\n path: '',\r\n component: LegacyToolboxComponent\r\n },\r\n {\r\n path: ':redirectTo',\r\n component: LegacyToolboxComponent\r\n }\r\n ]\r\n },\r\n {\r\n path: 'debug',\r\n component: DebugComponent,\r\n canActivate: [DebugGuard, NoAutoLoginGuard]\r\n },\r\n {\r\n path: 'reset',\r\n canActivate: [ResetGuard],\r\n children: []\r\n }\r\n ]\r\n },\r\n {\r\n path: '**',\r\n pathMatch: 'full',\r\n redirectTo: '/'\r\n }\r\n\r\n];\r\n\r\n\r\nexport const routes = RouterModule.forRoot(appRoutes);\r\n\r\n\r\nexport function loadPlanOrderModule() {\r\n return PlanOrderModule;\r\n}\r\n\r\n","module.exports = \"\\r\\n
    \\r\\n Angular Web Server: {{this.ngServerName()}}\\r\\n
    \\r\\n\\r\\n

    Analysis Mode

    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n View Debugging Information\\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n View Login Token\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n View Logged-In Customer/Employer\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n
    \\r\\n View Plan Order Application\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n Plan Order Application has been updated\\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n System\\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n Reset Microservice Caches\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n Microservice Caches have been reset\\r\\n
    \\r\\n\\r\\n
    \\r\\n Unable to reset Microservice Caches\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n Are you sure that you want to reset the Microservice caches?\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"textarea.json-string{height:200px;font-family:monospace;font-size:9pt}\\n\"","\r\n\r\nimport {Component} from '@angular/core';\r\nimport {PhxLoginService} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderService} from '../_modules/plan-order/_services/plan-order.service';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {PlanOrderDomainFactoryService} from '../_modules/plan-order/_services/plan-order-domain-factory.service';\r\nimport {Router} from '@angular/router';\r\nimport {PhxHttpService} from '@orhp/phx-common-ui-module';\r\nimport {MessagingFormatter} from '@orhp/phx-common-ui-module';\r\nimport {Response} from '@angular/http';\r\n\r\n\r\n@Component({\r\n selector: 'app-debug-console',\r\n templateUrl: './debug.component.html',\r\n styleUrls: [\r\n './debug.component.scss'\r\n ]\r\n})\r\n\r\nexport class DebugComponent {\r\n\r\n selectedDebugMode = DebugMode.none;\r\n\r\n jsonSpacing = ' ';\r\n\r\n private _loginTokenJsonString: string = null;\r\n private _loggedInCustomerJsonString: string = null;\r\n private _planOrderApplicationJsonString: string = null;\r\n\r\n planOrderApplicationSuccessFlag = false;\r\n\r\n cacheResetResult: boolean = null;\r\n\r\n\r\n get loginTokenJsonString(): string {\r\n if (!this._loginTokenJsonString) {\r\n let jsonText = '';\r\n\r\n const loginToken = this.loginService.loginToken;\r\n\r\n if (loginToken) {\r\n jsonText = JSON.stringify(loginToken.jsonValues(), null, this.jsonSpacing);\r\n }\r\n\r\n this._loginTokenJsonString = jsonText;\r\n }\r\n\r\n\r\n return this._loginTokenJsonString;\r\n }\r\n\r\n set loginTokenJsonString(loginTokenJsonString: string) {\r\n this._loginTokenJsonString = loginTokenJsonString;\r\n }\r\n\r\n\r\n\r\n\r\n get loggedInCustomerJsonString(): string {\r\n if (!this._loggedInCustomerJsonString) {\r\n let jsonText = '';\r\n\r\n const customer = this.loginService.authenticationService.customer;\r\n\r\n if (customer) {\r\n jsonText = JSON.stringify(customer.jsonValues(), null, this.jsonSpacing);\r\n }\r\n\r\n this._loggedInCustomerJsonString = jsonText;\r\n }\r\n\r\n return this._loggedInCustomerJsonString;\r\n }\r\n\r\n\r\n set loggedInCustomerJsonString(loggedInCustomerJsonString: string) {\r\n this._loggedInCustomerJsonString = loggedInCustomerJsonString;\r\n }\r\n\r\n\r\n\r\n get planOrderApplicationJsonString(): string {\r\n if (!this._planOrderApplicationJsonString) {\r\n let jsonText = '';\r\n\r\n const jsonObject = this.planOrderService.planOrderApplicationJsonObject;\r\n\r\n if (jsonObject) {\r\n jsonText = JSON.stringify(jsonObject, null, this.jsonSpacing);\r\n }\r\n\r\n this._planOrderApplicationJsonString = jsonText;\r\n }\r\n\r\n return this._planOrderApplicationJsonString;\r\n }\r\n\r\n\r\n\r\n set planOrderApplicationJsonString(planOrderApplicationJsonString: string) {\r\n this._planOrderApplicationJsonString = planOrderApplicationJsonString;\r\n }\r\n\r\n\r\n\r\n\r\n constructor(private loginService: PhxLoginService,\r\n private systemService: PhxSystemService,\r\n private http: PhxHttpService,\r\n private router: Router,\r\n private planOrderService: PlanOrderService,\r\n private planOrderDomainFactoryService: PlanOrderDomainFactoryService) {\r\n }\r\n\r\n\r\n ngServerName(): string {\r\n return (this.systemService.serverName || '(undefined)');\r\n }\r\n\r\n\r\n\r\n setDebugMode(debugMode: DebugMode) {\r\n this.selectedDebugMode = (this.selectedDebugMode !== debugMode ? debugMode : null);\r\n\r\n this.planOrderApplicationSuccessFlag = false;\r\n }\r\n\r\n\r\n isLoginTokenSelected(): boolean {\r\n return (this.selectedDebugMode === DebugMode.loginToken);\r\n }\r\n\r\n\r\n didClickLoginToken() {\r\n this.setDebugMode(DebugMode.loginToken);\r\n }\r\n\r\n\r\n\r\n\r\n isLoggedInCustomerSelected(): boolean {\r\n return (this.selectedDebugMode === DebugMode.loggedInCustomer);\r\n }\r\n\r\n\r\n\r\n didClickLoggedInCustomer() {\r\n this.setDebugMode(DebugMode.loggedInCustomer);\r\n }\r\n\r\n\r\n\r\n\r\n isPlanOrderApplicationSelected(): boolean {\r\n return (this.selectedDebugMode === DebugMode.persistedPlanOrderApplication);\r\n }\r\n\r\n\r\n didClickPlanOrderApplication() {\r\n this.setDebugMode(DebugMode.persistedPlanOrderApplication);\r\n }\r\n\r\n\r\n\r\n\r\n didClickUpdatePlanOrderApplication() {\r\n // parse the JSON into an object\r\n const jsonObject = JSON.parse(this.planOrderApplicationJsonString);\r\n\r\n const application = this.planOrderDomainFactoryService.newPersistedApplication(jsonObject);\r\n\r\n this.planOrderService.planOrderApplication = application;\r\n\r\n this.planOrderApplicationSuccessFlag = true;\r\n }\r\n\r\n\r\n didClickGotoPlanOrder() {\r\n const url = '/plan-order/clear-application';\r\n\r\n this.router.navigate([url]);\r\n }\r\n\r\n\r\n didClickMicroserviceCaches() {\r\n this.selectedDebugMode = DebugMode.resetMicroserviceCacheForm;\r\n }\r\n\r\n\r\n isResetMicroserviceCachesSelected(): boolean {\r\n let flag = false;\r\n\r\n flag = flag || (this.selectedDebugMode === DebugMode.resetMicroserviceCacheForm);\r\n flag = flag || (this.selectedDebugMode === DebugMode.resetMicroserviceCacheSuccess);\r\n flag = flag || (this.selectedDebugMode === DebugMode.resetMicroserviceCacheFailure);\r\n\r\n return flag;\r\n }\r\n\r\n\r\n didClickResetMicroserviceCaches() {\r\n const url = 'systemConfig/clearCaches';\r\n const formBody = {};\r\n\r\n this.http.post(url, formBody).subscribe((response: Response) => {\r\n const json = response.json();\r\n\r\n let resultFlag = false;\r\n\r\n if (json) {\r\n resultFlag = true;\r\n }\r\n\r\n if (resultFlag) {\r\n this.selectedDebugMode = DebugMode.resetMicroserviceCacheSuccess;\r\n\r\n } else {\r\n this.selectedDebugMode = DebugMode.resetMicroserviceCacheFailure;\r\n }\r\n\r\n }, (error: Response) => {\r\n this.selectedDebugMode = DebugMode.resetMicroserviceCacheFailure;\r\n });\r\n }\r\n\r\n\r\n shouldDisplayMicroserviceCacheResetSuccess(): boolean {\r\n return (this.selectedDebugMode === DebugMode.resetMicroserviceCacheSuccess);\r\n }\r\n\r\n\r\n shouldDisplayMicroserviceCacheResetFailure(): boolean {\r\n return (this.selectedDebugMode === DebugMode.resetMicroserviceCacheFailure);\r\n }\r\n\r\n}\r\n\r\n\r\nenum DebugMode {\r\n none = 100,\r\n loginToken = 200,\r\n loggedInCustomer = 300,\r\n persistedPlanOrderApplication = 400,\r\n resetMicroserviceCacheForm = 500,\r\n resetMicroserviceCacheSuccess = 510,\r\n resetMicroserviceCacheFailure = 520\r\n}\r\n\r\n","import {\r\n ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlSegment,\r\n UrlSerializer\r\n} from '@angular/router';\r\nimport {Injectable} from '@angular/core';\r\nimport {AuthenticationService} from '../login/service';\r\n\r\n\r\n@Injectable()\r\n\r\nexport class DebugGuard implements CanActivate {\r\n\r\n constructor(private router: Router,\r\n private urlSerializer: UrlSerializer,\r\n private authenticationService: AuthenticationService\r\n ) { }\r\n\r\n\r\n\r\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n let allowAccess = false;\r\n\r\n // only ORHP users can access this\r\n if (this.authenticationService.orhpMisUserFlag) {\r\n allowAccess = true;\r\n }\r\n\r\n // if we're not allowing access\r\n if (!allowAccess) {\r\n this.router.navigate(['/'], {});\r\n }\r\n\r\n return allowAccess;\r\n }\r\n\r\n\r\n}\r\n\r\n","module.exports = \"\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n {{this.acctExecListTitle()}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n {{indexDisplayAcctExec.name}}\\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{indexDisplayAcctExec.phone}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\"","module.exports = \"div.orhp-employee{padding-right:10px}div.acct-exec div.acct-exec-image{float:left;padding-right:10px;max-width:120px}div.acct-exec div.acct-exec-list{display:block;overflow:hidden}div.acct-exec div.acct-exec-list div.acct-exec-content{margin-bottom:10px}div.acct-exec div.acct-exec-list div.acct-exec-content div.acct-exec-name{color:#003087}div.acct-exec div.acct-exec-list div.acct-exec-content div.acct-exec-name button.link{padding:0 0 0 10px}div.acct-exec div.acct-exec-list div.acct-exec-content div.acct-exec-phone{color:#003087}div.acct-exec div.acct-exec-list div.acct-exec-content div.acct-exec-email{color:#568DF2}div.acct-exec div.acct-exec-list div.acct-exec-content div.acct-exec-email button{margin:0;padding:0;color:#003087;background-color:rgba(0,0,0,0);border:0}div.acct-exec div.acct-exec-list div.acct-exec-content div.acct-exec-email button:hover{color:#012755;text-decoration:underline;cursor:pointer}\\n\"","\r\n\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {HubspotService} from '@orhp/phx-common-ui-module';\r\nimport {AuthenticationService} from '../../login/service/authentication.service';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {AcctExecLookupService} from '@orhp/phx-geography-ui-module';\r\nimport {AcctExec} from '@orhp/phx-geography-ui-module';\r\nimport {AcctExecLookupParams} from '@orhp/phx-geography-ui-module';\r\nimport {LocalStorage} from '@orhp/phx-localstorage-ui-module';\r\nimport {Http, Response} from '@angular/http';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\n\r\n@Component({\r\n selector: 'app-ae-detail',\r\n moduleId: module.id,\r\n templateUrl: 'ae-detail.component.html',\r\n styleUrls: [\r\n './ae-detail.component.scss'\r\n ]\r\n})\r\n\r\nexport class AEDetailComponent implements OnInit {\r\n\r\n acctExecImageUrl: string = null;\r\n\r\n pageStatus = PageStatus.acctExecImageLoading;\r\n\r\n\r\n private _acctExecs: AcctExec[] = null;\r\n\r\n set acctExecs(acctExecs: AcctExec[]) {\r\n this._acctExecs = acctExecs;\r\n\r\n this.populateDisplayAcctExecs(acctExecs);\r\n }\r\n\r\n get acctExecs(): AcctExec[] {\r\n return this._acctExecs;\r\n }\r\n\r\n displayAcctExecs: AcctExecDisplay[] = null;\r\n\r\n\r\n get orhpFlag(): boolean {\r\n return this.authenticationService.orhpUserFlag;\r\n }\r\n\r\n\r\n constructor(private acctExecLookupService: AcctExecLookupService,\r\n private authenticationService: AuthenticationService,\r\n private systemService: PhxSystemService,\r\n private ngHttp: Http\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n\r\n // if this isn't an ORHP user, fetch account execs\r\n if (!this.orhpFlag) {\r\n this.fetchAcctExecs();\r\n }\r\n }\r\n\r\n fetchAcctExecs() {\r\n try {\r\n if (this.authenticationService.acctExecs !== null && this.authenticationService.acctExecs.length > 0) {\r\n this.acctExecs = this.authenticationService.acctExecs;\r\n\r\n this.populateAcctExecImageUrl();\r\n\r\n } else {\r\n const customer = this.authenticationService.customer;\r\n\r\n const params = new AcctExecLookupParams();\r\n\r\n const territory = customer.employer.parentTerritory.toUpperCase();\r\n\r\n if (territory !== 'EEE-800') {\r\n params.territory = territory;\r\n\r\n } else {\r\n const address = customer.employer.physicalAddress;\r\n\r\n params.zipCode = (address ? address.zipCode.substr(0, 5) : '');\r\n }\r\n\r\n this.acctExecLookupService.fetchAccountExecs(params).subscribe((acctExecs: AcctExec[]) => {\r\n this.acctExecs = acctExecs;\r\n\r\n this.authenticationService.acctExecs = acctExecs;\r\n\r\n this.populateAcctExecImageUrl();\r\n });\r\n }\r\n } catch (e) {\r\n console.log(e.toString());\r\n }\r\n\r\n }\r\n\r\n\r\n populateDisplayAcctExecs(acctExecs: AcctExec[]) {\r\n const displayAcctExecs: AcctExecDisplay[] = [];\r\n\r\n // loop over account execs\r\n if (acctExecs) {\r\n acctExecs.forEach((indexAcctExec: AcctExec) => {\r\n\r\n // loop over names/emails\r\n const personCount = indexAcctExec.names.length;\r\n\r\n for (let personIndex = 0; personIndex < personCount; personIndex++) {\r\n const indexName = indexAcctExec.names[personIndex];\r\n const indexEmail = (personIndex < indexAcctExec.emails.length ? indexAcctExec.emails[personIndex] : null);\r\n\r\n const displayAcctExec = new AcctExecDisplay();\r\n displayAcctExec.name = indexName;\r\n displayAcctExec.email = indexEmail;\r\n displayAcctExec.phone = indexAcctExec.phone;\r\n displayAcctExec.url = indexAcctExec.website;\r\n\r\n let displayAcctExecExistsFlag = false;\r\n\r\n displayAcctExecs.forEach((indexDisplayAcctExec: AcctExecDisplay) => {\r\n if (displayAcctExec.name.toLowerCase() === indexDisplayAcctExec.name.toLowerCase()) {\r\n displayAcctExecExistsFlag = true;\r\n }\r\n });\r\n\r\n if (!displayAcctExecExistsFlag) {\r\n displayAcctExecs.push(displayAcctExec);\r\n }\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n this.displayAcctExecs = displayAcctExecs;\r\n }\r\n\r\n\r\n\r\n\r\n acctExecListTitle(): string {\r\n let title = 'Lorem Ipsum';\r\n\r\n const acctExecCount = this.displayAcctExecs.length;\r\n\r\n let cresFlag = false;\r\n\r\n this.acctExecs.forEach((indexAcctExec: AcctExec) => {\r\n cresFlag = cresFlag || indexAcctExec.cresFlag;\r\n });\r\n\r\n\r\n // 1 Single Acct Exec\r\n if (acctExecCount === 1) {\r\n title = 'Your Local Account Executive';\r\n\r\n // Multiple Acct Execs - CRES\r\n } else if (cresFlag) {\r\n title = 'Your CRES Home Warranty Team';\r\n\r\n // Multiple Acct Execs - Not CRES\r\n } else if (!cresFlag) {\r\n title = 'Your Local Account Executives';\r\n }\r\n\r\n return title;\r\n }\r\n\r\n\r\n shouldDisplayAcctExecBox(): boolean {\r\n let displayFlag = true;\r\n\r\n if (this.pageStatus === PageStatus.acctExecImageLoadFailure) {\r\n displayFlag = false;\r\n }\r\n\r\n if (this.orhpFlag) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayAcctExecList(): boolean {\r\n const customer = this.authenticationService.customer;\r\n\r\n let displayFlag = true;\r\n\r\n // user must be logged in\r\n displayFlag = displayFlag && !!customer;\r\n\r\n // at least 1 Acct Exec must be returned\r\n displayFlag = displayFlag && ((this.acctExecs || []).length > 0);\r\n\r\n // Acct Exec image must have loaded successfully\r\n displayFlag = displayFlag && (this.pageStatus === PageStatus.acctExecImageLoadSuccess);\r\n\r\n // User is not ORHP\r\n displayFlag = displayFlag && !this.orhpFlag;\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayAcctExecLink(displayAcctExec: AcctExecDisplay): boolean {\r\n const url = (displayAcctExec.url || '');\r\n const displayFlag = (url !== '');\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n didClickEmail(email: string) {\r\n const url = 'mailto:' + encodeURIComponent(email);\r\n\r\n window.open(url, '_self');\r\n\r\n }\r\n\r\n\r\n didClickVisitWebSite(displayAcctExec: AcctExecDisplay) {\r\n const url = displayAcctExec.url;\r\n\r\n window.open(url, 'MyORHP');\r\n }\r\n\r\n\r\n shouldDisplayAcctExecImage(): boolean {\r\n return !!this.acctExecImageUrl;\r\n }\r\n\r\n\r\n populateAcctExecImageUrl() {\r\n const customer = this.authenticationService.customer;\r\n const employer = (customer ? customer.employer : null);\r\n const territory = (employer ? employer.parentTerritory : '');\r\n\r\n let url: string = null;\r\n\r\n if (territory !== '') {\r\n url = this.systemService.acctExecImageUrl.replace(/(\\$\\$territory\\$\\$)/, encodeURIComponent(territory));\r\n }\r\n\r\n this.acctExecImageUrl = url;\r\n }\r\n\r\n\r\n didLoadAcctExecImage() {\r\n this.pageStatus = PageStatus.acctExecImageLoadSuccess;\r\n }\r\n\r\n\r\n didErrorOnAcctExecImage() {\r\n this.pageStatus = PageStatus.acctExecImageLoadFailure;\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nclass AcctExecDisplay {\r\n name: string = null;\r\n email: string = null;\r\n phone: string = null;\r\n url: string = null;\r\n}\r\n\r\n\r\nenum PageStatus {\r\n acctExecImageLoading = 10,\r\n acctExecImageLoadSuccess = 20,\r\n acctExecImageLoadFailure = 30\r\n}\r\n\r\n","import {Injectable} from '@angular/core';\r\nimport {BannerItem} from '@orhp/phx-common-ui-module';\r\nimport { SessionStorage } from '@orhp/phx-localstorage-ui-module';\r\n\r\n@Injectable()\r\nexport class BannersCacheService {\r\n\r\n @SessionStorage('phx.toolbox.ui.SessionStorageBanner')\r\n private _SessionStorageBannerObject: any;\r\n\r\n banner: BannerItem;\r\n\r\n\r\n getCachedBanner() {\r\n return this._SessionStorageBannerObject;\r\n }\r\n\r\n cacheTheBanner(bannerItem) {\r\n const bannerObject = bannerItem;\r\n this._SessionStorageBannerObject = bannerObject;\r\n }\r\n\r\n isCached() {\r\n if (!this._SessionStorageBannerObject) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n}\r\n","module.exports = \"\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\\"{{\\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n\"","module.exports = \".workbench-sec-1{max-width:100%;overflow:hidden;margin:1.2em 0}.workbench-sec-1 img{border:1px solid #f0f0f0}\\n\"","import {Component, OnInit} from '@angular/core';\r\nimport {HubspotService} from '@orhp/phx-common-ui-module';\r\nimport {AuthenticationService} from '../../login/service/authentication.service';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {BannerItem} from '@orhp/phx-common-ui-module';\r\nimport {BannersCacheService} from './banners-cache.service';\r\n\r\n@Component({\r\n selector: 'app-banners',\r\n templateUrl: './banners.component.html',\r\n styleUrls: ['./banners.component.scss'],\r\n providers: [BannersCacheService]\r\n})\r\nexport class BannersComponent implements OnInit {\r\n\r\n banner: BannerItem;\r\n\r\n pageFragmentId = 'workbench-sec-1';\r\n nonAECampaign = 'GENERIC-ALL-NON-AE';\r\n hubDbEndpoint = 'https://api.hubapi.com/hubdb/api/v1/tables/671895/rows?portalId=2596967';\r\n errorMessage;\r\n\r\n constructor(private hubspotService: HubspotService,\r\n private authenticationService: AuthenticationService,\r\n private bannersCacheService: BannersCacheService) { }\r\n\r\n ngOnInit() {\r\n this.getTheBanner();\r\n }\r\n\r\n getBannerByState() {\r\n this.hubspotService.getHubDbContentByState(this.hubDbEndpoint, this.pageFragmentId, this.stateCode)\r\n .subscribe((res) => {\r\n if (res.total !== 0) {\r\n this.bannersCacheService.cacheTheBanner(res);\r\n this.setBanner(res);\r\n } else {\r\n this.getGenericBanner();\r\n }\r\n },\r\n error => {this.errorMessage = error; } );\r\n }\r\n\r\n getGenericBanner() {\r\n this.hubspotService.getHubDbContent(this.hubDbEndpoint, this.pageFragmentId, this.nonAECampaign)\r\n .subscribe((res) => {\r\n this.bannersCacheService.cacheTheBanner(res);\r\n this.setBanner(res);\r\n },\r\n error => {this.errorMessage = error; } );\r\n }\r\n\r\n getTheBanner() {\r\n // not in cache make an http call to hubDb\r\n if (!this.bannersCacheService.isCached()) {\r\n if (!!this.stateCode && this.stateCode.length) {\r\n this.getBannerByState();\r\n }\r\n } else {\r\n this.banner = this.bannersCacheService.getCachedBanner();\r\n this.setBanner(this.banner);\r\n }\r\n }\r\n\r\n setBanner(bannerItem) {\r\n if (bannerItem.objects[0].values[4] === undefined) {\r\n this.setTextBanner(bannerItem);\r\n } else {\r\n this.banner = {\r\n imageURL: bannerItem.objects[0].values[4].url,\r\n image: bannerItem.objects[0].values[12],\r\n imageAltText: bannerItem.objects[0].values[7],\r\n html: null,\r\n total: bannerItem.total\r\n };\r\n }\r\n }\r\n\r\n setTextBanner(bannerItem) {\r\n this.banner = {\r\n imageURL: null,\r\n image: null,\r\n imageAltText: null,\r\n html: bannerItem.objects[0].values[3],\r\n total: bannerItem.total\r\n };\r\n}\r\n\r\n get orhpFlag(): boolean {\r\n let orhpFlag = false;\r\n\r\n const customer = this.authenticationService.customer;\r\n\r\n if (customer && customer.employer) {\r\n if (customer.employer.employerType.orhpFlag) {\r\n orhpFlag = true;\r\n }\r\n }\r\n\r\n return orhpFlag;\r\n }\r\n\r\n get stateCode(): string {\r\n let stateCode = null;\r\n\r\n const customer = this.authenticationService.customer;\r\n\r\n if (customer) {\r\n stateCode = customer.employer.physicalAddress.stateCode;\r\n }\r\n return stateCode;\r\n }\r\n}\r\n","module.exports = \"
    \\r\\n
    \\r\\n

    Welcome to your Toolbox, {{this.userFirstName | titlecase}}

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n\"","module.exports = \"div.upper-right-message{float:right;padding:10px;background-color:#FFFDDA;border:1px solid #F5D961;border-radius:5px}@media (min-width: 768px){div.ae-detail-box{float:right;width:350px;max-width:100%;overflow:hidden}}@media (max-width: 767px){div.ae-detail-box{margin-top:10px}}@media (max-width: 767px){div.my-warranties{clear:both;margin-top:10px}}\\n\"","import {Component, OnInit} from '@angular/core';\r\nimport {AuthenticationService} from '../login/service/authentication.service';\r\nimport {Customer, CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {SystemMessageLookupService} from '@orhp/phx-system-ui-module';\r\nimport {HomeService} from \"./home.service\";\r\n\r\n@Component({\r\n moduleId: module.id,\r\n templateUrl: 'home.component.html',\r\n styleUrls: [\r\n './home.component.scss'\r\n ]\r\n})\r\n\r\nexport class HomeComponent implements OnInit {\r\n\r\n get homeUpperRightMessageHtml(): string {\r\n return this.homeService.homeUpperRightMessageHtml;\r\n }\r\n\r\n\r\n constructor(private authorizationService: AuthenticationService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private homeService: HomeService) {\r\n }\r\n\r\n\r\n get userFirstName(): string {\r\n let name: string = null;\r\n\r\n const customer = this.authorizationService.customer;\r\n\r\n if (customer) {\r\n name = customer.givenName;\r\n }\r\n\r\n return name;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n\r\n shouldDisplayBanners(): boolean {\r\n let flag = true;\r\n\r\n if (this.customerLookupValueService.lookupValuesLoaded) {\r\n const employer = this.authorizationService.employer;\r\n\r\n if (employer && employer.employerType.telemarketingFlag) {\r\n flag = false;\r\n }\r\n }\r\n\r\n\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {HomeComponent} from \"./home.component\";\r\nimport {MyWarrantiesComponent} from './my-warranties/my-warranties.component';\r\nimport {MyWarrantiesGuard} from './my-warranties/my-warranties.guard';\r\nimport {MyWarrantiesService} from './my-warranties/my-warranties.service';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {AEDetailComponent} from './ae-detail/ae-detail.component';\r\nimport {PhxCommonModule} from '@orhp/phx-common-ui-module';\r\nimport {HomeService} from \"./home.service\";\r\nimport {BannersComponent} from './banners/banners.component';\r\nimport {PageSelectorComponent} from './my-warranties/page-selector.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n PhxCommonModule\r\n ],\r\n declarations: [\r\n HomeComponent,\r\n MyWarrantiesComponent,\r\n PageSelectorComponent,\r\n AEDetailComponent,\r\n BannersComponent\r\n ],\r\n exports: [\r\n BannersComponent\r\n ],\r\n providers: [\r\n MyWarrantiesGuard,\r\n MyWarrantiesService,\r\n HomeService\r\n ]\r\n})\r\nexport class HomeModule { }\r\n","import {Routes} from '@angular/router';\r\n\r\nimport {HomeComponent} from './home.component';\r\nimport {AuthGuard} from \"../login/service/auth.guard\";\r\nimport {MyWarrantiesGuard} from './my-warranties/my-warranties.guard';\r\nimport {NoAutoLoginGuard} from '../_services/no-auto-login-guard';\r\n\r\nexport const HomeRoutes: Routes = [\r\n {\r\n path: '',\r\n pathMatch: 'full',\r\n redirectTo: 'home'\r\n },\r\n {\r\n path: 'home/:pageNumber',\r\n component: HomeComponent,\r\n canActivate: [AuthGuard, NoAutoLoginGuard]\r\n },\r\n {\r\n path: 'home',\r\n canActivate: [MyWarrantiesGuard, NoAutoLoginGuard],\r\n children: []\r\n }\r\n];\r\n","import {Injectable} from \"@angular/core\";\r\nimport {SystemMessageLookupService} from '@orhp/phx-system-ui-module';\r\nimport {LocalStorage, SessionStorage} from '@orhp/phx-localstorage-ui-module';\r\nimport {SystemMessage} from '@orhp/phx-system-ui-module';\r\nimport {Observable} from \"rxjs/Observable\";\r\nimport {Subscriber} from \"rxjs/Subscriber\";\r\n\r\n@Injectable()\r\n\r\nexport class HomeService {\r\n\r\n @LocalStorage('phx.toolbox.ui.HomeUpperRightMessage')\r\n homeUpperRightMessageHtml: string;\r\n\r\n\r\n constructor(private systemMessageLookupService: SystemMessageLookupService) {\r\n }\r\n\r\n\r\n // fetches the home page upper-right message\r\n fetchHomeUpperRightMessage(): Observable {\r\n const observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n const code = 'toolbox-welcome-message-upper-right';\r\n\r\n this.systemMessageLookupService.systemMessageLookupByType(code)\r\n .subscribe((systemMessage: SystemMessage) => {\r\n\r\n if (systemMessage) {\r\n this.homeUpperRightMessageHtml = systemMessage.message;\r\n\r\n } else {\r\n this.homeUpperRightMessageHtml = null;\r\n }\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n","module.exports = \"
    \\r\\n\\r\\n
    \\r\\n Your Home Warranty Quick Stats (past {{this.currentMonths}} months):\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n \\r\\n {{indexQuickStat.formattedPlanCount}}\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n Search to find a specific home warranty by:\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Property Address\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Name/Phone/Email\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Plan #\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n Search All Apps in your Territory\\r\\n (Please enter a search term to enable)\\r\\n (Apps with * were not placed by you. You will not be able to edit Realtor information.)\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Show data for preceding:\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{this.shortTermMonths}} Months\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n {{this.longTermMonths}} Months\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n No recent applications were found.\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n Your home warranties are listed below. Select one to:\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
      \\r\\n
    • Add/Change Plan Holder Information
    • \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
      \\r\\n
    • Cancel the Application
    • \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
      \\r\\n
    • Add/Change Closing Information
    • \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
      \\r\\n
    • View Application/Service History
    • \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n Fetching your recent applications, please wait...\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n Plan #\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Your Role\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n App Received Date\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Status\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Property Address\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n {{indexPlan.formattedPlanID}}\\r\\n \\r\\n {{this.isAEPlan(indexPlan)}}\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{this.relationshipTextForPlan(indexPlan)}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n App Received -\\r\\n {{indexPlan.planReceivedDate | dateFormat}}\\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n {{indexPlan.planReceivedDate | dateFormat}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{this.statusDescriptionForPlan(indexPlan)}}\\r\\n\\r\\n \\r\\n
    \\r\\n -\\r\\n {{this.statusSubDateForPlan(indexPlan) | dateFormat}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{this.propertyForPlan(indexPlan).address}}
    \\r\\n {{this.propertyForPlan(indexPlan).city}} {{this.propertyForPlan(indexPlan).stateCode}} {{this.propertyForPlan(indexPlan).zipCode}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\"","module.exports = \"@media (max-width: 767px){div.quick-stats-get-quote-container{background-color:#FFFDDA;padding:10px;border:1px solid #F5D961;border-radius:5px}}@media (min-width: 768px){div.quick-stats-container{float:left}}@media (min-width: 768px){div.quick-stats-container div.plan-count{width:150px}}@media (max-width: 767px){div.quick-stats-container div.plan-count{width:100%}}div.quick-stats-container div.plan-count button.link{padding-left:0px;color:black}div.quick-stats-container div.plan-count span.badge{float:right;display:block;color:white;background-color:#003087}@media (min-width: 768px){div.quote-button-container{margin-right:60px;margin-top:20px;text-align:right}}@media (max-width: 767px){div.quote-button-container{text-align:center;margin-top:15px}}@media (max-width: 767px){div.quote-button-container button.btn-new-application{font-size:14pt;width:100%}}@media (min-width: 768px){div.quote-button-container button.btn-new-application{font-size:16pt}}button.selected-page-number{text-decoration:underline;font-weight:bold}div.marketing-click-text{margin-bottom:10px}div.marketing-click-text li{margin-bottom:5px}\\n\"","\r\nimport {Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport {PlanLookupService} from '@orhp/phx-plan-ui-module';\r\nimport {PlanLookupValueService} from '@orhp/phx-plan-ui-module';\r\nimport {Plan} from '@orhp/phx-plan-ui-module';\r\nimport {Property} from '@orhp/phx-property-ui-module';\r\nimport {PropertyDomainFactoryService} from '@orhp/phx-property-ui-module';\r\nimport {ActivatedRoute, NavigationEnd, Router, UrlSerializer} from '@angular/router';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {PlanCounts, PlanCountStatus} from '@orhp/phx-plan-ui-module';\r\nimport {AuthenticationService} from '../../login/service/authentication.service';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {PlanLookupParams} from '@orhp/phx-plan-ui-module';\r\nimport {PlanDomainFactoryService} from '@orhp/phx-plan-ui-module';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {Event} from '@angular/router';\r\nimport {SessionStorage} from '@orhp/phx-localstorage-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {PhxLoginService} from '@orhp/phx-common-ui-module';\r\nimport {MyWarrantiesService} from './my-warranties.service';\r\nimport {PlanStatus} from '@orhp/phx-plan-ui-module';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {Subscription} from 'rxjs/Subscription';\r\nimport {PlanOrderService} from '../../_modules/plan-order/_services';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {UserService} from '../../login/service';\r\nimport {Response} from '@angular/http';\r\nimport {observable} from 'rxjs';\r\nimport {ProductOfficeToolbox} from '@orhp/phx-product-ui-module';\r\nimport {ToolboxSettingsService} from '../../_services/toolbox-settings.service';\r\n\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-my-warranties',\r\n moduleId: module.id,\r\n templateUrl: 'my-warranties.component.html',\r\n styleUrls: [\r\n './my-warranties.component.scss'\r\n ]\r\n})\r\n\r\nexport class MyWarrantiesComponent implements OnInit, OnDestroy {\r\n\r\n initialPlanLoad = false;\r\n pageStatus = PageStatus.loadInProgress;\r\n\r\n plans: Plan[] = null;\r\n\r\n filteredSearchWasRun = false;\r\n filteredSearchWasRunWithTerritory = false;\r\n\r\n territories: String[] = [];\r\n guestGUID: String = null;\r\n\r\n // filter by status\r\n planStatusQuickStats: PlanStatusQuickStats[] = null;\r\n selectedQuickStats: PlanStatusQuickStats = null;\r\n\r\n\r\n // search type\r\n private _searchType: SearchType = null;\r\n private _longTermFlag: boolean = null;\r\n private _territorySearchResultsFlag: boolean = null;\r\n\r\n get longTermFlag(): boolean {\r\n\r\n if (this._longTermFlag == null) {\r\n this._longTermFlag = this.myWarrantiesService.lastLongTermFlag;\r\n }\r\n\r\n return this._longTermFlag || false;\r\n }\r\n\r\n set longTermFlag(longTermFlag: boolean) {\r\n this._longTermFlag = longTermFlag;\r\n\r\n this.myWarrantiesService.lastLongTermFlag = longTermFlag;\r\n }\r\n\r\n get territorySearchResultsFlag(): boolean {\r\n\r\n if (this._territorySearchResultsFlag == null) {\r\n this._territorySearchResultsFlag = this.myWarrantiesService.lastTerritorySearchResultsFlag;\r\n }\r\n\r\n return this._territorySearchResultsFlag || false;\r\n }\r\n\r\n set territorySearchResultsFlag(territorySearchResultsFlag: boolean) {\r\n this._territorySearchResultsFlag = territorySearchResultsFlag;\r\n\r\n this.myWarrantiesService.lastTerritorySearchResultsFlag = territorySearchResultsFlag;\r\n }\r\n\r\n get searchType(): SearchType {\r\n if (!this._searchType) {\r\n this._searchType = this.myWarrantiesService.lastSearchType;\r\n }\r\n\r\n if (!this._searchType) {\r\n this._searchType = SearchType.propertyAddress;\r\n }\r\n\r\n return this._searchType;\r\n }\r\n\r\n set searchType(searchType: SearchType) {\r\n this._searchType = searchType;\r\n\r\n this.myWarrantiesService.lastSearchType = searchType;\r\n }\r\n\r\n get searchTextTrimmed(): string {\r\n return this.searchText.trim();\r\n }\r\n\r\n // dashboard plan counts\r\n private _planCounts: PlanCounts = null;\r\n\r\n get planCounts(): PlanCounts {\r\n return this._planCounts;\r\n }\r\n\r\n set planCounts(planCounts: PlanCounts) {\r\n this._planCounts = planCounts;\r\n\r\n const quickStats: PlanStatusQuickStats[] = [];\r\n\r\n quickStats.push({\r\n code: 'paid',\r\n description: 'Paid',\r\n formattedPlanCount: planCounts.formattedPaidPlanCount,\r\n statusFilter: planCounts.paidPlanStatus\r\n });\r\n\r\n quickStats.push({\r\n code: 'unpaid',\r\n description: 'Unpaid',\r\n formattedPlanCount: planCounts.formattedUnpaidPlanCount,\r\n statusFilter: planCounts.unpaidPlanStatus\r\n });\r\n\r\n quickStats.push({\r\n code: 'expired',\r\n description: 'Expired',\r\n formattedPlanCount: planCounts.formattedExpiredPlanCount,\r\n statusFilter: planCounts.expiredPlanStatus\r\n });\r\n\r\n quickStats.push({\r\n code: 'cancelled',\r\n description: 'Cancelled',\r\n formattedPlanCount: planCounts.formattedCancelledPlanCount,\r\n statusFilter: planCounts.cancelledPlanStatus\r\n });\r\n\r\n quickStats.push({\r\n code: 'total',\r\n description: 'Total',\r\n formattedPlanCount: planCounts.formattedTotalPlanCount,\r\n statusFilter: null\r\n });\r\n\r\n this.planStatusQuickStats = quickStats;\r\n\r\n if (!this.selectedQuickStats) {\r\n quickStats.forEach((indexQuickStats: PlanStatusQuickStats) => {\r\n if (indexQuickStats.code === 'total') {\r\n this.selectedQuickStats = indexQuickStats;\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n // filtered plan count\r\n private _filteredPlanCount = 0;\r\n\r\n get filteredPlanCount(): number {\r\n return this._filteredPlanCount;\r\n }\r\n\r\n set filteredPlanCount(filteredPlanCount: number) {\r\n if (this._filteredPlanCount !== filteredPlanCount) {\r\n this._filteredPlanCount = filteredPlanCount;\r\n }\r\n }\r\n\r\n\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n return (!!this.toolboxSettingsService.productOffice ? this.toolboxSettingsService.productOffice.toolbox : null);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n propertiesByID: Map = null;\r\n\r\n plansPerPage = 15;\r\n\r\n longTermMonths: number = null;\r\n shortTermMonths: number = null;\r\n currentMonths: number = null;\r\n\r\n pageChangeSubscription: Subscription = null;\r\n\r\n\r\n /**\r\n * Returns the logged-in customer\r\n */\r\n get customer(): Customer {\r\n return this.authenticationService.customer;\r\n }\r\n\r\n\r\n // search text\r\n private _searchText: string = null;\r\n\r\n get searchText(): string {\r\n if (!this._searchText) {\r\n if (this.myWarrantiesService.lastSearchText) {\r\n this._searchText = String(this.myWarrantiesService.lastSearchText);\r\n }\r\n }\r\n\r\n if (!this._searchText) {\r\n this._searchText = '';\r\n }\r\n\r\n return this._searchText;\r\n }\r\n\r\n set searchText(searchText: string) {\r\n if (this._searchText !== searchText) {\r\n this._searchText = searchText;\r\n\r\n this.myWarrantiesService.lastSearchText = this._searchText;\r\n }\r\n }\r\n\r\n\r\n\r\n get urlPageNumber(): string {\r\n return this.route.snapshot.params['pageNumber'];\r\n }\r\n\r\n\r\n // what is the current page number\r\n get currentPageNumber(): number {\r\n const pageNumberText = this.urlPageNumber;\r\n\r\n let pageNumber = (isNaN(pageNumberText) ? null : Number(pageNumberText));\r\n\r\n // if a page number wasn't specified\r\n if (pageNumber === null) {\r\n // if there was a last page number loaded\r\n if (this.myWarrantiesService.lastPageNumberLoaded) {\r\n pageNumber = this.myWarrantiesService.lastPageNumberLoaded;\r\n\r\n // otherwise default to page 1\r\n } else {\r\n pageNumber = 1;\r\n }\r\n }\r\n\r\n // validate the page number\r\n if (pageNumber < 1) {\r\n pageNumber = 1;\r\n\r\n } else if (pageNumber > this.totalPageCount) {\r\n pageNumber = this.totalPageCount;\r\n }\r\n\r\n return pageNumber;\r\n }\r\n\r\n\r\n // what's the total page count\r\n get totalPageCount(): number {\r\n // how many plans total\r\n const totalPlanCount = this.filteredPlanCount || 0;\r\n\r\n // how many pages\r\n const totalPageCount = Math.ceil(totalPlanCount / this.plansPerPage);\r\n\r\n return totalPageCount;\r\n }\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private loginService: PhxLoginService,\r\n private systemService: PhxSystemService,\r\n private planOrderService: PlanOrderService,\r\n private planLookupService: PlanLookupService,\r\n private authenticationService: AuthenticationService,\r\n private planLookupValueService: PlanLookupValueService,\r\n private planDomainFactoryService: PlanDomainFactoryService,\r\n private userService: UserService,\r\n private propertyDomainFactoryService: PropertyDomainFactoryService,\r\n private urlSerializer: UrlSerializer,\r\n private myWarrantiesService: MyWarrantiesService,\r\n private toolboxSettingsService: ToolboxSettingsService\r\n ) {\r\n }\r\n\r\n\r\n\r\n ngOnInit() {\r\n // scroll to the top of the window\r\n window.scrollTo(0, 0);\r\n\r\n // clear the prior plan\r\n this.planOrderService.planOrderApplication = null;\r\n\r\n // set that we're loading plans\r\n this.pageStatus = PageStatus.loadInProgress;\r\n\r\n // subscribe to a page change event\r\n this.pageChangeSubscription = this.router.events.subscribe((event: Event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.fetchPlans(true).subscribe((planFetchResultFlag: boolean) => {\r\n // do nothing\r\n });\r\n }\r\n });\r\n\r\n\r\n // fetch user territories and the current guest\r\n const observables = [];\r\n observables.push(this.fetchUserTerritories());\r\n observables.push(this.fetchCurrentGuest());\r\n\r\n Observable.forkJoin(observables).subscribe((results: any[]) => {\r\n\r\n // how are we retrieving plan counts?\r\n let filteredPlanCountObservable: Observable = null;\r\n\r\n // if there's search text, retrieve the filtered plan counts\r\n if (this.searchTextTrimmed !== '') {\r\n filteredPlanCountObservable = this.fetchPlanCounts(true);\r\n\r\n // if there's no search text, use the total plan counts\r\n } else {\r\n filteredPlanCountObservable = Observable.create((subscriber: Subscriber) => {\r\n subscriber.next(null);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n // if we're on page 1 and there's no search text\r\n const firstSearchFlag = (this.urlPageNumber === '1');\r\n\r\n // execute the first search\r\n if (firstSearchFlag) {\r\n const planObservables = [];\r\n\r\n // fetch all plan counts\r\n planObservables.push(this.fetchPlanCounts(false));\r\n planObservables.push(filteredPlanCountObservable);\r\n planObservables.push(this.fetchPlans(false));\r\n\r\n Observable.forkJoin(planObservables).subscribe((planResults: any[]) => {\r\n // pull all plan counts\r\n const planCounts = (planResults[0] as PlanCounts);\r\n this.planCounts = planCounts;\r\n\r\n // pull the filtered plan counts\r\n const filteredPlanCounts = (planResults[1] as PlanCounts) || planCounts;\r\n this.filteredPlanCount = filteredPlanCounts.totalPlanCount;\r\n\r\n // set that the plans have been loaded\r\n this.initialPlanLoad = true;\r\n });\r\n\r\n // execute the normal search\r\n } else {\r\n // fetch plan counts\r\n const planObservables = [];\r\n\r\n planObservables.push(this.fetchPlanCounts(false));\r\n planObservables.push(filteredPlanCountObservable);\r\n\r\n Observable.forkJoin(planObservables).subscribe((planResults: any[]) => {\r\n // pull the total plan counts\r\n const planCounts = (planResults[0] as PlanCounts);\r\n this.planCounts = planCounts;\r\n\r\n // pull the filtered plan counts\r\n const filteredPlanCounts = (planResults[1] as PlanCounts) || planCounts;\r\n this.filteredPlanCount = filteredPlanCounts.totalPlanCount;\r\n\r\n // if the current page is more than the page total\r\n const urlPageNumber = ((this.urlPageNumber || '') !== '' ? Number(this.urlPageNumber) : null);\r\n\r\n if (urlPageNumber && (urlPageNumber > this.totalPageCount)) {\r\n this.gotoPageNumber(this.totalPageCount);\r\n }\r\n\r\n // fetch the filtered plans\r\n this.fetchPlans(true).subscribe((planFetchResultFlag: boolean) => {\r\n this.initialPlanLoad = true;\r\n });\r\n });\r\n }\r\n });\r\n\r\n this.longTermMonths = this.planLookupValueService.monthsByLongTermStatus(true);\r\n this.shortTermMonths = this.planLookupValueService.monthsByLongTermStatus(false);\r\n\r\n if (this.longTermFlag) {\r\n this.currentMonths = this.longTermMonths;\r\n\r\n } else {\r\n this.currentMonths = this.shortTermMonths;\r\n }\r\n\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.pageChangeSubscription.unsubscribe();\r\n }\r\n\r\n fetchUserTerritories(): Observable {\r\n\r\n const observable = Observable.create(( subscriber: Subscriber) => {\r\n\r\n\r\n this.userService.loadCurrentUserTerritories().subscribe(\r\n response => {\r\n if (response) {\r\n\r\n const territoryObjects = response.json();\r\n this.territories = territoryObjects.map(indexTerritory => indexTerritory.territory);\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n\r\n } else {\r\n\r\n subscriber.next(false);\r\n subscriber.complete();\r\n\r\n }\r\n }\r\n\r\n );\r\n });\r\n\r\n return observable;\r\n\r\n }\r\n\r\n fetchCurrentGuest(): Observable {\r\n\r\n const observable = Observable.create(( subscriber: Subscriber) => {\r\n\r\n\r\n this.userService.loadCurrentGuest().subscribe( (response: Response) => {\r\n if (response) {\r\n this.guestGUID = response.json().id;\r\n subscriber.next(true);\r\n subscriber.complete();\r\n\r\n } else {\r\n\r\n subscriber.next(false);\r\n subscriber.complete();\r\n\r\n }\r\n });\r\n\r\n\r\n });\r\n\r\n return observable;\r\n\r\n }\r\n\r\n isPlanSearchSelected(): boolean {\r\n return (this.searchType === SearchType.planNumber);\r\n }\r\n\r\n\r\n didClickPlanSearch() {\r\n this.searchType = SearchType.planNumber;\r\n\r\n this.searchText = '';\r\n this.territorySearchResultsFlag = false;\r\n }\r\n\r\n shouldDisplayTerritoryBox(): boolean {\r\n const employer = (this.customer ? this.customer.employer : undefined);\r\n const employerType = (employer ? employer.employerType : undefined);\r\n const orhpFlag = (employerType ? employerType.orhpFlag : false);\r\n\r\n if (orhpFlag && this.territories.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n didClickToggleTerritorySearchResults() {\r\n if (this.searchText.length > 0) {\r\n this.territorySearchResultsFlag = !this.territorySearchResultsFlag;\r\n } else {\r\n this.territorySearchResultsFlag = false;\r\n }\r\n }\r\n\r\n\r\n isPropertyAddressSearchSelected(): boolean {\r\n return (this.searchType === SearchType.propertyAddress);\r\n }\r\n\r\n\r\n didClickPropertyAddressSearch() {\r\n this.searchType = SearchType.propertyAddress;\r\n\r\n this.searchText = '';\r\n this.territorySearchResultsFlag = false;\r\n }\r\n\r\n\r\n isCustomerSearchSelected(): boolean {\r\n return (this.searchType === SearchType.customer);\r\n }\r\n\r\n\r\n didClickCustomerSearch() {\r\n this.searchType = SearchType.customer;\r\n\r\n this.searchText = '';\r\n this.territorySearchResultsFlag = false;\r\n }\r\n\r\n\r\n didSelectLongTerm() {\r\n this.pageStatus = PageStatus.loadInProgress;\r\n this.longTermFlag = true;\r\n this.currentMonths = this.longTermMonths;\r\n this.reloadResults();\r\n }\r\n\r\n\r\n didSelectShortTerm() {\r\n this.pageStatus = PageStatus.loadInProgress;\r\n this.longTermFlag = false;\r\n this.currentMonths = this.shortTermMonths;\r\n this.reloadResults();\r\n }\r\n\r\n\r\n // populate search params\r\n searchTextIntoParams(params: PlanLookupParams) {\r\n const searchText = (this.searchTextTrimmed || '');\r\n\r\n if (searchText !== '') {\r\n switch (this.searchType) {\r\n case SearchType.planNumber:\r\n params.planNumberLike = searchText;\r\n break;\r\n\r\n case SearchType.date:\r\n params.planDate = StringUtility.parseDate(searchText);\r\n break;\r\n\r\n case SearchType.propertyAddress:\r\n params.propertyAddressLike = searchText;\r\n break;\r\n\r\n case SearchType.customer:\r\n params.customerLike = searchText;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n reloadResults() {\r\n const hasSearchTextFlag = (this.searchTextTrimmed || '') !== '';\r\n const quickStatFlag = (this.selectedQuickStats.code.toLocaleLowerCase() !== 'total');\r\n\r\n // Make sure to pass the search flag if there is search text, or a quickStat is selected\r\n const passSearchFlag = hasSearchTextFlag || quickStatFlag;\r\n\r\n if (passSearchFlag) {\r\n // Only reload total counts separately if there is a search term and switching period of months\r\n\r\n this.fetchPlanCounts(false).subscribe((planCounts: PlanCounts) => {\r\n this.planCounts = planCounts;\r\n });\r\n\r\n }\r\n\r\n // go to the first page\r\n this.gotoPageNumber(1);\r\n\r\n // First fetch plan counts for paging purposes\r\n this.fetchPlanCounts(passSearchFlag).subscribe((planCounts: PlanCounts) => {\r\n\r\n // if this is not a search update the total counts\r\n if (!passSearchFlag) {\r\n this.planCounts = planCounts;\r\n }\r\n\r\n // update the filtered counts for paging purposes\r\n this.filteredPlanCount = planCounts.totalPlanCount;\r\n\r\n // fetch the plans to display\r\n this.fetchPlans(passSearchFlag).subscribe((fetchResultFlag: boolean) => {\r\n\r\n });\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n fetchPlanCounts(searchTextFlag?: boolean): Observable {\r\n const planFetchParams = this.planDomainFactoryService.newPlanLookupParams();\r\n\r\n if (searchTextFlag) {\r\n const hasSearchText = (this.searchTextTrimmed || '') !== '';\r\n this.searchTextIntoParams(planFetchParams);\r\n\r\n planFetchParams.totalCountsOnlyFlag = true;\r\n\r\n if (this.selectedQuickStats) {\r\n planFetchParams.status = this.selectedQuickStats.statusFilter;\r\n }\r\n\r\n\r\n if (hasSearchText && this.territorySearchResultsFlag) {\r\n planFetchParams.territoryResultsFlag = true;\r\n }\r\n }\r\n\r\n\r\n if (this.longTermFlag) {\r\n\r\n planFetchParams.longTermResultsFlag = true;\r\n\r\n }\r\n\r\n return this.planLookupService.fetchPlanCounts(planFetchParams);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // fetches plans\r\n fetchPlans(searchTextFlag?: boolean): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n this.pageStatus = PageStatus.loadInProgress;\r\n\r\n // fetches plans\r\n const planFetchParams = this.planDomainFactoryService.newPlanLookupParams();\r\n planFetchParams.toolboxUserRelationshipFlag = true;\r\n planFetchParams.propertyFlag = true;\r\n planFetchParams.maxPlanCount = this.plansPerPage;\r\n planFetchParams.startAtOffset = (this.currentPageNumber - 1) * this.plansPerPage;\r\n\r\n if (planFetchParams.startAtOffset < 0) {\r\n planFetchParams.startAtOffset = 0;\r\n }\r\n\r\n if (this.longTermFlag) {\r\n planFetchParams.longTermResultsFlag = true;\r\n }\r\n\r\n // if there is search text\r\n if (searchTextFlag) {\r\n this.searchTextIntoParams(planFetchParams);\r\n\r\n const hasSearchText = (this.searchTextTrimmed || '') !== '';\r\n this.filteredSearchWasRun = hasSearchText;\r\n this.filteredSearchWasRunWithTerritory = false;\r\n\r\n if (hasSearchText && this.territorySearchResultsFlag) {\r\n planFetchParams.territoryResultsFlag = true;\r\n this.filteredSearchWasRunWithTerritory = true;\r\n planFetchParams.toolboxPlanOrdererRoleFlag = true;\r\n }\r\n\r\n if (this.selectedQuickStats) {\r\n planFetchParams.status = this.selectedQuickStats.statusFilter;\r\n }\r\n\r\n } else {\r\n this.filteredSearchWasRun = false;\r\n this.filteredSearchWasRunWithTerritory = false;\r\n }\r\n\r\n this.planLookupService.fetchPlans(planFetchParams).subscribe((plans: Plan[]) => {\r\n this.propertiesByID = new Map();\r\n\r\n this.plans = plans;\r\n\r\n // what page status should we use?\r\n this.pageStatus = (this.plans.length ? PageStatus.loadSuccess : PageStatus.loadEmpty);\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n shouldDisplayTerritoryWarning(): boolean {\r\n if (this.searchTextTrimmed.length > 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n shouldDisplayTerritoryEditWarning(): boolean {\r\n if (this.searchTextTrimmed.length > 0 && this.territorySearchResultsFlag) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // should the clear search be displayed\r\n shouldDisplayClearSearchButton(): boolean {\r\n return this.filteredSearchWasRun;\r\n }\r\n\r\n\r\n // user clicked to clear the search\r\n didClickClearSearch() {\r\n this.searchText = '';\r\n this.territorySearchResultsFlag = false;\r\n this.filteredSearchWasRunWithTerritory = false;\r\n\r\n this.planStatusQuickStats.forEach((indexQuickStats: PlanStatusQuickStats) => {\r\n if (indexQuickStats.code.toLowerCase() === 'total') {\r\n this.selectedQuickStats = indexQuickStats;\r\n }\r\n });\r\n\r\n this.didClickSearch();\r\n }\r\n\r\n\r\n // is the quick stats filter selected?\r\n isQuickStatsFilterSelected(quickStat: PlanStatusQuickStats): boolean {\r\n let flag = false;\r\n\r\n if (this.selectedQuickStats) {\r\n flag = (this.selectedQuickStats.code === quickStat.code);\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n shouldShowTerritoryResultFlagChecked(): boolean {\r\n if (this.territorySearchResultsFlag && this.searchTextTrimmed !== '') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n // the user clicked the status filter\r\n didClickStatusFilter(quickStat: PlanStatusQuickStats) {\r\n this.selectedQuickStats = quickStat;\r\n\r\n this.territorySearchResultsFlag = false;\r\n this.filteredSearchWasRunWithTerritory = false;\r\n\r\n this.didClickSearch();\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayAddChangeClosingInfoText(): boolean {\r\n let flag = true;\r\n\r\n if (!!this.productOfficeToolbox && (this.productOfficeToolbox.productOfficeID === 414)) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n // the user changed the search text\r\n didClickSearch() {\r\n let searchCode: string = null;\r\n\r\n\r\n if (this.searchTextTrimmed === '') {\r\n searchCode = 'all';\r\n\r\n } else {\r\n switch (this.searchType) {\r\n case SearchType.customer:\r\n searchCode = 'customer';\r\n break;\r\n\r\n case SearchType.date:\r\n searchCode = 'date';\r\n break;\r\n\r\n case SearchType.planNumber:\r\n searchCode = 'plan-number';\r\n break;\r\n\r\n case SearchType.propertyAddress:\r\n searchCode = 'property-address';\r\n break;\r\n }\r\n\r\n this.filteredPlanCount = null;\r\n }\r\n\r\n if (searchCode) {\r\n this.systemService.sendGoogleAnalyticsTrackingFromCurrentUrl(this.router, '/search-by-' + searchCode);\r\n }\r\n\r\n this.pageStatus = PageStatus.loadInProgress;\r\n\r\n // goto the first page\r\n this.gotoPageNumber(1);\r\n\r\n const observables = [];\r\n\r\n observables.push(this.fetchPlanCounts(true));\r\n observables.push(this.fetchPlans(true));\r\n\r\n Observable.forkJoin(observables).subscribe((results: any[]) => {\r\n const planCounts = (results[0] as PlanCounts);\r\n this.filteredPlanCount = planCounts.totalPlanCount;\r\n\r\n const planFetchResultFlag = (results[1] as boolean);\r\n this.pageStatus = (this.plans.length ? PageStatus.loadSuccess : PageStatus.loadEmpty);\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n shouldDisplayPlanCounts(): boolean {\r\n return !!this.planCounts;\r\n }\r\n\r\n\r\n shouldDisplayPageSelector(): boolean {\r\n return !this.shouldDisplayLoadInProgress();\r\n }\r\n\r\n\r\n shouldDisplayLoadInProgress(): boolean {\r\n return (this.pageStatus === PageStatus.loadInProgress);\r\n }\r\n\r\n\r\n shouldDisplayNoPlansMessage(): boolean {\r\n return (this.pageStatus === PageStatus.loadEmpty);\r\n }\r\n\r\n\r\n shouldDisplayPlanList(): boolean {\r\n let flag = true;\r\n flag = flag && (this.pageStatus === PageStatus.loadSuccess);\r\n flag = flag && !!this.filteredPlanCount;\r\n\r\n return flag;\r\n }\r\n\r\n\r\n propertyForPlan(plan: Plan): Property {\r\n let property = this.propertiesByID[plan.propertyID];\r\n\r\n if (!property) {\r\n property = this.propertyDomainFactoryService.newProperty(plan.propertyJsonObject);\r\n\r\n this.propertiesByID[plan.propertyID] = property;\r\n }\r\n\r\n return property;\r\n }\r\n\r\n\r\n statusAppReceivedForPlan(plan: Plan): boolean {\r\n let flag = false;\r\n\r\n if (plan.status.status === 0) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n statusDescriptionForPlan(plan: Plan): string {\r\n const desc = (plan.status ? plan.status.description : 'Unavailable');\r\n\r\n return desc;\r\n }\r\n\r\n\r\n statusSubDateForPlan(plan: Plan): Date {\r\n let date: Date = null;\r\n\r\n // if the plan has a status\r\n if (plan.status) {\r\n // if the status is expired\r\n if (plan.status.expiredFlag) {\r\n date = plan.planCoverageEnds;\r\n }\r\n\r\n // if the status is cancelled\r\n if (plan.status.cancelledFlag) {\r\n date = plan.cancelDate;\r\n }\r\n\r\n // if the status is buyer cvg active\r\n if (plan.status.status === PlanStatus.buyersCoverageActive) {\r\n date = plan.planCoverageStarts;\r\n }\r\n\r\n // if the status is future\r\n if (plan.status.status === PlanStatus.futurePlan) {\r\n date = plan.planCoverageStarts;\r\n }\r\n\r\n // if the status is app received\r\n if (plan.status.status === PlanStatus.appReceived) {\r\n date = plan.planReceivedDate;\r\n }\r\n\r\n // if the status is sellers cvg active\r\n if (plan.status.status === PlanStatus.sellersCoverageActive) {\r\n date = plan.planReceivedDate;\r\n }\r\n }\r\n\r\n return date;\r\n }\r\n\r\n\r\n customPlanRoleDisplayText(): string {\r\n let text: string = null;\r\n\r\n // if there's a product office for the current user\r\n if (!!this.productOfficeToolbox) {\r\n const productOfficeText = (this.productOfficeToolbox.customPlanRoleDisplayText || '');\r\n\r\n if (productOfficeText !== '') {\r\n text = productOfficeText;\r\n }\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n relationshipTextForPlan(plan: Plan): string {\r\n let text = '';\r\n\r\n // if the plan was keyed in the Toolbox\r\n if (plan.guestToolboxPlan) {\r\n\r\n if (text === '') {\r\n // if the plan was keyed by the current user\r\n const currentGuestGUID = this.authenticationService.guestGUID || '';\r\n const planGuestGUID = plan.guestToolboxPlan.guestGUID || '';\r\n\r\n if (currentGuestGUID.toLowerCase() === planGuestGUID.toLowerCase()) {\r\n text = this.customPlanRoleDisplayText() || '';\r\n }\r\n }\r\n\r\n // if there's a role\r\n if (text === '') {\r\n if (plan.guestToolboxPlan.planRole) {\r\n text = plan.guestToolboxPlan.planRole.description;\r\n\r\n } else if (plan.guestToolboxPlan.relationship) {\r\n text = plan.guestToolboxPlan.relationship.description;\r\n }\r\n }\r\n }\r\n\r\n if (text === '') {\r\n text = 'Unknown';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n isAEPlan(plan: Plan): string {\r\n let text = '';\r\n\r\n if (plan.planOrdererRole !== null) {\r\n\r\n if (plan.planOrdererRole.guestGUID.toLocaleLowerCase() !== this.guestGUID.toLocaleLowerCase()) {\r\n text = '*';\r\n }\r\n\r\n } else {\r\n text = '*';\r\n }\r\n return text;\r\n }\r\n\r\n\r\n shouldDisplayInstructions(): boolean {\r\n let planCount = 0;\r\n\r\n if (this.plans) {\r\n planCount = this.plans.length;\r\n }\r\n\r\n return !!planCount;\r\n }\r\n\r\n\r\n shouldDisplayPageNumbers(): boolean {\r\n let displayPageNumbers = this.initialPlanLoad;\r\n\r\n if (this.filteredPlanCount <= this.plansPerPage) {\r\n displayPageNumbers = false;\r\n }\r\n\r\n return displayPageNumbers;\r\n }\r\n\r\n\r\n didClickPageNumber(pageNumber: number) {\r\n this.gotoPageNumber(pageNumber);\r\n }\r\n\r\n\r\n gotoPageNumber(pageNumber: number) {\r\n const urlPageNumber = ((this.urlPageNumber || '') !== '' ? Number(this.urlPageNumber) : null);\r\n\r\n if (pageNumber !== urlPageNumber) {\r\n this.myWarrantiesService.lastPageNumberLoaded = pageNumber;\r\n\r\n let url = '';\r\n\r\n if (this.urlPageNumber) {\r\n url += '../';\r\n }\r\n\r\n url += String(pageNumber);\r\n\r\n this.router.navigate([url], { relativeTo: this.route });\r\n }\r\n }\r\n\r\n\r\n\r\n didClickPlan(plan: Plan) {\r\n const url = '/plan-order/' + String(plan.planID);\r\n\r\n this.router.navigate([url]);\r\n }\r\n\r\n\r\n didClickNewApplication() {\r\n const url = '/plan-order/clear-application';\r\n\r\n this.router.navigate([url]);\r\n }\r\n\r\n\r\n shouldDisplayQuickStat(planStatusQuickStats: PlanStatusQuickStats): boolean {\r\n return planStatusQuickStats.code.toLowerCase() === 'paid' ||\r\n !(this.authenticationService.productOffice && this.authenticationService.productOffice.homeBuyerEmailRequiredFlag);\r\n }\r\n\r\n shouldDisplaySearch(): boolean {\r\n if (this.productOfficeToolbox && this.productOfficeToolbox.autoLoginGuestGUID === '') {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\nenum PageStatus {\r\n none = 10,\r\n loadInProgress = 20,\r\n loadSuccess = 30,\r\n loadEmpty = 40\r\n}\r\n\r\n\r\nenum SearchType {\r\n planNumber = 10,\r\n date = 20,\r\n propertyAddress = 30,\r\n customer = 40\r\n}\r\n\r\n\r\ninterface PlanStatusQuickStats {\r\n code: string;\r\n description: string;\r\n formattedPlanCount: string;\r\n statusFilter: string;\r\n}\r\n\r\n","\r\n\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlSegment,\r\n UrlSerializer\r\n} from '@angular/router';\r\nimport {SessionStorage} from '@orhp/phx-localstorage-ui-module';\r\nimport {RoutingUtility} from '@orhp/phx-common-ui-module';\r\nimport {MyWarrantiesService} from './my-warranties.service';\r\n\r\n@Injectable()\r\n\r\nexport class MyWarrantiesGuard implements CanActivate {\r\n\r\n constructor(private router: Router,\r\n private urlSerializer: UrlSerializer,\r\n private myWarrantiesService: MyWarrantiesService\r\n ) { }\r\n\r\n\r\n\r\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n const urlTree = this.urlSerializer.parse(state.url);\r\n\r\n const lastPageNumberLoaded = this.myWarrantiesService.lastPageNumberLoaded;\r\n const pageNumber = (lastPageNumberLoaded ? lastPageNumberLoaded : 1);\r\n\r\n const urlSegment = new UrlSegment(String(pageNumber), {});\r\n RoutingUtility.appendUrlSegmentToTree(urlTree, urlSegment);\r\n\r\n this.router.navigateByUrl(urlTree);\r\n\r\n return false;\r\n }\r\n\r\n\r\n}\r\n\r\n","\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {SessionStorage} from '@orhp/phx-localstorage-ui-module';\r\nimport {PhxLoginService} from '@orhp/phx-common-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\n\r\n@Injectable()\r\n\r\nexport class MyWarrantiesService {\r\n\r\n @SessionStorage('phx.toolbox.ui.myWarranties.lastPageNumberLoaded')\r\n lastPageNumberLoaded: number;\r\n\r\n @SessionStorage('phx.toolbox.ui.myWarranties.lastSearchType')\r\n lastSearchType: number;\r\n\r\n @SessionStorage('phx.toolbox.ui.myWarranties.lastSearchText')\r\n lastSearchText: string;\r\n\r\n @SessionStorage('phx.toolbox.ui.myWarranties.lastLongTermFlag')\r\n lastLongTermFlag: boolean;\r\n\r\n @SessionStorage('phx.toolbox.ui.myWarranties.lastTerritorySearchResultsFlag')\r\n lastTerritorySearchResultsFlag: boolean;\r\n\r\n\r\n constructor(private loginService: PhxLoginService) {\r\n\r\n // on login success, clear saved info\r\n this.loginService.onLoginSuccess.push(Observable.create((subscriber: Subscriber) => {\r\n this.clearSavedInfo();\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }));\r\n\r\n\r\n // on login failure, clear saved info\r\n this.loginService.onLoginFailure.push(Observable.create((subscriber: Subscriber) => {\r\n this.clearSavedInfo();\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }));\r\n\r\n\r\n // on logout\r\n this.loginService.onLogout.push(Observable.create((subscriber: Subscriber) => {\r\n this.clearSavedInfo();\r\n\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }));\r\n\r\n }\r\n\r\n\r\n clearSavedInfo() {\r\n this.lastPageNumberLoaded = null;\r\n this.lastSearchType = null;\r\n this.lastSearchText = null;\r\n this.lastLongTermFlag = null;\r\n this.lastTerritorySearchResultsFlag = null;\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"\\r\\n
    \\r\\n\\r\\n
    \\r\\n Skip to Page:\\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n ...\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n ...\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n
    \\r\\n\"","module.exports = \"\"","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {ArrayUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Component({\r\n selector: 'app-page-selector',\r\n templateUrl: './page-selector-component.html',\r\n styleUrls: [\r\n './page-selector.component.scss'\r\n ]\r\n})\r\n\r\nexport class PageSelectorComponent {\r\n\r\n @Input()\r\n totalItems: number;\r\n\r\n @Input()\r\n currentPageNumber: number;\r\n\r\n @Input()\r\n itemsPerPage: number;\r\n\r\n @Output()\r\n onPageNumberSelection = new EventEmitter();\r\n\r\n\r\n\r\n get minPageNumber(): number {\r\n return 1;\r\n }\r\n\r\n\r\n get totalPageCount(): number {\r\n return Math.ceil(this.totalItems / this.itemsPerPage);\r\n }\r\n\r\n\r\n activeGroupPageCount = 6;\r\n\r\n\r\n shouldDisplayPaging(): boolean {\r\n let flag = true;\r\n\r\n if (!this.totalItems) {\r\n flag = false;\r\n }\r\n\r\n if (!this.currentPageNumber) {\r\n flag = false;\r\n }\r\n\r\n if (!this.itemsPerPage) {\r\n flag = false;\r\n }\r\n\r\n if (flag) {\r\n flag = flag && (this.totalPageCount > 1);\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n leftPageNumbers(): number[] {\r\n const pageNumbers = [this.minPageNumber];\r\n\r\n return pageNumbers;\r\n }\r\n\r\n\r\n middlePageNumbers(): number[] {\r\n const pageNumbers = [];\r\n\r\n let minPageNumber = this.currentPageNumber - (this.activeGroupPageCount / 2);\r\n\r\n if (minPageNumber <= 1) {\r\n minPageNumber = 2;\r\n }\r\n\r\n let maxPageNumber = this.currentPageNumber + (this.activeGroupPageCount / 2);\r\n\r\n if (maxPageNumber >= this.totalPageCount) {\r\n maxPageNumber = this.totalPageCount - 1;\r\n }\r\n\r\n for (let indexPageNumber = minPageNumber; indexPageNumber <= maxPageNumber; indexPageNumber++) {\r\n pageNumbers.push(indexPageNumber);\r\n }\r\n\r\n return pageNumbers;\r\n }\r\n\r\n\r\n rightPageNumbers(): number[] {\r\n const pageNumbers = [this.totalPageCount];\r\n\r\n return pageNumbers;\r\n }\r\n\r\n\r\n\r\n shouldDisplayLeftEllipse(): boolean {\r\n const leftNumbers = this.leftPageNumbers();\r\n const middleNumbers = this.middlePageNumbers();\r\n\r\n let flag = true;\r\n\r\n if (!middleNumbers.length) {\r\n flag = false;\r\n\r\n } else if (!!leftNumbers.length) {\r\n if (leftNumbers[leftNumbers.length - 1] === (middleNumbers[0] - 1)) {\r\n flag = false;\r\n }\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n shouldDisplayRightEllipse(): boolean {\r\n const rightNumbers = this.rightPageNumbers();\r\n const middleNumbers = this.middlePageNumbers();\r\n\r\n let flag = true;\r\n\r\n if (!middleNumbers.length) {\r\n flag = false;\r\n\r\n } else if (!!rightNumbers.length) {\r\n if (middleNumbers[middleNumbers.length - 1] === (rightNumbers[0] - 1)) {\r\n flag = false;\r\n }\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n isCurrentPageNumber(pageNumber: number): boolean {\r\n return (this.currentPageNumber === pageNumber);\r\n }\r\n\r\n\r\n isFirstPage(): boolean {\r\n return (this.currentPageNumber === this.minPageNumber);\r\n }\r\n\r\n\r\n isLastPage(): boolean {\r\n return (this.currentPageNumber === this.totalPageCount);\r\n }\r\n\r\n\r\n didClickPageNumber(pageNumber: number) {\r\n this.onPageNumberSelection.emit(pageNumber);\r\n }\r\n\r\n\r\n didClickPreviousPage() {\r\n this.onPageNumberSelection.emit(this.currentPageNumber - 1);\r\n }\r\n\r\n\r\n didClickNextPage() {\r\n this.onPageNumberSelection.emit(this.currentPageNumber + 1);\r\n }\r\n\r\n\r\n}\r\n\r\n","module.exports = \"\\r\\n

    \\r\\n {{featureTitle}}\\r\\n

    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n {{loadingMessage}}, please wait...\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n We've successfully loaded your {{featureTitle}}, you're now being redirected.\\r\\n
    \\r\\n\\r\\n
    \\r\\n If you're not automatically redirected, click here to continue.\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n There was a problem loading your {{featureTitle}}.\\r\\n
    \\r\\n\\r\\n
    \\r\\n Please try again. We apologize for any inconvenience.\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n You must be logged in to use the {{featureTitle}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n or\\r\\n\\r\\n \\r\\n\\r\\n to continue.\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\"","import {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, Event, NavigationEnd, Router} from '@angular/router';\r\nimport {LegacyLoginResult} from '../login/model/legacy-login-result';\r\nimport {AuthenticationService} from '../login/service';\r\nimport {ActivityResult, PhxSystemService, PhxUserLoginTokenService, UserLoginToken} from '@orhp/phx-common-ui-module';\r\nimport {Subscription} from 'rxjs/Subscription';\r\n\r\n@Component({\r\n selector: 'app-legacy-toolbox',\r\n templateUrl: './legacy-toolbox.component.html',\r\n styleUrls: []\r\n})\r\n\r\nexport class LegacyToolboxComponent implements OnInit, OnDestroy {\r\n\r\n get redirectCode(): string {\r\n return (this.route.snapshot.params['redirectTo'] || '').toLowerCase();\r\n }\r\n\r\n\r\n get loadingMessage(): string {\r\n const title = 'Loading ' + this.featureTitle;\r\n return title;\r\n }\r\n\r\n\r\n get featureTitle(): string {\r\n let title: string = null;\r\n\r\n switch (this.redirectCode) {\r\n case 'marketing-tools':\r\n title = 'Marketing Tools';\r\n break;\r\n\r\n case 'ae-toolbox':\r\n title = 'Reports Center';\r\n break;\r\n }\r\n\r\n return title;\r\n }\r\n\r\n\r\n\r\n pageChangeSubscription: Subscription = null;\r\n\r\n pageStatus = PageStatus.none;\r\n\r\n\r\n // valid legacy codes\r\n legacyCodes = ['marketing-tools', 'ae-toolbox'];\r\n\r\n\r\n constructor(private route: ActivatedRoute,\r\n private router: Router,\r\n private systemService: PhxSystemService,\r\n private userLoginTokenService: PhxUserLoginTokenService,\r\n private authenticationService: AuthenticationService) {\r\n\r\n }\r\n\r\n\r\n ngOnInit() {\r\n // validate the redirect code\r\n this.validateRedirectCode();\r\n\r\n // if the user is not logged in\r\n if (!this.authenticationService.loggedIn()) {\r\n this.pageStatus = PageStatus.login;\r\n\r\n // if the user is logged in\r\n } else {\r\n this.registerNavigationHandler();\r\n\r\n this.performLegacyLogin();\r\n }\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.pageChangeSubscription) {\r\n this.pageChangeSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n\r\n\r\n registerNavigationHandler() {\r\n // subscribe to a page change event\r\n this.pageChangeSubscription = this.router.events.subscribe((event: Event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.performLegacyLogin();\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n performLegacyLogin() {\r\n // perform a legacy login\r\n this.pageStatus = PageStatus.loading;\r\n\r\n // retrieve a user login token\r\n this.userLoginTokenService.generateCurrentUserJumpToken().subscribe((result: ActivityResult) => {\r\n const token = result.object;\r\n\r\n this.redirectWithLoginToken(this.redirectCode, token.guid);\r\n });\r\n\r\n /*\r\n\r\n this.authenticationService.legacyLogin().subscribe((loginResult: LegacyLoginResult) => {\r\n const loginSuccessFlag = (loginResult ? loginResult.loginSuccessFlag : false);\r\n\r\n // if the login was successful\r\n if (loginSuccessFlag) {\r\n this.pageStatus = PageStatus.success;\r\n\r\n // determine where to go\r\n switch (this.redirectCode) {\r\n case 'marketing-tools':\r\n this.redirectToMarketingTools();\r\n break;\r\n\r\n case 'ae-toolbox':\r\n this.redirectToAeToolbox();\r\n break;\r\n }\r\n\r\n // if the login was unsuccessful\r\n } else {\r\n this.pageStatus = PageStatus.failure;\r\n\r\n }\r\n });\r\n\r\n */\r\n }\r\n\r\n\r\n\r\n shouldDisplayLogin(): boolean {\r\n return (this.pageStatus === PageStatus.login);\r\n }\r\n\r\n\r\n shouldDisplayLoading(): boolean {\r\n return (this.pageStatus === PageStatus.loading);\r\n }\r\n\r\n\r\n shouldDisplaySuccess(): boolean {\r\n return (this.pageStatus === PageStatus.success);\r\n }\r\n\r\n shouldDisplayFailure(): boolean {\r\n return (this.pageStatus === PageStatus.failure);\r\n }\r\n\r\n\r\n\r\n // validates the redirect code\r\n validateRedirectCode(): void {\r\n let codeFoundFlag = false;\r\n\r\n this.legacyCodes.forEach((indexCode: string) => {\r\n if (indexCode.toLowerCase() === this.redirectCode) {\r\n codeFoundFlag = true;\r\n }\r\n });\r\n\r\n // if the code wasn't found, redirect to the home page\r\n if (!codeFoundFlag) {\r\n this.router.navigate(['/'], {});\r\n }\r\n }\r\n\r\n\r\n legacyUrlFromRedirectCode(code: string): string {\r\n let gotoUrl: string = null;\r\n\r\n switch (code) {\r\n case RedirectCode.marketingTools:\r\n gotoUrl = this.systemService.legacyToolboxUrl + 'tools/ct_portal.cfm';\r\n break;\r\n\r\n case RedirectCode.aeToolbox:\r\n gotoUrl = this.systemService.legacyToolboxUrl + 'ae_toolbox/';\r\n break;\r\n }\r\n\r\n return gotoUrl;\r\n }\r\n\r\n\r\n\r\n\r\n redirectWithLoginToken(redirectCode: string, loginToken: string) {\r\n // pull the URL to redirect to\r\n let gotoUrl = this.legacyUrlFromRedirectCode(redirectCode);\r\n\r\n // append the login token\r\n const urlAppender = (gotoUrl.indexOf('?') === -1 ? '?' : ':');\r\n\r\n gotoUrl += urlAppender + 'styxFerryman=' + encodeURIComponent(loginToken);\r\n\r\n window.open(gotoUrl);\r\n }\r\n\r\n\r\n\r\n didClickLogin() {\r\n this.router.navigate(['/'], {});\r\n }\r\n\r\n\r\n didClickCreateAccount() {\r\n this.router.navigate(['/signup'], {});\r\n }\r\n\r\n}\r\n\r\n\r\n\r\nenum RedirectCode {\r\n marketingTools = 'marketing-tools',\r\n aeToolbox = 'ae-toolbox'\r\n}\r\n\r\n\r\nenum PageStatus {\r\n none = 10,\r\n loading = 20,\r\n success = 30,\r\n failure = 40,\r\n login = 50\r\n}\r\n","export * from './model'\r\nexport * from './service'\r\n","module.exports = \"\\r\\n

    \\r\\n Logging In\\r\\n

    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Please wait...\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n There was a problem logging you in.\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n You have been successfully logged in.\\r\\n
    \\r\\n
    \\r\\n\\r\\n\"","module.exports = \"\"","import {Component, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, ActivatedRouteSnapshot, Router} from '@angular/router';\r\nimport {AuthenticationService} from './service';\r\nimport {PhxLoginService} from '@orhp/phx-common-ui-module';\r\n\r\n@Component({\r\n selector: 'app-login-passthru',\r\n templateUrl: './login-passthru.component.html',\r\n styleUrls: [\r\n './login-passthru.component.scss'\r\n ]\r\n})\r\n\r\nexport class LoginPassthruComponent implements OnInit {\r\n\r\n\r\n get urlLoginTokenGUID(): string {\r\n return this.route.snapshot.params['loginTokenGUID'] || '';\r\n }\r\n\r\n\r\n get urlRedirectTo(): string {\r\n return this.route.snapshot.params['redirectTo'] || '';\r\n }\r\n\r\n\r\n get urlExternalRedirectTo(): string {\r\n return this.route.snapshot.params['externalRedirectTo'] || '';\r\n }\r\n\r\n\r\n\r\n loginStatus = LoginStatus.inProgress;\r\n\r\n\r\n constructor(private route: ActivatedRoute,\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private loginService: PhxLoginService\r\n ) {}\r\n\r\n\r\n ngOnInit() {\r\n this.performLogin();\r\n }\r\n\r\n\r\n performLogin() {\r\n // logout first\r\n this.authenticationService.logout();\r\n\r\n // perform a login\r\n this.authenticationService.loginPassthru(this.urlLoginTokenGUID).then((resultFlag: boolean) => {\r\n if (resultFlag) {\r\n this.loginStatus = LoginStatus.success;\r\n\r\n if (this.urlRedirectTo !== '') {\r\n const redirectTo = '/' + this.urlRedirectTo;\r\n\r\n this.router.navigate([redirectTo], {});\r\n\r\n } else if (this.urlExternalRedirectTo !== '') {\r\n window.location.href = this.urlExternalRedirectTo;\r\n\r\n } else {\r\n this.router.navigate(['/'], {});\r\n }\r\n\r\n\r\n } else {\r\n this.loginStatus = LoginStatus.failure;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n isLoginInProgress(): boolean {\r\n return (this.loginStatus === LoginStatus.inProgress);\r\n }\r\n\r\n\r\n isLoginSuccess(): boolean {\r\n return (this.loginStatus === LoginStatus.success);\r\n }\r\n\r\n\r\n isLoginFailure(): boolean {\r\n return (this.loginStatus === LoginStatus.failure);\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n\r\nenum LoginStatus {\r\n inProgress = 10,\r\n success = 20,\r\n failure = 30\r\n}\r\n\r\n","module.exports = \"\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n Logging in, please wait...\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n {{loginFailureMessageParts.messageFirstPart}}{{loginFailureMessageParts.resetPasswordMessagePart}}{{loginFailureMessageParts.messageLastPart}}\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n Your account has not been validated.\\r\\n\\r\\n Please follow the instructions in the email message previously sent to activate your account.\\r\\n\\r\\n If you need to re-send the email, click here.\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n Log in or\\r\\n\\r\\n \\r\\n create your Toolbox account\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\r\\n\"","module.exports = \"button.btn-login{width:150px}\\n\"","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {AuthenticationService} from './service/authentication.service';\r\nimport {Router} from '@angular/router';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupService} from '../_modules/office-agent-lookup/_services/lookup.service';\r\nimport {SystemMessageLookupService} from '@orhp/phx-system-ui-module';\r\n\r\n@Component({\r\n selector: 'app-login-form',\r\n templateUrl: 'login.component.html',\r\n styleUrls: [\r\n './login.component.scss'\r\n ]\r\n})\r\n\r\nexport class LoginComponent implements OnInit {\r\n\r\n @Input() modalFlag = true;\r\n @Input() displayCancelButton = true;\r\n @Output() onLoginStatusChange = new EventEmitter();\r\n\r\n loginFailureMessageParts: any = null;\r\n\r\n\r\n // login status\r\n private _loginStatus: LoginStatus = LoginStatus.notAttempted;\r\n\r\n get loginStatus(): LoginStatus {\r\n return this._loginStatus;\r\n }\r\n\r\n set loginStatus(loginStatus: LoginStatus) {\r\n if (loginStatus !== this._loginStatus) {\r\n this._loginStatus = loginStatus;\r\n\r\n this.onLoginStatusChange.emit(this._loginStatus);\r\n }\r\n }\r\n\r\n // last username\r\n get lastUsername(): string {\r\n return this.authenticationService.lastUsername;\r\n }\r\n\r\n set lastUsername(lastUsername: string) {\r\n this.authenticationService.lastUsername = lastUsername;\r\n }\r\n\r\n\r\n @ViewChild('usernameInput')\r\n usernameInput: ElementRef;\r\n\r\n @ViewChild('passwordInput')\r\n passwordInput: ElementRef;\r\n\r\n\r\n username = (this.lastUsername || '');\r\n password = '';\r\n\r\n\r\n constructor(private authenticationService: AuthenticationService,\r\n private router: Router,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private systemMessageLookupService: SystemMessageLookupService) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n // if no username was saved, focus the username\r\n if ((this.lastUsername || '') === '') {\r\n this.usernameInput.nativeElement.focus();\r\n\r\n // if a username was saved, focus the password\r\n } else {\r\n this.passwordInput.nativeElement.focus();\r\n }\r\n }\r\n\r\n\r\n // cancels the login\r\n didClickCancel() {\r\n this.loginStatus = LoginStatus.cancelled;\r\n\r\n // if this is a modal login\r\n if (this.modalFlag) {\r\n this.authenticationService.displayModalLoginFlag = false;\r\n\r\n this.authenticationService.cancelLogin();\r\n }\r\n }\r\n\r\n\r\n // performs the login\r\n didClickLogin() {\r\n this.loginStatus = LoginStatus.inProgress;\r\n const username = this.username.trim();\r\n\r\n this.authenticationService.login(username, this.password).then(\r\n (loginSuccessFlag: boolean) => {\r\n // if the login was successful\r\n if (loginSuccessFlag) {\r\n this.lastUsername = username;\r\n\r\n this.loginStatus = LoginStatus.success;\r\n\r\n if (this.modalFlag) {\r\n this.authenticationService.displayModalLoginFlag = false;\r\n }\r\n\r\n // if the login was not successful\r\n } else {\r\n\r\n this.authenticationService.checkEmailValidation(username).then(\r\n (isValidated: boolean) => {\r\n\r\n if (isValidated) {\r\n this.handleLoginFailure();\r\n\r\n } else {\r\n this.loginStatus = LoginStatus.notValidated;\r\n }\r\n },\r\n (e: any) => {\r\n console.log(e);\r\n this.handleLoginFailure();\r\n }\r\n );\r\n }\r\n },\r\n (e: any) => {\r\n console.log(e);\r\n this.handleLoginFailure();\r\n }\r\n );\r\n }\r\n\r\n\r\n\r\n handleLoginFailure() {\r\n // retrieve the login failure system message if not present\r\n this.authenticationService.getLoginFailureMessageObject().then((jsonObject: any) => {\r\n\r\n const messageValues = jsonObject;\r\n\r\n const primaryMessage = messageValues.primaryMessage;\r\n const resetPasswordMessage = messageValues.resetPasswordMessage;\r\n\r\n // look for the reset message link item\r\n const linkCode = '\\$\\$resetMessageLink\\$\\$';\r\n\r\n const primaryMessageResetLinkPosition = primaryMessage.indexOf(linkCode);\r\n\r\n let messageFirstPart: string = null;\r\n let messageLastPart: string = null;\r\n\r\n if (primaryMessageResetLinkPosition) {\r\n messageFirstPart = primaryMessage.substr(0, primaryMessageResetLinkPosition);\r\n\r\n const messageLastPartStartIndex = primaryMessageResetLinkPosition + linkCode.length;\r\n const messageLastPartLength = primaryMessage.length - messageLastPartStartIndex;\r\n messageLastPart = primaryMessage.substr(messageLastPartStartIndex, messageLastPartLength);\r\n\r\n } else {\r\n messageFirstPart = primaryMessage;\r\n messageLastPart = '';\r\n }\r\n\r\n this.loginFailureMessageParts = {\r\n messageFirstPart: messageFirstPart,\r\n messageLastPart: messageLastPart,\r\n resetPasswordMessagePart: resetPasswordMessage\r\n };\r\n\r\n this.loginStatus = LoginStatus.failure;\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n didClickSignUp() {\r\n this.authenticationService.displayModalLoginFlag = false;\r\n\r\n this.router.navigate(['/signup']);\r\n }\r\n\r\n\r\n didClickReset() {\r\n this.authenticationService.displayModalLoginFlag = false;\r\n\r\n this.router.navigate(['/account/reset']);\r\n }\r\n\r\n\r\n didClickResendValidation() {\r\n this.authenticationService.displayModalLoginFlag = false;\r\n\r\n this.router.navigate(['/account/resend/validation/', this.username]);\r\n }\r\n\r\n\r\n shouldDisableLoginFields(): boolean {\r\n return (this.loginStatus === LoginStatus.inProgress);\r\n }\r\n\r\n\r\n shouldDisplayLoginError(): boolean {\r\n return (this.loginStatus === LoginStatus.failure);\r\n }\r\n\r\n\r\n shouldDisplayLoginInProgress(): boolean {\r\n return (this.loginStatus === LoginStatus.inProgress);\r\n }\r\n\r\n shouldDisplayEmailValidationError(): boolean {\r\n return (this.loginStatus === LoginStatus.notValidated);\r\n }\r\n}\r\n\r\n\r\nexport enum LoginStatus {\r\n notAttempted = 10,\r\n inProgress = 20,\r\n failure = 30,\r\n success = 40,\r\n cancelled = 50,\r\n notValidated = 60\r\n}\r\n\r\n\r\ninterface ILoginFailureMessageObject {\r\n primaryMessage: string;\r\n resetPasswordMessage: string;\r\n}\r\n\r\n\r\ninterface ILoginFailureDisplayText {\r\n messageFirstPart: string;\r\n messageLastPart: string;\r\n resetPasswordMessagePart: string;\r\n}\r\n\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {LoginComponent} from \"./login.component\";\r\nimport {HttpModule} from \"@angular/http\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {BrowserModule} from \"@angular/platform-browser\";\r\nimport {WebStorageModule} from '@orhp/phx-localstorage-ui-module';\r\nimport {AuthGuard} from \"./service/auth.guard\";\r\nimport {AuthenticationService} from \"./service/authentication.service\";\r\nimport {UserService} from \"./service/user.service\";\r\nimport {WelcomeComponent} from './welcome.component';\r\nimport {LogoutComponent} from \"./logout.component\";\r\nimport {LoginPassthruComponent} from './login-passthru.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n BrowserModule,\r\n FormsModule,\r\n HttpModule,\r\n WebStorageModule\r\n ],\r\n providers: [\r\n AuthGuard,\r\n AuthenticationService,\r\n UserService\r\n ],\r\n declarations: [\r\n LoginComponent,\r\n LoginPassthruComponent,\r\n WelcomeComponent,\r\n LogoutComponent\r\n ],\r\n exports: [\r\n LoginComponent,\r\n WelcomeComponent\r\n ]\r\n\r\n})\r\nexport class LoginModule { }\r\n","import {Component, OnDestroy, OnInit} from \"@angular/core\";\r\nimport {AuthenticationService} from \"./service/authentication.service\";\r\nimport {Router} from \"@angular/router\";\r\nimport {OfficeAgentLookupService} from \"../_modules/office-agent-lookup/_services/lookup.service\";\r\n\r\n@Component({\r\n selector: 'phx-logout',\r\n template: '...'\r\n})\r\nexport class LogoutComponent implements OnInit {\r\n\r\n constructor(private authenticationService: AuthenticationService, private officeAgentLookupService: OfficeAgentLookupService, private router: Router) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.authenticationService.logout();\r\n this.officeAgentLookupService.clearAllData();\r\n this.router.navigate(['/login']);\r\n }\r\n\r\n}\r\n","export * from '@orhp/phx-common-ui-module';\r\n","\r\n\r\nexport class LegacyLoginResult {\r\n\r\n loginAttemptedFlag = false;\r\n loginSuccessFlag = false;\r\n\r\n}\r\n\r\n\r\nexport interface ILegacyLoginResult {\r\n loginAttemptedFlag: string;\r\n loginSuccessFlag: string;\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';\r\nimport {LocalStorage} from '@orhp/phx-localstorage-ui-module';\r\nimport {LoginToken} from '@orhp/phx-common-ui-module';\r\nimport {PhxLoginService} from '@orhp/phx-common-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {AuthenticationService} from './authentication.service';\r\n\r\n@Injectable()\r\nexport class AuthGuard implements CanActivate {\r\n\r\n get authenticationService(): AuthenticationService {\r\n return this.loginService.authenticationService;\r\n }\r\n\r\n constructor(private router: Router,\r\n private loginService: PhxLoginService,\r\n private systemService: PhxSystemService\r\n ) { }\r\n\r\n\r\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const observable: Observable = Observable.create((subscriber: Subscriber) => {\r\n\r\n this.systemService.loadAppSettings().subscribe((appSettingsLoadedFlag: boolean) => {\r\n\r\n // if the user is not logged in\r\n if (!this.authenticationService.loggedIn()) {\r\n\r\n const url = '/login';\r\n\r\n this.router.navigate([url]);\r\n\r\n subscriber.next(false);\r\n subscriber.complete();\r\n\r\n // if the user is logged in, validate their login\r\n } else {\r\n subscriber.next(true);\r\n subscriber.complete();\r\n }\r\n });\r\n\r\n });\r\n\r\n return observable;\r\n }\r\n}\r\n","import {\r\n Customer,\r\n CustomerDomainFactoryService,\r\n CustomerLookupValueService,\r\n Employer,\r\n EmployerDomainFactoryService,\r\n JobRole\r\n} from '@orhp/phx-customer-ui-module';\r\nimport {IProductOffice, ProductDomainFactoryService, ProductOffice} from '@orhp/phx-product-ui-module';\r\nimport {AcctExec} from '@orhp/phx-geography-ui-module';\r\nimport {\r\n LoginToken,\r\n MessagingFormatter,\r\n PhxHttpClientService,\r\n PhxHttpService,\r\n PhxLoginService, PhxSystemService,\r\n UserAuthorities\r\n} from '@orhp/phx-common-ui-module';\r\nimport {UserService} from './user.service';\r\nimport {Headers, Http, RequestOptionsArgs, Response} from '@angular/http';\r\nimport {EventEmitter, Injectable} from '@angular/core';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {SystemMessage, SystemMessageLookupService} from '@orhp/phx-system-ui-module';\r\nimport {ILegacyLoginResult, LegacyLoginResult} from '../model/legacy-login-result';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {PlanOrderAuthService} from '../../_modules/plan-order/_services/plan-order-auth.service';\r\nimport {LocalStorage, SessionStorage} from '@orhp/phx-localstorage-ui-module';\r\nimport {CustomUrlParser} from '../../_src/custom-url-parser';\r\nimport {Router} from '@angular/router';\r\n\r\n@Injectable()\r\nexport class AuthenticationService {\r\n\r\n\r\n /**\r\n * Stores the URL product office\r\n * @private\r\n */\r\n private _urlProductOffice: ProductOffice;\r\n\r\n\r\n /**\r\n * Returns the URL product office\r\n */\r\n get urlProductOffice(): ProductOffice {\r\n return this._urlProductOffice;\r\n }\r\n\r\n\r\n /**\r\n * Sets the URL Product office\r\n * @param urlProductOffice\r\n */\r\n set urlProductOffice(urlProductOffice: ProductOffice) {\r\n this._urlProductOffice = urlProductOffice;\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Stores the current product/office\r\n * @private\r\n */\r\n private _productOffice: ProductOffice;\r\n\r\n\r\n /**\r\n * Returns the current product/office\r\n */\r\n get productOffice(): ProductOffice {\r\n return this._urlProductOffice || this._productOffice;\r\n }\r\n\r\n\r\n /**\r\n * Sets the product/office\r\n * @param productOffice\r\n */\r\n set productOffice(productOffice: ProductOffice) {\r\n this._productOffice = productOffice;\r\n\r\n if (productOffice && productOffice.toolbox) {\r\n this.customUrlCode = productOffice.toolbox.customUrlPath;\r\n } else {\r\n this.customUrlCode = null;\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n * Compatibility function - Returns the current product/office\r\n */\r\n get productOffices(): ProductOffice[] {\r\n return [this.productOffice];\r\n }\r\n\r\n\r\n /**\r\n * Stores the Custom URL Code\r\n */\r\n @SessionStorage('phx.toolbox.ui.CustomUrlCode')\r\n customUrlCode: string;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Stores the current customer\r\n * @private\r\n */\r\n private _customer: Customer;\r\n\r\n\r\n /**\r\n * Returns the current customer\r\n */\r\n get customer(): Customer {\r\n return this._customer;\r\n }\r\n\r\n\r\n /**\r\n * Sets the customer\r\n * @param customer\r\n */\r\n set customer(customer: Customer) {\r\n this._customer = customer;\r\n }\r\n\r\n\r\n\r\n /**\r\n * Returns the current employer\r\n */\r\n get employer(): Employer {\r\n return (this.customer ? this.customer.employer : null);\r\n }\r\n\r\n\r\n /**\r\n * Stores the job role\r\n * @private\r\n */\r\n private _jobRole: JobRole;\r\n\r\n\r\n /**\r\n * Returns the job role\r\n */\r\n get jobRole(): JobRole {\r\n return this._jobRole;\r\n }\r\n\r\n\r\n /**\r\n * Stores the guest guid\r\n * @private\r\n */\r\n private _guestGUID: string;\r\n\r\n\r\n /**\r\n * Returns the guest gui\r\n */\r\n get guestGUID(): string {\r\n return this._guestGUID;\r\n }\r\n\r\n\r\n /**\r\n * Local storage login token JSON\r\n */\r\n @LocalStorage('phx.toolbox.ui.LocalStorageLoginTokenJson')\r\n localStorageLoginTokenJson: any;\r\n\r\n\r\n /**\r\n * Session storage login token JSON\r\n */\r\n @SessionStorage('phx.toolbox.ui.SessionStorageLoginTokenJson')\r\n sessionStorageLoginTokenJson: any;\r\n\r\n\r\n\r\n\r\n /**\r\n * Stores the login token\r\n * @private\r\n */\r\n private _loginToken: LoginToken;\r\n\r\n\r\n\r\n /**\r\n * Returns the login token\r\n */\r\n get loginToken(): LoginToken {\r\n if (!this._loginToken) {\r\n // attempt to pull a login token\r\n if (this.localStorageLoginTokenJson) {\r\n this._loginToken = new LoginToken(this.localStorageLoginTokenJson);\r\n } else if (this.sessionStorageLoginTokenJson) {\r\n this._loginToken = new LoginToken(this.sessionStorageLoginTokenJson);\r\n }\r\n }\r\n\r\n return this._loginToken;\r\n }\r\n\r\n\r\n\r\n /**\r\n * Stores account executives\r\n * @private\r\n */\r\n private _acctExecs: AcctExec[];\r\n\r\n\r\n /**\r\n * Returns account executives\r\n */\r\n get acctExecs(): AcctExec[] {\r\n return (this._acctExecs ? this._acctExecs.filter(() => true ) : null);\r\n }\r\n\r\n\r\n /**\r\n * Sets account executives\r\n * @param acctExecs\r\n */\r\n set acctExecs(acctExecs: AcctExec[]) {\r\n this._acctExecs = (acctExecs ? acctExecs.filter(() => true) : null);\r\n }\r\n\r\n\r\n\r\n /**\r\n * Stores user territories\r\n * @private\r\n */\r\n private _userTerritories: string[];\r\n\r\n\r\n /**\r\n * Returns user territories\r\n */\r\n get userTerritories(): string[] {\r\n return (this._userTerritories ? this._userTerritories.filter(() => true) : null);\r\n }\r\n\r\n\r\n\r\n /**\r\n * Returns the telemarketing employer flag\r\n */\r\n get telemarketingEmployerFlag(): boolean {\r\n return (this.employer && this.employer.employerType && this.employer.employerType.telemarketingFlag);\r\n }\r\n\r\n\r\n /**\r\n * Stores user authorities\r\n * @private\r\n */\r\n private _userAuthorities: UserAuthorities;\r\n\r\n\r\n /**\r\n * Returns user authorities\r\n */\r\n get userAuthorities(): UserAuthorities {\r\n return this._userAuthorities;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Event emitter for login completion\r\n */\r\n readonly onLoginCompletion = new EventEmitter();\r\n\r\n\r\n\r\n /**\r\n * Is the user an ORHP user?\r\n */\r\n get orhpUserFlag(): boolean {\r\n return (this._userAuthorities ? this._userAuthorities.hasAuthority('ROLE_ORHP') : false);\r\n }\r\n\r\n\r\n\r\n /**\r\n * Is the user an ORHP MIS user?\r\n */\r\n get orhpMisUserFlag(): boolean {\r\n return (this._userAuthorities ? this._userAuthorities.hasAuthority('ROLE_ORHP_MIS') : false);\r\n }\r\n\r\n\r\n /**\r\n * Stores whether to display a modal login\r\n */\r\n displayModalLoginFlag = false;\r\n\r\n\r\n /**\r\n * Stores the last username\r\n * TODO\r\n */\r\n lastUsername: string;\r\n\r\n\r\n\r\n /**\r\n * Event Emitter triggers a modal login event\r\n */\r\n readonly triggerModalLoginEventEmitter = new EventEmitter();\r\n\r\n\r\n /**\r\n * Event Emitter triggers a login cancellation\r\n */\r\n readonly loginCancelEventEmitter = new EventEmitter();\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Constructor\r\n * @param httpClient\r\n * @param userService\r\n * @param loginService\r\n * @param http\r\n * @param ngHttp\r\n * @param router\r\n * @param systemService\r\n * @param planOrderAuthService\r\n * @param systemMessageLookupService\r\n * @param customerDomainFactoryService\r\n * @param employerDomainFactoryService\r\n * @param customerLookupValueService\r\n * @param productDomainFactoryService\r\n */\r\n constructor(private httpClient: PhxHttpClientService,\r\n private userService: UserService,\r\n private loginService: PhxLoginService,\r\n private http: PhxHttpService,\r\n private ngHttp: Http,\r\n private router: Router,\r\n private systemService: PhxSystemService,\r\n private planOrderAuthService: PlanOrderAuthService,\r\n private systemMessageLookupService: SystemMessageLookupService,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private employerDomainFactoryService: EmployerDomainFactoryService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private productDomainFactoryService: ProductDomainFactoryService) {\r\n\r\n // inject the authentication service manually\r\n this.loginService.authenticationService = this;\r\n\r\n // set the login getter for the plan order auth\r\n this.planOrderAuthService.loggedInGetter = ((): boolean => {\r\n return this.loggedIn();\r\n });\r\n\r\n // retrieves the login token\r\n this.loginService.loginTokenGetter = (): LoginToken => {\r\n return this.loginToken;\r\n };\r\n\r\n\r\n // sets the login token\r\n this.loginService.loginTokenSetter.subscribe((loginToken: LoginToken) => {\r\n this._loginToken = loginToken;\r\n });\r\n\r\n\r\n // when a login is completed\r\n this.onLoginCompletion.subscribe((success: boolean) => {\r\n });\r\n\r\n\r\n // when a modal login window is requested\r\n this.triggerModalLoginEventEmitter.subscribe((flag: boolean) => {\r\n this.displayModalLoginFlag = flag;\r\n });\r\n\r\n\r\n // cancels a login event\r\n this.loginCancelEventEmitter.subscribe((flag: boolean) => {\r\n this.cancelLogin();\r\n });\r\n\r\n // sets up getters in the PlanOrderAuthService\r\n this.planOrderAuthService.guestGuidGetter = (): string => this.guestGUID;\r\n this.planOrderAuthService.customerGetter = (): Customer => this.customer;\r\n this.planOrderAuthService.employerGetter = (): Employer => this.employer;\r\n this.planOrderAuthService.jobRoleGetter = (): JobRole => this.jobRole;\r\n this.planOrderAuthService.productOfficeGetter = (): ProductOffice => this.productOffice;\r\n this.planOrderAuthService.userAuthoritiesGetter = (): UserAuthorities => this.userAuthorities;\r\n this.planOrderAuthService.aeTerritoriesGetter = (): string[] => this.userTerritories;\r\n this.planOrderAuthService.triggerModalLoginEventEmitterGetter = (): EventEmitter =>\r\n this.triggerModalLoginEventEmitter;\r\n this.planOrderAuthService.loginCancelEventEmitterGetter = (): EventEmitter => this.loginCancelEventEmitter;\r\n\r\n }\r\n\r\n\r\n\r\n /**\r\n * Logs the user in\r\n * @param username\r\n * @param password\r\n */\r\n login(username: string, password: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n const dbUsername = 'R:' + username;\r\n\r\n this.loginService.performLogin(dbUsername, password).subscribe((success: boolean) => {\r\n if (success) {\r\n this.loginCompletionHandler().then((completion: boolean) => {\r\n resolve(completion);\r\n });\r\n } else {\r\n resolve(false);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n /**\r\n * Logs in with an existing JWT\r\n * @param tokenText\r\n */\r\n loginWithExistingJwt(tokenText: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n\r\n // create a login token\r\n const jwt = JSON.parse(tokenText);\r\n const testToken = new LoginToken(jwt);\r\n\r\n // if the login user matches, don't refresh\r\n const existingUser = (this.loginToken ? this.loginToken.username : null);\r\n\r\n if (this.loggedIn() && (existingUser === testToken.username)) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n // attempt a login\r\n this.loginService.performLoginWithExistingJwt(tokenText).subscribe((success: boolean) => {\r\n if (success) {\r\n this.loginCompletionHandler().then((completion: boolean) => {\r\n resolve(completion);\r\n });\r\n } else {\r\n resolve(false);\r\n }\r\n });\r\n\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Logs in with a passthru token\r\n * @param guid\r\n */\r\n loginPassthru(guid: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n // attempt a login\r\n this.loginService.performUserTokenLogin(guid).subscribe((success: boolean) => {\r\n if (success) {\r\n this.loginCompletionHandler().then((completion: boolean) => {\r\n resolve(completion);\r\n });\r\n } else {\r\n resolve(false);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n legacyLogin(): Observable {\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n\r\n const url = this.systemService.legacyToolboxUrl + 'token_validate.cfm';\r\n\r\n const options = {};\r\n options.headers = new Headers();\r\n options.withCredentials = true;\r\n\r\n this.http.injectAuthorizationHeader(options.headers);\r\n\r\n this.ngHttp.get(url, options).subscribe((response: Response) => {\r\n const jsonValues = response.json();\r\n const result = new LegacyLoginResult();\r\n\r\n result.loginAttemptedFlag = MessagingFormatter.stringToBoolean(jsonValues.loginAttemptedFlag);\r\n result.loginSuccessFlag = MessagingFormatter.stringToBoolean(jsonValues.loginSuccessFlag);\r\n\r\n subscriber.next(result);\r\n subscriber.complete();\r\n\r\n }, (error: Response) => {\r\n console.log('Error with legacy login:');\r\n console.log(error);\r\n\r\n const result = new LegacyLoginResult();\r\n\r\n subscriber.next(result);\r\n subscriber.complete();\r\n });\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n\r\n /**\r\n * Should the login token be persisted in session storage instead of local storage\r\n */\r\n loginTokenPersistInSessionStorage(): boolean {\r\n let flag = false;\r\n\r\n // ORHP users go in session storage\r\n if (this.orhpUserFlag) {\r\n flag = true;\r\n }\r\n\r\n // auto-login users to in session storage\r\n const toolbox = (this.productOffice ? this.productOffice.toolbox : null);\r\n\r\n if (toolbox && toolbox.autoLoginToken) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Clears the user session\r\n */\r\n clearUserSession() {\r\n this._customer = null;\r\n this._jobRole = null;\r\n this._guestGUID = null;\r\n this._loginToken = null;\r\n this._acctExecs = null;\r\n this._userTerritories = null;\r\n this._userAuthorities = null;\r\n\r\n this.sessionStorageLoginTokenJson = null;\r\n this.localStorageLoginTokenJson = null;\r\n\r\n this.refreshPlanOrderAuth();\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Logs out\r\n */\r\n logout() {\r\n this.clearUserSession();\r\n }\r\n\r\n\r\n\r\n /**\r\n * Is the user logged in?\r\n */\r\n loggedIn(): boolean {\r\n // if there's no login token\r\n if (!this.loginToken) {\r\n return false;\r\n }\r\n\r\n // if the login token has expired\r\n const expirationDate = this.loginToken.expirationDate;\r\n\r\n if (expirationDate && (expirationDate.getTime() < (new Date()).getTime())) {\r\n return false;\r\n }\r\n\r\n // logged in\r\n return true;\r\n }\r\n\r\n\r\n /**\r\n * Returns whether the current user is an auto-login\r\n */\r\n isAutoLogin(): boolean {\r\n const toolbox = (this.productOffice ? this.productOffice.toolbox : null);\r\n return (toolbox ? !!toolbox.autoLoginToken : false);\r\n }\r\n\r\n\r\n\r\n /**\r\n * Handler for processing a login completion\r\n */\r\n loginCompletionHandler(): Promise {\r\n return new Promise((resolve, reject) => {\r\n // if the user is logged in\r\n if (this.loggedIn()) {\r\n const promises = [];\r\n promises.push(this._fetchCurrentCustomer());\r\n promises.push(this._fetchCurrentGuestGuid());\r\n promises.push(this._fetchUserTerritories());\r\n promises.push(this._fetchUserAuthorities());\r\n\r\n Promise.all(promises).then((results: any[]) => {\r\n // verify that all fetches succeeded\r\n const success = (results || []).filter((value: any): boolean => {\r\n return !!value;\r\n });\r\n\r\n if (success.length !== promises.length) {\r\n console.error('Error loading lookup values');\r\n resolve(false);\r\n return;\r\n }\r\n\r\n // handle customer result\r\n const customerResult = results[0] as ICurrentCustomer;\r\n\r\n if (customerResult) {\r\n this._customer = customerResult.customer;\r\n this._jobRole = customerResult.jobRole;\r\n\r\n const userProductOffices = customerResult.productOffices || [];\r\n const userProductOffice = (userProductOffices.length ? userProductOffices[0] : null);\r\n const userProductOfficeToolbox = (userProductOffice ? userProductOffice.toolbox : null);\r\n const userProductOfficeCustomUrl = (userProductOfficeToolbox ? userProductOfficeToolbox.customUrlPath : null) || '';\r\n\r\n const urlProductOfficeToolbox = (this.urlProductOffice ? this.urlProductOffice.toolbox : null);\r\n const urlProductOfficeCustomUrl = (urlProductOfficeToolbox ? urlProductOfficeToolbox.customUrlPath : null) || '';\r\n\r\n\r\n // is this a valid login?\r\n let validLogin = true;\r\n\r\n if (userProductOfficeCustomUrl !== urlProductOfficeCustomUrl) {\r\n validLogin = false;\r\n }\r\n\r\n // if the login isn't valid, clear the session and send the user home\r\n if (!validLogin) {\r\n this.clearUserSession();\r\n this.router.navigate(['/'], {});\r\n resolve(false);\r\n return;\r\n }\r\n\r\n if (userProductOffice) {\r\n this._productOffice = userProductOffice;\r\n }\r\n\r\n\r\n } else {\r\n this._customer = null;\r\n this._jobRole = null;\r\n this._productOffice = null;\r\n }\r\n\r\n\r\n // handle Guest GUID\r\n const guestGUID = results[1] as string;\r\n\r\n if (guestGUID) {\r\n this._guestGUID = guestGUID;\r\n } else {\r\n this._guestGUID = null;\r\n }\r\n\r\n\r\n // handle user territories\r\n const userTerritories = results[2] as string[];\r\n\r\n if ((userTerritories || []).length) {\r\n this._userTerritories = userTerritories.filter(() => true);\r\n } else {\r\n this._userTerritories = null;\r\n }\r\n\r\n\r\n // handle user authorities\r\n const authorities = results[3] as string[];\r\n this._userAuthorities = new UserAuthorities(authorities || []);\r\n\r\n\r\n // persist the login token\r\n const tokenJson = this._loginToken.jsonValues();\r\n\r\n if (this.loginTokenPersistInSessionStorage()) {\r\n this.sessionStorageLoginTokenJson = tokenJson;\r\n this.localStorageLoginTokenJson = null;\r\n } else {\r\n this.sessionStorageLoginTokenJson = null;\r\n this.localStorageLoginTokenJson = tokenJson;\r\n }\r\n\r\n\r\n // refresh the plan order auth\r\n this.refreshPlanOrderAuth();\r\n\r\n resolve(true);\r\n });\r\n\r\n } else {\r\n // clears the user session\r\n this.clearUserSession();\r\n\r\n // refresh the plan order auth\r\n this.refreshPlanOrderAuth();\r\n\r\n resolve(true);\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Fetches the current customer\r\n */\r\n private _fetchCurrentCustomer(): Promise {\r\n return new Promise((resolve, reject) => {\r\n // fetches current customer info\r\n this.httpClient.get('user/currentCustomer').subscribe((json: ICurrentCustomerResponse) => {\r\n // validate results\r\n if (json && json.customer && json.employer && json.jobRole) {\r\n // build a customer\r\n const customer = this.customerDomainFactoryService.newCustomer(json.customer);\r\n const employer = this.employerDomainFactoryService.newEmployer(json.employer);\r\n const jobRole = this.customerLookupValueService.jobRoleByCode(json.jobRole);\r\n\r\n customer.employer = employer;\r\n\r\n // pull product/offices\r\n const productOffices = [];\r\n\r\n (json.productOffices || []).forEach((ixJson: IProductOffice) => {\r\n const ixProductOffice = this.productDomainFactoryService.newProductOffice(ixJson);\r\n productOffices.push(ixProductOffice);\r\n });\r\n\r\n const result = {} as ICurrentCustomer;\r\n result.customer = customer;\r\n result.jobRole = jobRole;\r\n result.productOffices = productOffices;\r\n\r\n resolve(result);\r\n\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n\r\n });\r\n }\r\n\r\n\r\n\r\n /**\r\n * Fetches the current guest guid\r\n */\r\n private _fetchCurrentGuestGuid(): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.userService.loadCurrentGuest().subscribe((response: Response) => {\r\n const json = (response && response.json() ? response.json() : null);\r\n\r\n if (json) {\r\n resolve(json['id']);\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n /**\r\n * Fetches user territories\r\n */\r\n private _fetchUserTerritories(): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.userService.loadCurrentUserTerritories().subscribe((response: Response) => {\r\n const json = (response && response.json() ? response.json() : null);\r\n\r\n if (json) {\r\n const territoryObjects = response.json();\r\n const territories = territoryObjects.map(indexTerritory => indexTerritory.territory);\r\n resolve(territories);\r\n\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n /**\r\n * Fetches user authorities\r\n * @private\r\n */\r\n private _fetchUserAuthorities(): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.loginService.retrieveCurrentAuthorities(this.httpClient).subscribe((authorities: string[]) => {\r\n if (authorities) {\r\n resolve(authorities.filter(() => true));\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Cancels an in-process login attempt\r\n */\r\n cancelLogin() {\r\n this.displayModalLoginFlag = false;\r\n }\r\n\r\n\r\n\r\n /**\r\n * Validates the current customer\r\n */\r\n validateCurrentCustomer(): Observable {\r\n return new Observable();\r\n }\r\n\r\n\r\n /**\r\n * Retrieves the current customer\r\n */\r\n retrieveCurrentCustomer(): Observable {\r\n return new Observable();\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Refreshes the plan order auth\r\n */\r\n refreshPlanOrderAuth() {\r\n // deprecated\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Checks email validation\r\n * @param email\r\n */\r\n checkEmailValidation(email: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n const request = {email: email, type: 'R'};\r\n\r\n this.httpClient.post('/account/checkEmailValidation', request).subscribe((json: any) => {\r\n try {\r\n const validated = (json && json['isValidated']) || false;\r\n resolve(validated);\r\n\r\n } catch (e) {\r\n // if it's an error assume it was validated for the more appropriate error message\r\n resolve(null);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n // retrieves login failure message HTML\r\n getLoginFailureMessageObject(): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.systemMessageLookupService.systemMessageLookupByType('toolbox-invalid-login-json')\r\n .subscribe((systemMessage: SystemMessage) => {\r\n\r\n const json = (systemMessage ? JSON.parse(systemMessage.message) : null);\r\n resolve(json);\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\ninterface ICurrentCustomerResponse {\r\n customer: any;\r\n employer: any;\r\n jobRole: string;\r\n productOffices: IProductOffice[];\r\n}\r\n\r\n\r\nexport interface ICurrentCustomer {\r\n customer: Customer;\r\n jobRole: JobRole;\r\n productOffices: ProductOffice[];\r\n}\r\n","export * from \"./authentication.service\";\r\nexport * from \"./user.service\";\r\n","import {Injectable} from '@angular/core';\r\nimport 'rxjs/add/operator/map'\r\nimport {PhxHttpService, PhxErrorService} from '@orhp/phx-common-ui-module';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\n\r\n@Injectable()\r\nexport class UserService {\r\n constructor(\r\n private phxHttp: PhxHttpService,\r\n private errorService: PhxErrorService,\r\n private customerLookupValueService: CustomerLookupValueService\r\n ) { }\r\n\r\n /***\r\n * populate the {Customer} object for the currently logged in {Login}\r\n *\r\n * @returns {any}\r\n */\r\n loadCurrentCustomer(){\r\n return this.phxHttp.get('user/currentCustomer');\r\n }\r\n\r\n loadCurrentGuest() {\r\n return this.phxHttp.get('user/currentGuest');\r\n }\r\n\r\n loadCurrentUserTerritories() {\r\n return this.phxHttp.get('user/territories');\r\n }\r\n}\r\n","module.exports = \"\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n Use your Toolbox account to place your home warranty orders, grow your business, and more!\\r\\n
    \\r\\n\\r\\n\\r\\n\"","module.exports = \"@media (min-width: 441px){div.welcome-container{background-size:cover;background-repeat:no-repeat;background-position:center left}}@media (min-width: 441px) and (-webkit-min-device-pixel-ratio: 2), (min-width: 441px) and (min-resolution: 192dpi){div.welcome-container{background-image:url('welcome-image-background-2x.jpg')}}@media (min-width: 441px) and (-webkit-max-device-pixel-ratio: 1.999), (min-width: 441px) and (-webkit-max-device-pixel-ratio: 1.9895833333333333), (min-width: 441px) and (max-resolution: 191dpi){div.welcome-container{background-image:url('welcome-image-background.jpg')}}div.welcome-container div.login-container{padding:20px;float:right;overflow:hidden;background-color:rgba(255,255,255,0.8);border-radius:5px;border:1px solid #cccccc}@media (max-width: 440px){div.welcome-container div.login-container{margin-left:auto;margin-right:auto;width:100%}}@media (min-width: 441px){div.welcome-container div.login-container{width:400px;margin-top:50px;margin-bottom:50px;margin-right:20px}}div.welcome-footer-text{color:#003087}\\n\"","\r\n\r\nimport {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport {LoginStatus} from './login.component';\r\nimport {Router} from '@angular/router';\r\nimport {NavbarService} from '../navbar/service/navbar.service';\r\nimport {AuthenticationService} from './service';\r\n\r\n@Component({\r\n selector: 'app-welcome',\r\n templateUrl: 'welcome.component.html',\r\n styleUrls: [\r\n './welcome.component.scss'\r\n ]\r\n})\r\n\r\nexport class WelcomeComponent implements OnInit, OnDestroy {\r\n\r\n constructor(private router: Router,\r\n private navbarService: NavbarService,\r\n private authenticationService: AuthenticationService) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.navbarService.loginFormPresented = true;\r\n\r\n // clear the user session\r\n this.authenticationService.clearUserSession();\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.navbarService.loginFormPresented = false;\r\n }\r\n\r\n\r\n didChangeLoginStatus(loginStatus: LoginStatus) {\r\n // when the login is successful, redirect them to the home screen\r\n if (loginStatus === LoginStatus.success) {\r\n const url = '/home';\r\n\r\n this.router.navigate([url]);\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n","module.exports = \"\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{legacyRedirectDescription()}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n Loading {{legacyRedirectDescription()}}, please wait...\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
     
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"div.generic-logo-row{width:100%}nav.navbar-orhp{background-color:#012755;font-size:16px;padding:0;margin-bottom:3.125em !important;min-height:51px}nav.navbar-orhp button.navbar-toggler{color:white}nav.navbar-orhp button.navbar-toggler:hover{cursor:pointer}nav.navbar-orhp li.home-icon{vertical-align:middle}nav.navbar-orhp li.nav-item{font-size:1em}nav.navbar-orhp li.nav-item button.nav-link{font-size:1.125em;color:#ffffff;font-weight:700;padding-right:1em;padding-left:1em;background-color:#012755;border:0;min-height:51px}nav.navbar-orhp li.nav-item button.nav-link:hover{cursor:pointer;color:#558cf2;transition:all .2s ease-in-out}nav.navbar-orhp hr{border:1px solid #ffffff}svg path:hover{fill:#558cf2;transition:all .2s ease-in-out}@media (min-width: 1199px){.home-icon{border-right:1px solid white}}button.btn-try-marketing-tools-again{min-width:150px}\\n\"","import {Component, OnInit} from '@angular/core';\r\n\r\nimport {NavigationEnd, Router} from '@angular/router';\r\nimport {Customer, Employer} from '@orhp/phx-customer-ui-module';\r\nimport {AuthenticationService} from '../login/service/authentication.service';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {LegacyLoginResult} from '../login/model/legacy-login-result';\r\nimport {OfficeAgentLookupService} from '../_modules/office-agent-lookup/_services/lookup.service';\r\nimport {CustomerLookupValueFetchService} from '@orhp/phx-customer-ui-module';\r\nimport {NavbarService} from './service/navbar.service';\r\nimport {Subscription} from 'rxjs/Rx';\r\nimport {ToolboxSettingsService} from '../_services/toolbox-settings.service';\r\nimport {ProductOffice, ProductOfficeToolbox} from '@orhp/phx-product-ui-module';\r\nimport {LegacyToolboxService, RedirectCode} from '../_services/legacy-toolbox.service';\r\n\r\n@Component({\r\n selector: 'phx-navbar',\r\n templateUrl: './navbar.component.html',\r\n styleUrls: ['./navbar.component.scss']\r\n})\r\nexport class NavbarComponent implements OnInit {\r\n\r\n marketingToolsErrorFlag = false;\r\n acctExecToolboxErrorFlag = false;\r\n\r\n urlUpdateSubscription: Subscription = null;\r\n\r\n hamburgerMenuExpandedFlag = false;\r\n\r\n\r\n legacyRedirectInProgressFlag = false;\r\n legacyRedirectCode: string = null;\r\n\r\n\r\n get employer(): Employer {\r\n return this.authenticationService.employer;\r\n }\r\n\r\n\r\n get productOffice(): ProductOffice {\r\n return this.toolboxSettingsService.productOffice;\r\n }\r\n\r\n get productOfficeToolbox(): ProductOfficeToolbox {\r\n return (!!this.productOffice ? this.productOffice.toolbox : null);\r\n }\r\n\r\n\r\n\r\n constructor(private router: Router,\r\n private systemService: PhxSystemService,\r\n private modalProgressService: PhxModalProgressService,\r\n private navbarService: NavbarService,\r\n private customerLookupValueFetchService: CustomerLookupValueFetchService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private authenticationService: AuthenticationService,\r\n private toolboxSettingsService: ToolboxSettingsService,\r\n private legacyToolboxService: LegacyToolboxService,\r\n private officeAgentLookupService: OfficeAgentLookupService) {\r\n }\r\n\r\n\r\n get customer(): Customer {\r\n let customer: Customer = null;\r\n\r\n if (this.customerLookupValueService.lookupValuesLoaded) {\r\n customer = this.authenticationService.customer;\r\n }\r\n\r\n return customer;\r\n }\r\n\r\n\r\n loggedIn(): boolean {\r\n return !!this.customer;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.systemService.loadAppSettings().subscribe((loadedFlag: boolean) => {\r\n this.loadLookupValues();\r\n });\r\n }\r\n\r\n\r\n // loads lookup values\r\n loadLookupValues() {\r\n this.authenticationService.validateCurrentCustomer().subscribe((customerResultFlag: boolean) => {\r\n this.customerLookupValueFetchService.fetchLookupValuesIfNeeded()\r\n .subscribe((customerLookupResult: boolean) => {\r\n // do nothing on complete\r\n });\r\n });\r\n }\r\n\r\n\r\n // are lookup values loaded?\r\n lookupValuesLoadedFlag(): boolean {\r\n let loadedFlag = true;\r\n\r\n if (!this.customerLookupValueService.lookupValuesLoaded) {\r\n loadedFlag = false;\r\n }\r\n\r\n return loadedFlag;\r\n }\r\n\r\n\r\n isOrhpToolbox(): boolean {\r\n return !this.isThirdPartyToolbox();\r\n }\r\n\r\n\r\n isThirdPartyToolbox(): boolean {\r\n let flag = false;\r\n\r\n if (this.thirdPartyHeaderImageURL() !== '') {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n thirdPartyHeaderImageURL(): string {\r\n let url = '';\r\n\r\n if (!!this.productOfficeToolbox && ((this.productOfficeToolbox.headerImageURL || '') !== '')) {\r\n url = 'https://www1.orhp.com/images/logo-thirdparty/' + this.productOfficeToolbox.headerImageURL;\r\n }\r\n\r\n return url;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Returns the button text for Place Application\r\n */\r\n placeApplicationButtonText(): string {\r\n let text = 'Get a Quote / Place Application';\r\n\r\n const productOfficeGroup = this.authenticationService.productOffice;\r\n const productOfficeToolbox = (!!productOfficeGroup ? productOfficeGroup.toolbox : null);\r\n\r\n if (!!productOfficeToolbox && !productOfficeToolbox.allowPlanQuoteFlag) {\r\n text = 'Order Warranty / Start Over';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n\r\n didClickHamburgerMenu() {\r\n this.hamburgerMenuExpandedFlag = !this.hamburgerMenuExpandedFlag;\r\n }\r\n\r\n\r\n didClickMenuItem() {\r\n this.hamburgerMenuExpandedFlag = !this.hamburgerMenuExpandedFlag;\r\n }\r\n\r\n\r\n /**\r\n * Returns whether the Home icon should be displayed\r\n */\r\n shouldDisplayHomeIcon(): boolean {\r\n let flag = true;\r\n\r\n if (!!this.productOfficeToolbox && this.productOfficeToolbox.hideNavBarFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n /**\r\n * Returns whether the logged-in items should be displayed\r\n */\r\n shouldDisplayLoggedInItems(): boolean {\r\n let flag = true;\r\n\r\n // require customer lookup values\r\n if (!this.lookupValuesLoadedFlag()) {\r\n flag = false;\r\n }\r\n\r\n // require user to be logged in\r\n if (!this.authenticationService.loggedIn()) {\r\n flag = false;\r\n }\r\n\r\n if (!!this.productOfficeToolbox && this.productOfficeToolbox.hideNavBarFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n shouldDisplayNotLoggedInItems(): boolean {\r\n let displayFlag = true;\r\n\r\n // require customer lookup values\r\n if (!this.lookupValuesLoadedFlag()) {\r\n displayFlag = false;\r\n }\r\n\r\n // require user to be logged out\r\n if (this.authenticationService.loggedIn()) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayLoginMenuItem(): boolean {\r\n return this.navbarService.shouldDisplayLoginMenuItem();\r\n }\r\n\r\n\r\n\r\n legacyRedirectDescription(): string {\r\n let description = '';\r\n\r\n switch (this.legacyRedirectCode) {\r\n case RedirectCode.aeToolbox:\r\n description = 'Reports Center';\r\n break;\r\n\r\n case RedirectCode.marketingTools:\r\n description = 'Marketing Tools';\r\n break;\r\n }\r\n\r\n return description;\r\n }\r\n\r\n\r\n\r\n shouldDisplayMarketingTools(): boolean {\r\n let flag = true;\r\n\r\n // if we're not logged in\r\n if (!this.authenticationService.loggedIn()) {\r\n flag = false;\r\n }\r\n\r\n // do not display for telemarketing offices\r\n if (this.lookupValuesLoadedFlag() && !!this.employer) {\r\n const employerType = this.employer.employerType;\r\n\r\n if (employerType && employerType.telemarketingFlag) {\r\n flag = false;\r\n }\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n // user clicked Marketing Tools\r\n didClickMarketingTools() {\r\n this.legacyRedirectCode = RedirectCode.marketingTools;\r\n this.legacyRedirectInProgressFlag = true;\r\n\r\n this.legacyToolboxService.redirectToLegacySite(this.legacyRedirectCode);\r\n }\r\n\r\n\r\n didClickCancelLegacyRedirect() {\r\n this.legacyRedirectCode = null;\r\n this.legacyRedirectInProgressFlag = false;\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayAcctExecToolboxButton() {\r\n let displayFlag = false;\r\n\r\n if (this.authenticationService.orhpUserFlag) {\r\n displayFlag = true;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n didClickAcctExecToolboxButton() {\r\n this.legacyRedirectCode = RedirectCode.aeToolbox;\r\n this.legacyRedirectInProgressFlag = true;\r\n\r\n this.legacyToolboxService.redirectToLegacySite(this.legacyRedirectCode);\r\n }\r\n\r\n\r\n didClickLogout() {\r\n this.router.navigate(['/logout']);\r\n }\r\n\r\n\r\n}\r\n\r\n","import {Injectable} from '@angular/core';\r\n\r\n\r\n@Injectable()\r\n\r\nexport class NavbarService {\r\n\r\n loginFormPresented = false;\r\n\r\n\r\n\r\n shouldDisplayLoginMenuItem(): boolean {\r\n let displayFlag = true;\r\n\r\n if (this.loginFormPresented) {\r\n displayFlag = false;\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\"","\r\n\r\n\r\nimport {Component, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, ActivatedRouteSnapshot} from '@angular/router';\r\nimport {AuthenticationService} from '../login';\r\n\r\n@Component({\r\n selector: 'app-plan-order',\r\n templateUrl: './plan-order.component.html',\r\n styleUrls: []\r\n})\r\n\r\nexport class PlanOrderComponent implements OnInit {\r\n\r\n get activatedRoute(): ActivatedRoute {\r\n return this.route;\r\n }\r\n\r\n\r\n\r\n constructor(private route: ActivatedRoute\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n\r\n}\r\n","module.exports = \"
    \\r\\n

    E-Card Preferences

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{noEmployerMessageText()}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{c.name}}\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{p.description}}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n
    0 && correspondencesPreferences[0].showInfo\\\">\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n

    \\r\\n A Confirmation E-card is an acknowledgment that we received your home warranty application. It is E-mailed to\\r\\n you after you place an application.\\r\\n

    \\r\\n

    \\r\\n In some areas, we offer a hard-copy Confirmation Postcard as indicated by a \\\"Hard-copy postcard\\\" radio button\\r\\n on the E-card Program page.\\r\\n

    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n E-mail version of the Confirmation Card.
    Click image to enlarge\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n The Confirmation E-Card\\r\\n

    \\r\\n
      \\r\\n
    • \\r\\n The Confirmation Postcards are delivered to you by your Old Republic Home Protection Account Executive.\\r\\n
    • \\r\\n
    • \\r\\n The postcards contain the same information found in the e-mail confirmation: the buyer's name, property\\r\\n address,\\r\\n Plan selected (including a list of optional coverage selected), agent information for both sides of the\\r\\n transaction (if provided), closing information (if provided),\\r\\n and your ORHP Account Executive's contact information.\\r\\n
    • \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    0 && correspondencesPreferences[1].showInfo\\\">\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n

    \\r\\n A Service Notice is generated for the Selling Agent any time their client receives service, and ORHP has\\r\\n incurred an expense. The notice is e-mailed to you soon after ORHP makes payment to the Service Provider.\\r\\n

    \\r\\n

    \\r\\n In some areas, we offer a hard-copy Service Notice as indicated by a \\\"Hard-copy postcard\\\" radio button on the\\r\\n E-card Program page. If available in your area, the postcards are delivered to you by your local Account\\r\\n Executive.\\r\\n

    \\r\\n\\r\\n

    \\r\\n Call your client after receiving a Service Notice - they'll appreciate knowing you care. And remember to ask\\r\\n for referrals!\\r\\n

    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n E-mail version of the Service Notice Card.
    Click image to enlarge\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n The Service Notice includes:\\r\\n

    \\r\\n
      \\r\\n
    • The client's name and address
    • \\r\\n
    • The total dollar amount of services rendered
    • \\r\\n
    • The total service year-to-date on this home
    • \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    0 && correspondencesPreferences[2].showInfo\\\">\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n

    \\r\\n The Anniversary E-cards are designed to keep you in contact with your buyers on their first anniversary of\\r\\n home ownership. The E-cards are personalized with your contact information - helping to keep your vital\\r\\n information fresh to your clients.\\r\\n

    \\r\\n

    \\r\\n Old Republic Home Protection automatically sends the personalized E-card to you via e-mail; then you can\\r\\n forward it to your buyers.\\r\\n

    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    Anniversary E-card
    Click image to enlarge
    \\r\\n
    \\r\\n
    \\r\\n

    The Anniversary E-card

    \\r\\n
      \\r\\n
    • Celebrates your clients' first year anniversary of home ownership
    • \\r\\n
    • E-cards are delivered to you approximately six weeks prior to Plan expiration
    • \\r\\n
    • Acts as a \\\"tickler file\\\" to remind you of your clients' home purchase anniversary
    • \\r\\n
    • Reminds your clients that their Old Republic Warranty Plan may be due for renewal
    • \\r\\n
    • Requests valuable referrals from your clients
    • \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    0 && correspondencesPreferences[3].showInfo\\\">\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n

    \\r\\n The Congratulations E-cards are designed to keep you in contact with your buyer soon after they move into\\r\\n their home. The E-cards are personalized with your contact information - helping to keep your vital\\r\\n information fresh to your clients.\\r\\n

    \\r\\n

    \\r\\n When you represent the buyer, Old Republic Home Protection automatically sends the personalized E-card to you\\r\\n via e-mail; then you can forward it to your clients.\\r\\n

    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    Congratulations E-card
    Click image to enlarge
    \\r\\n
    \\r\\n
    \\r\\n

    The Congratulations E-card

    \\r\\n
      \\r\\n
    • Congratulates your clients on their new home purchase.
    • \\r\\n
    • E-cards are delivered to you within a week of receipt of Plan Fee.
    • \\r\\n
    • Lets your clients know that you enjoyed assisting them in finding and purchasing a new home.
    • \\r\\n
    • Highlights the benefit of your client's Old Republic Home Warranty and provides our toll-free service\\r\\n number for their convenience.\\r\\n
    • \\r\\n
    • Requests valuable referrals from your clients.
    • \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","module.exports = \"\"","import {Component, Input, OnInit} from '@angular/core';\r\nimport {ProfileService} from \"../../_services/profile.service\";\r\nimport {AuthenticationService} from \"../../../login/service/authentication.service\";\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\n\r\n@Component({\r\n selector: 'phx-correspondence-preference',\r\n templateUrl: './user-correspondence-preference.component.html',\r\n styleUrls: ['./user-correspondence-preference.component.scss']\r\n})\r\nexport class UserCorrespondencePreferenceComponent implements OnInit {\r\n _correspondencesPreferences: any = [];\r\n\r\n @Input()\r\n employer: Employer;\r\n\r\n @Input()\r\n set correspondencesPreferences(preferences: any) {\r\n this._correspondencesPreferences = preferences;\r\n this._correspondencesPreferences.forEach((c: any) => {\r\n c['showInfo'] = false;\r\n });\r\n }\r\n\r\n\r\n get correspondencesPreferences() {\r\n return this._correspondencesPreferences;\r\n }\r\n\r\n\r\n constructor(private authenticationService: AuthenticationService,\r\n private profileService: ProfileService) {\r\n\r\n }\r\n\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n setPreference(i, j) {\r\n console.log(i + \" \" + j);\r\n this.correspondencesPreferences[i].preferences.forEach(function (element, idx) {\r\n if (idx == j) {\r\n element.selected = true;\r\n } else {\r\n element.selected = false;\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n shouldDisplayPreferences(): boolean {\r\n return !!this.employer;\r\n }\r\n\r\n\r\n noEmployerMessageText(): string {\r\n let text: string = null;\r\n\r\n if (!this.employer) {\r\n text = 'Office is required to set E-Card Preferences';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n}\r\n","module.exports = \"
    \\r\\n

    Your Professional Profile

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\"","module.exports = \"\"","import {Component, Input, OnInit} from '@angular/core';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {ProductOffice} from '@orhp/phx-product-ui-module';\r\n\r\n@Component({\r\n selector: 'phx-user-customer',\r\n templateUrl: './user-customer.component.html',\r\n styleUrls: ['./user-customer.component.scss']\r\n})\r\nexport class UserCustomerComponent implements OnInit {\r\n _customer: Customer = null;\r\n _customerValidateResult: CustomerValidateResult = null;\r\n\r\n @Input()\r\n set customerValidateResult(v: CustomerValidateResult) {\r\n this._customerValidateResult = v;\r\n }\r\n\r\n get customerValidateResult(): CustomerValidateResult {\r\n return this._customerValidateResult;\r\n }\r\n\r\n get mobilePhone(): string {\r\n return this._customer.mobilePhone.phoneNumber;\r\n }\r\n set mobilePhone(phone: string) {\r\n this._customer.mobilePhone.phoneNumber = phone;\r\n }\r\n\r\n get workPhone(): string {\r\n return this._customer.workPhone.phoneNumber;\r\n }\r\n set workPhone(phone: string) {\r\n this._customer.workPhone.phoneNumber = phone;\r\n }\r\n\r\n @Input()\r\n set customer(c: Customer) {\r\n this._customer = c;\r\n }\r\n\r\n get customer() {\r\n return this._customer;\r\n }\r\n\r\n get givenName():string{\r\n return this.customer.givenName;\r\n }\r\n\r\n set givenName(n){\r\n this.customerValidateResult.customerGivenNameError='';\r\n this.customer.givenName = n;\r\n }\r\n\r\n get surName():string{\r\n return this.customer.surName;\r\n }\r\n\r\n set surName(n){\r\n this.customerValidateResult.customerSurNameError='';\r\n this.customer.surName = n;\r\n }\r\n\r\n @Input()\r\n productOffice: ProductOffice;\r\n\r\n\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n shouldDisplayMobilePhoneError(): boolean {\r\n return ((this.customerValidateResult.customerMobilePhoneError || '') !== '');\r\n }\r\n\r\n shouldDisplaySurnameError(): boolean {\r\n return ((this.customerValidateResult.customerSurNameError || '') !== '');\r\n }\r\n\r\n shouldDisplayGivenNameError(): boolean {\r\n return ((this.customerValidateResult.customerGivenNameError || '') !== '');\r\n }\r\n\r\n shouldDisplayValidationError(): boolean {\r\n return (\r\n this.shouldDisplayGivenNameError() ||\r\n this.shouldDisplaySurnameError() ||\r\n this.shouldDisplayMobilePhoneError()\r\n );\r\n }\r\n\r\n\r\n\r\n\r\n firstNameLabel(): string {\r\n let label = 'First Name';\r\n\r\n if (!!this.productOffice && ((this.productOffice.agentFirstNameLabel || '') !== '')) {\r\n label = this.productOffice.agentFirstNameLabel;\r\n }\r\n\r\n return label;\r\n }\r\n\r\n\r\n lastNameLabel(): string {\r\n let label = 'Last Name';\r\n\r\n if (!!this.productOffice && ((this.productOffice.agentLastNameLabel || '') !== '')) {\r\n label = this.productOffice.agentLastNameLabel;\r\n }\r\n\r\n return label;\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"
    \\r\\n

    {{officeDescription()}}

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{employer.employerName | uppercase}}\\r\\n\\r\\n
    \\r\\n {{(employer.physicalAddress.address || '') | uppercase}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n {{(employer.physicalAddress.city || '') | uppercase}}, \\r\\n\\r\\n {{(employer.physicalAddress.stateCode || '') | uppercase}}\\r\\n\\r\\n \\r\\n {{(employer.physicalAddress.zipCode || '') | uppercase}}\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{employer.mainPhone.formattedPhoneNumber}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n {{noProductOfficeEmailText()}}\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n\"","module.exports = \"\"","import {Component, Input, OnInit} from '@angular/core';\r\nimport {CustomerValidateResult, Employer, EmployerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {ProductOffice} from '@orhp/phx-product-ui-module';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {OfficeAgentLookupCacheService, OfficeLookupType} from '../../../_modules/office-agent-lookup/_services/lookup-cache.service';\r\nimport {OfficeAgentNavigationService} from '../../../_modules/office-agent-lookup/_services/office-agent-navigation.service';\r\n\r\n@Component({\r\n selector: 'phx-user-employer',\r\n templateUrl: './user-employer.component.html',\r\n styleUrls: ['./user-employer.component.scss']\r\n})\r\nexport class UserEmployerComponent implements OnInit {\r\n _employer: Employer = null;\r\n _productOffice: ProductOffice = null;\r\n _productOfficeEmail: string;\r\n _productOfficeID: number;\r\n _employerValidateResult: EmployerValidateResult = null;\r\n _customerValidateResult: CustomerValidateResult = null;\r\n\r\n _shouldDisplayEmployerSearch = true;\r\n\r\n _customOfficeDescription: string = null;\r\n\r\n @Input()\r\n set shouldDisplayEmployerSearch(v: boolean) {\r\n this._shouldDisplayEmployerSearch = v;\r\n }\r\n\r\n get shouldDisplayEmployerSearch(): boolean {\r\n return this._shouldDisplayEmployerSearch;\r\n }\r\n\r\n @Input()\r\n set employerValidateResult(v: EmployerValidateResult) {\r\n this._employerValidateResult = v;\r\n }\r\n\r\n get employerValidateResult(): EmployerValidateResult {\r\n return this._employerValidateResult;\r\n }\r\n\r\n @Input()\r\n set customerValidateResult(v: CustomerValidateResult) {\r\n this._customerValidateResult = v;\r\n }\r\n\r\n get customerValidateResult(): CustomerValidateResult {\r\n return this._customerValidateResult;\r\n }\r\n\r\n\r\n @Input()\r\n set employer(employer: Employer) {\r\n // if it's not a new employer, don't display the search\r\n if (!!employer.employerID) {\r\n this.shouldDisplayEmployerSearch = false;\r\n }\r\n\r\n this._employer = employer;\r\n }\r\n\r\n\r\n\r\n @Input()\r\n set productOfficeEmail(productOfficeEmail: string) {\r\n this._productOfficeEmail = productOfficeEmail;\r\n }\r\n\r\n get productOfficeEmail(): string {\r\n return this._productOfficeEmail;\r\n }\r\n\r\n\r\n @Input()\r\n set productOfficeID(productOfficeID: number) {\r\n this._productOfficeID = productOfficeID;\r\n }\r\n\r\n get productOfficeID(): number {\r\n return this._productOfficeID;\r\n }\r\n\r\n\r\n @Input()\r\n set productOffice(productOffice: ProductOffice) {\r\n this._productOffice = productOffice;\r\n }\r\n\r\n get productOffice(): ProductOffice {\r\n return this._productOffice;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n @Input()\r\n set customOfficeDescription(text: string) {\r\n if ((text || '').trim() !== '') {\r\n this._customOfficeDescription = text;\r\n\r\n } else {\r\n this._customOfficeDescription = null;\r\n }\r\n }\r\n\r\n get customOfficeDescription() {\r\n return this._customOfficeDescription;\r\n }\r\n\r\n\r\n\r\n\r\n get employer() {\r\n return this._employer;\r\n }\r\n\r\n constructor(private officeAgentLookupCacheService: OfficeAgentLookupCacheService,\r\n private officeAgentNavigationService: OfficeAgentNavigationService\r\n ) { }\r\n\r\n\r\n ngOnInit() {\r\n this.officeAgentNavigationService.gotoOfficeSearch();\r\n }\r\n\r\n\r\n\r\n didClickShowOfficesSearch() {\r\n this.officeAgentLookupCacheService.clearCache();\r\n this.officeAgentLookupCacheService.selectedOfficeLookupType = OfficeLookupType.officePhone;\r\n\r\n this.shouldDisplayEmployerSearch = true;\r\n }\r\n\r\n\r\n officeDescription(): string {\r\n return this._customOfficeDescription || 'Real Estate Office';\r\n }\r\n\r\n\r\n shouldDisplayNoProductOfficeEmailText(): boolean {\r\n return !!this.noProductOfficeEmailText() && this.shouldDisplayEmployerSearch;\r\n }\r\n\r\n\r\n noProductOfficeEmailText(): string {\r\n let text: string = null;\r\n\r\n if (!StringUtility.emailValidate(this.productOfficeEmail || '')) {\r\n text = 'Email is required to search for Office';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n displayEmployerSearch(): boolean {\r\n let flag = this.shouldDisplayEmployerSearch;\r\n\r\n if (!!this.noProductOfficeEmailText()) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","module.exports = \"
    \\r\\n

    Login

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\"","module.exports = \"\"","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {ProfileValidationResult} from \"../../_services/profile-validation.service\";\r\nimport {ProductOffice, ProductOfficeGroupLookupParams, ProductOfficeGroupLookupService} from '@orhp/phx-product-ui-module';\r\nimport {OfficeAgentLookupCacheService, OfficeLookupType} from '../../../_modules/office-agent-lookup/_services/lookup-cache.service';\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Component({\r\n selector: 'phx-user-guest',\r\n templateUrl: './user-guest.component.html',\r\n styleUrls: ['./user-guest.component.scss']\r\n})\r\nexport class UserGuestComponent implements OnInit {\r\n\r\n _guest: any = {password:\"\", password2:\"\", email:\"\", email2:\"\"};\r\n\r\n\r\n get email(): string{\r\n return this._guest.email;\r\n }\r\n\r\n set email(e: string){\r\n this.profileValidationResult.emailIsValid = true;\r\n this.profileValidationResult.emailErrorMessage = \"\";\r\n this.profileValidationResult.guestIsValid = true;\r\n this.profileValidationResult.guestErrorMessage = \"\";\r\n this._guest.email = e.trim();\r\n this._guest.productOfficeID = '';\r\n\r\n this.testEmailChange();\r\n\r\n this.officeLookupCacheService.clearCache();\r\n this.officeLookupCacheService.lastOfficeLookupType = OfficeLookupType.none;\r\n }\r\n\r\n\r\n get email2():string{\r\n return this._guest.email2;\r\n }\r\n\r\n set email2(e: string){\r\n this.profileValidationResult.email2IsValid = true;\r\n this.profileValidationResult.email2ErrorMessage = \"\";\r\n this._guest.email2 = e.trim();\r\n\r\n this.testEmailChange();\r\n }\r\n\r\n get password():string{\r\n return this._guest.password;\r\n }\r\n\r\n set password(p){\r\n this.profileValidationResult.passwordIsValid = true;\r\n this.profileValidationResult.passwordErrorMessage = \"\";\r\n this._guest.password = p;\r\n }\r\n\r\n\r\n get password2():string{\r\n return this._guest.password2;\r\n }\r\n\r\n set password2(p){\r\n this.profileValidationResult.password2IsValid = true;\r\n this.profileValidationResult.password2ErrorMessage = \"\";\r\n this._guest.password2 = p;\r\n }\r\n\r\n\r\n @Input()\r\n set guest(g: any) {\r\n this._guest = g;\r\n\r\n // if this is the initial email\r\n if (!this.initialEmail) {\r\n this.initialEmail = this._guest.email;\r\n }\r\n }\r\n\r\n get guest(): any{\r\n return this._guest;\r\n }\r\n\r\n @Input()\r\n profileValidationResult: ProfileValidationResult;\r\n\r\n @Input()\r\n productOffice: ProductOffice;\r\n\r\n @Output()\r\n onEmailChange = new EventEmitter();\r\n\r\n\r\n initialEmail: string = null;\r\n\r\n\r\n constructor(private officeLookupCacheService: OfficeAgentLookupCacheService\r\n ) { }\r\n\r\n\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n\r\n testEmailChange() {\r\n const email1 = this._guest.email || '';\r\n const email2 = this._guest.email2 || '';\r\n\r\n let notifyEmailChangeFlag = true;\r\n\r\n // are the emails valid?\r\n notifyEmailChangeFlag = notifyEmailChangeFlag && StringUtility.emailValidate(email1);\r\n notifyEmailChangeFlag = notifyEmailChangeFlag && StringUtility.emailValidate(email2);\r\n\r\n // do the emails match?\r\n notifyEmailChangeFlag = notifyEmailChangeFlag && (email1.toLowerCase() === email2.toLowerCase());\r\n\r\n if (notifyEmailChangeFlag) {\r\n this.onEmailChange.emit(email1);\r\n }\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n Your Role at {{displayEmployerNameText() | uppercase}}\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Job Role is required.\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\"","module.exports = \"\"","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {CustomerLookupValueService, Employer, JobRole} from '@orhp/phx-customer-ui-module';\r\nimport {ArrayUtility} from '@orhp/phx-common-ui-module';\r\nimport {ProductOffice} from '@orhp/phx-product-ui-module';\r\nimport {b} from '@angular/core/src/render3';\r\nimport {OfficeAgentLookupPersistenceService} from '../../../_modules/office-agent-lookup/_services/persistence.service';\r\nimport {AuthenticationService} from '../../../login';\r\n\r\n@Component({\r\n selector: 'phx-user-jobrole',\r\n templateUrl: './user-jobrole.component.html',\r\n styleUrls: [\r\n './user-jobrole.component.scss'\r\n ]\r\n})\r\n\r\nexport class UserJobroleComponent {\r\n\r\n @Input()\r\n employer: Employer;\r\n\r\n @Input()\r\n employerSelectedFlag: boolean;\r\n\r\n @Input()\r\n currentCustomer: any;\r\n\r\n @Input()\r\n productOffice: ProductOffice;\r\n\r\n @Input()\r\n productOfficeLookupFlag: boolean;\r\n\r\n @Output()\r\n onJobRoleSelection = new EventEmitter();\r\n\r\n\r\n\r\n\r\n get selectedJobRole(): JobRole {\r\n const prevJobRole = (this.currentCustomer.jobRole as JobRole);\r\n\r\n // if there's no selected job role\r\n if (!this.currentCustomer.jobRole) {\r\n // are we forcing a job role?\r\n if (this.productOfficeJobRole) {\r\n this.currentCustomer.jobRole = this.productOfficeJobRole;\r\n }\r\n }\r\n\r\n // if there's no selected job role\r\n if (!this.currentCustomer.jobRole) {\r\n const defaultJobRole = this.customerLookupValueService.jobRoleRealEstateAgent;\r\n\r\n // look for the default\r\n this.currentCustomer.jobRole = ArrayUtility.arrayFind(this.jobRoles, (testJobRole: JobRole): boolean => {\r\n return (testJobRole.jobRole.toLowerCase() === defaultJobRole.jobRole.toLowerCase());\r\n });\r\n }\r\n\r\n // if there's no selected job role\r\n if (!this.currentCustomer.jobRole) {\r\n // just pull the first job role\r\n this.currentCustomer.jobRole = (this.jobRoles.length ? this.jobRoles[0] : null);\r\n }\r\n\r\n // if the previous and current job roles don't match, emit a selection\r\n const prevJobRoleCode = (prevJobRole ? prevJobRole.jobRole.toLowerCase() : '');\r\n const currentJobRole = (this.currentCustomer.jobRole as JobRole);\r\n const currentJobRoleCode = (currentJobRole ? currentJobRole.jobRole.toLowerCase() : '');\r\n\r\n if (prevJobRoleCode !== currentJobRoleCode) {\r\n setTimeout(() => {\r\n this.onJobRoleSelection.emit(currentJobRole);\r\n });\r\n }\r\n\r\n return this.currentCustomer.jobRole;\r\n }\r\n\r\n set selectedJobRole(jobRole: JobRole) {\r\n this.currentCustomer.jobRole = jobRole;\r\n\r\n this.onJobRoleSelection.emit(jobRole);\r\n }\r\n\r\n\r\n\r\n get jobRoles(): JobRole[] {\r\n const roles = [];\r\n\r\n // if we're forcing a job role\r\n if (this.productOfficeJobRole) {\r\n roles.push(this.productOfficeJobRole);\r\n\r\n // otherwise look for the roles\r\n } else {\r\n const defaultEmployerTypeCodes = ['R', 'E', 'I'];\r\n\r\n const currentEmployerType = (this.employer ? this.employer.employerType : null);\r\n\r\n this.customerLookupValueService.jobRoles.forEach((indexRole: JobRole) => {\r\n let includeFlag = false;\r\n\r\n defaultEmployerTypeCodes.forEach((indexCode: string) => {\r\n if (indexRole.employerType.employerType.toLowerCase() === indexCode.toLowerCase()) {\r\n includeFlag = true;\r\n\r\n } else if (indexRole.employerType.isEqual(currentEmployerType)) {\r\n includeFlag = true;\r\n }\r\n });\r\n\r\n if (includeFlag) {\r\n roles.push(indexRole);\r\n }\r\n });\r\n }\r\n\r\n return roles;\r\n }\r\n\r\n\r\n get productOfficeJobRole(): JobRole {\r\n const productOfficeToolbox = (!!this.productOffice ? this.productOffice.toolbox : null);\r\n const forceJobRoleCode = (!!productOfficeToolbox ? productOfficeToolbox.forceCustomerJobRole : null) || '';\r\n\r\n let jobRole: JobRole = null;\r\n\r\n if (forceJobRoleCode !== '') {\r\n jobRole = ArrayUtility.arrayFind(\r\n this.customerLookupValueService.jobRoles,\r\n (testJobRole: JobRole): boolean => {\r\n return (testJobRole.jobRole.toLowerCase() === forceJobRoleCode.toLowerCase());\r\n });\r\n }\r\n\r\n return jobRole;\r\n }\r\n\r\n\r\n constructor(private customerLookupValueService: CustomerLookupValueService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private authenticationService: AuthenticationService\r\n ) { }\r\n\r\n\r\n\r\n shouldDisplayJobRole(): boolean {\r\n // display if an employer has been selected\r\n let flag = this.employerSelectedFlag;\r\n\r\n // if we're logged in with an office\r\n if (this.authenticationService.employer) {\r\n // if an employer has been selected\r\n if (this.officeAgentLookupPersistenceService.employer !== null) {\r\n // only show the job role if it's a different employer\r\n flag = (this.authenticationService.employer.employerID !== this.employer.employerID);\r\n }\r\n }\r\n\r\n // if there's only one job role available, don't display it\r\n if (this.jobRoles.length === 1) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n shouldDisplayJobRoleError(): boolean {\r\n let flag = false;\r\n\r\n if (!this.selectedJobRole) {\r\n flag = true;\r\n }\r\n\r\n if (!this.shouldDisplayJobRole()) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayJobRoleSelections(): boolean {\r\n return this.productOfficeLookupFlag;\r\n }\r\n\r\n\r\n displayEmployerNameText(): string {\r\n let text = (this.employer.employerName || '').trim();\r\n\r\n if (text === '') {\r\n text = '(NO NAME SPECIFIED)';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n\r\n}\r\n","\r\nimport {Injectable} from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class AccountValidationService {\r\n constructor() {}\r\n\r\n validateEmail(email):AccountValidationResult {\r\n const result = new AccountValidationResult();\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n result.isValid = re.test(email);\r\n if(!result.isValid){\r\n result.message = \"Invalid Email address.\";\r\n } else {\r\n result.isValid = true;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n validatePassword(password):AccountValidationResult{\r\n const result = new AccountValidationResult();\r\n if(password.length < 5) {\r\n result.isValid = false;\r\n result.message = \"Passwords must be at least 5 characters.\";\r\n } else {\r\n result.isValid = true;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport class AccountValidationResult {\r\n isValid: boolean = false;\r\n message: String = \"\";\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport 'rxjs/add/operator/map'\r\nimport {PhxHttpService} from '@orhp/phx-common-ui-module';\r\nimport {Http} from '@angular/http';\r\n\r\n@Injectable()\r\nexport class AccountService {\r\n constructor(private http: Http, private phxHttp: PhxHttpService) {\r\n }\r\n\r\n requestPasswordReset(email, url) {\r\n const formParams = new Map();\r\n formParams['email'] = email;\r\n formParams['type'] = 'R';\r\n formParams['url'] = url;\r\n const formBody = JSON.stringify(formParams);\r\n\r\n const fullURL = this.phxHttp.buildApiUrl('account/requestPasswordReset');\r\n return this.http.post(\r\n fullURL, formBody\r\n );\r\n }\r\n\r\n resetPassword(id: String, password: String, url: String) {\r\n const formParams = new Map();\r\n formParams['id'] = id;\r\n formParams['password'] = password;\r\n formParams['url'] = url;\r\n const formBody = JSON.stringify(formParams);\r\n\r\n const fullURL = this.phxHttp.buildApiUrl('account/doPasswordReset');\r\n return this.http.post(\r\n fullURL, formBody\r\n );\r\n\r\n }\r\n\r\n validatePasswordReset(id: String) {\r\n const fullURL = this.phxHttp.buildApiUrl('account/validatePasswordReset?id=' + id);\r\n return this.http.get(fullURL);\r\n }\r\n\r\n resendValidationEmail(email: String, url: String) {\r\n const formParams = new Map();\r\n formParams['email'] = email;\r\n formParams['type'] = 'R';\r\n formParams['url'] = url;\r\n const formBody = JSON.stringify(formParams);\r\n const fullURL = this.phxHttp.buildApiUrl('account/resendValidationEmail');\r\n\r\n return this.http.post(\r\n fullURL, formBody\r\n );\r\n\r\n }\r\n\r\n\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Http, Response} from \"@angular/http\";\r\nimport {Observable} from \"rxjs/Observable\";\r\nimport {Subscriber} from \"rxjs/Subscriber\";\r\nimport {PhxHttpService} from '@orhp/phx-common-ui-module';\r\n\r\n@Injectable()\r\nexport class CorrespondenceService {\r\n constructor(private http: Http, private phxHttp: PhxHttpService) {\r\n }\r\n\r\n\r\n canResendAnniversaryCard(planID: any): Observable {\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n this.phxHttp.get('correspondence/canResendAnniversaryCard?planID=' + planID).subscribe(\r\n (r) => {\r\n const result = r.json();\r\n\r\n subscriber.next(result.allow);\r\n subscriber.complete();\r\n }\r\n );\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n resendAnniversaryCard(planID: any): Observable {\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n const formBody = JSON.stringify({planID:planID});\r\n\r\n this.phxHttp.post('correspondence/resendAnniversaryCard', formBody).subscribe(\r\n (r: Response) => {\r\n const result = r.json();\r\n\r\n subscriber.next(result.success);\r\n subscriber.complete();\r\n }\r\n );\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n canResendCongratulationsCard(planID: any): Observable {\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n this.phxHttp.get('correspondence/canResendCongratulationsCard?planID=' + planID).subscribe(\r\n (r) => {\r\n const result = r.json();\r\n\r\n subscriber.next(result.allow);\r\n subscriber.complete();\r\n }\r\n );\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n\r\n resendCongratulationsCard(planID: any): Observable {\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n const formBody = JSON.stringify({planID:planID});\r\n\r\n this.phxHttp.post('correspondence/resendCongratulationsCard', formBody).subscribe(\r\n (r: Response) => {\r\n const result = r.json();\r\n\r\n subscriber.next(result.success);\r\n subscriber.complete();\r\n }\r\n );\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable()\r\n\r\nexport class ProfileHelperService {\r\n\r\n\r\n\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs/Observable\";\r\nimport {AccountValidationResult, AccountValidationService} from \"./account-validation.service\";\r\nimport {Subscriber} from \"rxjs/Subscriber\";\r\nimport {EmployerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupService} from \"../../_modules/office-agent-lookup/_services/lookup.service\";\r\nimport {EmployerUpdateService} from '@orhp/phx-customer-ui-module';\r\nimport {CustomerUpdateService} from '@orhp/phx-customer-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {isUndefined} from \"util\";\r\nimport {PhxHttpService} from '@orhp/phx-common-ui-module';\r\nimport {Response} from '@angular/http';\r\n\r\n@Injectable()\r\nexport class ProfileValidationService {\r\n\r\n constructor(private http:PhxHttpService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private customerUpdateService: CustomerUpdateService,\r\n private employerUpdateService: EmployerUpdateService,\r\n private accountValidationService: AccountValidationService) {\r\n\r\n }\r\n\r\n validate(guest: any, customer: Customer, employer: Employer): Observable {\r\n\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n const email: string = guest[\"email\"];\r\n const email2: string = guest[\"email2\"];\r\n const password: string = guest[\"password\"];\r\n const password2: string = guest[\"password2\"];\r\n\r\n let result = new ProfileValidationResult();\r\n //result.isValid = true;\r\n\r\n let emailValidation: AccountValidationResult = this.accountValidationService.validateEmail(email);\r\n\r\n if (!emailValidation.isValid) {\r\n //result.isValid = false;\r\n\r\n result.emailIsValid = false;\r\n result.emailErrorMessage = \"Please enter a valid email address.\"\r\n }\r\n\r\n if (email.length > 0 && email2.length == 0) {\r\n //result.isValid = false;\r\n\r\n result.email2IsValid = false;\r\n result.email2ErrorMessage = 'Re-enter E-mail Address is required.';\r\n } else if (email != email2) {\r\n //result.isValid = false;\r\n\r\n result.email2IsValid = false;\r\n result.email2ErrorMessage = \"Email and Re-enter Email do not match.\";\r\n }\r\n\r\n if (customer.customerID == null && password.length == 0) {\r\n //result.isValid = false;\r\n\r\n result.passwordIsValid = false;\r\n result.passwordErrorMessage = \"Password is required.\";\r\n }\r\n\r\n if(password.length > 0){\r\n if (password.length < 5) {\r\n //result.isValid = false;\r\n\r\n result.passwordIsValid = false;\r\n result.passwordErrorMessage = \"Password must be at least 5 characters.\";\r\n }\r\n\r\n if (password2.length == 0) {\r\n //result.isValid = false;\r\n\r\n result.password2IsValid = false;\r\n result.password2ErrorMessage = \"Re-enter Password is required.\"\r\n } else if (password !== password2) {\r\n //result.isValid = false;\r\n\r\n result.password2IsValid = false;\r\n result.password2ErrorMessage = \"Password and Re-enter Password do not match.\"\r\n }\r\n }\r\n\r\n if(employer.employerName == null || isUndefined(employer.employerName)) {\r\n //result.isValid = false;\r\n\r\n result.employerErrorMessage = \"Office is required.\"\r\n }\r\n\r\n\r\n\r\n this.performGuestValidation(guest).subscribe(\r\n (gv:GuestValidationResult) => {\r\n\r\n result.guestIsValid = gv.isValid;\r\n result.guestErrorMessage = gv.errorMessage;\r\n\r\n //result.isValid = gv.isValid && result.isValid;\r\n\r\n this.customerUpdateService.performCustomerValidation(customer).subscribe(\r\n (r: CustomerValidateResult) => {\r\n //result.isValid = !(r.errorFlag) && result.isValid;\r\n\r\n result.customerIsValid = !(r.errorFlag)\r\n\r\n this.officeAgentLookupService.customerValidateResult = r;\r\n\r\n if (employer.employerID == null) {\r\n this.employerUpdateService.performEmployerValidation(employer).subscribe(\r\n (r: EmployerValidateResult) => {\r\n //result.isValid = !(r.errorFlag) && result.isValid;\r\n result.employerIsValid = !(r.errorFlag);\r\n\r\n this.officeAgentLookupService.employerValidateResult = r;\r\n subscriber.next(result);\r\n subscriber.complete();\r\n },\r\n (e) => {\r\n //result.isValid = false;\r\n result.employerIsValid = false;\r\n\r\n subscriber.next(result);\r\n subscriber.complete();\r\n }\r\n );\r\n } else {\r\n subscriber.next(result);\r\n subscriber.complete();\r\n }\r\n },\r\n (e) => {\r\n //result.isValid = false;\r\n result.customerIsValid = false;\r\n\r\n subscriber.next(result);\r\n subscriber.complete();\r\n }\r\n );\r\n }\r\n )\r\n\r\n });\r\n return observable;\r\n }\r\n\r\n performGuestValidation(guest: any): Observable {\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n\r\n const url = 'profile/validate';\r\n\r\n guest['type']='R';\r\n const formBody = JSON.stringify(guest);\r\n\r\n this.http.post(url, formBody).subscribe(\r\n (response: Response) => {\r\n const jsonObject = response.json();\r\n\r\n let result = new GuestValidationResult();\r\n\r\n result.isValid = jsonObject.isValid;\r\n result.errorMessage = jsonObject.errorMessage;\r\n\r\n subscriber.next(result);\r\n subscriber.complete();\r\n }\r\n );\r\n });\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n\r\nexport class GuestValidationResult {\r\n isValid: boolean = true;\r\n errorMessage: String = \"\";\r\n}\r\n\r\n\r\n\r\nexport class ProfileValidationResult {\r\n customerIsValid: boolean = true;\r\n\r\n // isValid: boolean = true;\r\n\r\n get isValid() : boolean {\r\n return (this.email2IsValid && this.emailIsValid && this.passwordIsValid && this.password2IsValid && this.guestIsValid && this.customerIsValid && this.employerIsValid)\r\n }\r\n\r\n emailIsValid: boolean = true;\r\n emailErrorMessage: String = \"\";\r\n\r\n email2IsValid: boolean = true;\r\n email2ErrorMessage: String = \"\";\r\n\r\n passwordIsValid: boolean = true;\r\n passwordErrorMessage: String = \"\";\r\n\r\n password2IsValid: boolean = true;\r\n password2ErrorMessage: String = \"\";\r\n\r\n employerIsValid: boolean = true;\r\n employerErrorMessage: String = \"\";\r\n\r\n guestIsValid: boolean = true;\r\n guestErrorMessage: String = \"\";\r\n\r\n}\r\n\r\n","import {Inject, Injectable} from '@angular/core';\r\nimport 'rxjs/add/operator/map'\r\nimport {PhxHttpService} from '@orhp/phx-common-ui-module';\r\nimport {Response} from '@angular/http';\r\nimport {DOCUMENT} from \"@angular/common\";\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {Observable} from 'rxjs/Observable';\r\nimport {Subscriber} from 'rxjs/Subscriber';\r\nimport {AuthenticationService} from '../../login';\r\nimport {ProductOffice} from '@orhp/phx-product-ui-module';\r\n\r\n\r\n@Injectable()\r\nexport class ProfileService {\r\n\r\n private _baseURL = '';\r\n\r\n\r\n productOffice: ProductOffice = null;\r\n\r\n\r\n // do we need to pull a custom URL?\r\n get customUrl(): string {\r\n let customUrl: string = null;\r\n\r\n const productOffice = this.productOffice || this.authenticationService.productOffice;\r\n\r\n if (!!productOffice && productOffice.toolbox) {\r\n const productOfficeCustomUrlPath = productOffice.toolbox.customUrlPath || '';\r\n\r\n if (productOfficeCustomUrlPath !== '') {\r\n customUrl = productOfficeCustomUrlPath;\r\n }\r\n }\r\n\r\n return customUrl;\r\n }\r\n\r\n\r\n // pull the base URL\r\n get baseURL(): string {\r\n let baseURL = this._baseURL;\r\n\r\n if (!!this.customUrl) {\r\n baseURL += '/' + this.customUrl;\r\n }\r\n\r\n return baseURL;\r\n }\r\n\r\n\r\n\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: Document,\r\n private phxHttp: PhxHttpService,\r\n private authenticationService: AuthenticationService\r\n ) {\r\n const currentURL = this.document.location.href;\r\n\r\n const tokens = currentURL.split('/', 3);\r\n\r\n this._baseURL = tokens[0] + '//' + tokens[2];\r\n }\r\n\r\n\r\n createProfile(\r\n guest: any,\r\n customer: Customer,\r\n employer: Employer,\r\n correspondencesPreferences: any\r\n ): Observable {\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n\r\n const returnResult = new ProfileUpdateResult();\r\n const url = 'profile/save';\r\n const formBody = JSON.stringify(\r\n {\r\n url: this.baseURL + '/account/validate',\r\n guest: guest,\r\n customer: customer.jsonValues(),\r\n employer: employer.jsonValues(),\r\n correspondencesPreferences: correspondencesPreferences\r\n }\r\n );\r\n this.phxHttp.post(url, formBody)\r\n .subscribe((response: Response) => {\r\n const result = new ProfileUpdateResult();\r\n\r\n result.successFlag = true;\r\n\r\n subscriber.next(result);\r\n subscriber.complete();\r\n }, (error: Response) => {\r\n subscriber.error(error);\r\n subscriber.complete();\r\n });\r\n });\r\n return observable;\r\n }\r\n\r\n\r\n saveProfile(\r\n guest: any,\r\n customer: Customer,\r\n employer: Employer,\r\n correspondencesPreferences: any,\r\n original?: any\r\n ): Observable {\r\n const observable: Observable =\r\n Observable.create(\r\n (subscriber: Subscriber) => {\r\n const url = 'profile/save';\r\n const formBody = JSON.stringify(\r\n {\r\n url: this.baseURL + '/account/validate',\r\n guest: guest,\r\n customer: customer.jsonValues(),\r\n employer: employer.jsonValues(),\r\n correspondencesPreferences: correspondencesPreferences,\r\n original: original\r\n }\r\n );\r\n this.phxHttp.post(url, formBody)\r\n .subscribe((response: Response) => {\r\n const jsonObject = response.json();\r\n const result = new ProfileUpdateResult();\r\n\r\n if (jsonObject.errors.length > 0 || !jsonObject.object.success) {\r\n result.successFlag = false;\r\n } else {\r\n result.successFlag = true;\r\n result.employer = employer;\r\n result.customer = customer;\r\n result.requireLogout = jsonObject.object.requireLogout;\r\n }\r\n\r\n subscriber.next(result);\r\n subscriber.complete();\r\n }, (error: Response) => {\r\n subscriber.error(error);\r\n subscriber.complete();\r\n });\r\n });\r\n return observable;\r\n }\r\n\r\n\r\n loadCorrespondencePreferences(customer): Observable {\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n const formBody = JSON.stringify(customer.jsonValues());\r\n\r\n this.phxHttp.post('profile/loadCorrespondencePreferences', formBody)\r\n .subscribe((response: Response) => {\r\n subscriber.next(response.json());\r\n subscriber.complete();\r\n }, (error: Response) => {\r\n subscriber.error(error);\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n return observable;\r\n }\r\n\r\n\r\n loadCorrespondences(): Observable {\r\n const observable: Observable =\r\n Observable.create((subscriber: Subscriber) => {\r\n const formBody = JSON.stringify({customerGUID: ''});\r\n\r\n this.phxHttp.post('profile/loadCorrespondencePreferences', formBody)\r\n .subscribe((response: Response) => {\r\n subscriber.next(response.json());\r\n subscriber.complete();\r\n }, (error: Response) => {\r\n subscriber.error(error);\r\n subscriber.complete();\r\n });\r\n\r\n });\r\n return observable;\r\n }\r\n\r\n\r\n}\r\n\r\nexport class ProfileUpdateResult {\r\n successFlag = false;\r\n requireLogout = false;\r\n customer: Customer = null;\r\n employer: Employer = null;\r\n guest: any = null;\r\n}\r\n","module.exports = \"
    \\r\\n
    \\r\\n Fetching your profile, please wait...\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Success. Your profile has been saved.\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n Failure. Something went wrong while saving your profile.\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n Please correct the validation errors below\\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    There was a problem loading your Marketing Tools.
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n

    Marketing Tools

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n

    \\r\\n \\r\\n Click Here\\r\\n \\r\\n and select a tool to customize your information.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\"","import {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport {Employer} from '@orhp/phx-customer-ui-module';\r\nimport {Customer} from '@orhp/phx-customer-ui-module';\r\nimport {UserService} from '../../login/service/user.service';\r\nimport {CustomerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {EmployerValidateResult} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupService} from '../../_modules/office-agent-lookup/_services/lookup.service';\r\nimport {OfficeAgentLookupPersistenceService} from '../../_modules/office-agent-lookup/_services/persistence.service';\r\nimport {ProfileService, ProfileUpdateResult} from '../_services/profile.service';\r\nimport {AuthenticationService} from '../../login/service/authentication.service';\r\nimport {Router} from '@angular/router';\r\nimport {ProfileValidationResult, ProfileValidationService} from '../_services/profile-validation.service';\r\nimport {ArrayUtility, PhxModalProgressService} from '@orhp/phx-common-ui-module';\r\nimport {JobRole} from '@orhp/phx-customer-ui-module';\r\nimport {PhxHttpService, PhxSystemService} from '@orhp/phx-common-ui-module';\r\nimport {CustomerLookupValueService} from '@orhp/phx-customer-ui-module';\r\nimport {OfficeAgentLookupCacheService} from '../../_modules/office-agent-lookup/_services/lookup-cache.service';\r\nimport {ModalProgress} from '@orhp/phx-common-ui-module';\r\nimport {LegacyLoginResult} from '../../login/model/legacy-login-result';\r\nimport {isUndefined} from 'util';\r\nimport {Subscription} from 'rxjs/Rx';\r\nimport {ProductOffice, ProductOfficeGroupLookupParams, ProductOfficeGroupLookupService} from '@orhp/phx-product-ui-module';\r\n\r\n\r\n@Component({\r\n selector: 'app-profile',\r\n templateUrl: './profile.component.html'\r\n})\r\nexport class ProfileComponent implements OnInit, OnDestroy {\r\n currentGuest: {};\r\n original: {};\r\n\r\n currentCustomer: Customer;\r\n currentEmployer: Employer;\r\n correspondencesPreferences: any = [];\r\n\r\n profileValidationResult: ProfileValidationResult = new ProfileValidationResult();\r\n\r\n dataLoaded = false;\r\n dataUpdated = false;\r\n updateInProgress = false;\r\n marketingToolsErrorFlag = false;\r\n saveAttempted = false;\r\n showGenericError = false;\r\n\r\n jobRoleSelectedFlag = false;\r\n employerSelectSubscription: Subscription = null;\r\n\r\n get productOffice(): ProductOffice {\r\n return this.profileService.productOffice;\r\n }\r\n\r\n set productOffice(productOffice: ProductOffice) {\r\n this.profileService.productOffice = productOffice;\r\n }\r\n\r\n productOfficeLookupFlag = false;\r\n\r\n employerSelectedFlag = false;\r\n\r\n\r\n\r\n imageURL = '';\r\n legacyURL = '';\r\n\r\n get employer(): Employer {\r\n if (this.officeAgentLookupPersistenceService.employer !== null) {\r\n return this.officeAgentLookupPersistenceService.employer;\r\n } else {\r\n return this.currentEmployer;\r\n }\r\n }\r\n\r\n get employerValidateResult(): EmployerValidateResult {\r\n return this.officeAgentLookupService.employerValidateResult;\r\n }\r\n\r\n get customerValidateResult(): CustomerValidateResult {\r\n return this.officeAgentLookupService.customerValidateResult;\r\n }\r\n\r\n get jobRoles(): any {\r\n const roles = [];\r\n\r\n this.customerLookupValueService.jobRoles.forEach(\r\n (r: JobRole) => {\r\n if (r.employerType.employerType === 'R' || r.employerType.employerType === 'E' || r.employerType.employerType === 'I') {\r\n roles.push(r);\r\n }\r\n\r\n });\r\n return roles;\r\n }\r\n\r\n\r\n\r\n\r\n get productOfficeJobRole(): JobRole {\r\n const productOfficeToolbox = (!!this.productOffice ? this.productOffice.toolbox : null);\r\n const forceJobRoleCode = (!!productOfficeToolbox ? productOfficeToolbox.forceCustomerJobRole : null) || '';\r\n\r\n let jobRole: JobRole = null;\r\n\r\n if (forceJobRoleCode !== '') {\r\n jobRole = ArrayUtility.arrayFind(\r\n this.customerLookupValueService.jobRoles,\r\n (testJobRole: JobRole): boolean => {\r\n return (testJobRole.jobRole.toLowerCase() === forceJobRoleCode.toLowerCase());\r\n });\r\n }\r\n\r\n return jobRole;\r\n }\r\n\r\n\r\n get guestEmail(): string {\r\n return (this.currentGuest ? this.currentGuest['email'] : null);\r\n }\r\n\r\n\r\n\r\n constructor(private userService: UserService,\r\n private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private profileService: ProfileService,\r\n private authenticationService: AuthenticationService,\r\n private router: Router,\r\n private profileValidationService: ProfileValidationService,\r\n private modalProgressService: PhxModalProgressService,\r\n private phxHttpService: PhxHttpService,\r\n private systemService: PhxSystemService,\r\n private customerLookupValueService: CustomerLookupValueService,\r\n private officeAgentLookupCacheService: OfficeAgentLookupCacheService,\r\n private productOfficeGroupLookupService: ProductOfficeGroupLookupService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.officeAgentLookupService.clearAllData();\r\n this.officeAgentLookupPersistenceService.clearPersistedValues();\r\n this.officeAgentLookupCacheService.clearCache();\r\n\r\n this.currentEmployer = this.authenticationService.employer;\r\n this.currentCustomer = this.authenticationService.customer;\r\n this.officeAgentLookupService.shouldDisplayEmployerSearch = false;\r\n this.legacyURL = this.systemService.legacyToolboxUrl;\r\n\r\n this.productOffice = this.authenticationService.productOffice;\r\n\r\n // register for employer updates if there's not a product office set\r\n if (!this.productOffice) {\r\n this.employerSelectSubscription = this.officeAgentLookupPersistenceService.employerEventEmitter\r\n .subscribe((employer: Employer) => {\r\n this.employerSelectedFlag = !!employer;\r\n\r\n this.fetchEmployerProductOffice();\r\n });\r\n }\r\n\r\n\r\n this.authenticationService.retrieveCurrentCustomer().subscribe(\r\n c => {\r\n const employerType = this.employer.employerType.employerType;\r\n if (employerType === 'E') {\r\n this.officeAgentLookupPersistenceService.lookupTypeCode = 'E,R';\r\n } else if (employerType === 'I') {\r\n this.officeAgentLookupPersistenceService.lookupTypeCode = 'I,E,R';\r\n } else if (employerType === 'P') {\r\n this.officeAgentLookupPersistenceService.lookupTypeCode = 'P,R';\r\n } else {\r\n this.officeAgentLookupPersistenceService.lookupTypeCode = employerType;\r\n }\r\n\r\n }\r\n );\r\n\r\n this.userService.loadCurrentGuest().subscribe(\r\n g => {\r\n this.currentGuest = g.json();\r\n this.currentGuest['email'] = this.currentGuest['username'];\r\n this.currentGuest['email2'] = this.currentGuest['username'];\r\n this.currentGuest['password'] = '';\r\n this.currentGuest['password2'] = '';\r\n this.dataLoaded = true;\r\n this.imageURL = this.phxHttpService.buildApiUrl('/image/guestProfile/?id=' + this.currentGuest['id']);\r\n\r\n this.original = {};\r\n this.original['email'] = this.currentGuest['username'];\r\n this.original['customer'] = this.currentCustomer.jsonValues();\r\n this.original['employer'] = this.currentEmployer.jsonValues();\r\n\r\n\r\n }\r\n );\r\n\r\n this.profileService.loadCorrespondencePreferences(this.currentCustomer).subscribe(\r\n (r: any) => {\r\n this.correspondencesPreferences = r;\r\n this.modalProgressService.progress = null;\r\n }\r\n );\r\n\r\n this.fetchEmployerProductOffice();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.profileService.productOffice = null;\r\n\r\n if (this.employerSelectSubscription) {\r\n this.employerSelectSubscription.unsubscribe();\r\n }\r\n\r\n this.officeAgentLookupPersistenceService.clearPersistedValues();\r\n this.officeAgentLookupCacheService.clearCache();\r\n this.officeAgentLookupService.clearAllData();\r\n this.officeAgentLookupCacheService.selectedOfficeLookupType = null;\r\n\r\n this.authenticationService.retrieveCurrentCustomer().subscribe((c) => {\r\n this.authenticationService.customer = c;\r\n });\r\n }\r\n\r\n\r\n\r\n fetchEmployerProductOffice() {\r\n this.productOfficeLookupFlag = false;\r\n\r\n const employerID = this.employer.employerID;\r\n\r\n if (!!employerID) {\r\n const params = new ProductOfficeGroupLookupParams();\r\n params.employerID = this.employer.employerID;\r\n params.jsonToolboxFlag = true;\r\n\r\n this.productOfficeGroupLookupService.fetchProductOfficeGroups(params)\r\n .subscribe((productOfficeGroups: ProductOffice[]) => {\r\n // if a group was returned\r\n if (!!(productOfficeGroups || []).length) {\r\n this.productOffice = productOfficeGroups[0];\r\n\r\n // if a forced job role was specified\r\n if (!!this.productOfficeJobRole) {\r\n this.currentCustomer.jobRole = this.productOfficeJobRole;\r\n this.jobRoleSelectedFlag = true;\r\n }\r\n }\r\n\r\n this.productOfficeLookupFlag = true;\r\n });\r\n\r\n } else {\r\n this.productOfficeLookupFlag = true;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n customOfficeDescription(): string {\r\n const productOfficeToolbox = (!!this.productOffice ? this.productOffice.toolbox : null);\r\n\r\n return (!!productOfficeToolbox ? productOfficeToolbox.customOfficeDescription : null);\r\n }\r\n\r\n\r\n productOfficeID(): number {\r\n return (!!this.productOffice ? this.productOffice.productOfficeID : null);\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayMarketingTools(): boolean {\r\n let flag = true;\r\n\r\n if (this.employer && this.employer.employerType && this.employer.employerType.telemarketingFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n shouldDisplayEcardPreferences(): boolean {\r\n let flag = true;\r\n\r\n const productOfficeToolbox = (!!this.productOffice ? this.productOffice.toolbox : null);\r\n\r\n if (!!productOfficeToolbox && !productOfficeToolbox.allowEcardPreferenceSelectionFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n didClickSave() {\r\n this.updateInProgress = true;\r\n this.saveAttempted = true;\r\n this.modalProgressService.progress = new ModalProgress('Saving your profile', 'Please wait...', 100);\r\n\r\n this.profileValidationService.validate(\r\n this.currentGuest, this.currentCustomer, this.employer\r\n ).subscribe(\r\n (v: ProfileValidationResult) => {\r\n this.profileValidationResult = v;\r\n\r\n if (v.isValid) {\r\n if (!this.shouldDisplayJobRoleError()) {\r\n this.currentCustomer.employer = this.employer;\r\n\r\n this.profileService.saveProfile(\r\n this.currentGuest,\r\n this.currentCustomer,\r\n this.employer,\r\n this.correspondencesPreferences,\r\n this.original\r\n ).subscribe(\r\n (r: ProfileUpdateResult) => {\r\n if (r.successFlag) {\r\n this.officeAgentLookupService.clearAllData();\r\n this.officeAgentLookupPersistenceService.clearPersistedValues();\r\n\r\n if (r.requireLogout) {\r\n this.modalProgressService.progress = null;\r\n this.authenticationService.logout();\r\n this.router.navigate(['/account/validate/success']);\r\n } else {\r\n this.authenticationService.retrieveCurrentCustomer().subscribe((c) => {\r\n const router = this.router;\r\n\r\n sessionStorage.clear();\r\n this.officeAgentLookupCacheService.clearCache();\r\n\r\n this.authenticationService.acctExecs = [];\r\n\r\n this.modalProgressService.progress = null;\r\n this.dataUpdated = true;\r\n\r\n this.authenticationService.customer = c;\r\n\r\n setTimeout(function() {\r\n router.navigate(['/home']);\r\n }, 2000);\r\n });\r\n }\r\n } else {\r\n this.showGenericError = true;\r\n this.errorOccurred();\r\n }\r\n\r\n }, (error: Response) => {\r\n this.showGenericError = true;\r\n this.errorOccurred();\r\n }\r\n );\r\n } else {\r\n this.errorOccurred(); }\r\n } else {\r\n this.errorOccurred();\r\n }\r\n }\r\n );\r\n }\r\n\r\n didClickCancel() {\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n didClickMarketingTools() {\r\n this.marketingToolsErrorFlag = false;\r\n\r\n const progress = new ModalProgress('Loading Marketing Tools', 'Please wait...', 100);\r\n\r\n this.modalProgressService.progress = progress;\r\n\r\n this.authenticationService.legacyLogin().subscribe((loginResult: LegacyLoginResult) => {\r\n\r\n this.modalProgressService.progress = null;\r\n\r\n // if the login was successful\r\n if (loginResult.loginSuccessFlag) {\r\n const url = this.systemService.legacyToolboxUrl + 'tools/ct_portal.cfm';\r\n\r\n window.location.href = url;\r\n\r\n } else {\r\n this.marketingToolsErrorFlag = true;\r\n }\r\n });\r\n }\r\n\r\n didClickCancelMarketingTools() {\r\n this.marketingToolsErrorFlag = false;\r\n }\r\n\r\n shouldDisplayEmployerSection() {\r\n let displayFlag = false;\r\n\r\n if (this.currentCustomer && this.currentCustomer.employer && this.currentCustomer.employer.employerType !== null) {\r\n displayFlag = !(this.currentCustomer.employer.employerType.orhpFlag);\r\n }\r\n\r\n return displayFlag;\r\n }\r\n\r\n\r\n shouldDisplayJobRole(): boolean {\r\n if (this.officeAgentLookupPersistenceService.employer !== null) {\r\n return (this.authenticationService.employer.employerID !== this.employer.employerID);\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n shouldDisplayJobRoleError(): boolean {\r\n const result = (\r\n this.shouldDisplayJobRole() &&\r\n this.saveAttempted &&\r\n (\r\n this.currentCustomer.jobRole == null ||\r\n isUndefined(this.currentCustomer.jobRole)\r\n )\r\n );\r\n return result;\r\n }\r\n\r\n\r\n shouldDisplayValidationError(): boolean {\r\n return (\r\n this.customerValidateResult.errorFlag ||\r\n this.employerValidateResult.errorFlag ||\r\n !this.profileValidationResult.isValid\r\n\r\n );\r\n }\r\n\r\n\r\n errorOccurred() {\r\n this.officeAgentLookupService.clearAllData();\r\n this.officeAgentLookupPersistenceService.clearPersistedValues();\r\n this.modalProgressService.progress = null;\r\n this.updateInProgress = false;\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n}\r\n","module.exports = \"
    \\r\\n
    \\r\\n

    \\r\\n In a moment, you will receive an e-mail message requesting that you validate your account ({{this.email}}).\\r\\n Please follow the instructions in that message to validate your e-mail address and activate your account.\\r\\n

    \\r\\n\\r\\n

    Old Republic Home Protection appreciates your business and looks forward to serving you.

    \\r\\n\\r\\n
    We're People Helping People
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\"","import {Component, Inject, OnDestroy, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {AccountService} from \"../_services/account.service\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\n\r\n@Component({\r\n selector: 'phx-resend-validation',\r\n templateUrl: './resend-validation.component.html'\r\n})\r\nexport class ResendValidationComponent implements OnInit, OnDestroy {\r\n\r\n sub: any;\r\n currentUrl: string = \"\";\r\n email: string = \"\";\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private accountService: AccountService) {\r\n\r\n this.currentUrl = this.document.location.href;\r\n //let url = document.location.protocol +'//'+ document.location.hostname + ':my_port';\r\n let url = window.location.href;\r\n let arr = url.split(\"/\");\r\n this.currentUrl = arr[0] + \"//\" + arr[2];\r\n }\r\n\r\n ngOnInit() {\r\n this.sub = this.route.params.subscribe(params => {\r\n if (params['email'] != undefined) {\r\n this.email = params['email'];\r\n this.accountService.resendValidationEmail(this.email, this.currentUrl + '/account/validate').subscribe(r => {\r\n const response = r.json();\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
    \\r\\n
    \\r\\n
    \\r\\n

    Recover Login & Reset Password

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n {{emailErrorMessage}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Recover Login & Reset Password

    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n Thank you, an email to reset your password has been sent to you.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Enter Your New Password

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{passwordErrorMessage}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Recover Login & Reset Password

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n That is not a valid reset token or it has already been used.\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Recover Login & Reset Password

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    0\\\">\\r\\n Your password has been reset and your login appears below:
    \\r\\n {{email}}\\r\\n

    \\r\\n
    \\r\\n We were unable to reset your password at this time...\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    0\\\">\\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\"","import {Component, Inject, OnDestroy, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\nimport {AccountService} from \"../_services/account.service\";\r\nimport {StringUtility} from '@orhp/phx-common-ui-module';\r\n\r\n@Component({\r\n selector: 'app-reset-account',\r\n templateUrl: './reset-account.component.html'\r\n})\r\nexport class ResetAccountComponent implements OnInit, OnDestroy {\r\n mode: Number = null;\r\n\r\n email: string = \"\";\r\n isEmailError: boolean = false;\r\n emailErrorMessage: string = \"\";\r\n\r\n password: string = \"\";\r\n password2: string = \"\";\r\n isPasswordError: boolean = false;\r\n passwordErrorMessage: string = \"\";\r\n\r\n currentUrl: string = \"\";\r\n\r\n id: string = \"\";\r\n\r\n inProgress: boolean = false;\r\n\r\n private sub: any;\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document,\r\n private accountService: AccountService,\r\n private route: ActivatedRoute,\r\n private router: Router) {\r\n }\r\n\r\n ngOnInit() {\r\n this.currentUrl = this.document.location.href;\r\n this.sub = this.route.params.subscribe(params => {\r\n if (params['id'] != undefined) {\r\n this.id = params['id'];\r\n } else {\r\n this.mode = 0;\r\n }\r\n\r\n if (this.id.length > 0) {\r\n this.accountService.validatePasswordReset(this.id).subscribe(r => {\r\n const response = r.json();\r\n if (response.messageObject.isValid) {\r\n this.mode = 2;\r\n } else {\r\n this.mode = 3;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n requestPasswordReset() {\r\n if (this.email.length && StringUtility.emailValidate(this.email)) {\r\n this.inProgress = true;\r\n this.accountService.requestPasswordReset(this.email, this.currentUrl).subscribe(\r\n r => {\r\n this.inProgress = false;\r\n let data = r.json();\r\n if (data.success) {\r\n this.mode = 1;\r\n } else {\r\n this.isEmailError = true;\r\n this.emailErrorMessage = data.errorMessage;\r\n }\r\n },\r\n err => {\r\n this.inProgress = false;\r\n this.isEmailError = true;\r\n this.emailErrorMessage = \"The E-mail address you entered has no Toolbox account associated with it. Please re-enter your e-mail address.\";\r\n }\r\n );\r\n } else if (this.email.length == 0) {\r\n this.inProgress = false;\r\n this.isEmailError = true;\r\n this.emailErrorMessage = \"E-mail Address is required.\";\r\n } else {\r\n this.inProgress = false;\r\n this.isEmailError = true;\r\n this.emailErrorMessage = \"E-mail Address requires a valid email address.\";\r\n }\r\n }\r\n\r\n resetPassword() {\r\n if (this.password.length < 5) {\r\n this.isPasswordError = true;\r\n this.passwordErrorMessage = \"Passwords must be at least 5 characters.\";\r\n } else if (this.password !== this.password2) {\r\n this.isPasswordError = true;\r\n this.passwordErrorMessage = \"Passwords must match.\";\r\n } else {\r\n this.inProgress = true;\r\n this.accountService.resetPassword(this.id, this.password, this.currentUrl).subscribe(\r\n r => {\r\n this.inProgress = false;\r\n const response = r.json();\r\n this.mode = 4;\r\n if (response.messageObject.success) {\r\n this.email = response.messageObject.email\r\n }\r\n }\r\n );\r\n }\r\n\r\n }\r\n\r\n goToLogin() {\r\n this.router.navigate(['/login']);\r\n\r\n }\r\n\r\n}\r\n","module.exports = \"
    \\r\\n
    \\r\\n Please wait...\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n We're sorry something went wrong during...\\r\\n
    \\r\\n\\r\\n
    \\r\\n Please correct the validation errors below\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n Personalizing your Toolbox experience, please wait...\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n
    0\\\">\\r\\n
    \\r\\n {{employerErrorMessage}}\\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n\"","import {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport {Router} from '@angular/router';\r\nimport {ProfileService, ProfileUpdateResult} from '../_services/profile.service';\r\nimport {OfficeAgentLookupService} from '../../_modules/office-agent-lookup/_services/lookup.service';\r\nimport {OfficeAgentLookupPersistenceService} from '../../_modules/office-agent-lookup/_services/persistence.service';\r\nimport {\r\n Customer,\r\n CustomerDomainFactoryService,\r\n CustomerLookupValueService,\r\n CustomerValidateResult,\r\n Employer,\r\n EmployerDomainFactoryService,\r\n EmployerValidateResult,\r\n JobRole\r\n} from '@orhp/phx-customer-ui-module';\r\nimport {ProfileValidationResult, ProfileValidationService} from '../_services/profile-validation.service';\r\nimport {ArrayUtility, ModalProgress, PhxModalProgressService, PhxSerializer, StringUtility} from '@orhp/phx-common-ui-module';\r\nimport {Subscription} from 'rxjs/Rx';\r\nimport {ProductOffice, ProductOfficeGroupLookupParams, ProductOfficeGroupLookupService} from '@orhp/phx-product-ui-module';\r\nimport {AuthenticationService} from '../../login';\r\nimport {OfficeAgentLookupCacheService, OfficeLookupType} from '../../_modules/office-agent-lookup/_services/lookup-cache.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-sign-up',\r\n templateUrl: './sign-up.component.html'\r\n})\r\nexport class SignUpComponent implements OnInit, OnDestroy {\r\n currentGuest: any = {password: \"\", password2: \"\", email: \"\", email2: \"\"};\r\n currentEmployer: Employer;\r\n currentCustomer: Customer;\r\n correspondencesPreferences: any = [];\r\n\r\n employerErrorMessage: String = \"\";\r\n\r\n profileValidationResult: ProfileValidationResult = new ProfileValidationResult();\r\n\r\n dataLoaded: boolean = false;\r\n updateInProgress: boolean = false;\r\n signUpComplete: boolean = false;\r\n isError: boolean = false;\r\n\r\n get productOfficeID(): number {\r\n return PhxSerializer.toInteger(this.currentGuest.productOfficeID);\r\n }\r\n\r\n get employerValidateResult(): EmployerValidateResult {\r\n return this.officeAgentLookupService.employerValidateResult;\r\n }\r\n\r\n get customerValidateResult(): CustomerValidateResult {\r\n return this.officeAgentLookupService.customerValidateResult;\r\n }\r\n\r\n get employer(): Employer {\r\n if (this.officeAgentLookupPersistenceService.employer !== null) {\r\n this.employerErrorMessage = '';\r\n return this.officeAgentLookupPersistenceService.employer;\r\n } else {\r\n return this.currentEmployer;\r\n }\r\n }\r\n\r\n\r\n\r\n get productOfficeJobRole(): JobRole {\r\n const productOfficeToolbox = (!!this.productOffice ? this.productOffice.toolbox : null);\r\n const forceJobRoleCode = (!!productOfficeToolbox ? productOfficeToolbox.forceCustomerJobRole : null) || '';\r\n\r\n let jobRole: JobRole = null;\r\n\r\n if (forceJobRoleCode !== '') {\r\n jobRole = ArrayUtility.arrayFind(\r\n this.customerLookupValueService.jobRoles,\r\n (testJobRole: JobRole): boolean => {\r\n return (testJobRole.jobRole.toLowerCase() === forceJobRoleCode.toLowerCase());\r\n });\r\n }\r\n\r\n return jobRole;\r\n }\r\n\r\n\r\n get guestEmail(): string {\r\n let guestEmail: string = null;\r\n\r\n // if there's a current guest\r\n if (this.currentGuest) {\r\n // test if the email is set\r\n const email1 = this.currentGuest.email || '';\r\n const email2 = this.currentGuest.email2 || '';\r\n\r\n let emailSetFlag = true;\r\n\r\n // are the emails valid?\r\n emailSetFlag = emailSetFlag && StringUtility.emailValidate(email1);\r\n emailSetFlag = emailSetFlag && StringUtility.emailValidate(email2);\r\n\r\n // do the emails match?\r\n emailSetFlag = emailSetFlag && (email1.toLowerCase() === email2.toLowerCase());\r\n\r\n // if the email's been set\r\n if (emailSetFlag) {\r\n guestEmail = this.currentGuest.email;\r\n }\r\n }\r\n\r\n return guestEmail;\r\n }\r\n\r\n\r\n get correspondencePrefsEmployer(): Employer {\r\n let employer: Employer = null;\r\n\r\n if (this.productOfficeLookupFlag && !!this.guestEmail) {\r\n employer = this.employer;\r\n }\r\n\r\n return employer;\r\n }\r\n\r\n\r\n jobRoleSelectedFlag = false;\r\n employerSelectSubscription: Subscription = null;\r\n\r\n\r\n get productOffice(): ProductOffice {\r\n return this.profileService.productOffice;\r\n }\r\n\r\n set productOffice(productOffice: ProductOffice) {\r\n this.profileService.productOffice = productOffice;\r\n }\r\n\r\n\r\n productOfficeLookupFlag = false;\r\n productOfficeLookupInProcessFlag = false;\r\n\r\n employerSelectedFlag = false;\r\n\r\n employerEmittedFlag = false;\r\n\r\n // defaultJobRole = this.customerLookupValueService.jobRoleRealEstateAgent;\r\n\r\n\r\n constructor(private officeAgentLookupPersistenceService: OfficeAgentLookupPersistenceService,\r\n private officeAgentLookupService: OfficeAgentLookupService,\r\n private officeAgentLookupCacheService: OfficeAgentLookupCacheService,\r\n private profileService: ProfileService,\r\n private router: Router,\r\n private productOfficeGroupLookupService: ProductOfficeGroupLookupService,\r\n private customerDomainFactoryService: CustomerDomainFactoryService,\r\n private employerDomainFactoryService: EmployerDomainFactoryService,\r\n private profileValidationService: ProfileValidationService,\r\n private modalProgressService: PhxModalProgressService,\r\n private authenticationService: AuthenticationService,\r\n private customerLookupValueService: CustomerLookupValueService) {\r\n console.log('in profile component');\r\n }\r\n\r\n ngOnInit() {\r\n this.officeAgentLookupService.clearAllData();\r\n this.officeAgentLookupPersistenceService.clearPersistedValues();\r\n this.officeAgentLookupCacheService.clearCache();\r\n\r\n this.officeAgentLookupCacheService.lastOfficeLookupType = OfficeLookupType.officePhone;\r\n\r\n this.currentEmployer = this.employerDomainFactoryService.newEmployer({});\r\n this.currentCustomer = this.customerDomainFactoryService.newCustomer({});\r\n // this.currentCustomer.jobRole = this.defaultJobRole;\r\n\r\n this.productOffice = this.authenticationService.productOffice;\r\n\r\n if (!!this.productOffice) {\r\n this.productOfficeLookupFlag = true;\r\n }\r\n\r\n this.officeAgentLookupService.shouldDisplayEmployerSearch = true;\r\n this.profileService.loadCorrespondences().subscribe(\r\n (r: any) => {\r\n this.correspondencesPreferences = r;\r\n this.dataLoaded = true;\r\n }\r\n );\r\n\r\n // register for employer updates if there's not a product office set\r\n if (!this.productOffice) {\r\n this.employerSelectSubscription = this.officeAgentLookupPersistenceService.employerEventEmitter\r\n .subscribe((employer: Employer) => {\r\n if (this.employerEmittedFlag) {\r\n this.employerSelectedFlag = !!employer;\r\n\r\n this.fetchEmployerProductOffice();\r\n\r\n } else {\r\n this.employerEmittedFlag = true;\r\n }\r\n });\r\n\r\n } else {\r\n if (this.productOfficeJobRole) {\r\n this.currentCustomer.jobRole = this.productOfficeJobRole;\r\n this.jobRoleSelectedFlag = true;\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.profileService.productOffice = null;\r\n\r\n if (this.employerSelectSubscription) {\r\n this.employerSelectSubscription.unsubscribe();\r\n }\r\n\r\n this.officeAgentLookupService.clearAllData();\r\n this.officeAgentLookupPersistenceService.clearPersistedValues();\r\n this.officeAgentLookupCacheService.clearCache();\r\n this.officeAgentLookupCacheService.lastOfficeLookupType = null;\r\n\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n }\r\n\r\n\r\n\r\n fetchEmailProductOffice() {\r\n // pull the email\r\n const email = this.currentGuest.email || '';\r\n\r\n // if it's a valid email\r\n if (StringUtility.emailValidate(email)) {\r\n this.productOfficeLookupInProcessFlag = true;\r\n\r\n // set that we haven't performed the product/office lookup\r\n this.productOfficeLookupFlag = false;\r\n\r\n // pull the product office groups that the email matches\r\n const params = new ProductOfficeGroupLookupParams();\r\n params.email = email;\r\n params.jsonToolboxFlag = true;\r\n\r\n this.productOfficeGroupLookupService.fetchProductOfficeGroups(params)\r\n .subscribe((productOfficeGroups: ProductOffice[]) => {\r\n this.productOfficeLookupInProcessFlag = false;\r\n\r\n this.handleFetchedProductOfficeGroups(productOfficeGroups);\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n fetchEmployerProductOffice() {\r\n // set that we haven't performed the product/office lookup\r\n this.productOfficeLookupFlag = false;\r\n\r\n // pull the employerID\r\n const employerID = this.employer.employerID;\r\n\r\n // if it's an existing employer\r\n if (!!employerID) {\r\n this.productOfficeLookupInProcessFlag = true;\r\n\r\n // pull the product office groups that the employer is in\r\n const params = new ProductOfficeGroupLookupParams();\r\n params.employerID = this.employer.employerID;\r\n params.jsonToolboxFlag = true;\r\n\r\n this.productOfficeGroupLookupService.fetchProductOfficeGroups(params)\r\n .subscribe((productOfficeGroups: ProductOffice[]) => {\r\n this.productOfficeLookupInProcessFlag = false;\r\n\r\n this.handleFetchedProductOfficeGroups(productOfficeGroups);\r\n });\r\n\r\n // for a new employer, always set that the lookup is done\r\n } else {\r\n this.productOfficeLookupFlag = true;\r\n }\r\n }\r\n\r\n\r\n handleFetchedProductOfficeGroups(productOfficeGroups: ProductOffice[]) {\r\n // if a group was returned\r\n if (!!(productOfficeGroups || []).length) {\r\n this.productOffice = productOfficeGroups[0];\r\n\r\n // if a forced job role was specified\r\n if (!!this.productOfficeJobRole) {\r\n this.currentCustomer.jobRole = this.productOfficeJobRole;\r\n this.jobRoleSelectedFlag = true;\r\n }\r\n }\r\n\r\n // set the lookup was done\r\n this.productOfficeLookupFlag = true;\r\n }\r\n\r\n\r\n\r\n\r\n customOfficeDescription(): string {\r\n const productOfficeToolbox = (!!this.productOffice ? this.productOffice.toolbox : null);\r\n\r\n return (!!productOfficeToolbox ? productOfficeToolbox.customOfficeDescription : null);\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayEcardPreferences(): boolean {\r\n // default that we're showing the prefs if the employer is set\r\n let flag = !!this.employer;\r\n\r\n // has product/office been set?\r\n const productOfficeToolbox = (!!this.productOffice ? this.productOffice.toolbox : null);\r\n\r\n if (!!productOfficeToolbox && !productOfficeToolbox.allowEcardPreferenceSelectionFlag) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\r\n\r\n\r\n\r\n didClickSave() {\r\n this.updateInProgress = true;\r\n this.modalProgressService.progress = new ModalProgress('Creating your account', 'Please wait...', 100);\r\n\r\n this.profileValidationService.validate(\r\n this.currentGuest, this.currentCustomer, this.employer\r\n ).subscribe(\r\n (v: ProfileValidationResult) => {\r\n this.profileValidationResult = v;\r\n\r\n if (v.isValid) {\r\n if (!this.shouldDisplayJobRoleError()) {\r\n\r\n this.currentGuest['type'] = 'R';\r\n\r\n this.currentCustomer.employer = this.employer;\r\n this.currentCustomer.email.phoneNumber = this.currentGuest.email;\r\n\r\n this.profileService.createProfile(\r\n this.currentGuest,\r\n this.currentCustomer,\r\n this.employer,\r\n this.correspondencesPreferences\r\n ).subscribe(\r\n (r: ProfileUpdateResult) => {\r\n this.modalProgressService.progress = null;\r\n this.updateInProgress = false;\r\n this.signUpComplete = true;\r\n this.modalProgressService.progress = null;\r\n this.router.navigate(['/account/validate/show']);\r\n }\r\n );\r\n } else {\r\n this.updateInProgress = false;\r\n this.modalProgressService.progress = null;\r\n }\r\n } else {\r\n this.employerErrorMessage = v.employerErrorMessage;\r\n this.updateInProgress = false;\r\n this.modalProgressService.progress = null;\r\n window.scrollTo(0, 0);\r\n }\r\n },\r\n (error: Response) => {\r\n this.isError = true;\r\n }\r\n );\r\n }\r\n\r\n\r\n didChooseJobRole(jobRole: JobRole) {\r\n if (!!jobRole) {\r\n this.jobRoleSelectedFlag = true;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n shouldDisplayJobRoleError(): boolean {\r\n return !this.jobRoleSelectedFlag;\r\n }\r\n\r\n\r\n shouldDisplayValidationError(): boolean {\r\n return (\r\n (this.customerValidateResult.errorFlag ||\r\n this.employerValidateResult.errorFlag ||\r\n !this.profileValidationResult.isValid) && !this.signUpComplete\r\n );\r\n }\r\n\r\n didClickCancel() {\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n\r\n didChangeGuestEmail(email: string) {\r\n this.fetchEmailProductOffice();\r\n }\r\n\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {FormsModule} from '@angular/forms';\r\nimport {ResetAccountComponent} from \"./reset-account/reset-account.component\";\r\nimport {AccountService} from \"./_services/account.service\";\r\nimport {ProfileComponent} from \"./profile/profile.component\";\r\nimport {SignUpComponent} from \"./sign-up/sign-up.component\";\r\nimport {OfficeAgentLookupModule} from \"../_modules/office-agent-lookup/office-agent-lookup.module\";\r\nimport {ProfileService} from \"./_services/profile.service\";\r\nimport {ValidateEmailComponent} from \"./validate-email/validate-email.component\";\r\nimport {AccountValidationService} from \"./_services/account-validation.service\";\r\nimport {ProfileValidationService} from \"./_services/profile-validation.service\";\r\nimport {UserCorrespondencePreferenceComponent} from \"./_modules/user-correspondence-preference/user-correspondence-preference.component\";\r\nimport {UserEmployerComponent} from \"./_modules/user-employer/user-employer.component\";\r\nimport {UserCustomerComponent} from \"./_modules/user-customer/user-customer.component\";\r\nimport {UserGuestComponent} from \"./_modules/user-guest/user-guest.component\";\r\nimport {ResendValidationComponent} from \"./resend-validation/resend-validation.component\";\r\nimport {ProfileHelperService} from './_services/profile-helper.service';\r\nimport {UserJobroleComponent} from './_modules/user-jobrole/user-jobrole.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n OfficeAgentLookupModule\r\n ],\r\n declarations: [\r\n ResetAccountComponent,\r\n ProfileComponent,\r\n SignUpComponent,\r\n ValidateEmailComponent,\r\n UserCorrespondencePreferenceComponent,\r\n UserEmployerComponent,\r\n UserCustomerComponent,\r\n UserGuestComponent,\r\n UserJobroleComponent,\r\n ResendValidationComponent\r\n ],\r\n providers: [\r\n AccountService,\r\n ProfileService,\r\n AccountValidationService,\r\n ProfileValidationService,\r\n ProfileHelperService\r\n ]\r\n})\r\nexport class UserModule {\r\n\r\n}\r\n","import {Routes} from '@angular/router';\r\nimport {ResetAccountComponent} from \"./reset-account/reset-account.component\";\r\nimport {SignUpComponent} from \"./sign-up/sign-up.component\";\r\nimport {OfficeAgentLookupRoutes} from \"../_modules/office-agent-lookup/office-agent-lookup.routes\";\r\nimport {ProfileComponent} from \"./profile/profile.component\";\r\nimport {ValidateEmailComponent} from \"./validate-email/validate-email.component\";\r\nimport {AuthGuard} from \"../login/service/auth.guard\";\r\nimport {ResendValidationComponent} from \"./resend-validation/resend-validation.component\";\r\n\r\nexport const UserRoutes: Routes = [\r\n {path: 'account',\r\n children: [\r\n {path: 'reset', component: ResetAccountComponent},\r\n {path: 'reset/:id', component: ResetAccountComponent},\r\n {path: 'validate/:id', component: ValidateEmailComponent},\r\n {path: 'resend/validation/:email', component: ResendValidationComponent}\r\n ]\r\n },\r\n {path: 'my-profile', component: ProfileComponent, children: OfficeAgentLookupRoutes, canActivate: [AuthGuard]},\r\n {path: 'signup', component: SignUpComponent, children: OfficeAgentLookupRoutes}\r\n];\r\n","module.exports = \"
    \\r\\n\\r\\n\\t
    \\r\\n\\t\\t{{this.message}}\\r\\n\\t
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n Please wait...\\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n\\t
    \\r\\n\\t\\tSuccess. Your profile has been saved.\\r\\n\\t
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\t
    \\r\\n\\t\\t

    \\r\\n\\t\\t\\tIn a moment, you will receive an e-mail message requesting that you validate your account.\\r\\n\\t\\t\\tPlease follow the instructions in that message to validate your e-mail address and activate your account.\\r\\n\\t\\t

    \\r\\n\\r\\n\\t\\t

    Old Republic Home Protection appreciates your business and looks forward to serving you.

    \\r\\n\\r\\n\\t\\t
    We're People Helping People
    \\r\\n\\r\\n\\t
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n\\t
    \\r\\n\\t\\tSuccess. Your account has been validated. You will be redirected to the login screen now.\\r\\n\\t
    \\r\\n
    \\r\\n\"","import {Component, Inject, OnDestroy, OnInit} from '@angular/core';\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {AccountService} from \"../_services/account.service\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\n\r\n@Component({\r\n selector: 'phx-validate-email',\r\n templateUrl: './validate-email.component.html'\r\n})\r\nexport class ValidateEmailComponent implements OnInit, OnDestroy {\r\n\r\n id: String = \"\";\r\n isValid: boolean = true;\r\n message: String = \"\";\r\n private sub: any;\r\n currentUrl: string = \"\";\r\n\r\n mode: number = 0; // 0 perform validation 1 show succes message 2 just show message 3 resend the email\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private accountService: AccountService) {\r\n this.currentUrl = this.document.location.href;\r\n }\r\n\r\n ngOnInit() {\r\n let parent = this;\r\n this.sub = this.route.params.subscribe(params => {\r\n if (params['id'] != undefined)\r\n parent.id = params['id'];\r\n\r\n if (parent.id.length > 0) {\r\n if (parent.id === 'success') {\r\n parent.mode = 1;\r\n } else if (parent.id === 'show') {\r\n parent.mode = 2;\r\n } else {\r\n parent.accountService.validatePasswordReset(parent.id).subscribe(r => {\r\n const response = r.json();\r\n if (response.messageObject.isValid) {\r\n parent.mode = 3;\r\n setTimeout(function() {\r\n parent.router.navigate(['/login']);\r\n }, 4500);\r\n } else {\r\n if (response.errorText === 'used') {\r\n parent.message = \"This validation code has already been used.\"\r\n } else {\r\n parent.message = \"This validation code is not valid.\"\r\n }\r\n parent.isValid = false;\r\n }\r\n\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n\r\n shouldDisplayProgressBar(): boolean {\r\n let flag = (this.mode === 0);\r\n\r\n if (!this.isValid) {\r\n flag = false;\r\n }\r\n\r\n return flag;\r\n }\r\n\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};\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\nplatformBrowserDynamic().bootstrapModule(AppModule);\r\n"],"sourceRoot":""}