{"version":3,"sources":["./src/app/model/insurance-promotion.ts","./src/app/shared/tools.methods.ts","./src/app/model/insurance.ts","./src/app/model/loading.ts","./src/app/model/payment-type.enum.ts","./src/app/shared/address.directive.ts","./src/app/buy/buy-route.guard.ts","./src/app/have-call/have-call.component.ts","./src/app/have-call/have-call.component.html","./src/app/shared/typeahead/typeahead.directive.ts","./src/app/shared/typeahead/index.ts","./src/app/model/theme.ts","./src/app/model/desexed.enum.ts","./src/app/about-you/about-you.component.ts","./src/app/about-you/about-you.component.html","./src/app/model/recommended-product.ts","./src/app/model/insured-pet.ts","./src/app/helpers/string.helpers.ts","./src/app/model/brands.enum.ts","./src/app/model/payment-method.ts","./src/app/services/application.service.ts","./src/app/model/brand-details.ts","./src/app/model/cover.ts","./src/app/payment-gateway/payment-gateway.resolve.ts","./src/app/shared/typeahead/typeahead-match.class.ts","./src/app/services/base.service.ts","./src/app/shared/typeahead/typeahead-container.component.ts","./src/app/services/promotion.service.ts","./src/app/shared/typeahead/latin-map.ts","./src/app/model/frequency.enum.ts","./src/app/shared/tools.pipe.ts","./src/app/services/subscription.service.ts","./src/app/model/species.enum.ts","./src/app/services/client.service.ts","./src/app/model/promotion.ts","./src/app/services/premium.service.ts","./src/app/shared/typeahead/position.ts","./src/app/shared/model-validation-display.component.ts","./src/app/model/insurance-pricing.ts","./src/app/services/vets.service.ts","./src/app/model/state.enum.ts","./src/app/buy/pet-form.component.ts","./src/app/buy/pet-form.component.html","./src/app/buy/buy.component.ts","./src/app/buy/buy.component.html","./src/app/compare/compare.component.ts","./src/app/compare/compare.component.html","./src/app/model/productQuestions.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/buy/product-question.component.ts","./src/app/buy/product-question.component.html","./src/app/payment-gateway/payment-gateway.component.ts","./src/app/payment-gateway/payment-gateway.component.html","./src/app/model/vet.ts","./src/app/shared/typeahead/typeahead-options.class.ts","./src/app/model/payment.ts","./src/app/services/pddo.service.ts","./src/app/shared/typeahead/typeahead.module.ts","./src/app/services/theme.service.ts","./src/app/compare/premium.resolve.ts","./src/app/services/brands.service.ts","./src/app/model/gender.enum.ts","./src/app/shared/typeahead/components-helper.service.ts","./src/app/app.module.ts","./src/app/services/discount.service.ts","./src/app/app.routing.ts","./src/app/model/pddo-selected-details.ts","./src/app/services/file.service.ts","./src/$_lazy_route_resource lazy namespace object","./src/app/model/credit-card.ts","./src/app/shared/model-field-validation.directive.ts","./src/app/model/cover-field.ts","./src/app/model/cover-field-value.ts","./src/app/shared/typeahead/typeahead-utils.ts","./src/app/helpers/premiums.helper.ts","./src/app/model/account.ts","./src/app/model/australian-postcodes.ts","./src/app/compare/insurances.pipe.ts","./src/app/about-you/about-you.resolve.ts","./src/app/model/user.ts","./src/app/model/insurance-covers.ts","./src/app/thank-you/thank-you.component.ts","./src/app/thank-you/thank-you.component.html","./src/app/model/pet.ts","./src/app/services/breeds.service.ts","./src/app/model/breed.ts","./src/app/thank-you/thank-you.resolve.ts","./src/app/services/payment.service.ts","./src/app/services/call.service.ts","./src/app/services/recaptcha.service.ts","./src/app/services/quote.service.ts","./src/app/model/address.ts","./src/app/environments/environment.ts","./src/app/services/location.service.ts","./src/main.ts","./src/app/model/model-validator.ts","./src/app/model/productQuestion.ts"],"names":[],"mappings":"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EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,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","file":"main.js","sourcesContent":["\nexport class InsurancePromotion {\n\n static getCopy(insurancePromotion: InsurancePromotion): InsurancePromotion {\n if (!insurancePromotion) {\n return insurancePromotion;\n }\n return new InsurancePromotion(\n insurancePromotion.discountNo,\n insurancePromotion.discountCode,\n insurancePromotion.discountName,\n insurancePromotion.discountYear,\n insurancePromotion.discountMonth,\n insurancePromotion.discountFortnight,\n insurancePromotion.discountGst,\n insurancePromotion.discountStampDuty,\n insurancePromotion.premiumFreeValue,\n insurancePromotion.webDisplayValue\n );\n }\n\n constructor(\n public discountNo: number,\n public discountCode: string,\n public discountName: string,\n // discount are negative\n public discountYear: number,\n public discountMonth: number,\n public discountFortnight: number,\n public discountGst: number,\n public discountStampDuty: number,\n public premiumFreeValue: number,\n public webDisplayValue: boolean\n ) {\n }\n}\n","\ndeclare var $: any;\n\nexport class ToolsMethods {\n\n public static running: boolean = false;\n\n public static between(val: number, x: number, y: number, include: boolean = true): boolean {\n if (include) {\n return val >= x && val <= y;\n } else {\n return val > x && val < y ;\n }\n }\n\n public static getElWidth(selector: string): number {\n return $(selector).width();\n }\n\n public static scrollIsBottom(selector: string): boolean {\n return ($(selector).scrollTop() + $(selector).innerHeight() >= $(selector)[0].scrollHeight);\n }\n\n public static findPos(obj): number {\n let curtop = 0;\n if (obj.offsetParent) {\n do {\n curtop += obj.offsetTop;\n obj = obj.offsetParent;\n } while (obj);\n return curtop;\n }\n }\n\n public static scrollToId(id: string, animate: number = 0, marginTop: number = 0) {\n if (ToolsMethods.running) {\n return;\n }\n if (animate !== 0) {\n ToolsMethods.running = true;\n $('html, body').animate(\n {\n scrollTop: ToolsMethods.findPos(document.getElementById(id)) + marginTop\n },\n animate,\n function() {\n ToolsMethods.running = false;\n }\n );\n } else {\n window.scroll(\n 0,\n (ToolsMethods.findPos(document.getElementById(id)) + marginTop)\n );\n }\n }\n\n public static getScrollBarWidth(): number {\n let outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n document.body.appendChild(outer);\n\n let widthNoScroll = outer.offsetWidth;\n // force scrollbars\n outer.style.overflow = 'scroll';\n\n // add innerdiv\n let inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n let widthWithScroll = inner.offsetWidth;\n\n // remove divs\n outer.parentNode.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n }\n\n /**\n * Return the base url base on the currentRoute, add or remove trailing slash depending on the trailingSlash value\n *\n * @param currentRoute\n * @param trailingSlash if true it add a trailing slash, otherwise remove the trailing slash\n * @returns {string}\n */\n public static getBaseAbsoluteUrl(currentRoute: string, trailingSlash: boolean = true): string {\n let result = window.location.href;\n if (currentRoute !== '/') {\n let absoluteUrl = window.location.href;\n let lastIndex = absoluteUrl.lastIndexOf(currentRoute);\n if (lastIndex !== -1) {\n absoluteUrl = absoluteUrl.substring(0, lastIndex);\n }\n result = absoluteUrl;\n }\n if (trailingSlash && result.charAt(result.length - 1) !== '/') {\n result += '/';\n } else if (!trailingSlash && result.charAt(result.length - 1) === '/') {\n result = result.substring(0, result.length - 2);\n }\n return result;\n }\n\n public static simulateClickOn(selector: string) {\n $(selector).click();\n }\n\n /**\n * Get query parameter value in url\n *\n * @param url The url as a string\n * @param name The query parameter name as string\n * @returns {any} null if the url is empty or if there is not the query parameter in it. Or the query parameter value as string.\n */\n public static getQueryParamValueInUrl(url: string, name: string): string {\n if (!url || !name) {\n return null;\n }\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n let regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(url);\n if (!results) {\n return null;\n }\n if (!results[2]) {\n return '';\n }\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n /**\n * To get the date as string with the format yyyy-mm-dd\n *\n * @param date\n * @returns {string}\n */\n public static getDateAsString(date: Date) {\n return date.getFullYear()\n + '-' + (((date.getMonth() + 1) < 10) ? '0' : '') + (date.getMonth() + 1)\n + '-' + ((date.getDate() < 10) ? '0' : '') + date.getDate();\n }\n\n /**\n * Format the phone number to match the australian standards\n *\n * @param phoneNumber\n * @returns {string}\n */\n public static formatPhoneNumber(phoneNumber: string): string {\n if (phoneNumber === null || phoneNumber.length < 2) {\n return phoneNumber;\n }\n let cleanPhoneNumber = ToolsMethods.cleanPhoneNumber(phoneNumber);\n let formattedPhoneNumber = '';\n if (new RegExp('^0[023578]').test(cleanPhoneNumber)) {\n formattedPhoneNumber = '(' + cleanPhoneNumber.slice(0, 2) + ') ';\n if (cleanPhoneNumber.length > 5) {\n formattedPhoneNumber += cleanPhoneNumber.slice(2, 6) + ' ' + cleanPhoneNumber.slice(6);\n } else {\n formattedPhoneNumber += cleanPhoneNumber.slice(2);\n }\n } else if (cleanPhoneNumber.startsWith('04') && cleanPhoneNumber.length > 3) {\n if (cleanPhoneNumber.length > 6) {\n formattedPhoneNumber = cleanPhoneNumber.slice(0, 4)\n + ' ' + cleanPhoneNumber.slice(4, 7)\n + ' ' + cleanPhoneNumber.slice(7);\n } else {\n formattedPhoneNumber = cleanPhoneNumber.slice(0, 4) + ' ' + cleanPhoneNumber.slice(4);\n }\n } else {\n return phoneNumber;\n }\n return formattedPhoneNumber;\n }\n\n /**\n * Clean the phone number to contain only numbers (remove space and brackets)\n *\n * @param phoneNumber\n * @returns {string}\n */\n public static cleanPhoneNumber(phoneNumber: string): string {\n return phoneNumber.replace(/^\\+61/, '0').replace(/[^0-9]/g, '');\n }\n\n /**\n * Get the maximum phone length\n *\n * @param phoneNumber\n * @returns {number}\n */\n public static maxPhoneLength(phoneNumber: string): number {\n if (phoneNumber !== null && ToolsMethods.cleanPhoneNumber(phoneNumber).startsWith('04')) {\n return 12;\n }\n return 14;\n }\n\n /**\n * Validate australian phone number\n *\n * @param phoneNumber\n * @returns {boolean}\n */\n public static validatePhoneNumber(phoneNumber: string): boolean {\n if (phoneNumber === null) {\n return false;\n }\n let cleanPhoneNumber = ToolsMethods.cleanPhoneNumber(phoneNumber);\n return (cleanPhoneNumber.length === 10\n && /(0[02-578])(?!([\\d])\\2{7})([0-9]{8})/.test(cleanPhoneNumber));\n }\n\n /**\n * Get caret position for the given Input type=\"text\" element\n *\n * @param id The input id\n * @returns {number} The caret position, or -1 if the input does not exist\n */\n public static getCaretPosition(id: string): number {\n let input = document.getElementById(id);\n let selectionStartString: string = 'selectionStart';\n if (input && selectionStartString in input) {\n return input.selectionStart;\n }\n return -1;\n }\n\n /**\n * Set caret position for the given Input type=\"text\" element\n *\n * @param id The input id\n * @param pos The position to move the cursor\n */\n public static setCaretPosition(id: string, pos: number) {\n let ctrl = document.getElementById(id);\n if (ctrl.setSelectionRange) {\n ctrl.focus();\n ctrl.setSelectionRange(pos, pos);\n }\n }\n\n public static smartJoinTexts(texts: string[]): string {\n if (!texts || texts.length <= 0) {\n return '';\n }\n if (texts.length === 1) {\n return texts[0];\n }\n if (texts.length === 2) {\n return texts.join(' and ');\n }\n return texts.slice(0, texts.length - 1).join(', ')\n + ' and '\n + texts[texts.length - 1];\n }\n\n //Capture digital Lead Source\n public static getCookie(cookies: any) { \n var result = {};\n try {\n for(var cookie of cookies.split(\";\"))\n {\n var splitCookie = cookie.split('=');\n result[splitCookie[0].replace(/ /g, \"\")] = splitCookie[1].replace(/ /g, \"\");\n } \n }\n catch (exception) {\n // Ignore any Exception\n }\n return result;\n }\n}\n","import { ModelValidator } from './model-validator';\n\nimport { Frequency } from './frequency.enum';\nimport { CoverFieldValue } from './cover-field-value';\nimport { InsurancePromotion } from './insurance-promotion';\nimport { InsurancePricing } from './insurance-pricing';\nimport { StringHelper } from '../helpers/string.helpers';\n\nexport class Insurance extends ModelValidator {\n\n static getBlank(): Insurance {\n return new Insurance('',\n 0, null, null, '', '', '', '', false,\n 0, '', '', '', '', '', '',\n null, null, null,\n null, null, null,\n '',\n null, null, null,\n null, null, null,\n null,\n false, false, 0, 0\n );\n }\n\n static getCopy(insurance: Insurance): Insurance {\n let insCopy: Insurance = Insurance.getBlank();\n insCopy.policyBookletLink = insurance.policyBookletLink;\n insCopy.id = insurance.id;\n insCopy.productBenefitId = insurance.productBenefitId;\n insCopy.productCode = insurance.productCode;\n insCopy.petSureProductCode = insurance.petSureProductCode;\n insCopy.petSurePartnerCode = insurance.petSurePartnerCode;\n insCopy.coverName = insurance.coverName;\n insCopy.routineCareAvailable = insurance.routineCareAvailable;\n\n insCopy.brandId = insurance.brandId;\n insCopy.brandCode = insurance.brandCode;\n insCopy.insuranceName = insurance.insuranceName;\n insCopy.brandLogo = insurance.brandLogo;\n insCopy.brandLogoLarge = insurance.brandLogoLarge;\n insCopy.aboutBrand = insurance.aboutBrand;\n insCopy.brandPhone = insurance.brandPhone;\n\n insCopy.priceFortnight = insurance.priceFortnight;\n insCopy.priceMonth = insurance.priceMonth;\n insCopy.priceYear = insurance.priceYear;\n\n insCopy.originalPriceFortnight = insurance.originalPriceFortnight;\n insCopy.originalPriceMonth = insurance.originalPriceMonth;\n insCopy.originalPriceYear = insurance.originalPriceYear;\n insCopy.originalPriceText = insurance.originalPriceText;\n\n insCopy.routineCarePriceFortnight = insurance.routineCarePriceFortnight;\n insCopy.routineCarePriceMonth = insurance.routineCarePriceMonth;\n insCopy.routineCarePriceYear = insurance.routineCarePriceYear;\n\n insCopy.originalRoutineCarePriceFortnight = insurance.originalRoutineCarePriceFortnight;\n insCopy.originalRoutineCarePriceMonth = insurance.originalRoutineCarePriceMonth;\n insCopy.originalRoutineCarePriceYear = insurance.originalRoutineCarePriceYear;\n\n insCopy.routineCareSelected = insurance.routineCareSelected;\n\n insCopy.seniorDiscount = insurance.seniorDiscount;\n insCopy.seniorDiscountAmount = insurance.seniorDiscountAmount;\n insCopy.seniorDiscountAmountRoutineCare = insurance.seniorDiscountAmountRoutineCare;\n\n insCopy.multiPetDiscount = insurance.multiPetDiscount;\n insCopy.multiPetDiscountRoutineCare = insurance.multiPetDiscountRoutineCare;\n insCopy.multiPetDiscountCount = insurance.multiPetDiscountCount;\n\n insCopy.coolingOffDays = insurance.coolingOffDays;\n insCopy.minimumPetAgeForAccidentOnly = insurance.minimumPetAgeForAccidentOnly;\n insCopy.accidentBenefitCode = insurance.accidentBenefitCode;\n insCopy.createdDate = insurance.createdDate;\n insCopy.insurancePromotion = InsurancePromotion.getCopy(insurance.insurancePromotion);\n\n insCopy.excessOptions = insurance.excessOptions;\n insCopy.excessDefault = insurance.excessDefault;\n insCopy.excessSelected = insurance.excessSelected;\n insCopy.pricings = insurance.cloneInsurancePricings();\n insCopy.fields = insurance.fields;\n return insCopy;\n }\n\n public static isFrequency(value: string, frequency: Frequency): boolean {\n switch (frequency) {\n case Frequency.Fortnight:\n return value.toLowerCase().startsWith('fortnight');\n case Frequency.Month:\n return value.toLowerCase().startsWith('month');\n case Frequency.Year:\n return value.toLowerCase().startsWith('annual');\n default:\n return false;\n }\n }\n\n constructor(\n public policyBookletLink: string,\n public id: number,\n public quoteDetailsId: number,\n public productBenefitId: number,\n public productCode: string,\n public petSureProductCode: string,\n public petSurePartnerCode: string,\n public coverName: string,\n public routineCareAvailable: boolean,\n\n public brandId: number,\n public brandCode: string,\n public insuranceName: string,\n public brandLogo: string,\n public brandLogoLarge: string,\n public aboutBrand: string,\n public brandPhone: string,\n\n public priceFortnight: number,\n public priceMonth: number,\n public priceYear: number,\n\n public originalPriceFortnight: number,\n public originalPriceMonth: number,\n public originalPriceYear: number,\n public originalPriceText: string,\n\n public routineCarePriceFortnight: number,\n public routineCarePriceMonth: number,\n public routineCarePriceYear: number,\n\n public originalRoutineCarePriceFortnight: number,\n public originalRoutineCarePriceMonth: number,\n public originalRoutineCarePriceYear: number,\n\n public fields: Map,\n public routineCareSelected: boolean = false,\n public shortListed: boolean = false,\n public displayOrder: number = 0,\n\n public seniorDiscount: number = 0,\n public seniorDiscountAmount: number = 0,\n public seniorDiscountAmountRoutineCare: number = 0,\n\n public multiPetDiscount: number = 0,\n public multiPetDiscountRoutineCare: number = 0,\n public multiPetDiscountCount: number = 0,\n\n public coolingOffDays: number = 30,\n public minimumPetAgeForAccidentOnly: number = 99,\n public accidentBenefitCode: string = '',\n public createdDate: string = '',\n public insurancePromotion: InsurancePromotion = null,\n\n public excessOptions: number[] = [ 0 ],\n public excessDefault: number = 0,\n public excessSelected: number = 0,\n public pricings: InsurancePricing[] = []\n ) {\n super();\n }\n\n getFields() {\n if (this.fields) {\n return this.fields;\n } else {\n return new Map();\n }\n }\n\n hasExcess(): boolean {\n return this.excessOptions.length>1;\n }\n\n\n hasRoutineCare(): boolean {\n if (!this.pricings || this.pricings.length <= 0) {\n return this.routineCareAvailable;\n }\n for (let pricing of this.pricings) {\n if (pricing.hasRoutineCare()) {\n return true;\n }\n }\n return false;\n }\n\n hasDiscountNoRoutineCare(): boolean {\n return this.originalPriceYear > 0\n && this.getOriginalPrice(Frequency.Year, false) !== this.getPrice(Frequency.Year, false);\n }\n\n hasDiscountRoutineCare(): boolean {\n return this.originalRoutineCarePriceYear > 0\n && this.getOriginalPrice(Frequency.Year, true) !== this.getPrice(Frequency.Year, true);\n }\n\n hasDiscount(routine: boolean = null): boolean {\n let forRoutine: boolean = (routine !== null) ? routine : this.routineCareSelected;\n return forRoutine ? this.hasDiscountRoutineCare() : this.hasDiscountNoRoutineCare();\n }\n\n hasDiscountIfNoRoutine(): boolean {\n return this.hasDiscountRoutineCare() || this.hasDiscountNoRoutineCare();\n }\n\n applyInsurancePricing(pricing: InsurancePricing) {\n if (!pricing) {\n return;\n }\n this.productBenefitId = pricing.productBenefitId;\n this.productCode = pricing.productCode;\n this.petSureProductCode = pricing.petSureProductCode;\n this.routineCareAvailable = pricing.routineCareAvailable;\n this.coverName = pricing.productName;\n\n this.priceFortnight = pricing.priceFortnight;\n this.priceMonth = pricing.priceMonth;\n this.priceYear = pricing.priceYear;\n\n this.originalPriceFortnight = pricing.originalPriceFortnight;\n this.originalPriceMonth = pricing.originalPriceMonth;\n this.originalPriceYear = pricing.originalPriceYear;\n\n this.routineCarePriceFortnight = pricing.routineCarePriceFortnight;\n this.routineCarePriceMonth = pricing.routineCarePriceMonth;\n this.routineCarePriceYear = pricing.routineCarePriceYear;\n\n this.originalRoutineCarePriceFortnight = pricing.originalRoutineCarePriceFortnight;\n this.originalRoutineCarePriceMonth = pricing.originalRoutineCarePriceMonth;\n this.originalRoutineCarePriceYear = pricing.originalRoutineCarePriceYear;\n\n this.seniorDiscountAmount = pricing.seniorDiscountAmount;\n this.seniorDiscountAmountRoutineCare = pricing.seniorDiscountAmountRoutineCare;\n\n this.multiPetDiscount = pricing.multiPetDiscount;\n this.multiPetDiscountRoutineCare = pricing.multiPetDiscountRoutineCare;\n this.multiPetDiscountCount = pricing.multiPetDiscountCount;\n\n this.displayOrder = pricing.displayOrder;\n this.coolingOffDays = pricing.coolingOffDays;\n this.minimumPetAgeForAccidentOnly = pricing.minimumPetAgeForAccidentOnly;\n this.accidentBenefitCode = pricing.accidentBenefitCode;\n }\n\n applyCurrentInsurancePricing() {\n this.applyInsurancePricing(this.getCurrentInsurancePricing());\n }\n\n setExcess(excessAmount: number) {\n let insurancePricing: InsurancePricing = this.getInsurancePricing(excessAmount, this.routineCareSelected);\n if (!insurancePricing) {\n return;\n }\n this.excessSelected = excessAmount;\n this.applyInsurancePricing(insurancePricing);\n }\n\n setRoutineCare(routineCare: boolean) {\n if (!this.hasRoutineCare()) {\n return;\n }\n let insurancePricing: InsurancePricing = this.getInsurancePricing(this.excessSelected, routineCare);\n if (!insurancePricing) {\n return;\n }\n this.routineCareSelected = routineCare;\n this.applyInsurancePricing(insurancePricing);\n }\n\n /**\n * No fallback on insurance pricing, get the one which match\n *\n * @param {number} excess\n * @param {boolean} routineCare\n * @returns {any}\n */\n getStrictInsurancePricing(excess: number, routineCare: boolean) {\n if (!this.pricings || this.pricings.length <= 0) {\n return null;\n }\n for (let pricing of this.pricings) {\n if (pricing.excess === excess && routineCare === pricing.hasRoutineCare()) {\n return pricing;\n }\n }\n return null;\n }\n\n /**\n * No fallback on insurance pricing, get the one which match\n *\n * @param {number} excess\n * @param {boolean} routineCare\n * @returns {any}\n */\n getInsurancePricingWithExcess(excess: number) {\n if (!this.pricings || this.pricings.length <= 0) {\n return null;\n }\n for (let pricing of this.pricings) {\n if (pricing.excess === excess) {\n return pricing;\n }\n }\n return null;\n }\n\n /**\n * get the insurance pricing which match or fallback to the closest one\n *\n * @param {number} excess\n * @param {boolean} routineCare\n * @returns {InsurancePricing}\n */\n getInsurancePricing(excess: number, routineCare: boolean): InsurancePricing {\n if (!this.pricings || this.pricings.length <= 0) {\n return null;\n }\n let pricing = this.getStrictInsurancePricing(excess, routineCare);\n if (pricing === null) {\n return this.getInsurancePricingWithExcess(excess);\n }\n return pricing;\n }\n\n cloneInsurancePricings(): InsurancePricing[] {\n let newPricings: InsurancePricing[] = [];\n if (!this.pricings || this.pricings.length <= 0) {\n return newPricings;\n }\n for (let pricing of this.pricings) {\n newPricings.push(InsurancePricing.getCopy(pricing));\n }\n return newPricings;\n }\n\n updateExcessOptions() {\n if (this.pricings && this.pricings.length > 0) {\n this.excessOptions = [];\n for (let pricing of this.pricings) {\n this.excessOptions.push(pricing.excess);\n }\n this.excessOptions = this.excessOptions.sort((a, b) => {\n return b - a;\n });\n let seen = {};\n this.excessOptions = this.excessOptions.filter(function(item) {\n return seen.hasOwnProperty(item) ? false : (seen[item] = true);\n });\n }\n }\n\n mergeInsurancePricings(pricingsToMerge: InsurancePricing[]) {\n if (!this.pricings || this.pricings.length <= 0) {\n this.pricings = pricingsToMerge;\n return;\n }\n for (let pricing of pricingsToMerge) {\n let pricingToOverride = this.getStrictInsurancePricing(pricing.excess, pricing.hasRoutineCare());\n if (pricingToOverride) {\n pricingToOverride.mergeInsurancePricings(pricing);\n continue;\n }\n this.pricings.push(pricing);\n }\n this.updateExcessOptions();\n }\n\n getCurrentInsurancePricing(): InsurancePricing {\n return this.getInsurancePricing(this.excessSelected, this.routineCareSelected);\n }\n\n getFallBackPrice(freq: Frequency, routine: boolean = null): number {\n let forRoutine: boolean = (routine !== null) ? routine : this.routineCareSelected;\n let price = 0;\n switch (freq) {\n case Frequency.Fortnight:\n price = (forRoutine && this.hasRoutineCare()) ?\n this.routineCarePriceFortnight : this.priceFortnight;\n break;\n case Frequency.Month:\n price = (forRoutine && this.hasRoutineCare()) ?\n this.routineCarePriceMonth : this.priceMonth;\n break;\n case Frequency.Year:\n price = (forRoutine && this.hasRoutineCare()) ?\n this.routineCarePriceYear : this.priceYear;\n break;\n default:\n price = 0;\n break;\n }\n // discount is negative\n return price;\n }\n\n getPrice(freq: Frequency, routine: boolean = null): number {\n let insurancePricing: InsurancePricing = this.getCurrentInsurancePricing();\n if (!insurancePricing) {\n return this.getFallBackPrice(freq, routine);\n }\n let forRoutine: boolean = (routine !== null) ? routine : this.routineCareSelected;\n return insurancePricing.getPrice(freq, forRoutine);\n }\n\n getFallBackOriginalPrice(freq: Frequency, routine: boolean = null): number {\n let forRoutine: boolean = (routine !== null) ? routine : this.routineCareSelected;\n let price = 0;\n switch (freq) {\n case Frequency.Fortnight:\n price = ((forRoutine && this.hasRoutineCare()) ?\n this.originalRoutineCarePriceFortnight : this.originalPriceFortnight);\n break;\n case Frequency.Month:\n price = ((forRoutine && this.hasRoutineCare()) ?\n this.originalRoutineCarePriceMonth : this.originalPriceMonth);\n break;\n case Frequency.Year:\n price = ((forRoutine && this.hasRoutineCare()) ?\n this.originalRoutineCarePriceYear : this.originalPriceYear);\n break;\n default:\n price = 0;\n break;\n }\n return price;\n }\n\n getOriginalPrice(freq: Frequency, routine: boolean = null): number {\n let insurancePricing: InsurancePricing = this.getCurrentInsurancePricing();\n if (!insurancePricing) {\n return this.getFallBackOriginalPrice(freq, routine);\n }\n let forRoutine: boolean = (routine !== null) ? routine : this.routineCareSelected;\n return insurancePricing.getOriginalPrice(freq, forRoutine);\n }\n\n getFallBackDiscountAmount(freq: Frequency, routine: boolean = null): number {\n let forRoutine: boolean = (routine !== null) ? routine : this.routineCareSelected;\n if (this.hasDiscount(forRoutine)) {\n let discount: number = this.getOriginalPrice(freq, forRoutine) - this.getPrice(freq, forRoutine);\n return discount > 0 ? discount : 0;\n }\n return 0;\n }\n\n getDiscountAmount(freq: Frequency, routine: boolean = null): number {\n let insurancePricing: InsurancePricing = this.getCurrentInsurancePricing();\n if (!insurancePricing) {\n return this.getFallBackDiscountAmount(freq, routine);\n }\n let forRoutine: boolean = (routine !== null) ? routine : this.routineCareSelected;\n return insurancePricing.getDiscountAmount(freq, forRoutine);\n }\n\n getFallBackOriginalPriceIfNoRoutine(freq: Frequency): number {\n if (this.routineCareSelected && this.hasDiscount(true)) {\n return this.getOriginalPrice(freq, this.routineCareSelected);\n } else {\n return this.getOriginalPrice(freq, false);\n }\n }\n\n getOriginalPriceIfNoRoutine(freq: Frequency): number {\n let insurancePricing: InsurancePricing = this.getCurrentInsurancePricing();\n if (!insurancePricing) {\n return this.getFallBackOriginalPriceIfNoRoutine(freq);\n }\n return insurancePricing.getOriginalPriceIfNoRoutine(freq, this.routineCareSelected);\n }\n\n convertPriceToFrequency(amount: number, freq: Frequency): number {\n let newValue = amount;\n switch (freq) {\n case Frequency.Fortnight:\n newValue = newValue / 26;\n break;\n case Frequency.Month:\n newValue = newValue / 12;\n break;\n default:\n break;\n }\n return newValue;\n }\n\n getFallBackSeniorDiscountAmount(freq: Frequency): number {\n if (this.seniorDiscountAmount <= 0 && this.seniorDiscountAmountRoutineCare <= 0) {\n return 0;\n }\n let amountDiscount = this.seniorDiscountAmount;\n if (this.routineCareSelected) {\n amountDiscount = this.seniorDiscountAmountRoutineCare;\n }\n return this.convertPriceToFrequency(amountDiscount, freq);\n }\n\n getSeniorDiscountAmount(freq: Frequency): number {\n let insurancePricing: InsurancePricing = this.getCurrentInsurancePricing();\n if (!insurancePricing) {\n return this.getFallBackSeniorDiscountAmount(freq);\n }\n return insurancePricing.getSeniorDiscountAmount(freq, this.routineCareSelected);\n }\n\n getFallBackMultipetDiscount(freq: Frequency): number {\n if (this.multiPetDiscount <= 0 && this.multiPetDiscountRoutineCare <= 0) {\n return 0;\n }\n let amountDiscount = this.multiPetDiscount;\n if (this.routineCareSelected) {\n amountDiscount = this.multiPetDiscountRoutineCare;\n }\n return this.convertPriceToFrequency(amountDiscount, freq);\n }\n\n getMultipetDiscount(freq: Frequency): number {\n let insurancePricing: InsurancePricing = this.getCurrentInsurancePricing();\n if (!insurancePricing) {\n return this.getFallBackMultipetDiscount(freq);\n }\n return insurancePricing.getMultipetDiscount(freq, this.routineCareSelected);\n }\n\n proceedValidation(step: number = 0): boolean {\n if (step === 3) {\n if (this.coverName === null || this.coverName.length < 1) {\n this.setError('coverName', 'Please select your level of cover');\n }\n if (this.productBenefitId === null || this.productBenefitId === 0) {\n this.setError('coverName', 'Please select your level of cover');\n }\n }\n return this.isValid();\n }\n\n //User story - 31124 - Choosi PDDO Pet STP\n //Step2 & Step 3 - get benefit Percentage\n getBenefitPercentage(): string {\n if (this.fields) {\n let benefitPercentageCoverField = Array.from(this.fields).find(p=>p[1].name === 'Benefit percentage reimbursed for eligible vet expenses')[1];\n let coverFieldValues = Array.from(this.fields.values()) as CoverFieldValue[]; \n if(benefitPercentageCoverField)\n {\n var benefitPercentagehtml = coverFieldValues.find(c=>c.id===benefitPercentageCoverField.id).html; \n return StringHelper.ReplaceCaseInsensitive(StringHelper.stripHtml(benefitPercentagehtml), \"up to\",\"\"); \n }\n else {\n return '';\n }\n } else {\n return '';\n }\n }\n //User story - 31124 - Choosi PDDO Pet STP\n //Step2 & Step 3 - get benefit limit\n getBenefitLimit(): string {\n if (this.fields) {\n let benefitLimitCoverField = Array.from(this.fields).find(p=>p[1].name === 'Benefit limit¹')[1];\n let coverFieldValues = Array.from(this.fields.values()) as CoverFieldValue[]; \n if(benefitLimitCoverField)\n {\n var benefitLimithtml = coverFieldValues.find(c=>c.id===benefitLimitCoverField.id).html;\n return StringHelper.FormatCurrency(StringHelper.stripHtml(benefitLimithtml));\n }\n else {\n return '';\n }\n } else {\n return '';\n }\n }\n //User story - 31124 - Choosi PDDO Pet STP\n //Step2 & Step 3 - get annual limit\n getAnnualLimit(): string {\n if (this.fields) {\n let annualLimitCoverField = Array.from(this.fields).find(p=>p[1].name === 'Annual condition limit. This limit applies to each condition you claim, in each policy period. We won\\'t pay more than the annual condition limit for any one condition.')[1];\n let coverFieldValues = Array.from(this.fields.values()) as CoverFieldValue[]; \n if(annualLimitCoverField)\n {\n return coverFieldValues.find(c=>c.id===annualLimitCoverField.id).html;\n }\n else {\n return '';\n }\n } else {\n return '';\n }\n }\n}\n","import { ModelValidator } from './model-validator';\n\nexport class Loading extends ModelValidator {\n\n static getBlank(): Loading {\n return new Loading('Loading', false);\n }\n\n constructor(\n public loadingText: string,\n public activated: boolean\n ) {\n super();\n }\n\n proceedValidation(step: number): boolean {\n return true;\n }\n\n}\n","\nexport enum PaymentType {\n ACCOUNT = 1,\n CARD = 2\n}\n","/**\n * Created by stephen.dolier on 14/10/2016.\n */\n\nimport { Directive, ElementRef, EventEmitter, Output } from '@angular/core';\nimport { NgModel } from '@angular/forms';\n\ndeclare var google: any;\n\n@Directive({\n selector: '[address-typeahead]',\n providers: [NgModel],\n host: {\n '(input)' : 'onInputChange()'\n }\n})\nexport class AddressTypeaheadDirective {\n\n @Output() setAddress: EventEmitter = new EventEmitter();\n\n modelValue: any;\n autocomplete: any;\n\n private _el: HTMLElement;\n\n constructor(el: ElementRef, private model: NgModel) {\n\n this._el = el.nativeElement;\n this.modelValue = this.model;\n\n let input = this._el;\n\n let options = {\n types: ['address'],\n componentRestrictions: {country: 'au'}\n };\n\n this.autocomplete = new google.maps.places.Autocomplete(input, options);\n\n google.maps.event.addListener(this.autocomplete, 'place_changed', () => {\n let place = this.autocomplete.getPlace();\n this.invokeEvent(place);\n });\n }\n\n invokeEvent(place: Object) {\n this.setAddress.emit(place);\n }\n\n onInputChange() {} // tslint:disable-line no-empty\n}\n","import { Injectable } from '@angular/core';\nimport {\n CanActivate, Router,\n ActivatedRouteSnapshot,\n RouterStateSnapshot\n} from '@angular/router';\n\nimport { Pet } from '../model/pet';\nimport { User } from '../model/user';\nimport { Theme } from '../model/theme';\nimport { Insurance } from '../model/insurance';\n\nimport { SubscriptionService } from '../services/subscription.service';\nimport { ClientService } from '../services/client.service';\n\n@Injectable()\nexport class BuyRouteGuard implements CanActivate {\n\n\n constructor(\n private subscriptionService: SubscriptionService,\n private clientService: ClientService,\n private router: Router\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n try {\n let user = this.subscriptionService.getSubscriptions('user').getValue();\n let pets = this.subscriptionService.getSubscriptions('pets').getValue();\n let theme = this.subscriptionService.getSubscriptions('theme').getValue();\n let insurance = this.subscriptionService.getSubscriptions('insurance').getValue();\n let petCoverList = this.subscriptionService.getSubscriptions('pet-covers').getValue();\n\n let petValid = true;\n if (pets.length > 0) {\n for (let pet of pets) {\n if (pet === null && !pet.validate()) {\n petValid = false;\n }\n }\n } else {\n petValid = false;\n }\n\n let userValid = user !== null && user.validate();\n let petCoverListValid = petCoverList !== null && petCoverList.length > 0;\n let insuranceValid = insurance !== null && insurance.validate();\n\n if (petValid && userValid && petCoverListValid && insuranceValid) {\n this.clientService.updatePageForClient(theme, user, pets[0], 3);\n return true;\n }\n } catch (e) {\n console.error('Cannot access to this page there is missing elements: ' + e.toString());\n }\n\n // navigate to the default page\n this.router.navigate(['']);\n return false;\n }\n}\n","import { Component, Output, EventEmitter } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { CONFIGURATION } from '../environments/environment';\n\nimport { User } from '../model/user';\nimport { Theme } from '../model/theme';\nimport { State } from '../model/state.enum';\n\nimport { SubscriptionService } from '../services/subscription.service';\nimport { CallService } from '../services/call.service';\n\nimport { ToolsMethods } from '../shared/tools.methods';\n\ndeclare let utag: any;\n\n@Component({\n selector: '[have-us-call]',\n templateUrl: 'have-call.component.html',\n providers: [CallService]\n})\nexport class HaveCallComponent {\n\n STATES = State;\n errorMsg: string = '';\n\n submitted: boolean = false;\n finalSubmit: boolean = false;\n theme: Theme;\n user: User;\n\n subscriptionUser: BehaviorSubject;\n subscriptionTheme: BehaviorSubject;\n\n @Output() closeHaveCall = new EventEmitter();\n\n public constructor(\n private callService: CallService,\n private subscriptionService: SubscriptionService\n ) {\n this.user = User.getBlank();\n this.subscriptionUser = subscriptionService.getSubscriptions('user');\n this.subscriptionUser.subscribe(\n user => {\n this.updateUserDetails(user);\n }\n );\n this.subscriptionTheme = subscriptionService.getSubscriptions('theme');\n this.subscriptionTheme.subscribe(\n theme => {\n this.theme = theme;\n }\n );\n }\n\n updateUserDetails(user: User) {\n this.user.firstName = user.firstName;\n this.user.contactNumber = user.contactNumber;\n this.user.lastName = user.lastName;\n if (user.address !== null && user.address.state !== null) {\n this.user.address.state = user.address.state;\n }\n }\n\n updatePhoneNumber($event: any) {\n let currentPosition: number = ToolsMethods.getCaretPosition('haveCallContactNumber');\n let currentSize: number = this.user.contactNumber.length;\n this.user.contactNumber = ToolsMethods.formatPhoneNumber($event);\n let finalSize: number = this.user.contactNumber.length;\n let diff: number = finalSize - currentSize;\n setTimeout(() => { ToolsMethods.setCaretPosition('haveCallContactNumber', currentPosition + diff); }, 5);\n }\n\n updateNumberOnDel($event: any) {\n if ($event.keyCode === 8 || $event.keyCode === 46) {\n this.user.contactNumber = ToolsMethods.formatPhoneNumber($event.target.value);\n }\n }\n\n onSubmit() {\n this.submitted = true;\n this.errorMsg = '';\n if (!this.user.validate(20)) {\n return;\n }\n this.callService\n .haveUsCall(this.theme.id, this.user, ToolsMethods.getCookie(document.cookie))\n .then(\n response => {\n this.finalSubmit = response !== '0';\n this.addTag(response);\n },\n error => {\n this.errorMsg = 'An error occurred while submitting the form please try again';\n }\n );\n }\n\n addTag (id: string) {\n if (typeof utag !== 'undefined') {\n let u2: string = CONFIGURATION.tracker_name;\n let ord: string = 'ccmn' + id;\n let dataToSend = {\n event_category: 'Forms',\n event_action: 'Have us call you',\n event_label: 'submitted',\n cost: '',\n order_value: '',\n qty: 1,\n u1: 'call_request',\n u2: u2,\n value_currency: '',\n ord: ord\n };\n if (CONFIGURATION.environment === 'dev') {\n console.log('TAGGING');\n console.log(JSON.stringify(dataToSend));\n }\n utag.link(dataToSend);\n }\n }\n\n close() {\n this.closeHaveCall.emit(false);\n }\n\n get maxPhoneLength(): number {\n return ToolsMethods.maxPhoneLength(this.user.contactNumber);\n }\n}\n","
\n
\n
\n
\n

Before we call you, please confirm the following

\n
\n X\n
\n
\n
\n
\n \n
\n \n
\n Please enter your first name\n
\n
\n
\n
\n
\n \n
\n \n
\n Please enter you last name\n
\n
\n
\n
\n
\n \n
\n \n
\n Please enter a valid Australian phone number including the area code\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n {{ errorMsg }}\n
\n
\n
\n
\n
\n
\n
\n
\n

Thank you

\n
\n X\n
\n
\n
\n
\n

\n Thanks {{user.firstName}}. One of {{theme.companyName}}’s team of Choosers will be in touch with\n you soon to answer any questions that you may have.\n

\n
\n
\n
\n Please note: We will only attempt to contact you weekdays between 8:00am-8:00pm (AEST).\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n\n\n\n","import { ComponentRef, Directive, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ReflectiveInjector, TemplateRef, ViewContainerRef, Renderer2 } from '@angular/core';\nimport { FormControl, NgControl} from '@angular/forms';\n\nimport { TypeaheadContainerComponent } from './typeahead-container.component';\nimport { TypeaheadOptions } from './typeahead-options.class';\nimport { TypeaheadUtils } from './typeahead-utils';\n\nimport { Observable } from 'rxjs-compat';\n//import { debounceTime, mergeMap, filter, toArray } from 'rxjs/operators';\nimport 'rxjs-compat/add/operator/debounceTime';\nimport 'rxjs-compat/add/operator/mergeMap';\nimport 'rxjs-compat/add/operator/filter';\nimport 'rxjs-compat/add/operator/toArray';\n\nimport { ComponentsHelper } from './components-helper.service';\nimport { TypeaheadMatch } from './typeahead-match.class';\n\n@Directive({\n selector: '[typeahead][ngModel],[typeahead][formControlName]'\n})\nexport class TypeaheadDirective implements OnInit {\n @Output() public typeaheadLoading: EventEmitter = new EventEmitter(false);\n @Output() public typeaheadNoResults: EventEmitter = new EventEmitter(false);\n @Output() public typeaheadOnSelect: EventEmitter = new EventEmitter(false);\n\n @Input() public typeahead: any;\n @Input() public typeaheadMinLength: number = void 0;\n @Input() public typeaheadWaitMs: number;\n @Input() public typeaheadOptionsLimit: number;\n @Input() public typeaheadOptionField: string;\n @Input() public typeaheadGroupField: string;\n @Input() public typeaheadAsync: boolean = void 0;\n @Input() public typeaheadLatinize: boolean = true;\n @Input() public typeaheadSingleWords: boolean = true;\n @Input() public typeaheadWordDelimiters: string = ' ';\n @Input() public typeaheadPhraseDelimiters: string = '\\'\"';\n @Input() public typeaheadItemTemplate: TemplateRef;\n\n public container: TypeaheadContainerComponent;\n public isTypeaheadOptionsListActive: boolean = false;\n\n protected keyUpEventEmitter: EventEmitter = new EventEmitter();\n protected _matches: TypeaheadMatch[];\n protected placement: string = 'bottom-left';\n protected popup: ComponentRef;\n\n protected ngControl: NgControl;\n protected viewContainerRef: ViewContainerRef;\n protected element: ElementRef;\n protected renderer: Renderer2;\n protected componentsHelper: ComponentsHelper;\n\n @HostListener('keyup', ['$event'])\n public onChange(e: any): void {\n\n // tab\n if (e.keyCode === 9 || e.keyCode === 32) {\n return;\n }\n\n if (this.container) {\n\n // esc\n if (e.keyCode === 27) {\n this.hide();\n return;\n }\n\n // up\n if (e.keyCode === 38) {\n this.container.prevActiveMatch();\n return;\n }\n\n // down\n if (e.keyCode === 40) {\n this.container.nextActiveMatch();\n return;\n }\n\n // enter\n if (e.keyCode === 13) {\n this.container.selectActiveMatch();\n return;\n }\n }\n\n // for ``s, use the `value` property. For others that don't have a\n // `value` (such as ``, use `innerText`.\n const value = e.target.value !== undefined ? e.target.value : e.target.innerText;\n if (value.trim().length >= this.typeaheadMinLength) {\n this.typeaheadLoading.emit(true);\n this.keyUpEventEmitter.emit(e.target.value);\n } else {\n this.typeaheadLoading.emit(false);\n this.typeaheadNoResults.emit(false);\n this.hide();\n }\n }\n\n @HostListener('focus')\n public onFocus(): void {\n if (this.typeaheadMinLength === 0) {\n this.typeaheadLoading.emit(true);\n this.keyUpEventEmitter.emit('');\n }\n }\n\n @HostListener('blur')\n public onBlur(): void {\n if (this.container && !this.container.isFocused) {\n this.hide();\n }\n }\n\n @HostListener('keydown', ['$event'])\n public onKeydown(e: KeyboardEvent): void {\n // no container - no problems\n if (!this.container) {\n return;\n }\n\n // if items is visible - prevent form submition\n if (e.keyCode === 13) {\n e.preventDefault();\n return;\n }\n\n // if tab default browser behavior will select next input field, and therefore we should close the items list\n if (e.keyCode === 9) {\n this.hide();\n return;\n }\n }\n\n public constructor(\n control: NgControl,\n viewContainerRef: ViewContainerRef,\n element: ElementRef,\n renderer: Renderer2,\n componentsHelper: ComponentsHelper\n ) {\n this.element = element;\n this.ngControl = control;\n this.viewContainerRef = viewContainerRef;\n this.renderer = renderer;\n this.componentsHelper = componentsHelper;\n }\n\n public ngOnInit(): void {\n this.typeaheadOptionsLimit = this.typeaheadOptionsLimit || 20;\n this.typeaheadMinLength = this.typeaheadMinLength === void 0 ? 1 : this.typeaheadMinLength;\n this.typeaheadWaitMs = this.typeaheadWaitMs || 0;\n\n // async should be false in case of array\n if (this.typeaheadAsync === undefined && !(this.typeahead instanceof Observable)) {\n this.typeaheadAsync = false;\n }\n\n if (this.typeahead instanceof Observable) {\n this.typeaheadAsync = true;\n }\n\n if (this.typeaheadAsync) {\n this.asyncActions();\n } else {\n this.syncActions();\n }\n }\n\n public changeModel(match: TypeaheadMatch): void {\n let valueStr: string = match.value;\n this.ngControl.viewToModelUpdate(valueStr);\n (this.ngControl.control as FormControl).setValue(valueStr);\n this.hide();\n }\n\n public get matches(): any[] {\n return this._matches;\n }\n\n public show(): void {\n let options = new TypeaheadOptions({\n typeaheadRef: this,\n placement: this.placement,\n animation: false\n });\n\n let binding = ReflectiveInjector.resolve([\n {provide: TypeaheadOptions, useValue: options}\n ]);\n\n this.popup = this.componentsHelper\n .appendNextToLocation(TypeaheadContainerComponent, this.viewContainerRef, binding);\n\n this.popup.instance.position(this.viewContainerRef.element);\n this.container = this.popup.instance;\n this.container.parent = this;\n // this improves the speed as it won't have to be done for each list item\n let normalizedQuery = (this.typeaheadLatinize\n ? TypeaheadUtils.latinize(this.ngControl.control.value)\n : this.ngControl.control.value).toString()\n .toLowerCase();\n this.container.query = this.typeaheadSingleWords\n ? TypeaheadUtils.tokenize(normalizedQuery, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters)\n : normalizedQuery;\n this.container.matches = this._matches;\n this.element.nativeElement.focus();\n }\n\n public hide(): void {\n if (this.container) {\n this.popup.destroy();\n this.container = void 0;\n }\n }\n\n protected asyncActions(): void {\n this.keyUpEventEmitter\n .debounceTime(this.typeaheadWaitMs)\n .mergeMap(() => this.typeahead) \n .subscribe(\n (matches: any[]) => {\n this.finalizeAsyncCall(matches);\n },\n (err: any) => {\n console.error(err);\n }\n )\n }\n\n protected syncActions(): void {\n // noinspection TypeScriptValidateTypes\n this.keyUpEventEmitter\n .debounceTime(this.typeaheadWaitMs)\n .mergeMap(\n (value: string) => {\n let normalizedQuery = this.normalizeQuery(value);\n if (this.typeahead) { \n return Observable.from(this.typeahead)\n .filter((option: any) => {\n return option && this.testMatch(this.normalizeOption(option), normalizedQuery);\n })\n .toArray()\n \n }\n }\n ) \n .subscribe(\n (matches: any[]) => {\n this.finalizeAsyncCall(matches);\n },\n (err: any) => {\n console.error(err);\n this.finalizeAsyncCall([]);\n }\n );\n }\n\n protected normalizeOption(option: any): any {\n let optionValue: string = TypeaheadUtils.getValueFromObject(option, this.typeaheadOptionField);\n let normalizedOption = this.typeaheadLatinize ? TypeaheadUtils.latinize(optionValue) : optionValue;\n\n return normalizedOption.toLowerCase();\n }\n\n protected normalizeQuery(value: string): any {\n value = TypeaheadUtils.sanitize(value);\n // if singleWords, break model here to not be doing extra work on each iteration\n let normalizedQuery: any =\n (this.typeaheadLatinize ? TypeaheadUtils.latinize(value) : value)\n .toString()\n .toLowerCase();\n normalizedQuery = this.typeaheadSingleWords ?\n TypeaheadUtils.tokenize(normalizedQuery, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters) :\n normalizedQuery;\n return normalizedQuery;\n }\n\n protected testMatch(match: string, test: any): boolean {\n let spaceLength: number;\n\n if (typeof test === 'object') {\n spaceLength = test.length;\n for (let i = 0; i < spaceLength; i += 1) {\n console.log(this.typeaheadOptionField);\n if (test[i].length > 0 && match.indexOf(test[i]) < 0 && this.typeaheadOptionField != \"formatterUserAddress\") {\n return false;\n }\n }\n return true;\n } else {\n return match.indexOf(test) >= 0;\n }\n }\n\n protected finalizeAsyncCall(matches: any[]): void {\n this.prepareMatches(matches);\n\n this.typeaheadLoading.emit(false);\n this.typeaheadNoResults.emit(!this.hasMatches());\n\n if (!this.hasMatches()) {\n this.hide();\n return;\n }\n\n if (this.container) {\n // this improves the speed as it won't have to be done for each list item\n let normalizedQuery = (this.typeaheadLatinize\n ? TypeaheadUtils.latinize(this.ngControl.control.value)\n : this.ngControl.control.value).toString()\n .toLowerCase();\n this.container.query = this.typeaheadSingleWords\n ? TypeaheadUtils.tokenize(normalizedQuery, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters)\n : normalizedQuery;\n this.container.matches = this._matches;\n } else {\n this.show();\n }\n }\n\n protected prepareMatches(options: any[]): void {\n let limited: any[] = options.slice(0, this.typeaheadOptionsLimit);\n\n if (this.typeaheadGroupField) {\n let matches: TypeaheadMatch[] = [];\n\n // extract all group names\n let groups = limited\n .map((option: any) => TypeaheadUtils.getValueFromObject(option, this.typeaheadGroupField))\n .filter((v: string, i: number, a: any[]) => a.indexOf(v) === i);\n\n groups.forEach((group: string) => {\n // add group header to array of matches\n matches.push(new TypeaheadMatch(group, group, true));\n\n // add each item of group to array of matches\n matches = matches.concat(limited\n .filter((option: any) => TypeaheadUtils.getValueFromObject(option, this.typeaheadGroupField) === group)\n .map((option: any) =>\n new TypeaheadMatch(option, TypeaheadUtils.getValueFromObject(option, this.typeaheadOptionField))));\n });\n\n this._matches = matches;\n } else {\n this._matches = limited.map(\n (option: any) => new TypeaheadMatch(option, TypeaheadUtils.getValueFromObject(option, this.typeaheadOptionField))\n );\n }\n }\n\n protected hasMatches(): boolean {\n return this._matches.length > 0;\n }\n}\n","export { TypeaheadMatch } from './typeahead-match.class';\nexport { TypeaheadOptions } from './typeahead-options.class';\n\nexport { TypeaheadUtils } from './typeahead-utils';\nexport { TypeaheadContainerComponent } from './typeahead-container.component';\nexport { TypeaheadDirective } from './typeahead.directive';\nexport { TypeaheadModule } from './typeahead.module';\n","export class Theme {\n\n static getBlank(): Theme {\n return new Theme(0, '', '', '', '', '', '', '', '','', false);\n }\n\n constructor(\n public id: number,\n public partnerCode: string,\n public name: string,\n public homeUrl: string,\n public mainWebSiteUrl: string,\n public companyName: string,\n public contactPhoneNumber: string,\n public termsCondition: string,\n public firstStepTerms: string,\n public antiHawking: string,\n public firstStepTermsCheckbox: boolean,\n public showInterestedIn: boolean = false,\n public userId: string = 'WebUser',\n public source: string = 'choosipet',\n public automated: string = 'false'\n ) {}\n\n setNewData(theme: Theme) {\n this.id = theme.id;\n this.partnerCode = theme.partnerCode;\n this.name = theme.name;\n this.homeUrl = theme.homeUrl;\n this.mainWebSiteUrl = theme.mainWebSiteUrl;\n this.companyName = theme.companyName;\n this.contactPhoneNumber = theme.contactPhoneNumber;\n this.termsCondition = theme.termsCondition;\n this.firstStepTerms = theme.firstStepTerms;\n this.antiHawking = theme.antiHawking;\n this.firstStepTermsCheckbox = theme.firstStepTermsCheckbox;\n this.showInterestedIn = theme.showInterestedIn;\n }\n\n getFormattedPhoneNumber(): string {\n let newPhone = this.contactPhoneNumber;\n if (this.contactPhoneNumber.length === 10) {\n newPhone = this.contactPhoneNumber.slice(0, 4)\n + ' ' + this.contactPhoneNumber.slice(4, 7)\n + ' ' + this.contactPhoneNumber.slice(7, 10);\n }\n return newPhone;\n }\n}\n","\nexport enum Desexed {\n Unknown = 0,\n Yes = 1,\n No = 2\n}\n","import { Component, OnInit, DoCheck } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Pet } from '../model/pet';\nimport { User } from '../model/user';\nimport { Theme } from '../model/theme';\nimport { Breed } from '../model/breed';\nimport { Loading } from '../model/loading';\nimport { State } from '../model/state.enum';\nimport { Gender } from '../model/gender.enum';\nimport { Promotion } from '../model/promotion';\nimport { Species } from '../model/species.enum';\nimport { Desexed } from '../model/desexed.enum';\n\nimport { SubscriptionService } from '../services/subscription.service';\nimport { BreedsService } from '../services/breeds.service';\nimport { ClientService } from '../services/client.service';\n\nimport { ToolsMethods } from '../shared/tools.methods';\n\nimport { LocationService } from '../services/location.service';\nimport { ReCAPTCHAResponse, ReCAPTCHAService } from '../services/recaptcha.service'\nimport { CONFIGURATION } from 'app/environments/environment';\n\ndeclare var grecaptcha: any;\n\n@Component({\n selector: 'about-you',\n templateUrl: './about-you.component.html',\n providers: [BreedsService, ClientService, LocationService, ReCAPTCHAService]\n})\n\nexport class AboutYouComponent implements OnInit, DoCheck {\n\n\n\n SPECIES = Species;\n DESEXED = Desexed;\n GENDER = Gender;\n STATES = State;\n\n // models\n pet: Pet;\n user: User;\n loading: Loading;\n theme: Theme;\n\n // subscriptions\n subscriptionLoading: BehaviorSubject;\n subscriptionUser: BehaviorSubject;\n subscriptionPet: BehaviorSubject;\n subscriptionTheme: BehaviorSubject;\n\n subscriptionHaveUsCallOpen: BehaviorSubject;\n subscriptionRecaptchaPassed: BehaviorSubject;\n petAgeControl: boolean = false;\n isTermsAccepted: boolean = false;\n submitted: boolean;\n oldPetType: number;\n recaptcha_sitekey: string = null;\n resultToken: string = null;\n\n breedName: string = '';\n breedDataSource: Array;\n breedTypeaheadLoading: boolean = false;\n breedTypeaheadNoResults: boolean = false;\n\n nowDate = new Date();\n blankState = null;\n\n showClientConsent: boolean = false;\n showRecaptchaError: boolean = false;\n isProdEnv: boolean = true; //set false for local debugging diagnostic trace #117737\n\n constructor(\n private breedsService: BreedsService,\n private subscriptionService: SubscriptionService,\n private clientService: ClientService,\n private router: Router,\n private route: ActivatedRoute,\n private locationService: LocationService,\n private recaptchaService: ReCAPTCHAService\n ) {\n this.subscriptionLoading = subscriptionService.getSubscriptions('loading');\n this.subscriptionLoading.subscribe(\n loading => {\n this.loading = loading;\n });\n\n this.subscriptionUser = subscriptionService.getSubscriptions('user');\n this.subscriptionUser.subscribe(\n user => {\n this.user = user;\n });\n\n this.subscriptionPet = subscriptionService.getSubscriptions('pet');\n this.subscriptionPet.subscribe(\n pet => {\n this.pet = pet;\n this.getMarketingParameter();\n this.breedTypeaheadInit();\n });\n\n this.subscriptionTheme = subscriptionService.getSubscriptions('theme');\n this.subscriptionTheme.subscribe(\n theme => {\n this.theme = theme;\n });\n this.subscriptionHaveUsCallOpen = subscriptionService.getSubscriptions('haveUsCallOpen');\n this.subscriptionRecaptchaPassed = subscriptionService.getSubscriptions('recaptchaPassed');\n this.whenGrecaptchaReady = this.whenGrecaptchaReady.bind(this);\n this.afterRecaptcha = this.afterRecaptcha.bind(this);\n this.recaptcha_sitekey = this.recaptchaService.getSiteKey();\n \n }\n\n ngOnInit(): void {\n this.submitted = false;\n\n //US79543 - do not pre-populating details before anything has been selected\n if (this.pet.name === '' && this.pet.breed.breed === '') {\n this.pet.petType = null;\n this.pet.gender = null;\n this.pet.isDesexed = null;\n }\n\n this.oldPetType = this.pet.petType;\n this.loading.activated = false;\n this.getBreeds();\n this.user.promotion = Promotion.getBlank();\n this.recaptchaService.checkExists();\n }\n\n ngDoCheck(): void {\n if (this.pet.petType !== this.oldPetType) {\n this.oldPetType = this.pet.petType;\n this.pet.breed = Breed.getBlank();\n this.getBreeds();\n }\n }\n\n updateTitle(title: string) {\n switch (title) {\n case 'Dr':\n break;\n case 'Mr':\n this.user.gender = Gender.Male;\n break;\n default:\n this.user.gender = Gender.Female;\n }\n }\n\n updatePetAgeControl(): void {\n if (this.pet.isPropertyValid('bornMonth') && this.pet.isPropertyValid('bornYear')) {\n this.petAgeControl = this.pet.getMonthsOld() === 2;\n }\n }\n\n changeBreedTypeaheadLoading(e: boolean): void {\n this.pet.breed = Breed.getBlank();\n this.breedTypeaheadLoading = e;\n }\n\n changeBreedTypeaheadNoResults(e: boolean): void {\n this.breedTypeaheadNoResults = e;\n }\n\n breedTypeaheadOnSelect(e: any): void {\n this.pet.breed = e.item;\n }\n\n breedTypeaheadInit(): void {\n this.breedName = (this.pet.breed !== null)\n ? this.pet.breed.breed\n : '';\n }\n\n resetPetBreed() {\n this.pet.breed = Breed.getBlank();\n }\n\n getBreeds(): void {\n this.breedsService\n .getBreeds(this.pet.petType)\n .subscribe(\n data => {\n this.breedDataSource = data;\n this.breedTypeaheadInit();\n },\n error => {\n console.log('error', error);\n }\n );\n }\n\n updatePhoneNumber($event: any) {\n let currentPosition: number = ToolsMethods.getCaretPosition('userContactNumber');\n let currentSize: number = this.user.contactNumber.length;\n this.user.contactNumber = ToolsMethods.formatPhoneNumber($event);\n let finalSize: number = this.user.contactNumber.length;\n let diff: number = finalSize - currentSize;\n setTimeout(() => { ToolsMethods.setCaretPosition('userContactNumber', currentPosition + diff); }, 5);\n }\n\n updateNumberOnDel($event: any) {\n if ($event.keyCode === 8 || $event.keyCode === 46) {\n this.user.contactNumber = ToolsMethods.formatPhoneNumber($event.target.value);\n }\n }\n\n updatePostCode() {\n this.user.address.address = '';\n this.user.address.suburb = '';\n\n let postcode = this.user.address.postcode;\n if (postcode !== null && postcode !== '' && postcode.match(/^[0-9]{4}$/i)) {\n this.locationService\n .getSuburbs(postcode)\n .then(\n (suburbs) => {\n this.user.address.invalidpostcode = suburbs.length === 0;\n }, (error) => {\n console.log(error);\n });\n }\n }\n\n /**\n * This is made to fix the Autofill problem, Chrome does not trigger event on autofilling so the model won't be updated.\n * Therefore we need to manually check by hand the value to be sure that it hasn't been autofilled and if it is\n * update the model accordingly.\n */\n preCheckAutoFill() {\n let userFirstNameField: HTMLInputElement = document.getElementById('userFirstName');\n if (userFirstNameField.value !== this.user.firstName) {\n this.user.firstName = userFirstNameField.value;\n }\n let userLastNameField: HTMLInputElement = document.getElementById('userLastName');\n if (userLastNameField.value !== this.user.lastName) {\n this.user.lastName = userLastNameField.value;\n }\n let userBornDayField: HTMLInputElement = document.getElementById('userBornDay');\n if (+userBornDayField.value !== this.user.bornDay) {\n this.user.bornDay = +userBornDayField.value;\n }\n let userBornMonthField: HTMLInputElement = document.getElementById('userBornMonth');\n if (+userBornMonthField.value !== this.user.bornMonth) {\n this.user.bornMonth = +userBornMonthField.value;\n }\n let userBornYearField: HTMLInputElement = document.getElementById('userBornYear');\n if (+userBornYearField.value !== this.user.bornYear) {\n this.user.bornYear = +userBornYearField.value;\n }\n let userPhoneField: HTMLInputElement = document.getElementById('userContactNumber');\n if (userPhoneField.value !== this.user.contactNumber) {\n this.user.contactNumber = ToolsMethods.formatPhoneNumber(userPhoneField.value);\n }\n let userMailField: HTMLInputElement = document.getElementById('userMail');\n if (userMailField.value !== this.user.email) {\n this.user.email = userMailField.value;\n }\n let userPostcodeField: HTMLInputElement = document.getElementById('userPostcode');\n if (userPostcodeField.value !== this.user.address.postcode) {\n this.user.address.postcode = userPostcodeField.value;\n }\n }\n\n resolved(recaptchaResponse: string) {\n this.resultToken = recaptchaResponse;\n this.showRecaptchaError = (this.resultToken === null || this.resultToken === undefined);\n }\n\n whenGrecaptchaReady(): void {\n let _th = this;\n if (this.resultToken !== null && this.resultToken !== undefined) {\n _th.afterRecaptcha(_th, this.resultToken);\n } else {\n this.loading.activated = false;\n }\n }\n\n afterRecaptcha(_th: AboutYouComponent, token: string): any {\n if (token == null || token.length === 0) {\n //attempt to reset the control if there is no token coming through \n //- this would indicate some error in communicating with Google recaptcha itself\n this.scrollBack('about-you-form');\n } else {\n _th.recaptchaService.checkExists();\n _th.recaptchaService.apiVerifyRecaptcha(token).then(\n (r: ReCAPTCHAResponse) => {\n if (r.success) {\n //proceed with the rest of the comparison as normal\n //if the gfs recaptcha service indicates we are human\n _th.DoIfRecaptchaSucceeded(_th);\n } else {\n //we only fail / block if service call succeeds with a low score / success=false\n //this part may still be up for debate - what to do when a low score is given to a human\n //currently recaptcha enterprise does not support showing challenge if the site key is configured for using score\n //and using a challenge / checkbox site key means it gets shown to every user\n this.scrollBack('about-you-form');\n }\n },\n (error: any) => {\n //fail safe - if gfs recaptcha service call fails then revert to existing behaviour\n //which is to proceed as normal with the comparison workflow\n _th.DoIfRecaptchaSucceeded(_th);\n }\n );\n }\n }\n\n DoIfRecaptchaSucceeded(_th: AboutYouComponent) {\n //this is the normal comparison workflow - which happens after recaptcha succeeds or is skipped\n _th.subscriptionRecaptchaPassed.next(true);\n _th.loading.validate();\n _th.loading.activated = true;\n _th.loading.loadingText = 'Comparing...';\n _th.clientService.saveClient(_th.theme, _th.user, _th.pet, 1, ToolsMethods.getCookie(document.cookie))\n .then(\n () => {\n // validate response\n if (_th.validateForm()) {\n _th.subscriptionUser.next(_th.user);\n _th.subscriptionPet.next(_th.pet);\n _th.subscriptionHaveUsCallOpen.next(false);\n _th.router.navigate(['compare']);\n }\n },\n (error: any) => {\n _th.loading.setError('searchingPremiumError', 'An error occurred while processing the request, please retry.');\n _th.loading.activated = false;\n }\n );\n }\n\n onSubmit(): void {\n this.preCheckAutoFill();\n this.submitted = true;\n // validate form\n if (this.validateForm()) {\n //here we request a token from google recaptcha, but only if the site is being used externally\n //skip recpatcha if the site is being used by an agent in evolve\n this.loading.activated = true;\n if (this.theme.userId === 'WebUser' && this.theme.automated === 'false') {\n this.whenGrecaptchaReady()\n }\n else {\n this.DoIfRecaptchaSucceeded(this);\n }\n\n } else {\n if (!this.pet.isValid()) {\n this.scrollBack('about-your-pet-form');\n } else if (!this.user.isValid()) {\n this.scrollBack('about-you-form');\n }\n }\n }\n\n validateForm(): boolean {\n this.pet.validate(1);\n this.user.validate(1);\n let termsAccepted: boolean = this.theme.firstStepTermsCheckbox ? this.isTermsAccepted : true;\n return this.pet.isValid() && this.user.isValid() && this.recaptchaValidate() && termsAccepted;\n }\n\n recaptchaValidate(): boolean{\n this.showRecaptchaError = (this.resultToken === null || this.resultToken.length === 0 );\n if (this.theme.automated === 'true' || this.theme.userId !== 'WebUser') {\n this.showRecaptchaError = false;\n }\n return !this.showRecaptchaError;\n }\n\n get maxPhoneLength(): number {\n return ToolsMethods.maxPhoneLength(this.user.contactNumber);\n }\n\n get diagnostic() {\n return JSON.stringify(\n {\n 'pet': this.pet,\n 'petValid': this.pet.isValid(),\n // 'breeds': this.breedDataSource,\n 'user': this.user,\n 'submitted': this.submitted,\n 'loading': this.loading,\n 'isTermsAccepted': this.isTermsAccepted\n },\n undefined,\n 4\n );\n }\n\n private scrollBack(id: string): void {\n this.loading.activated = false;\n ToolsMethods.scrollToId(id, 500);\n }\n\n private getMarketingParameter() {\n if (this.pet.clientConsent != null) {\n this.showClientConsent = true;\n } else {\n const clientConsent = this.route.snapshot.queryParams['client_consent'];\n\n if (clientConsent && clientConsent === \"1\") {\n this.showClientConsent = true;\n this.pet.clientConsent = false;\n }\n }\n }\n}\n","
\n
\n
\n
\n
\n
\n
\n
\n \n
\n

About your pet

\n
\n \n
\n
\n \n
\n \n
\n Please enter your pet’s name\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n
\n \n
\n \n
\n
\n No Results Found\n
\n
\n Please select the breed of your pet\n
\n
\n
\n \n \n \n
\n
\n
\n \n
\n
\n
\n \n
\n Please enter a month\n
\n
\n
\n
\n \n
\n Please enter a year\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

About you

\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n \n
\n Please enter your first name\n
\n
\n
\n
\n
\n \n
\n \n
\n Please enter you last name\n
\n
\n
\n
\n\n
\n \n
\n
\n
\n \n
\n Please enter a day\n
\n
\n
\n
\n \n
\n Please enter a month\n
\n
\n
\n
\n \n
\n Year of birth must be between {{nowDate.getFullYear() - 112}}-{{nowDate.getFullYear() - 18}}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n
\n Please enter a valid Australian phone number including the area code\n
\n
\n
\n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n You agree to us calling you so that we can provide pet insurance quotes from the brands we compare\n
\n
\n
\n
\n
\n \n
\n \n
\n \n
\n Please enter a valid email address\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n \n
\n Please enter your postcode\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n Please verify that you are not a robot\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n Please agree to the terms & conditions and privacy consent\n
\n
\n
\n
\n
\n \n
\n
\n
\n

\n \n

\n
\n
\n

\n {{loading.loadingText}}\n

\n
\n
\n
\n
\n \n
\n\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n\n\n\n\n","export class RecommendedProduct {\n constructor(\n public id: number,\n public title: string,\n public mainText: string,\n public subText: string,\n public quoteUrl: string,\n public imgPath: string\n ) {}\n\n getIconClass(): string {\n return this.title.toLowerCase().replace(new RegExp(' ', 'g'), '-');\n }\n}\n","\nexport class InsuredPet {\n\n static getBlank(): InsuredPet {\n return new InsuredPet('', '');\n }\n\n constructor(\n public referenceNumber: string,\n public petDetails: string\n ) {}\n\n}\n","export class StringHelper {\n public static ReplaceCaseInsensitive(findIn: string, find: string, replacement: string):string{\n var searchMask = find;\n var regEx = new RegExp(searchMask, \"gi\");\n var replaceMask = replacement;\n var result = findIn.replace(regEx, replaceMask);\n return result;\n }\n public static stripHtml(html:string):string\n{\n var tmp = document.implementation.createHTMLDocument(\"New\").body;\n tmp.innerHTML = html;\n return tmp.textContent || tmp.innerText || \"\";\n}\n\npublic static FormatCurrency(value:string):string{\n let nf = new Intl.NumberFormat('en-US');\n return \"$\" + nf.format(Number(value.replace(/[^0-9\\.]+/g,\"\")));\n \n}\n\n}","\nexport enum BrandsEnum {\n Real = 1,\n Asia = 2,\n Guardian = 7,\n RSPCA = 9,\n Prime = 10,\n GuideDogs = 13\n}\n\nexport class BrandsSorting {\n public static getBrandOrder(brand: BrandsEnum) {\n // order: Real, ASIA, GDPI, Guardian, RSPCA, Prime\n switch (brand) {\n case BrandsEnum.Real:\n return 1;\n case BrandsEnum.Asia:\n return 2;\n case BrandsEnum.GuideDogs:\n return 3;\n case BrandsEnum.Guardian:\n return 4;\n case BrandsEnum.RSPCA:\n return 5;\n case BrandsEnum.Prime:\n return 6;\n default:\n return 20;\n }\n }\n}\n","import { ModelValidator } from './model-validator';\n\nexport abstract class PaymentMethod extends ModelValidator {\n abstract getExpiryDateOneWord(): string;\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseService } from './base.service';\nimport { ClientService } from './client.service';\n\nimport 'rxjs/add/operator/toPromise';\n\nimport { Frequency } from '../model/frequency.enum';\nimport { InsuredPet } from '../model/insured-pet';\nimport { Species } from '../model/species.enum';\nimport { Insurance } from '../model/insurance';\nimport { Gender } from '../model/gender.enum';\nimport { Cover } from '../model/cover';\nimport { Breed } from '../model/breed';\nimport { User } from '../model/user';\nimport { Pet } from '../model/pet';\nimport { Vet } from '../model/vet';\nimport Application from '../model/application';\n\n@Injectable()\nexport class ApplicationService extends BaseService {\n\n private static mapApplicationRequest(\n quoteId: number,\n clientId: number,\n customerReferenceNumber: string,\n customerPreRegistrationCode: string,\n cardHolderName: string,\n accountAlias: string,\n action: string,\n expiryDate: string,\n errorContext: string\n ) {\n return {\n 'QuoteId': quoteId,\n 'ClientId': clientId,\n 'CustomerReferenceNumber': customerReferenceNumber,\n 'CustomerPreRegistrationCode': customerPreRegistrationCode,\n 'CardHolderName': cardHolderName,\n 'AccountAlias': accountAlias,\n 'Action': action,\n 'ExpiryDate': expiryDate,\n 'ErrorContext': errorContext\n };\n }\n\n private static mapGetApplicationResponse(data: any): Application {\n let extractedQuote: any = ApplicationService.extractQuote(data.Quote);\n let extractedUser: User = ClientService.mapGetClientResponse(data.Client);\n extractedUser.eligibleForSenior = extractedQuote.isSeniorDiscount;\n extractedUser.promotion.promoCode = extractedQuote.promoCode;\n return {\n pets: extractedQuote.pets,\n cover: extractedQuote.cover,\n user: extractedUser\n };\n }\n\n private static extractQuote(data: any): {pets: Pet[], cover: Cover, isSeniorDiscount: boolean, clientId: number, promoCode: string} {\n let pets: Pet[] = [];\n\n let cover: Cover = Cover.getBlank();\n\n cover.token = data.Token;\n cover.quoteId = data.PetQuoteId;\n\n switch (data.PaymentFrequency) {\n case 'FORTNIGHTLY':\n case 'F':\n cover.frequency = Frequency.Fortnight;\n break;\n case 'MONTHLY':\n case 'M':\n cover.frequency = Frequency.Month;\n break;\n case 'YEARLY':\n case 'Y':\n cover.frequency = Frequency.Year;\n break;\n default:\n cover.frequency = Frequency.Fortnight;\n break;\n }\n\n if (data.DateCreated !== null) {\n cover.createdDate = data.DateCreated;\n }\n if (data.CoverStartDate !== null) {\n cover.coverStartDate = new Date(data.CoverStartDate);\n }\n if (data.PremiumStartDate !== null) {\n cover.premiumStartDate = new Date(data.PremiumStartDate);\n }\n\n let productCode: string = '';\n if (data.PetQuoteHeader) {\n productCode = data.PetQuoteHeader.ProductCode;\n cover.eDeliveryMethod = data.PetQuoteHeader.Efulfillment;\n }\n\n data.QuoteDetails.forEach((quoteDetails, index) => {\n\n let petDoB: Date = new Date(quoteDetails.DateOfBirth);\n\n let hasFreeMonthOffer: boolean = data.PromoCode === \"1CFREEMONTH\" && \n (data.PartnerCode == \"RS456\" || data.PartnerCode == \"GU456\");\n\n let premiumPrice = quoteDetails.PetPremium;\n let routinePriceFortnight = premiumPrice.FortnightlyAmountWithRoutineCare;\n let routinePriceMonth = premiumPrice.MonthlyAmountWithRoutineCare;\n let routinePriceYear = premiumPrice.AnnualAmountWithRoutineCare;\n\n let originalPriceFortnight = premiumPrice.FortnightlyAmountDiscount\n + premiumPrice.FortnightlyAmount;\n let originalPriceMonth = premiumPrice.MonthlyAmountDiscount\n + premiumPrice.MonthlyAmount;\n let originalPriceYear = premiumPrice.AnnualAmountDiscount\n + premiumPrice.AnnualAmount;\n\n let originalRoutinePriceFortnight = routinePriceFortnight\n + premiumPrice.FortnightlyAmountWithRoutineCareDiscount;\n let originalRoutinePriceMonth = routinePriceMonth\n + premiumPrice.MonthlyAmountWithRoutineCareDiscount;\n let originalRoutinePriceYear = routinePriceYear\n + premiumPrice.AnnualAmountWithRoutineCareDiscount;\n\n\n let insurance: Insurance = Insurance.getBlank();\n insurance.id = index;\n insurance.quoteDetailsId = quoteDetails.Id;\n insurance.productBenefitId = quoteDetails.ProductBenefitId;\n insurance.productCode = productCode;\n insurance.petSureProductCode = quoteDetails.PetsureProductCode;\n insurance.petSurePartnerCode = data.PartnerCode;\n insurance.coverName = premiumPrice.ProductName;\n insurance.routineCareAvailable = quoteDetails.HasRoutineCare;\n\n insurance.accidentBenefitCode = premiumPrice.AccidentBenefitCode;\n insurance.displayOrder = premiumPrice.DisplayOrder;\n insurance.minimumPetAgeForAccidentOnly = premiumPrice.MinimumPetAgeForAccidentOnly;\n insurance.coolingOffDays = premiumPrice.CoolingOffDays;\n\n insurance.brandId = 0;\n insurance.brandCode = '';\n insurance.insuranceName = '';\n insurance.brandLogo = '';\n insurance.brandLogoLarge = '';\n insurance.aboutBrand = '';\n insurance.brandPhone = '';\n\n insurance.priceFortnight = hasFreeMonthOffer ? originalPriceFortnight : premiumPrice.FortnightlyAmount;\n insurance.priceMonth = hasFreeMonthOffer ? originalPriceMonth : premiumPrice.MonthlyAmount;\n insurance.priceYear = premiumPrice.AnnualAmount;\n\n insurance.originalPriceFortnight = originalPriceFortnight;\n insurance.originalPriceMonth = originalPriceMonth;\n insurance.originalPriceYear = originalPriceYear;\n insurance.originalPriceText = '';\n\n insurance.routineCarePriceFortnight = hasFreeMonthOffer ? originalRoutinePriceFortnight : routinePriceFortnight;\n insurance.routineCarePriceMonth = hasFreeMonthOffer ? originalRoutinePriceMonth : routinePriceMonth;\n insurance.routineCarePriceYear = routinePriceYear;\n\n insurance.originalRoutineCarePriceFortnight = originalRoutinePriceFortnight;\n insurance.originalRoutineCarePriceMonth = originalRoutinePriceMonth;\n insurance.originalRoutineCarePriceYear = originalRoutinePriceYear;\n\n insurance.routineCareSelected = quoteDetails.HasRoutineCare;\n\n insurance.seniorDiscountAmount = premiumPrice.AnnualAmountSeniorsDiscount;\n insurance.seniorDiscountAmountRoutineCare = premiumPrice.AnnualAmountSeniorsWithRoutineCareDiscount;\n\n insurance.multiPetDiscountCount = premiumPrice.MultiPetDiscountCount;\n insurance.multiPetDiscount = premiumPrice.AnnualAmountMultipetDiscount;\n insurance.multiPetDiscountRoutineCare = premiumPrice.AnnualAmountMultipetWithRoutineCareDiscount;\n\n insurance.createdDate = quoteDetails.DateCreated;\n if (quoteDetails.ExcessOption) {\n insurance.excessSelected = quoteDetails.ExcessOption;\n }\n\n let gender: Gender = null;\n if (quoteDetails.Gender !== null) {\n if (typeof quoteDetails.Gender === 'number') {\n gender = quoteDetails.Gender;\n } else {\n gender = ((quoteDetails.Gender === 'female') ? Gender.Female : Gender.Male);\n }\n }\n let vet: Vet = new Vet(quoteDetails.VetPracticeCode, quoteDetails.VetPractice);\n\n let species: Species = Species.CANINE;\n if (quoteDetails.Species && (quoteDetails.Species === '1' || quoteDetails.Species === Species.FELINE)) {\n species = Species.FELINE;\n }\n\n pets.push(\n new Pet(\n index,\n quoteDetails.Name,\n null,\n species,\n new Breed(\n quoteDetails.BreedCode,\n '',\n false\n ),\n gender,\n quoteDetails.Desexed,\n petDoB.getMonth() + 1,\n petDoB.getFullYear(),\n quoteDetails.PetAgeConfirmed,\n insurance,\n vet,\n false,\n (quoteDetails.VetPractice !== null && quoteDetails.VetPractice !== ''),\n (quoteDetails.IsGuideDog !== null ? quoteDetails.IsGuideDog : false),\n (quoteDetails.GuideDogRegisteredNumber !== null ?\n quoteDetails.GuideDogRegisteredNumber : '')\n )\n );\n });\n return {\n pets: pets,\n cover: cover,\n isSeniorDiscount: data.IsEligibleForSeniorsDiscount,\n clientId: data.ClientId,\n promoCode: data.PromoCode\n };\n }\n\n constructor(private http: HttpClient) {\n super();\n }\n\n submitApplication(\n quoteId: number,\n clientId: number,\n customerReferenceNumber: string,\n customerPreRegistrationCode: string,\n cardHolderName: string,\n accountAlias: string,\n action: string,\n expiryDate: string,\n errorContext: string,\n userId: string\n ): Promise {\n let url = this.baseUrl + 'api/Petsure/SaveApplication/' + userId;\n let clientRequestObject = ApplicationService\n .mapApplicationRequest(\n quoteId,\n clientId,\n customerReferenceNumber,\n customerPreRegistrationCode,\n cardHolderName,\n accountAlias,\n action,\n expiryDate,\n errorContext\n );\n\n return this.http.post(url, JSON.stringify(clientRequestObject), {headers: this.headers})\n .toPromise()\n .then((response: InsuredPet[]) => {\n return response\n })\n .catch(this.handleError);\n }\n\n getApplication(token: string): Promise {\n let url = this.baseUrl + 'api/Petsure/GetApplication?token=' + token;\n return this.http.get(url, {headers: this.headers})\n .toPromise()\n .then((response) => {\n return ApplicationService.mapGetApplicationResponse(response);\n })\n .catch(this.handleError);\n }\n\n private handleError(error: any): Promise {\n console.error('An error occurred', error); // for demo purposes only\n return Promise.reject(error.message || error);\n }\n\n saveToken(accoutType:string,\n no_account:string,\n no_bsb:string,\n nm_card_holder : string,\n nm_account_alias : string,\n cd_prerego : string,\n action : string,\n cd_crn : string,\n dt_expiry : string,\n nm_account : string,\n tx_response : string):Promise\n {\n let url = this.baseUrl + 'api/Petsure/SaveToken';\n let token: any = {\n \"cd_community\" : \"PETSURE\",\n \"nm_card_holder\" : nm_card_holder,\n \"nm_account_alias\" : nm_account_alias,\n \"cd_prerego\" : cd_prerego,\n \"action\" : action,\n \"cd_crn\" : cd_crn,\n \"dt_expiry\" : dt_expiry, \n \"tx_response\" : tx_response,\n \"CreatedBy\" : \"Petsure Request\"\n };\n\n if(accoutType.toLowerCase() == \"dd\")\n {\n token = {\n \"cd_community\" : \"PETSURE\",\n \"nm_account_alias\" : nm_account_alias,\n \"no_account\": no_account,\n \"no_bsb\": no_bsb,\n \"cd_prerego\" : cd_prerego,\n \"action\" : action,\n \"cd_crn\" : cd_crn, \n \"nm_account\" : nm_account, \n \"tx_response\" : tx_response,\n \"dt_expiry\" : \"0000\",\n \"CreatedBy\" : \"Petsure Request\"\n };\n }\n \n return this.http.post(url, JSON.stringify(token), {headers: this.headers})\n .toPromise()\n .then((response) => {\n return response.toString() != \"\";\n })\n .catch(this.handleError);\n }\n}\n","export class BrandDetails {\n\n static getBlank(): BrandDetails {\n return new BrandDetails(0, '', '', '', '');\n }\n\n constructor(\n public brandId: number,\n public brandLogo: string,\n public brandLogoLarge: string,\n public brandName: string,\n public brandContent: string\n ) {}\n}\n","import { ModelValidator } from './model-validator';\nimport { Frequency } from './frequency.enum';\n\nexport class Cover extends ModelValidator {\n\n static getBlank(): Cover {\n return new Cover(\n null, '', Frequency.Fortnight, '',\n new Date(), new Date(), false, false, false\n );\n }\n\n static getMinCoverStartDate(): Date {\n let now = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());\n return new Date(now.getTime());\n }\n\n static getMaxCoverStartDate(): Date {\n let now = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());\n let then = new Date(now.getTime());\n then.setDate(then.getDate() + 14);\n\n return then;\n }\n\n static getInvalidCoverStartDates(): Array {\n let dates: Array = [];\n let i: Date = Cover.getMinCoverStartDate();\n\n while (i.getTime() <= Cover.getMaxCoverStartDate().getTime()) {\n if (i.getDay() === 0 || i.getDay() === 6) {\n dates.push(new Date(i.getTime()));\n }\n i.setDate(i.getDate() + 1);\n }\n\n return dates;\n }\n\n static getMinPremiumStartDate(coverStartDate: Date): Date {\n let then = new Date(coverStartDate.getTime());\n then.setDate(then.getDate() + 2);\n\n return then;\n }\n\n static getMaxPremiumStartDate(coverStartDate: Date): Date {\n let then = new Date(coverStartDate.getTime());\n then.setDate(then.getDate() + 13);\n\n return then;\n }\n\n constructor(\n public quoteId: number,\n public token: string,\n public frequency: Frequency,\n public createdDate: string,\n public coverStartDate: Date,\n public premiumStartDate: Date,\n public preExistingConditionsDeclaration: boolean,\n public hadPriorPolicyCancelled: boolean,\n public eDeliveryMethod: boolean\n ) {\n super();\n }\n\n proceedValidation(step: number = 0): boolean {\n if (step === 2 || step === 3) {\n if (this.frequency === null) {\n this.setError('frequency', 'Please select a payment frequency');\n }\n\n if (this.coverStartDate.getTime() < Cover.getMinCoverStartDate().getTime()) {\n this.setError('coverStartDate', 'Cover start date must be in the next 15 days');\n }\n\n if (this.coverStartDate.getTime() > Cover.getMaxCoverStartDate().getTime()) {\n this.setError('coverStartDate', 'Cover must start in the next 15 days');\n }\n\n if (this.premiumStartDate.getTime() < Cover.getMinPremiumStartDate(this.coverStartDate).getTime()) {\n this.setError('premiumStartDate', 'Premium start date should be a least 2 days after cover start date');\n }\n\n // if (this.coverStartDate.getDay() === 0 || this.coverStartDate.getDay() === 6) {\n // this.setError('coverStartDate', 'Cover start date mast be a week day');\n // }\n\n if (this.premiumStartDate.getTime() > Cover.getMaxPremiumStartDate(this.coverStartDate).getTime()) {\n this.setError('premiumStartDate', 'Premium start date must be within 13 days of cover start date');\n }\n\n if (this.premiumStartDate.getDay() === 0 || this.premiumStartDate.getDay() === 6) {\n this.setError('premiumStartDate', 'Premium start date mast be a week day');\n }\n }\n\n if ( step === 3 || step === 4) {\n if (this.preExistingConditionsDeclaration === null || !this.preExistingConditionsDeclaration) {\n this.setError('preExistingConditionsDeclaration', 'Please indicate you understand and accept the statement');\n }\n\n if (this.hadPriorPolicyCancelled === null) {\n this.setError('hadPriorPolicyCancelled', 'Please indicate if you have ever had an insurance policy cancelled');\n }\n }\n return this.isValid();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, Resolve, ActivatedRouteSnapshot, NavigationExtras } from '@angular/router';\n\nimport { ToolsMethods } from '../shared/tools.methods';\n\n\n@Injectable()\nexport class PaymentGatewayResolve implements Resolve {\n\n constructor(\n private router: Router\n ) {}\n\n redirectError(): boolean {\n this.router.navigate(['']);\n return false;\n }\n\n resolve(route: ActivatedRouteSnapshot): boolean { \n try {\n let serviceReturnedUrlParam: string = 'serviceReturnURL';\n let ccNumberParam: string = 'no_credit_card';\n\n if (route.queryParams.hasOwnProperty(serviceReturnedUrlParam)\n && route.queryParams.hasOwnProperty(ccNumberParam)) {\n\n let serviceReturnedUrl: string = route.queryParams[serviceReturnedUrlParam];\n let ccNumber: string = route.queryParams[ccNumberParam];\n\n if (serviceReturnedUrl === null\n && serviceReturnedUrl === ''\n && ccNumber === null\n && ccNumber === '') {\n this.redirectError();\n }\n\n let queryParams: any = {\n 'TokenID': ToolsMethods.getQueryParamValueInUrl(serviceReturnedUrl, 'TokenID'),\n 'PetCriteriaID': ToolsMethods.getQueryParamValueInUrl(serviceReturnedUrl, 'PetCriteriaID'),\n 'action': 'Registered',\n 'cd_crn': 'PS4715860-89874',\n 'accountType': 'CC',\n 'nm_account_alias': '541354...413',\n 'cd_prerego': 'N026179255',\n 'nm_card_holder': 'John',\n 'dt_expiry': '1219',\n 'cd_summary': 0,\n 'cd_response': '00',\n 'tx_response': 'Account+Registered'\n };\n\n if (ccNumber !== '5413541354135413') {\n queryParams.action = 'failed';\n }\n\n let navigationExtras: NavigationExtras = {\n queryParams: queryParams\n };\n if (serviceReturnedUrl.indexOf('thank-you-s') >= 0) {\n this.router.navigate(['thank-you-s'], navigationExtras);\n return true;\n } else {\n this.router.navigate(['thank-you'], navigationExtras);\n return true;\n }\n }\n\n } catch (e) {\n console.error(e);\n }\n return this.redirectError();\n }\n\n}\n","export class TypeaheadMatch {\n public readonly value: string;\n protected readonly item: any;\n protected header: boolean;\n\n public constructor(item: any, value: string = item, header: boolean = false) {\n this.item = item;\n this.value = value;\n this.header = header;\n }\n\n public isHeader(): boolean {\n return this.header;\n }\n\n public toString(): string {\n return this.value;\n }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { CONFIGURATION } from '../environments/environment';\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class BaseService {\n\n protected headers: HttpHeaders;\n protected baseUrl: string;\n\n constructor() {\n this.headers = new HttpHeaders({'Content-Type': 'application/json'});\n this.baseUrl = CONFIGURATION.baseUrl;\n }\n\n}\n","import {Component, ElementRef, TemplateRef, ViewEncapsulation} from '@angular/core';\n\nimport {positionService} from './position';\nimport {TypeaheadOptions} from './typeahead-options.class';\nimport {TypeaheadUtils} from './typeahead-utils';\nimport {TypeaheadDirective} from './typeahead.directive';\nimport {TypeaheadMatch} from './typeahead-match.class';\n\n@Component({\n selector: 'typeahead-container', \n template: `\n
    \n \n
  • {{match}}
  • \n
  • \n \n \n \n \n
  • \n
    \n
\n `,\n encapsulation: ViewEncapsulation.None\n})\nexport class TypeaheadContainerComponent {\n public parent: TypeaheadDirective;\n public query: any;\n public element: ElementRef;\n public isFocused: boolean = false;\n public top: string;\n public left: string;\n public display: string;\n\n protected _active: TypeaheadMatch;\n protected _matches: TypeaheadMatch[] = [];\n protected placement: string;\n\n public constructor(element: ElementRef, options: TypeaheadOptions) {\n this.element = element;\n Object.assign(this, options);\n }\n\n public get matches(): TypeaheadMatch[] {\n return this._matches;\n }\n\n public set matches(value: TypeaheadMatch[]) {\n this._matches = value;\n\n if (this._matches.length > 0) {\n this._active = this._matches[0];\n if (this._active.isHeader()) {\n this.nextActiveMatch();\n }\n }\n }\n\n public get itemTemplate(): TemplateRef {\n return this.parent ? this.parent.typeaheadItemTemplate : undefined;\n }\n\n public position(hostEl: ElementRef): void {\n this.top = '0px';\n this.left = '0px';\n let p = positionService.positionElements(hostEl.nativeElement, this.element.nativeElement.children[0], this.placement, false);\n this.top = p.top + 'px';\n this.left = p.left + 'px';\n }\n\n public selectActiveMatch(): void {\n this.selectMatch(this._active);\n }\n\n public prevActiveMatch(): void {\n let index = this.matches.indexOf(this._active);\n this._active = this.matches[index - 1 < 0\n ? this.matches.length - 1\n : index - 1];\n if (this._active.isHeader()) {\n this.prevActiveMatch();\n }\n\n }\n\n public nextActiveMatch(): void {\n let index = this.matches.indexOf(this._active);\n this._active = this.matches[index + 1 > this.matches.length - 1\n ? 0\n : index + 1];\n if (this._active.isHeader()) {\n this.nextActiveMatch();\n }\n }\n\n protected selectActive(value: TypeaheadMatch): void {\n this.isFocused = true;\n this._active = value;\n }\n\n protected hightlight(match: TypeaheadMatch, query: any): string {\n let itemStr: string = match.value;\n let itemStrHelper: string = (this.parent && this.parent.typeaheadLatinize\n ? TypeaheadUtils.latinize(itemStr)\n : itemStr).toLowerCase();\n let startIdx: number;\n let tokenLen: number;\n // replaces the capture string with the same string inside of a \"strong\" tag\n if (typeof query === 'object') {\n let queryLen: number = query.length;\n for (let i = 0; i < queryLen; i += 1) {\n // query[i] is already latinized and lower case\n startIdx = itemStrHelper.indexOf(query[i]);\n tokenLen = query[i].length;\n if (startIdx >= 0 && tokenLen > 0) {\n itemStr =\n itemStr.substring(0, startIdx)\n + ''\n + itemStr.substring(startIdx, startIdx + tokenLen)\n + ''\n + itemStr.substring(startIdx + tokenLen);\n\n itemStrHelper =\n itemStrHelper.substring(0, startIdx)\n + ' '\n + ' '.repeat(tokenLen)\n + ' '\n + itemStrHelper.substring(startIdx + tokenLen);\n }\n }\n } else if (query) {\n // query is already latinized and lower case\n startIdx = itemStrHelper.indexOf(query);\n tokenLen = query.length;\n if (startIdx >= 0 && tokenLen > 0) {\n itemStr =\n itemStr.substring(0, startIdx)\n + ''\n + itemStr.substring(startIdx, startIdx + tokenLen)\n + ''\n + itemStr.substring(startIdx + tokenLen);\n }\n }\n return itemStr;\n }\n\n public focusLost(): void {\n this.isFocused = false;\n }\n\n public isActive(value: TypeaheadMatch): boolean {\n return this._active === value;\n }\n\n protected selectMatch(value: TypeaheadMatch, e: Event = void 0): boolean {\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n this.parent.changeModel(value);\n setTimeout(() => this.parent.typeaheadOnSelect.emit(value), 0);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseService } from './base.service';\n\nimport 'rxjs/add/operator/toPromise';\n\nimport { Promotion } from '../model/promotion';\n\n@Injectable()\nexport class PromotionService extends BaseService {\n\n public static mapGetPromotions(data: any): Promotion[] {\n let promotions: Promotion[] = [];\n data.forEach(\n (promo) => {\n promotions.push(\n new Promotion(\n promo.OfferId,\n promo.OfferTypeId,\n promo.OfferVariantId,\n promo.OfferCriteriaId,\n promo.OfferTitle,\n promo.OfferTypeName,\n promo.OfferDescription,\n promo.PartnerCode,\n promo.PetsurePromotionId,\n promo.ProductCode,\n promo.PromoCode,\n promo.TermsAndConditions\n )\n );\n }\n );\n return promotions;\n }\n\n constructor(private http: HttpClient) {\n super();\n }\n\n getPromotion(code: string, partnerId: number): Promise {\n let url = this.baseUrl + 'api/PetSure/GetSalesOffers/' + code + '/' + partnerId;\n return this.http.get(url, {headers: this.headers})\n .toPromise()\n .then((response) => {\n return PromotionService.mapGetPromotions(response);\n })\n .catch(this.handleError);\n }\n\n private handleError(error: any): Promise {\n console.error('An error occurred', error); // for demo purposes only\n return Promise.reject(error.message || error);\n }\n}\n","/* tslint:disable:max-file-line-count */\nexport const latinMap = {\n 'Á': 'A',\n 'Ă': 'A',\n 'Ắ': 'A',\n 'Ặ': 'A',\n 'Ằ': 'A',\n 'Ẳ': 'A',\n 'Ẵ': 'A',\n 'Ǎ': 'A',\n 'Â': 'A',\n 'Ấ': 'A',\n 'Ậ': 'A',\n 'Ầ': 'A',\n 'Ẩ': 'A',\n 'Ẫ': 'A',\n 'Ä': 'A',\n 'Ǟ': 'A',\n 'Ȧ': 'A',\n 'Ǡ': 'A',\n 'Ạ': 'A',\n 'Ȁ': 'A',\n 'À': 'A',\n 'Ả': 'A',\n 'Ȃ': 'A',\n 'Ā': 'A',\n 'Ą': 'A',\n 'Å': 'A',\n 'Ǻ': 'A',\n 'Ḁ': 'A',\n 'Ⱥ': 'A',\n 'Ã': 'A',\n 'Ꜳ': 'AA',\n 'Æ': 'AE',\n 'Ǽ': 'AE',\n 'Ǣ': 'AE',\n 'Ꜵ': 'AO',\n 'Ꜷ': 'AU',\n 'Ꜹ': 'AV',\n 'Ꜻ': 'AV',\n 'Ꜽ': 'AY',\n 'Ḃ': 'B',\n 'Ḅ': 'B',\n 'Ɓ': 'B',\n 'Ḇ': 'B',\n 'Ƀ': 'B',\n 'Ƃ': 'B',\n 'Ć': 'C',\n 'Č': 'C',\n 'Ç': 'C',\n 'Ḉ': 'C',\n 'Ĉ': 'C',\n 'Ċ': 'C',\n 'Ƈ': 'C',\n 'Ȼ': 'C',\n 'Ď': 'D',\n 'Ḑ': 'D',\n 'Ḓ': 'D',\n 'Ḋ': 'D',\n 'Ḍ': 'D',\n 'Ɗ': 'D',\n 'Ḏ': 'D',\n 'Dz': 'D',\n 'Dž': 'D',\n 'Đ': 'D',\n 'Ƌ': 'D',\n 'DZ': 'DZ',\n 'DŽ': 'DZ',\n 'É': 'E',\n 'Ĕ': 'E',\n 'Ě': 'E',\n 'Ȩ': 'E',\n 'Ḝ': 'E',\n 'Ê': 'E',\n 'Ế': 'E',\n 'Ệ': 'E',\n 'Ề': 'E',\n 'Ể': 'E',\n 'Ễ': 'E',\n 'Ḙ': 'E',\n 'Ë': 'E',\n 'Ė': 'E',\n 'Ẹ': 'E',\n 'Ȅ': 'E',\n 'È': 'E',\n 'Ẻ': 'E',\n 'Ȇ': 'E',\n 'Ē': 'E',\n 'Ḗ': 'E',\n 'Ḕ': 'E',\n 'Ę': 'E',\n 'Ɇ': 'E',\n 'Ẽ': 'E',\n 'Ḛ': 'E',\n 'Ꝫ': 'ET',\n 'Ḟ': 'F',\n 'Ƒ': 'F',\n 'Ǵ': 'G',\n 'Ğ': 'G',\n 'Ǧ': 'G',\n 'Ģ': 'G',\n 'Ĝ': 'G',\n 'Ġ': 'G',\n 'Ɠ': 'G',\n 'Ḡ': 'G',\n 'Ǥ': 'G',\n 'Ḫ': 'H',\n 'Ȟ': 'H',\n 'Ḩ': 'H',\n 'Ĥ': 'H',\n 'Ⱨ': 'H',\n 'Ḧ': 'H',\n 'Ḣ': 'H',\n 'Ḥ': 'H',\n 'Ħ': 'H',\n 'Í': 'I',\n 'Ĭ': 'I',\n 'Ǐ': 'I',\n 'Î': 'I',\n 'Ï': 'I',\n 'Ḯ': 'I',\n 'İ': 'I',\n 'Ị': 'I',\n 'Ȉ': 'I',\n 'Ì': 'I',\n 'Ỉ': 'I',\n 'Ȋ': 'I',\n 'Ī': 'I',\n 'Į': 'I',\n 'Ɨ': 'I',\n 'Ĩ': 'I',\n 'Ḭ': 'I',\n 'Ꝺ': 'D',\n 'Ꝼ': 'F',\n 'Ᵹ': 'G',\n 'Ꞃ': 'R',\n 'Ꞅ': 'S',\n 'Ꞇ': 'T',\n 'Ꝭ': 'IS',\n 'Ĵ': 'J',\n 'Ɉ': 'J',\n 'Ḱ': 'K',\n 'Ǩ': 'K',\n 'Ķ': 'K',\n 'Ⱪ': 'K',\n 'Ꝃ': 'K',\n 'Ḳ': 'K',\n 'Ƙ': 'K',\n 'Ḵ': 'K',\n 'Ꝁ': 'K',\n 'Ꝅ': 'K',\n 'Ĺ': 'L',\n 'Ƚ': 'L',\n 'Ľ': 'L',\n 'Ļ': 'L',\n 'Ḽ': 'L',\n 'Ḷ': 'L',\n 'Ḹ': 'L',\n 'Ⱡ': 'L',\n 'Ꝉ': 'L',\n 'Ḻ': 'L',\n 'Ŀ': 'L',\n 'Ɫ': 'L',\n 'Lj': 'L',\n 'Ł': 'L',\n 'LJ': 'LJ',\n 'Ḿ': 'M',\n 'Ṁ': 'M',\n 'Ṃ': 'M',\n 'Ɱ': 'M',\n 'Ń': 'N',\n 'Ň': 'N',\n 'Ņ': 'N',\n 'Ṋ': 'N',\n 'Ṅ': 'N',\n 'Ṇ': 'N',\n 'Ǹ': 'N',\n 'Ɲ': 'N',\n 'Ṉ': 'N',\n 'Ƞ': 'N',\n 'Nj': 'N',\n 'Ñ': 'N',\n 'NJ': 'NJ',\n 'Ó': 'O',\n 'Ŏ': 'O',\n 'Ǒ': 'O',\n 'Ô': 'O',\n 'Ố': 'O',\n 'Ộ': 'O',\n 'Ồ': 'O',\n 'Ổ': 'O',\n 'Ỗ': 'O',\n 'Ö': 'O',\n 'Ȫ': 'O',\n 'Ȯ': 'O',\n 'Ȱ': 'O',\n 'Ọ': 'O',\n 'Ő': 'O',\n 'Ȍ': 'O',\n 'Ò': 'O',\n 'Ỏ': 'O',\n 'Ơ': 'O',\n 'Ớ': 'O',\n 'Ợ': 'O',\n 'Ờ': 'O',\n 'Ở': 'O',\n 'Ỡ': 'O',\n 'Ȏ': 'O',\n 'Ꝋ': 'O',\n 'Ꝍ': 'O',\n 'Ō': 'O',\n 'Ṓ': 'O',\n 'Ṑ': 'O',\n 'Ɵ': 'O',\n 'Ǫ': 'O',\n 'Ǭ': 'O',\n 'Ø': 'O',\n 'Ǿ': 'O',\n 'Õ': 'O',\n 'Ṍ': 'O',\n 'Ṏ': 'O',\n 'Ȭ': 'O',\n 'Ƣ': 'OI',\n 'Ꝏ': 'OO',\n 'Ɛ': 'E',\n 'Ɔ': 'O',\n 'Ȣ': 'OU',\n 'Ṕ': 'P',\n 'Ṗ': 'P',\n 'Ꝓ': 'P',\n 'Ƥ': 'P',\n 'Ꝕ': 'P',\n 'Ᵽ': 'P',\n 'Ꝑ': 'P',\n 'Ꝙ': 'Q',\n 'Ꝗ': 'Q',\n 'Ŕ': 'R',\n 'Ř': 'R',\n 'Ŗ': 'R',\n 'Ṙ': 'R',\n 'Ṛ': 'R',\n 'Ṝ': 'R',\n 'Ȑ': 'R',\n 'Ȓ': 'R',\n 'Ṟ': 'R',\n 'Ɍ': 'R',\n 'Ɽ': 'R',\n 'Ꜿ': 'C',\n 'Ǝ': 'E',\n 'Ś': 'S',\n 'Ṥ': 'S',\n 'Š': 'S',\n 'Ṧ': 'S',\n 'Ş': 'S',\n 'Ŝ': 'S',\n 'Ș': 'S',\n 'Ṡ': 'S',\n 'Ṣ': 'S',\n 'Ṩ': 'S',\n 'Ť': 'T',\n 'Ţ': 'T',\n 'Ṱ': 'T',\n 'Ț': 'T',\n 'Ⱦ': 'T',\n 'Ṫ': 'T',\n 'Ṭ': 'T',\n 'Ƭ': 'T',\n 'Ṯ': 'T',\n 'Ʈ': 'T',\n 'Ŧ': 'T',\n 'Ɐ': 'A',\n 'Ꞁ': 'L',\n 'Ɯ': 'M',\n 'Ʌ': 'V',\n 'Ꜩ': 'TZ',\n 'Ú': 'U',\n 'Ŭ': 'U',\n 'Ǔ': 'U',\n 'Û': 'U',\n 'Ṷ': 'U',\n 'Ü': 'U',\n 'Ǘ': 'U',\n 'Ǚ': 'U',\n 'Ǜ': 'U',\n 'Ǖ': 'U',\n 'Ṳ': 'U',\n 'Ụ': 'U',\n 'Ű': 'U',\n 'Ȕ': 'U',\n 'Ù': 'U',\n 'Ủ': 'U',\n 'Ư': 'U',\n 'Ứ': 'U',\n 'Ự': 'U',\n 'Ừ': 'U',\n 'Ử': 'U',\n 'Ữ': 'U',\n 'Ȗ': 'U',\n 'Ū': 'U',\n 'Ṻ': 'U',\n 'Ų': 'U',\n 'Ů': 'U',\n 'Ũ': 'U',\n 'Ṹ': 'U',\n 'Ṵ': 'U',\n 'Ꝟ': 'V',\n 'Ṿ': 'V',\n 'Ʋ': 'V',\n 'Ṽ': 'V',\n 'Ꝡ': 'VY',\n 'Ẃ': 'W',\n 'Ŵ': 'W',\n 'Ẅ': 'W',\n 'Ẇ': 'W',\n 'Ẉ': 'W',\n 'Ẁ': 'W',\n 'Ⱳ': 'W',\n 'Ẍ': 'X',\n 'Ẋ': 'X',\n 'Ý': 'Y',\n 'Ŷ': 'Y',\n 'Ÿ': 'Y',\n 'Ẏ': 'Y',\n 'Ỵ': 'Y',\n 'Ỳ': 'Y',\n 'Ƴ': 'Y',\n 'Ỷ': 'Y',\n 'Ỿ': 'Y',\n 'Ȳ': 'Y',\n 'Ɏ': 'Y',\n 'Ỹ': 'Y',\n 'Ź': 'Z',\n 'Ž': 'Z',\n 'Ẑ': 'Z',\n 'Ⱬ': 'Z',\n 'Ż': 'Z',\n 'Ẓ': 'Z',\n 'Ȥ': 'Z',\n 'Ẕ': 'Z',\n 'Ƶ': 'Z',\n 'IJ': 'IJ',\n 'Œ': 'OE',\n 'ᴀ': 'A',\n 'ᴁ': 'AE',\n 'ʙ': 'B',\n 'ᴃ': 'B',\n 'ᴄ': 'C',\n 'ᴅ': 'D',\n 'ᴇ': 'E',\n 'ꜰ': 'F',\n 'ɢ': 'G',\n 'ʛ': 'G',\n 'ʜ': 'H',\n 'ɪ': 'I',\n 'ʁ': 'R',\n 'ᴊ': 'J',\n 'ᴋ': 'K',\n 'ʟ': 'L',\n 'ᴌ': 'L',\n 'ᴍ': 'M',\n 'ɴ': 'N',\n 'ᴏ': 'O',\n 'ɶ': 'OE',\n 'ᴐ': 'O',\n 'ᴕ': 'OU',\n 'ᴘ': 'P',\n 'ʀ': 'R',\n 'ᴎ': 'N',\n 'ᴙ': 'R',\n 'ꜱ': 'S',\n 'ᴛ': 'T',\n 'ⱻ': 'E',\n 'ᴚ': 'R',\n 'ᴜ': 'U',\n 'ᴠ': 'V',\n 'ᴡ': 'W',\n 'ʏ': 'Y',\n 'ᴢ': 'Z',\n 'á': 'a',\n 'ă': 'a',\n 'ắ': 'a',\n 'ặ': 'a',\n 'ằ': 'a',\n 'ẳ': 'a',\n 'ẵ': 'a',\n 'ǎ': 'a',\n 'â': 'a',\n 'ấ': 'a',\n 'ậ': 'a',\n 'ầ': 'a',\n 'ẩ': 'a',\n 'ẫ': 'a',\n 'ä': 'a',\n 'ǟ': 'a',\n 'ȧ': 'a',\n 'ǡ': 'a',\n 'ạ': 'a',\n 'ȁ': 'a',\n 'à': 'a',\n 'ả': 'a',\n 'ȃ': 'a',\n 'ā': 'a',\n 'ą': 'a',\n 'ᶏ': 'a',\n 'ẚ': 'a',\n 'å': 'a',\n 'ǻ': 'a',\n 'ḁ': 'a',\n 'ⱥ': 'a',\n 'ã': 'a',\n 'ꜳ': 'aa',\n 'æ': 'ae',\n 'ǽ': 'ae',\n 'ǣ': 'ae',\n 'ꜵ': 'ao',\n 'ꜷ': 'au',\n 'ꜹ': 'av',\n 'ꜻ': 'av',\n 'ꜽ': 'ay',\n 'ḃ': 'b',\n 'ḅ': 'b',\n 'ɓ': 'b',\n 'ḇ': 'b',\n 'ᵬ': 'b',\n 'ᶀ': 'b',\n 'ƀ': 'b',\n 'ƃ': 'b',\n 'ɵ': 'o',\n 'ć': 'c',\n 'č': 'c',\n 'ç': 'c',\n 'ḉ': 'c',\n 'ĉ': 'c',\n 'ɕ': 'c',\n 'ċ': 'c',\n 'ƈ': 'c',\n 'ȼ': 'c',\n 'ď': 'd',\n 'ḑ': 'd',\n 'ḓ': 'd',\n 'ȡ': 'd',\n 'ḋ': 'd',\n 'ḍ': 'd',\n 'ɗ': 'd',\n 'ᶑ': 'd',\n 'ḏ': 'd',\n 'ᵭ': 'd',\n 'ᶁ': 'd',\n 'đ': 'd',\n 'ɖ': 'd',\n 'ƌ': 'd',\n 'ı': 'i',\n 'ȷ': 'j',\n 'ɟ': 'j',\n 'ʄ': 'j',\n 'dz': 'dz',\n 'dž': 'dz',\n 'é': 'e',\n 'ĕ': 'e',\n 'ě': 'e',\n 'ȩ': 'e',\n 'ḝ': 'e',\n 'ê': 'e',\n 'ế': 'e',\n 'ệ': 'e',\n 'ề': 'e',\n 'ể': 'e',\n 'ễ': 'e',\n 'ḙ': 'e',\n 'ë': 'e',\n 'ė': 'e',\n 'ẹ': 'e',\n 'ȅ': 'e',\n 'è': 'e',\n 'ẻ': 'e',\n 'ȇ': 'e',\n 'ē': 'e',\n 'ḗ': 'e',\n 'ḕ': 'e',\n 'ⱸ': 'e',\n 'ę': 'e',\n 'ᶒ': 'e',\n 'ɇ': 'e',\n 'ẽ': 'e',\n 'ḛ': 'e',\n 'ꝫ': 'et',\n 'ḟ': 'f',\n 'ƒ': 'f',\n 'ᵮ': 'f',\n 'ᶂ': 'f',\n 'ǵ': 'g',\n 'ğ': 'g',\n 'ǧ': 'g',\n 'ģ': 'g',\n 'ĝ': 'g',\n 'ġ': 'g',\n 'ɠ': 'g',\n 'ḡ': 'g',\n 'ᶃ': 'g',\n 'ǥ': 'g',\n 'ḫ': 'h',\n 'ȟ': 'h',\n 'ḩ': 'h',\n 'ĥ': 'h',\n 'ⱨ': 'h',\n 'ḧ': 'h',\n 'ḣ': 'h',\n 'ḥ': 'h',\n 'ɦ': 'h',\n 'ẖ': 'h',\n 'ħ': 'h',\n 'ƕ': 'hv',\n 'í': 'i',\n 'ĭ': 'i',\n 'ǐ': 'i',\n 'î': 'i',\n 'ï': 'i',\n 'ḯ': 'i',\n 'ị': 'i',\n 'ȉ': 'i',\n 'ì': 'i',\n 'ỉ': 'i',\n 'ȋ': 'i',\n 'ī': 'i',\n 'į': 'i',\n 'ᶖ': 'i',\n 'ɨ': 'i',\n 'ĩ': 'i',\n 'ḭ': 'i',\n 'ꝺ': 'd',\n 'ꝼ': 'f',\n 'ᵹ': 'g',\n 'ꞃ': 'r',\n 'ꞅ': 's',\n 'ꞇ': 't',\n 'ꝭ': 'is',\n 'ǰ': 'j',\n 'ĵ': 'j',\n 'ʝ': 'j',\n 'ɉ': 'j',\n 'ḱ': 'k',\n 'ǩ': 'k',\n 'ķ': 'k',\n 'ⱪ': 'k',\n 'ꝃ': 'k',\n 'ḳ': 'k',\n 'ƙ': 'k',\n 'ḵ': 'k',\n 'ᶄ': 'k',\n 'ꝁ': 'k',\n 'ꝅ': 'k',\n 'ĺ': 'l',\n 'ƚ': 'l',\n 'ɬ': 'l',\n 'ľ': 'l',\n 'ļ': 'l',\n 'ḽ': 'l',\n 'ȴ': 'l',\n 'ḷ': 'l',\n 'ḹ': 'l',\n 'ⱡ': 'l',\n 'ꝉ': 'l',\n 'ḻ': 'l',\n 'ŀ': 'l',\n 'ɫ': 'l',\n 'ᶅ': 'l',\n 'ɭ': 'l',\n 'ł': 'l',\n 'lj': 'lj',\n 'ſ': 's',\n 'ẜ': 's',\n 'ẛ': 's',\n 'ẝ': 's',\n 'ḿ': 'm',\n 'ṁ': 'm',\n 'ṃ': 'm',\n 'ɱ': 'm',\n 'ᵯ': 'm',\n 'ᶆ': 'm',\n 'ń': 'n',\n 'ň': 'n',\n 'ņ': 'n',\n 'ṋ': 'n',\n 'ȵ': 'n',\n 'ṅ': 'n',\n 'ṇ': 'n',\n 'ǹ': 'n',\n 'ɲ': 'n',\n 'ṉ': 'n',\n 'ƞ': 'n',\n 'ᵰ': 'n',\n 'ᶇ': 'n',\n 'ɳ': 'n',\n 'ñ': 'n',\n 'nj': 'nj',\n 'ó': 'o',\n 'ŏ': 'o',\n 'ǒ': 'o',\n 'ô': 'o',\n 'ố': 'o',\n 'ộ': 'o',\n 'ồ': 'o',\n 'ổ': 'o',\n 'ỗ': 'o',\n 'ö': 'o',\n 'ȫ': 'o',\n 'ȯ': 'o',\n 'ȱ': 'o',\n 'ọ': 'o',\n 'ő': 'o',\n 'ȍ': 'o',\n 'ò': 'o',\n 'ỏ': 'o',\n 'ơ': 'o',\n 'ớ': 'o',\n 'ợ': 'o',\n 'ờ': 'o',\n 'ở': 'o',\n 'ỡ': 'o',\n 'ȏ': 'o',\n 'ꝋ': 'o',\n 'ꝍ': 'o',\n 'ⱺ': 'o',\n 'ō': 'o',\n 'ṓ': 'o',\n 'ṑ': 'o',\n 'ǫ': 'o',\n 'ǭ': 'o',\n 'ø': 'o',\n 'ǿ': 'o',\n 'õ': 'o',\n 'ṍ': 'o',\n 'ṏ': 'o',\n 'ȭ': 'o',\n 'ƣ': 'oi',\n 'ꝏ': 'oo',\n 'ɛ': 'e',\n 'ᶓ': 'e',\n 'ɔ': 'o',\n 'ᶗ': 'o',\n 'ȣ': 'ou',\n 'ṕ': 'p',\n 'ṗ': 'p',\n 'ꝓ': 'p',\n 'ƥ': 'p',\n 'ᵱ': 'p',\n 'ᶈ': 'p',\n 'ꝕ': 'p',\n 'ᵽ': 'p',\n 'ꝑ': 'p',\n 'ꝙ': 'q',\n 'ʠ': 'q',\n 'ɋ': 'q',\n 'ꝗ': 'q',\n 'ŕ': 'r',\n 'ř': 'r',\n 'ŗ': 'r',\n 'ṙ': 'r',\n 'ṛ': 'r',\n 'ṝ': 'r',\n 'ȑ': 'r',\n 'ɾ': 'r',\n 'ᵳ': 'r',\n 'ȓ': 'r',\n 'ṟ': 'r',\n 'ɼ': 'r',\n 'ᵲ': 'r',\n 'ᶉ': 'r',\n 'ɍ': 'r',\n 'ɽ': 'r',\n 'ↄ': 'c',\n 'ꜿ': 'c',\n 'ɘ': 'e',\n 'ɿ': 'r',\n 'ś': 's',\n 'ṥ': 's',\n 'š': 's',\n 'ṧ': 's',\n 'ş': 's',\n 'ŝ': 's',\n 'ș': 's',\n 'ṡ': 's',\n 'ṣ': 's',\n 'ṩ': 's',\n 'ʂ': 's',\n 'ᵴ': 's',\n 'ᶊ': 's',\n 'ȿ': 's',\n 'ɡ': 'g',\n 'ᴑ': 'o',\n 'ᴓ': 'o',\n 'ᴝ': 'u',\n 'ť': 't',\n 'ţ': 't',\n 'ṱ': 't',\n 'ț': 't',\n 'ȶ': 't',\n 'ẗ': 't',\n 'ⱦ': 't',\n 'ṫ': 't',\n 'ṭ': 't',\n 'ƭ': 't',\n 'ṯ': 't',\n 'ᵵ': 't',\n 'ƫ': 't',\n 'ʈ': 't',\n 'ŧ': 't',\n 'ᵺ': 'th',\n 'ɐ': 'a',\n 'ᴂ': 'ae',\n 'ǝ': 'e',\n 'ᵷ': 'g',\n 'ɥ': 'h',\n 'ʮ': 'h',\n 'ʯ': 'h',\n 'ᴉ': 'i',\n 'ʞ': 'k',\n 'ꞁ': 'l',\n 'ɯ': 'm',\n 'ɰ': 'm',\n 'ᴔ': 'oe',\n 'ɹ': 'r',\n 'ɻ': 'r',\n 'ɺ': 'r',\n 'ⱹ': 'r',\n 'ʇ': 't',\n 'ʌ': 'v',\n 'ʍ': 'w',\n 'ʎ': 'y',\n 'ꜩ': 'tz',\n 'ú': 'u',\n 'ŭ': 'u',\n 'ǔ': 'u',\n 'û': 'u',\n 'ṷ': 'u',\n 'ü': 'u',\n 'ǘ': 'u',\n 'ǚ': 'u',\n 'ǜ': 'u',\n 'ǖ': 'u',\n 'ṳ': 'u',\n 'ụ': 'u',\n 'ű': 'u',\n 'ȕ': 'u',\n 'ù': 'u',\n 'ủ': 'u',\n 'ư': 'u',\n 'ứ': 'u',\n 'ự': 'u',\n 'ừ': 'u',\n 'ử': 'u',\n 'ữ': 'u',\n 'ȗ': 'u',\n 'ū': 'u',\n 'ṻ': 'u',\n 'ų': 'u',\n 'ᶙ': 'u',\n 'ů': 'u',\n 'ũ': 'u',\n 'ṹ': 'u',\n 'ṵ': 'u',\n 'ᵫ': 'ue',\n 'ꝸ': 'um',\n 'ⱴ': 'v',\n 'ꝟ': 'v',\n 'ṿ': 'v',\n 'ʋ': 'v',\n 'ᶌ': 'v',\n 'ⱱ': 'v',\n 'ṽ': 'v',\n 'ꝡ': 'vy',\n 'ẃ': 'w',\n 'ŵ': 'w',\n 'ẅ': 'w',\n 'ẇ': 'w',\n 'ẉ': 'w',\n 'ẁ': 'w',\n 'ⱳ': 'w',\n 'ẘ': 'w',\n 'ẍ': 'x',\n 'ẋ': 'x',\n 'ᶍ': 'x',\n 'ý': 'y',\n 'ŷ': 'y',\n 'ÿ': 'y',\n 'ẏ': 'y',\n 'ỵ': 'y',\n 'ỳ': 'y',\n 'ƴ': 'y',\n 'ỷ': 'y',\n 'ỿ': 'y',\n 'ȳ': 'y',\n 'ẙ': 'y',\n 'ɏ': 'y',\n 'ỹ': 'y',\n 'ź': 'z',\n 'ž': 'z',\n 'ẑ': 'z',\n 'ʑ': 'z',\n 'ⱬ': 'z',\n 'ż': 'z',\n 'ẓ': 'z',\n 'ȥ': 'z',\n 'ẕ': 'z',\n 'ᵶ': 'z',\n 'ᶎ': 'z',\n 'ʐ': 'z',\n 'ƶ': 'z',\n 'ɀ': 'z',\n 'ff': 'ff',\n 'ffi': 'ffi',\n 'ffl': 'ffl',\n 'fi': 'fi',\n 'fl': 'fl',\n 'ij': 'ij',\n 'œ': 'oe',\n 'st': 'st',\n 'ₐ': 'a',\n 'ₑ': 'e',\n 'ᵢ': 'i',\n 'ⱼ': 'j',\n 'ₒ': 'o',\n 'ᵣ': 'r',\n 'ᵤ': 'u',\n 'ᵥ': 'v',\n 'ₓ': 'x'\n};\n","\nexport enum Frequency {\n Fortnight,\n Month,\n Year\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'keys'})\nexport class KeysPipe implements PipeTransform {\n\n transform(value, args: string[]): any {\n let keys = [];\n for (let enumMember in value) {\n if (value.hasOwnProperty(enumMember)) {\n let isValueProperty = parseInt(enumMember, 10) >= 0;\n if (isValueProperty) {\n keys.push({key: enumMember, value: value[enumMember]});\n }\n }\n }\n return keys;\n }\n}\n\n@Pipe({name: 'removeSpaces'})\nexport class RemoveSpacesPipe implements PipeTransform {\n\n transform(value, args: string[]): any {\n return value.replace(/ /g, '');\n }\n}\n\n/**\n * The default angular one is not compatible with IE9 due to Intl library.\n */\n@Pipe({name: 'customCurrency'})\nexport class CustomCurrencyPipe implements PipeTransform {\n transform(value, decimals: number, currencySymbol: string): any {\n if (decimals === 0) {\n // this rounds to zero decimals, adds two decimals, formats the number with the commas, then removes the\n // two empty decimals and the dot.\n let zeroDecimalsRoundedValue: string =\n Number(Math.round(Number(value + 'e' + decimals)) + 'e-' + decimals)\n .toFixed(decimals) + '.00';\n return currencySymbol + zeroDecimalsRoundedValue.replace(/(\\d)(?=(\\d{3})+\\.)/g, '$1,').replace('.00', '');\n } else {\n return currencySymbol\n + Number(Math.round(Number(value + 'e' + decimals)) + 'e-' + decimals)\n .toFixed(decimals).replace(/(\\d)(?=(\\d{3})+\\.)/g, '$1,');\n }\n\n }\n}\n\n/**\n * The default angular one is not compatible with IE9 due to Intl library.\n */\n@Pipe({name: 'emptyValue'})\nexport class EmptyValuePipe implements PipeTransform {\n transform(value, defaultValue: string): any {\n return (value === '') ? defaultValue : value;\n }\n}\n\n/**\n * Set the first letter to capital\n */\n@Pipe({name: 'capitalize'})\nexport class CapitalizePipe implements PipeTransform {\n transform(value: any) {\n if (value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n }\n return value;\n }\n}\n\n/**\n * Set the first letter to capital\n */\n@Pipe({name: 'protocol'})\nexport class ProtocolPipe implements PipeTransform {\n transform(value: any) {\n if (value) {\n let tmpValue = value.toLowerCase();\n if (!(tmpValue.startsWith('http://')\n && tmpValue.startsWith('https://')\n && tmpValue.startsWith('//'))) {\n return '//' + value;\n }\n return value;\n }\n return value;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Subscription service to share variable across the whole application via an id.\n */\n@Injectable()\nexport class SubscriptionService {\n\n private subscriptions = new Map>();\n\n /**\n * Create a new Observable variable associated with the key.\n *\n * @param id The key which will be associated with the variable.\n * @param value The observable variable which will be shared across the application as a BehaviorSubject object.\n * @returns {BehaviorSubject} The observable variable created, throw an error if the variable already exist.\n */\n newObservable(id: string, value: T): BehaviorSubject {\n if (!this.subscriptions.has(id)) {\n this.subscriptions.set(id, new BehaviorSubject(value));\n return this.subscriptions.get(id);\n } else {\n throw new Error('The observable \"' + id + '\" already exist');\n }\n }\n\n /**\n * Remove the variable from the application sharing pool.\n * @param id The id of the shared variable.\n */\n removeObservable(id: string): void {\n if (this.subscriptions.has(id)) {\n this.subscriptions.get(id).unsubscribe();\n this.subscriptions.delete(id);\n }\n }\n\n /**\n * Get the shared variable if it exist, throw an error otherwise.\n * todo maybe replace by null instead of throwing an error.\n *\n * @param id The id of the variable which will be gathered.\n * @returns {BehaviorSubject} The observable variable shared across the application or an Error if it does not exist.\n */\n getSubscriptions(id: string): BehaviorSubject {\n if (this.subscriptions.has(id)) {\n return this.subscriptions.get(id);\n } else {\n throw new Error('The observable \"' + id + '\" does not exist');\n }\n }\n}\n","\nexport enum Species {\n FELINE = 1,\n CANINE = 2\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseService } from './base.service';\nimport 'rxjs/add/operator/toPromise';\n\nimport { ToolsMethods } from '../shared/tools.methods';\n\nimport { Pet } from '../model/pet';\nimport { User } from '../model/user';\nimport { Theme } from '../model/theme';\nimport { Address } from '../model/address';\nimport { State } from '../model/state.enum';\n\n@Injectable()\nexport class ClientService extends BaseService {\n\n public static mapGetClientResponse(data: any): User {\n let state: State = State[data.State + ''];\n let postCode = '';\n if (data.PostCode !== null) {\n if (data.PostCode > 999) {\n postCode = data.PostCode.toString();\n } else if (data.PostCode !== 0) {\n postCode = '0' + data.PostCode.toString();\n }\n }\n let address: Address = new Address(\n data.Address,\n (data.Suburb !== null) ? data.Suburb.toUpperCase() : '',\n postCode,\n state\n );\n let dob: Date = new Date(data.DateOfBirth);\n return new User(\n data.ClientId,\n data.EncryptedClientId,\n data.Token,\n data.Title,\n data.Gender,\n data.FirstName,\n data.LastName,\n dob.getDate(),\n dob.getMonth() + 1,\n dob.getFullYear(),\n ToolsMethods.formatPhoneNumber(data.PrimaryContactNumber),\n data.Email,\n address\n );\n }\n\n private static mapSaveClientRequest(theme: Theme, user: User, pet: Pet, pageId: number, cookies: any) {\n let postCode = '';\n if (user.address.postcode !== null) {\n let userPostcode: number = +user.address.postcode;\n if (userPostcode > 999) {\n postCode = user.address.postcode;\n } else if (userPostcode !== 0) {\n postCode = '0' + userPostcode;\n }\n }\n return {\n 'Address': user.address.address,\n 'AustralianResident': true, // todo default true ?\n 'ClientId': (user.id !== 0) ? user.id : null,\n 'EncryptedClientId': user.encryptedClientId,\n 'CreatedBy': theme.userId,\n 'DateOfBirth': ToolsMethods.getDateAsString(user.getDoB()),\n 'Email': user.email,\n 'FirstName': user.firstName,\n 'Gender': user.gender,\n 'HomePhone': '', // todo we do not know if it's home or mobile phone\n 'IsLead': true, // todo ??\n 'Lastname': user.lastName,\n 'Mobile': '', // todo we do not know if it's home or mobile phone\n 'PartnerId': theme.id,\n 'PartnerCode': theme.partnerCode,\n 'PetCriteria': {\n 'Id': user.petCriteriaID,\n 'PageId': pageId,\n 'Name': pet.name,\n 'ClientConsent': pet.clientConsent,\n 'Species': pet.petType,\n 'Breed': {\n 'Breed': pet.breed.breed,\n 'BreedCode': pet.breed.breedCode\n },\n 'DateOfBirth': ToolsMethods.getDateAsString(pet.getDoB()),\n 'PetAgeConfirmed': pet.isOver8WeeksOldDeclaration\n },\n 'PostCode': postCode,\n 'PostalAddressLine': user.address.address,\n 'PostalPostCode': user.address.postcode,\n 'PostalState': ((user.address.state === null) ? null : State[user.address.state]),\n 'PostalSuburb': user.address.suburb,\n 'PrimaryContactNumber': user.getFormattedPhoneNumber(),\n 'State': ((user.address.state === null) ? null : State[user.address.state]),\n 'Suburb': user.address.suburb, // todo we don't have this at step 1\n 'SuburbId': null, // todo we don't have this\n 'Title': user.title,\n 'Token': user.token,\n 'Cookies': cookies\n };\n }\n\n private static mapSaveClientResponse(user: User, data: any) {\n user.id = data.ClientId;\n user.encryptedClientId = data.EncryptedClientId; // Mehedi\n user.token = data.Token;\n if (data.State !== null) {\n user.address.state = ClientService.getStateByName(data.State);\n }\n if (data.petCriteriaID !== null && data.PetCriteria.Id !== null) {\n user.petCriteriaID = data.PetCriteria.Id;\n }\n }\n\n /**\n * Due to a typescript bug we need to do this by hand State[string] is not valid for the tests....\n *\n * @param stateString\n */\n private static getStateByName(stateString: string): State {\n switch (stateString) {\n case State[State.ACT]:\n return State.ACT;\n\n case State[State.NSW]:\n return State.NSW;\n\n case State[State.VIC]:\n return State.VIC;\n\n case State[State.QLD]:\n return State.QLD;\n\n case State[State.TAS]:\n return State.TAS;\n\n case State[State.SA]:\n return State.SA;\n\n case State[State.WA]:\n return State.WA;\n\n case State[State.NT]:\n return State.NT;\n\n default:\n return null;\n }\n }\n\n private static mapUpdatePageForClientRequest(theme: Theme, user: User, pet: Pet, pageId: number) {\n return {\n 'Address': user.address.address,\n 'AustralianResident': true, // todo default true ?\n 'ClientId': (user.id !== 0) ? user.id : null,\n 'CreatedBy': theme.userId,\n 'DateOfBirth': ToolsMethods.getDateAsString(user.getDoB()),\n 'Email': user.email,\n 'FirstName': user.firstName,\n 'Gender': user.gender,\n 'HomePhone': '', // todo we do not know if it's home or mobile phone\n 'IsLead': true, // todo ??\n 'Lastname': user.lastName,\n 'Mobile': '', // todo we do not know if it's home or mobile phone\n 'PartnerId': theme.id,\n 'PetCriteria': {\n 'Id': user.petCriteriaID,\n 'PageId': pageId,\n 'Name': pet.name,\n 'Species': pet.petType,\n 'Breed': {\n 'Name': pet.breed.breed,\n 'Id': pet.breed.breedCode\n },\n 'DateOfBirth': ToolsMethods.getDateAsString(pet.getDoB())\n }\n };\n }\n\n constructor(private http: HttpClient) {\n super();\n }\n\n saveClient(theme: Theme, user: User, pet: Pet, pageId: number, cookies: any = null): Promise {\n let url = this.baseUrl + 'api/Petsure/SaveClient/' + theme.userId;\n\n let clientRequestObject = ClientService.mapSaveClientRequest(theme, user, pet, pageId, cookies);\n\n return this.http.post(url, JSON.stringify(clientRequestObject), { headers: this.headers })\n .toPromise()\n .then((response) => {\n ClientService.mapSaveClientResponse(user, response);\n return;\n })\n .catch(this.handleError);\n }\n\n getClient(clientToken: string): Promise {\n let url = this.baseUrl + 'api/Petsure/GetClient?token=' + clientToken;\n return this.http.get(url, { headers: this.headers })\n .toPromise()\n .then((response) => {\n return ClientService.mapGetClientResponse(response);\n })\n .catch(this.handleError);\n }\n\n updatePageForClient(theme: Theme, user: User, pet: Pet, pageId: number): Promise {\n let url = this.baseUrl + 'api/Petsure/UpdatePageForClient/' + pageId;\n\n let clientRequestObject = ClientService.mapUpdatePageForClientRequest(theme, user, pet, pageId);\n\n return this.http.post(url, JSON.stringify(clientRequestObject), { headers: this.headers })\n .toPromise()\n .then((response) => {\n if (response === 0) {\n console.error('Error while saving the user page');\n }\n return;\n })\n .catch(this.handleError);\n }\n\n private handleError(error: any): Promise {\n console.error('An error occurred', error); // for demo purposes only\n console.error(error.toString()); // for demo purposes only\n return Promise.reject(error.message || error);\n }\n}\n","\nexport class Promotion {\n\n static getBlank(): Promotion {\n return new Promotion(\n 0, 0, 0, 0,\n '', '', '',\n '', 0,\n '', '', ''\n );\n }\n\n static getCopy(promotion: Promotion): Promotion {\n return new Promotion(\n promotion.offerId,\n promotion.offerTypeId,\n promotion.offerVariantId,\n promotion.offerCriteriaId,\n\n promotion.offerTitle,\n promotion.offerTypeName,\n promotion.offerDescription,\n\n promotion.partnerCode,\n promotion.petsurePromotionId,\n\n promotion.productCode,\n promotion.promoCode,\n promotion.termsAndConditions\n );\n }\n\n constructor(\n public offerId: number,\n public offerTypeId: number,\n public offerVariantId: number,\n public offerCriteriaId: number,\n\n public offerTitle: string,\n public offerTypeName: string,\n public offerDescription: string,\n\n public partnerCode: string,\n public petsurePromotionId: number,\n\n public productCode: string,\n public promoCode: string,\n public termsAndConditions: string\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseService } from './base.service';\n\nimport 'rxjs/add/operator/toPromise';\nimport { ToolsMethods } from '../shared/tools.methods';\nimport { PremiumsHelper } from '../helpers/premiums.helper';\n\nimport { InsuranceCovers } from '../model/insurance-covers';\nimport { Insurance } from '../model/insurance';\n\nimport { Pet } from '../model/pet';\nimport { User } from '../model/user';\nimport { Cover } from '../model/cover';\nimport { State } from '../model/state.enum';\nimport { BrandsEnum } from '../model/brands.enum';\nimport { CoverField } from '../model/cover-field';\nimport { Frequency } from '../model/frequency.enum';\nimport { CoverFieldValue } from '../model/cover-field-value';\nimport { InsurancePromotion } from '../model/insurance-promotion';\nimport { InsurancePricing } from '../model/insurance-pricing';\nimport { PremiumCoverDateRequest} from '../model/premiumCoverDateRequest';\nimport { Promotion } from '../model/promotion';\nimport { PremiumCoverDateResponse } from '../model/premiumCoverDateResponse';\n\n@Injectable()\nexport class PremiumService extends BaseService {\n\n public static getLogoPath(brandId: number): string {\n switch (brandId) {\n case BrandsEnum.Real:\n return 'assets/img/logo/real.png';\n case BrandsEnum.Asia:\n return 'assets/img/logo/asia.png';\n case BrandsEnum.Guardian:\n return 'assets/img/logo/guardian.png';\n case BrandsEnum.RSPCA:\n return 'assets/img/logo/rspca.png';\n case BrandsEnum.Prime:\n return 'assets/img/logo/prime.png';\n case BrandsEnum.GuideDogs:\n return 'assets/img/logo/guide-dogs.png';\n default:\n return '';\n }\n }\n public static getLargeLogoPath(brandId: number): string {\n switch (brandId) {\n case BrandsEnum.Real:\n return 'assets/img/logo/real-lg.png';\n case BrandsEnum.Asia:\n return 'assets/img/logo/asia-lg.png';\n case BrandsEnum.Guardian:\n return 'assets/img/logo/guardian-lg.png';\n case BrandsEnum.RSPCA:\n return 'assets/img/logo/rspca-lg.png';\n case BrandsEnum.Prime:\n return 'assets/img/logo/prime-lg.png';\n case BrandsEnum.GuideDogs:\n return 'assets/img/logo/guide-dogs-lg.png';\n default:\n return '';\n }\n }\n\n private static mapAllPremiumsRequest(productCodes: string[], partnerCodes: string[], partnerId: number, user: User, pet: Pet) {\n let dobString = ToolsMethods.getDateAsString(pet.getDoB());\n return {\n 'ProductCodes': productCodes,\n 'PartnerCodes': partnerCodes,\n 'Name': pet.name,\n 'Species': pet.petType,\n 'IsGuideDog': pet.isGuideDog,\n 'BreedCode': pet.breed.breedCode,\n 'CrossBreed': pet.breed.crossBreed,\n 'State': State[user.address.state],\n 'DateOfBirth': dobString,\n 'Age': pet.getAge(),\n 'IsEligibleForSeniorsDiscount': user.eligibleForSenior,\n 'Discount': 0,\n 'Gender': pet.gender,\n 'ClientId': user.id,\n 'EncryptedClientId': user.encryptedClientId, // Mehedi\n 'PartnerId': partnerId,\n 'Desexed': pet.isDesexed,\n 'PromoCode': user.promotion.promoCode,\n 'PetsurePromotionId': user.promotion.petsurePromotionId,\n 'OfferTypeId': user.promotion.offerTypeId\n };\n }\n\n private static mapInsurancePromotion(insurancePromotionsData: any) {\n if (!insurancePromotionsData || insurancePromotionsData.length === 0) {\n return null;\n }\n let insurancePromotionData: any = insurancePromotionsData[0];\n return new InsurancePromotion(\n insurancePromotionData.LoadingNo,\n insurancePromotionData.LoadingCode,\n insurancePromotionData.LoadingName,\n insurancePromotionData.LoadingBase,\n (insurancePromotionData.LoadingBase / 12),\n (insurancePromotionData.LoadingBase / 26),\n insurancePromotionData.LoadingGst,\n insurancePromotionData.LoadingStampDuty,\n insurancePromotionData.PremiumFreeValue,\n insurancePromotionData.WebDisplayValue\n\n );\n }\n\n private static mapPremiumPricingResponse(premiumPricingData: any, hasFreeMonthOffer: boolean): InsurancePricing {\n if (!premiumPricingData) {\n return null;\n }\n let routinePriceFortnight: number = 0;\n let routinePriceMonth: number = 0;\n let routinePriceYear: number = 0;\n\n if (premiumPricingData.RoutineCareAvailable) {\n routinePriceFortnight = premiumPricingData.FortnightlyAmountWithRoutineCare;\n routinePriceMonth = premiumPricingData.MonthlyAmountWithRoutineCare;\n routinePriceYear = premiumPricingData.AnnualAmountWithRoutineCare;\n }\n\n let originalPriceFortnight: number = premiumPricingData.FortnightlyAmountDiscount\n + premiumPricingData.FortnightlyAmount;\n let originalPriceMonth: number = premiumPricingData.MonthlyAmountDiscount\n + premiumPricingData.MonthlyAmount;\n let originalPriceYear: number = premiumPricingData.AnnualAmountDiscount\n + premiumPricingData.AnnualAmount;\n\n let originalRoutinePriceFortnight: number = 0;\n let originalRoutinePriceMonth: number = 0;\n let originalRoutinePriceYear: number = 0;\n\n if (premiumPricingData.RoutineCareAvailable) {\n originalRoutinePriceFortnight = routinePriceFortnight\n + premiumPricingData.FortnightlyAmountWithRoutineCareDiscount;\n originalRoutinePriceMonth = routinePriceMonth\n + premiumPricingData.MonthlyAmountWithRoutineCareDiscount;\n originalRoutinePriceYear = routinePriceYear\n + premiumPricingData.AnnualAmountWithRoutineCareDiscount;\n }\n\n let excessAmount: number = 0;\n if (premiumPricingData.ExcessAmount) {\n excessAmount = premiumPricingData.ExcessAmount;\n }\n\n let filledInsurancePricing = InsurancePricing.getBlank();\n filledInsurancePricing.productBenefitId = premiumPricingData.ProductBenefitId;\n filledInsurancePricing.productCode = premiumPricingData.ProductCode;\n filledInsurancePricing.petSureProductCode = premiumPricingData.PetsureProductCode;\n filledInsurancePricing.routineCareAvailable = premiumPricingData.RoutineCareAvailable;\n filledInsurancePricing.productName = premiumPricingData.ProductName;\n\n filledInsurancePricing.priceFortnight = hasFreeMonthOffer ? originalPriceFortnight: premiumPricingData.FortnightlyAmount;\n filledInsurancePricing.priceMonth = hasFreeMonthOffer ? originalPriceMonth: premiumPricingData.MonthlyAmount;\n filledInsurancePricing.priceYear = premiumPricingData.AnnualAmount;\n\n filledInsurancePricing.originalPriceFortnight = originalPriceFortnight;\n filledInsurancePricing.originalPriceMonth = originalPriceMonth;\n filledInsurancePricing.originalPriceYear = originalPriceYear;\n\n filledInsurancePricing.routineCarePriceFortnight = hasFreeMonthOffer ? originalRoutinePriceFortnight : routinePriceFortnight;\n filledInsurancePricing.routineCarePriceMonth = hasFreeMonthOffer ? originalRoutinePriceMonth : routinePriceMonth;\n filledInsurancePricing.routineCarePriceYear = routinePriceYear;\n\n filledInsurancePricing.originalRoutineCarePriceFortnight = originalRoutinePriceFortnight;\n filledInsurancePricing.originalRoutineCarePriceMonth = originalRoutinePriceMonth;\n filledInsurancePricing.originalRoutineCarePriceYear = originalRoutinePriceYear;\n\n filledInsurancePricing.seniorDiscountAmount = premiumPricingData.AnnualAmountSeniorsDiscount;\n filledInsurancePricing.seniorDiscountAmountRoutineCare = premiumPricingData\n .AnnualAmountSeniorsWithRoutineCareDiscount;\n\n filledInsurancePricing.multiPetDiscount = premiumPricingData.AnnualAmountMultipetDiscount;\n filledInsurancePricing.multiPetDiscountRoutineCare = premiumPricingData\n .AnnualAmountMultipetWithRoutineCareDiscount;\n filledInsurancePricing.multiPetDiscountCount = premiumPricingData.MultiPetDiscountCount;\n\n filledInsurancePricing.excess = excessAmount;\n\n filledInsurancePricing.displayOrder = premiumPricingData.DisplayOrder;\n filledInsurancePricing.coolingOffDays = premiumPricingData.CoolingOffDays;\n filledInsurancePricing.minimumPetAgeForAccidentOnly = premiumPricingData.MinimumPetAgeForAccidentOnly;\n filledInsurancePricing.accidentBenefitCode = premiumPricingData.AccidentBenefitCode;\n return filledInsurancePricing;\n }\n\n private static mapPremiumPricingsResponse(premiumsResponseObject, hasFreeMonthOffer: boolean): InsurancePricing[] {\n let pricings: InsurancePricing[] = [];\n\n if (!premiumsResponseObject || premiumsResponseObject.length <= 0) {\n return pricings;\n }\n premiumsResponseObject.forEach((premiumPricingData: any) => {\n let result: InsurancePricing = PremiumService.mapPremiumPricingResponse(premiumPricingData, hasFreeMonthOffer);\n if (result) {\n pricings.push(\n PremiumService.mapPremiumPricingResponse(premiumPricingData, hasFreeMonthOffer)\n );\n }\n });\n return pricings;\n }\n\n private static mapAllPremiumsResponse(\n coverFieldMap: Map,\n clientResponseObject,\n promotion: Promotion\n ): InsuranceCovers {\n let insurances: Array = [];\n clientResponseObject.forEach((partnerContext: any) => {\n if (partnerContext === null || partnerContext.Options.length === 0) {\n return;\n }\n\n let premiumPrice = partnerContext.Premium;\n let hasRoutine: boolean = (partnerContext.IsRoutineCareOffered);\n\n let routinePriceFortnight: number = 0;\n let routinePriceMonth: number = 0;\n let routinePriceYear: number = 0;\n\n let hasFreeMonthOffer: boolean = promotion.offerTypeId === 3 && \n (partnerContext.PetsurePartnerCode == \"RS456\" || partnerContext.PetsurePartnerCode == \"GU456\");\n\n if (hasRoutine) {\n routinePriceFortnight = premiumPrice.FortnightlyAmountWithRoutineCare;\n routinePriceMonth = premiumPrice.MonthlyAmountWithRoutineCare;\n routinePriceYear = premiumPrice.AnnualAmountWithRoutineCare;\n }\n\n let originalPriceFortnight: number = premiumPrice.FortnightlyAmountDiscount\n + premiumPrice.FortnightlyAmount;\n let originalPriceMonth: number = premiumPrice.MonthlyAmountDiscount\n + premiumPrice.MonthlyAmount;\n let originalPriceYear: number = premiumPrice.AnnualAmountDiscount\n + premiumPrice.AnnualAmount;\n\n let originalRoutinePriceFortnight: number = 0;\n let originalRoutinePriceMonth: number = 0;\n let originalRoutinePriceYear: number = 0;\n\n if (hasRoutine) {\n originalRoutinePriceFortnight = routinePriceFortnight\n + premiumPrice.FortnightlyAmountWithRoutineCareDiscount;\n originalRoutinePriceMonth = routinePriceMonth\n + premiumPrice.MonthlyAmountWithRoutineCareDiscount;\n originalRoutinePriceYear = routinePriceYear\n + premiumPrice.AnnualAmountWithRoutineCareDiscount;\n }\n\n let coverFields: Map = PremiumService\n .getCoverFields(\n partnerContext.Options,\n partnerContext.Product.PdsLocation,\n coverFieldMap\n );\n\n let pricings: InsurancePricing[] = PremiumService.mapPremiumPricingsResponse(partnerContext.Premiums, hasFreeMonthOffer);\n\n let excessOptions: number[] = PremiumsHelper\n .getExcessOptions(partnerContext.Product.BrandId, partnerContext.Id);\n if (pricings && pricings.length > 0) {\n excessOptions = [];\n for (let pricing of pricings) {\n excessOptions.push(pricing.excess);\n }\n excessOptions = excessOptions.sort((a, b) => {\n return b - a;\n });\n }\n\n\n let excessDefault: number = PremiumsHelper\n .getDefaultExcess(partnerContext.Product.BrandId, partnerContext.Id);\n\n\n // to now what field we fill it is easier than using the constructor\n let filledInsurance = Insurance.getBlank();\n filledInsurance.policyBookletLink = partnerContext.Product.PdsLocation;\n filledInsurance.id = partnerContext.Id;\n filledInsurance.quoteDetailsId = null;\n filledInsurance.productBenefitId = partnerContext.Id;\n filledInsurance.productCode = partnerContext.Product.Code;\n filledInsurance.petSureProductCode = partnerContext.PetsureProductCode;\n filledInsurance.petSurePartnerCode = partnerContext.PetsurePartnerCode;\n filledInsurance.coverName = premiumPrice.ProductName;\n filledInsurance.routineCareAvailable = partnerContext.RoutineCareAvailable;\n\n filledInsurance.brandId = partnerContext.Product.BrandId;\n filledInsurance.brandCode = partnerContext.Code;\n filledInsurance.insuranceName = partnerContext.Product.Name;\n filledInsurance.brandLogo = PremiumService.getLogoPath(partnerContext.Product.BrandId);\n filledInsurance.brandLogoLarge = PremiumService.getLargeLogoPath(partnerContext.Product.BrandId);\n filledInsurance.aboutBrand = partnerContext.Product.Description;\n filledInsurance.brandPhone = partnerContext.Product.PhoneNumber;\n\n filledInsurance.priceFortnight = hasFreeMonthOffer ? originalPriceFortnight : premiumPrice.FortnightlyAmount;\n filledInsurance.priceMonth = hasFreeMonthOffer ? originalPriceMonth: premiumPrice.MonthlyAmount;\n filledInsurance.priceYear = premiumPrice.AnnualAmount;\n\n filledInsurance.originalPriceFortnight = originalPriceFortnight;\n filledInsurance.originalPriceMonth = originalPriceMonth;\n filledInsurance.originalPriceYear = originalPriceYear;\n filledInsurance.originalPriceText = ((partnerContext.SpecialOfferText === null) ?\n '' : partnerContext.SpecialOfferText);\n\n filledInsurance.routineCarePriceFortnight = hasFreeMonthOffer ? originalRoutinePriceFortnight : routinePriceFortnight;\n filledInsurance.routineCarePriceMonth = hasFreeMonthOffer ? originalRoutinePriceMonth : routinePriceMonth;\n filledInsurance.routineCarePriceYear = routinePriceYear;\n\n filledInsurance.originalRoutineCarePriceFortnight = originalRoutinePriceFortnight;\n filledInsurance.originalRoutineCarePriceMonth = originalRoutinePriceMonth;\n filledInsurance.originalRoutineCarePriceYear = originalRoutinePriceYear;\n\n filledInsurance.fields = coverFields;\n filledInsurance.routineCareSelected = false;\n filledInsurance.shortListed = false;\n filledInsurance.displayOrder = partnerContext.DisplayOrder;\n\n filledInsurance.seniorDiscount = partnerContext.Product.SeniorDiscount;\n filledInsurance.seniorDiscountAmount = premiumPrice.AnnualAmountSeniorsDiscount;\n filledInsurance.seniorDiscountAmountRoutineCare = premiumPrice.AnnualAmountSeniorsWithRoutineCareDiscount;\n\n filledInsurance.multiPetDiscount = premiumPrice.AnnualAmountMultipetDiscount;\n filledInsurance.multiPetDiscountRoutineCare = premiumPrice.AnnualAmountMultipetWithRoutineCareDiscount;\n filledInsurance.multiPetDiscountCount = partnerContext.Product.MultiPetDiscountCount;\n\n filledInsurance.coolingOffDays = partnerContext.Product.CoolingOffDays;\n filledInsurance.minimumPetAgeForAccidentOnly = partnerContext.MinimumPetAgeForAccidentOnly;\n filledInsurance.accidentBenefitCode = partnerContext.AccidentBenefitCode;\n filledInsurance.createdDate = '';\n filledInsurance.insurancePromotion = this.mapInsurancePromotion(partnerContext.Loadings);\n\n filledInsurance.excessOptions = excessOptions;\n filledInsurance.excessDefault = excessDefault;\n filledInsurance.excessSelected = excessDefault;\n\n filledInsurance.pricings = pricings;\n insurances.push(filledInsurance);\n });\n\n return new InsuranceCovers(\n coverFieldMap,\n insurances\n );\n }\n\n private static mapPremiumsRequest(user: User, pets: Pet[], insurance: Insurance, cover: Cover) {\n let quoteDetails = [];\n for (let pet of pets) {\n if (!pet.isValid()) {\n continue;\n }\n if (!pet.validate()) {\n pet.clearErrors();\n continue;\n }\n quoteDetails.push(\n {\n 'AnnualPremiumAmount': pet.cover.priceYear,\n 'BreedCode': pet.breed.breedCode,\n 'DateCreated': pet.cover.createdDate,\n 'PetsureProductCode': PremiumsHelper.getProductCode(\n pet.cover.petSureProductCode,\n pet.cover.routineCareSelected),\n 'PartnerCode': pet.cover.petSurePartnerCode,\n 'IsGuideDog': pet.isGuideDog,\n 'DateOfBirth': ToolsMethods.getDateAsString(pet.getDoB()),\n 'DiscountAmount': pet.cover.getDiscountAmount(cover.frequency),\n 'DiscountPercent': pet.cover.seniorDiscount,\n 'ExcessOption': pet.cover.excessSelected,\n 'Gender': pet.gender,\n 'HasRoutineCare': pet.cover.hasRoutineCare() ? pet.cover.routineCareSelected : false,\n 'Id': pet.cover.quoteDetailsId,\n 'IsEligibleForSeniorsDiscount': user.eligibleForSenior,\n 'IsValid': true,\n 'Desexed': pet.isDesexed,\n 'Name': pet.name,\n 'PaymentFrequency': Frequency[cover.frequency].toUpperCase().substring(0, 1),\n 'PetAgeConfirmed': pet.isOver8WeeksOldDeclaration,\n 'ProductBenefitId': pet.cover.productBenefitId,\n 'QuoteId': cover.quoteId,\n 'Species': pet.petType,\n 'State': State[user.address.state],\n 'VetPractice': pet.vet.vet,\n 'VetPracticeCode': pet.vet.practiceCode\n }\n );\n }\n return {\n 'ClientId': user.id,\n 'EncryptedClientId': user.encryptedClientId,\n 'ClientToken': user.token,\n 'PetsureProductCode': PremiumsHelper.getProductCode(\n insurance.petSureProductCode,\n insurance.routineCareSelected),\n 'CoverStartDate': ToolsMethods.getDateAsString(cover.coverStartDate),\n 'Id': null,\n 'IsEligibleForSeniorsDiscount': user.eligibleForSenior,\n 'PaymentFrequency': Frequency[cover.frequency].toUpperCase().substring(0, 1),\n 'PremiumStartDate': ToolsMethods.getDateAsString(cover.premiumStartDate),\n 'ProductCode': insurance.productCode,\n 'PartnerCode': insurance.petSurePartnerCode,\n 'QuoteDetails': quoteDetails,\n 'ReferToUnderwriting': cover.hadPriorPolicyCancelled,\n 'State': State[user.address.state],\n 'Token': cover.token,\n 'PromoCode': user.promotion.promoCode,\n 'PromotionId': user.promotion.petsurePromotionId\n };\n }\n\n private static mapPremiumsResponse(insurances: Insurance[], clientResponseObject, promotion: Promotion): Insurance[] {\n if (!clientResponseObject || clientResponseObject.length <= 0) {\n return [];\n }\n let fallBackInsurance: Insurance = null;\n if (insurances && insurances.length > 0) {\n fallBackInsurance = Insurance.getCopy(insurances[0]);\n fallBackInsurance.pricings = [];\n fallBackInsurance.excessOptions = [];\n fallBackInsurance.excessDefault = 0;\n fallBackInsurance.excessSelected = 0;\n fallBackInsurance.routineCareSelected = false;\n }\n\n let insurancesMap: Map = new Map();\n for (let i = 0; i < clientResponseObject.length; i++) {\n let insurance: Insurance = insurancesMap.get(clientResponseObject[i].ProductBenefitId);\n if (!insurance) {\n for (let insuranceEl of insurances) {\n if (clientResponseObject[i].ProductBenefitId === insuranceEl.productBenefitId) {\n insurance = Insurance.getCopy(insuranceEl);\n break;\n }\n }\n if (!insurance) {\n insurance = Insurance.getCopy(fallBackInsurance);\n }\n }\n if (insurance === null) {\n continue;\n }\n\n let hasFreeMonthOffer: boolean = promotion.promoCode === \"1CFREEMONTH\" && \n (insurance.petSurePartnerCode == \"RS456\" || insurance.petSurePartnerCode == \"GU456\");\n\n let insurancePricing: InsurancePricing = PremiumService.mapPremiumPricingResponse(clientResponseObject[i], hasFreeMonthOffer);\n if (!insurancePricing) {\n continue;\n }\n let toMerge = [insurancePricing];\n let insuranceNoRoutineCare: InsurancePricing = null;\n if (insurancePricing.hasRoutineCare()) {\n insuranceNoRoutineCare = InsurancePricing.getCopyWithoutRoutineCare(insurancePricing);\n toMerge.push(insuranceNoRoutineCare);\n }\n insurance.mergeInsurancePricings(toMerge);\n insurance.applyCurrentInsurancePricing();\n insurancesMap.set(insurance.productBenefitId, insurance);\n }\n return Array.from(\n insurancesMap.values()\n );\n }\n\n private static getCoverFields(\n coverFieldsData: any,\n pdsLocation: string,\n coverFieldMap: Map\n ): Map {\n let coverFields: Map = new Map();\n for (let data of coverFieldsData) {\n let fieldClass = 'cover-field-clss-' + data.DisplayOrder;\n let fieldId: number = -1;\n let name: string = \"\";\n if (coverFieldMap.has(fieldClass)) {\n fieldId = coverFieldMap.get(fieldClass).id;\n name = coverFieldMap.get(fieldClass).name;\n }\n coverFields.set(\n fieldClass,\n new CoverFieldValue(\n fieldId,\n data.DisplayOrder,\n PremiumService.generateHtmlElement(data),\n name\n )\n );\n }\n coverFields.set(\n 'cover-field-clss-100',\n new CoverFieldValue(\n 9999,\n 100,\n ''\n + ' Policy Booklet'\n + '',\n ''\n )\n );\n return coverFields;\n }\n\n private static generateHtmlElement(value: any): string {\n let html: string = '';\n if (value.DisplayText !== null && value.DisplayText !== '') {\n html = value.DisplayText;\n } else if (value.IsIncluded) {\n html = '';\n } else {\n html = '';\n }\n return html;\n }\n\n private static mapBenefitResponse(data: any): Map {\n let coverFields: Map = new Map();\n for (let coverField of data) {\n coverFields.set(\n 'cover-field-clss-' + coverField.DisplayOrder,\n new CoverField(\n coverField.Id,\n coverField.DisplayOrder,\n coverField.Name,\n coverField.HelpText,\n coverField.IsVisible\n )\n );\n }\n coverFields.set(\n 'cover-field-clss-100',\n new CoverField(\n 100,\n 100,\n 'Policy Booklet',\n '',\n true\n )\n );\n return coverFields;\n }\n\n constructor(private http: HttpClient) {\n super();\n }\n\n getAllBenefitsAndPremiums(step: number, partnerId: number, user: User, pet: Pet): Promise {\n let products: string[] = PremiumsHelper.getProductCodes(step, user, pet);\n let partners: string[] = PremiumsHelper.getPartnerCodes(step, user, pet);\n return this.getAllBenefits(partnerId, user)\n .then(\n (coverFields) => {\n return this.getAllPremiums(products, partners, partnerId, user, pet, coverFields);\n },\n (error) => {\n return error;\n }\n );\n }\n\n getAllBenefits(partnerId: number, user: User): Promise> {\n let url = this.baseUrl + 'api/Petsure/GetAllBenefitData/' + partnerId + '/' + user.eligibleForSenior;\n return this.http.get(url)\n .toPromise()\n .then((response) => {\n return PremiumService.mapBenefitResponse(response);\n })\n .catch(this.handleError);\n }\n\n getAllPremiums(\n productCodes: string[],\n partnerCodes: string[],\n partnerId: number,\n user: User,\n pet: Pet,\n coverFields: Map = new Map()\n ): Promise {\n let url = this.baseUrl + 'api/Petsure/GetAllPremiums';\n let clientRequestObject = PremiumService.mapAllPremiumsRequest(productCodes, partnerCodes, partnerId, user, pet);\n // console.log( JSON.stringify(clientRequestObject));\n return this.http.post(url, JSON.stringify(clientRequestObject), { headers: this.headers })\n .toPromise()\n .then((response) => {\n return PremiumService.mapAllPremiumsResponse(coverFields, response, user.promotion);\n })\n .catch(this.handleError);\n }\n\n getPremiums(user: User, pet: Pet, pets: Pet[], insurances: Insurance[], selected: Insurance, cover: Cover): Promise {\n let url = this.baseUrl + 'api/Petsure/GetPremiums?petName=' + pet.name;\n let clientRequestObject = PremiumService.mapPremiumsRequest(user, pets, selected, cover);\n // console.log(JSON.stringify(clientRequestObject));\n return this.http.post(url, JSON.stringify(clientRequestObject), { headers: this.headers })\n .toPromise()\n .then((response) => {\n return PremiumService.mapPremiumsResponse(insurances, response, user.promotion);\n })\n .catch(this.handleError);\n }\n\n getEffectiveDate(): Date {\n return new Date(Date.now());\n }\n /**\n * Update the cover Dates\n * Calls upm Wrapper service \n * @param userId \n * @param coverDates \n * @returns \n */\n updatePremiumCoverDetails(userId: string, coverDates: PremiumCoverDateRequest) {\n let url = this.baseUrl + 'api/Petsure/UpdateCoverDetails/' + userId; \n return this.http.post(url, JSON.stringify(coverDates), {headers: this.headers})\n .toPromise()\n .then((response: PremiumCoverDateResponse) => { \n return response; \n })\n .catch(this.handleError);\n }\n\n\n private handleError(error: any): Promise {\n console.error('An error occurred', error); // for demo purposes only\n return Promise.reject(error.message || error);\n }\n\n}\n","import {KeyAttribute} from './common';\n\nexport class PositionService {\n /**\n * Provides read-only equivalent of jQuery's position function:\n * http://api.jquery.com/position/\n */\n public position(nativeEl: HTMLElement): {width: number, height: number, top: number, left: number} {\n let elBCR = this.offset(nativeEl);\n let offsetParentBCR = {top: 0, left: 0};\n let offsetParentEl = this.parentOffsetEl(nativeEl);\n if (offsetParentEl !== this.document as any) {\n offsetParentBCR = this.offset(offsetParentEl);\n offsetParentBCR.top += offsetParentEl.clientTop - offsetParentEl.scrollTop;\n offsetParentBCR.left += offsetParentEl.clientLeft - offsetParentEl.scrollLeft;\n }\n\n let boundingClientRect = nativeEl.getBoundingClientRect();\n return {\n width: boundingClientRect.width || nativeEl.offsetWidth,\n height: boundingClientRect.height || nativeEl.offsetHeight,\n top: elBCR.top - offsetParentBCR.top,\n left: elBCR.left - offsetParentBCR.left\n };\n }\n\n /**\n * Provides read-only equivalent of jQuery's offset function:\n * http://api.jquery.com/offset/\n */\n public offset(nativeEl: any): {width: number, height: number, top: number, left: number} {\n let boundingClientRect = nativeEl.getBoundingClientRect();\n return {\n width: boundingClientRect.width || nativeEl.offsetWidth,\n height: boundingClientRect.height || nativeEl.offsetHeight,\n top: boundingClientRect.top + (this.window.pageYOffset || this.document.documentElement.scrollTop),\n left: boundingClientRect.left + (this.window.pageXOffset || this.document.documentElement.scrollLeft)\n };\n }\n\n /**\n * Provides coordinates for the targetEl in relation to hostEl\n */\n public positionElements(\n hostEl: HTMLElement,\n targetEl: HTMLElement,\n positionStr: string,\n appendToBody: boolean\n ): {top: number, left: number} {\n let positionStrParts = positionStr.split('-');\n let pos0 = positionStrParts[0];\n let pos1 = positionStrParts[1] || 'center';\n let hostElPos = appendToBody ? this.offset(hostEl) : this.position(hostEl);\n let targetElWidth = targetEl.offsetWidth;\n let targetElHeight = targetEl.offsetHeight;\n let shiftWidth: KeyAttribute = {\n center(): number {\n return hostElPos.left + hostElPos.width / 2 - targetElWidth / 2;\n },\n left(): number {\n return hostElPos.left;\n },\n right(): number {\n return hostElPos.left + hostElPos.width;\n }\n };\n\n let shiftHeight: KeyAttribute = {\n center(): number {\n return hostElPos.top + hostElPos.height / 2 - targetElHeight / 2;\n },\n top(): number {\n return hostElPos.top;\n },\n bottom(): number {\n return hostElPos.top + hostElPos.height;\n }\n };\n\n let targetElPos: {top: number, left: number};\n switch (pos0) {\n case 'right':\n targetElPos = {\n top: shiftHeight[pos1](),\n left: shiftWidth[pos0]()\n };\n break;\n case 'left':\n targetElPos = {\n top: shiftHeight[pos1](),\n left: hostElPos.left - targetElWidth\n };\n break;\n case 'bottom':\n targetElPos = {\n top: shiftHeight[pos0](),\n left: shiftWidth[pos1]()\n };\n break;\n default:\n targetElPos = {\n top: hostElPos.top - targetElHeight,\n left: shiftWidth[pos1]()\n };\n break;\n }\n\n return targetElPos;\n }\n\n protected get window(): Window {\n return window;\n }\n\n protected get document(): Document {\n return window.document;\n }\n\n protected getStyle(nativeEl: HTMLElement, cssProp: string): string {\n // for IE\n if ((nativeEl as any).currentStyle) {\n return (nativeEl as any).currentStyle[cssProp];\n }\n\n if (this.window.getComputedStyle) {\n return (this.window.getComputedStyle(nativeEl) as KeyAttribute)[cssProp];\n }\n // finally try and get inline style\n return (nativeEl.style as KeyAttribute)[cssProp];\n }\n\n /**\n * Checks if a given element is statically positioned\n * @param nativeEl - raw DOM element\n */\n protected isStaticPositioned(nativeEl: HTMLElement): boolean {\n return (this.getStyle(nativeEl, 'position') || 'static' ) === 'static';\n }\n\n /**\n * returns the closest, non-statically positioned parentOffset of a given\n * element\n * @param nativeEl\n */\n protected parentOffsetEl(nativeEl: HTMLElement): any {\n let offsetParent: any = nativeEl.offsetParent || this.document;\n while (offsetParent && offsetParent !== this.document &&\n this.isStaticPositioned(offsetParent)) {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || this.document;\n };\n}\n\nexport const positionService: PositionService = new PositionService();\n","import { Component, Input } from '@angular/core';\nimport { ModelValidator } from '../model/model-validator';\n\n@Component({\n selector: '[model-validation-display]',\n template: `\n
\n {{model.getError(modelPropertyName)}}\n
\n `\n})\nexport class ModelValidationDisplayComponent {\n @Input('model-validated') model: ModelValidator;\n @Input('property-name') modelPropertyName: string;\n}\n","import { Frequency } from './frequency.enum';\n\nexport class InsurancePricing {\n\n static getBlank(): InsurancePricing {\n return new InsurancePricing(\n null, '', '',\n false,\n '',\n null, null, null,\n null, null, null,\n null, null, null,\n null, null, null,\n null\n );\n }\n\n static getCopy(insurance: InsurancePricing): InsurancePricing {\n let insCopy: InsurancePricing = InsurancePricing.getBlank();\n insCopy.productBenefitId = insurance.productBenefitId;\n insCopy.productCode = insurance.productCode;\n insCopy.petSureProductCode = insurance.petSureProductCode;\n insCopy.routineCareAvailable = insurance.routineCareAvailable;\n insCopy.productName = insurance.productName;\n\n insCopy.priceFortnight = insurance.priceFortnight;\n insCopy.priceMonth = insurance.priceMonth;\n insCopy.priceYear = insurance.priceYear;\n\n insCopy.originalPriceFortnight = insurance.originalPriceFortnight;\n insCopy.originalPriceMonth = insurance.originalPriceMonth;\n insCopy.originalPriceYear = insurance.originalPriceYear;\n\n insCopy.routineCarePriceFortnight = insurance.routineCarePriceFortnight;\n insCopy.routineCarePriceMonth = insurance.routineCarePriceMonth;\n insCopy.routineCarePriceYear = insurance.routineCarePriceYear;\n\n insCopy.originalRoutineCarePriceFortnight = insurance.originalRoutineCarePriceFortnight;\n insCopy.originalRoutineCarePriceMonth = insurance.originalRoutineCarePriceMonth;\n insCopy.originalRoutineCarePriceYear = insurance.originalRoutineCarePriceYear;\n\n insCopy.seniorDiscountAmount = insurance.seniorDiscountAmount;\n insCopy.seniorDiscountAmountRoutineCare = insurance.seniorDiscountAmountRoutineCare;\n\n insCopy.multiPetDiscount = insurance.multiPetDiscount;\n insCopy.multiPetDiscountRoutineCare = insurance.multiPetDiscountRoutineCare;\n insCopy.multiPetDiscountCount = insurance.multiPetDiscountCount;\n\n insCopy.excess = insurance.excess;\n\n insCopy.displayOrder = insurance.displayOrder;\n insCopy.coolingOffDays = insurance.coolingOffDays;\n insCopy.minimumPetAgeForAccidentOnly = insurance.minimumPetAgeForAccidentOnly;\n insCopy.accidentBenefitCode = insurance.accidentBenefitCode;\n return insCopy;\n }\n\n static getCopyWithoutRoutineCare(insurance: InsurancePricing): InsurancePricing {\n let insCopy: InsurancePricing = InsurancePricing.getBlank();\n insCopy.productBenefitId = insurance.productBenefitId;\n insCopy.productCode = insurance.productCode;\n insCopy.petSureProductCode = insurance.petSureProductCode;\n insCopy.routineCareAvailable = insurance.routineCareAvailable;\n insCopy.productName = insurance.productName;\n\n insCopy.priceFortnight = insurance.priceFortnight;\n insCopy.priceMonth = insurance.priceMonth;\n insCopy.priceYear = insurance.priceYear;\n\n insCopy.originalPriceFortnight = insurance.originalPriceFortnight;\n insCopy.originalPriceMonth = insurance.originalPriceMonth;\n insCopy.originalPriceYear = insurance.originalPriceYear;\n\n insCopy.routineCarePriceFortnight = 0;\n insCopy.routineCarePriceMonth = 0;\n insCopy.routineCarePriceYear = 0;\n\n insCopy.originalRoutineCarePriceFortnight = 0;\n insCopy.originalRoutineCarePriceMonth = 0;\n insCopy.originalRoutineCarePriceYear = 0;\n\n insCopy.seniorDiscountAmount = insurance.seniorDiscountAmount;\n insCopy.seniorDiscountAmountRoutineCare = insurance.seniorDiscountAmountRoutineCare;\n\n insCopy.multiPetDiscount = insurance.multiPetDiscount;\n insCopy.multiPetDiscountRoutineCare = insurance.multiPetDiscountRoutineCare;\n insCopy.multiPetDiscountCount = insurance.multiPetDiscountCount;\n\n insCopy.excess = insurance.excess;\n\n insCopy.displayOrder = insurance.displayOrder;\n insCopy.coolingOffDays = insurance.coolingOffDays;\n insCopy.minimumPetAgeForAccidentOnly = insurance.minimumPetAgeForAccidentOnly;\n insCopy.accidentBenefitCode = insurance.accidentBenefitCode;\n return insCopy;\n }\n\n constructor(\n public productBenefitId: number,\n public productCode: string,\n public petSureProductCode: string,\n public routineCareAvailable: boolean,\n public productName: string,\n\n public priceFortnight: number,\n public priceMonth: number,\n public priceYear: number,\n\n public originalPriceFortnight: number,\n public originalPriceMonth: number,\n public originalPriceYear: number,\n\n public routineCarePriceFortnight: number,\n public routineCarePriceMonth: number,\n public routineCarePriceYear: number,\n\n public originalRoutineCarePriceFortnight: number,\n public originalRoutineCarePriceMonth: number,\n public originalRoutineCarePriceYear: number,\n\n public seniorDiscountAmount: number = 0,\n public seniorDiscountAmountRoutineCare: number = 0,\n\n public multiPetDiscount: number = 0,\n public multiPetDiscountRoutineCare: number = 0,\n public multiPetDiscountCount: number = 0,\n\n public excess: number = 0,\n\n public displayOrder: number = 0,\n public coolingOffDays: number = 30,\n public minimumPetAgeForAccidentOnly: number = 99,\n public accidentBenefitCode: string = '',\n ) {\n }\n\n mergeInsurancePricings(insurance: InsurancePricing) {\n this.productBenefitId = insurance.productBenefitId;\n this.productCode = insurance.productCode;\n this.petSureProductCode = insurance.petSureProductCode;\n this.routineCareAvailable = insurance.routineCareAvailable;\n this.productName = insurance.productName;\n\n this.priceFortnight = insurance.priceFortnight;\n this.priceMonth = insurance.priceMonth;\n this.priceYear = insurance.priceYear;\n\n this.originalPriceFortnight = insurance.originalPriceFortnight;\n this.originalPriceMonth = insurance.originalPriceMonth;\n this.originalPriceYear = insurance.originalPriceYear;\n\n this.routineCarePriceFortnight = insurance.routineCarePriceFortnight;\n this.routineCarePriceMonth = insurance.routineCarePriceMonth;\n this.routineCarePriceYear = insurance.routineCarePriceYear;\n\n this.originalRoutineCarePriceFortnight = insurance.originalRoutineCarePriceFortnight;\n this.originalRoutineCarePriceMonth = insurance.originalRoutineCarePriceMonth;\n this.originalRoutineCarePriceYear = insurance.originalRoutineCarePriceYear;\n\n this.seniorDiscountAmount = insurance.seniorDiscountAmount;\n this.seniorDiscountAmountRoutineCare = insurance.seniorDiscountAmountRoutineCare;\n\n this.multiPetDiscount = insurance.multiPetDiscount;\n this.multiPetDiscountRoutineCare = insurance.multiPetDiscountRoutineCare;\n this.multiPetDiscountCount = insurance.multiPetDiscountCount;\n\n this.excess = insurance.excess;\n\n this.displayOrder = insurance.displayOrder;\n this.coolingOffDays = insurance.coolingOffDays;\n this.minimumPetAgeForAccidentOnly = insurance.minimumPetAgeForAccidentOnly;\n this.accidentBenefitCode = insurance.accidentBenefitCode;\n }\n\n\n hasRoutineCare(): boolean {\n return this.routineCarePriceFortnight > 0;\n }\n\n getPrice(freq: Frequency, routine: boolean = null): number {\n let price = 0;\n switch (freq) {\n case Frequency.Fortnight:\n price = (routine && this.hasRoutineCare()) ?\n this.routineCarePriceFortnight : this.priceFortnight;\n break;\n case Frequency.Month:\n price = (routine && this.hasRoutineCare()) ?\n this.routineCarePriceMonth : this.priceMonth;\n break;\n case Frequency.Year:\n price = (routine && this.hasRoutineCare()) ?\n this.routineCarePriceYear : this.priceYear;\n break;\n default:\n price = 0;\n break;\n }\n // discount is negative\n return price;\n }\n\n getOriginalPrice(freq: Frequency, routine: boolean = null): number {\n let price = 0;\n switch (freq) {\n case Frequency.Fortnight:\n price = ((routine && this.hasRoutineCare()) ?\n this.originalRoutineCarePriceFortnight : this.originalPriceFortnight);\n break;\n case Frequency.Month:\n price = ((routine && this.hasRoutineCare()) ?\n this.originalRoutineCarePriceMonth : this.originalPriceMonth);\n break;\n case Frequency.Year:\n price = ((routine && this.hasRoutineCare()) ?\n this.originalRoutineCarePriceYear : this.originalPriceYear);\n break;\n default:\n price = 0;\n break;\n }\n return price;\n }\n\n getDiscountAmount(freq: Frequency, routine: boolean = null): number {\n if (this.hasDiscount(routine)) {\n let discount: number = this.getOriginalPrice(freq, routine) - this.getPrice(freq, routine);\n return discount > 0 ? discount : 0;\n }\n return 0;\n }\n\n hasDiscountNoRoutineCare(): boolean {\n return this.originalPriceYear > 0\n && this.getOriginalPrice(Frequency.Year, false) !== this.getPrice(Frequency.Year, false);\n }\n\n hasDiscountRoutineCare(): boolean {\n return this.originalRoutineCarePriceYear > 0\n && this.getOriginalPrice(Frequency.Year, true) !== this.getPrice(Frequency.Year, true);\n }\n\n hasDiscount(routine: boolean = null): boolean {\n return routine ? this.hasDiscountRoutineCare() : this.hasDiscountNoRoutineCare();\n }\n\n hasDiscountIfNoRoutine(): boolean {\n return this.hasDiscountRoutineCare() || this.hasDiscountNoRoutineCare();\n }\n\n getOriginalPriceIfNoRoutine(freq: Frequency, routine: boolean): number {\n if (routine && this.hasDiscount(true)) {\n return this.getOriginalPrice(freq, routine);\n } else {\n return this.getOriginalPrice(freq, false);\n }\n }\n\n convertPriceToFrequency(amount: number, freq: Frequency): number {\n let newValue = amount;\n switch (freq) {\n case Frequency.Fortnight:\n newValue = newValue / 26;\n break;\n case Frequency.Month:\n newValue = newValue / 12;\n break;\n default:\n break;\n }\n return newValue;\n }\n\n getSeniorDiscountAmount(freq: Frequency, routine: boolean): number {\n if (this.seniorDiscountAmount <= 0 && this.seniorDiscountAmountRoutineCare <= 0) {\n return 0;\n }\n let amountDiscount = this.seniorDiscountAmount;\n if (routine) {\n amountDiscount = this.seniorDiscountAmountRoutineCare;\n }\n return this.convertPriceToFrequency(amountDiscount, freq);\n }\n\n getMultipetDiscount(freq: Frequency, routine: boolean): number {\n if (this.multiPetDiscount <= 0 && this.multiPetDiscountRoutineCare <= 0) {\n return 0;\n }\n let amountDiscount = this.multiPetDiscount;\n if (routine) {\n amountDiscount = this.multiPetDiscountRoutineCare;\n }\n return this.convertPriceToFrequency(amountDiscount, freq);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseService } from './base.service';\n\nimport 'rxjs/add/operator/toPromise';\n\nimport { Vet } from '../model/vet';\n\n@Injectable()\nexport class VetsService extends BaseService {\n\n constructor(private http: HttpClient) {\n super();\n }\n\n getVets(searchText: string): Promise {\n let url = this.baseUrl + 'api/Petsure/GetVetList/' + searchText;\n return this.http.get<{ServiceProviderNumber: string, ServiceProvider: string}[]>(url)\n .toPromise()\n .then((response: {ServiceProviderNumber: string, ServiceProvider: string}[]) => {\n const vets: Vet[] = [];\n response.forEach(x => {\n vets.push(new Vet(x.ServiceProviderNumber, x.ServiceProvider));\n })\n return vets;\n })\n .catch(this.handleError);\n }\n\n\n\n private handleError(error: any): Promise {\n return Promise.reject(error.message || error);\n }\n}\n","/**\n * Created by sdolier on 7/10/2016.\n */\n\nexport enum State {\n ACT = 1,\n NSW = 2,\n VIC = 3,\n QLD = 4,\n TAS = 5,\n SA = 6,\n WA = 7,\n NT = 8\n}\n","import { Component, EventEmitter, OnInit, Input, Output } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n\nimport { Pet } from '../model/pet';\nimport { Vet } from '../model/vet';\nimport { User } from '../model/user';\nimport { Cover } from '../model/cover';\nimport { Breed } from '../model/breed';\nimport { Loading } from '../model/loading';\nimport { Gender } from '../model/gender.enum';\nimport { Insurance } from '../model/insurance';\nimport { Desexed } from '../model/desexed.enum';\nimport { Species } from '../model/species.enum';\nimport { BrandsEnum } from '../model/brands.enum';\nimport { Frequency } from '../model/frequency.enum';\n\nimport { PremiumService } from '../services/premium.service';\nimport { BreedsService } from '../services/breeds.service';\nimport { VetsService } from '../services/vets.service';\n\n//User story - 31124 - Choosi PDDO Pet STP\nimport { PDDOSelectedDetails } from '../model/pddo-selected-details';\nimport { PDDOService } from '../services/pddo.service';\nimport { PremiumsHelper } from '../helpers/premiums.helper';\n\n\n@Component({\n selector: '[pet-form]',\n templateUrl: 'pet-form.component.html',\n providers: [ PremiumService, PDDOService ]\n})\n\nexport class PetFormComponent implements OnInit {\n\n GENDER = Gender;\n SPECIES = Species;\n DESEXED = Desexed;\n FREQUENCY = Frequency;\n BRANDS = BrandsEnum;\n\n @Input('pet') pet: Pet;\n @Input('user') user: User;\n @Input('pets') pets: Pet[];\n @Input('cover') cover: Cover;\n @Input('pet-covers') coverList: Insurance[];\n @Input('id') id: number;\n @Input('frequency') frequency: Frequency;\n @Input('breedsService') breedsService: BreedsService;\n @Input('vetsService') vetsService: VetsService;\n @Input('submitted') submitted: boolean;\n @Input('loading') loading: Loading;\n @Input('loadingRoute') loadingRoute: boolean;\n\n petNb: number;\n @Input('pet-nb')\n set petNbParent(petNb: number) {\n if (this.petNb > petNb) {\n this.updateInsurancesPricing(false);\n }\n this.petNb = petNb;\n }\n\n coverStartDate: Date;\n @Input('cover-start-date')\n set coverStartDateParent(coverStartDate: Date) {\n this.coverStartDate = coverStartDate;\n }\n\n coverStartDateChangeAge: boolean = false;\n @Input('cover-start-date-change-age')\n set coverStartDateChangeAgeParent(coverStartDateChangeAge: boolean) {\n if (this.coverStartDateChangeAge !== coverStartDateChangeAge) {\n this.coverStartDateChangeAge = coverStartDateChangeAge;\n if (coverStartDateChangeAge === false ||\n (this.pet.getAge() !== this.pet.getAge(this.coverStartDate))\n ) {\n this.updateInsurancesPricing(true);\n }\n }\n }\n\n @Output() onRemove = new EventEmitter();\n @Output() changeFreq = new EventEmitter();\n @Output() onRoute = new EventEmitter();\n\n petAgeControl: boolean = false;\n vetName = '';\n\n breedName: string = '';\n breedDataSource: Array;\n breedTypeaheadLoading: boolean = false;\n breedTypeaheadNoResults: boolean = false;\n\n dataSource: Observable;\n typeaheadLoading: boolean = false;\n typeaheadNoResults: boolean = false;\n petCoverList: Insurance[] = [];\n\n processRemove: boolean = false;\n processingPrice: boolean = false;\n\n quoteDetailsId: number = null;\n\n blankCover: Insurance = Insurance.getBlank();\n insurancesDisplayed: Insurance[] = [];\n\n selectDisabled: boolean = true;\n isGuideDogInsurance: boolean = true;\n\n timeoutProcess: any = null;\n\n selectedExcess: number = 0;\n\n //User story - 31124 - Choosi PDDO Pet STP\n //PDDO lightbox - validation\n pddoSelectedDetails: PDDOSelectedDetails = PDDOSelectedDetails.getBlank();\n showPDDOQuestions: boolean = false;\n\n public constructor(\n private premiumService: PremiumService,\n private pddoService: PDDOService\n ) {\n this.breedTypeaheadInit();\n this.dataSource = Observable\n .create((observer: any) => { observer.next(this.vetName); })\n .mergeMap((token: string) => this.getVetAsObservable(token));\n }\n\n ngOnInit(): void {\n this.loadingRoute = false;\n this.vetName = this.pet.vet.vet;\n for (let cover of this.coverList) {\n if (this.pet.cover.quoteDetailsId !== null && this.pet.cover.coverName === cover.coverName) {\n this.petCoverList.push(this.pet.cover);\n } else {\n this.petCoverList.push(Insurance.getCopy(cover));\n }\n }\n if (this.petCoverList.length > 0) {\n this.isGuideDogInsurance = this.petCoverList[0].brandId === this.BRANDS.GuideDogs;\n }\n if (this.pet.cover.quoteDetailsId !== null || this.pet.cover.productBenefitId !== null) {\n this.selectedExcess = this.pet.cover.excessSelected;\n this.blankCover.excessSelected = this.pet.cover.excessSelected;\n this.quoteDetailsId = this.pet.cover.quoteDetailsId;\n this.blankCover.quoteDetailsId = this.pet.cover.quoteDetailsId;\n this.updateRoutineCareSelect(this.pet.cover.routineCareSelected);\n this.selectDisabled = false;\n\n //User story - 31124 - Choosi PDDO Pet STP\n // this.pet.isFirstTermsAccepted = true;\n //this.pet.isSecondTermsAccepted = true;\n //this.pet.isDDOTermsAccepted=true\n this.showPDDOQuestions = true;\n } else {\n this.blankCover.routineCareSelected = this.pet.cover.routineCareSelected;\n this.pet.cover = this.blankCover;\n \n //User story - 31124 - Choosi PDDO Pet STP\n // this.pet.isFirstTermsAccepted = false;\n //this.pet.isSecondTermsAccepted = false;\n this.showPDDOQuestions = false;\n }\n this.updateInsurancesPricing(false);\n this.getBreeds();\n this.updatePetAgeControl();\n }\n\n updateInsuranceDisplayed() {\n this.insurancesDisplayed = this.petCoverList;\n }\n\n updateSpecies(species: Species) {\n if (species !== this.pet.petType) {\n this.pet.petType = species;\n this.pet.isGuideDog = false;\n this.pet.microchipNumber = '';\n this.pet.breed = Breed.getBlank();\n this.getBreeds();\n this.checkAndUpdatePricing();\n }\n }\n\n checkAndUpdatePricing() {\n if (this.timeoutProcess !== null) {\n clearTimeout(this.timeoutProcess);\n this.timeoutProcess = null;\n }\n this.timeoutProcess = setTimeout(\n () => {\n let quoteDetailsId: number = this.pet.cover.quoteDetailsId;\n this.pet.cover = this.blankCover;\n\n //User story - 31124 - Choosi PDDO Pet STP\n //this.pet.isFirstTermsAccepted = false;\n //this.pet.isSecondTermsAccepted = false;\n this.pet.isDDOTermsAccepted=false;\n this.showPDDOQuestions = false;\n\n if (quoteDetailsId !== null && this.blankCover.quoteDetailsId === null) {\n this.blankCover.quoteDetailsId = quoteDetailsId;\n this.pet.cover.quoteDetailsId = quoteDetailsId;\n }\n if (this.isPetFullAndUpdated()) {\n this.updateInsurancesPricing(true);\n } else {\n this.selectDisabled = true;\n }\n this.timeoutProcess = null;\n \n },\n 500\n );\n }\n\n updatePetAgeControl(): void {\n if (this.pet.isPropertyValid('bornMonth') && this.pet.isPropertyValid('bornYear')) {\n this.petAgeControl = this.pet.getMonthsOld() === 2;\n }\n }\n\n isPetFullAndUpdated(): boolean {\n if (this.pet.petType !== null\n && this.pet.breed !== null\n && this.pet.breed.breedCode !== ''\n && this.pet.bornMonth !== null\n && this.pet.bornYear !== null\n && this.pet.name !== null\n && this.pet.name !== ''\n && (this.pet.bornMonth + '').match(/([1-9]|[1][0-2]|0[1-9])/i)\n && (this.pet.bornYear + '').match(/(19[0-9]{2}|20[0-2][0-9])/i)\n ) {\n return this.pet.validate();\n }\n return false;\n }\n\n changeBreedTypeaheadLoading(e: boolean): void {\n this.pet.breed = Breed.getBlank();\n this.breedTypeaheadLoading = e;\n }\n\n changeBreedTypeaheadNoResults(e: boolean): void {\n this.breedTypeaheadNoResults = e;\n }\n\n breedTypeaheadOnSelect(e: any): void {\n this.pet.breed = e.item;\n }\n\n breedTypeaheadInit(): void {\n this.breedName = (this.pet && this.pet.breed !== null)\n ? this.pet.breed.breed\n : '';\n }\n\n resetPetBreed() {\n this.pet.breed = Breed.getBlank();\n }\n\n getVetAsObservable(token: string): Promise {\n return this.vetsService\n .getVets(token)\n .then(\n data => {\n if (data.length === 0) {\n return Promise.resolve([new Vet('', 'Unknown')]);\n } else {\n return data;\n }\n },\n () => {\n return Promise.resolve([]);\n }\n );\n }\n\n changeTypeaheadLoading(e: boolean): void {\n this.pet.vet = Vet.getBlank();\n this.typeaheadLoading = e;\n }\n\n changeTypeaheadNoResults(e: boolean): void {\n this.typeaheadNoResults = e;\n }\n\n typeaheadOnSelect(e: any): void {\n this.pet.vet = e.item;\n }\n\n resetPetVet() {\n this.pet.vet = Vet.getBlank();\n }\n\n getBreeds(): void {\n this.breedsService\n .getBreeds(this.pet.petType)\n .subscribe(\n data => {\n this.breedDataSource = data;\n this.breedTypeaheadInit();\n },\n error => { console.error('Error fetching breeds', error);\n })\n ;\n }\n\n get coverPrice() {\n let price = this.pet.cover.getPrice(this.frequency);\n if (price !== null) {\n return price;\n }\n return 0;\n }\n\n updateRoutineCareSelect(routine: boolean) {\n for (let insurance of this.petCoverList) {\n insurance.setRoutineCare(routine);\n }\n this.pet.cover.routineCareSelected = routine;\n\n //User story - 31124 - Choosi PDDO Pet STP\n this.pddoService\n .getPDDOSelectedDetails(this.pet.cover, this.pet.name)\n .then(\n (result) => {\n this.pddoSelectedDetails = result;\n }\n );\n }\n \n updateExcessSelect(excess: number) {\n for (let insurance of this.petCoverList) { \n insurance.setExcess(excess);\n }\n this.pet.cover.excessSelected = excess;\n this.selectedExcess = excess;\n this.updateInsurancesPricing(false);\n\n //User story - 31124 - Choosi PDDO Pet STP\n this.pddoService\n .getPDDOSelectedDetails(this.pet.cover, this.pet.name)\n .then(\n (result) => {\n this.pddoSelectedDetails = result;\n }\n );\n }\n\n handleCoverChange(cover: Insurance) {\n let prevQuoteDetailId = -1;\n if(this.pet.cover.quoteDetailsId != null) {\n prevQuoteDetailId = this.pet.cover.quoteDetailsId;\n }\n\n this.pet.cover = cover;\n this.pet.cover.excessSelected = cover.excessDefault; \n\n if(prevQuoteDetailId != -1) {\n this.pet.cover.quoteDetailsId = prevQuoteDetailId;\n }\n \n this.setPDDOTermsAccepted();\n }\n\n updateInsurancesPricing(setExcessToDefault: boolean = false) {\n \n this.selectDisabled = true;\n if (this.quoteDetailsId === null && this.pet.cover.quoteDetailsId !== null) {\n this.quoteDetailsId = this.pet.cover.quoteDetailsId;\n }\n if (!this.processingPrice && this.pet.name && this.pet.validate()) {\n this.processingPrice = true;\n let selectedCover: Insurance = this.petCoverList[0];\n \n this.premiumService\n .getPremiums(this.user, this.pet, this.pets, this.petCoverList, selectedCover, this.cover)\n .then(\n (insurances) => {\n this.petCoverList = insurances;\n for (let i = 0; i < this.petCoverList.length; i++) {\n \n this.petCoverList[i].setRoutineCare(this.pet.cover.routineCareSelected);\n this.petCoverList[i].setExcess(this.selectedExcess);\n\n if (this.quoteDetailsId !== null) {\n this.petCoverList[i].quoteDetailsId = this.quoteDetailsId;\n }\n if (this.pet.cover.productBenefitId === this.petCoverList[i].productBenefitId) {\n this.pet.cover = this.petCoverList[i];\n }\n \n this.pet.cover.excessSelected = this.selectedExcess;\n }\n\n this.premiumService\n .getPremiums(this.user, this.pet, this.pets, this.petCoverList, selectedCover, this.cover)\n .then(\n (insurances) => {\n this.petCoverList = insurances;\n for (let i = 0; i < this.petCoverList.length; i++) {\n \n this.petCoverList[i].setRoutineCare(this.pet.cover.routineCareSelected);\n \n if (setExcessToDefault)\n {\n let excessDefault: number = PremiumsHelper\n .getDefaultExcess(this.petCoverList[i].brandId, this.petCoverList[i].productBenefitId);\n\n this.petCoverList[i].setExcess(excessDefault);\n this.petCoverList[i].excessDefault = excessDefault;\n this.petCoverList[i].excessSelected = excessDefault;\n this.pet.cover.excessSelected = excessDefault;\n this.pet.cover.excessDefault = excessDefault;\n this.selectedExcess = excessDefault;\n }\n else {\n this.petCoverList[i].setExcess(this.selectedExcess);\n }\n if (this.quoteDetailsId !== null) {\n this.petCoverList[i].quoteDetailsId = this.quoteDetailsId;\n }\n if (this.pet.cover.productBenefitId === this.petCoverList[i].productBenefitId) {\n this.pet.cover = this.petCoverList[i];\n } \n }\n this.processingPrice = false; \n this.updateInsuranceDisplayed();\n this.selectDisabled = false;\n },\n (error) => {\n console.error(error);\n this.processingPrice = false;\n }\n );\n \n },\n (error) => {\n console.error(error);\n this.processingPrice = false;\n }\n );\n }\n }\n\n \n\n changeFrequency() {\n this.changeFreq.emit(this.frequency);\n }\n\n updateHasVet(hasVet: boolean) {\n this.pet.hasVet = hasVet;\n if (!hasVet) {\n this.pet.vet = Vet.getBlank();\n this.vetName = '';\n }\n }\n\n remove(event: any = null) {\n if (!this.processRemove) {\n this.processRemove = true;\n event.stopPropagation();\n this.onRemove.emit(this.id);\n setTimeout(() => { this.processRemove = false; }, 500);\n }\n }\n\n goToRoute(route: string) {\n this.onRoute.emit({ route: route, index: this.id });\n }\n\n get diagnostic() {\n return JSON.stringify({\n 'frequency': Frequency[this.frequency],\n // 'pet': this.pet,\n 'pet.cover': this.pet.cover,\n 'petCoverList': this.petCoverList\n });\n }\n\n\n //User story - 31124 - Choosi PDDO Pet STP\n setPDDOTermsAccepted() {\n if (this.pet.cover.id == 0)\n {\n this.showPDDOQuestions = false;\n }\n else {\n this.showPDDOQuestions = true;\n }\n this.pddoService\n .getPDDOSelectedDetails(this.pet.cover, this.pet.name)\n .then(\n (result) => {\n this.pddoSelectedDetails = result;\n //this.pet.isFirstTermsAccepted = false;\n //this.pet.isSecondTermsAccepted = false;\n this.pet.isDDOTermsAccepted=false;\n }\n );\n } \n //This will handle the ddo agreement button click and validate pet \n agreeDDOTerms(isAccpted:boolean)\n { this.pet.isDDOTermsAccepted=isAccpted;\n this.pet.validate(3) \n \n } \n}\n","
\n
\n
\n

\n Pet {{id + 1}}: {{pet.name | emptyValue:'Your pet'}}\n

\n
\n
\n
\n
\n \n Details required\n
\n
\n \n\n \n\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n
\n Please enter your pet’s name\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n
\n \n
\n Please enter your pet's microchip number\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n
\n \n
\n \n
\n
\n No Results Found\n
\n
\n Please choose your pet's breed\n
\n
\n
\n \n \n \n
\n
\n
\n \n
\n
\n
\n \n
\n Please enter a month\n
\n
\n
\n
\n \n
\n Please enter a year\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n
\n \n
\n
\n No Results Found\n
\n
\n Please enter your pet's vet practice\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n
\n \n
\n Please choose your pet cover\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n Loading plans...\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n
\n

\n {{ coverPrice | customCurrency:2:'$' }}\n
0 && user.eligibleForSenior\">\n \n Includes {{pet.cover.seniorDiscount}}% Seniors Discount\n \n
\n

\n
\n
\n
\n
\n {{FREQUENCY[frequency]}}ly\n \n
\n
    \n
  • \n Fortnightly\n
  • \n
  • \n Monthly\n
  • \n
  • \n Yearly\n
  • \n
\n
\n
\n
\n\n\n\n\n
\n \n
\n

{{pddoSelectedDetails.title}}

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

You are comfortable and agree that you can afford to pay:

\n
\n \n
    \n
  • the applicable premium, which will increase each year;
  • \n
  • the vet invoice in full and upfront before submitting a claim for eligible vet expenses unless you use GapOnly®, in which case you will only need to pay the gap upfront;\n \n \n \n \n

    The ‘gap’ means the difference between the vet’s invoice for eligible expenses and the claim benefit calculated under the policy terms and conditions, if any.

    \n
    \n \n
  • \n
  • any vet expenses above the accepted claim amount. This includes the per condition excess (if any) and any amount above the benefit percentage, annual benefit limit and any applicable sub limits that may apply for some conditions, treatments or benefits as outlined in the table.
  • \n
\n \n \n
\n \n

\n Lastly, you acknowledge that this product does not provide cover for chronic pre-existing conditions or for general exclusions listed in the PDS\n \n \n \n \n Pre-Existing Conditions

\n A pre-existing condition is:
\n A condition that existed or occurred prior to the commencement date of your first policy period or within any applicable waiting period.
\n A condition that you or your vet were aware of, or a reasonable person in your circumstances would have been aware of.
\n This is irrespective of whether the underlying or causative condition was diagnosed at the time.
\n Whether it is a pre-existing condition will depend on its nature and experience. If your pet has a temporary condition that has not existed, occurred or shown noticeable signs, symptoms or an abnormality in the 18-month period immediately prior to your claim treatment date, it will no longer be excluded from cover as a pre-existing condition. Chronic Conditions and several other specified Conditions that are pre-existing conditions cannot fall within this category. For more information please refer to the relevant PDS.\n
\n

\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n {{pddoSelectedDetails.errorMessage}}\n
\n
\n
\n
\n
\n
\n
\n
\n
","import { Component, OnInit, DoCheck, ChangeDetectorRef } from '@angular/core';\nimport { Router, ActivatedRoute, NavigationExtras } from '@angular/router';\nimport { LocationStrategy } from '@angular/common';\nimport { BehaviorSubject, Observable, Observer, of, noop, from } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport { CONFIGURATION } from '../environments/environment';\n\nimport { Pet } from '../model/pet';\nimport { User } from '../model/user';\nimport { Cover } from '../model/cover';\nimport { Theme } from '../model/theme';\nimport { Loading } from '../model/loading';\nimport { Payment } from '../model/payment';\nimport { Address } from '../model/address';\nimport { State } from '../model/state.enum';\nimport { Gender } from '../model/gender.enum';\nimport { Insurance } from '../model/insurance';\nimport { Species } from '../model/species.enum';\nimport { BrandsEnum } from '../model/brands.enum';\nimport { Frequency } from '../model/frequency.enum';\nimport { PaymentType } from '../model/payment-type.enum';\nimport { InsuranceCovers } from '../model/insurance-covers';\n\nimport { SubscriptionService } from '../services/subscription.service';\nimport { LocationService } from '../services/location.service';\nimport { PaymentService } from '../services/payment.service';\nimport { PromotionService } from '../services/promotion.service';\nimport { ClientService } from '../services/client.service';\nimport { BreedsService } from '../services/breeds.service';\nimport { QuoteService } from '../services/quote.service';\nimport { ThemeService } from '../services/theme.service';\nimport { VetsService } from '../services/vets.service';\nimport { ApplicationService } from '../services/application.service';\nimport { PremiumService } from '../services/premium.service';\n\nimport { FileService } from '../services/file.service';\n\nimport { ToolsMethods } from '../shared/tools.methods';\nimport { CustomCurrencyPipe } from '../shared/tools.pipe';\nimport { ExtendedAuthToken } from '../model/extended-auth-token';\n\nimport { StringHelper } from '../helpers/string.helpers';\nimport { PremiumCoverDateResponse } from '../model/premiumCoverDateResponse';\nimport { PremiumCoverDateRequest } from '../model/premiumCoverDateRequest';\n\n@Component({\n selector: 'buy',\n templateUrl: 'buy.component.html',\n providers: [BreedsService, VetsService, PaymentService, PromotionService, ClientService, LocationService]\n})\n\nexport class BuyComponent implements DoCheck, OnInit {\n\n PAYMENTTYPE = PaymentType;\n FREQUENCY = Frequency;\n SPECIES = Species;\n GENDER = Gender;\n STATES = State;\n EMAIL_GREENSTONE: string = 'noemail@greenstone.com.au';\n\n paymentGatewaySubmitMethod: string = CONFIGURATION.paymentSubmitMode;\n\n // model\n pet: Pet;\n pets: Pet[] = [];\n user: User;\n theme: Theme;\n cover: Cover;\n loading: Loading;\n insurance: Insurance;\n payment: Payment = Payment.getBlank();\n bearerToken: string;\n token: ExtendedAuthToken;\n actionUrl: String;\n paymentGatewayUrl: string;\n PaymentGatewayJSFile: string;\n environment: string;\n validatePaymentForm: boolean = false;\n\n //user Address\n addressDataSource: Array;\n addressTypeaheadLoading: boolean = false;\n addressTypeaheadNoResults: boolean = false;\n isAddressSelected: boolean = true;\n manualAddress = false;\n auPostToken: string = '';\n\n // cover list with price and id\n petCoverList: Insurance[] = [];\n\n\n coverDateList: Date[] = [];\n premiumDateList: Date[] = [];\n\n publicHolidayList: Date[] = [];\n\n suburbList: string[] = [];\n\n\n\n insuranceCovers: InsuranceCovers;\n subscriptionInsuranceCovers: BehaviorSubject;\n\n // subscriptions\n subscriptionPet: BehaviorSubject;\n subscriptionPets: BehaviorSubject;\n subscriptionUser: BehaviorSubject;\n subscriptionTheme: BehaviorSubject;\n subscriptionCover: BehaviorSubject;\n subscriptionLoading: BehaviorSubject;\n subscriptionInsurance: BehaviorSubject;\n subscriptionPetCover: BehaviorSubject;\n\n breeds;\n submitted;\n\n removePetPopup: number = -1;\n removePetPopupEnabled: boolean = false;\n\n topDetailsVisible = false;\n directDebit: boolean = true;\n globalError: boolean = false;\n processRunning: boolean = false;\n\n // validation\n aboutPetSubmit: boolean = false;\n aboutPetValid: boolean = null;\n\n aboutYouSubmit: boolean = false;\n aboutYouValid: boolean = null;\n\n aboutContactDetailsSubmit: boolean = false;\n aboutContactDetailsValid: boolean = null;\n\n petCoverSubmit: boolean = false;\n petCoverValid: boolean = null;\n\n declarationSubmit: boolean = false;\n declarationValid: boolean = null;\n\n paymentSubmit: boolean = false;\n paymentValid: boolean = null;\n\n productQuestionTermsValid: boolean = null;\n oldCoverStartDate: Date;\n\n nowDate = new Date();\n\n disclaimerText = '';\n\n petAgeChanged: boolean = false;\n petNameAgeChanged: string = '';\n moreThanOnePetAgeChanged: boolean = false;\n\n submitApplicationSaveQuoteFinish: boolean = false;\n submitApplicationSaveClientFinish: boolean = false;\n submitApplicationGetPaymentTokenFinish: boolean = false;\n\n savingPets: boolean = false;\n\n loadingRoute: boolean = false;\n premiumCoverDateResponse: PremiumCoverDateResponse\n updatingCoverDates: boolean = false;\n isAnyPetCoverDateUpdateError: boolean = false;\n enablePetCoverNextButton: boolean = true;\n message: string = '';\n\n addressSearch?: string;\n addressSuggestions$?: Observable;\n errorMessage?: string;\n hasFreeMonthOffer: boolean = false;\n isProdEnv: boolean = true; //set false for local debugging diagnostic trace #117737\n\n constructor(\n private subscriptionService: SubscriptionService,\n private locationService: LocationService,\n private paymentService: PaymentService,\n private promotionService: PromotionService,\n private breedsService: BreedsService,\n private clientService: ClientService,\n private quoteService: QuoteService,\n private themeService: ThemeService,\n private vetsService: VetsService,\n private location: LocationStrategy,\n private route: ActivatedRoute,\n private router: Router,\n private ref: ChangeDetectorRef,\n private applicationService: ApplicationService,\n private premiumService: PremiumService,\n private fileService: FileService\n ) {\n this.subscriptionLoading = subscriptionService.getSubscriptions('loading');\n this.subscriptionLoading.subscribe(\n loading => {\n this.loading = loading;\n }\n );\n\n this.subscriptionTheme = subscriptionService.getSubscriptions('theme');\n this.subscriptionTheme.subscribe(\n theme => {\n this.theme = theme;\n }\n );\n\n this.subscriptionPet = subscriptionService.getSubscriptions('pet');\n this.subscriptionPet.subscribe(\n pet => {\n this.pet = pet;\n }\n );\n\n this.subscriptionPets = subscriptionService.getSubscriptions('pets');\n this.subscriptionPets.subscribe(\n pets => {\n this.pets = pets;\n }\n );\n\n\n\n this.subscriptionInsurance = subscriptionService.getSubscriptions('insurance');\n this.subscriptionInsurance.subscribe(\n insurance => {\n this.insurance = insurance;\n }\n );\n\n this.subscriptionUser = subscriptionService.getSubscriptions('user');\n this.subscriptionUser.subscribe(\n user => {\n this.user = user;\n }\n );\n\n this.subscriptionCover = subscriptionService.getSubscriptions('cover');\n this.subscriptionCover.subscribe(\n cover => {\n this.cover = cover;\n }\n );\n\n this.subscriptionPetCover = subscriptionService.getSubscriptions('pet-covers');\n this.subscriptionPetCover.subscribe(\n coverList => {\n this.petCoverList = coverList;\n }\n );\n this.subscriptionInsuranceCovers = subscriptionService.getSubscriptions('insurance-covers');\n this.subscriptionInsuranceCovers.subscribe(\n insuranceCovers => {\n this.insuranceCovers = insuranceCovers;\n }\n );\n\n }\n\n ngOnInit(): void {\n this.goTo('app-header');\n if (this.loading.getError('paymentProcessError') !== '') {\n ToolsMethods.simulateClickOn('#payment-details-panel .panel-title');\n setTimeout(\n () => {\n this.validatePayment();\n },\n 1500\n );\n }\n this.locationService\n .getPublicHoliday(this.user.address.state)\n .then(\n (publicHolidays) => {\n this.publicHolidayList = publicHolidays;\n this.initDates();\n }\n );\n this.locationService\n .getSuburbs(this.user.address.postcode)\n .then(\n (suburbs) => {\n this.suburbList = suburbs;\n }\n );\n this.disclaimerText = this.themeService.getDisclaimer(this.theme.id);\n this.updateDeliveryMethod();\n this.updateUserPromotion();\n\n this.paymentService.getAuthToken()\n .then(\n (response) => {\n this.token = response;\n this.bearerToken = this.token.access_token;\n this.actionUrl = this.thankyouUrl();\n this.paymentGatewayUrl = this.token.PaymentGatewayUrl;\n this.PaymentGatewayJSFile = this.token.PaymentGatewayJSFile;\n this.environment = this.token.Environment;\n\n this.AddPaymentGatewayScript();\n // console.log(\"bearerToken: \" + this.bearerToken);\n // console.log(\"actionUrl: \" + this.actionUrl);\n // console.log(\"paymentGatewayUrl: \" + this.paymentGatewayUrl);\n // console.log(\"PaymentGatewayJSFile: \" + this.PaymentGatewayJSFile);\n // console.log(\"environment: \" + this.environment);\n\n }\n );\n\n this.addressSuggestions$ = new Observable((observer: Observer) => {\n observer.next(this.addressSearch);\n }).pipe(\n switchMap((query: string) => {\n if (this.auPostToken.length <= 0) {\n this.locationService.getAuPostToken()\n .then(result => {\n this.auPostToken = result;\n });\n }\n if (query && this.auPostToken.length > 0) {\n return from(\n this.locationService.findAllAddresses(this.user.address.postcode, encodeURIComponent(this.user.address.address), this.auPostToken))\n .pipe(\n map((data: string[]) => data || []),\n tap(() => noop, err => {\n // in case of http error\n console.error(err && err.message || 'Something goes wrong');\n })\n );\n }\n\n return of([]);\n })\n );\n }\n\n AddPaymentGatewayScript() {\n let accountType: string = \"CC\";\n if (this.payment.type === PaymentType.CARD) {\n accountType = \"CC\";\n }\n else {\n accountType = \"DD\";\n }\n\n this.fileService.renderLoadScript(accountType, this.user.id.toString(), this.cover.quoteId.toString());\n }\n\n SelectPaymentType(typeOfPayment: PaymentType) {\n this.payment.selectPaymentType(typeOfPayment);\n this.AddPaymentGatewayScript();\n this.fileService.renderOnPaymentTypeChange();\n }\n\n\n ngDoCheck() {\n if (this.oldCoverStartDate !== this.cover.coverStartDate) {\n this.updatePremiumStartDate();\n this.updatePetCover();\n this.oldCoverStartDate = this.cover.coverStartDate;\n }\n }\n\n get totalPrice(): number {\n let price: number = 0;\n for (let pet of this.pets) {\n if (pet.cover !== null) {\n price += pet.cover.getPrice(this.cover.frequency);\n }\n }\n return price;\n }\n\n get multiPetDiscount(): number {\n let discount: number = 0;\n let multiPetDiscountCount: number = this.pets[0].cover.multiPetDiscountCount;\n if (multiPetDiscountCount > 0 && multiPetDiscountCount <= this.pets.length) {\n for (let i = (multiPetDiscountCount - 1); i < this.pets.length; i++) {\n if (this.pets[i].cover !== null) {\n discount += this.pets[i].cover.getMultipetDiscount(this.cover.frequency);\n }\n }\n }\n return discount;\n }\n\n get seniorPetDiscount(): boolean {\n if (this.user.eligibleForSenior) {\n for (let i = 0; i < this.pets.length; i++) {\n if (this.pets[i].cover.getSeniorDiscountAmount(this.cover.frequency) > 0) {\n return true;\n }\n }\n }\n return false;\n }\n\n get displayPromotionTitle(): boolean {\n if (this.user.promotion === null || this.user.promotion.petsurePromotionId <= 0) {\n return false;\n }\n if (this.pets === null || this.pets.length <= 0 || this.pets[0].cover === null) {\n return false;\n }\n\n return this.pets[0].cover.petSurePartnerCode === this.user.promotion.partnerCode;\n }\n\n showPromotionTitle: boolean = false;\n\n updateUserPromotion(): void {\n this.applicationService\n .getApplication(this.cover.token)\n .then(\n (result) => {\n if (this.insurance.insurancePromotion !== null && this.insurance.insurancePromotion.discountCode.toString().trim() !== \"\") {\n this.showPromotionTitle = true;\n this.hasFreeMonthOffer = (this.insurance.petSurePartnerCode == \"RS456\" || this.insurance.petSurePartnerCode == \"GU456\") && this.user.promotion.promoCode == \"1CFREEMONTH\";\n if (result.user.promotion.promoCode != null && result.user.promotion.promoCode.toString().trim() != \"\") {\n this.promotionService.getPromotion(result.user.promotion.promoCode, this.theme.id)\n .then(\n (results) => {\n if (results.length > 0) {\n this.user.promotion.offerTitle = results[0].offerTitle;\n this.user.promotion.termsAndConditions = results[0].termsAndConditions;\n }\n }\n ,\n (error) => {\n this.loading.setError('promotionProcessError', 'An error occurred please retry');\n\n });\n }\n }\n else {\n this.showPromotionTitle = false;\n }\n },\n (error) => {\n this.loading.setError('applicationProcessError', 'An error occurred please retry');\n }\n );\n }\n updateTitle(title: string) {\n switch (title) {\n case 'Dr':\n break;\n case 'Mr':\n this.user.gender = Gender.Male;\n break;\n default:\n this.user.gender = Gender.Female;\n }\n }\n\n updateDeliveryMethod(email: any = '') {\n if (!this.cover) {\n return;\n }\n if (!email) {\n email = this.user.email;\n }\n this.cover.eDeliveryMethod = email !== this.EMAIL_GREENSTONE;\n }\n\n updatePhoneNumber($event: any) {\n let currentPosition: number = ToolsMethods.getCaretPosition('userContactNumber');\n let currentSize: number = this.user.contactNumber.length;\n this.user.contactNumber = ToolsMethods.formatPhoneNumber($event);\n let finalSize: number = this.user.contactNumber.length;\n let diff: number = finalSize - currentSize;\n setTimeout(() => { ToolsMethods.setCaretPosition('userContactNumber', currentPosition + diff); }, 5);\n }\n\n updateNumberOnDel($event: any) {\n if ($event.keyCode === 8 || $event.keyCode === 46) {\n this.user.contactNumber = ToolsMethods.formatPhoneNumber($event.target.value);\n }\n }\n\n get maxPhoneLength(): number {\n return ToolsMethods.maxPhoneLength(this.user.contactNumber);\n }\n\n\n // ---- Address typeahead control method ----\n\n getAddress(place) {\n this.user.address.mismatch = false;\n if (!place || !place.address_components) {\n return;\n }\n let newAddress: Address = Address.getBlank();\n let placeName: string = place.name;\n newAddress.state = this.user.address.state;\n newAddress.postcode = this.user.address.postcode;\n\n place.address_components.forEach((component) => {\n component.types.forEach((type) => {\n if (type === 'locality') {\n newAddress.suburb = this.isInSuburbList(component.long_name);\n }\n if (type === 'postal_code') {\n newAddress.postcode = component.long_name;\n }\n if (type === 'route') {\n if (placeName.toLowerCase().lastIndexOf(component.short_name.toLowerCase()) >= 0\n && placeName.toLowerCase().lastIndexOf(component.long_name.toLowerCase()) === -1) {\n placeName = placeName.replace(component.short_name, component.long_name);\n }\n }\n });\n });\n newAddress.address = placeName;\n if (this.user.address.postcode !== newAddress.postcode) {\n this.user.address.address = newAddress.address;\n this.user.address.suburb = '';\n this.user.address.mismatch = true;\n this.user.address.validate(3);\n } else {\n this.user.address = newAddress;\n this.user.address.mismatch = false;\n this.user.address.validate(3);\n }\n this.ref.detectChanges();\n }\n\n isInSuburbList(suburb): string {\n for (let suburbEl of this.suburbList) {\n if (suburbEl.toLowerCase() === suburb.toLowerCase()) {\n return suburbEl;\n }\n }\n return '';\n }\n\n // **** Address typeahead control method ****\n // ---- Pet control methods ----\n\n addPet() {\n for (let i = 0; i < this.pets.length; i++) {\n this.pets[i].expanded = false;\n }\n let newId = this.pets[this.pets.length - 1].id + 1;\n let pet = Pet.getBlank(newId, Insurance.getBlank());\n pet.cover.routineCareSelected = this.insurance.routineCareSelected;\n pet.cover.excessSelected = this.insurance.excessSelected;\n pet.expanded = true;\n\n //US79543 - do not pre-populating details before anything has been selected\n pet.petType = null;\n pet.gender = null;\n pet.isDesexed = null;\n\n this.pets.push(pet);\n }\n\n onRemove(i: number) {\n this.removePetPopup = i;\n this.removePetPopupEnabled = true;\n ToolsMethods.scrollToId('app-header');\n }\n\n confirmRemovePet() {\n let petToRemove: number = this.removePetPopup;\n this.removePetQuoteDetails(petToRemove);\n this.disableRemovePetPopup();\n }\n\n disableRemovePetPopup() {\n this.removePetPopup = -1;\n this.removePetPopupEnabled = false;\n }\n\n changeFreq(frequency: Frequency) {\n this.cover.frequency = frequency;\n }\n\n goToBrandCompare(args: { route: string, index: number }) {\n if (!this.loading.activated) {\n\n //Azure 54876: When going back to compare, we must validate all pets except for the pet we are attempting to compare\n this.aboutPetValid = true;\n this.pets.forEach((pet, petIndex) => {\n if (petIndex !== args.index && !pet.validate(3)) {\n this.aboutPetValid = false;\n }\n });\n //If any pets are invalid, go to that section and return\n if (!this.aboutPetValid) {\n this.goTo('about-your-pet-panel');\n this.loading.activated = false;\n return;\n }\n\n this.loadingRoute = true;\n this.loading.activated = true;\n this.loading.loadingText = 'Loading back compare data';\n let navigationExtras: NavigationExtras = {\n queryParams: {\n 'brandId': this.insurance.brandId,\n 'petIndex': args.index\n }\n };\n this.router.navigate([args.route], navigationExtras);\n }\n }\n\n // **** Pet control methods ****\n // ---- Datepicker control methods ----\n\n initDates() {\n let checkForBorderlinePets = true;\n let initDate = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());\n this.coverDateList = this.getDateList(initDate, 14, false, checkForBorderlinePets);\n this.cover.coverStartDate = this.coverDateList[0];\n this.oldCoverStartDate = this.cover.coverStartDate;\n this.updatePremiumStartDate();\n }\n\n getDateList(initDate: Date, maximumDays: number, skipWeekends: boolean, checkForBorderlinePets: boolean): Date[] {\n let dateList = [];\n let initMonth = initDate.getMonth();\n for (let days = 0; days < maximumDays; days++) {\n let newDate = new Date(initDate.getFullYear(), initDate.getMonth(), initDate.getDate() + days);\n //only do the skip weekends logic if skipweekends is true\n if (skipWeekends) {\n if (newDate.getDay() === 6) {\n days += 2;\n if (days >= maximumDays) {\n break;\n }\n newDate.setDate(newDate.getDate() + 2);\n } else if (newDate.getDay() === 0) {\n days++;\n if (days >= maximumDays) {\n break;\n }\n newDate.setDate(newDate.getDate() + 1);\n }\n }\n //if skipweekends is true we also skip public holidays\n //if checkForBorderlinePets is true we need to check each pet for the following\n // -will they turn 9 years old between now and the prospective start date, applicable to all brands\n // -will they turn 16 years old between now and the prospective start date, applicable to all brands except guide dogs\n //if there are any borderline pets as above, only add the prospective start date if it falls within the current month\n if (!this.isPublicHoliday(newDate) || skipWeekends) {\n let isBorderlinePet = false;\n if (checkForBorderlinePets) {\n isBorderlinePet = !this.pets.every(c => !c.willHaveYearBirthdayBeforeOrOnDate(9, newDate));\n isBorderlinePet = isBorderlinePet || ((this.insurance.brandId !== BrandsEnum.GuideDogs) && (!this.pets.every(c => !c.willHaveYearBirthdayBeforeOrOnDate(16, newDate))));\n }\n if (!isBorderlinePet || (newDate.getMonth() === initMonth))\n dateList.push(newDate);\n }\n }\n return dateList;\n }\n\n isPublicHoliday(date: Date): boolean {\n for (let holiday of this.publicHolidayList) {\n if (holiday.getDate() === date.getDate()\n && holiday.getFullYear() === date.getFullYear()\n && holiday.getMonth() === date.getMonth()\n ) {\n return true;\n }\n }\n return false;\n }\n\n updatePremiumStartDate() {\n let initDate = new Date(\n this.cover.coverStartDate.getFullYear(),\n this.cover.coverStartDate.getMonth(),\n this.cover.coverStartDate.getDate()\n );\n initDate.setDate(initDate.getDate() + 2);\n this.premiumDateList = this.getDateList(initDate, 12, true, false);\n this.cover.premiumStartDate = this.premiumDateList[0];\n }\n\n updatePetCover() {\n let ageChanged: boolean = false;\n let nbPetAgeChanged: number = 0;\n for (let pet of this.pets) {\n if (pet.getAge() !== pet.getAge(this.cover.coverStartDate)) {\n this.petNameAgeChanged = pet.name;\n ageChanged = true;\n nbPetAgeChanged++;\n }\n }\n this.moreThanOnePetAgeChanged = nbPetAgeChanged > 1;\n this.petAgeChanged = ageChanged;\n }\n\n // **** Datepicker control methods ****\n // ---- Validation methods ----\n\n checkAboutPet(): number {\n this.aboutPetValid = true;\n this.aboutPetSubmit = true;\n let id = -1;\n for (let pet of this.pets) {\n //console.log('isFirstTermsAccepted - ' + pet.isFirstTermsAccepted);\n if (!pet.validate(3)) {\n this.aboutPetValid = false;\n if (id === -1) {\n id = pet.id;\n }\n }\n }\n return id;\n }\n\n validateAboutPet(event: any = null) {\n let id = this.checkAboutPet();\n if (!this.aboutPetValid && event !== null) {\n event.stopPropagation();\n }\n if (this.savingPets) {\n event.stopPropagation();\n return;\n }\n if (id !== -1) {\n this.goTo('pet-form-header-' + id);\n } else {\n this.goTo('about-your-pet-panel');\n }\n this.saveClient(this.aboutPetValid);\n this.saveQuoteDetails(this.aboutPetValid);\n }\n\n checkAboutYou() {\n this.aboutYouValid = this.user.validate(2);\n this.aboutYouSubmit = true;\n }\n\n validateAboutYou(event: any = null) {\n this.checkAboutYou();\n if (!this.aboutYouValid && event !== null) {\n event.stopPropagation();\n }\n this.goTo('about-you-panel');\n this.saveClient(this.aboutYouValid);\n }\n\n checkAboutContactDetails() {\n this.aboutContactDetailsValid = this.user.validate(3);\n this.aboutContactDetailsSubmit = true;\n }\n\n validateAboutContactDetails(event: any = null) {\n if (!this.isAddressSelected && !this.manualAddress) {\n event.stopPropagation();\n return false;\n }\n\n this.checkAboutContactDetails();\n if (!this.aboutContactDetailsValid && event !== null) {\n event.stopPropagation();\n }\n this.goTo('contact-details-panel');\n this.saveClient(this.aboutContactDetailsValid);\n }\n\n checkPetCover() {\n this.petCoverValid = this.cover.validate(2);\n this.petCoverSubmit = true;\n }\n /**\n * This will validate the pet cover details and update the pet cover dates\n * @param event \n */\n validatePetCover(event: any = null) {\n this.message = \"Updating Premium Cover Dates...\"\n this.enablePetCoverNextButton = false;\n this.checkPetCover();\n if (!this.petCoverValid && event !== null) {\n event.stopPropagation();\n }\n // checking cover dates and quote id is valid to update the datews in the database\n if (this.cover.coverStartDate !== null && this.cover.premiumStartDate !== null && this.cover.quoteId !== 0) {\n // if the coverStartDate and premiumStartDate are same sytem should not allow to proceed further \n if (this.cover.coverStartDate == this.cover.premiumStartDate) {\n this.isAnyPetCoverDateUpdateError = true;\n this.updatingCoverDates = false;\n this.message = \"Invalid Cover Dates, Premium start date should be a least 2 days after cover start date\";\n this.enablePetCoverNextButton = true;\n }\n //if the cover dates are valid call the api to update the database\n else {\n let premiumCoverDates: PremiumCoverDateRequest = {\n coverStartDate: this.cover.coverStartDate.toDateString(),\n premiumStartDate: this.cover.premiumStartDate.toDateString(),\n petQuoteId: this.cover.quoteId\n }\n this.updatingCoverDates = true;\n this.premiumService.updatePremiumCoverDetails(this.theme.userId, premiumCoverDates)\n .then((updatedCover: PremiumCoverDateResponse) => {\n if (updatedCover == null || updatedCover == undefined) {\n this.isAnyPetCoverDateUpdateError = true;\n setTimeout(() => { this.message = \"Application has encountered an error, you will be returned to the first page shortly\"; }, 5000);// wait for 5 seconds to show the message to user \n this.router.navigate(['']);// navigate to first page if the response has any issue\n }\n else \n {\n this.premiumCoverDateResponse = updatedCover\n this.premiumCoverDateResponse.isCoverDatesSaved = true;\n this.updatingCoverDates = false;\n this.enablePetCoverNextButton = true;\n this.message = \"Invalid Cover Dates, Premium start date should be a least 2 days after cover start date\"\n ToolsMethods.simulateClickOn('#payment-details-panel .panel-title');\n\n return;\n }\n },\n error => {\n this.updatingCoverDates = false;\n this.enablePetCoverNextButton = false;\n this.isAnyPetCoverDateUpdateError = true;\n this.message = \"Application has encountered an error, you will be returned to the first page shortly\";\n setTimeout(() => {\n this.router.navigate(['']);// if any error occured system should navigate to first page. Implemented as per the requirement\n }, 5000);// \n\n }\n );\n }\n this.goTo('pet-cover-panel');\n this.saveClient(this.petCoverValid);\n }\n }\n\n checkPayment() {\n //this.paymentValid = this.payment.validate();\n this.paymentSubmit = true;\n }\n\n clientVlidatePaymentGateway() {\n let validatePaymentScript = `\n function ValidatePaymentGatewayForm(){\n document.querySelector('payment-register').validateform = true;\n }\n ValidatePaymentGatewayForm();\n `\n var validatePaymentScriptTag = document.createElement(\"script\");\n validatePaymentScriptTag.id = \"validatePaymentScriptTag\"\n validatePaymentScriptTag.innerHTML = validatePaymentScript;\n if (document.getElementById(\"validatePaymentScriptTag\")) {\n document.body.removeChild(document.getElementById(\"validatePaymentScriptTag\"));\n }\n document.body.appendChild(validatePaymentScriptTag);\n }\n\n validatePayment(event: any = null) {\n // this.validatePaymentForm = true;\n // setTimeout(() => { \n // if(this.paymentValid){ \n // this.goTo('payment-details-panel');\n // this.saveClient(this.paymentValid);\n // }\n // }, 2000);\n\n this.clientVlidatePaymentGateway();\n //this.goTo('payment-details-panel');\n\n //this.paymentValid = false;\n setTimeout(() => {\n let isPaymentValid: string = document.getElementById(\"hdnPaymentValid\")[\"value\"];\n if (isPaymentValid == \"true\") {\n this.paymentValid = true;\n this.saveClient(this.petCoverValid);\n //this.saveClient(this.paymentValid);\n }\n else {\n this.paymentValid = false;\n this.goTo('payment-details-panel');\n event.stopPropagation();\n }\n }, 100);\n event.stopPropagation();\n\n //this.checkPayment();\n // if (!this.paymentValid && event !== null) {\n // event.stopPropagation();\n // }\n // this.goTo('payment-details-panel');\n // this.saveClient(this.paymentValid);\n }\n\n validateAll() {\n this.aboutPetValid = true;\n for (let pet of this.pets) {\n if (!pet.validate(3)) {\n this.aboutPetValid = false;\n }\n }\n this.aboutYouValid = this.user.validate(2);\n this.aboutContactDetailsValid = this.user.validate(3);\n this.petCoverValid = this.cover.validate(2);\n this.declarationValid = this.cover.validate(4);\n return this.aboutPetValid\n && this.aboutYouValid\n && this.aboutContactDetailsValid\n && this.petCoverValid\n && this.paymentValid\n && this.declarationValid;\n }\n\n\n\n validateDeclaration() {\n //If the coverStartDate and premiumStartDate are same user will navigate back to pet cover panel \n if (this.cover.coverStartDate == this.cover.premiumStartDate) {\n this.isAnyPetCoverDateUpdateError = true;\n this.updatingCoverDates = false;\n this.message = \"Invalid Cover Dates, Premium start date should be a least 2 days after cover start date\";\n ToolsMethods.simulateClickOn('#pet-cover-panel .panel-title');\n return;\n }\n this.declarationValid = this.cover.validate(4);\n this.declarationSubmit = true;\n\n this.globalError = false;\n if (this.declarationSubmit) {\n if (this.validateAll()) {\n // reseting the errors\n this.processRunning = true;\n this.loading.validate();\n this.loading.activated = true;\n this.loading.loadingText = 'Processing your application';\n\n this.submitApplicationSaveQuoteFinish = false;\n this.submitApplicationSaveClientFinish = false;\n this.submitApplicationGetPaymentTokenFinish = false;\n this.saveClient()\n .then((result) => {\n if (result) {\n this.submitApplicationSaveClientFinish = true;\n this.submitApplication();\n return;\n }\n this.processRunning = false;\n this.loading.activated = false;\n this.loading.setError('applicationProcessError', 'An error occurred please retry');\n });\n this.saveQuote()\n .then((result) => {\n if (result) {\n this.submitApplicationSaveQuoteFinish = true;\n this.submitApplication();\n return;\n }\n this.processRunning = false;\n this.loading.activated = false;\n this.loading.setError('applicationProcessError', 'An error occurred please retry');\n });\n // this.paymentService\n // .getPaymentToken(this.user, this.cover, this.pets[0].cover, this.payment, this.theme)\n // .then(\n // result => {\n // this.payment = result;\n // this.submitApplicationGetPaymentTokenFinish = true;\n // this.submitApplication();\n // },\n // error => {\n // this.processRunning = false;\n // this.loading.activated = false;\n // this.loading.setError('applicationProcessError', 'An error occurred please retry');\n // }\n // );\n\n let submitPaymentScriptString: string = `document.getElementById('btn_ac_submit').click();`;\n let submitPaymentScript = document.createElement(\"script\");\n submitPaymentScript.id = \"submitPaymentScript\"\n submitPaymentScript.innerHTML = submitPaymentScriptString;\n if (document.getElementById(\"submitPaymentScript\")) {\n document.body.removeChild(document.getElementById(\"submitPaymentScript\"));\n }\n document.body.appendChild(submitPaymentScript);\n\n // setTimeout(() => {\n // this.submitApplicationGetPaymentTokenFinish = true;\n // this.submitApplication();\n // }, 200);\n } else {\n this.globalError = true;\n if (!this.aboutPetValid) {\n this.goTo('about-your-pet-panel');\n return;\n }\n if (!this.aboutYouValid) {\n this.goTo('about-you-panel');\n return;\n }\n if (!this.aboutContactDetailsValid) {\n this.goTo('contact-details-panel');\n return;\n }\n if (!this.petCoverValid) {\n this.goTo('pet-cover-panel');\n return;\n }\n if (!this.paymentValid) {\n this.goTo('payment-details-panel');\n return;\n }\n /* if (!this.productQuestionsValid) {\n this.goTo('your-declaration-panel');\n return;\n } */\n if (!this.declarationValid) {\n this.goTo('your-declaration-panel');\n return;\n }\n }\n } else {\n this.goTo('your-declaration-panel');\n }\n }\n\n checkPreviousAndGo(event: any, name: string) {\n if (this.loadingRoute) {\n event.stopPropagation();\n return;\n }\n let last: boolean = false;\n\n last = last || (name === 'about-your-pet-panel');\n this.checkAboutPet();\n let stop = !this.aboutPetValid;\n\n last = last || (name === 'about-you-panel');\n if (!last && !stop) {\n this.checkAboutYou();\n stop = !this.aboutYouValid;\n }\n\n last = last || (name === 'contact-details-panel');\n if (!last && !stop) {\n this.checkAboutContactDetails();\n stop = !this.aboutContactDetailsValid;\n }\n\n last = last || (name === 'pet-cover-panel');\n if (!last && !stop) {\n this.checkPetCover();\n stop = !this.petCoverValid;\n }\n\n last = last || (name === 'payment-details-panel');\n if (!last && !stop) {\n this.checkPayment();\n stop = !this.paymentValid;\n }\n\n if (stop || this.savingPets) {\n event.stopPropagation();\n } else {\n this.saveClient(this.aboutPetValid);\n this.saveQuoteDetails(this.aboutPetValid);\n this.goTo(name, 300);\n }\n }\n\n // **** Validation methods ****\n\n // ---- Saving methods ----\n\n saveClient(guard: boolean = true): Promise {\n if (guard) {\n return this.clientService\n .saveClient(this.theme, this.user, this.pets[0], 3)\n .then(\n () => {\n return true;\n },\n () => {\n return false;\n });\n }\n return Promise.resolve(true);\n }\n\n saveQuoteDetails(guard: boolean = true) {\n if (guard) {\n this.savingPets = true;\n let promises: Promise[] = [];\n this.pets.forEach((pet, index) => {\n promises.push(this.quoteService.saveQuoteDetails(this.user, pet, this.cover, index + 1));\n });\n Promise\n .all(promises)\n .then(() => {\n this.savingPets = false;\n });\n }\n }\n\n saveQuote(guard: boolean = true): Promise {\n if (guard) {\n return this.quoteService\n .saveQuote(this.user, this.insurance, this.pets, this.cover, this.theme, ToolsMethods.getCookie(document.cookie))\n .then(\n () => {\n return true;\n },\n () => {\n return false;\n });\n }\n return Promise.resolve(true);\n }\n\n removePetQuoteDetails(petNumber: number) {\n if (petNumber >= this.pets.length) {\n return;\n }\n if (this.pets.length > 1) {\n let petCover: Insurance = this.pets[petNumber].cover;\n if (petCover !== null && petCover.quoteDetailsId !== null && petCover.quoteDetailsId !== 0) {\n this.quoteService\n .invalidateQuoteDetail(this.cover.quoteId, petCover.quoteDetailsId)\n .then(() => {\n this.pets.splice(petNumber, 1);\n if (petNumber === 0) {\n this.pet = this.pets[0];\n this.subscriptionPet.next(this.pets[0]);\n }\n });\n } else {\n this.pets.splice(petNumber, 1);\n }\n }\n\n }\n\n // **** Saving methods ****\n\n // ---- Submit methods ----\n\n submitApplication() {\n if (this.submitApplicationSaveQuoteFinish\n && this.submitApplicationSaveClientFinish\n && this.submitApplicationGetPaymentTokenFinish) {\n this.processPayment();\n }\n }\n\n processPayment() {\n if (this.validateAll()) {\n switch (this.payment.type) {\n case PaymentType.ACCOUNT:\n setTimeout(() => { this.processAccountPayment(); }, 100);\n break;\n case PaymentType.CARD:\n setTimeout(() => { this.processCreditCardPayment(); }, 100);\n break;\n default:\n break;\n }\n }\n // todo remove\n setTimeout(() => { this.loading.activated = false; this.processRunning = false; }, 3000);\n }\n\n processAccountPayment() {\n if (document.forms.hasOwnProperty('credit-card-payment-form')) {\n document.forms['credit-card-payment-form'].submit();\n }\n }\n\n processCreditCardPayment() {\n if (document.forms.hasOwnProperty('credit-card-payment-form')) {\n document.forms['credit-card-payment-form'].submit();\n }\n }\n\n thankyouUrl(): string {\n let url = ToolsMethods.getBaseAbsoluteUrl(this.router.url, false);\n let referredToUnderWriter: boolean = this.cover.hadPriorPolicyCancelled;\n if (!referredToUnderWriter && this.insurance.brandId === BrandsEnum.GuideDogs) {\n for (let pet of this.pets) {\n if (pet.petType === this.SPECIES.CANINE && pet.isGuideDog && pet.microchipNumber.length > 0) {\n referredToUnderWriter = true;\n }\n }\n }\n if (referredToUnderWriter) {\n url += this.location.prepareExternalUrl('/thank-you-s');\n } else {\n url += this.location.prepareExternalUrl('/thank-you');\n }\n url +=\n '?TokenID=' + this.cover.token\n + '&PetCriteriaID=' + this.user.petCriteriaID\n + '&Source=' + this.theme.source\n + '&UserID=' + this.theme.userId + '&';\n return url;\n }\n\n get returnUrl(): string {\n return this.thankyouUrl();\n }\n\n // **** Submit methods ****\n\n goToRoute(route: string) {\n if (!this.loading.activated) {\n this.loading.activated = true;\n this.loading.loadingText = 'Loading back compare data';\n\n //When going back to compare, we must validate all pets\n this.aboutPetValid = true;\n for (let pet of this.pets) {\n if (!pet.validate(3)) {\n this.aboutPetValid = false;\n }\n }\n\n //If any pets are invalid, go to that section and return\n if (!this.aboutPetValid) {\n this.goTo('about-your-pet-panel');\n this.loading.activated = false;\n return;\n }\n\n this.router.navigate([route]);\n }\n }\n\n goTo(location: string, delay: number = 0) {\n if (location) {\n setTimeout(\n () => {\n ToolsMethods.scrollToId(location, 500);\n },\n delay\n );\n }\n }\n\n get disclaimerDisplay() {\n let petExcessTexts: string[] = [];\n let petNames: string[] = [];\n let dentalPrimeText: string = '';\n for (let pet of this.pets) {\n petNames.push(pet.name);\n if (pet.cover.brandId == BrandsEnum.Prime && (pet.cover.productBenefitId == 125 || pet.cover.productBenefitId == 126)) {\n dentalPrimeText = \"Where applicable, cover for dental illness begins 2 years after the commencement date of the first policy period.\";\n }\n\n if (!pet.cover || pet.cover.excessSelected <= 0) {\n continue;\n }\n petExcessTexts.push(`$${pet.cover.excessSelected} for ${pet.name}`);\n }\n let excessText: string = '';\n if (petExcessTexts && petExcessTexts.length > 0) {\n\n excessText = `You've selected an excess of ${ToolsMethods.smartJoinTexts(petExcessTexts)} which will be deducted after the \n calculation of your benefit for any eligible claim you make. `;\n }\n let petNameText: string = '';\n if (petNames && petNames.length > 0) {\n petNameText = ToolsMethods.smartJoinTexts(petNames);\n if (petNames.length > 1) {\n petNameText = petNameText + ' are';\n }\n else {\n petNameText = petNameText + ' is';\n }\n\n }\n if (this.pet.isGuideDog) {\n excessText = excessText + 'Once cover for your Registered Guide Dog has been accepted, Third Party Liability cover will commence on your policy and any claim for third party property damage will be subject to an Excess of $500.'\n }\n\n return this.disclaimerText\n .replace(/\\{\\{userName}}/gi, this.user.firstName)\n .replace(/\\{\\{insuranceName}}/gi, this.insurance.insuranceName)\n .replace(/\\{\\{totalPrice}}/gi, new CustomCurrencyPipe().transform(this.totalPrice, 2, '$'))\n .replace(/\\{\\{frequency}}/gi, this.FREQUENCY[this.cover.frequency].toLowerCase())\n .replace(/\\{\\{contactPhoneNumber}}/gi, this.theme.contactPhoneNumber)\n .replace(/\\{\\{coolingOffDays}}/gi, this.insurance.coolingOffDays + '')\n .replace(/\\{\\{brandPhone}}/gi, this.insurance.brandPhone)\n .replace(/\\{\\{petName}}/gi, petNameText)\n .replace(/\\{\\{dentalPrimeText}}/gi, dentalPrimeText)\n .replace(/\\{\\{excessText}}/gi, excessText);\n }\n\n get diagnostic() {\n return JSON.stringify(\n {\n 'frequency': Frequency[this.cover.frequency],\n 'cover': this.cover,\n 'insurance': this.insurance,\n 'pets': this.pets,\n 'user': this.user,\n 'payment': this.payment,\n 'submitted': this.submitted\n },\n undefined,\n 4\n );\n }\n\n changeAddressTypeaheadLoading(e: boolean): void {\n this.addressTypeaheadLoading = e;\n }\n\n changeAddressTypeaheadNoResults(e: boolean): void {\n this.addressTypeaheadNoResults = e;\n }\n\n addressTypeaheadOnSelect(e: any): void {\n if (this.auPostToken.length <= 0) {\n this.locationService.getAuPostToken()\n .then(result => {\n this.auPostToken = result;\n });\n }\n if (this.auPostToken.length > 0) {\n this.locationService.getAddress(encodeURIComponent(e.item), this.auPostToken).then((result) => {\n let addr: any = result;\n let address1: string = '';\n\n if (this.user.address.postcode == addr['postcode']) {\n if (addr['flatOrUnitType'] == 'U') {\n address1 = addr['flatOrUnitType'] + ' ' + addr['flatOrUnitNumber'] + '/';\n }\n if (addr['postalType'] !== '') {\n address1 = address1 + addr['postalType'] + ' ' + addr['postalNumber'];\n }\n else {\n address1 = address1 + addr['streetNumber1'];\n if (addr['streetNumber1Suffix'] !== '') {\n address1 = address1 + addr['streetNumber1Suffix'];\n }\n if (addr['streetNumber2'] != '') {\n address1 = address1 + '-' + addr['streetNumber2']\n }\n if (addr['streetNumber2Suffix'] !== '') {\n address1 = address1 + addr['streetNumber2Suffix'];\n }\n address1 = address1 + ' ' + addr['streetName'] + ' ' + addr['streetType'];\n }\n this.user.address.suburb = addr['localityName'];\n this.user.address.address = address1;\n this.isAddressSelected = true;\n }\n else {\n this.user.address.address = '';\n }\n });\n }\n }\n\n resetAddress() {\n this.user.address.address = '';\n }\n\n addressChanged(): void {\n this.isAddressSelected = false;\n if (this.user.address.address) {\n if (this.auPostToken.length <= 0) {\n this.locationService.getAuPostToken()\n .then(result => {\n this.auPostToken = result;\n });\n }\n if (this.auPostToken.length > 0) {\n this.addressSuggestions$ = from(\n this.locationService.findAllAddresses(\n this.user.address.postcode,\n encodeURIComponent(this.user.address.address), this.auPostToken\n )\n )\n }\n }\n }\n\n showManualAddress(): void {\n this.manualAddress = true;\n }\n}\n","
\n
\n
\n
\n

\n You're almost there\n

\n Applying for {{insurance.insuranceName}}\n
\n
\n
\n
\n
\n \"{{insurance.insuranceName}}\"\n
\n
\n {{pets.length}} Pet{{ (pets.length > 1)? 's' : ''}}\n
\n
\n \n
\n
\n
\n
\n Total price:\n
\n

{{ totalPrice | customCurrency:2:'$' }}

\n \n Fort\n \n \n Month\n \n \n Year\n \n
0\">\n Multi-pet discount {{ multiPetDiscount | customCurrency:2:'$' }}\n
\n
\n \n Includes 10% Seniors Discount\n \n
\n
\n
\n
\n
\n \n {{ insurance.insurancePromotion.discountName}} \n
\n \n
\n X \n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
    \n
    \n

    Pet {{i+1}}:

    \n
    \n
    \n

    {{pet.name}}

    \n
    \n
    \n
    \n
    \n Pet name: \n
    \n
    \n {{pet.name}}\n
    \n
    \n
    \n
    \n {{FREQUENCY[cover.frequency]}} premium: \n
    \n
    \n {{ pet.cover.getPrice(cover.frequency) | customCurrency:2:'$' }}\n
    \n
    \n
    \n
    \n Excess:\n
    \n
    \n {{pet.cover.excessSelected | customCurrency:2:'$'}}\n
    \n
    \n
    \n
    \n Routine care:\n
    \n
    \n {{ (pet.cover.routineCareSelected) ? 'Yes' : 'No' }}\n
    \n
    \n
    \n
    \n Species:\n
    \n
    \n {{ (pet.petType === SPECIES.FELINE) ? 'Cat' : 'Dog' }}\n
    \n
    \n \n \n \n
    \n
    \n Breed:\n
    \n
    \n {{pet.breed.breed}}\n
    \n
    \n
    \n
    \n Cover:\n
    \n
    \n {{pet.cover.insuranceName}} {{pet.cover.coverName}}\n
    \n
    \n
    \n \n
    \n
  • \n
\n
\n
\n
\n \n

\n This cover has a {{insurance.coolingOffDays}} days cooling off period\n

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

About your pet(s)

\n Please confirm your details below\n \n
\n
\n \n Completed\n
\n
\n \n Details required\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n
\n Loading plans...\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

About you

\n Please confirm your details below\n \n
\n
\n \n Completed\n
\n
\n \n Details required\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n \n
\n Please enter your first name\n
\n
\n
\n
\n
\n \n
\n \n
\n Please enter you last name\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n Please enter a day\n
\n
\n
\n
\n \n
\n Please enter a month\n
\n
\n
\n
\n \n
\n Year of birth must be between {{nowDate.getFullYear() - 112}}-{{nowDate.getFullYear() - 18}}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Your contact details

\n Please confirm your details below\n \n
\n
\n \n Completed\n
\n
\n \n Details required\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n
\n \n
\n
\n No Results Found\n \n Enter Address\n \n
\n
\n Please select the Address\n
\n
\n
\n
\n \n \n \n
\n
\n \n
\n \n
\n \n
\n Please enter Address\n
\n
\n
\n
\n\n
\n \n
\n \n
\n Please enter Suburb\n
\n
\n
\n
\n \n\n
\n \n
\n \n
\n
\n
\n
\n \n
\n \n
\n Please enter your postcode\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n \n
\n Please enter a valid Australian phone number including the area code\n
\n
\n
\n
\n\n
\n \n
\n \n
\n Please enter a valid email address\n
\n
\n
\n
\n
\n \n
\n
\n
\n By clicking 'Email' you agree to receive all insurance documentation relating\n to your {{ insurance.insuranceName }} policy electronically,\n to the nominated email address above. You may amend this to postal delivery\n at any time by calling {{ insurance.brandPhone }}.\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Your pet's cover

\n \n
\n
\n \n Completed\n
\n
\n \n Details required\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n

{{ totalPrice | customCurrency:2:'$'\n }}{{FREQUENCY[cover.frequency]}}ly

\n
Due to rounding, your first premium amount may be\n slightly different with the remaining instalments being a consistent amount.\n
\n
\n Due to the policy start date being after {{moreThanOnePetAgeChanged? 'your pets'\n : petNameAgeChanged + \"'s\"}} birthday, the premium amount has been updated.\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n \n \n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n \n \n
\n
\n Please note as part of the one month free offer your first payment date will be one month from your selected payment date.\n
\n
\n
\n
\n \n
\n
\n
\n
\n {{this.message}}\n
\n
\n
\n
\n
\n \n
\n
\n {{this.message}}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n

Payment details

\n All fields are mandatory\n \n
\n
\n \n Completed\n
\n
\n \n Details required\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n Our payment forms are secured with 256bit encryption\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Your declaration

\n \n
\n
\n \n Completed\n
\n
\n \n Details required\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n

\n \n

\n
\n
\n

\n {{loading.loadingText}}\n

\n
\n
\n
\n
\n
\n Please fill all the previous form correctly\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n

\n \n

\n
\n
\n

\n {{loading.loadingText}}\n

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

\n Are you sure that you want delete this pet ?\n

\n

\n You will lose all the information about this pet.\n

\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n\n","import { Component, OnInit, DoCheck, HostListener } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Pet } from '../model/pet';\nimport { User } from '../model/user';\nimport { Cover } from '../model/cover';\nimport { Theme } from '../model/theme';\nimport { Promotion } from '../model/promotion';\nimport { Insurance } from '../model/insurance';\nimport { Frequency } from '../model/frequency.enum';\nimport { BrandDetails } from '../model/brand-details';\nimport { InsuranceCovers } from '../model/insurance-covers'; \nimport { ProductQuestions } from '../model/productQuestions';\n\nimport { PremiumsHelper } from '../helpers/premiums.helper';\n\nimport { SubscriptionService } from '../services/subscription.service';\nimport { PromotionService } from '../services/promotion.service';\nimport { PremiumService } from '../services/premium.service';\nimport { BrandsService } from '../services/brands.service';\nimport { QuoteService } from '../services/quote.service';\n\nimport {\n SortInsurancesPipe,\n FilterShortListPipe\n} from './insurances.pipe';\n\nimport { ToolsMethods } from '../shared/tools.methods';\n\n//User story - 31124 - Choosi PDDO Pet STP\nimport { PDDOSelectedDetails } from '../model/pddo-selected-details';\nimport { PDDOService } from '../services/pddo.service';\nimport { CONFIGURATION } from 'app/environments/environment';\n\n@Component({\n selector: 'compare',\n templateUrl: 'compare.component.html',\n providers: [PremiumService, QuoteService, BrandsService, PromotionService, PDDOService]\n})\nexport class CompareComponent implements OnInit, DoCheck {\n\n FREQUENCY = Frequency;\n\n // dropdowns\n openFieldFilter = false;\n\n scrollDownBtn = true;\n scrollDownBtnCompute = false;\n\n // sorting\n sort = '';\n\n // filtering\n shortListOnly = false;\n\n // if it need to be processed like a new quote\n newQuote: boolean;\n\n // data sets\n coverFieldIdList = [];\n\n insuranceCovers: InsuranceCovers;\n subscriptionInsuranceCovers: BehaviorSubject;\n\n petCoverList: Insurance[];\n subscriptionPetCoverList: BehaviorSubject;\n\n cover: Cover;\n subscriptionCover: BehaviorSubject;\n\n productQuestions: ProductQuestions;\n subscriptionProductQuestions: BehaviorSubject;\n\n insurance: Insurance;\n subscriptionInsurance: BehaviorSubject;\n\n user: User;\n subscriptionUser: BehaviorSubject;\n\n pets: Pet[];\n subscriptionPets: BehaviorSubject;\n\n pet: Pet;\n subscriptionPet: BehaviorSubject;\n\n theme: Theme;\n subscriptionTheme: BehaviorSubject;\n\n showBrandDetails: boolean = false;\n brandDetailsLoading: boolean = false;\n brandDetails: BrandDetails = BrandDetails.getBlank();\n\n subscriptionHaveUsCallOpen: BehaviorSubject;\n\n // scroll\n scrollPosition = 0;\n maxNb = 0;\n visibleNb = 0;\n leftMargin = 0;\n maxVisible = 3;\n columnSize = 0;\n scrollSize = ToolsMethods.getScrollBarWidth();\n\n rowsSize = {};\n\n // mobile variable\n mobileFilterPanelOpen: boolean = false;\n mobilePanelOpen: string = '';\n\n // promotion\n promoCode: string = '1CFREEMONTH';\n promoIsError: boolean = false;\n promoLoading: boolean = false;\n showPromoInput: boolean = true;\n promotionApplied: boolean = false;\n promotionTACOpen: boolean = false;\n promoIsNotApplied: boolean = false;\n promotionProductsLoading: boolean = false;\n\n // excess\n excessLoading: boolean = false;\n\n shortListedInsurances: Insurance[] = [];\n\n applyLoading: boolean = false;\n loadingRoutineCare: boolean = false;\n\n //User story - 31124 - Choosi PDDO Pet STP\n //PDDO lightbox - validation\n showPDDOSelectedDetails: boolean = false;\n pddoSelectedDetailsLoading: boolean = false;\n pddoSelectedDetails: PDDOSelectedDetails = PDDOSelectedDetails.getBlank();\n isFirstTermsAccepted: boolean = false;\n isSecondTermsAccepted: boolean = false;\n btnContinueClicked: boolean;\n selectedInsurance: Insurance;\n isMobileView: boolean = false;\n mobileTop = 0;\n @HostListener('window:resize', ['$event.target'])\n onResize() {\n this.updateMaxVisible();\n }\n isProdEnv: boolean = true; //set false for local debugging diagnostic trace #117737\n\n constructor(\n private subscriptionService: SubscriptionService,\n private promotionService: PromotionService,\n private premiumService: PremiumService,\n private brandsService: BrandsService,\n private quoteService: QuoteService,\n private route: ActivatedRoute,\n private router: Router,\n private pddoService: PDDOService\n ) {\n this.subscriptionUser = subscriptionService.getSubscriptions('user');\n this.subscriptionUser.subscribe(\n user => {\n this.user = user;\n }\n );\n\n this.subscriptionPet = subscriptionService.getSubscriptions('pet');\n this.subscriptionPet.subscribe(\n pet => {\n this.pet = pet;\n }\n );\n\n this.subscriptionPets = subscriptionService.getSubscriptions('pets');\n this.subscriptionPets.subscribe(\n pets => {\n this.pets = pets;\n }\n );\n\n this.subscriptionInsurance = subscriptionService.getSubscriptions('insurance');\n this.subscriptionInsurance.subscribe(\n insurance => {\n this.insurance = insurance;\n }\n );\n\n this.subscriptionPetCoverList = subscriptionService.getSubscriptions('pet-covers');\n this.subscriptionPetCoverList.subscribe(\n coverList => {\n this.petCoverList = coverList;\n }\n );\n\n this.subscriptionCover = subscriptionService.getSubscriptions('cover');\n this.subscriptionCover.subscribe(\n cover => {\n this.cover = cover;\n }\n );\n\n this.subscriptionProductQuestions = subscriptionService.getSubscriptions('productQuestions');\n this.subscriptionProductQuestions.subscribe(\n productQuestionList => {\n this.productQuestions = productQuestionList;\n }\n );\n\n this.subscriptionInsuranceCovers = subscriptionService.getSubscriptions('insurance-covers');\n this.subscriptionInsuranceCovers.subscribe(\n insuranceCovers => {\n this.insuranceCovers = insuranceCovers;\n }\n );\n\n this.subscriptionTheme = subscriptionService.getSubscriptions('theme');\n this.subscriptionTheme.subscribe(\n theme => {\n this.theme = theme;\n }\n );\n\n this.subscriptionHaveUsCallOpen = subscriptionService.getSubscriptions('haveUsCallOpen');\n }\n\n ngOnInit(): void {\n this.updateMaxVisible();\n this.route.data.forEach((data: { premium: InsuranceCovers }) => {\n this.insuranceCovers = data.premium;\n });\n this.fillCoverFieldIdList();\n ToolsMethods.scrollToId('app-header');\n this.newQuote = true;\n this.collectPromotion(); //apply promotion by default\n this.promotionApplied = this.user.promotion.petsurePromotionId > 0;\n if (this.promotionApplied) {\n this.promotionTACOpen = false;\n }\n this.loadingRoutineCare = true;\n //User story - 31124 - Choosi PDDO Pet STP\n //PDDO lightbox - validation\n this.btnContinueClicked = false;\n }\n\n ngDoCheck(): void {\n this.updateScroll(0);\n this.recomputeRowsSize();\n }\n\n reLoadPremiums(): void {\n if (!this.insuranceCovers.coverFields) {\n return;\n }\n this.loadingRoutineCare = true;\n let products: string[] = PremiumsHelper.getProductCodes(1, this.user, this.getCurrentPet());\n let partners: string[] = PremiumsHelper.getPartnerCodes(1, this.user, this.getCurrentPet());\n let brandIdFilter: number = this.insuranceCovers.brandIdFilter;\n this.shortListedInsurances = this.insuranceCovers\n .getInsurances()\n .filter(ins => {\n return ins.shortListed;\n });\n this.premiumService\n .getAllPremiums(products, partners, this.theme.id, this.user, this.getCurrentPet(), this.insuranceCovers.coverFields)\n .then(\n (newInsuranceCovers) => {\n newInsuranceCovers.petToUpdate = this.insuranceCovers.petToUpdate;\n newInsuranceCovers.insurances = newInsuranceCovers.insurances.filter(\n (insurance: Insurance) => {\n return (brandIdFilter === null || insurance.brandId === brandIdFilter);\n }\n );\n newInsuranceCovers\n .getInsurances()\n .forEach(\n (insurance) => {\n for (let shortListedInsurance of this.shortListedInsurances) {\n if (shortListedInsurance.productBenefitId === insurance.productBenefitId) {\n insurance.shortListed = true;\n }\n }\n });\n // clear caching\n newInsuranceCovers.brandIdFilter = brandIdFilter;\n this.subscriptionInsuranceCovers.next(newInsuranceCovers);\n this.loadMorePremiums();\n this.updateScroll(0);\n this.recomputeRowsSize();\n this.promotionProductsLoading = false;\n }\n )\n .catch(\n (error) => {\n console.log('cannot load more premiums');\n console.log(error);\n }\n );\n }\n\n loadMorePremiums(): void {\n if (!this.insuranceCovers.coverFields) {\n return;\n }\n let products: string[] = PremiumsHelper.getProductCodes(2, this.user, this.getCurrentPet());\n let partners: string[] = PremiumsHelper.getPartnerCodes(2, this.user, this.getCurrentPet());\n let brandIdFilter: number = this.insuranceCovers.brandIdFilter;\n this.premiumService\n .getAllPremiums(products, partners, this.theme.id, this.user, this.getCurrentPet(), this.insuranceCovers.coverFields)\n .then(\n (additionalInsuranceCovers) => {\n additionalInsuranceCovers.petToUpdate = this.insuranceCovers.petToUpdate;\n additionalInsuranceCovers.insurances = additionalInsuranceCovers.insurances.filter(\n (insurance: Insurance) => (brandIdFilter === null || insurance.brandId === brandIdFilter)\n );\n\n this.insuranceCovers.getInsurances().forEach(\n (insurance) => {\n for (let shortListedInsurance of this.shortListedInsurances) {\n if (shortListedInsurance.productBenefitId === insurance.productBenefitId) {\n insurance.shortListed = true;\n }\n }\n if(brandIdFilter !== null || insurance.brandId !== brandIdFilter)\n additionalInsuranceCovers.insurances.push(insurance);\n });\n additionalInsuranceCovers.brandIdFilter = brandIdFilter;\n this.subscriptionInsuranceCovers.next(additionalInsuranceCovers);\n this.loadRoutineCarePremiums();\n this.recomputeRowsSize();\n })\n .catch((error) => {\n console.log('cannot load more premiums');\n console.log(error);\n });\n }\n\n updateRoutineCarePricesForProduct(insurance: Insurance) {\n // update the routine care price for all the insurances\n for (let i = 0; i < this.insuranceCovers.getInsurances().length; i++) {\n if (this.insuranceCovers.insurances[i].productBenefitId !== insurance.productBenefitId) {\n continue;\n }\n this.insuranceCovers.insurances[i]\n .mergeInsurancePricings(insurance.cloneInsurancePricings());\n this.insuranceCovers.insurances[i]\n .applyCurrentInsurancePricing();\n }\n }\n\n loadRoutineCarePremiums(): void {\n if (!this.insuranceCovers.coverFields) {\n return;\n }\n let products: string[] = PremiumsHelper.getProductCodes(3, this.user, this.getCurrentPet());\n let partners: string[] = PremiumsHelper.getPartnerCodes(3, this.user, this.getCurrentPet());\n let brandIdFilter: number = this.insuranceCovers.brandIdFilter;\n this.premiumService\n .getAllPremiums(products, partners, this.theme.id, this.user, this.getCurrentPet(), this.insuranceCovers.coverFields)\n .then(\n (additionalInsuranceCovers) => {\n additionalInsuranceCovers.getInsurances().forEach(\n (insurance) => {\n if (brandIdFilter !== null && brandIdFilter !== insurance.brandId) {\n return;\n }\n this.updateRoutineCarePricesForProduct(insurance);\n }); \n this.insuranceCovers.brandIdFilter = brandIdFilter;\n this.subscriptionInsuranceCovers.next(this.insuranceCovers);\n this.loadingRoutineCare = false;\n },\n )\n .catch((error) => {\n //console.log('cannot load more premiums');\n console.log(error);\n this.loadingRoutineCare = false;\n });\n }\n\n get sortingTypes() {\n let sortingList =\n [\n {\n 'txt': 'Lowest to highest price',\n 'val': 'price'\n },\n {\n 'txt': 'Highest to lowest price',\n 'val': '-price'\n },\n {\n 'txt': 'Brand',\n 'val': 'brand'\n }\n ];\n if (this.user.promotion.petsurePromotionId > 0) {\n sortingList.push(\n {\n 'txt': 'Offer',\n 'val': 'offer'\n }\n );\n }\n return sortingList;\n }\n\n openMobilePanel(i: number) {\n this.mobilePanelOpen = (this.mobilePanelOpen === 'mobile-panel-details-' + i) ? '' : 'mobile-panel-details-' + i;\n }\n\n /**\n * Generated the field id list and the origin list to allow\n * fields filtering\n */\n fillCoverFieldIdList() {\n this.coverFieldIdList = [];\n if (this.insuranceCovers.coverFields) {\n let tmp = [];\n this.insuranceCovers.coverFields.forEach(function(element, index, array){\n if (element.isVisible) {\n tmp.push(\n {\n 'index': index,\n 'value': element.name,\n 'activated': true\n }\n );\n }\n });\n this.coverFieldIdList = tmp;\n }\n }\n\n updateRoutineCare(routineSelected: boolean) {\n for (let i = 0; i < this.insuranceCovers.getInsurances().length; i++) {\n this.insuranceCovers.insurances[i].setRoutineCare(routineSelected);\n }\n }\n\n // ---- Position computing methods ----\n\n updateMaxVisible() {\n if (document.body.offsetWidth < 992) {\n this.maxVisible = 2;\n } else {\n this.maxVisible = 3;\n }\n }\n\n updateScroll(move: number) {\n this.visibleNb = document.getElementsByClassName('insurancesDisplayed').length;\n if (this.visibleNb > this.maxVisible) {\n this.maxNb = this.visibleNb - this.maxVisible;\n } else {\n this.maxNb = 0;\n }\n let tmp = this.scrollPosition + move;\n this.scrollPosition = (tmp < 0) ? 0 : (tmp > this.maxNb) ? this.maxNb : tmp;\n this.updatePosition(); \n }\n\n updatePosition() {\n this.updateColumnSize();\n this.leftMargin = this.scrollPosition * -this.columnSize;\n }\n\n updateColumnSize() {\n let els = document.getElementsByClassName('insurancesDisplayed');\n if (els.length) {\n let propertyName = 'offsetWidth';\n this.columnSize = els[0][propertyName];\n }\n }\n\n // **** Position computing methods ****\n\n getCurrentPet() {\n if (this.insuranceCovers.petToUpdate !== null) {\n if (this.insuranceCovers.petToUpdate < this.pets.length) {\n return this.pets[this.insuranceCovers.petToUpdate];\n }\n }\n return this.pet;\n }\n\n // ---- Submit methods ----\n\n gatherInsuranceCovers(name: string) {\n this.petCoverList = [];\n for (let insurance of this.insuranceCovers.getInsurances()) {\n if (insurance.insuranceName === name) {\n this.petCoverList.push(insurance);\n }\n }\n }\n\n setPetCover(insurance: Insurance) {\n if (this.insuranceCovers.petToUpdate !== null) {\n if (this.insuranceCovers.petToUpdate < this.pets.length) {\n let quoteDetailsId: number = null;\n if (this.pets[this.insuranceCovers.petToUpdate].cover !== null) {\n quoteDetailsId = this.pets[this.insuranceCovers.petToUpdate].cover.quoteDetailsId;\n }\n this.pets[this.insuranceCovers.petToUpdate].cover = Insurance.getCopy(insurance);\n this.pets[this.insuranceCovers.petToUpdate].cover.quoteDetailsId = quoteDetailsId;\n this.newQuote = false;\n }\n } else if (this.pets.length > 1) {\n let differentBrand = this.pets[0].cover.brandId !== insurance.brandId;\n if (differentBrand) {\n this.cover.quoteId = null;\n } else {\n this.newQuote = false;\n }\n for (let pet of this.pets) {\n let quoteDetailsId: number = null;\n if (pet.cover !== null) {\n quoteDetailsId = pet.cover.quoteDetailsId;\n }\n pet.cover = Insurance.getCopy(insurance);\n if (differentBrand) {\n pet.cover.quoteDetailsId = null;\n } else {\n pet.cover.quoteDetailsId = quoteDetailsId;\n }\n }\n } else {\n let quoteDetailsId: number = null;\n if (this.pet.cover !== null && this.pet.cover.quoteDetailsId !== null) {\n if (this.pets[0].cover.brandId !== insurance.brandId) {\n this.cover.quoteId = null;\n this.pet.cover.quoteDetailsId = null;\n } else {\n this.newQuote = false;\n quoteDetailsId = this.pet.cover.quoteDetailsId;\n }\n }\n this.pet.cover = insurance;\n this.pet.cover.quoteDetailsId = quoteDetailsId;\n this.pets = [];\n this.pets.push(this.pet);\n }\n }\n\n applyTo(insurance: Insurance): void {\n this.applyLoading = true;\n this.promoIsNotApplied = false;\n if (!this.promoIsError && !this.promotionApplied && this.promoCode !== '') {\n this.promoIsNotApplied = true;\n this.applyLoading = false;\n return;\n }\n if (insurance.validate()) {\n this.user.excessSelected = insurance.excessSelected;\n this.setPetCover(insurance);\n this.gatherInsuranceCovers(insurance.insuranceName);\n this.subscriptionPets.next(this.pets);\n this.subscriptionUser.next(this.user);\n this.subscriptionCover.next(this.cover);\n this.subscriptionInsurance.next(insurance);\n this.subscriptionPetCoverList.next(this.petCoverList);\n this.subscriptionProductQuestions.next(ProductQuestions.getFromPets(this.pets, this.insuranceCovers));\n this.subscriptionInsuranceCovers.next(this.insuranceCovers);\n this.subscriptionHaveUsCallOpen.next(false);\n this.quoteService\n .saveQuote(this.user, insurance, this.pets, this.cover, this.theme, ToolsMethods.getCookie(document.cookie), this.newQuote)\n .then(\n (response) => {\n //Populate the Pets array with the QuoteDetailIds returned from the API\n for(var index in this.pets){\n //Attempt to find a matching pet in the response where name, breed and DOB are the same\n let match = response.quoteDetails.find(o => \n o.PetName === this.pets[index].name\n && o.BreedCode === this.pets[index].breed.breedCode\n && o.PetDateOfBirth.toISOString() === this.pets[index].getDoB().toISOString());\n //Use that match to set the quoteDetailsId and Created Date\n if(match != null){\n this.pets[index].cover.quoteDetailsId = match.QuoteDetailId;\n this.pets[index].cover.createdDate = response.createdDate;\n } else{ //Throw error if no match is found\n throw new Error('No matching Pet Response found');\n }\n }\n\n this.cover.createdDate = response.createdDate;\n this.cover.quoteId = response.quoteId;\n this.cover.token = response.token;\n this.subscriptionPet.next(this.pet);\n this.subscriptionPets.next(this.pets);\n this.subscriptionCover.next(this.cover);\n this.applyLoading = false;\n this.router.navigate(['buy']);\n },\n (error) => {\n console.error('An error occurred while saving user data');\n }\n );\n }\n }\n\n // **** Submit methods ****\n\n //User story - 31124 - Choosi PDDO Pet STP\n // ---- PDDO Lightbox ----\n displayPDDOSelectedDetails(insurance: Insurance, isMobileView: boolean) {\n //35957 - Pet name not updating\n this.pet = this.getCurrentPet();\n\n if (isMobileView)\n {\n this.mobileTop = window.scrollY + 10;\n }\n\n this.isMobileView = isMobileView;\n this.selectedInsurance = insurance;\n this.isFirstTermsAccepted = false;\n this.isSecondTermsAccepted = false;\n this.btnContinueClicked = false;\n\n this.pddoSelectedDetailsLoading = true;\n this.pddoService\n .getPDDOSelectedDetails(insurance, this.pet.name)\n .then(\n (result) => {\n this.pddoSelectedDetails = result;\n this.showPDDOSelectedDetails = true;\n this.pddoSelectedDetailsLoading = false;\n }\n );\n }\n btnContinueClick(): void {\n this.btnContinueClicked = true;\n //if (this.isFirstTermsAccepted && this.isSecondTermsAccepted)\n {\n this.pet.isDDOTermsAccepted=true;\n this.applyTo(this.selectedInsurance);\n }\n }\n // **** PDDO Lightbox ****\n\n // ---- Rows size computing methods ----\n\n addOrUpdateRowsSize(className: string) {\n if (!this.rowsSize.hasOwnProperty(className)) {\n this.rowsSize[className] = 0;\n }\n }\n\n recomputeRowsSize() {\n for (let el in this.rowsSize) {\n if (this.rowsSize.hasOwnProperty(el)) {\n this.computeSingleRowSize(el);\n }\n }\n }\n\n computeSingleRowSize(className: string) {\n let els = document.getElementsByClassName(className);\n let propertyName = 'offsetHeight';\n for (let i = 0; i < els.length; i++) {\n let elSize = els.item(i)[propertyName];\n if (this.rowsSize[className] < elSize) {\n this.rowsSize[className] = elSize;\n }\n }\n }\n\n getRowsSize(className: string): string {\n this.addOrUpdateRowsSize(className);\n return (this.rowsSize[className] === 0) ? 'auto' : this.rowsSize[className] + 'px';\n }\n\n displayBrandDetails(insurance: Insurance) {\n //console.log(insurance);\n this.brandDetailsLoading = true;\n this.brandsService\n .getBrandDetails(insurance)\n .then(\n (result) => {\n this.brandDetails = result;\n this.showBrandDetails = true;\n this.brandDetailsLoading = false;\n }\n );\n }\n // **** Rows size computing methods ****\n\n // ---- Promotions ---\n applyPromotion() {\n this.promoLoading = true;\n this.promoIsError = false;\n this.promoIsNotApplied = false;\n this.promotionService\n .getPromotion(this.promoCode, this.theme.id)\n .then(\n (result) => {\n if (result.length === 0) {\n this.displayPromotionErrorMessage();\n return;\n }\n this.user.promotion = result[0];\n this.promoLoading = false;\n this.promotionProductsLoading = true;\n this.promotionApplied = true;\n this.promotionTACOpen = false;\n this.sort = 'offer';\n this.reLoadPremiums();\n },\n (error) => {\n this.displayPromotionErrorMessage();\n }\n );\n }\n\n collectPromotion() {\n this.promoLoading = true;\n this.promoIsError = false;\n this.promoIsNotApplied = false;\n this.promotionService\n .getPromotion(this.promoCode, this.theme.id)\n .then(\n (result) => {\n if (result.length === 0) {\n this.displayPromotionErrorMessage();\n this.reLoadPremiums();\n return;\n }\n this.user.promotion = result[0];\n this.promoLoading = false;\n this.promotionProductsLoading = true;\n this.promotionApplied = true;\n this.promotionTACOpen = false; \n this.sort = ''; \n this.reLoadPremiums();\n }\n )\n .catch(\n (error) => {\n this.displayPromotionErrorMessage(); \n }\n );\n }\n\n displayPromotionErrorMessage() {\n this.promoLoading = false;\n this.promoIsError = true;\n this.recomputeRowsSize();\n }\n\n // **** Promotions ****\n\n // ---- Excess ---\n // update\n applyExcess(ins: Insurance, excess: number) {\n ins.setExcess(excess);\n }\n // **** Excess ****\n\n updateScrollDownBtn() {\n if (!this.scrollDownBtnCompute) {\n this.scrollDownBtnCompute = true;\n setTimeout(\n () => {\n this.scrollDownBtn = !ToolsMethods.scrollIsBottom('.insurance-fields-container');\n this.scrollDownBtnCompute = false;\n },\n 50\n );\n }\n }\n\n get scrollDownBtnPositionLeft(): number {\n let visibleNb: number = document.getElementsByClassName('insurancesDisplayed').length;\n visibleNb = visibleNb > this.maxVisible ? this.maxVisible : visibleNb;\n return ToolsMethods.getElWidth('.insurancesDisplayed') * visibleNb / 2;\n }\n\n get effectiveDate() {\n let effectiveDate = this.premiumService.getEffectiveDate();\n let monthDisplay: string = (effectiveDate.getMonth() + 1) + '';\n if ((effectiveDate.getMonth() + 1) < 10) {\n monthDisplay = '0' + monthDisplay;\n }\n let dayDisplay: string = effectiveDate.getDate() + '';\n if (effectiveDate.getDate() < 10) {\n dayDisplay = '0' + dayDisplay;\n }\n return dayDisplay + ' ' + monthDisplay + ' ' + effectiveDate.getFullYear();\n }\n\n get shortListVisible(): boolean {\n return ((new FilterShortListPipe).transform(this.insuranceCovers.getInsurances(), true).length > 0);\n }\n\n get isOnePremiumVisible(): boolean {\n let insurances: Insurance[] = this.insuranceCovers.getInsurances();\n insurances = new FilterShortListPipe().transform(insurances, this.shortListOnly);\n insurances = new SortInsurancesPipe().transform(insurances, this.sort, this.theme.id);\n return insurances.length > 0;\n }\n\n /**\n * Debug purpose\n *\n * TODO remove\n *\n * @returns {string}\n */\n get diagnostic() {\n return JSON.stringify(\n {\n 'rowsSize': this.rowsSize,\n 'scrollPosition': this.scrollPosition,\n 'columnSize': this.columnSize,\n 'maxVisible': this.maxVisible,\n 'maxNb': this.maxNb,\n 'visibleNb': this.visibleNb,\n 'cover': this.cover,\n 'sort': this.sort,\n 'shortListOnly': this.shortListOnly,\n 'insuranceCovers': this.insuranceCovers,\n 'coverFieldIdList': this.coverFieldIdList\n },\n undefined,\n 4\n );\n }\n}\n","
\n
\n
\n\t\t\t
\n

The products are sorted from lowest to highest price by default. Use the toggles on the left for other sorting options.
\n No direct fees or charges means the price you pay is the same as the standard rates you would pay if you went directly to the insurer.\n

\n

The products are sorted from lowest to highest price by default. Use the toggles on the left for other sorting options.
\n No direct fees or charges means the price you pay is the same as the standard rates you would pay if you went directly to the insurer.\n

\n

The products are sorted from lowest to highest price by default. Use the toggles on the left for other sorting options.
\n No direct fees or charges means the price you pay is the same as the standard rates you would pay if you went directly to the insurer. \n

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

{{visibleNb}} Product{{visibleNb > 1? 's' : ''}} found

\n
\n
\n \n
\n
\n
\n
\n Adjust view\n \n
\n
    \n
  • \n
    \n \n
    \n
  • \n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n Loading...\n
\n
\n
\n
\n
\n
\n Invalid offer code\n
\n
\n
\n
\n Offer applied\n
\n
\n
\n
\n \n {{ user.promotion.offerTitle }}\n
\n \n
\n
\n
\n X\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n

\n Unfortunately no special offers are currently available\n

\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{ l ? updateScroll(0) : ''}}\n
\n \n Shortlisted \n \n \n Add to shortlist \n \n
\n
\n
\n \"{{ins.insuranceName}}\"/\n
\n
\n
\n
\n About brand\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n

{{ins.coverName}}

\n
\n
\n
\n

\n \n {{ins.getPrice(cover.frequency) | customCurrency:2:'$' }}\n \n

\n
\n
\n
\n \n {{FREQUENCY[cover.frequency]}}ly\n \n \n
\n
    \n
  • \n Fortnightly\n
  • \n
  • \n Monthly\n
  • \n
  • \n Yearly\n
  • \n
\n
\n
\n
\n \n \n Was {{ins.getOriginalPriceIfNoRoutine(cover.frequency) | customCurrency:2:'$' }}\n \n \n
\n
0\">\n \n Includes 10% Seniors Discount\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n No offer available\n
\n
0\">\n
\n \n {{ins.insurancePromotion.discountName}} has been applied.\n
\n
\n \n Offer not applicable\n \n
\n
\n
\n
\n
\n \n
\n
\n Loading offer...\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Optional Routine Care
\n
\n
\n
\n \n
\n
\n
\n
\n

\n Optional Routine Care\n

\n

\n \n Routine Care Stated Benefits:
\n $50 annual benefit for ONE of the following:\n
\n

\n
    \n
  • De-sexing
  • \n
  • Micro-chipping
  • \n
  • Heartworm preventative medication
  • \n
  • Teeth cleaning
  • \n
  • Council registration fees
  • \n
  • Alternative therapies
  • \n
  • Prescription diets
  • \n
  • Dewclaw removal
  • \n
  • Cremation or burial
  • \n
  • \n Behavioural therapy (by a qualified animal behavioural therapist\n of vet)\n
  • \n
  • Dental treatment
  • \n
  • Obedience training (at a recognised training facility)
  • \n
  • Flea/Tick/Worm control
  • \n
  • Vaccinations or Health Check
  • \n
\n

\n \n PLUS annual benefit of ALL of the following:\n \n

\n
    \n
  • \n $15 - Heartworm test of Blood screen\n
  • \n
  • \n $15 - FeLv/Fiv test or urinalysis\n
  • \n
\n

\n \n AnnualPremium = $60
\n Maximum benefit = $80\n
\n

\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n Optional Routine Care is not available on this product\n
\n
\n
\n
\n
\n \n
\n
\n Loading routine care...\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n Loading excess...\n
\n
\n
\n
\n
\n
\n \n Excess\n \n \n \n \n
\n \n
\n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n Loading...\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n
\n

What's covered

\n
\n
\n
\n {{insuranceCovers.getCoverFields().get(field.index).name}}\n
\n
\n \n \n \n
\n
\n\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n

What's covered

\n
\n
\n \n
\n
\n
\n \n
\n
\n Loading...\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n Scroll down\n \n
\n

\n 1 Unless specified, all benefit amounts are annual limits. \n

\n

\n 2 Lifetime cover for as long as we continue to offer the product, provided there are no breaks in cover, and subject to the terms and conditions of the policy.\n

\n

\n 3 Paid as part of consultation and/or treatment of an eligible vet bill and may be paid as part of any applicable annual condition limit or sub-limit.\n

\n

\n 4 Please consult the relevant Policy Booklet for further information, including a full description of benefits, as well as exclusions.\n

\n

\n 5 If a condition exists or occurs before the commencement date of the first policy period or within an applicable waiting period, it may be excluded from cover as a pre-existing condition. Some conditions are eligible for review after an 18-month period – refer to your Policy Booklet for more information regarding pre-existing conditions.\n

\n

\n 6 Hereditary conditions and congenital conditions will not be considered to be a pre-existing condition if they have not shown noticeable signs, symptoms or an abnormality at any time before the commencement date of the first policy period or during any applicable waiting period.\n

\n

\n 7 A Chronic Condition is long-lasting or recurring in its effects and affects (or is present in) a Pet over a period greater than three months in total. Chronic Conditions may also be intermittent or managed with medication and/or prescription diets with intervals of remission. \n

\n

\n Product information up-to-date as at {{ effectiveDate }}. This page contains general information and there may\n be additional features to some products that are not compared. Please refer to the Product Disclosure Statement for full information on cover.\n

\n
\n
\n
\n
\n
\n
\n
\n\t\t\t
\n

The products are sorted from lowest to highest price by default. You can ‘Filter results’ below for other sorting options.
\n No direct fees or charges means the price you pay is the same as the standard rates you would pay if you went directly to the insurer.\n

\n

The products are sorted from lowest to highest price by default. You can ‘Filter results’ below for other sorting options.
\n No direct fees or charges means the price you pay is the same as the standard rates you would pay if you went directly to the insurer.\n

\n

The products are sorted from lowest to highest price by default. You can ‘Filter results’ below for other sorting options.
\n No direct fees or charges means the price you pay is the same as the standard rates you would pay if you went directly to the insurer. \n

\n
\n
\n
\n
\n
\n Filter results\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n Loading...\n
\n
\n
\n
\n
\n
\n Offer applied\n
\n
\n
\n
\n \n {{ user.promotion.offerTitle }}\n
\n \n
\n
\n
\n
\n
\n X\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"{{ins.insuranceName}}\"/\n \n \n \n \n \n \n \n \n
\n
\n \n \n Shortlisted\n \n \n \n \n \n \n \n Add to shortlist\n \n \n \n \n \n
\n
\n
\n
\n About insurer\n \n
\n
\n \n
\n
\n
\n
\n
\n

{{ins.coverName}}

\n
\n No offer available\n
\n
0\">\n
\n \n {{ins.insurancePromotion.discountName}} has been applied.\n
\n
\n \n Offer not applicable\n \n
\n
\n
\n
\n
\n \n
\n
\n Loading offer...\n
\n
\n
\n
\n
\n
\n
\n
\n

\n {{ins.getPrice(cover.frequency) | customCurrency:2:'$' }}\n

\n
\n
\n \n Fort\n \n \n Month\n \n \n Year\n \n
\n
\n \n Was {{ins.getOriginalPriceIfNoRoutine(cover.frequency) | customCurrency:2:'$' }}\n \n
\n
0\">\n \n Includes 10% Seniors Discount\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n Loading excess...\n
\n
\n
\n
\n
\n
\n Excess\n \n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
Optional Routine Care
\n
\n \n
\n
\n
\n
\n

\n Optional Routine Care\n

\n

\n \n Routine Care Stated Benefits:
\n $50 annual benefit for ONE of the following:\n
\n

\n
    \n
  • De-sexing
  • \n
  • Micro-chipping
  • \n
  • Heartworm preventative medication
  • \n
  • Teeth cleaning
  • \n
  • Council registration fees
  • \n
  • Alternative therapies
  • \n
  • Prescription diets
  • \n
  • Dewclaw removal
  • \n
  • Cremation or burial
  • \n
  • \n Behavioural therapy (by a qualified animal behavioural therapist\n of vet)\n
  • \n
  • Dental treatment
  • \n
  • Obedience training (at a recognised training facility)
  • \n
  • Flea/Tick/Worm control
  • \n
  • Vaccinations or Health Check
  • \n
\n

\n \n PLUS annual benefit of ALL of the following:\n \n

\n
    \n
  • \n $15 - Heartworm test of Blood screen\n
  • \n
  • \n $15 - FeLv/Fiv test or urinalysis\n
  • \n
\n

\n \n AnnualPremium = $60;
\n Maximum benefit = $80\n
\n

\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n Optional Routine Care is not available on this product\n
\n
\n
\n
\n
\n \n
\n
\n Loading routine care...\n
\n
\n
\n
\n
\n \n Policy Booklet \n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n Loading...\n
\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n {{insuranceCovers.getCoverFields().get(field.index).name}}\n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n

\n 1 Unless specified, all benefit amounts are annual limits. \n

\n

\n 2 Provided there's no break in cover and subject to the terms and conditions of the renewal policy.\n

\n

\n 3 Paid as part of consultation and/or treatment of an eligible vet bill and may be paid as part of any applicable annual condition limit or sub-limit.\n

\n

\n 4 Please consult the relevant Policy Booklet for further information, including a full description of benefits, as well as exclusions.\n

\n

\n 5 If a condition exists or occurs before the commencement date of the first policy period or within an applicable waiting period, it may be excluded from cover as a pre-existing condition. Some conditions are eligible for review after an 18-month period – refer to your Policy Booklet for more information regarding pre-existing conditions.\n

\n

\n 6 Hereditary conditions and congenital conditions will not be considered to be a pre-existing condition if they have not shown noticeable signs, symptoms or an abnormality at any time before the commencement date of the first policy period or during any applicable waiting period.\n

\n

\n 7 A Chronic Condition is long-lasting or recurring in its effects and affects (or is present in) a pet over a period greater than three months in total. Chronic Conditions may also be intermittent or managed with medication and/or prescription diets with intervals of remission. \n

\n

\n Product information up-to-date as at {{ effectiveDate }}. This page contains general information and there may\n be additional features to some products that are not compared. Please refer to the Product Disclosure Statement for full information on cover.\n

\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n Close\n \n
\n
\n
\n
\n \"{{brandDetails.brandName}}\"/\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n Close\n \n
\n
\n
\n
\n
\n

{{pddoSelectedDetails.title}}

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

You are comfortable and agree that you can afford to pay:

\n
\n \n
    \n
  • the applicable premium, which will increase each year;
  • \n
  • the vet invoice in full and upfront before submitting a claim for eligible vet expenses unless you use GapOnly®, in which case you will only need to pay the gap upfront;\n \n \n \n \n

    The ‘gap’ means the difference between the vet’s invoice for eligible expenses and the claim benefit calculated under the policy terms and conditions, if any.

    \n
    \n \n
  • \n
  • any vet expenses above the accepted claim amount. This includes the per condition excess (if any) and any amount above the benefit percentage, annual benefit limit and any applicable sub limits that may apply for some conditions, treatments or benefits as outlined in the table.
  • \n
\n \n\n
\n\n

\n Lastly, you acknowledge that this product does not provide cover for chronic pre-existing conditions or for general exclusions listed in the PDS\n \n \n \n \n Pre-Existing Conditions

\n A pre-existing condition is:
\n A condition that existed or occurred prior to the commencement date of your first policy period or within any applicable waiting period.
\n A condition that you or your vet were aware of, or a reasonable person in your circumstances would have been aware of.
\n This is irrespective of whether the underlying or causative condition was diagnosed at the time.
\n Whether it is a pre-existing condition will depend on its nature and experience. If your pet has a temporary condition that has not existed, occurred or shown noticeable signs, symptoms or an abnormality in the 18-month period immediately prior to your claim treatment date, it will no longer be excluded from cover as a pre-existing condition. Chronic Conditions and several other specified Conditions that are pre-existing conditions cannot fall within this category. For more information please refer to the relevant PDS.\n
\n

\n \n \n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n Loading...\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n\n","import { Pet } from '../model/pet';\nimport { InsuranceCovers } from '../model/insurance-covers';\nimport { ProductQuestion } from '../model/productQuestion';\nimport { CoverFieldValue } from '../model/cover-field-value';\n\nimport { StringHelper } from '../helpers/string.helpers';\nimport { ToolsMethods } from '../shared/tools.methods';\nimport { ModelValidator } from './model-validator';\nexport class ProductQuestions extends ModelValidator {\n constructor(\n public questions: ProductQuestion[] = [],\n public productQuestionTermsValid: boolean = false\n ) {\n super();\n }\n static getBlank(): ProductQuestions {\n return new ProductQuestions();\n }\n static getFromPets(pets: Pet[], covers: InsuranceCovers): ProductQuestions {\n if(!covers) return;\n let productQuestions = new ProductQuestions([],false);\n productQuestions.questions = [];\n for (let pet of pets) {\n let coverName = pet.cover.coverName;\n if(pet.cover.routineCareSelected)\n {coverName = coverName.replace(' + Routine', '') + ' + Routine Care';}\n\n if (coverName) {\n let foundCover = productQuestions.questions.find(i=>i.cover === coverName);\n if(foundCover){\n foundCover.productQuestionsDeclaration = false;\n foundCover.petNames.push(pet.name)\n foundCover.petNamesString = ToolsMethods.smartJoinTexts(foundCover.petNames);\n }\n else{\n \n let coverFields =covers.getCoverFields();\n let benefitLimitCoverField = Array.from(coverFields).find(p=>p[1].name === 'Benefit limit¹')[1];\n let benefitPercentageCoverField = Array.from(coverFields).find(p=>p[1].name === 'Benefit percentage reimbursed for eligible vet expenses')[1];\n let coverFieldValues = Array.from(pet.cover.fields.values()) as CoverFieldValue[]; \n let benefitLimit = '';\n let benefitPercentage = '';\n if(benefitLimitCoverField && benefitPercentageCoverField)\n {\n var benefitLimithtml = coverFieldValues.find(c=>c.id===benefitLimitCoverField.id).html;\n var benefitPercentagehtml = coverFieldValues.find(c=>c.id===benefitPercentageCoverField.id).html; \n benefitLimit = StringHelper.FormatCurrency(StringHelper.stripHtml(benefitLimithtml)); \n benefitPercentage = StringHelper.ReplaceCaseInsensitive(StringHelper.stripHtml(benefitPercentagehtml), \"up to\",\"\"); \n }\n let newPetNames = [];\n newPetNames.push('you');\n newPetNames.push(pet.name);\n \n let newCover = new ProductQuestion(coverName, newPetNames, ToolsMethods.smartJoinTexts(newPetNames),benefitLimit, benefitPercentage);\n productQuestions.questions.push(newCover)\n }\n }\n }\n return productQuestions;\n }\n\n proceedValidation(step: number = 0): boolean { \n if(!this.productQuestionTermsValid) {\n this.setError('productQuestionTermsValid', 'Please indicate you understand and accept the statement');\n \n }\n return this.isValid();\n}}","import { Component } from '@angular/core';\nimport { style, animate, transition, trigger } from '@angular/animations';\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\nimport { BehaviorSubject } from 'rxjs';\nimport { CONFIGURATION } from './environments/environment';\n\nimport { Pet } from './model/pet';\nimport { User } from './model/user';\nimport { Cover } from './model/cover';\nimport { Theme } from './model/theme';\nimport { Loading } from './model/loading';\nimport { Insurance } from './model/insurance';\nimport { Species } from './model/species.enum';\nimport { InsuranceCovers } from './model/insurance-covers';\n\nimport { ThemeService } from './services/theme.service';\nimport { SubscriptionService } from './services/subscription.service';\n\nimport { ToolsMethods } from './shared/tools.methods';\nimport { ProductQuestion } from './model/productQuestion';\nimport { ReCAPTCHAService } from './services/recaptcha.service';\n\n// declare let loadRecaptcha: any;\n// declare let loadRecaptcha2: any;\ndeclare let loadGmap: any;\ndeclare let tag_fct: any;\ndeclare let utag: any;\n\n@Component({\n selector: 'pet-app',\n templateUrl: 'app.component.html',\n providers: [ThemeService],\n animations: [\n trigger('slideDown', [\n transition(':enter', [\n style({height: 0}),\n animate('0.7s ease-out', style({height: '*'}))\n ]),\n transition(':leave', [\n style({height: '*'}),\n animate('0.7s ease-out', style({height: 0}))\n ])\n ])\n ]\n})\nexport class AppComponent {\n hideRecaptchaBadge = \"\";\n // model\n pet: Pet;\n pets: Pet[];\n user: User;\n theme: Theme;\n cover: Cover;\n insurance: Insurance;\n petCoverList: Insurance[];\n insuranceCovers: InsuranceCovers;\n productQuestions: ProductQuestion[];\n\n timeOutId: any;\n loading: Loading;\n haveUsCallOpen: boolean = false;\nrecaptchaPassed:boolean=false;\n subscriptionTheme: BehaviorSubject;\n\n constructor(\n public router: Router,\n private activatedRoute: ActivatedRoute,\n private titleService: Title,\n private themeService: ThemeService,\n private subscriptionService: SubscriptionService,\n private recaptchaService: ReCAPTCHAService\n ) {\n this.loading = Loading.getBlank();\n this.loading.activated = true;\n this.loading.loadingText = 'Loading details';\n subscriptionService.newObservable('loading', this.loading).subscribe(\n loading => {\n this.loading = loading;\n }\n );\n\n this.pets = [];\n subscriptionService.newObservable('pets', this.pets).subscribe(\n pets => {\n this.pets = pets;\n }\n );\n\n this.pet = Pet.getBlank();\n subscriptionService.newObservable('pet', this.pet).subscribe(\n pet => {\n this.pet = pet;\n }\n );\n\n this.user = User.getBlank();\n subscriptionService.newObservable('user', this.user).subscribe(\n user => {\n this.user = user;\n }\n );\n\n this.cover = Cover.getBlank();\n subscriptionService.newObservable('cover', this.cover).subscribe(\n cover => {\n this.cover = cover;\n }\n );\n\n this.insuranceCovers = InsuranceCovers.getBlank();\n subscriptionService.newObservable('insurance-covers', this.insuranceCovers).subscribe(\n insuranceCovers => {\n this.insuranceCovers = insuranceCovers;\n }\n );\n\n this.petCoverList = [];\n subscriptionService.newObservable('pet-covers', this.petCoverList).subscribe(\n petCoverList => {\n this.petCoverList = petCoverList;\n }\n );\n\n this.insurance = Insurance.getBlank();\n subscriptionService.newObservable('insurance', this.insurance).subscribe(\n insurance => {\n this.insurance = insurance;\n }\n );\n\n subscriptionService.newObservable('haveUsCallOpen', this.haveUsCallOpen).subscribe(\n haveUsCallOpen => {\n this.haveUsCallOpen = haveUsCallOpen;\n }\n );\n//\nsubscriptionService.newObservable('recaptchaPassed', this.recaptchaPassed).subscribe(\n recaptchaPassed => {\n this.recaptchaPassed = recaptchaPassed;\n }\n);\n subscriptionService.newObservable('productQuestions', this.productQuestions).subscribe(\n productQuestionList => {\n this.productQuestions = productQuestionList;\n }\n );\n\n this.theme = Theme.getBlank();\n this.subscriptionTheme = subscriptionService.newObservable('theme', this.theme);\n this.subscriptionTheme.subscribe(\n theme => {\n this.theme = theme;\n }\n );\n let userIdParamName = 'UserID';\n let sourceParamName = 'Source';\n let automatedParamName = 'automated'\n this.activatedRoute.queryParams.subscribe(\n (value) => {\n if (value.hasOwnProperty(userIdParamName)) {\n this.theme.userId = value[userIdParamName];\n this.subscriptionTheme.next(this.theme);\n }\n if (value.hasOwnProperty(sourceParamName)) {\n this.theme.source = value[sourceParamName];\n this.subscriptionTheme.next(this.theme);\n }\n if (value.hasOwnProperty(automatedParamName)) {\n this.theme.automated = value[automatedParamName];\n this.subscriptionTheme.next(this.theme);\n }\n }\n );\n\n setTimeout(() => this.initTag(), 100);\n this.getTheme();\n this.initGmap();\n // setTimeout(() => this.initRecaptcha(), 100);\n\n if (CONFIGURATION.environment === 'prod') {\n this.initTimeOutChecker();\n }\n }\n\n getTheme() {\n this.themeService\n .getTheme()\n .subscribe(\n data => {\n this.theme.setNewData(data);\n this.subscriptionTheme.next(this.theme);\n this.titleService.setTitle(data.companyName);\n },\n error => { console.error('error', error); }\n );\n }\n\n initGmap() {\n let key: string = CONFIGURATION.gmapApiKey;\n loadGmap(key);\n }\n\n // initRecaptcha() {\n // if (this.theme.userId === 'WebUser' && this.theme.automated === 'false') {\n // let key: string = this.recaptchaService.getSiteKey();\n // // loadRecaptcha(key);\n // // loadRecaptcha2(key);\n // }\n // }\n\n initTag() {\n if (this.theme.userId === 'WebUser' && this.theme.automated === 'false') {\n this.executeTag();\n this.router.events.subscribe(\n (value) => {\n if (value instanceof NavigationEnd) {\n if (value.urlAfterRedirects.indexOf('/compare') >= 0) {\n this.addTag('compare_quote', '/compare');\n } else if (value.urlAfterRedirects.indexOf('/thank-you') >= 0) {\n setTimeout(() => this.addTag('pet_sale', '/thank-you'), 2000);\n } else if (value.urlAfterRedirects.indexOf('/buy') >= 0) {\n this.addView('/buy');\n } else if (value.urlAfterRedirects.indexOf('/payment') < 0) {\n this.addView('/');\n }\n }\n });\n }\n }\n\n addTag (u1: string, pageView: string) {\n if (this.theme.userId === 'WebUser' && this.theme.automated === 'false' && typeof utag !== 'undefined') {\n let u2: string = CONFIGURATION.tracker_name;\n let ord: string = 'p' + this.user.petCriteriaID;\n\n let dataToSend = {\n virtual_page_name: pageView,\n cost: '',\n order_currency: '',\n order_value : '',\n u3: '',\n u1: u1,\n u2: u2,\n qty: '',\n ord: ord,\n insuranceType: this.getPetInsuranceType(),\n petBreed: this.getPetBreed()\n };\n if (CONFIGURATION.environment === 'dev') {\n console.log('TAGGING');\n console.log(JSON.stringify(dataToSend));\n }\n utag.view(dataToSend);\n }\n }\n\n getPetBreed(): string[] {\n let breeds: string[] = [];\n if (this.pets.length > 0) {\n for (let pet of this.pets) {\n breeds.push(pet.breed.breed);\n }\n } else {\n breeds.push(this.pet.breed.breed);\n }\n return breeds;\n }\n\n getPetInsuranceType(): string {\n let cat: boolean = false;\n let dog: boolean = false;\n let petSpecies: string = '';\n if (this.pets.length > 0) {\n for (let pet of this.pets) {\n if (pet.petType === Species.CANINE) {\n dog = true;\n } else {\n cat = true;\n }\n }\n } else {\n dog = this.pet.petType === Species.CANINE;\n cat = this.pet.petType === Species.FELINE;\n }\n if (dog && cat) {\n petSpecies = 'dog and cat';\n } else if (dog) {\n petSpecies = 'dog';\n } else if (cat) {\n petSpecies = 'cat';\n }\n return petSpecies;\n }\n\n addView (u1: string) {\n if (this.theme.userId === 'WebUser' && this.theme.automated === 'false' && typeof utag !== 'undefined') {\n let dataToSend = {\n virtual_page_name: u1\n };\n if (CONFIGURATION.environment === 'dev') {\n console.log('TAGGING');\n console.log(JSON.stringify(dataToSend));\n }\n utag.view(dataToSend);\n }\n }\n\n executeTag() {\n if (this.theme.userId === 'WebUser' && this.theme.automated === 'false') {\n let url: string = CONFIGURATION.trackUrl;\n if (CONFIGURATION.environment === 'dev') {\n console.log('INIT TAG WITH URL: ' + url);\n }\n //tag_fct(url);\n }\n }\n\n initTimeOutChecker() {\n this.idlTimer();\n let that: any = this;\n document.addEventListener('keyup', function() {\n that.idlTimer();\n });\n }\n\n idlTimer() {\n if (this.timeOutId !== null) {\n clearTimeout(this.timeOutId);\n }\n // timer 30min\n this.timeOutId = setTimeout(\n () => {\n this.resetApp();\n },\n 1000 * 60 * 30\n );\n }\n\n resetApp() {\n this.router.navigate(['']);\n setTimeout(() => { location.reload(); }, 5000);\n }\n\n closeHaveCall(close: boolean) {\n this.haveUsCallOpen = close;\n }\n\n goTop() {\n ToolsMethods.scrollToId('app-header', 1000);\n }\n\n goToRoute(route: string) {\n if (!this.loading.activated) {\n if (this.linkActivated(route)) {\n this.loading.activated = true;\n this.router.navigate([route]);\n }\n }\n }\n\n linkActivated(route: string): boolean {\n let step = this.getStep();\n let linkStep = this.getStep(route);\n return step > linkStep;\n }\n\n getStep(route: string = this.router.url): number {\n switch (route) {\n case '/compare':\n return 2;\n case '/buy':\n return 3;\n default:\n return 1;\n }\n }\n getRecaptchaTerms(): string{\nreturn this.themeService.getRecaptchaTerms();\n }\n\n}\n","
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n Need help?\n \n \n Have us call you\n \n
\n
\n \n \n Call us {{theme.getFormattedPhoneNumber()}}\n \n \n Mon - Fri 8am to 8pm (AEST)\n \n
\n
\n Call us \n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n 1\n \n
\n
\n About you & your pet\n
\n
\n
\n
\n 2\n \n
\n
\n Compare & choose\n
\n
\n
\n
\n 3\n \n
\n
\n Buy now\n
\n
\n
\n
\n
\n\n
\n
\n \n Back to Top \n \n
\n
\n
\n
\n
\n
\n\n \n
\n
\n","import { Component, EventEmitter, OnInit, Input, Output } from '@angular/core';\n \nimport { ProductQuestion } from '../model/productQuestion'; \nimport { Loading } from '../model/loading'; \n\n@Component({\n selector: '[product-question-form]',\n templateUrl: 'product-question.component.html' \n})\n\nexport class ProductQuestionComponent implements OnInit {\n\n\n @Input('productQuestion') productQuestion: ProductQuestion; \n @Input('id') id: number;\n @Input('loading') loading: Loading;\n @Input('loadingRoute') loadingRoute: boolean;\n @Output() onRoute = new EventEmitter();\n \n\n public constructor() {\n \n }\n\n ngOnInit(): void {\n this.loadingRoute = false;\n }\n\n goToRoute(route: string) {\n this.onRoute.emit({ route: route, index: this.id });\n }\n\n \n\n \n\n \n\n \n\n \n\n \n}","\n
\n \n
\n
\n
\n
\n
\n
    \n
  • The benefit percentage of {{productQuestion.benefitPercentage}} and overall limit of {{productQuestion.benefitLimit}}.
  • \n
  • The sub-limits for conditions like tick paralysis and cruciate ligament surgery that apply.
  • \n
  • The level of protection that this cover provides.
  • \n
\n
\n
\n\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'payment-gateway',\n templateUrl: 'payment-gateway.component.html' \n})\nexport class PaymentGatewayComponent {\n\n constructor(\n private route: ActivatedRoute\n ) {}\n\n}\n","Payment gateway, it will redirect soon","import { ModelValidator } from './model-validator';\n\nexport class Vet extends ModelValidator {\n\n static getBlank(): Vet {\n return new Vet('', '');\n }\n\n static getCopy(vet: Vet): Vet {\n let newVet = Vet.getBlank();\n newVet.practiceCode = vet.practiceCode;\n newVet.vet = vet.vet;\n return newVet;\n }\n\n constructor(\n public practiceCode: string,\n public vet: string\n ) {\n super();\n }\n\n\n proceedValidation(step: number = 0): boolean {\n if (step === 3) {\n if (this.practiceCode === null || this.practiceCode.trim() === '') {\n this.setError('practiceCode', 'Please enter your pet’s vet');\n }\n }\n return this.isValid();\n }\n}\n","import {TypeaheadDirective}from './typeahead.directive';\n\nexport class TypeaheadOptions {\n public placement: string;\n public animation: boolean;\n public typeaheadRef: TypeaheadDirective;\n\n public constructor(options: TypeaheadOptions) {\n Object.assign(this, options);\n }\n}\n","import { ModelValidator } from './model-validator';\nimport { PaymentType } from './payment-type.enum';\nimport { PaymentMethod } from './payment-method';\nimport { Account } from './account';\nimport { CreditCard } from './credit-card';\n\nexport class Payment extends ModelValidator {\n\n static getBlank(): Payment {\n return new Payment(\n PaymentType.ACCOUNT, Account.getBlank(),\n '', '', '', '', '', ''\n );\n }\n\n constructor(\n public type: PaymentType,\n public paymentMethod: PaymentMethod,\n public token: string,\n public community: string,\n public supplierBusiness: string,\n public crn: string,\n public responseType: string,\n public postUrl: string\n ) {\n super();\n }\n\n selectPaymentType(type: PaymentType): void {\n if (type === PaymentType.ACCOUNT) {\n this.paymentMethod = Account.getBlank();\n } else if (type === PaymentType.CARD) {\n this.paymentMethod = CreditCard.getBlank();\n }\n this.type = type;\n }\n\n proceedValidation(step: number = 0): boolean {\n this.paymentMethod.validate(step);\n return this.isValid();\n }\n\n isValid(): boolean {\n return this.paymentMethod.isValid() && super.isValid();\n }\n}\n","//User story - 31124 - Choosi PDDO Pet STP\nimport { getDebugNode, Injectable } from '@angular/core';\nimport { BaseService } from './base.service';\n\nimport 'rxjs/add/operator/toPromise';\n\nimport { Insurance } from '../model/insurance';\nimport { PDDOSelectedDetails } from '../model/pddo-selected-details';\n\n@Injectable()\nexport class PDDOService extends BaseService {\n\n getPDDOSelectedDetails(insurance: Insurance, petName: string): Promise {\n return Promise.resolve(\n new PDDOSelectedDetails(\n `You have selected ${insurance.insuranceName} ${insurance.coverName} ${ insurance.routineCareSelected ? `+ Routine Care` : ``}` +' and acknowledge the level of protection and following benefits are right for you and your pet:', //title\n \n //`You agree and acknowledge the following benefits of ${insurance.coverName} ${ insurance.routineCareSelected ? `and Routine Care` : ``} are right for you and ${petName}:`, //firstTerms\n this.getBenefitsHtml(insurance), //benefits\n \n // `Please note, that you will have to cover the proportion of costs not covered by your policy (or policies) for the treatment of your pet(s).`, //notes\n //`You agree and acknowledge that chronic pre-existing conditions associated with your pet(s) are not covered.`, //secondTerms\n \n //`You must agree with the above statements to continue.` //errorMessage`\n )\n );\n }\n\n private getBenefitsHtml(insurance: Insurance): string {\n let htmlContent: string = `\n
  • \n the benefit percentage of ${insurance.getBenefitPercentage()} and overall annual limit of ${insurance.getBenefitLimit()}.\n
  • `;\n \n\n // switch (insurance.coverName.toLowerCase().replace(/\\s\\s+/g, ' ')) {\n // case 'ultimate plus accident & illness cover': //RSPCA\n // //Dynamic bullet point appears if customer selects Routine Care\n // if (insurance.routineCareSelected)\n // {\n // htmlContent += `\n //
  • \n // Routine Care’s limited reimbursement for specified preventive treatments and ownership costs.\n //
  • \n // `;\n // }\n // break;\n // case 'platinum accident & illness cover': //Guardian \n // case 'premium accident & illness cover': //Real\n // case 'sovereign accident & illness cover': //Prime \n // case 'top accident & illness cover': //Seniors \n // case 'premium care': //Guide Dogs \n // case 'ultimate accident & illness cover': //RSPCA\n // htmlContent += `\n //
  • \n // The sub-limits for conditions like tick paralysis and cruciate ligament conditions that apply.\n //
  • \n // `;\n\n // //Dynamic bullet point appears if customer selects Routine Care\n // if (insurance.routineCareSelected)\n // {\n // htmlContent += `\n //
  • \n // Routine Care’s limited reimbursement for specified preventive treatments and ownership costs.\n //
  • \n // `;\n // }\n // //this is to ONLY appear for Prime Sovereign Accident & Illness Cover\n // if (insurance.coverName.toLowerCase() === 'sovereign accident & illness cover')\n // {\n // htmlContent += `\n //
  • \n // The limited reimbursement for specified dental treatment.\n //
  • \n // `;\n // }\n // break;\n // case 'gold accident & illness cover': //Guardian \n // case 'standard accident & illness cover': //Real \n // case 'imperial accident & illness cover': //Prime \n // case 'essential accident & illness cover': //Seniors \n // case 'comprehensive care': //Guide Dogs \n // case 'basic care': //Guide Dogs \n // case 'economy accident & illness cover': //RSPCA\n // htmlContent += `\n //
  • \n // The sub-limits for conditions like tick paralysis and cruciate ligament conditions that apply.\n //
  • \n // `;\n // break;\n // case 'bronze accident & illness cover': //Guardian \n // case 'classic accident & illness cover': //Real \n // case 'regal accident & illness cover': //Prime \n // case 'basic accident & illness cover': //Seniors \n // case 'general accident & illness cover': //RSPCA\n // htmlContent += `\n //
  • \n // Annual condition limit of ${insurance.getAnnualLimit()}.\n //
  • \n // `;\n // break;\n // default:\n // break;\n // }\n\n // htmlContent += `\n //
  • \n // The level of protection that this cover provides.\n //
  • \n //`;\n return htmlContent;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {TypeaheadContainerComponent} from './typeahead-container.component';\nimport {TypeaheadDirective} from './typeahead.directive';\nimport {ComponentsHelper} from './components-helper.service';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [TypeaheadContainerComponent, TypeaheadDirective],\n exports: [FormsModule, TypeaheadContainerComponent, TypeaheadDirective],\n providers: [ComponentsHelper],\n entryComponents: [TypeaheadContainerComponent]\n})\nexport class TypeaheadModule {\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ReplaySubject, Observable } from 'rxjs';\n\nimport { BaseService } from './base.service';\n\nimport { Theme } from '../model/theme';\n\n@Injectable()\nexport class ThemeService extends BaseService {\n\n private observables: ReplaySubject[] = [\n new ReplaySubject(1)\n ];\n\n private static mapThemeResponse(data: any): Theme {\n let termsCondition: string = data.Footer;\n let firstStepTerms: string = data.Consent;\n let antiHawking: string = data.AntiHawking;\n let showInterestedIn: boolean = data.ShowInterestedIn === null ? false : data.ShowInterestedIn;\n let theme: Theme = Theme.getBlank();\n theme.id = data.PartnerId;\n theme.partnerCode = data.PartnerCode;\n theme.name = data.WebSiteName;\n theme.homeUrl = data.WebSiteUrl;\n theme.mainWebSiteUrl = data.MainWebSiteUrl;\n theme.companyName = data.WebSiteName;\n theme.contactPhoneNumber = (data.C1300Num) ? data.C1300Num : '';\n theme.termsCondition = termsCondition.replace(\"{{year}}\", (new Date()).getFullYear().toString());\n theme.firstStepTerms = firstStepTerms;\n theme.antiHawking = antiHawking;\n theme.firstStepTermsCheckbox = (data.ConsentBoxVisible) ? data.ConsentBoxVisible : false;\n theme.showInterestedIn = showInterestedIn;\n return theme;\n }\n private static getRecaptchaTerms():string{\n return 'This site is protected by reCAPTCHA and the Google\\n Privacy Policy and\\n Terms of Service apply.';\n }\n private static getDisclaimer(partnerId: number): string {\n switch (partnerId) {\n case 3://iselect\n return \"

    \\nThank you. It's important that you understand this information about {{insuranceName}}.\\n

    \\n

    \\n {{insuranceName}} is issued by The Hollard Insurance Company Pty Ltd (Hollard) ABN 78 090 584 473, AFSL 241436.\\n

    \\n

    \\nChoosi Pty Ltd ABN 15 147 630 886, AFSL 402397 has provided this cover to you on referral from iSelect Ltd. \\n Choosi arranges this cover under a binding authority, which allows it to issue cover on behalf \\n of Hollard. This cover is administered through PetSure (Australia) Pty Ltd ABN 95 075 949 923, AFSL 420183.\\n

    \\n

    \\nHollard relies upon the information you've provided when assessing your application. Hollard has set a Target Market Determination for this product which describes the type of consumers this product is designed for. Our distribution practices are consistent with this Determination, and you can obtain a copy on our website.

    \\n

    Your duty to take reasonable care not to make a misrepresentation when you enter into the contract with us for the first time
    Before you enter into this contract of insurance, you have a duty to take reasonable care not to make a misrepresentation. What that means is that you need to take reasonable care to provide honest, accurate and complete answers to any questions that we ask. It is also important to understand that, in answering the questions, you are answering for yourself and anyone else to whom the questions apply. This duty applies until the contract is entered into.

    If you do not comply with your duty to take reasonable care not to make a misrepresentation \\n
    If you do not take reasonable care in answering our questions or inform us of changes to the information set out in your policy documentation, you may breach your duty. If that happens, your policy may be cancelled, or treated as if never existed, and any claim may be denied or not paid in full.

    \\n Your policy will commence at one \\n minute before midnight (11:59pm) on the day you've selected to commence your policy from. Your nominated pets are then covered under the policy\\u2019s \\n specified accidental injury cover section. A 6-month waiting period from the commencement date of the first policy period applies to cruciate \\n ligament conditions (may be waived on application). Cover for risks under the policy\\u2019s illness cover section begins 30 days after the commencement \\n date of the first policy period. {{dentalPrimeText}}{{excessText}}\\n

    \\n Your premium is\\n {{totalPrice}} per {{frequency}}.

    \\n

    \\n Your policy is set to renew automatically each year, for as long as we continue to provide this product, subject\\n to the terms and conditions of the policy. However, you can opt-out of the automatic renewal process\\n by contacting {{insuranceName}}. You should check your policy limits to see if your level of cover is still appropriate for you. \\n

    \\n

    \\n Your premiums will be collected by us directly from your nominated credit card or bank account. Your authority to debit this\\n account also applies to renewals. If the account / card is not yours, you confirm that you have the authority of the relevant\\n person to use it and they have agreed to these terms.\\n

    \\n

    \\n Choosi is a related company of Hollard. Included in your premium is a commission payable \\n by Hollard to Greenstone Financial Services (GFS) between 25% to 47% of premiums. GFS will then pay to Choosi up to 46.58% of the premiums to be received over the \\n expected life of the policy. Choosi pays a referral fee to iSelect of 25% of the \\n first year\\u2019s premium.\\n

    \\n\\n

    \\n We collect your personal information for the purpose of providing \\n insurance cover and will disclose this information to your insurer and other \\n insurance service providers such as reinsurers and claims assessors. If you don't \\n consent to this, we won't be able to provide you with cover today. Your insurer is \\n likely to disclose your information to their service providers in the Philippines, \\n South Africa, New Zealand, United States of America and the United Kingdom. \\n Details of who they are may change from time to time. You can contact your insurer \\n directly for details. We take steps to ensure they treat your information in \\n accordance with the Australian Privacy Principles. Choosi's Privacy Policy includes \\n information about lodging complaints about breaches of privacy and how to gain \\n access to your information at any time. You can obtain a copy online or by asking us. \\n We may, from time to time, provide offers to you via email in relation to our other products \\n and services.

    \\n

    \\n A Policy Booklet which includes the Product Disclosure Statement (PDS), Policy Terms \\n and Conditions, and Financial Services Guide (FSG) will be sent to you. Choosi's FSG will also be included in this pack. You should \\n carefully read these documents to ensure the product meets your needs. You have a 30-day cooling \\n off period during which you may cancel your policy, so long as no claims have been made, \\n and any premium paid will be refunded; full details are in the Policy Booklet. \\n

    \\n

    \\n Finally, if you have any questions about your policy or would like to make a complaint, please call \\n {{insuranceName}} on
    {{brandPhone}}.\\n

    \\n\";\n case 2://ctm\n return \"

    \\n Thank you. It's important that you understand this information about {{insuranceName}}.\\n

    \\n

    \\n {{insuranceName}} is issued by The Hollard Insurance Company Pty Ltd (Hollard) ABN 78 090 584 473, AFSL 241436.\\n

    \\n

    \\nChoosi Pty Ltd ABN 15 147 630 886, AFSL 402397 has provided this cover to you on referral from Compare the Market Pty Ltd. \\n Choosi arranges this cover under a binding authority, which allows it to issue cover on behalf \\n of Hollard. This cover is administered through PetSure (Australia) Pty Ltd ABN 95 075 949 923, AFSL 420183.\\n

    \\n

    \\nHollard relies upon the information you've provided when assessing your application. Hollard has set a Target Market Determination for this product which describes the type of consumers this product is designed for. Our distribution practices are consistent with this Determination, and you can obtain a copy on our website.

    \\n

    Your duty to take reasonable care not to make a misrepresentation when you enter into the contract with us for the first time
    Before you enter into this contract of insurance, you have a duty to take reasonable care not to make a misrepresentation. What that means is that you need to take reasonable care to provide honest, accurate and complete answers to any questions that we ask. It is also important to understand that, in answering the questions, you are answering for yourself and anyone else to whom the questions apply. This duty applies until the contract is entered into.

    If you do not comply with your duty to take reasonable care not to make a misrepresentation\\n
    If you do not take reasonable care in answering our questions or inform us of changes to the information set out in your policy documentation, you may breach your duty. If that happens, your policy may be cancelled, or treated as if never existed, and any claim may be denied or not paid in full.

    \\n Your policy will commence at one \\n minute before midnight (11:59pm) on the day you've selected to commence your policy from. Your nominated pets are then covered under the policy\\u2019s \\n specified accidental injury cover section. A 6-month waiting period from the commencement date of the first policy period applies to cruciate \\n ligament conditions (may be waived on application). Cover for risks under the policy\\u2019s illness cover section begins 30 days after the commencement \\n date of the first policy period. {{dentalPrimeText}}{{excessText}}\\n

    \\n Your premium is\\n {{totalPrice}} per {{frequency}}.\\n

    \\n

    \\n Your policy is set to renew automatically each year, for as long as we continue to provide this product, subject\\n to the terms and conditions of the policy. However, you can opt-out of the automatic renewal process\\n by contacting {{insuranceName}}. You should check your policy limits to see if your level of cover is still appropriate for you. \\n

    \\n

    \\n Your premiums will be collected by us directly from your nominated credit card or bank account. Your authority to debit this\\n account also applies to renewals. If the account / card is not yours, you confirm that you have the authority of the relevant\\n person to use it and they have agreed to these terms.\\n

    \\n

    \\n Choosi is a related company of Hollard. Included in your premium is a commission payable \\n by Hollard to Greenstone Financial Services (GFS) between 25% to 47% of premiums. GFS will then pay to Choosi up to 46.58% of the premiums to be received over the \\n expected life of the policy. Choosi pays a referral fee to Compare the Market of 25% of the \\n first year\\u2019s premium.\\n

    \\n\\n

    \\n We collect your personal information for the purpose of providing \\n insurance cover and will disclose this information to your insurer and other \\n insurance service providers such as reinsurers and claims assessors. If you don't \\n consent to this, we won't be able to provide you with cover today. Your insurer is \\n likely to disclose your information to their service providers in the Philippines, \\n South Africa, New Zealand, United States of America and the United Kingdom. \\n Details of who they are may change from time to time. You can contact your insurer \\n directly for details. We take steps to ensure they treat your information in \\n accordance with the Australian Privacy Principles. Choosi's Privacy Policy includes \\n information about lodging complaints about breaches of privacy and how to gain \\n access to your information at any time. You can obtain a copy online or by asking us. \\n We may, from time to time, provide offers to you via email in relation to our other products \\n and services.\\n

    \\n

    \\n A Policy Booklet which includes the Product Disclosure Statement (PDS), Policy Terms \\n and Conditions, and Financial Services Guide (FSG) will be sent to you. Choosi's FSG will also be included in this pack. You should \\n carefully read these documents to ensure the product meets your needs. You have a 30-day cooling \\n off period during which you may cancel your policy, so long as no claims have been made, \\n and any premium paid will be refunded; full details are in the Policy Booklet. \\n

    \\n

    \\n Finally, if you have any questions about your policy or would like to make a complaint, please call \\n {{insuranceName}} on {{brandPhone}}.\\n

    \";\n default://choosi\n return \"

    \\n Thank you. It's important that you understand this information about {{insuranceName}}.\\n

    \\n

    \\n {{insuranceName}} is issued by The Hollard Insurance Company Pty Ltd (Hollard) ABN 78 090 584 473, AFSL 241436.\\n

    \\n

    \\n Choosi Pty Ltd ABN 15 147 630 886, AFSL 402397 arranges this cover under a binding authority, \\n which allows it to issue cover on behalf of Hollard. This cover is administered through PetSure (Australia) Pty Ltd ABN 95 075 949 923, AFSL 420183.\\n

    \\n

    \\n Hollard relies upon the information you've provided when assessing your application. \\n Hollard has set a Target Market Determination for this product which describes the type of consumers this product is designed for. Our distribution practices are consistent with this Determination, and you can obtain a copy on our website.

    \\n

    Your duty to take reasonable care not to make a misrepresentation when you enter into the contract with us for the first time
    Before you enter into this contract of insurance, you have a duty to take reasonable care not to make a misrepresentation. What that means is that you need to take reasonable care to provide honest, accurate and complete answers to any questions that we ask. It is also important to understand that, in answering the questions, you are answering for yourself and anyone else to whom the questions apply. This duty applies until the contract is entered into.

    If you do not comply with your duty to take reasonable care not to make a misrepresentation
    If you do not take reasonable care in answering our questions or inform us of changes to the information set out in your policy documentation, you may breach your duty. If that happens, your policy may be cancelled, or treated as if never existed, and any claim may be denied or not paid in full.

    \\n Your policy will commence at one \\n minute before midnight (11:59pm) on the day you've selected to commence your policy from. Your nominated pets are then covered under the policy\\u2019s \\n specified accidental injury cover section. A 6-month waiting period from the commencement date of the first policy period applies to cruciate \\n ligament conditions (may be waived on application). Cover for risks under the policy\\u2019s illness cover section begins 30 days after the commencement \\n date of the first policy period. {{dentalPrimeText}}{{excessText}}\\n

    \\n

    \\n Your premium is\\n {{totalPrice}} per {{frequency}}.

    \\n Your policy is set to renew automatically each year, for as long as we continue to provide this product, subject\\n to the terms and conditions of the policy. However, you can opt-out of the automatic renewal process\\n by contacting {{insuranceName}}. You should check your policy limits to see if your level of cover is still appropriate for you. \\n

    \\n

    \\n Your premiums will be collected by us directly from your nominated credit card or bank account. Your authority to debit this\\n account also applies to renewals. If the account / card is not yours, you confirm that you have the authority of the relevant\\n person to use it and they have agreed to these terms.\\n

    \\n

    \\n Choosi is a related company of Hollard. Included in your premium is a commission payable \\n by Hollard to Greenstone Financial Services (GFS) between 25% to 47% of premiums. GFS will then pay to Choosi up to 46.58% of the premiums to be received over the \\n expected life of the policy.\\n

    \\n \\n

    \\n We collect your personal information for the purpose of providing \\n insurance cover and will disclose this information to your insurer and other \\n insurance service providers such as reinsurers and claims assessors. If you don't \\n consent to this, we won't be able to provide you with cover today. Your insurer is \\n likely to disclose your information to their service providers in the Philippines, \\n South Africa, New Zealand, United States of America and the United Kingdom. \\n Details of who they are may change from time to time. You can contact your insurer \\n directly for details. We take steps to ensure they treat your information in \\n accordance with the Australian Privacy Principles. Choosi's Privacy Policy includes \\n information about lodging complaints about breaches of privacy and how to gain \\n access to your information at any time. You can obtain a copy online or by asking us. \\n We may, from time to time, provide offers to you via email in relation to our other products \\n and services.

    \\n

    \\n A Policy Booklet which includes the Product Disclosure Statement (PDS), Policy Terms \\n and Conditions, and Financial Services Guide (FSG) will be sent to you. Choosi's FSG will also be included in this pack. You should \\n carefully read these documents to ensure the product meets your needs. You have a 30-day cooling \\n off period during which you may cancel your policy, so long as no claims have been made, \\n and any premium paid will be refunded; full details are in the Policy Booklet. \\n

    \\n

    \\n Finally, if you have any questions about your policy or would like to make a complaint, please call \\n {{insuranceName}} on {{brandPhone}}.\\n

    \";\n }\n }\n\n constructor(private http: HttpClient) {\n super();\n }\n\n getTheme(): Observable {\n // let url = this.baseUrl + 'api/Petsure/GetWebSiteByUrl?url=pet.choosi.com.au'; // + encodeURI(window.location.hostname);\n let url = this.baseUrl + 'api/Petsure/GetWebSiteByUrl?url=' + encodeURI(window.location.hostname);\n\n let observable: ReplaySubject = this.observables[0];\n\n if (!observable.observers.length) {\n this.http.get(url).subscribe(\n data => observable.next(ThemeService.mapThemeResponse(data)),\n error => observable.error(error)\n );\n }\n return observable;\n }\n\n getRecaptchaTerms(): string {\n return ThemeService.getRecaptchaTerms();\n }\n getDisclaimer(partnerId: number): string {\n return ThemeService.getDisclaimer(partnerId);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Router, Resolve, ActivatedRouteSnapshot } from '@angular/router';\n\nimport { Pet } from '../model/pet';\nimport { User } from '../model/user';\nimport { Theme } from '../model/theme';\nimport { Loading } from '../model/loading';\nimport { Insurance } from '../model/insurance';\nimport { InsuranceCovers } from '../model/insurance-covers';\n\nimport { SubscriptionService } from '../services/subscription.service';\nimport { DiscountService } from '../services/discount.service';\nimport { PremiumService } from '../services/premium.service';\nimport { ClientService } from '../services/client.service';\n\n\n@Injectable()\nexport class PremiumResolve implements Resolve {\n\n loading: Loading;\n activeRoute: ActivatedRouteSnapshot;\n\n constructor(\n private subscriptionService: SubscriptionService,\n private discountService: DiscountService,\n private clientService: ClientService,\n private ps: PremiumService,\n private router: Router\n ) {}\n\n redirectError(): InsuranceCovers {\n this.router.navigate(['']);\n return null;\n }\n\n disableLoading(error: string = '') {\n this.subscriptionService\n .getSubscriptions('loading')\n .subscribe(\n loading => {\n this.loading = loading;\n this.loading.activated = false;\n // to clear the errors\n this.loading.validate();\n if (error !== '') {\n this.loading.setError('searchingPremiumError', error);\n }\n }\n );\n }\n\n resolve(route: ActivatedRouteSnapshot): Promise|InsuranceCovers {\n this.activeRoute = route;\n try {\n let pet = this.getPet();\n let user = this.subscriptionService.getSubscriptions('user').getValue();\n let theme = this.subscriptionService.getSubscriptions('theme').getValue();\n\n let petValid = pet !== null && pet.validate();\n let userValid = user !== null && user.validate();\n\n if (petValid && userValid) {\n return this.discountService\n .isCustomerEligibleForSeniorsDiscount(user)\n .then(\n (eligibleForSenior) => {\n user.eligibleForSenior = eligibleForSenior;\n this.clientService.updatePageForClient(theme, user, pet, 2);\n return this.getAllPremiums(theme.id, pet, user);\n },\n error => {\n this.disableLoading(error.message);\n return this.redirectError();\n }\n );\n }\n } catch (e) {\n console.error('Cannot access to this page there is missing elements: ' + e.toString());\n }\n return this.redirectError();\n }\n\n private getAllPremiums(partnerId: number, pet: Pet, user: User): Promise|boolean {\n return this.ps.getAllBenefitsAndPremiums(1, partnerId, user, pet)\n .then(\n premiums => {\n this.disableLoading();\n return this.filterBrandAndSetPet(premiums);\n },\n error => {\n this.disableLoading(error.message);\n return this.redirectError();\n }\n );\n }\n\n private filterBrandAndSetPet(premiums: InsuranceCovers): InsuranceCovers|boolean {\n let brandFilterParam = 'brandId';\n if (this.activeRoute.queryParams.hasOwnProperty(brandFilterParam)) {\n let brandId: number = Number(this.activeRoute.queryParams[brandFilterParam]);\n premiums.brandIdFilter = brandId;\n premiums.insurances = premiums.insurances.filter(\n (insurance: Insurance) => {\n return insurance.brandId === brandId;\n }\n );\n }\n let petIndexParam = 'petIndex';\n if (this.activeRoute.queryParams.hasOwnProperty(petIndexParam)) {\n premiums.petToUpdate = this.activeRoute.queryParams[petIndexParam];\n }\n return premiums;\n }\n\n private getPet(): Pet {\n let pet = this.subscriptionService.getSubscriptions('pet').getValue();\n let petIndexParam = 'petIndex';\n if (this.activeRoute.queryParams.hasOwnProperty(petIndexParam)) {\n let pets = this.subscriptionService.getSubscriptions('pets').getValue();\n let index = this.activeRoute.queryParams[petIndexParam];\n if (pets.length >= index) {\n pet = pets[index];\n }\n }\n return pet;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseService } from './base.service';\n\nimport 'rxjs/add/operator/toPromise';\n\nimport { Insurance } from '../model/insurance';\nimport { BrandsEnum } from '../model/brands.enum';\nimport { BrandDetails } from '../model/brand-details';\n\n@Injectable()\nexport class BrandsService extends BaseService {\n\n getBrandDetails(insurance: Insurance): Promise {\n return Promise.resolve(\n new BrandDetails(\n insurance.brandId,\n insurance.brandLogo,\n insurance.brandLogoLarge,\n insurance.insuranceName,\n this.getBrandHtml(insurance.brandId)\n )\n );\n }\n\n private getBrandHtml(brandId: number): string {\n let htmlContent: string = '';\n switch (brandId) {\n case BrandsEnum.Real:\n htmlContent = `\n

    \n If your four-legged friend becomes ill or has an accident, you want to be able to give them the \n care they deserve, and as most pet owners know, this can be very expensive.\n

    \n

    \n Real Pet Insurance has your beloved cat or dog covered by providing you with financial support \n if your pet needs veterinary treatment. You can claim up to 80% of eligible vet bills* up to a \n maximum of $12,000 each year (depending on your cover).\n

    \n

    \n Key benefits of Real Pet Insurance\n

    \n
      \n
    • \n \tUp to 80% of eligible vet bills reimbursed*.\n
    • \n
    • \n Individual claims to a maximum of $12,000 a year.\n
    • \n
    • \n \tNo excess to pay for each claim.\n
    • \n
    • \n Choose from three different cover options to suit your pet’s needs – and your budget.\n
    • \n
    • \n Payment towards vaccinations, health checks and micro-chipping with the Routine Care Benefit option.\n
    • \n
    • \n You will get back 10% of premiums you have paid after the first 12 months with The Real Reward™.\n
    • \n
    \n

    \n \n * Some pre-existing conditions and certain illnesses are excluded. Terms, conditions, exclusions, \n benefit limits, sub limits and annual condition limits may apply. Eligible vet bills only, claim for\n reimbursement. Benefit Percentage varies based on the level of cover selected.\n \n

    \n `;\n break;\n case BrandsEnum.Asia:\n htmlContent = `\n

    \n From injury and sickness to everyday treatments, Seniors Pet Insurance has your pet's health care \n covered – and a 10% discount for the over 50s.\n

    \n

    \n Whether you’re after essential care or comprehensive protection, Seniors Pet\n Insurance offers three levels of cover for you to choose from, providing cover for up to \n 80% of your four-legged friend's eligible vet bills*. You also get cover for home visits\n included at no extra cost and, if you are your pet's sole carer, emergency boarding for\n your pet if you are hospitalised for 5 or more days in a row.\n

    \n

    \n \n Provide your four-legged friend with the best of care\n \n

    \n
      \n
    • \n Cover for up to 80% of eligible vet bills to a maximum of $12,000 a year*. \n
    • \n
    • \n Choose from three levels of cover to get the right protection for your pet's needs. \n
    • \n
    • \n Pay fortnightly, monthly or yearly – at no extra cost.\n
    • \n
    • \n Enjoy extra convenience, with home visits included in your cover.\n
    • \n
    • \n Benefit from a hassle-free claims process.\n
    • \n
    \n

    \n Plus save with a 10% Seniors Discount if you are over 50.\n

    \n

    \n \n * Some pre-existing conditions and certain illnesses are excluded. Terms, conditions, exclusions,\n benefit limits, sub limits and annual condition limits may apply. Eligible vet bills only, claim for\n reimbursement. Benefit Percentage varies based on the level of cover selected.\n \n

    \n `;\n break;\n case BrandsEnum.Guardian:\n htmlContent = `\n

    \n Guardian Pet Insurance provides peace of mind, knowing your four-legged family\n members can get the best veterinary care, without the worry of a big vet bill. With three\n cover options to choose from, Guardian Pet Insurance provides flexible cover for your cat or dog.\n

    \n

    \n \n Key benefits of Guardian Pet Insurance\n \n

    \n
      \n
    • \n \tCovers up to 80% of eligible vet bills*. \n
    • \n
    • \n Claim up to $12,000 per year.\n
    • \n
    • \n You can use any registered vet in Australia.\n
    • \n
    • \n No excess to pay.\n
    • \n
    \n

    \n Your cat or dog is an important part of your life and a source of endless joy and companionship \n for you
    and your family. So nothing should stop you giving them the best of care, especially when \n they’re sick
    or injured. \n

    \n

    \n \n * Some pre-existing conditions and certain illnesses are excluded. Terms, conditions, exclusions,\n benefit limits, sub limits and annual condition limits may apply. Eligible vet bills only, claim for\n reimbursement. Benefit Percentage varies based on the level of cover selected.\n \n

    \n `;\n break;\n case BrandsEnum.RSPCA:\n htmlContent = `\n

    \n RSPCA Pet Insurance offers peace of mind for dog and cat owners all across Australia.\n Our pet insurance plans cover up to 80% of the cost of eligible vet bills* when your dog \n or cat is sick or injured. Plus, there’s no excess to pay, making vet bills even more manageable. \n

    \n

    \n \n Help your pet get the very best care\n \n

    \n
      \n
    • \n \tClaim up to $20,000 per year with no excess.\n
    • \n
    • \n \tCovers up to 80% of eligible vet bills*.\n
    • \n
    • \n \tUse any registered vet in Australia.\n
    • \n
    • \n Receive a 10% discount on each additional dog or cat you insure.\n
    • \n
    \n

    \n Plus, by taking out a policy with RSPCA Pet Insurance a portion of first-year premiums\n help support the RSPCA. So you’ll be assisting other Australian animals in need, not\n just your best friend.\n

    \n

    \n \n * Some pre-existing conditions and certain illnesses are excluded. Terms, conditions, exclusions,\n benefit limits, sub limits and annual condition limits may apply. Eligible vet bills only, claim for\n reimbursement. Benefit Percentage varies based on the level of cover selected.\n \n

    \n\n `;\n break;\n case BrandsEnum.Prime:\n htmlContent = `\n

    \n Prime Pet Insurance is the ideal way to keep that special dog or cat in prime condition.\n

    \n

    \n We offer an exceptionally high standard of care if your pet becomes ill or injured.\n Receive superior cover for up to 85% of eligible vet bills* to a maximum of $14,000 a\n year, so there’s no need to worry – even if you’re faced with a king-sized vet bill!\n

    \n

    \n When only the finest will do\n

    \n
      \n
    • \n \tYour choice of three regal cover options.\n
    • \n
    • \n \tFirst class care, with cover up to 85% of eligible treatment costs*.\n
    • \n
    • \n \tReceive back up to $14,000 a year.\n
    • \n
    • \n \tNo additional excess for greater peace of mind.\n
    • \n
    \n

    \n You’ll also receive complimentary cover for a lavish range of extras like cover when\n travelling to Norfolk Island and New Zealand, essential euthanasia, and emergency boarding. \n

    \n

    \n \n * Some pre-existing conditions and certain illnesses are excluded. Terms, conditions, exclusions, \n benefit limits, sub limits and annual condition limits may apply. Eligible vet bills only, claim for \n reimbursement. Benefit Percentage varies based on the level of cover selected.\n \n

    \n `;\n break;\n case BrandsEnum.GuideDogs:\n htmlContent = `\n

    \n Playing, exploring and just being themselves can sometimes get your dog or cat in a bit\n of trouble! An unforeseen illness or injury can not only be hard on your pet but can also \n lead to unexpected vet bills. \n

    \n

    \n Guide Dogs Pet Insurance can help protect your dog or cat if they get sick or injured, so\n you can give them the best care possible without worrying about the cost.You can get\n back up to 85% of eligible vet bills*, to a maximum of $20,000 per year.\n

    \n

    \n Give your pet the care they deserve\n

    \n
      \n
    • \n Great value cover options to choose from, including an accident and illness cover for pets 9 years
      \n and older. \n
    • \n
    • \n Easy and quick application over the phone or online.\n
    • \n
    • \n Get back up to 85% of eligible vet bills*, to a maximum of $20,000 per year.\n
    • \n
    • \n \tReceive a 10% multi-pet discount when you insure more than one dog or cat.\n
    • \n
    • \n Choose an excess to lower your premium.\n
    • \n
    • \n \tVisit any registered vet in Australia.\n
    • \n
    • \n 30 day cooling off period, so you can make sure it is the right cover for you.\n
    • \n
    \n \n

    \n Plus when you get Guide Dogs Pet Insurance you will be helping support Guide Dogs Australia provide \n vital services to people who need them.\n

    \n

    \n \n * Some pre-existing conditions and certain illnesses are excluded. Terms, conditions, exclusions,\n benefit limits, sub limits and annual condition limits may apply. Eligible vet bills only, claim for\n reimbursement. Benefit Percentage varies based on the level of cover selected.\n \n

    \n `;\n break;\n default:\n break;\n }\n return htmlContent;\n }\n}\n","\nexport enum Gender {\n Female = 2,\n Male = 1\n}\n","import {\n ApplicationRef, ComponentFactoryResolver, ComponentRef, Injectable, Injector, ReflectiveInjector, ViewContainerRef,\n ResolvedReflectiveProvider, Type\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Components helper class to easily work with\n * allows to:\n * - get application root view container ref\n */\n@Injectable()\nexport class ComponentsHelper {\n public root: ViewContainerRef;\n protected applicationRef: ApplicationRef;\n protected componentFactoryResolver: ComponentFactoryResolver;\n protected injector: Injector;\n\n public constructor(\n applicationRef: ApplicationRef,\n componentFactoryResolver: ComponentFactoryResolver,\n injector: Injector\n ) {\n this.applicationRef = applicationRef;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n }\n\n public getDocument(): any {\n return this.injector.get(DOCUMENT);\n }\n\n /**\n * In some cases, like using ngUpgrate,\n * you need to explicitly set view container ref\n * to made this method working you need to add:\n * ```typescript\n * @Component({\n * selector: 'my-app',\n * ...\n * })\n * export class MyApp {\n * constructor(componentsHelper: ComponentsHelper, viewContainerRef: ViewContainerRef) {\n * // A Default view container ref, usually the app root container ref.\n * // Has to be set manually until we can find a way to get it automatically.\n * componentsHelper.setRootViewContainerRef(viewContainerRef)\n * }\n * }\n * ```\n */\n public setRootViewContainerRef(value: ViewContainerRef): void {\n this.root = value;\n }\n\n /**\n * This is a name conventional class to get application root view component ref\n * @returns {ViewContainerRef} - application root view component ref\n */\n public getRootViewContainerRef(): ViewContainerRef {\n // https://github.com/angular/angular/issues/9293\n if (this.root) {\n return this.root;\n }\n\n const comps = this.applicationRef.components;\n\n if (!comps.length) {\n throw new Error(`ApplicationRef instance not found`);\n }\n\n try {\n /* one more ugly hack, read issue above for details */\n const rootComponent = (this.applicationRef as any )._rootComponents[0];\n this.root = rootComponent._hostElement.vcRef;\n return this.root;\n } catch (e) {\n throw new Error(`ApplicationRef instance not found`);\n }\n }\n\n /**\n * Creates an instance of a Component and attaches it to the View Container found at the\n * `location` specified as {@link ViewContainerRef}.\n *\n * You can optionally provide `providers` to configure the {@link Injector} provisioned for this\n * Component Instance.\n *\n * Returns {@link ComponentRef} representing the newly created Component.\n * @param componentClass - @Component class\n * @param location - reference to the location\n * @param providers - optional array of providers\n * @returns {ComponentRef} - returns ComponentRef\n */\n public appendNextToLocation(componentClass: Type,\n location: ViewContainerRef,\n providers?: ResolvedReflectiveProvider[]): ComponentRef {\n let componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentClass);\n let parentInjector = location.parentInjector;\n let childInjector: Injector = parentInjector;\n if (providers && providers.length > 0) {\n childInjector = ReflectiveInjector.fromResolvedProviders(providers, parentInjector);\n }\n\n return location.createComponent(componentFactory, location.length, childInjector);\n }\n\n /**\n * Helper methods to add ComponentClass(like modal backdrop) with options\n * of type ComponentOptionsClass to element next to application root\n * or next to provided instance of view container\n * @param componentClass - @Component class\n * @param componentOptionsClass - options class\n * @param options - instance of options\n * @returns {ComponentRef} - returns ComponentRef\n */\n public appendNextToRoot(componentClass: Type,\n componentOptionsClass: any,\n options: any): ComponentRef {\n let location = this.getRootViewContainerRef();\n let providers = ReflectiveInjector.resolve([\n {provide: componentOptionsClass, useValue: options}\n ]);\n return this.appendNextToLocation(componentClass, location, providers);\n }\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations'\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { TypeaheadModule } from './shared/typeahead/index';\nimport { DatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { RecaptchaModule } from 'ng-recaptcha'\nimport { RecaptchaLoaderService } from 'ng-recaptcha'\n\n\nimport { SubscriptionService } from './services/subscription.service';\nimport { FileService } from './services/file.service';\n\nimport { AppComponent } from './app.component';\nimport { BuyComponent } from './buy/buy.component';\nimport { PetFormComponent } from './buy/pet-form.component';\nimport { CompareComponent } from './compare/compare.component';\nimport { HaveCallComponent } from './have-call/have-call.component';\nimport { AboutYouComponent } from './about-you/about-you.component';\nimport { ThankYouComponent } from './thank-you/thank-you.component';\nimport { PaymentGatewayComponent } from './payment-gateway/payment-gateway.component';\nimport { ModelValidationDisplayComponent } from './shared/model-validation-display.component';\n\nimport { AddressTypeaheadDirective } from './shared/address.directive';\nimport { ValidationDirective } from './shared/model-field-validation.directive';\n\nimport { routing, appRoutingProviders } from './app.routing';\n\nimport {\n KeysPipe,\n ProtocolPipe,\n CapitalizePipe,\n EmptyValuePipe,\n RemoveSpacesPipe,\n CustomCurrencyPipe\n} from './shared/tools.pipe';\nimport {\n SortInsurancesPipe,\n FilterShortListPipe,\n FilterPromotionListPipe\n} from './compare/insurances.pipe';\nimport { ProductQuestionComponent } from './buy/product-question.component';\n\n\n@NgModule({\n imports: [\n BrowserModule,\n routing,\n FormsModule,\n HttpClientModule,\n TooltipModule.forRoot(),\n TypeaheadModule,\n DatepickerModule.forRoot(),\n RecaptchaModule,\n BrowserAnimationsModule\n ],\n declarations: [\n AppComponent,\n BuyComponent,\n PetFormComponent,\n CompareComponent,\n ThankYouComponent,\n AboutYouComponent,\n HaveCallComponent,\n PaymentGatewayComponent,\n ModelValidationDisplayComponent,\n SortInsurancesPipe,\n FilterShortListPipe,\n FilterPromotionListPipe,\n KeysPipe,\n ProtocolPipe,\n EmptyValuePipe,\n CapitalizePipe,\n RemoveSpacesPipe,\n CustomCurrencyPipe,\n ValidationDirective,\n AddressTypeaheadDirective,\n ProductQuestionComponent\n ],\n providers: [\n appRoutingProviders,\n SubscriptionService,\n RecaptchaLoaderService,\n FileService\n ], \n bootstrap: [\n AppComponent\n ],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA\n ]\n})\nexport class AppModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseService } from './base.service';\n\nimport 'rxjs/add/operator/toPromise';\nimport { ToolsMethods } from '../shared/tools.methods';\n\nimport { User } from '../model/user';\nimport { State } from '../model/state.enum';\n\n@Injectable()\nexport class DiscountService extends BaseService {\n\n constructor(private http: HttpClient) {\n super();\n }\n\n isCustomerEligibleForSeniorsDiscount(user: User): Promise {\n let state: string = State[user.address.state];\n let dob: string = ToolsMethods.getDateAsString(user.getDoB());\n\n let url = this.baseUrl + 'api/Petsure/IsCustomerEligibleForSeniorsDiscount/' + state + '/' + dob;\n return this.http.get(url, {headers: this.headers})\n .toPromise()\n .then((response: boolean) => {\n return response;\n })\n .catch(this.handleError);\n }\n\n\n getDiscount(numberOfPet: number, productCode: string): Promise {\n let url = this.baseUrl + 'api/Petsure/GetDiscount/' + numberOfPet + '/' + productCode;\n return this.http.get(url, {headers: this.headers})\n .toPromise()\n .then((response: number) => {\n return response;\n })\n .catch(this.handleError);\n }\n\n private handleError(error: any): Promise {\n console.error('An error occurred', error); // for demo purposes only\n return Promise.reject(error.message || error);\n }\n}\n","import { ModuleWithProviders } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { PaymentGatewayComponent } from './payment-gateway/payment-gateway.component';\nimport { ThankYouComponent } from './thank-you/thank-you.component';\nimport { AboutYouComponent } from './about-you/about-you.component';\nimport { CompareComponent } from './compare/compare.component';\nimport { BuyComponent } from './buy/buy.component';\n\nimport { PaymentGatewayResolve } from './payment-gateway/payment-gateway.resolve';\nimport { AboutYouResolve } from './about-you/about-you.resolve';\nimport { ThankYouResolve } from './thank-you/thank-you.resolve';\nimport { PremiumResolve } from './compare/premium.resolve';\nimport { BuyRouteGuard } from './buy/buy-route.guard';\n\nimport { ApplicationService } from './services/application.service';\nimport { PromotionService } from './services/promotion.service';\nimport { DiscountService } from './services/discount.service';\nimport { PremiumService } from './services/premium.service';\nimport { BreedsService } from './services/breeds.service';\nimport { ReCAPTCHAService } from './services/recaptcha.service';\nimport { ClientService } from './services/client.service';\nimport { QuoteService } from './services/quote.service';\n\nconst appRoutes: Routes = [\n {\n path: '',\n component: AboutYouComponent,\n resolve: {\n premium: AboutYouResolve\n },\n data: { name: 'About' }\n },\n {\n path: 'compare',\n component: CompareComponent,\n resolve: {\n premium: PremiumResolve\n },\n data: { name: 'Compare' }\n },\n {\n path: 'buy',\n component: BuyComponent,\n canActivate: [BuyRouteGuard],\n data: { name: 'Buy' }\n },\n {\n path: 'payment-gateway',\n component: PaymentGatewayComponent,\n resolve: {\n insuredPets: PaymentGatewayResolve\n },\n data: {\n name: 'Payment gateway'\n }\n },\n {\n path: 'thank-you',\n component: ThankYouComponent,\n resolve: {\n insuredPets: ThankYouResolve\n },\n data: {\n name: 'Thank you',\n hasBefore: false\n }\n },\n {\n path: 'thank-you-s',\n component: ThankYouComponent,\n resolve: {\n insuredPets: ThankYouResolve\n },\n data: {\n name: 'Thank you',\n hasBefore: true\n }\n }\n];\n\nexport const appRoutingProviders: any[] = [\n PaymentGatewayResolve,\n ApplicationService,\n PromotionService,\n AboutYouResolve,\n ThankYouResolve,\n DiscountService,\n PremiumResolve,\n PremiumService,\n BuyRouteGuard,\n BreedsService,\n ReCAPTCHAService,\n ClientService,\n QuoteService\n];\n\nexport const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);\n","//User story - 31124 - Choosi PDDO Pet STP\nexport class PDDOSelectedDetails {\n\n static getBlank(): PDDOSelectedDetails {\n return new PDDOSelectedDetails('','');\n //return new PDDOSelectedDetails('','', '', '', '', '');\n }\n\n constructor(\n public title: string,\n // public firstTerms: string, \n public benefits: string,\n // public note: string,\n //public secondTerms: string,\n //public errorMessage: string\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { BaseService } from './base.service';\n\nimport 'rxjs/add/operator/toPromise';\n\n\n@Injectable()\nexport class FileService extends BaseService {\n constructor(private http: HttpClient) {\n super();\n }\n\n private getFileContentAsString(filePath:string):Promise{\n var headers = new HttpHeaders({'Content-Type': 'text/plain'}); \n return this.http.get(filePath, {headers, responseType: \"text\"})\n .toPromise()\n .then((response) => { \n return response })\n .catch(this.handleError);\n }\n\n private handleError(error: any): Promise {\n console.error('An error occurred', error); // for demo purposes only\n return Promise.reject(error.message || error);\n }\n\n renderLoadScript(paymentType:string, userId:string, quoteId:string){\n var paymentGatewayLoadScript = document.createElement(\"script\");\n paymentGatewayLoadScript.id = \"showHidePaymentGateWayCredit\";\n \n if(document.getElementById(\"showHidePaymentGateWayCredit\"))\n {\n document.body.removeChild(document.getElementById(\"showHidePaymentGateWayCredit\"));\n }\n \n //Set payment-gateway web-component properties explicitly, because it is not applied from html\n let paymentGatewayLoadString :string = `\n document.querySelector('payment-register')[\"applicationname\"] = \"choosipet\";\n document.querySelector('payment-register')[\"bankinfoname\"]=\"petsure_qvalent\";\n document.querySelector('payment-register')[\"cdcrn\"]=\"`+userId+`-`+quoteId+`\"; \n `;\n\n this.getFileContentAsString(\"assets/js/payment-gateway-load.js\").then((response)=>{\n paymentGatewayLoadString += response;\n if(paymentType === \"CC\"){\n paymentGatewayLoadString += `\n document.getElementsByTagName('payment-register')[0].showcreditcard = true;\n document.getElementsByTagName('payment-register')[0].disablevalidation = false;\n ` \n }\n else{\n paymentGatewayLoadString += `\n document.getElementsByTagName('payment-register')[0].showcreditcard = false;\n document.getElementsByTagName('payment-register')[0].disablevalidation = false;\n `;\n } \n paymentGatewayLoadScript.innerHTML = paymentGatewayLoadString;\n document.body.appendChild(paymentGatewayLoadScript);\n });\n }\n\n renderOnPaymentTypeChange()\n {\n var paymentGatewayPaymentTypeChangeScript = document.createElement(\"script\");\n paymentGatewayPaymentTypeChangeScript.id = \"paymentGatewayPaymentTypeChange\";\n \n if(document.getElementById(\"paymentGatewayPaymentTypeChange\"))\n {\n document.body.removeChild(document.getElementById(\"paymentGatewayPaymentTypeChange\"));\n }\n \n //Set payment-gateway web-component properties explicitly, because it is not applied from html\n let paymentGatewayPaymentTypeChangeString :string;\n\n this.getFileContentAsString(\"assets/js/payment-gateway-pament-type-switch.js\").then((response)=>{ \n paymentGatewayPaymentTypeChangeScript.innerHTML = response;\n document.body.appendChild(paymentGatewayPaymentTypeChangeScript);\n });\n }\n}","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 = \"crnd\";","import { PaymentMethod } from './payment-method';\n\nexport class CreditCard extends PaymentMethod {\n\n static getBlank(): CreditCard {\n return new CreditCard('', '', null, null);\n }\n\n constructor(\n public cardOwnerName: string,\n public cardNumber: string,\n public cardExpiryMonth: number,\n public cardExpiryYear: number\n ) {\n super();\n }\n\n getExpirationFullYear(): number {\n return Number((new Date().getFullYear() / 100).toFixed(0) + '' + this.cardExpiryYear);\n }\n\n getExpirationDate(): Date {\n return new Date(this.getExpirationFullYear(), this.cardExpiryMonth);\n }\n\n getExpiryDateOneWord(): string {\n return '' + this.cardExpiryMonth + this.cardExpiryYear;\n }\n\n proceedValidation(step: number = 0): boolean {\n let now = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());\n\n if (this.cardOwnerName !== null && !this.cardOwnerName.match(/^[a-z\\s\\-]+$/i)) {\n this.setError('cardOwnerName', 'The card owner\\'s name may only contain letters');\n }\n\n if (this.cardOwnerName == null || this.cardOwnerName.trim().length < 1) {\n this.setError('cardOwnerName', 'Please enter the card owner\\'s name');\n }\n\n if (this.cardNumber !== null && this.cardNumber.trim().length < 13) {\n this.setError('cardNumber', 'The card number may not be less than 13 digits');\n }\n\n if (this.cardNumber !== null && this.cardNumber.trim().length > 16) {\n this.setError('cardNumber', 'The card number may not be more than 16 digits');\n }\n\n if (this.cardNumber === null || this.cardNumber.trim() === '') {\n this.setError('cardNumber', 'Please enter a valid MasterCard or VISA credit card number');\n }\n\n if (this.isPropertyValid('cardNumber')) {\n if (!this.cardNumber.match(/^((5[1-5])|4|34|37|6011)/)) {\n this.setError('cardNumber', 'Sorry we only accept MasterCard or VISA credit cards');\n }\n\n if (!this.cardNumber.match(/^[0-9]{13,16}$/i)) {\n this.setError('cardNumber', 'The card number may only contain numbers');\n }\n\n if (!this.lunhCheck()) {\n this.setError('cardNumber', 'Please enter a valid MasterCard or VISA credit card number');\n }\n }\n\n if (this.cardExpiryMonth < 1 || this.cardExpiryMonth > 12) {\n this.setError('cardExpiryMonth', 'The month of expiry must be between 1-12');\n }\n\n if (!this.cardExpiryMonth) {\n this.setError('cardExpiryMonth', 'Please enter a month of expiry');\n }\n\n if (this.cardExpiryYear < 1 || this.cardExpiryYear > 50) {\n this.setError('cardExpiryYear', 'The year of expiry must be between 1-50');\n }\n\n if (!this.cardExpiryYear) {\n this.setError('cardExpiryYear', 'Please enter a year of expiry');\n }\n\n if (now.getTime() > this.getExpirationDate().getTime()) {\n this.setError('cardExpiryDate', 'The card\\'s date of expiry must be in the future');\n }\n\n return this.isValid();\n }\n\n lunhCheck(): boolean {\n let luhnChk = (function (arr) {\n return function (ccNum) {\n let\n len = ccNum.length,\n bit = 1,\n sum = 0,\n val;\n\n while (len) {\n val = parseInt(ccNum.charAt(--len), 10);\n sum += (bit ^= 1) ? arr[val] : val; // tslint:disable-line no-bitwise\n }\n\n return sum && sum % 10 === 0;\n };\n }([0, 2, 4, 6, 8, 1, 3, 5, 7, 9]));\n\n return luhnChk(this.cardNumber);\n }\n}\n","import { Directive, ElementRef, Input, DoCheck, OnInit, ChangeDetectorRef, Renderer2 } from '@angular/core';\n\nimport { ModelValidator } from '../model/model-validator';\n\n@Directive({\n selector: '[fieldValidation]'\n})\nexport class ValidationDirective implements DoCheck, OnInit {\n\n @Input('fieldValidation') model: ModelValidator;\n\n @Input('fieldName') field: string;\n\n @Input('validationStep') step: number = 0;\n\n /**\n * When true it will trigger the validation on change, otherwise it will not do anything.\n *\n * @type {boolean}\n */\n @Input('fieldGuard') guard: boolean = true;\n\n process: any;\n\n oldValue: any = '';\n\n constructor(private el: ElementRef, private renderer: Renderer2, private ref: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.oldValue = this.model[this.field];\n }\n\n ngDoCheck(): void {\n if (this.oldValue !== this.model[this.field]) {\n this.oldValue = this.model[this.field];\n if (this.guard) {\n clearTimeout(this.process);\n this.process = setTimeout(\n () => {\n this.validateModel();\n },\n 400\n );\n }\n }\n !this.model.isPropertyValid(this.field) ? this.renderer.addClass(this.el.nativeElement, 'form-invalid') : this.renderer.removeClass(this.el.nativeElement, 'form-invalid');\n }\n\n validateModel() {\n this.model.validate(this.step);\n this.ref.detectChanges();\n }\n}\n","export class CoverField {\n\n constructor(\n public id: number,\n public order: number,\n public name: string,\n public helpText: string,\n public isVisible: boolean\n ) {}\n}\n","export class CoverFieldValue {\n\n constructor(\n public id: number,\n public order: number,\n public html: string ,\n public name: string\n ) {}\n}\n","import {latinMap} from './latin-map';\n\nexport class TypeaheadUtils {\n public static latinMap: any = latinMap;\n\n public static latinize(str: string): string {\n if (!str) {\n return '';\n }\n return str.replace(/[^A-Za-z0-9\\[\\] ]/g, function (a: string): string {\n return TypeaheadUtils.latinMap[a] || a;\n });\n }\n\n public static sanitize(value: string): string {\n return value.trim().replace(/[ ]{2,}/g, ' ');\n }\n\n public static escapeRegexp(queryToEscape: string): string {\n // regex: capture the whole query string and replace it with the string\n // that will be used to match the results, for example if the capture is\n // 'a' the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n }\n\n public static tokenize(str: string, wordRegexDelimiters = ' ', phraseRegexDelimiters = ''): Array {\n str = TypeaheadUtils.sanitize(str);\n let regexStr: string =\n '(?:['\n + phraseRegexDelimiters\n + '])([^'\n + phraseRegexDelimiters\n + ']+)(?:['\n + phraseRegexDelimiters\n + '])|([^'\n + wordRegexDelimiters\n + ']+)';\n let preTokenized: string[] = str.split(new RegExp(regexStr, 'g'));\n let result: string[] = [];\n let preTokenizedLength: number = preTokenized.length;\n let token: string;\n let replacePhraseDelimiters = new RegExp('[' + phraseRegexDelimiters + ']+', 'g');\n\n for (let i = 0; i < preTokenizedLength; i += 1) {\n token = preTokenized[i];\n if (token && token.length && token !== wordRegexDelimiters) {\n result.push(token.replace(replacePhraseDelimiters, ''));\n }\n }\n\n return result;\n }\n\n public static getValueFromObject(object: any, option: string): string {\n if (!option || typeof object !== 'object') {\n return object.toString();\n }\n\n if (option.endsWith('()')) {\n let functionName = option.slice(0, option.length - 2);\n return object[functionName]().toString();\n }\n\n let properties: string = option.replace(/\\[(\\w+)\\]/g, '.$1')\n .replace(/^\\./, '');\n let propertiesArray: string[] = properties.split('.');\n\n for (let property of propertiesArray) {\n if (property in object) {\n object = object[property];\n }\n }\n return object.toString();\n }\n}\n","import { Pet } from '../model/pet';\nimport { User } from '../model/user';\nimport { BrandsEnum } from '../model/brands.enum';\n\nexport class PremiumsHelper {\n\n // ----- EXCESS\n public static getDefaultExcess(brandId: number, productBenefitId: number): number {\n if (BrandsEnum.GuideDogs !== brandId) {\n return 0;\n }\n switch (productBenefitId) {\n case 198:\n return 100;\n case 199:\n case 200:\n return 50;\n default:\n return 0;\n }\n }\n\n public static getExcessOptions(brandId: number, productBenefitId: number): number[] {\n if (BrandsEnum.GuideDogs !== brandId) {\n return [ 0 ];\n }\n switch (productBenefitId) {\n case 198:\n return [ 100, 0 ];\n case 199:\n case 200:\n return [ 50, 0 ];\n default:\n return [ 0 ];\n }\n }\n\n // ----- ROUTINE CARES PRODUCT CODES\n public static getRoutineCareProductCode(productCode: string): string {\n switch (productCode) {\n case 'PR102':\n return 'PR103';\n case 'PR111':\n return 'PR110';\n case 'PR131':\n return 'PR132';\n default:\n return productCode;\n }\n }\n\n public static getProductCode(productCode: string, hasRoutine: boolean): string {\n if (!hasRoutine) {\n return productCode;\n }\n return PremiumsHelper.getRoutineCareProductCode(productCode);\n }\n\n // ----- PRODUCT CODES\n public static getProductCodes(step: number, user: User, pet: Pet): string[] {\n switch (step) {\n case 1:\n return PremiumsHelper.getFirstStepProductCodes(user, pet);\n case 2:\n return PremiumsHelper.getSecondProductCodes(user, pet);\n case 3:\n return PremiumsHelper.getThirdStepProductCodes(user, pet);\n default:\n return [];\n }\n }\n\n public static getPartnerCodes(step: number, user: User, pet: Pet): string[] {\n switch (step) {\n case 1:\n return PremiumsHelper.getFirstStepPartnerCodes(user, pet);\n case 2:\n return PremiumsHelper.getSecondPartnerCodes(user, pet);\n case 3:\n return PremiumsHelper.getThirdStepPartnerCodes(user, pet);\n default:\n return [];\n }\n }\n\n public static collectProductCodes(pets: Pet[]): string[] {\n let products: Set = new Set();\n for (let pet of pets) {\n if (pet.cover) {\n products.add(pet.cover.petSureProductCode);\n }\n }\n return Array.from(products.values());\n }\n\n public static collectPartnerCodes(pets: Pet[]): string[] {\n let partners: Set = new Set();\n for (let pet of pets) {\n if (pet.cover) {\n partners.add(pet.cover.petSurePartnerCode);\n }\n }\n return Array.from(partners.values());\n }\n\n private static getFirstStepProductCodes(user: User, pet: Pet): string[] {\n if (pet.isOver9()) {\n return ['PR122'];\n }\n if (user.isOver50()) {\n return ['PR102', 'PR122','PR131'];\n }\n return ['PR102', 'PR111','PR122','PR131'];\n }\n\n private static getSecondProductCodes(user: User, pet: Pet): string[] {\n if (pet.isOver9()) {\n return ['PR101','PR122'];\n }\n if (user.isOver50()) {\n return ['PR102', 'PR111', 'PR101','PR122'];\n }\n return ['PR102', 'PR101','PR122'];\n }\n\n private static getThirdStepProductCodes(user: User, pet: Pet): string[] {\n if (pet.isOver9()) {\n return [];\n }\n if (user.isOver50()) {\n return ['PR101', 'PR103', 'PR110','PR122','PR132'];\n }\n return ['PR101', 'PR103', 'PR110','PR122','PR132'];\n }\n \n // ----- PARTNER CODES\n\n private static getFirstStepPartnerCodes(user: User, pet: Pet): string[] {\n if (pet.isOver9()) {\n return ['RS456', 'PM456', 'GU456'];\n }\n if (user.isOver50()) {\n return ['RS456', 'AH456', 'GU456'];\n }\n return ['RS456', 'PM456', 'GU456'];\n }\n\n private static getSecondPartnerCodes(user: User, pet: Pet): string[] {\n if (pet.isOver9()) {\n return ['GD456', 'RL456', 'AH456'];\n }\n if (user.isOver50()) {\n return ['GD456', 'RL456', 'PM456'];\n }\n return ['GD456', 'RL456', 'AH456'];\n }\n\n private static getThirdStepPartnerCodes(user: User, pet: Pet): string[] {\n return [];\n }\n}\n","import { PaymentMethod } from './payment-method';\n\nexport class Account extends PaymentMethod {\n\n static getBlank(): Account {\n return new Account('', '', '');\n }\n\n constructor(\n public name: string,\n public BSB: string,\n public accountNumber: string\n ) {\n super();\n }\n\n getExpiryDateOneWord(): string {\n return '0000';\n }\n\n proceedValidation(step: number = 0): boolean {\n if (this.name !== null && !this.name.match(/^[a-z\\s\\-]+$/i)) {\n this.setError('name', 'The account name may only contain letters');\n }\n\n if (this.name !== null && this.name.length > 100) {\n this.setError('name', 'The account name must be between 1-100 characters');\n }\n\n if (this.name === null || this.name.trim().length < 1) {\n this.setError('name', 'Please enter an accout name');\n }\n\n if (this.BSB !== null && !this.BSB.match(/^[0-9]{6}$/i)) {\n this.setError('BSB', 'The BSB number must be exactly 6 digits');\n }\n\n if (this.BSB !== null && this.BSB.length !== 6) {\n this.setError('BSB', 'The BSB number must be exactly 6 digits');\n }\n\n if (this.BSB === null || this.BSB.length < 1) {\n this.setError('BSB', 'Please enter a 6-digit BSB number');\n }\n\n if (this.accountNumber !== null && !this.accountNumber.match(/^[0-9]{1,9}$/i)) {\n this.setError('accountNumber', 'The account number may only contain numbers');\n }\n\n if (this.accountNumber !== null && this.accountNumber.length > 9) {\n this.setError('accountNumber', 'The account number may not be more than 9 digits');\n }\n\n if (this.accountNumber === null || this.accountNumber.trim().length < 1) {\n this.setError('accountNumber', 'Please enter an account number');\n }\n return this.isValid();\n }\n}\n","export class AustralianPostCodes {\n static statesPostCodes: any = {\n 'NSW': [\n [1001, 1902],\n [2000, 2599],\n [2611],\n [2618],\n [2619, 2899],\n [2921, 2999],\n [3644],\n [3691],\n [3707]\n ],\n 'ACT': [\n [200, 221],\n [2600, 2618],\n [2620],\n [2900, 2920]\n ],\n 'VIC': [\n [3000, 3999],\n [8000, 8627]\n ],\n 'QLD': [\n [4000, 4999],\n [9000, 9944]\n ],\n 'SA': [\n [5000, 5799]\n ],\n 'WA': [\n [6000, 6999]\n ],\n 'TAS': [\n [7000, 7923]\n ],\n 'NT': [\n [800, 899],\n [906, 909],\n [4825]\n ]\n };\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { BrandsSorting } from '../model/brands.enum';\nimport { Insurance } from '../model/insurance';\nimport { Frequency } from '../model/frequency.enum';\n\n@Pipe({\n name: 'sortInsurances'\n})\nexport class SortInsurancesPipe implements PipeTransform {\n transform(array: Array, type: string, partnerId: number): Array {\n if (array != null) {\n switch (type) {\n case 'price':\n return array.sort((a: any, b: any) => {\n return a.getPrice(Frequency.Year) - b.getPrice(Frequency.Year);\n });\n case '-price':\n return array.sort((a: any, b: any) => {\n return b.getPrice(Frequency.Year) - a.getPrice(Frequency.Year);\n });\n case 'brand':\n if(partnerId === 1 || partnerId === 2 || partnerId === 3)\n {\n return array.sort((a: any, b: any) => {\n if (a.brandId === b.brandId) {\n return a.getPrice(Frequency.Year) - b.getPrice(Frequency.Year);\n }\n return BrandsSorting.getBrandOrder(a.brandId) - BrandsSorting.getBrandOrder(b.brandId);\n });\n }\n else\n {\n return array.sort((a: any, b: any) => {\n if (a.brandId === b.brandId) {\n return a.displayOrder - b.displayOrder;\n }\n return BrandsSorting.getBrandOrder(a.brandId) - BrandsSorting.getBrandOrder(b.brandId);\n });\n }\n case 'offer': \n if(partnerId === 1 || partnerId === 2 || partnerId === 3)\n {\n return array.sort((a: any, b: any) => {\n if (a.insurancePromotion && b.insurancePromotion) {\n return a.getPrice(Frequency.Year) - b.getPrice(Frequency.Year);\n }\n if (a.insurancePromotion) {\n return -1;\n }\n if (b.insurancePromotion) {\n return 1;\n }\n return a.getPrice(Frequency.Year) - b.getPrice(Frequency.Year);\n });\n }\n else\n {\n return array.sort((a: any, b: any) => {\n if (a.insurancePromotion && b.insurancePromotion) {\n return a.displayOrder - b.displayOrder;\n }\n if (a.insurancePromotion) {\n return -1;\n }\n if (b.insurancePromotion) {\n return 1;\n }\n return a.displayOrder - b.displayOrder;\n });\n }\n default:\n if(partnerId === 1 || partnerId === 2 || partnerId === 3)\n {\n // console.info('PARTNERID: ' + partnerId);\n return array.sort((a: any, b: any) => {\n return a.getPrice(Frequency.Year) - b.getPrice(Frequency.Year);\n });\n }\n else\n {\n // console.info('PARTNERID: ' + partnerId);\n return array.sort((a: any, b: any) => {\n return a.displayOrder - b.displayOrder;\n });\n }\n }\n }\n return array;\n }\n}\n\n@Pipe({\n name: 'filterShortList',\n pure: false\n})\nexport class FilterShortListPipe implements PipeTransform {\n transform(array: Array, shortListOnly: boolean): Array {\n if (array != null && shortListOnly) {\n return array.filter((a: any) => {\n return a.shortListed;\n });\n }\n return array;\n }\n}\n\n\n@Pipe({\n name: 'filterPromotionList'\n})\nexport class FilterPromotionListPipe implements PipeTransform {\n transform(array: Array, promotionOnly: boolean): Array {\n if (array != null && promotionOnly) {\n return array.filter((a: any) => {\n return a.originalPriceText !== null && a.originalPriceText !== '';\n });\n }\n return array;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, Resolve, ActivatedRouteSnapshot } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Pet } from '../model/pet';\nimport { User } from '../model/user';\nimport { Theme } from '../model/theme';\nimport { Breed } from '../model/breed';\nimport { Cover } from '../model/cover';\nimport { Loading } from '../model/loading';\nimport { Insurance } from '../model/insurance';\n\nimport { PremiumsHelper } from '../helpers/premiums.helper';\n\nimport { SubscriptionService } from '../services/subscription.service';\nimport { ApplicationService } from '../services/application.service';\nimport { PremiumService } from '../services/premium.service';\nimport { ClientService } from '../services/client.service';\nimport { BreedsService } from '../services/breeds.service';\nimport { QuoteService } from '../services/quote.service';\nimport { ProductQuestions } from '../model/productQuestions';\nimport { InsuranceCovers } from '../model/insurance-covers';\n\n@Injectable()\nexport class AboutYouResolve implements Resolve {\n\n subscriptionLoading: BehaviorSubject;\n loading: Loading;\n\n constructor(\n private subscriptionService: SubscriptionService,\n private applicationService: ApplicationService,\n private premiumService: PremiumService,\n private clientService: ClientService,\n private breedsService: BreedsService,\n private quoteService: QuoteService,\n private router: Router\n ) {\n this.subscriptionLoading = subscriptionService.getSubscriptions('loading');\n this.subscriptionLoading.subscribe(\n loading => {\n this.loading = loading;\n });\n }\n\n resolve(route: ActivatedRouteSnapshot): Promise {\n try {\n this.initTheme(route);\n let clientParam = 'ClientToken';\n let errorParam = 'error';\n let tokenParam = 'TokenID';\n\n if (route.queryParams.hasOwnProperty(errorParam)) {\n let errorCode: number = Number(route.queryParams[errorParam]);\n this.handleErrorCode(errorCode);\n }\n\n if (route.queryParams.hasOwnProperty(tokenParam)) {\n return this.updateCover(route.queryParams[tokenParam])\n .then(() => { return true; });\n } else if (route.queryParams.hasOwnProperty(clientParam)) {\n this.loading.activated = true;\n this.loading.loadingText = 'Retrieving user data';\n this.subscriptionLoading.next(this.loading);\n return this\n .updateClient(route.queryParams[clientParam])\n .then(() => { return true; });\n } else {\n this.loading.activated = false;\n this.subscriptionLoading.next(this.loading);\n return Promise.resolve(false);\n }\n } catch (e) {\n console.error(e.toString());\n }\n return Promise.resolve(false);\n }\n\n private initTheme(route: ActivatedRouteSnapshot) {\n let theme: Theme = this.subscriptionService.getSubscriptions('theme').getValue();\n\n let userIdParamName = 'UserID';\n if (route.queryParams.hasOwnProperty(userIdParamName)) {\n theme.userId = route.queryParams[userIdParamName];\n }\n\n let sourceParamName = 'Source';\n if (route.queryParams.hasOwnProperty(sourceParamName)) {\n theme.source = route.queryParams[sourceParamName];\n }\n }\n\n private updateClient(clientToken: string): Promise {\n return this.clientService\n .getClient(clientToken)\n .then(\n user => {\n this.subscriptionService.getSubscriptions('user').next(user);\n return true;\n },\n error => {\n return this.handleError('Error while retrieving the client', error);\n }\n );\n }\n\n private updateCover(quoteToken: string): Promise {\n this.loading.loadingText = 'Retrieving quote data';\n this.subscriptionLoading.next(this.loading);\n return this.applicationService\n .getApplication(quoteToken)\n .then(\n (result) => {\n return this.handleUpdateCoverResponse(result);\n },\n (error) => {\n return this.handleError('Error while retrieving the quote. This link has expired.', error);\n }\n );\n }\n\n private handleUpdateCoverResponse(result: any): Promise {\n this.subscriptionService.getSubscriptions('pets').next(result.pets);\n let insurance: Insurance = Insurance.getBlank();\n if (result.pets.length > 0) {\n insurance = Insurance.getCopy(result.pets[0].cover);\n insurance.createdDate = '';\n this.subscriptionService.getSubscriptions('pet').next(result.pets[0]);\n }\n this.subscriptionService.getSubscriptions('insurance').next(insurance);\n this.subscriptionService.getSubscriptions('cover').next(result.cover);\n this.subscriptionService.getSubscriptions('user').next(result.user);\n return this.findProducts(result.pets, insurance, result.user);\n }\n\n\n private findProducts(pets: Pet[], ins: Insurance, user: User): Promise {\n return this.quoteService\n .findProduct(ins)\n .then(\n (insurance) => {\n ins.brandId = insurance.brandId;\n ins.brandCode = insurance.brandCode;\n ins.insuranceName = insurance.insuranceName;\n ins.aboutBrand = insurance.aboutBrand;\n ins.brandLogo = insurance.brandLogo;\n ins.brandPhone = insurance.brandPhone;\n for (let pet of pets) {\n this.findBreed(pet);\n pet.cover.brandId = insurance.brandId;\n pet.cover.brandCode = insurance.brandCode;\n pet.cover.fields = insurance.fields;\n pet.cover.insuranceName = insurance.insuranceName;\n pet.cover.aboutBrand = insurance.aboutBrand;\n pet.cover.brandLogo = insurance.brandLogo;\n pet.cover.brandPhone = insurance.brandPhone;\n pet.cover.coolingOffDays = insurance.coolingOffDays;\n }\n this.subscriptionService.getSubscriptions('pets').next(pets);\n this.subscriptionService.getSubscriptions('pet').next(pets[0]);\n return this.findPremiums(user, pets);\n },\n (error) => {\n return this.handleError('Error while retrieving the brand', error);\n }\n );\n }\n\n\n private findBreed(pet: Pet) {\n this.breedsService\n .getBreeds(pet.petType)\n .subscribe(\n breeds => {\n let breedsFiltered: Breed[] = breeds.filter(\n breed => {\n return breed.breedCode === pet.breed.breedCode;\n }\n );\n pet.breed.breed = 'UNKNOWN';\n if (breedsFiltered.length > 0) {\n pet.breed.breed = breedsFiltered[0].breed;\n }\n },\n error => {\n pet.breed.breed = 'UNKNOWN';\n this.handleError('Error while retrieving the breed', error);\n }\n );\n }\n\n private findPremiums(user: User, pets: Pet[]): Promise {\n if (pets.length > 0) {\n let theme: Theme = this.subscriptionService.getSubscriptions('theme').getValue();\n \n return this.premiumService.getAllBenefitsAndPremiums(1, theme.id, user, pets[0]).then( (insuranceCover) => {\n \n return this.loadExtraPremiums(user, pets, theme, insuranceCover);\n \n },\n (error) => {\n return this.handleError('Error while retrieving the premiums', error);\n });\n\n \n } else {\n return Promise.resolve(false);\n }\n }\n\n private loadExtraPremiums(user: User, pets: Pet[], theme: Theme, insuranceCover: InsuranceCovers): Promise {\n let products: string[] = PremiumsHelper.getProductCodes(2, user, pets[0]);\n let partners: string[] = PremiumsHelper.getPartnerCodes(2, user, pets[0]);\n\n return this.premiumService.getAllPremiums(products, partners, theme.id, user, pets[0], insuranceCover.coverFields).then(\n (secondStageInsurances) => {\n insuranceCover.getInsurances().forEach(\n (insurance)=>{\n secondStageInsurances.insurances.push(insurance);\n });\n\n return this.loadRoutineCarePremiums(user, pets, theme, insuranceCover, secondStageInsurances);\n });\n\n }\n\n private loadRoutineCarePremiums(user: User, pets: Pet[], theme: Theme, insuranceCover: InsuranceCovers, secondStageInsurances: InsuranceCovers): Promise{\n let products = PremiumsHelper.getProductCodes(3, user, pets[0]);\n let partners = PremiumsHelper.getPartnerCodes(3, user, pets[0]);\n return this.premiumService.getAllPremiums(products, partners, theme.id, user, pets[0], insuranceCover.coverFields).then(\n (rcInsurances) => {\n rcInsurances.getInsurances().forEach(\n (insurance) => {\n this.updateRoutineCarePricesForProduct(secondStageInsurances, insurance);\n \n });\n return this.updatePetInsurance(secondStageInsurances, pets)\n });\n }\n\n private updatePetInsurance(insuranceCover: InsuranceCovers, pets: Pet[]){\n let valid: boolean = insuranceCover !== null;\n let brandInsuranceList: Insurance[] = [];\n for (let insurance of insuranceCover.getInsurances()) {\n if (pets[0].cover.brandId === insurance.brandId) {\n brandInsuranceList.push(insurance);\n }\n for (let pet of pets) {\n if (pet.cover.productBenefitId === insurance.productBenefitId) {\n let quoteDetailsId: number = pet.cover.quoteDetailsId;\n let routineCareSelected: boolean = pet.cover.routineCareSelected;\n let excessSelected: number = pet.cover.excessSelected;\n let createdDate: string = pet.cover.createdDate;\n pet.cover = Insurance.getCopy(insurance);\n pet.cover.quoteDetailsId = quoteDetailsId;\n pet.cover.createdDate = createdDate;\n pet.cover.setRoutineCare(routineCareSelected);\n pet.cover.setExcess(excessSelected);\n }\n }\n }\n if (valid) {\n let currentInsurance: Insurance;\n this.subscriptionService.getSubscriptions('insurance').subscribe(insurance => {\n currentInsurance = insurance;\n });\n currentInsurance = brandInsuranceList.find(x => x.productBenefitId == currentInsurance.productBenefitId && x.petSurePartnerCode == currentInsurance.petSurePartnerCode);\n this.subscriptionService.getSubscriptions('insurance').next(currentInsurance);\n this.subscriptionService.getSubscriptions('pet-covers').next(brandInsuranceList);\n this.subscriptionService.getSubscriptions('pets').next(pets);\n this.subscriptionService.getSubscriptions('productQuestions').next(ProductQuestions.getFromPets(pets, insuranceCover));\n this.loading.activated = false;\n this.subscriptionLoading.next(this.loading);\n this.router.navigate(['buy']);\n return false;\n } else {\n this.subscriptionService.getSubscriptions('pets').next([]);\n this.loading.activated = false;\n this.subscriptionLoading.next(this.loading);\n return true;\n }\n }\n\n private updateRoutineCarePricesForProduct(insuranceCovers: InsuranceCovers, insurance: Insurance) {\n // update the routine care price for all the insurances\n for (let i = 0; i < insuranceCovers.getInsurances().length; i++) {\n if (insuranceCovers.insurances[i].productBenefitId !== insurance.productBenefitId) {\n continue;\n }\n insuranceCovers.insurances[i]\n .mergeInsurancePricings(insurance.cloneInsurancePricings());\n insuranceCovers.insurances[i]\n .applyCurrentInsurancePricing();\n }\n }\n\n private disableLoading(error: string = '') {\n this.loading.activated = false;\n // to clear the errors\n this.loading.validate();\n if (error !== '') {\n this.loading.setError('searchingPremiumError', error);\n }\n this.subscriptionLoading.next(this.loading);\n }\n\n private handleErrorCode(code: number) {\n let message: string = '';\n switch (code) {\n case 1:\n message = 'An error occurred while processing the payment, please try again';\n break;\n case 2:\n message = 'An error has occurred, please try again';\n break;\n default:\n message = 'An error has occurred, please try again';\n break;\n }\n this.loading.setError('paymentProcessError', message);\n }\n\n private handleError(message: string, error: any): boolean {\n this.disableLoading(message);\n console.error(message);\n console.error(error);\n return true;\n }\n\n}\n","import { ModelValidator } from './model-validator';\nimport { Address } from './address';\nimport { Gender } from './gender.enum';\nimport { Promotion } from './promotion';\nimport { ToolsMethods } from '../shared/tools.methods';\n\nexport class User extends ModelValidator {\n\n static getBlank(id: number = 0): User {\n return new User(\n id, '', null, '', Gender.Male, '', '', // Mehedi\n null, null, null, '', '',\n Address.getBlank());\n }\n\n static getCopy(user: User): User {\n let newUser = User.getBlank();\n newUser.id = user.id;\n newUser.encryptedClientId = 'TestMehedi', // Mehedi\n newUser.token = user.token;\n newUser.title = user.title;\n newUser.gender = user.gender;\n newUser.firstName = user.firstName;\n newUser.lastName = user.lastName;\n newUser.bornDay = user.bornDay;\n newUser.bornMonth = user.bornMonth;\n newUser.bornYear = user.bornYear;\n newUser.contactNumber = user.contactNumber;\n newUser.email = user.email;\n if (user.address) {\n newUser.address = Address.getCopy(user.address);\n }\n if (user.promotion) {\n newUser.promotion = Promotion.getCopy(user.promotion);\n }\n newUser.eligibleForSenior = user.eligibleForSenior;\n newUser.petCriteriaID = user.petCriteriaID;\n newUser.excessSelected = user.excessSelected;\n return newUser;\n }\n\n constructor(\n public id: number,\n public encryptedClientId: string, // Mehedi\n public token: string,\n public title: string,\n public gender: Gender,\n public firstName: string,\n public lastName: string,\n public bornDay: number,\n public bornMonth: number,\n public bornYear: number,\n public contactNumber: string,\n public email: string,\n public address: Address,\n public promotion: Promotion = Promotion.getBlank(),\n public eligibleForSenior: boolean = false,\n public petCriteriaID: string = '',\n public excessSelected: number = 0\n ) {\n super();\n }\n\n getDoB(): Date {\n return new Date(this.bornYear, this.bornMonth - 1, this.bornDay);\n }\n\n isOver18(): boolean {\n let minDate = new Date(new Date().getFullYear() - 18, new Date().getMonth(), new Date().getDate());\n return minDate >= this.getDoB();\n }\n\n isOver50(): boolean {\n let minDate = new Date(new Date().getFullYear() - 50, new Date().getMonth(), new Date().getDate());\n return minDate >= this.getDoB();\n }\n\n isDateValid(): boolean {\n let d = this.getDoB();\n return (\n d.getFullYear() === Number(this.bornYear)\n && d.getMonth() === (this.bornMonth - 1)\n && d.getDate() === Number(this.bornDay)\n );\n }\n\n getFormattedPhoneNumber(): string {\n return ToolsMethods.cleanPhoneNumber(this.contactNumber);\n }\n\n proceedValidation(step: number = 0): boolean {\n\n if (this.firstName === null || this.firstName.trim().length < 1) {\n this.setError('firstName', 'Please enter your first name');\n }\n\n if (this.firstName !== null && this.firstName.length > 0 && this.firstName.length < 2) {\n this.setError('firstName', 'Your first name must be at least 2 characters');\n }\n\n if (this.firstName !== null && this.firstName.length > 30) {\n this.setError('firstName', 'Your first name may not be more than 30 characters');\n }\n\n if (this.firstName !== null && this.firstName.length > 0 && !this.firstName.match(/^[a-z'\\-]+$/i)) {\n this.setError('firstName', 'Your first name may only contain letters');\n }\n\n if (this.lastName === null || this.lastName.trim().length < 1) {\n this.setError('lastName', 'Please enter your last name');\n }\n\n if (this.lastName !== null && this.lastName.length > 0 && this.lastName.length < 2) {\n this.setError('lastName', 'Your last name must be at least 2 characters');\n }\n\n if (this.lastName !== null && this.lastName.length > 30) {\n this.setError('lastName', 'Your last name may not be more than 30 characters');\n }\n\n if (this.lastName !== null && this.lastName.length > 0 && !this.lastName.match(/^[a-z'\\-]+$/i)) {\n this.setError('lastName', 'Your last name may only contain letters');\n }\n\n if (step !== 20) {\n if (this.title === null || this.title.length === 0) {\n this.setError('title', 'Please select your title');\n }\n if (!this.bornDay) {\n this.setError('bornDay', 'Please enter your day of birth');\n }\n\n if (this.bornDay && this.bornDay < 1 || this.bornDay > 31) {\n this.setError('bornDay', 'Day of birth must be between 1-31');\n }\n\n if (!this.bornMonth) {\n this.setError('bornMonth', 'Please enter your month of birth');\n }\n\n if (this.bornMonth && this.bornMonth < 1 || this.bornMonth > 12) {\n this.setError('bornMonth', 'Month of birth must be between 1-12');\n }\n\n if (!this.bornYear) {\n this.setError('bornYear', 'Please enter your year of birth');\n }\n\n let nowDate: Date = new Date();\n if (this.bornYear && this.bornYear < (nowDate.getFullYear() - 112) || this.bornYear >= nowDate.getFullYear()) {\n this.setError(\n 'bornYear',\n 'Year of birth must be between ' + (nowDate.getFullYear() - 112) + '-' + (nowDate.getFullYear() - 18)\n );\n }\n\n if (this.isPropertyValid('bornDay')\n && this.isPropertyValid('bornMonth')\n && this.isPropertyValid('bornYear')\n && !this.isOver18()) {\n this.setError('bornDate', 'The policy holder must be over 18 years old');\n }\n\n if (this.isPropertyValid('bornDay')\n && this.isPropertyValid('bornMonth')\n && this.isPropertyValid('bornYear')\n && !this.isDateValid()) {\n this.setError('bornDate', 'The date is invalid');\n }\n }\n\n if (step !== 2) {\n if (!ToolsMethods.validatePhoneNumber(this.contactNumber)) {\n this.setError('contactNumber', 'Please enter a valid 10-digit Australian phone number including area code');\n }\n\n if (this.contactNumber !== null\n && ToolsMethods.cleanPhoneNumber(this.contactNumber).length === 10\n && ToolsMethods.cleanPhoneNumber(this.contactNumber).match(/[^0-9]+/i)\n ) {\n this.setError('contactNumber', 'Your phone number may only contain numbers');\n }\n }\n\n if (step !== 2 && step !== 20) {\n if (this.email === null || this.email.length < 5) {\n this.setError('email', 'Please enter a valid email address in the format name@address.com');\n }\n\n if (this.email !== null && this.email.length > 4\n && this.email !== null && !this.email.match(/^[^@\\s]+@[^\\.\\s]+(\\.[^\\.\\s]+)+/i)) {\n this.setError('email', 'Please enter a valid email address in the format name@address.com');\n }\n }\n\n // validation for final details\n if (step === 3 || step === 2) {\n if (this.gender === null) {\n this.setError('gender', 'Please select your gender');\n }\n\n if (this.gender !== null && this.gender !== Gender.Male && this.gender !== Gender.Female) {\n this.setError('gender', 'Please select male or female');\n }\n\n if (this.gender !== null && this.title !== null) {\n if (this.gender === Gender.Male) {\n if (this.title !== 'Mr' && this.title !== 'Dr') {\n this.setError('title', 'Please re-select your title');\n }\n } else if (this.gender === Gender.Female) {\n if (this.title !== 'Ms'\n && this.title !== 'Mrs'\n && this.title !== 'Miss'\n && this.title !== 'Dr'\n ) {\n this.setError('title', 'Please re-select your title');\n }\n }\n }\n }\n\n this.address.validate(step);\n return this.address.isValid() && this.isValid();\n }\n\n isValid() {\n return this.address.isValid() && super.isValid();\n }\n\n}\n","import { Insurance } from './insurance';\nimport { CoverField } from './cover-field';\n\nexport class InsuranceCovers {\n\n static getBlank(): InsuranceCovers {\n return new InsuranceCovers(new Map(), []);\n }\n\n constructor(\n public coverFields: Map,\n public insurances: Insurance[],\n public petToUpdate: number = null,\n public brandIdFilter: number = null\n ) {}\n\n getCoverFields() {\n return this.coverFields;\n }\n\n getInsurances() {\n return this.insurances;\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { RecommendedProduct } from '../model/recommended-product';\nimport { Frequency } from '../model/frequency.enum';\nimport { InsuredPet } from '../model/insured-pet';\nimport { Species } from '../model/species.enum';\nimport { Insurance } from '../model/insurance';\nimport { Loading } from '../model/loading';\nimport { Theme } from '../model/theme';\nimport { Cover } from '../model/cover';\nimport { User } from '../model/user';\nimport { Pet } from '../model/pet';\n\nimport { SubscriptionService } from '../services/subscription.service';\n\n@Component({\n selector: 'thank-you',\n templateUrl: 'thank-you.component.html'\n})\nexport class ThankYouComponent implements OnInit {\n\n FREQUENCY = Frequency;\n SPECIES = Species;\n\n // model\n pets: Pet[] = [];\n user: User;\n cover: Cover;\n insurance: Insurance;\n\n // subscriptions\n subscriptionPets: BehaviorSubject;\n subscriptionUser: BehaviorSubject;\n subscriptionCover: BehaviorSubject;\n subscriptionTheme: BehaviorSubject;\n subscriptionLoading: BehaviorSubject;\n subscriptionInsurance: BehaviorSubject;\n\n theme: Theme;\n loading: Loading;\n insuredPets: InsuredPet[] = [];\n hasBefore: boolean = false;\n recommendedProducts: RecommendedProduct[] = [];\n\n\n constructor(\n private route: ActivatedRoute,\n private subscriptionService: SubscriptionService,\n ) {\n this.loading = Loading.getBlank();\n this.loading.activated = true;\n this.subscriptionLoading = subscriptionService.getSubscriptions('loading');\n this.subscriptionLoading.subscribe(\n loading => {\n this.loading = loading;\n });\n this.subscriptionTheme = subscriptionService.getSubscriptions('theme');\n this.subscriptionTheme.subscribe(\n theme => {\n this.theme = theme;\n });\n this.subscriptionPets = subscriptionService.getSubscriptions('pets');\n this.subscriptionPets.subscribe(\n pets => {\n this.pets = pets;\n }\n );\n\n this.subscriptionInsurance = subscriptionService.getSubscriptions('insurance');\n this.subscriptionInsurance.subscribe(\n insurance => {\n this.insurance = insurance;\n }\n );\n\n this.subscriptionUser = subscriptionService.getSubscriptions('user');\n this.subscriptionUser.subscribe(\n user => {\n this.user = user;\n }\n );\n\n this.subscriptionCover = subscriptionService.getSubscriptions('cover');\n this.subscriptionCover.subscribe(\n cover => {\n this.cover = cover;\n }\n );\n }\n\n ngOnInit(): void {\n this.route.data.forEach((data: { insuredPets: any[] }) => {\n // this.insuredPets = data.insuredPets; //somehow the api returns different property name\n this.insuredPets = data.insuredPets.map(pet => new InsuredPet(pet.Reference, pet.PetName));\n });\n this.route.data.forEach((data: { hasBefore: boolean }) => {\n this.hasBefore = data.hasBefore;\n });\n\n this.recommendedProducts = [\n new RecommendedProduct(\n 1,\n 'Life Insurance',\n 'Help secure your family\\'s financial future when you are no longer around.',\n 'Compare, choose and apply for Life Insurance today!',\n 'https://quote.choosi.com.au/?insurancetype=1',\n 'assets/img/cross-sell/life.jpg'\n ),\n new RecommendedProduct(\n 2,\n 'Funeral Insurance',\n 'Protect your family from your funeral costs or other end-of-life expenses.',\n 'Compare, choose and apply for Funeral Insurance today!',\n 'https://quote.choosi.com.au/?insurancetype=2',\n 'assets/img/cross-sell/funeral.jpg'\n ),\n new RecommendedProduct(\n 3,\n 'Income Protection',\n 'Bills don\\'t stop coming if you are unable to work for a period of time.',\n 'Compare, choose and apply for Income Insurance today!',\n 'https://quote.choosi.com.au/?insurancetype=4',\n 'assets/img/cross-sell/income.jpg'\n )\n ];\n }\n\n get totalPrice(): number {\n let price: number = 0;\n for (let pet of this.pets) {\n price += pet.cover.getPrice(this.cover.frequency);\n }\n return price;\n }\n}\n","
    \n
    \n
    \n
    \n

    \n Thank you\n

    \n Your application has been completed successfully!\n
    \n
    0\">\n
    \n
    \n
    \n \"{{insurance.insuranceName}}\"\n
    \n
    \n {{pets.length}} Pet{{ (pets.length > 1)? 's' : ''}}\n
    \n
    \n \n
    \n
    \n
    \n
    \n Total price:\n
    \n

    {{ totalPrice | customCurrency:2:'$' }}

    \n \n {{FREQUENCY[cover.frequency].toLowerCase()}}ly\n \n
    \n
    \n
      \n
    • \n
      \n
      \n

      Pet {{i+1}}:

      \n
      \n
      \n

      {{pet.name}}

      \n
      \n
      \n
      \n
      \n Pet name: \n
      \n
      \n {{pet.name}}\n
      \n
      \n
      \n
      \n {{FREQUENCY[cover.frequency]}} premium: \n
      \n
      \n {{ pet.cover.getPrice(cover.frequency) | customCurrency:2:'$' }} \n
      \n
      \n
      \n
      \n Excess:\n
      \n
      \n {{pet.cover.excessSelected | customCurrency:2:'$'}}\n
      \n
      \n
      \n
      \n Routine care:\n
      \n
      \n {{ (pet.cover.routineCareSelected) ? 'Yes' : 'No' }}\n
      \n
      \n
      \n
      \n Species:\n
      \n
      \n {{ (pet.petType === SPECIES.FELINE) ? 'Cat' : 'Dog' }}\n
      \n
      \n
      \n
      \n Breed:\n
      \n
      \n {{pet.breed.breed}}\n
      \n
      \n
      \n
      \n Cover:\n
      \n
      \n {{pet.cover.insuranceName}} {{pet.cover.coverName}}\n
      \n
      \n
    • \n
    \n
    \n
    0\">\n
    \n \n

    \n This cover has a 30 days cooling off period\n

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

    \n Congratulations!\n

    \n
    \n
    \n

    \n Thank you for securing your pet’s insurance policy through {{theme.companyName}}.\n

    \n

    \n Your pet will be covered by {{insurance.insuranceName}} from 1 minute to midnight on your\n selected policy commencement date.\n

    \n
    \n
    \n

    \n Thank you for applying for your pet insurance through {{theme.companyName}}. Your {{insurance.insuranceName}}\n application has been received.\n

    \n

    \n We have referred your application to the underwriter who will call you within two working days to\n finalise your application. Should you want to follow up on your application please ring\n {{insurance.brandPhone}} during business hours of 8am-8pm Monday to Friday and quote your\n reference number{{ (insuredPets.length > 1) ? 's' : '' }}.\n

    \n
    \n
    \n
      \n
    • \n Your application reference number{{ (insuredPets.length > 1) ? 's' : '' }}:\n
    • \n
    • \n {{insuredPet.petDetails}}\n - {{insuredPet.referenceNumber}}\n
    • \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    \n What happens next?\n

    \n
    \n

    \n {{insurance.insuranceName}} will send you an email shortly to confirm your policy.\n {{insurance.insuranceName}} will also send you a welcome pack which will include the\n Combined Product Disclosure Statement, Policy Terms and Conditions, {{insurance.insuranceName}}\n Financial Services Guide and your Certificate of Insurance.\n This pack will also include any relevant information or required forms, such as a claim form,\n cruciate ligament examination form and a printed copy of the {{theme.companyName}} Financial Services Guide.\n

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

    Your application has been processed

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

    You will receive your policy documents

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

    If you have any questions call us {{ theme.contactPhoneNumber }}

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

    You may also be interested in:

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

    \n \n {{recommendedProduct.title}}\n

    \n
    \n
    \n

    \n {{recommendedProduct.mainText}}\n

    \n

    \n {{recommendedProduct.subText}}\n

    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    ","import { ModelValidator } from './model-validator';\n\nimport { BrandsEnum } from './brands.enum';\nimport { Species } from './species.enum';\nimport { Desexed } from './desexed.enum';\nimport { Insurance } from './insurance';\nimport { Gender } from './gender.enum';\nimport { Breed } from './breed';\nimport { Vet } from './vet';\n\nexport class Pet extends ModelValidator {\n\n static getBlank(id: number = -1, cover: Insurance = null): Pet {\n return new Pet(id, '', null, Species.CANINE, Breed.getBlank(), Gender.Male, Desexed.Unknown, null, null, false,\n ((cover === null) ? Insurance.getBlank() : cover),\n Vet.getBlank(), false, false);\n }\n\n static getCopy(pet: Pet): Pet {\n let newPet = Pet.getBlank();\n newPet.id = pet.id;\n newPet.name = pet.name;\n newPet.petType = pet.petType;\n newPet.breed = pet.breed;\n newPet.gender = pet.gender;\n newPet.isDesexed = pet.isDesexed;\n\n newPet.bornMonth = pet.bornMonth;\n newPet.bornYear = pet.bornYear;\n newPet.isOver8WeeksOldDeclaration = pet.isOver8WeeksOldDeclaration;\n if (pet.cover) {\n newPet.cover = Insurance.getCopy(pet.cover);\n }\n if (pet.vet) {\n newPet.vet = Vet.getCopy(pet.vet);\n }\n newPet.expanded = pet.expanded;\n newPet.hasVet = pet.hasVet;\n newPet.isGuideDog = pet.isGuideDog;\n newPet.microchipNumber = pet.microchipNumber;\n\n //newPet.isFirstTermsAccepted = pet.isFirstTermsAccepted;\n //newPet.isSecondTermsAccepted = pet.isSecondTermsAccepted;\n newPet.isDDOTermsAccepted= pet.isDDOTermsAccepted;\n return newPet;\n }\n\n constructor(\n public id: number,\n public name: string,\n public clientConsent: boolean,\n public petType: Species,\n public breed: Breed,\n public gender: Gender,\n public isDesexed: Desexed,\n // 1 based month, 1 = January\n public bornMonth: number,\n public bornYear: number,\n public isOver8WeeksOldDeclaration: boolean,\n public cover: Insurance,\n public vet: Vet,\n public expanded: boolean = true,\n public hasVet: boolean = false,\n public isGuideDog: boolean = false,\n public microchipNumber: string = '', \n \n //User story - 31124 - Choosi PDDO Pet STP\n //Step 3 - PDDO inline validation\n //public isFirstTermsAccepted: boolean = false,\n //public isSecondTermsAccepted: boolean = false\n public isDDOTermsAccepted:boolean=false\n ) {\n super();\n }\n\n getAge(date: Date = null): number {\n let months: number = null;\n if (date !== null && date.getTime() > new Date().getTime()) {\n months = this.getMonthsOld(date.getFullYear(), date.getMonth(), date.getDate());\n } else {\n months = this.getMonthsOld();\n }\n return (months !== null) ? Math.floor(months / 12) : null;\n }\n\n getMonthsOld(year: number = -1, month: number = -1, date: number = -1): number {\n if (this.bornYear === null || this.bornMonth === null) {\n return null;\n }\n\n if (year === -1) {\n year = new Date().getFullYear();\n }\n if (month === -1) {\n month = new Date().getMonth();\n }\n if (date === -1) {\n date = new Date().getDate();\n } else {\n date = 1;\n }\n\n let now = new Date(year, month, date);\n let yearMonthNow = new Date(now.getFullYear(), now.getMonth(), date);\n let yearMonthSelected = new Date(this.bornYear, this.bornMonth - 1, 1);\n\n return ((yearMonthNow.getFullYear() * 12) + yearMonthNow.getMonth())\n - ((yearMonthSelected.getFullYear() * 12) + yearMonthSelected.getMonth());\n }\n\n getDoB(): Date {\n return new Date(this.bornYear, this.bornMonth - 1, 1);\n }\n\n isOver9(): boolean {\n let minDate = new Date(new Date().getFullYear() - 9, new Date().getMonth(), new Date().getDate());\n return minDate >= this.getDoB();\n }\n willHaveYearBirthdayBeforeOrOnDate(year: number, date: Date ): boolean {\n let yrsAgoTodayDate = new Date(new Date().getFullYear() - year, new Date().getMonth(), new Date().getDate());\n let yrsBeforeDate = new Date(date.getFullYear() - year, date.getMonth(), date.getDate());\n let bday=this.getDoB();\n return (( yrsAgoTodayDate < bday) && (yrsBeforeDate >= bday));\n }\n\n proceedValidation(step: number = 0): boolean {\n if (this.name === null || this.name.trim().length < 1) {\n this.setError('name', 'Please enter your pet\\'s name');\n }\n\n if (this.name !== null && this.name.length > 50) {\n this.setError('name', 'Your pet\\'s name may not be more than 50 characters');\n }\n\n if (this.name !== null && this.name.trim().length > 0 && !this.name.match(/^[a-z0-9'\\-\\s]+$/i)) {\n this.setError('name', 'Your pet\\'s name may only contain letters and numbers');\n }\n\n if (this.petType !== Species.FELINE && this.petType !== Species.CANINE) {\n this.setError('petType', 'Please select if your pet is a dog or a cat');\n }\n\n if (!this.bornMonth) {\n this.setError('bornMonth', 'Please enter your pet\\'s month of birth');\n }\n\n if (this.bornMonth && this.bornMonth < 1 || this.bornMonth > 12) {\n this.setError('bornMonth', 'Month of birth must be between 1-12');\n }\n\n if (!this.bornYear) {\n this.setError('bornYear', 'Please enter your pet\\'s year of birth');\n }\n\n let nowDate: Date = new Date();\n if (this.bornYear && this.bornYear < (nowDate.getFullYear() - 40) || this.bornYear > nowDate.getFullYear()) {\n this.setError('bornYear', 'Year of birth must be between ' + (nowDate.getFullYear() - 40) + '-' + nowDate.getFullYear());\n }\n let currentYear = new Date().getFullYear()\n if (this.isPropertyValid('bornMonth')\n && this.isPropertyValid('bornYear')\n && this.bornMonth\n && this.getMonthsOld() <= 1\n ) {\n this.setError('bornDate', 'Unfortunately we do not insure pets under the age of 8 weeks');\n }\n\n if (this.isPropertyValid('bornMonth')\n && this.isPropertyValid('bornYear')\n && this.getMonthsOld() === 2\n && !this.isOver8WeeksOldDeclaration\n ) {\n this.setError('isOver8WeeksOldDeclaration', 'Please confirm your pet is over 8 weeks old');\n }\n\n\n if (this.gender !== Gender.Male && this.gender !== Gender.Female) {\n this.setError('gender', 'Please select your pet\\'s gender');\n }\n\n if (this.isDesexed !== Desexed.Yes && this.isDesexed !== Desexed.No && this.isDesexed !== Desexed.Unknown) {\n this.setError('isDesexed', 'Please confirm whether your pet is desexed');\n }\n\n if (this.petType !== Species.CANINE) {\n if (this.isGuideDog) {\n this.setError('isGuideDog', 'Only dogs can be guide dogs');\n }\n if (this.microchipNumber !== null && this.microchipNumber.trim().length > 0) {\n this.setError('microchipNumber', 'Only Guide Dogs need a microchip number');\n }\n } else if (this.isGuideDog && step === 3) {\n\n if (this.cover !== null && this.cover.brandId === BrandsEnum.GuideDogs) {\n if (this.microchipNumber == null || this.microchipNumber.trim().length < 1) {\n this.setError('microchipNumber', 'Please enter your pet\\'s microchip number');\n } else if (this.microchipNumber.trim().length > 15 || !this.microchipNumber.match(/^[0-9]{15}$/i)) {\n this.setError('microchipNumber', 'Please enter your pet\\'s microchip number');\n }\n }\n }\n\n //User story - 31124 - Choosi PDDO Pet STP\n //Step 3 - PDDO inline validation\n // if ((!this.isFirstTermsAccepted || !this.isSecondTermsAccepted) && step === 3)\n // {\n // this.setError('isFirstTermsAccepted', 'You must agree with the above statements to continue.');\n // }\n\n if ((!this.isDDOTermsAccepted || !this.isDDOTermsAccepted) && step === 3)\n {\n this.setError(\"isDDOTermsAccepted\", \"You must select 'Yes' to Proceed.\");\n }\n this.cover.validate(step);\n if (this.hasVet) {\n this.vet.validate(step);\n } else {\n this.vet.clearErrors();\n }\n this.breed.validate(step);\n\n return this.isValid();\n }\n\n isValid(): boolean {\n return this.cover.isValid() && this.vet.isValid() && this.breed.isValid() && super.isValid();\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ReplaySubject } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\n\nimport 'rxjs/add/operator/toPromise';\n\nimport { Species } from '../model/species.enum';\nimport { Breed } from '../model/breed';\n\n@Injectable()\nexport class BreedsService extends BaseService {\n\n private observables: ReplaySubject[] = [\n new ReplaySubject(1), // feline\n new ReplaySubject(1) // canine\n ];\n\n private static mapBreedResponse(data: any): Breed[] {\n let breeds: Breed[] = [];\n for (let breed of data) {\n breeds.push(\n new Breed(breed.BreedCode, breed.Breed, data.CrossBreed)\n );\n }\n return breeds;\n }\n\n constructor(private http: HttpClient) {\n super();\n }\n\n getBreeds(species: Species): Observable {\n let url = this.baseUrl + 'api/PetSure/GetBreed/';\n url += (species === Species.FELINE) ? 'FELINE' : 'CANINE';\n\n let observable: ReplaySubject = (species === Species.FELINE)\n ? this.observables[0] : this.observables[1];\n\n if (!observable.observers.length) {\n this.http.get(url).subscribe(\n response => observable.next(BreedsService.mapBreedResponse(response)),\n error => observable.error(error)\n );\n }\n return observable;\n }\n}\n","import { ModelValidator } from './model-validator';\n\nexport class Breed extends ModelValidator {\n\n static getBlank(): Breed {\n return new Breed('', '', false);\n }\n\n constructor(\n public breedCode: string,\n public breed: string,\n public crossBreed: boolean\n ) {\n super();\n }\n\n protected proceedValidation(step: number): boolean {\n if (this.breedCode.trim() === '') {\n this.setError('breedCode', 'Please select the breed of your pet');\n }\n if (this.breed.trim() === '') {\n this.setError('breed', 'Please select the breed of your pet');\n }\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, Resolve, ActivatedRouteSnapshot, NavigationExtras } from '@angular/router';\n\nimport { InsuredPet } from '../model/insured-pet';\nimport { Insurance } from '../model/insurance';\nimport { Loading } from '../model/loading';\nimport { Theme } from '../model/theme';\nimport { Cover } from '../model/cover';\nimport { Breed } from '../model/breed';\nimport { User } from '../model/user';\nimport { Pet } from '../model/pet';\n\nimport { SubscriptionService } from '../services/subscription.service';\nimport { ApplicationService } from '../services/application.service';\nimport { PremiumService } from '../services/premium.service';\nimport { BreedsService } from '../services/breeds.service';\nimport { QuoteService } from '../services/quote.service';\n\n@Injectable()\nexport class ThankYouResolve implements Resolve {\n\n private theme: Theme = Theme.getBlank();\n\n constructor(\n private subscriptionService: SubscriptionService,\n private applicationService: ApplicationService,\n private premiumService: PremiumService,\n private breedsService: BreedsService,\n private quoteService: QuoteService,\n private router: Router\n ) {}\n\n redirectError(): InsuredPet[] {\n this.router.navigate(['']);\n return null;\n }\n\n resolve(route: ActivatedRouteSnapshot): Promise|InsuredPet[] {\n let loading = this.subscriptionService.getSubscriptions('loading').getValue();\n loading.activated = true;\n try {\n this.initTheme(route);\n let queryParams: any = {};\n for (let key in route.queryParams) {\n if (route.queryParams.hasOwnProperty(key)) {\n if (key.startsWith('?')) {\n let newKey = key.substring(1);\n queryParams[newKey] = route.queryParams[key];\n } else {\n queryParams[key] = route.queryParams[key];\n }\n }\n }\n\n let tokenParam: string = 'TokenID';\n let petCriteriaIDParam: string = 'PetCriteriaID';\n\n let customerPreRegistrationCodeParam: string = 'cd_prerego';\n let customerReferenceNumberParam: string = 'cd_crn';\n let cardHolderNameParam: string = 'nm_card_holder';\n let accountAliasParam: string = 'nm_account_alias';\n let accountNameParam:string = 'nm_account';\n let actionProcessedParam: string = 'action';\n let expiryDateAliasParam: string = 'dt_expiry';\n let accountTypeParam: string = 'accountType';\n\n // todo unused for now\n // let errorContextParam: string = 'tx_response';\n\n let cdSummaryParam: string = 'cd_summary';\n\n if (!queryParams.hasOwnProperty(tokenParam)\n || !queryParams.hasOwnProperty(petCriteriaIDParam)\n ) {\n return this.redirectError();\n }\n\n let token: string = queryParams[tokenParam];\n let petCriteriaId: string = queryParams[petCriteriaIDParam];\n\n if (queryParams.hasOwnProperty(cdSummaryParam)\n || queryParams.hasOwnProperty(actionProcessedParam)) {\n if (queryParams[cdSummaryParam] === '1'\n || queryParams[actionProcessedParam].toLowerCase() === 'failed') {\n let navigationExtras: NavigationExtras = {\n queryParams: {\n 'TokenID': token,\n 'UserID': this.theme.userId,\n 'Source': this.theme.source,\n 'error': 1\n }\n };\n this.router.navigate([''], navigationExtras);\n return null;\n }\n }\n\n if (queryParams.hasOwnProperty(customerReferenceNumberParam)\n && queryParams.hasOwnProperty(customerPreRegistrationCodeParam)\n && queryParams.hasOwnProperty(actionProcessedParam)\n && queryParams.hasOwnProperty(accountTypeParam)\n ) { \n let customerPreRegistrationCode: string = queryParams[customerPreRegistrationCodeParam];\n let customerReferenceNumber: string = queryParams[customerReferenceNumberParam];\n let actionProcessed: string = queryParams[actionProcessedParam];\n let accountAlias: string = queryParams[accountAliasParam];\n let accountType: string = queryParams[accountTypeParam]; \n let accountName: string = \"\";\n \n if(queryParams[accountNameParam]){\n accountName = queryParams[accountNameParam].split(\"+\").join(\" \");\n }\n let accountNumber: string = '';\n let bsb: string = '';\n let response: string = \"\";\n if(queryParams[\"tx_response\"]){\n response = queryParams[\"tx_response\"].split(\"+\").join(\" \");\n }\n let cardHolderName: string = '';\n let expiryDateAlias: string = '';\n\n \n if(accountAlias && accountType.toLowerCase() === 'dd'){\n var delimiter = \"+\"\n if(accountAlias.indexOf('+') == -1 && accountAlias.indexOf(' ') > 0) {\n delimiter = \" \"\n } \n else \n {\n console.error(\"Invalid account format received\");\n return this.redirectError();\n }\n \n bsb = accountAlias.split(delimiter)[0];\n accountNumber = accountAlias.split(delimiter)[1]; \n \n if(delimiter == \" \") {\n accountAlias = accountAlias.split(\" \").join(\"+\");\n }\n \n }\n\n if (accountType && accountType.toLowerCase() === 'cc') {\n if (queryParams.hasOwnProperty(cardHolderNameParam)\n && queryParams.hasOwnProperty(expiryDateAliasParam)\n ) {\n cardHolderName = queryParams[cardHolderNameParam].split(\"+\").join(\" \");\n expiryDateAlias = queryParams[expiryDateAliasParam];\n } else {\n return this.redirectError();\n }\n } else if (accountType.toLowerCase() === 'dd') {\n // fallback for DD\n expiryDateAlias = '0000';\n }\n\n\n // todo get real msg\n // let errorContext: string = queryParams[errorContextParam];\n // if (errorContext === null) {\n let errorContext = '';\n // } \n return this.applicationService\n .getApplication(token)\n .then(\n (result) => {\n result.user.petCriteriaID = petCriteriaId;\n this.handleUpdateCoverResponse(result); \n return this.applicationService.saveToken(accountType.toLowerCase(),\n accountNumber,\n bsb,\n cardHolderName,\n accountAlias,\n customerPreRegistrationCode,\n queryParams[actionProcessedParam],\n customerReferenceNumber,\n expiryDateAlias,\n accountName,\n response)\n .then((response)=>{ \n return this.applicationService\n .submitApplication(\n result.cover.quoteId,\n result.user.id,\n customerReferenceNumber,\n customerPreRegistrationCode,\n cardHolderName,\n accountAlias,\n actionProcessed,\n expiryDateAlias,\n errorContext,\n this.theme.userId\n )\n .then(\n (insuredPets) => {\n let loadingFinal = this.subscriptionService.getSubscriptions('loading').getValue();\n loadingFinal.activated = false;\n this.subscriptionService.getSubscriptions('loading').next(loadingFinal);\n return insuredPets;\n },\n (error) => {\n console.error(error);\n\n let navigationExtras: NavigationExtras = {\n queryParams: {\n 'TokenID': token,\n 'UserID': this.theme.userId,\n 'Source': this.theme.source,\n 'error': 2\n }\n };\n this.router.navigate([''], navigationExtras);\n return this.redirectError();\n });\n },\n () => {\n return this.redirectError();\n }); \n },\n () => {\n return this.redirectError();\n }\n );\n\n }\n } catch (e) {\n console.error(e);\n }\n return this.redirectError();\n }\n\n private initTheme(route: ActivatedRouteSnapshot) {\n this.theme = this.subscriptionService.getSubscriptions('theme').getValue();\n let userIdParamName = 'UserID';\n if (route.queryParams.hasOwnProperty(userIdParamName)) {\n this.theme.userId = route.queryParams[userIdParamName];\n }\n let sourceParamName = 'Source';\n if (route.queryParams.hasOwnProperty(sourceParamName)) {\n this.theme.source = route.queryParams[sourceParamName];\n }\n }\n\n private handleUpdateCoverResponse(result: any) {\n this.subscriptionService.getSubscriptions('pets').next(result.pets);\n let insurance: Insurance = Insurance.getBlank();\n if (result.pets.length > 0) {\n insurance = result.pets[0].cover;\n this.subscriptionService.getSubscriptions('pet').next(result.pets[0]);\n }\n this.subscriptionService.getSubscriptions('insurance').next(insurance);\n this.subscriptionService.getSubscriptions('cover').next(result.cover);\n this.subscriptionService.getSubscriptions('user').next(result.user);\n this.findProducts(result.pets, insurance, result.user);\n }\n\n private findProducts(pets: Pet[], ins: Insurance, user: User) {\n this.quoteService\n .findProduct(ins)\n .then(\n (insurance) => {\n for (let pet of pets) {\n this.findBreed(pet);\n pet.cover.brandId = insurance.brandId;\n pet.cover.brandCode = insurance.brandCode;\n pet.cover.insuranceName = insurance.insuranceName;\n pet.cover.aboutBrand = insurance.aboutBrand;\n pet.cover.brandLogo = insurance.brandLogo;\n }\n this.subscriptionService.getSubscriptions('pets').next(pets);\n this.subscriptionService.getSubscriptions('pet').next(pets[0]);\n },\n (error) => {\n this.handleError('Error while retrieving the brand', error);\n }\n );\n }\n\n private findBreed(pet: Pet) {\n this.breedsService\n .getBreeds(pet.petType)\n .subscribe(\n breeds => {\n let breedsFiltered: Breed[] = breeds.filter(\n breed => {\n return breed.breedCode === pet.breed.breedCode;\n }\n );\n pet.breed.breed = 'UNKNOWN';\n if (breedsFiltered.length > 0) {\n pet.breed.breed = breedsFiltered[0].breed;\n }\n },\n error => {\n pet.breed.breed = 'UNKNOWN';\n }\n );\n }\n\n private handleError(message: string, error: any) {\n console.error(message);\n console.error(error);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseService } from './base.service';\n\nimport 'rxjs/add/operator/toPromise';\n\nimport { User } from '../model/user';\nimport { Cover } from '../model/cover';\nimport { Theme } from '../model/theme';\nimport { Payment } from '../model/payment';\nimport { Insurance } from '../model/insurance';\nimport {ExtendedAuthToken} from '../model/extended-auth-token';\n\n@Injectable()\nexport class PaymentService extends BaseService {\n\n private static mapGetPaymentTokenRequest(user: User, cover: Cover, insurance: Insurance, theme: Theme) {\n return {\n 'ClientId': user.id,\n 'QuoteId': cover.quoteId,\n 'BrandId': insurance.brandId,\n 'Source': theme.source\n };\n }\n\n private static mapGetPaymentTokenResponse(data: any, payment: Payment): Payment {\n payment.token = data.Token;\n payment.community = data.Community;\n payment.supplierBusiness = data.SupplierBusiness;\n payment.crn = data.Crn;\n payment.responseType = (data.ResponseType !== null) ? data.ResponseType : '';\n payment.postUrl = data.PostUrl;\n return payment;\n }\n\n constructor(private http: HttpClient) {\n super();\n }\n\n getPaymentToken(user: User, cover: Cover, insurance: Insurance, payment: Payment, theme: Theme): Promise {\n let url = this.baseUrl + 'api/Petsure/GetPaymentToken/';\n\n let clientRequestObject = PaymentService.mapGetPaymentTokenRequest(user, cover, insurance, theme);\n\n return this.http.post(url, JSON.stringify(clientRequestObject), {headers: this.headers})\n .toPromise()\n .then((response) => {\n return PaymentService.mapGetPaymentTokenResponse(response, payment);\n })\n .catch(this.handleError);\n }\n\n private handleError(error: any): Promise {\n console.error('An error occurred', error); // for demo purposes only\n return Promise.reject(error.message || error);\n }\n\n getAuthToken(): Promise{\n let url = this.baseUrl + 'api/Petsure/GetAuthToken';\n return this.http.get(url, {headers: this.headers})\n .toPromise()\n .then((response)=>{ \n return response; \n })\n .catch(this.handleError);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseService } from './base.service';\n\nimport 'rxjs/add/operator/toPromise';\n\nimport { User } from '../model/user';\nimport { State } from '../model/state.enum';\n\n@Injectable()\nexport class CallService extends BaseService {\n\n private static mapCallRequest(partnerId: number, user: User, cookies: any) {\n let stateName = State[user.address.state];\n return {\n 'EmailAddress': user.email,\n 'FirstName': user.firstName,\n 'Surname': user.lastName,\n 'State': stateName,\n 'PhoneNo': user.getFormattedPhoneNumber(),\n 'PartnerId': partnerId,\n 'Cookies': cookies\n };\n }\n\n private static mapCallAnswer(data: any): string {\n return data.WebLeadId.toString();\n }\n\n constructor(private http: HttpClient) {\n super();\n }\n\n haveUsCall(partnerId: number, user: User, cookies: any): Promise {\n let url = this.baseUrl + 'api/Petsure/CallMeNow';\n let clientRequestObject = CallService.mapCallRequest(partnerId, user, cookies);\n return this.http.post(url, JSON.stringify(clientRequestObject), {headers: this.headers})\n .toPromise()\n .then((response) => {\n return CallService.mapCallAnswer(response);\n })\n .catch(this.handleError);\n }\n\n private handleError(error: any): Promise {\n console.error('An error occurred', error); // for demo purposes only\n return Promise.reject(error.message || error);\n }\n}\n","import { Injectable, OnInit } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseService } from './base.service';\n\n//import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'\n//import { Observable } from 'rxjs'\n//import { map } from 'rxjs/operators'\nimport { CONFIGURATION } from '../environments/environment';\n \nexport interface ReCAPTCHAResponse {\n success: boolean; \n score: number,\n error_codes?: Array;\n}\n\n\n \n\n@Injectable()\nexport class ReCAPTCHAService extends BaseService {\n constructor(private http: HttpClient) {\n super();\n }\n \n// public verifyUserResponse(userResponseToken: string): Observable {\n// return this.http.post('/auth/captcha', {'g-recaptcha-response': userResponseToken}, httpOptions).\n// pipe(map( (resp: HttpResponse) => { ... resp.body }))\n// } \npublic checkExists(): void {\n const url = this.getServiceHost() + '/api/v1/recaptcha/verify';\n // console.log('VERIFY URL STEM: ' + url);\n}\n\npublic getSiteKey(): string {\n var serviceKey=CONFIGURATION.SITE_KEY; \n return serviceKey;\n}\n\npublic getServiceHost(): string {\n var serviceHost=CONFIGURATION.RECAPTCHA_HOST; \n return serviceHost;\n}\n \npublic apiVerifyRecaptcha (token: string) : Promise {\n\tconst url = this.getServiceHost() + '/api/v1/recaptcha/verify';\n const params = {\n token,\n siteKey: this.getSiteKey(),\n action: 'compare'\n }\n const response = this.http.post(url, JSON.stringify(params), {headers: this.headers})\n .toPromise()\n .then((response: ReCAPTCHAResponse) => {\n return response;\n })\n .catch(()=>{\n return {\n\t\t\tsuccess: true,\n\t\t\tscore: 1\n\t\t}\n });\n return response;\n // // pipe(map( (resp: HttpResponse) => { ... resp.body }));\n\t// if(response.ok){\n\t// \tconst data = response.json();\n\t// \treturn data;\n\t// } else {\n\t// \t//allow login to continue when there are outages with recaptcha.\n\t// \treturn {\n\t// \t\tsuccess: true,\n\t// \t\tscore: 1\n\t// \t}\n\t// }\n}\n\n\n}","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseService } from './base.service';\n\nimport 'rxjs/add/operator/toPromise';\nimport { ToolsMethods } from '../shared/tools.methods';\nimport { PremiumsHelper } from '../helpers/premiums.helper';\n\nimport { Pet } from '../model/pet';\nimport { User } from '../model/user';\nimport { Cover } from '../model/cover';\nimport { Theme } from '../model/theme';\nimport { State } from '../model/state.enum';\nimport { Insurance } from '../model/insurance';\nimport { PremiumService } from './premium.service';\nimport { Frequency } from '../model/frequency.enum';\nimport { PetResponse } from '../model/petresponse';\n\n@Injectable()\nexport class QuoteService extends BaseService {\n\n private static mapSaveQuoteRequest(user: User, pets: Pet[], insurance: Insurance, cover: Cover, newQuote: boolean, cookies: any) {\n let quoteDetails = [];\n for (let pet of pets) {\n quoteDetails.push(\n {\n 'EncryptedClientId': user.encryptedClientId,\n 'AnnualPremiumAmount': pet.cover.priceYear,\n 'BreedCode': pet.breed.breedCode,\n 'Breed': pet.breed.breed,\n 'DateCreated': insurance.createdDate,\n 'PetsureProductCode': PremiumsHelper.getProductCode(\n pet.cover.petSureProductCode,\n pet.cover.routineCareSelected),\n 'DateOfBirth': ToolsMethods.getDateAsString(pet.getDoB()),\n 'DiscountAmount': pet.cover.getDiscountAmount(cover.frequency),\n 'DiscountPercent': pet.cover.seniorDiscount,\n 'Gender': pet.gender,\n 'HasRoutineCare': pet.cover.hasRoutineCare() ? pet.cover.routineCareSelected : false,\n 'Id': pet.cover.quoteDetailsId,\n 'IsEligibleForSeniorsDiscount': user.eligibleForSenior,\n 'IsValid': true,\n 'Desexed': pet.isDesexed,\n 'Name': pet.name,\n 'PaymentFrequency': Frequency[cover.frequency].toUpperCase().substring(0, 1),\n 'PetAgeConfirmed': pet.isOver8WeeksOldDeclaration,\n 'PetPremium': {\n 'AnnualAmount': pet.cover.priceYear,\n 'AnnualAmountDiscount': pet.cover.getDiscountAmount(Frequency.Year, false),\n 'AnnualAmountWithRoutineCare': pet.cover.routineCarePriceYear,\n 'AnnualAmountWithRoutineCareDiscount': pet.cover.getDiscountAmount(Frequency.Year, true),\n 'ProductBenefitId': pet.cover.productBenefitId\n },\n 'PremiumAmount': pet.cover.getPrice(cover.frequency),\n 'ProductBenefitId': pet.cover.productBenefitId,\n 'QuoteId': (newQuote ? '' : cover.quoteId),\n 'Species': pet.petType,\n 'State': State[user.address.state],\n 'VetPractice': pet.vet.vet,\n 'VetPracticeCode': pet.vet.practiceCode,\n 'ExcessOption': pet.cover.excessSelected,\n 'IsGuideDog': pet.isGuideDog,\n 'GuideDogRegisteredNumber': pet.microchipNumber\n }\n );\n }\n return {\n 'AddressBarcode': null,\n 'AddressDpid': null,\n 'ClientId': user.id,\n 'EncryptedClientId': user.encryptedClientId, // Mehedi\n 'ClientToken': user.token,\n 'PromoCode': user.promotion.promoCode,\n 'PromotionId': user.promotion.petsurePromotionId,\n 'PetsurePromotionId': user.promotion.petsurePromotionId,\n 'PetsureProductCode': PremiumsHelper.getProductCode(\n insurance.petSureProductCode,\n insurance.routineCareSelected),\n 'PartnerCode': insurance.petSurePartnerCode,\n 'CoverStartDate': ToolsMethods.getDateAsString(cover.coverStartDate),\n 'DateCreated': cover.createdDate,\n 'Id': null, // todo ??\n 'IsEligibleForSeniorsDiscount': user.eligibleForSenior,\n 'PaymentFrequency': Frequency[cover.frequency].toUpperCase().substring(0, 1),\n 'PremiumStartDate': ToolsMethods.getDateAsString(cover.premiumStartDate),\n 'ProductCode': insurance.productCode,\n 'QuoteDetails': quoteDetails,\n 'ReferToUnderwriting': cover.hadPriorPolicyCancelled,\n 'State': State[user.address.state],\n 'Token': (newQuote ? '' : cover.token),\n 'PetQuoteHeader' : {\n 'Efulfillment': cover.eDeliveryMethod\n },\n 'Cookies' : cookies\n };\n }\n\n private static mapSaveQuoteResponse(data: any): {quoteDetails: PetResponse[], quoteId: number, token: string, createdDate: string } {\n let quoteDetails: PetResponse[] = [];\n if (data.Pets && data.Pets.length > 0) {\n //Store an array of all pets to return\n data.Pets.forEach(element => {\n var detail : PetResponse = \n {\n PetName: element.PetName,\n QuoteDetailId: element.PetQuoteDetailId,\n PetDateOfBirth: new Date(Date.parse(element.PetDateOfBirth)),\n BreedCode: element.BreedCode\n };\n quoteDetails.push(detail);\n });\n }\n return {\n quoteDetails: quoteDetails,\n quoteId: data.QuoteId,\n token: data.Token,\n createdDate: data.CreatedDate\n };\n }\n\n private static mapFindProductResponse(data: any): Insurance {\n let insurance = Insurance.getBlank();\n insurance.brandId = data.BrandId;\n insurance.brandCode = data.Code;\n insurance.insuranceName = data.Name;\n insurance.aboutBrand = data.Description;\n insurance.brandPhone = data.PhoneNumber;\n insurance.brandLogo = PremiumService.getLogoPath(data.BrandId);\n insurance.brandLogoLarge = PremiumService.getLargeLogoPath(data.BrandId);\n return insurance;\n }\n\n private static mapSaveQuoteDetailsRequest(user: User, pet: Pet, cover: Cover) {\n return {\n 'EncryptedClientId': user.encryptedClientId, // Mehedi\n //Azure 54853: Call the getPrice method using the yearly frequency to calculate the correct annual amount\n 'AnnualPremiumAmount': pet.cover.getPrice(Frequency.Year), \n 'BreedCode': pet.breed.breedCode,\n 'Breed': pet.breed.breed,\n 'DateCreated': pet.cover.createdDate,\n 'DateOfBirth': ToolsMethods.getDateAsString(pet.getDoB()),\n 'DiscountAmount': pet.cover.getDiscountAmount(cover.frequency),\n 'DiscountPercent': pet.cover.multiPetDiscount,\n 'Gender': pet.gender,\n 'HasRoutineCare': pet.cover.hasRoutineCare() ? pet.cover.routineCareSelected : false,\n 'Id': pet.cover.quoteDetailsId,\n 'IsEligibleForSeniorsDiscount': user.eligibleForSenior,\n 'IsValid': pet.isValid(),\n 'Name': pet.name,\n 'PaymentFrequency': Frequency[cover.frequency].toUpperCase().substring(0, 1),\n 'PetAgeConfirmed': pet.isOver8WeeksOldDeclaration,\n 'PetPremium': {\n 'AnnualAmount': pet.cover.priceYear,\n 'AnnualAmountDiscount': pet.cover.getDiscountAmount(Frequency.Year, false),\n 'AnnualAmountWithRoutineCare': pet.cover.routineCarePriceYear,\n 'AnnualAmountWithRoutineCareDiscount': pet.cover.getDiscountAmount(Frequency.Year, true),\n 'ProductBenefitId': pet.cover.productBenefitId\n },\n 'PremiumAmount': pet.cover.getPrice(cover.frequency),\n 'ProductBenefitId': pet.cover.productBenefitId,\n 'QuoteId': cover.quoteId,\n 'QuoteToken': cover.token,\n 'Species': pet.petType,\n 'State': State[user.address.state],\n 'VetPractice': pet.vet.vet,\n 'VetPracticeCode': pet.vet.practiceCode,\n 'PetsureProductCode': PremiumsHelper.getProductCode(\n pet.cover.petSureProductCode,\n pet.cover.routineCareSelected),\n 'PartnerCode': pet.cover.petSurePartnerCode,\n 'PetsurePromotionId': user.promotion.petsurePromotionId,\n 'ExcessOption': pet.cover.excessSelected,\n 'IsGuideDog': pet.isGuideDog,\n 'GuideDogRegisteredNumber': pet.microchipNumber\n };\n }\n\n private static mapSaveQuoteDetailsResponse(data: any, pet: Pet) {\n pet.cover.quoteDetailsId = data.PetQuoteDetailID ? data.PetQuoteDetailID : data.PetQuoteDetailId;\n pet.cover.createdDate = data.DateCreated;\n }\n\n constructor(private http: HttpClient) {\n super();\n }\n\n saveQuote(\n user: User,\n insurance: Insurance,\n pets: Pet[],\n cover: Cover,\n theme: Theme,\n cookies: any,\n newQuote: boolean = false\n ): Promise<{ quoteDetails: PetResponse[], quoteId: number, token: string, createdDate: string }> {\n let url = this.baseUrl + 'api/Petsure/SaveQuote/' + theme.userId;\n\n let clientRequestObject = QuoteService.mapSaveQuoteRequest(user, pets, insurance, cover, newQuote, cookies);\n\n // console.log(JSON.stringify(clientRequestObject));\n return this.http.post(url, JSON.stringify(clientRequestObject), {headers: this.headers})\n .toPromise()\n .then((response) => {\n return QuoteService.mapSaveQuoteResponse(response);\n })\n .catch(this.handleError);\n }\n\n findProduct(insurance: Insurance): Promise {\n let url = this.baseUrl + 'api/Petsure/FindProduct/' + insurance.productCode;\n return this.http.get(url, {headers: this.headers})\n .toPromise()\n .then((response) => {\n return QuoteService.mapFindProductResponse(response);\n })\n .catch(this.handleError);\n }\n\n saveQuoteDetails(user: User, pet: Pet, cover: Cover, petNumber: number): Promise {\n let url = this.baseUrl + 'api/Petsure/SaveQuoteDetail/' + petNumber + '/' + pet.cover.productCode;\n\n let clientRequestObject = QuoteService.mapSaveQuoteDetailsRequest(user, pet, cover);\n\n return this.http.post(url, JSON.stringify(clientRequestObject), {headers: this.headers})\n .toPromise()\n .then((response) => {\n QuoteService.mapSaveQuoteDetailsResponse(response, pet);\n return;\n })\n .catch(this.handleError);\n }\n\n invalidateQuoteDetail(quoteId: number, quoteDetailsId: number): Promise {\n let url = this.baseUrl + 'api/Petsure/InvalidateQuoteDetail/' + quoteId + '/' + quoteDetailsId;\n return this.http.get(url, {headers: this.headers})\n .toPromise()\n .then((response: boolean) => {\n return response;\n })\n .catch(this.handleError);\n }\n\n\n private handleError(error: any): Promise {\n console.error('An error occurred', error); // for demo purposes only\n console.error(error.toString()); // for demo purposes only\n return Promise.reject(error.message || error);\n }\n}\n","import { ModelValidator } from './model-validator';\n\nimport { State } from './state.enum';\nimport { AustralianPostCodes } from './australian-postcodes';\n\nimport { ToolsMethods } from '../shared/tools.methods';\n\nexport class Address extends ModelValidator {\n\n static getBlank(): Address {\n return new Address('', '', '', null, false);\n }\n\n static getCopy(address: Address): Address {\n let newAddress = Address.getBlank();\n newAddress.address = address.address;\n newAddress.suburb = address.suburb;\n newAddress.postcode = address.postcode;\n newAddress.state = address.state;\n newAddress.mismatch = address.mismatch;\n newAddress.invalidpostcode = address.invalidpostcode;\n return newAddress;\n }\n\n constructor(\n public address: string,\n public suburb: string,\n public postcode: string,\n public state: State,\n public mismatch: boolean = false,\n public invalidpostcode: boolean = false\n ) {\n super();\n }\n\n isPostCodeInRange(range: any): boolean {\n if (range.length === 2) {\n return ToolsMethods.between(+this.postcode, range[0], range[1]);\n } else {\n return ToolsMethods.between(+this.postcode, range[0], range[0]);\n }\n }\n\n isPostCodeInRangeList(rangeList: any): boolean {\n let test: boolean = false;\n for (let range of rangeList) {\n if (this.isPostCodeInRange(range)) {\n test = true;\n break;\n }\n }\n return test;\n }\n\n checkPostCodeAndStateCombination(): boolean {\n if (this.state !== null && this.postcode !== null && AustralianPostCodes.statesPostCodes[State[this.state]]) {\n if (!this.isPostCodeInRangeList(AustralianPostCodes.statesPostCodes[State[this.state]])) {\n return false;\n }\n }\n return true;\n }\n\n public checkValidPostCode(): boolean {\n let test: boolean = false;\n for (let state in AustralianPostCodes.statesPostCodes) {\n if (AustralianPostCodes.statesPostCodes.hasOwnProperty(state)) {\n if (this.isPostCodeInRangeList(AustralianPostCodes.statesPostCodes[state])) {\n test = true;\n break;\n }\n }\n\n }\n return test;\n }\n\n proceedValidation(step: number = 0): boolean {\n if (this.state !== null && this.state) {\n this.state = +this.state;\n if (this.state !== State.ACT\n && this.state !== State.NSW\n && this.state !== State.NT\n && this.state !== State.QLD\n && this.state !== State.SA\n && this.state !== State.TAS\n && this.state !== State.VIC\n && this.state !== State.WA) {\n this.setError('state', 'Please select the state in which you reside');\n }\n } else {\n this.setError('state', 'Please select the state in which you reside');\n }\n if (step !== 2 && step !== 20) {\n if (this.postcode === null || this.postcode === '') {\n this.setError('postcode', 'Please enter your postcode');\n }\n if (this.postcode !== null && this.postcode !== '' && !this.postcode.match(/^[0-9]{4}$/i)) {\n this.setError('postcode', 'Your postcode must be 4 digits and may only contain numbers');\n } else {\n if (!this.checkValidPostCode() || this.invalidpostcode) {\n this.setError('postcode', 'Please enter a valid postcode');\n } else if (!this.checkPostCodeAndStateCombination()) {\n this.setError('postcode', 'Postcode and State combination invalid');\n }\n }\n }\n if (step === 3) {\n if (this.mismatch) {\n this.setError('address', 'The Address does not match with the Postcode');\n }\n if (this.address === null || this.address === '') {\n this.setError('address', 'Please enter your street address');\n }\n if (this.suburb === null || this.suburb === '') {\n this.setError('suburb', 'Please select your suburb');\n }\n }\n return this.isValid();\n }\n}\n","// The environment variables should be configured in the octopus project along with environment variable injection\n\nexport const CONFIGURATION = {\n 'paymentSubmitMode': '#{paymentSubmitMode}',\n 'baseUrl': '#{baseUrl}',\n 'environment': '#{environment}',\n 'gmapApiKey': '#{gmapApiKey}',\n 'trackUrl': '#{trackUrl}',\n 'tracker_name': '#{tracker_name}',\n 'SITE_KEY':'#{SITE_KEY}',\n 'RECAPTCHA_HOST':'#{RECAPTCHA_HOST}', \n};\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseService } from './base.service';\nimport 'rxjs/add/operator/toPromise';\nimport { State } from '../model/state.enum';\n\n@Injectable()\nexport class LocationService extends BaseService {\n\n public static mapGetPublicHolidayResponse(data: any): Date[] {\n let holidays: Date[] = [];\n data.forEach(\n (holidayData) => {\n holidays.push(new Date(holidayData.HolidayDate));\n }\n );\n return holidays;\n }\n\n public static mapGetSuburbResponse(data: any): string[] {\n let suburbs: string[] = [];\n data.forEach(\n (suburbData) => {\n suburbs.push(suburbData.Suburb.toUpperCase());\n }\n );\n return suburbs;\n }\n\n constructor(private http: HttpClient) {\n super();\n }\n\n getPublicHoliday(state: State): Promise {\n let url = this.baseUrl + 'api/Petsure/GetPublicHoliday/' + State[state];\n return this.http.get(url)\n .toPromise()\n .then((response) => {\n return LocationService.mapGetPublicHolidayResponse(response);\n })\n .catch(this.handleError);\n }\n\n getSuburbs(postcode: string): Promise {\n let url = this.baseUrl + 'api/Petsure/GetSuburb/' + postcode;\n return this.http.get(url)\n .toPromise()\n .then((response) => {\n return LocationService.mapGetSuburbResponse(response);\n })\n .catch(this.handleError);\n }\n \n getAuPostToken(): Promise {\n var url = this.baseUrl + 'api/Petsure/GetAuPostToken';\n return this.http.get(url)\n .toPromise()\n .then((response: string) => {\n return response;\n })\n .catch(this.handleError);\n }\n\n findAllAddresses(locality: string, addressFragment: string, auPostToken: string): Promise {\n let url = this.baseUrl + 'api/Petsure/SearchAddress?postcode=' + locality.toString() + \"&address=\" + encodeURIComponent(addressFragment) + '&auPostToken=' + auPostToken;\n return this.http.get(url)\n .toPromise()\n .then((response: string[]) => {\n return response;\n })\n .catch(this.handleError);\n }\n\n getAddress(address: any, auPostToken: string): Promise {\n let url = this.baseUrl + 'api/Petsure/FormatAddress?address=' + encodeURIComponent(address) + '&auPostToken=' + auPostToken;\n return this.http.get(url)\n .toPromise()\n .then((response) => {\n return response;\n })\n .catch(this.handleError);\n }\n\n private handleError(error: any): Promise {\n console.error('An error occurred', error); // for demo purposes only\n return Promise.reject(error.message || error);\n }\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { CONFIGURATION } from './app/environments/environment';\n\nif (CONFIGURATION.environment == \"PROD\") {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n\n","export abstract class ModelValidator {\n\n constructor(\n public errors: Map = new Map()\n ) {}\n\n protected abstract proceedValidation(step: number): boolean;\n\n getErrorNb(): number {\n return this.errors.size;\n }\n\n getError(key: string): string {\n if (this.errors.has(key)) {\n return this.errors.get(key);\n }\n return '';\n }\n\n getErrors(keys: string[]): string[] {\n let errors = [];\n for (let key of keys) {\n if (this.errors.has(key)) {\n errors.push(this.errors.get(key));\n }\n }\n return errors;\n }\n\n isValid(): boolean {\n return this.getErrorNb() === 0;\n }\n\n isPropertyValid(key: string) {\n return !this.errors.has(key);\n }\n\n setError(key: string, value: string): this {\n this.errors.set(key, value);\n return this;\n }\n\n clearErrors(): void {\n return this.errors.clear();\n }\n\n\n validate(step: number = 0): boolean {\n this.clearErrors();\n return this.proceedValidation(step) && this.isValid();\n }\n\n}\n","import { ModelValidator } from './model-validator';\n\nexport class ProductQuestion extends ModelValidator {\n \n static getBlank(): ProductQuestion {\n return new ProductQuestion(\n '', [], '', '','',false,false\n );\n }\n \n static getCopy(productQuestion: ProductQuestion): ProductQuestion {\n let newProductQuestion = ProductQuestion.getBlank();\n newProductQuestion.cover = productQuestion.cover;\n newProductQuestion.petNames = productQuestion.petNames;\n newProductQuestion.petNamesString = productQuestion.petNamesString;\n newProductQuestion.productQuestionsDeclaration = productQuestion.productQuestionsDeclaration;\n newProductQuestion.benefitLimit = productQuestion.benefitLimit;\n newProductQuestion.benefitPercentage = productQuestion.benefitPercentage;\n newProductQuestion.declarationSubmit = productQuestion.declarationSubmit;\n return newProductQuestion;\n }\n\n constructor(\n public cover: string,\n public petNames: string[] = [] ,\n public petNamesString: string,\n public benefitLimit: string,\n public benefitPercentage: string,\n public productQuestionsDeclaration: boolean = false,\n public declarationSubmit: boolean = false\n ) {\n super();\n }\n \n \n proceedValidation(step: number = 0): boolean {\n \n \n if ( step === 4) {\n if (this.productQuestionsDeclaration === null || !this.productQuestionsDeclaration) {\n this.setError('productQuestionsDeclaration', 'Please indicate you understand and accept the statement');\n }\n\n \n }\n return this.isValid();\n }\n};"],"sourceRoot":"webpack:///"}