{"version":3,"sources":["./src/app/shared/components/breadcrumb/breadcrumb.component.html","./src/app/shared/components/breadcrumb/breadcrumb.component.ts","./src/app/core/services/token/token.service.ts","./src/app/core/services/types-condition.ts","./src/app/core/services/configuration/configuration-groups-ccf.ts","./src/app/core/services/types.ts","./src/app/shared/components/form-error-messages/form-error-messages.component.ts","./src/app/shared/components/form-error-messages/form-error-messages.component.html","./src/app/shared/components/is-mobile/is-mobile.directive.ts","./src/app/shared/components/not-found/not-found.component.ts","./src/app/shared/components/not-found/not-found.component.html","./src/app/shared/components/order-by-selector/order-by-selector.component.ts","./src/app/shared/components/order-by-selector/order-by-selector.component.html","./src/app/shared/pipes/address/address.pipe.ts","./src/app/core/services/vehicle-searches/vehicle-searches-left.service.ts","./src/app/applications/components/showroom-vehicle-details/showroom-vehicle-details.component.ts","./src/app/applications/components/showroom-vehicle-details/showroom-vehicle-details.component.html","./src/app/core/services/types-bank-account.ts","./src/app/core/services/address-lookup/address-lookup.service.ts","./src/app/shared/components/base-form/base-form.component.ts","./src/app/shared/components/base-form/base-form.component.html","./src/app/core/services/types-income.ts","./src/app/shared/components/vehicle-summary/vehicle-summary.component.ts","./src/app/shared/components/vehicle-summary/vehicle-summary.component.html","./src/app/core/resolvers/applications.ts","./src/app/login/components/login/login.component.ts","./src/app/login/components/login/login.component.html","./src/app/core/services/types-address.ts","./src/app/shared/directives/validation/maxDate/maxDate.directive.ts","./src/app/shared/components/toolbar/recordset-pager/recordset-pager.component.ts","./src/app/shared/components/toolbar/recordset-pager/recordset-pager.component.html","./src/app/shared/components/form-generator/form-generator.component.ts","./src/app/shared/components/form-generator/form-generator.component.html","./src/app/core/services/configuration/configuration-finance-options.ts","./src/app/core/services/configuration/configuration-sections.ts","./src/app/core/services/configuration/configuration-roles.ts","./src/app/shared/components/vehicle-display/vehicle-display.component.ts","./src/app/shared/components/vehicle-display/vehicle-display.component.html","./src/app/shared/components/forward-button/forward-button.component.ts","./src/app/shared/components/forward-button/forward-button.component.html","./src/app/core/services/date/date.service.ts","./src/app/core/resolvers/user.ts","./src/app/login/components/registration-complete/registration-complete.component.ts","./src/app/login/components/registration-complete/registration-complete.component.html","./src/app/shared/components/navbar/navbar.component.html","./src/app/shared/components/navbar/navbar.component.ts","./src/app/applications/components/settings/settings.component.ts","./src/app/applications/components/settings/settings.component.html","./src/app/applications/components/offers-list/offers-list.component.ts","./src/app/applications/components/offers-list/offers-list.component.html","./src/app/core/services/user/user.service.ts","./src/app/core/services/types-dealer.ts","./src/app/core/services/types-range.ts","./src/app/applications/components/quotes/quotes.component.ts","./src/app/applications/components/quotes/quotes.component.html","./src/app/shared/components/creditplus-privacy-policy/creditplus-privacy-policy.component.ts","./src/app/shared/components/creditplus-privacy-policy/creditplus-privacy-policy.component.html","./src/environments/environment.dev.ts","./src/app/applications/components/proofs/proofs.component.ts","./src/app/applications/components/proofs/proofs.component.html","./src/app/applications/components/quote-vehicle-item/quote-vehicle-item.component.ts","./src/app/applications/components/quote-vehicle-item/quote-vehicle-item.component.html","./src/app/login/components/forgotten-password/forgotten-password.component.ts","./src/app/login/components/forgotten-password/forgotten-password.component.html","./src/app/shared/components/valid-invalid-icon/valid-invalid-icon.component.html","./src/app/shared/components/valid-invalid-icon/valid-invalid-icon.component.ts","./src/app/shared/components/toolbar/amendment/amendment.component.ts","./src/app/shared/components/toolbar/amendment/amendment.component.html","./src/app/applications/components/docs/docs.component.ts","./src/app/applications/components/docs/docs.component.html","./src/app/shared/models/onfido/OnfidoRef.ts","./src/app/shared/components/properties-panel/properties-panel.component.html","./src/app/shared/components/properties-panel/properties-panel.component.ts","./src/app/shared/models/onfido/Applicant.ts","./src/app/shared/directives/focus/select-all-on-focus.directive.ts","./src/app/core/services/configuration/configuration-lookups.ts","./src/app/core/services/configuration/configuration.ts","./src/app/core/services/types-applicantNotes.ts","./src/app/shared/components/models.class.ts","./src/app/applications/components/upload-examples/upload-examples.component.ts","./src/app/applications/components/upload-examples/upload-examples.component.html","./src/app/core/services/authentication-guard/authentication-guard.service.ts","./src/app/core/services/types-proof.ts","./src/app/core/services/modal/global-modal.service.ts","./src/app/core/services/configuration/configuration-page-states.ts","./src/app/core/services/login/login.service.ts","./src/app/login/components/register/register.component.ts","./src/app/login/components/register/register.component.html","./src/app/shared/directives/validation/nonBlank/nonBlank.directive.ts","./src/app/core/services/configuration/configuration-journeys-dealer.ts","./src/app/core/services/configuration/configuration-groups.ts","./src/app/core/services/quotes/quotes.service.ts","./src/app/core/services/modal/loading-modal.service.ts","./src/app/login/components/login-panel/login-panel.component.ts","./src/app/login/components/login-panel/login-panel.component.html","./src/app/shared/components/ribbon/ribbon.component.ts","./src/app/shared/components/ribbon/ribbon.component.html","./src/app/shared/directives/validation/minDate/minDate.directive.ts","./src/app/shared/components/saving-alert/saving-alert.component.ts","./src/app/shared/components/saving-alert/saving-alert.component.html","./src/app/applications/components/agreements-documentation/agreements-documentation.component.ts","./src/app/applications/components/agreements-documentation/agreements-documentation.component.html","./src/app/shared/components/loading-modal/loading-modal.component.ts","./src/app/shared/components/loading-modal/loading-modal.component.html","./src/app/shared/directives/validation/anyof/anyof.directive.ts","./src/app/shared/components/form-container/form-container.component.ts","./src/app/shared/components/form-container/form-container.component.html","./src/app/shared/components/toolbar/button-group/button-group.component.ts","./src/app/shared/components/toolbar/button-group/button-group.component.html","./src/app/core/services/types-credit-rating.ts","./src/app/shared/components/child-modal/child-modal.component.ts","./src/app/shared/components/child-modal/child-modal.component.html","./src/app/core/services/timed-action/timed-action.service.ts","./src/app/shared/shared.module.ts","./src/app/login/components/login-status/login-status.component.ts","./src/app/login/components/login-status/login-status.component.html","./src/app/shared/components/custom-radio-button/custom-radio-button.component.ts","./src/app/shared/components/custom-radio-button/custom-radio-button.component.html","./src/app/shared/models/vehicle.model.ts","./src/app/core/services/configuration/configuration-journeys.ts","./src/app/shared/components/toolbar/toolbar/toolbar.component.ts","./src/app/shared/components/toolbar/toolbar/toolbar.component.html","./src/app/core/services/addressesSorter/address-sorter.service.ts","./src/app/applications/components/onfido-sdk/onfido-sdk.component.ts","./src/app/applications/components/onfido-sdk/onfido-sdk.component.html","./src/app/shared/components/base-form/base-form-testing.barrel.spec.ts","./src/app/core/services/configuration/configuration-pages.ts","./node_modules/moment/locale sync ^\\.\\/.*$","./src/app/login/components/register-panel/register-panel.component.ts","./src/app/login/components/register-panel/register-panel.component.html","./src/app/core/services/journey-page-guard/journey-page-guard.service.ts","./src/app/shared/components/number-plus-minus/number-plus-minus.component.html","./src/app/shared/components/number-plus-minus/number-plus-minus.component.ts","./src/app/shared/components/toolbar/sort/sort.component.ts","./src/app/shared/components/toolbar/sort/sort.component.html","./src/app/shared/components/change-password/change-password.component.ts","./src/app/shared/components/change-password/change-password.component.html","./src/app/app.component.ts","./src/app/app.component.html","./src/app/applications/components/finance-breakdown/finance-breakdown.component.ts","./src/app/applications/components/finance-breakdown/finance-breakdown.component.html","./src/app/shared/components/application-header/application-header.component.ts","./src/app/shared/components/application-header/application-header.component.html","./src/app/shared/components/toolbar/sort-direction/sort-direction.component.ts","./src/app/shared/components/toolbar/sort-direction/sort-direction.component.html","./src/app/core/services/types-document.ts","./src/app/applications/components/offers-list-item/offers-list-item.component.ts","./src/app/applications/components/offers-list-item/offers-list-item.component.html","./src/app/core/services/configuration/configuration.types.ts","./src/app/shared/components/login-status/login-status.component.ts","./src/app/shared/components/login-status/login-status.component.html","./src/app/core/services/credit-rating/credit-rating.service.ts","./src/app/shared/components/backward-button/backward-button.component.ts","./src/app/shared/components/backward-button/backward-button.component.html","./src/app/login/login.module.ts","./src/app/shared/components/address-lookup/address-lookup.component.ts","./src/app/shared/components/loading/loading-observer.component.ts","./src/app/shared/components/loading/loading.component.html","./src/app/shared/telephone/telephone.component.ts","./src/app/core/services/proofs/proofs.service.ts","./src/app/core/services/dynamic-components/dynamic-components.service.ts","./src/app/shared/components/icon-component/icon-component.ts","./src/app/shared/components/icon-component/icon-component.html","./src/app/shared/directives/validation/password-policy-validator/password-policy-validator.directive.ts","./src/app/app.module.ts","./src/app/core/services/customers/customers.service.ts","./src/app/shared/components/help-panel/help-panel.component.html","./src/app/shared/components/help-panel/help-panel.component.ts","./src/app/core/services/configuration/configuration-groups-dealer.ts","./src/app/applications/components/finance-documents/finance-documents.component.ts","./src/app/applications/components/finance-documents/finance-documents.component.html","./src/app/core/services/configuration/configuration-errors.ts","./src/app/applications/components/quote-showroom-item/quote-showroom-item.component.ts","./src/app/applications/components/quote-showroom-item/quote-showroom-item.component.html","./src/app/applications/components/quote-showroom/quote-showroom.component.ts","./src/app/applications/components/quote-showroom/quote-showroom.component.html","./src/app/shared/components/address/address.component.ts","./src/app/shared/components/address/address.component.html","./src/app/applications/components/proofs-no-onfido/proofs-no-onfido.component.ts","./src/app/applications/components/proofs-no-onfido/proofs-no-onfido.component.html","./src/app/shared/directives/focus/focus-if.directive.ts","./src/app/applications/components/quote-vehicle/quote-vehicle.component.ts","./src/app/applications/components/quote-vehicle/quote-vehicle.component.html","./src/app/core/services/types-identity.ts","./src/app/shared/components/document-lister/document-lister.component.ts","./src/app/shared/components/document-lister/document-lister.component.html","./src/app/core/services/types-quote.ts","./src/app/core/services/validationservice/validation.config.ts","./src/app/shared/components/section-child-container/section-child-container.component.ts","./src/app/shared/components/section-child-container/section-child-container.component.html","./src/app/login/login-routing.module.ts","./src/app/shared/models/onfido/Address.ts","./src/app/applications/components/documents/documents.component.ts","./src/app/applications/components/documents/documents.component.html","./src/app/shared/components/page-size-selection/page-size-selection.component.ts","./src/app/shared/components/page-size-selection/page-size-selection.component.html","./src/app/shared/components/loading/loading.component.ts","./src/app/shared/components/progress-bar/progress-bar.component.ts","./src/app/shared/directives/validation/max/max.directive.ts","./src/app/shared/components/is-mobile/is-mobile.service.ts","./src/app/shared/components/desktop-warning/desktop-warning.component.ts","./src/app/shared/components/desktop-warning/desktop-warning.component.html","./src/app/core/services/types-contact.ts","./src/app/core/components/global-modal/global-modal.component.ts","./src/app/core/components/global-modal/global-modal.component.html","./src/app/shared/components/suggest-finance/suggest-finance.component.ts","./src/app/shared/components/suggest-finance/suggest-finance.component.html","./src/app/core/services/conditions/conditions.service.ts","./src/app/shared/components/application-footer/application-footer.component.ts","./src/app/shared/components/application-footer/application-footer.component.html","./src/app/shared/components/panoramic-viewer/panoramic-viewer.component.ts","./src/app/shared/components/panoramic-viewer/panoramic-viewer.component.html","./src/app/shared/components/show-vehicle/show-vehicle.component.html","./src/app/shared/components/show-vehicle/show-vehicle.component.ts","./src/app/core/services/types-loan-offer.ts","./src/app/shared/components/dealerplus-privacy-policy/dealerplus-privacy-policy.component.ts","./src/app/shared/components/dealerplus-privacy-policy/dealerplus-privacy-policy.component.html","./src/app/core/services/fav-icon/fav-icon.service.ts","./src/app/core/services/global-error-handler/application-error.ts","./src/app/core/services/notifications/notifications.service.ts","./src/app/shared/components/toolbar/search/search.component.ts","./src/app/shared/components/toolbar/search/search.component.html","./src/app/shared/components/dropzone/dropzone.component.ts","./src/app/shared/components/dropzone/dropzone.component.html","./src/app/shared/components/button-with-invalid-sections-popup/button-with-invalid-sections-popup.component.ts","./src/app/shared/components/button-with-invalid-sections-popup/button-with-invalid-sections-popup.component.html","./src/app/core/documents.service.ts","./src/app/core/services/tabs-service/tabs-service.ts","./src/app/shared/components/toolbar/filter/filter.component.ts","./src/app/shared/components/toolbar/filter/filter.component.html","./src/app/shared/directives/validation/min/min.directive.ts","./src/app/shared/directives/element-height/element-height.directive.ts","./src/app/core/core.module.ts","./src/app/core/services/can-deactivate-guard/can-deactivate-guard.service.ts","./src/app/shared/components/control-error-messages/control-error-messages.component.html","./src/app/shared/components/control-error-messages/control-error-messages.component.ts","./src/app/core/services/vehicle/vehicle.service.ts","./src/app/shared/components/toolbar/save-cancel/save-cancel.component.ts","./src/app/shared/components/toolbar/save-cancel/save-cancel.component.html","./src/app/shared/pipes/safe/safe.pipe.ts","./src/app/shared/components/toolbar/record-navigator/record-navigator.component.ts","./src/app/shared/components/toolbar/record-navigator/record-navigator.component.html","./src/app/core/services/configuration/configuration-dynamic-components.ts","./src/app/shared/components/base-form/base-form.config.ts","./src/app/shared/components/privacy-policy/privacy-policy.component.html","./src/app/shared/components/privacy-policy/privacy-policy.component.ts","./src/app/shared/components/base-form/base-form.component.spec.ts","./src/app/core/services/configuration/configuration-workflows.ts","./src/app/shared/pipes/fullname/fullname.pipe.ts","./src/app/core/services/types-employer.ts","./src/app/shared/components/custom-radio-button/yes-or-no.component.ts","./src/app/app-routing.module.ts","./src/app/core/services/timeline/timeline.service.ts","./src/app/applications/components/help/help.component.ts","./src/app/applications/components/help/help.component.html","./src/app/core/services/actions/actions.service.ts","./src/app/shared/components/section-headings/section-headings.component.ts","./src/app/shared/components/section-headings/section-headings.component.html","./src/app/applications/components/acceptance-status/acceptance-status.component.ts","./src/app/applications/components/acceptance-status/acceptance-status.component.html","./src/app/applications/components/marketing-preferences/marketing-preferences.component.ts","./src/app/applications/components/marketing-preferences/marketing-preferences.component.html","./src/app/core/services/application-status/application-status.service.ts","./src/app/core/services/configuration/configuration-groups-base.ts","./src/app/core/services/configuration/configuration-journeys-consumer.ts","./src/app/core/services/apply/apply.service.ts","./src/app/shared/components/collapsable-container/collapsable-container.component.ts","./src/app/shared/components/collapsable-container/collapsable-container.component.html","./src/app/shared/directives/validation/utilities.ts","./src/app/shared/components/product-link/product-link.component.ts","./src/app/core/services/types-notification.ts","./src/app/shared/components/section-container/section-container.component.ts","./src/app/shared/components/section-container/section-container.component.html","./src/main.ts","./$_lazy_route_resource lazy namespace object","./src/app/core/services/configuration/configuration.urls.ts","./src/app/shared/components/comparecarfinance-privacy-policy/comparecarfinance-privacy-policy.component.ts","./src/app/shared/components/comparecarfinance-privacy-policy/comparecarfinance-privacy-policy.component.html"],"names":[],"mappings":"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D,QAAQ,EAAC;QACL,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,UAAU;KACpB;IACD,KAAK,EAAE;QACH,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,sBAAsB;KAChC;IACD,QAAQ,EAAE;QACN,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,UAAU;KACpB;IACD,SAAS,EAAE;QACP,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,WAAW;KACrB;IACD,QAAQ,EAAC;QACL,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,UAAU;KACpB;CACJ,CAAC;AAGD;;;;;;;;;;;;AC5ED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3Q8E;AAEF;AACnB;AACQ;AAE6D;AAC5C;AACJ;AACU;AACtC;AACiB;AAEU;;;;;;;;;;;;;;;;;;;;;;ICoD7D,2EAAqF;IACnF,gEAAI;IAAA,uDAAqB;IAAA,gEAAI;IAAA,gEAAI;IACjC,+HACF;IAAA,4DAAM;;;IAFA,0DAAqB;IAArB,yFAAqB;;;IAoBnC,2EAAkE;IAChE,sEAA+B;IAAA,2EAA2B;IAAA,oFAAyB;IAAA,4DAAM;IACzF,sEAA+B;IAAA,2EAA2B;IAAA,mHAAmD;IAAA,4DAAM;IACnH,sEAA+B;IAAA,2EAA2B;IAAA,gJAAgF;IAAA,4DAAM;IAClJ,4DAAM;;;IAiBI,2EAAkE;IAChE,iIAEF;IAAA,4DAAM;;;IAJR,sEAAgE;IAC9D,kIAGM;IACR,4DAAM;;;;IAJE,0DAAoC;IAApC,qFAAoC;;;;;;;;IAfpD,gFAC8E;IADnB,oTAAsB,OAAO,uBAAe,OAAO,IAAI,IAAI,6BAAc,CAAC,KAAE;IAErI,0EAA+B;IAAA,wEAAa;IAAA,4DAAM;IAClD,0EAAmD;IAAA,4DAAC;IAAA,4DAAM;IAC1D,0EAAiE;IAC/D,iFAA0B;IACxB,0EAA4B;IAC1B,2EAAyB;IACvB,mFAG4G;IAHjC,2VAAuB;IAAlG,4DA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","file":"main-es2015.js","sourcesContent":["
    \r\n
  1. \r\n {{item.text}}\r\n \r\n {{item.text}}\r\n \r\n
  2. \r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'breadcrumb',\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrls: ['./breadcrumb.component.scss']\r\n})\r\nexport class BreadcrumbComponent implements OnInit {\r\n\r\n @Input()\r\n model :any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { AuthenticationResult } from \"../login/loginmodels\";\r\nimport { ActionsService } from \"../actions/actions.service\";\r\n\r\n\r\n@Injectable()\r\nexport class TokenService {\r\n\r\n // public currentUser: string;\r\n public changedUser: boolean;\r\n\r\n constructor(private actionsService:ActionsService) { }\r\n\r\n isAuthenticated(): boolean {\r\n\r\n \r\n if (this.bearerToken != null && (this.lifetime==0 || (this.expires!=null && new Date().getTime()=' | '<>' | '>' | '<';\r\n public value: number | string | boolean;\r\n}\r\n\r\nclass AnswerCondition {\r\n public key: string;\r\n public comparison: '=' | '<=' | '>=' | '<>' | '>' | '<';\r\n public value: number | string | boolean;\r\n}\r\n\r\nclass AnswersCondition {\r\n public operator: 'OR' | 'AND';\r\n public conditions: AnswerCondition[];\r\n}\r\n\r\nexport {\r\n Condition, AnswerCondition, AnswersCondition\r\n}","import { Configuration } from \"./configuration\";\r\nimport { ERRORS } from \"./configuration-errors\";\r\nimport { FINANCE_OPTIONS } from \"./configuration-finance-options\";\r\nimport { LOOKUPS } from \"./configuration-lookups\";\r\n\r\nvar CONFIGURATION_CCF: Configuration = {\r\n currentJourney: 'FORWARDS_ONLY',\r\n // currentJourney: 'BACKWARDS_AND_FORWARDS',\r\n appearance: {\r\n logo: './assets/CCF_Logo_Full.svg',\r\n phoneIcon: './assets/call-button.png',\r\n title: 'CCF Self Serve',\r\n favIcon: 'assets/favicon-ccf.ico'\r\n },\r\n authentication: {\r\n passwordPolicy: {\r\n minimumLength: 6,\r\n numbers: true,\r\n letters: true,\r\n specialCharacters: '!@#$%^&*()_+'\r\n },\r\n expirationCountdown: 30000\r\n },\r\n acceptanceConfiguration: {\r\n displayReferredResponses: true,\r\n displayDeclinedResponses: true,\r\n displayErrorResponses: true,\r\n applyTimeout: 60000\r\n },\r\n contact: {\r\n telephone: '0333 9000 290',\r\n telephoneComplaints: '01202 684 898',\r\n email: 'sales@creditplus.co.uk',\r\n emailComplaints: 'complaints@creditplus.co.uk',\r\n address: 'Waterloo House, Fleets Corner, Nuffield Rd, Poole, Dorset, BH17 0HL',\r\n defaultPreferredContactMethod: 'Mobile',\r\n defaultPreferredContactTime: 'No Preference'\r\n },\r\n identity: {\r\n minAge: 18,\r\n maxAge: 75\r\n },\r\n creditRating: {\r\n ratingMethod: 'softSearch'\r\n },\r\n errors: ERRORS,\r\n pageScroll: {\r\n adjustHash: true,\r\n offset: 116,\r\n duration: 300\r\n },\r\n outgoings: {\r\n optional: true\r\n },\r\n products: {\r\n noThanksId: -1\r\n },\r\n vehicle: {\r\n maximumSearchesPermitted: 5,\r\n maximumAgeAtStartOfLoan: 5,\r\n maximumAgeAtEndOfLoan: 9,\r\n maximumMileageAtStartOfLoan: 120000,\r\n minRegistrationLength: 2,\r\n maxRegistrationLength: 8\r\n },\r\n financeRequest: {\r\n maximumLTVPercentage: 1.2,\r\n minimumLoan: 3000,\r\n minimumDeposit: 500,\r\n term: {\r\n minimum: 24,\r\n maximum: 60,\r\n step: 6\r\n },\r\n annualMileage: {\r\n minimum: 0,\r\n maximum: 40000,\r\n step: 1000\r\n }\r\n },\r\n quotes: {\r\n copyVehicleOnAddQuote: true,\r\n copyFinanceRequestOnAddQuote: true,\r\n maximumPermitted: 3,\r\n getQuoteTimeoutCountdown: 1000\r\n },\r\n proofs: {\r\n maximumFileSize: 5120000,\r\n immediateDragDropUpload: true,\r\n immediateFileSelectUpload: true,\r\n confirmFileReplacements: true,\r\n acceptedFileFormats: [\r\n { label: 'Bitmap', extention: 'bmp', mimeType: 'image/bmp' },\r\n { label: 'High Efficiency Image File Format', extention: 'heif', mimeType: 'image/heif' },\r\n { label: 'JPEG', extention: 'jpg', mimeType: 'image/jpeg' },\r\n { label: 'Portable Network Graphics', extention: 'png', mimeType: 'image/png' },\r\n { label: 'Portable Document Format', extention: 'pdf', mimeType: 'application/pdf' },\r\n { label: 'Tagged Image Format File', extention: 'tif', mimeType: 'image/tif' },\r\n { label: 'WebP', extention: 'webp', mimeType: 'image/webp' }\r\n ]\r\n },\r\n save: {\r\n method: 'paged',\r\n savePeriod: 2700000\r\n },\r\n financeOptions: FINANCE_OPTIONS,\r\n addressLookup: {\r\n addressListUrl: \"/address?postcode=:postcode\",\r\n addressDetailUrl: \"/address?id=:id\"\r\n },\r\n employment: {\r\n minHistoryMonths: 24\r\n },\r\n addresses: {\r\n minHistoryMonths: 36\r\n },\r\n lookupConfiguration: LOOKUPS\r\n};\r\n\r\n\r\nexport {\r\n CONFIGURATION_CCF\r\n}","import { Condition, AnswerCondition, AnswersCondition } from './types-condition';\r\nimport { ResidentialAddress, Address, ResidentialInformation } from './types-address';\r\nimport { Quote, BaseVehicle, ProposedVehicle, VehicleValuation, VehicleCap, QuoteServiceResponse, FinanceRequest, FinanceResponse } from './types-quote';\r\nimport { CreditRating } from './types-credit-rating';\r\nimport { Proofs, RequiredProof, Proof } from './types-proof';\r\nimport { Offer, LoanOffer } from './types-loan-offer';\r\nimport { DealAction } from './types-deal-action';\r\nimport { Document, DocumentLink } from './types-document';\r\nimport { Employer } from './types-employer';\r\nimport { Identity } from './types-identity';\r\nimport { Contact } from './types-contact';\r\nimport { BankAccount } from './types-bank-account';\r\nimport { Dealer, DealerContact } from './types-dealer';\r\nimport { Income } from './types-income';\r\nimport { NotificationMessage } from './types-notification';\r\nimport { Range } from './types-range';\r\nimport { ApplicantVehicle, Vehicle } from '../../shared/models/vehicle.model';\r\n\r\n\r\nclass Preference {\r\n marketing: boolean;\r\n}\r\n\r\n// code taken from https://www.typescriptlang.org/docs/handbook/advanced-types.html\r\nfunction extend(first: T, second: U): T & U {\r\n let result = {};\r\n for (let id in first) {\r\n (result)[id] = (first)[id];\r\n }\r\n for (let id in second) {\r\n if (!result.hasOwnProperty(id)) {\r\n (result)[id] = (second)[id];\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nclass Application {\r\n public id: number;\r\n public status;\r\n public dateOpened: string;\r\n public mainApplicant: Applicant;\r\n public creditRating: CreditRating;\r\n public dealActionHistory: Array\r\n public quotes: Quote[];\r\n public bankAccount: BankAccount;\r\n public loanProposalResponses: Array;\r\n public dealer: Dealer;\r\n public metadata: MetaData;\r\n public proofs?: Proof[];\r\n public documents: Array\r\n public roles: String[];\r\n public applicationNotes: string;\r\n public salesPerson: string;\r\n public favouriteVehicles: ApplicantVehicle[];\r\n public vehicle: ApplicantVehicle;\r\n public searchResults: Vehicle[];\r\n public bestSellers: Vehicle[];\r\n public numberOfPages: number;\r\n public totalFeedCount: number;\r\n public feedCategories: Vehicle[];\r\n public dataProtection: DataProtection;\r\n public sugestedVehicles: ApplicantVehicle[];\r\n\r\n}\r\n\r\nclass Applicant {\r\n public identity?: Identity;\r\n public contact?: Contact;\r\n public addresses?: ResidentialAddress[];\r\n public employment?: Employer[];\r\n public income: Income;\r\n public Dependents?: number;\r\n}\r\n\r\nclass MetaData {\r\n public numberOfVehicleSearches: number;\r\n}\r\n\r\n/*\r\n User\r\n*/\r\nclass User {\r\n public id: number;\r\n public applications: Application[];\r\n public preference: Preference;\r\n}\r\n\r\nclass ApplicationHistoryCustomer {\r\n public pageResults: any[];\r\n public pageSize: number;\r\n public pageNumber: number;\r\n public totalRecords: number;\r\n}\r\n\r\nclass JourneyPage {\r\n public label: string;\r\n public name: string;\r\n public route: string;\r\n public active: boolean;\r\n public enabled: boolean;\r\n public completed: boolean;\r\n public order?: string;\r\n public content?: JourneyPageContent;\r\n public activePageNextStep?: NextStep;\r\n public sections?: string[];\r\n public childSections?: ChildSection[];\r\n public sectionValidityObservers?: SectionValidityObserver[];\r\n public workflows?: string[];\r\n public states?: pageState[];\r\n}\r\n\r\nclass NextStep {\r\n public label?: string;\r\n public displayProceedButton?: boolean;\r\n public setStatus?: string;\r\n}\r\n\r\nclass SectionValidityObserver {\r\n public id: string;\r\n public sections: string[];\r\n}\r\n\r\nclass ChildSection {\r\n public parentSectionName: string;\r\n public sections: string[];\r\n}\r\n\r\nclass pageState {\r\n public workflows: string[];\r\n public pageDefaults?: string;\r\n public sectionDefaults?: string;\r\n public sectionStates: sectionState[];\r\n}\r\n\r\nclass sectionState {\r\n public section: string;\r\n public state: string;\r\n}\r\n\r\nclass JourneyPageContent {\r\n editing?: string;\r\n readOnly?: string;\r\n}\r\n\r\nclass IndustryTypes{\r\n public id: number;\r\n public name: string;\r\n}\r\nclass employedStatus{\r\n public id: number;\r\n public label: string;\r\n}\r\n\r\nclass DataProtection {\r\n public tCsPrivacyPolicy: boolean;\r\n public email: boolean;\r\n public phone: boolean;\r\n public sms: boolean;\r\n public post: boolean;\r\n public partnerLegitimateInterest: boolean;\r\n public fraudster: boolean;\r\n}\r\n\r\nexport {\r\n User, ApplicationHistoryCustomer, Identity, Contact, Address, Application, Employer, BaseVehicle, ProposedVehicle, VehicleValuation, \r\n VehicleCap, Quote, QuoteServiceResponse, Income, Condition,\r\n FinanceRequest, FinanceResponse, Applicant, BankAccount, Preference, Dealer, DealerContact, ResidentialAddress, Proof, Proofs, RequiredProof, Range, \r\n ResidentialInformation, extend, JourneyPage, MetaData, AnswerCondition, AnswersCondition, Document, DocumentLink, NotificationMessage, CreditRating, Offer, \r\n LoanOffer, IndustryTypes, employedStatus, DataProtection\r\n};\r\n","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'form-error-messages',\r\n templateUrl: 'form-error-messages.component.html',\r\n styleUrls: ['./form-error-messages.component.scss']\r\n})\r\n\r\nexport class FormErrorMessagesComponent {\r\n\r\n @Input()\r\n formErrors: any;\r\n\r\n @Input()\r\n form: FormGroup;\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n}\r\n","
\r\n

{{error}}

\r\n
\r\n\r\n","import { Directive, ElementRef } from '@angular/core';\r\nimport { IsMobileService } from \"./is-mobile.service\";\r\n\r\n@Directive({\r\n selector: '[isMobile], isMobile'\r\n})\r\nexport class IsMobileDirective {\r\n constructor(private el: ElementRef, private isMobileService:IsMobileService){}\r\n\r\n ngOnInit(){\r\n this.el.nativeElement.dispatchEvent(this.checkIfOnMobileAndReturnCustomEvent());\r\n }\r\n\r\n private checkIfOnMobileAndReturnCustomEvent(){\r\n return new CustomEvent(\"isMobile\", { detail: this.isMobileService.isMobile(), bubbles: false});\r\n }\r\n}\r\n","import { ApplicationStatusService } from './../../../core/services/application-status/application-status.service';\r\nimport { Router } from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { LoginService } from '../base-form/base-form-testing.barrel.spec';\r\n\r\n@Component({\r\n selector: 'not-found',\r\n templateUrl: './not-found.component.html',\r\n styleUrls: ['./not-found.component.scss']\r\n})\r\nexport class NotFoundComponent implements OnInit {\r\n\r\n subscription: Subscription;\r\n\r\n redirectRoute: any;\r\n\r\n constructor(private loginService: LoginService) { \r\n \r\n }\r\n\r\n ngOnInit() {\r\n this.subscription = this.loginService.loginStatusAnnounced$.subscribe(loggedIn => { this.loginStatusAnnounced(loggedIn); })\r\n this.loginStatusAnnounced(true);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n loginStatusAnnounced(loggedIn: boolean) {\r\n if (loggedIn) {\r\n this.redirectRoute = '/login';\r\n } \r\n }\r\n}\r\n","
\r\n
\r\n
\r\n Oops! 404 Not found error\r\n
\r\n
\r\n

Page not found

\r\n

The page that you were looking for was not found.
Please check that you have entered the correct URL for the page.

\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\n\r\n@Component({\r\n selector: 'order-by-selector',\r\n templateUrl: './order-by-selector.component.html',\r\n styleUrls: ['./order-by-selector.component.scss']\r\n})\r\nexport class OrderBySelectorComponent implements OnInit {\r\n\r\n public form: FormGroup;\r\n \r\n @Input()\r\n filterOptions: any[];\r\n\r\n constructor(public formBuilder: FormBuilder, private actionsService: ActionsService) {\r\n\r\n this.form = formBuilder.group({\r\n filterOption: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.form.setValue({filterOption: this.filterOptions[0].value});\r\n }\r\n\r\n changeFilterOption() {\r\n this.actionsService.broadcast({\r\n action: 'filterOption',\r\n behaviour: 'change',\r\n value: this.form.controls.filterOption.value,\r\n });\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Address } from \"../../../core/services/types\";\r\n\r\n@Pipe({\r\n name: 'address',\r\n pure: false\r\n})\r\nexport class AddressPipe implements PipeTransform {\r\n\r\n transform(value: Address, args?: any): String {\r\n if (value == null) {\r\n return \"\";\r\n }\r\n \r\n switch (args) {\r\n case 'inline': return this.ConcatAddress(value, ',');\r\n default: return this.ConcatAddress(value, '
');\r\n }\r\n }\r\n\r\n private ConcatAddress(value: Address, inputdelimiter: String): String {\r\n var address = '',\r\n delimiter: String = '';\r\n\r\n var keys = [\r\n 'buildingNumber',\r\n 'buildingName',\r\n 'address1',\r\n 'address2',\r\n 'town',\r\n 'county',\r\n 'postcode',\r\n 'country'\r\n ];\r\n\r\n keys.map(\r\n (key) => {\r\n if (value[key]) {\r\n address += delimiter + value[key];\r\n delimiter = inputdelimiter;\r\n }\r\n }\r\n );\r\n\r\n return address;\r\n }\r\n}\r\n","import { environment } from './../../../../environments/environment';\r\nimport { Injectable } from '@angular/core';\r\nimport { ApplicationStatusService } from '../application-status/application-status.service';\r\n\r\n@Injectable()\r\nexport class VehicleSearchesLeftService {\r\n\r\n constructor(private applicationStatusService : ApplicationStatusService) {\r\n \r\n }\r\n\r\n initializeVehicleSearchesLeft(): number {\r\n\r\n if(!environment.production){\r\n this.vehicleSearchesLeft = 9999;\r\n } \r\n else {\r\n\r\n /*\r\n Ideally we would get metadata on the application object to tell us how many vehicle searches are left so we can proactively report this to the user.\r\n BUT without this facility we need to use local storage to store remaining searches. This will work fine unless the user changes browser during the quote \r\n stage of the application and tries to make a lot of searches.\r\n */\r\n\r\n /*\r\n Check to see if the local storage setting exists and if it doesn't set it to the config value\r\n This should handle first time usage to initialise the setting.\r\n */\r\n if (this.vehicleSearchesLeft == -1) {\r\n this.vehicleSearchesLeft = this.applicationStatusService.configuration.vehicle.maximumSearchesPermitted;\r\n }\r\n /*\r\n Check to see if the local storage setting is greater than the config value and set it to the config value if it is.\r\n This should handle cases where the config value changes.\r\n */\r\n else if (this.vehicleSearchesLeft > this.applicationStatusService.configuration.vehicle.maximumSearchesPermitted) {\r\n this.vehicleSearchesLeft = this.applicationStatusService.configuration.vehicle.maximumSearchesPermitted;\r\n }\r\n }\r\n\r\n /*\r\n Return the current locaCheck to see if the local storage setting exists and if it doesn't set it to the config value\r\n */\r\n return this.vehicleSearchesLeft;\r\n\r\n }\r\n\r\n get vehicleSearchesLeft(): number {\r\n\r\n var searchesReached = localStorage.getItem('vehicleSearchesLeft');\r\n\r\n if (searchesReached == null) {\r\n return -1;\r\n }\r\n return parseInt(searchesReached);\r\n\r\n }\r\n\r\n set vehicleSearchesLeft(value: number) {\r\n\r\n localStorage.setItem('vehicleSearchesLeft', value.toString());\r\n\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { LocationStrategy } from '../../../../../node_modules/@angular/common';\r\nimport { Application } from '../../../core/services/types';\r\nimport { QuotesService } from '../../../core/services/quotes/quotes.service';\r\n\r\n@Component({\r\n selector: 'showroom-vehicle-details',\r\n templateUrl: './showroom-vehicle-details.component.html',\r\n styleUrls: ['./showroom-vehicle-details.component.scss']\r\n})\r\nexport class ShowroomVehicleDetailsComponent implements OnInit {\r\n\r\n @Input()\r\n cardId: number;\r\n\r\n @Input() application: Application;\r\n\r\n @Input() selectedVehicle: any;\r\n\r\n @Output() displayShowroom = new EventEmitter();\r\n\r\n vehicleImages: any;\r\n mainImage: string;\r\n @Output() displayBreakDown = new EventEmitter();\r\n monthlyPayment: number;\r\n balloon: number;\r\n financeType:string;\r\n constructor(private actionsService: ActionsService, private quoteService: QuotesService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.vehicleImages = Object.keys(this.selectedVehicle).filter(x => x.match(\"imageUrl_More\")).map(key => this.selectedVehicle[key]).filter(x => x != null);\r\n this.mainImage = this.selectedVehicle.imageUrl_Main;\r\n this.getMonthlyPayment();\r\n }\r\n\r\n onSelect() {\r\n this.displayShowroom.emit(false);\r\n this.actionsService.broadcast(\r\n {\r\n action: 'showroom',\r\n behaviour: 'selectedVehicle',\r\n value: { vehicle: this.selectedVehicle, id: this.cardId }\r\n });\r\n }\r\n\r\n back(value) {\r\n this.displayShowroom.emit(value);\r\n }\r\n\r\n setMainImage(imageSelected) {\r\n this.mainImage = imageSelected;\r\n }\r\n\r\n scrollImage(direction, image) {\r\n var imagePosition = this.vehicleImages.indexOf(image);\r\n if (direction == 'right') {\r\n var nextImage = imagePosition + 1;\r\n if (nextImage == this.vehicleImages.length) {\r\n nextImage = 0;\r\n }\r\n }\r\n if (direction == 'left') {\r\n nextImage = imagePosition - 1;\r\n if (nextImage == -1) {\r\n nextImage = this.vehicleImages.length-1;\r\n }\r\n }\r\n this.mainImage = this.vehicleImages[nextImage];\r\n }\r\n\r\n returnShowroom() {\r\n this.actionsService.broadcast({\r\n action: 'back',\r\n behaviour: 'showroom',\r\n value: true\r\n });\r\n }\r\n\r\n async getMonthlyPayment() {\r\n const quote = await this.quoteService.getFinanceBreakdown(this.application.id.toString(), this.application.quotes[0].financeRequest, this.selectedVehicle).toPromise();\r\n this.monthlyPayment = quote.monthlyPayment;\r\n this.financeType = quote.financeType;\r\n this.balloon = quote.balloon;\r\n }\r\n\r\n financeBreakdown() {\r\n this.displayBreakDown.emit(this.selectedVehicle);\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n

{{selectedVehicle.make}} {{selectedVehicle.model}}

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

{{selectedVehicle.price | currency:'GBP':true:'1.2-2'}}

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

{{monthlyPayment | currency:'GBP':true:'1.2-2'}}

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

{{balloon | currency:'GBP':true:'1.2-2'}}

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

{{selectedVehicle.registration}}

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

{{selectedVehicle.engineSize}} CC

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

{{selectedVehicle.fuelType}}

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

{{selectedVehicle.transmission}}

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

{{selectedVehicle.mileage}} mi

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

{{selectedVehicle.registrationYear}}

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

{{selectedVehicle.doors}}

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

{{selectedVehicle.colour}}

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

{{selectedVehicle.price | currency:'GBP':true:'1.2-2'}}

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

{{selectedVehicle.description}}

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

Benefits of buying with Creditplus

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
","/*\r\n Bank account\r\n*/\r\nclass BankAccount {\r\n public bankName?: string;\r\n public accountName?: string;\r\n public sortCode?: string;\r\n public accountNumber?: string;\r\n public dateOpened: string;\r\n}\r\n\r\nexport {\r\n BankAccount\r\n}","\r\nimport {of as observableOf, Observable } from 'rxjs';\r\n\r\nimport {catchError, map} from 'rxjs/operators';\r\nimport { ApplicationStatusService } from './../application-status/application-status.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse\r\n // Response\r\n } from '@angular/common/http';\r\nimport { AddressLookupResult } from './address-lookup';\r\nimport { environment } from \"../../../../environments/environment\";\r\nimport { ProposedVehicle } from \"../../../core/services/types\";\r\n\r\nimport { LoginService } from './../../../core/services/login/login.service';\r\nimport { TimedActionService } from \"../../../core/services/timed-action/timed-action.service\";\r\nimport { LoadingModalService } from '../modal/loading-modal.service';\r\nimport { ActionsService } from '../actions/actions.service';\r\nimport { isEmpty } from '../../../../../node_modules/rxjs/operators';\r\n\r\n@Injectable()\r\nexport class AddressLookupService {\r\n\r\n addressListUrl;\r\n\r\n addressDetailUrl;\r\n\r\n constructor(private http: HttpClient, private actionsService: ActionsService, private loginService: LoginService,\r\n private loadingModalService: LoadingModalService, private timedActionService: TimedActionService, private applicationStatusService: ApplicationStatusService) {\r\n this.addressListUrl = environment.base + this.applicationStatusService.configuration.addressLookup.addressListUrl;\r\n this.addressDetailUrl = environment.base + this.applicationStatusService.configuration.addressLookup.addressDetailUrl;\r\n }\r\n\r\n Search(postcode: string, id: string) {\r\n if (postcode == \"\" && id == \"\") {\r\n if (postcode.charAt(0) == \" \") {\r\n return observableOf([]);\r\n }\r\n }\r\n else {\r\n var url = this.addressListUrl.replace(':postcode', postcode).replace(':id', id);\r\n return this.http.get>(url, {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n // .catch(error => Observable.throw(\"An error occurred while performing the postcode lookup: \" + error))\r\n map(\r\n (response) => {\r\n // Reset the token expiration timer\r\n this.timedActionService.resetTimer();\r\n return response.body;\r\n }\r\n ),\r\n catchError((error: any) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }\r\n ),);\r\n }\r\n }\r\n Retrieve(id: string) {\r\n var url = this.addressDetailUrl.replace(':id', id);\r\n return this.http.get>(url, {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n // .catch(error => Observable.throw(\"An error occurred while performing the postcode lookup: \" + error))\r\n map(\r\n (response) => {\r\n // Reset the token expiration timer\r\n this.timedActionService.resetTimer();\r\n return response.body;\r\n }\r\n ),\r\n catchError((error: any) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }\r\n ),);\r\n }\r\n\r\n}","import { Configuration } from './../../../core/services/configuration/configuration';\r\nimport { Component, OnInit, Input, SimpleChanges, OnChanges, AfterViewInit } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators, FormBuilder, FormArray } from '@angular/forms';\r\nimport { ModalDirective } from 'ngx-bootstrap/modal';\r\nimport { LoginService } from './../../../core/services/login/login.service';\r\nimport { UserService } from './../../../core/services/user/user.service';\r\nimport { GlobalModalService } from './../../../core/services/modal/global-modal.service';\r\nimport { ActionsService } from \"../../../core/services/actions/actions.service\";\r\nimport { ApplicationStatusService } from './../../../core/services/application-status/application-status.service';\r\nimport { BaseForm } from './../../../core/components/models.class';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport * as moment from 'moment/moment';\r\n\r\n@Component({\r\n selector: 'base-form',\r\n templateUrl: 'base-form.component.html',\r\n styleUrls: ['base-form.component.scss']\r\n})\r\n\r\nexport class BaseFormComponent implements BaseForm, OnInit, OnChanges {\r\n @Input()\r\n model: any;\r\n name: string;\r\n form: FormGroup;\r\n formDefinition: any;\r\n formErrors: any = {};\r\n formGroupErrors: any[] = [];\r\n formErrorsArray: string[];\r\n formValidationMessages: any;\r\n defaultFormValidationMessages: any;\r\n id: string;\r\n errorMessage: string;\r\n modalSettings: any;\r\n @Input()\r\n editing: boolean = true;\r\n valid: boolean;\r\n enabled: boolean = true;\r\n visible: boolean = true;\r\n newRecord: boolean = false;\r\n showHelp: boolean = Configuration.loadCurrentJourneyType().help.show;\r\n\r\n constructor(public formBuilder: FormBuilder, public loginService: LoginService, public userService: UserService, public globalModalService: GlobalModalService, public actionsService: ActionsService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.createForm();\r\n }\r\n\r\n ngAfterViewInit() {\r\n /*\r\n We need to use the section container set-open broadcast to set the initial open value as the valid setting has not been fully evaluated if we\r\n just use the section container component initialization to set the value. This is an issue on certain components that contain a child component \r\n with a form that is evaluated as part of the overall component valid settings.\r\n */\r\n this.actionsService.broadcast(\r\n {\r\n action: `${this.name}-section-container`,\r\n behaviour: 'set-open',\r\n value: this.form.valid\r\n }\r\n );\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.isUpdate(changes)) {\r\n this.setFormData();\r\n }\r\n }\r\n\r\n private isUpdate(changes: SimpleChanges): Boolean {\r\n return changes[\"model\"] && !changes[\"model\"].isFirstChange();\r\n }\r\n\r\n // Called by can-deactivate-guard.service\r\n canDeactivate(): Observable | boolean {\r\n if (this.form.valid && !this.form.dirty) {\r\n return true;\r\n }\r\n return this.globalModalService.show(this.modalSettings);\r\n }\r\n\r\n toggleHelp() {\r\n this.showHelp = !this.showHelp;\r\n }\r\n\r\n createForm() {\r\n this.form = this.formDefinition.controls;\r\n this.setFormData();\r\n this.initializeFormDefinition();\r\n this.form.valueChanges.subscribe(data => this.onValueChanged(data));\r\n this.onValueChanged();\r\n }\r\n\r\n initializeFormDefinition() {\r\n this.initializeFormDefinitionRecursive(this.formDefinition.controls.controls, this.formErrors, true);\r\n }\r\n\r\n initializeFormDefinitionRecursive(controls, formErrors, setMetaData: boolean) {\r\n for (var key in controls) {\r\n if (typeof controls[key].value == 'object' && controls[key].value != null) {\r\n formErrors[key] = {};\r\n this.initializeFormDefinitionRecursive(controls[key].controls, formErrors[key], true);\r\n }\r\n else {\r\n if (setMetaData) {\r\n this.setMetaData(key);\r\n }\r\n formErrors[key] = [];\r\n }\r\n }\r\n if (setMetaData) {\r\n this.setMetaData('formGroupErrors');\r\n }\r\n }\r\n\r\n getFormErrorsObjectRecursive(controls, formErrors) {\r\n for (var key in controls) {\r\n if (typeof controls[key].value == 'object') {\r\n formErrors[key] = {};\r\n this.getFormErrorsObjectRecursive(controls[key].controls, formErrors[key]);\r\n }\r\n else {\r\n this.setMetaData(key);\r\n formErrors[key] = [];\r\n }\r\n }\r\n }\r\n\r\n setMetaData(key: string) {\r\n var metadata = this.formDefinition.metadata;\r\n if (typeof metadata[key] == 'undefined') {\r\n metadata[key] = {\r\n label: key,\r\n errormessages: Object.assign({}, this.formDefinition.defaultErrorMessages)\r\n };\r\n }\r\n else {\r\n if (typeof metadata[key].label == 'undefined') {\r\n metadata[key].label = key;\r\n }\r\n if (typeof metadata[key].errormessages == 'undefined') {\r\n metadata[key].errormessages = Object.assign({}, this.formDefinition.defaultErrorMessages);\r\n }\r\n else {\r\n for (var errorkey in this.formDefinition.defaultErrorMessages) {\r\n if (typeof metadata[key].errormessages[errorkey] == 'undefined') {\r\n metadata[key].errormessages[errorkey] = this.formDefinition.defaultErrorMessages[errorkey];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n setFormData() {\r\n this.form.patchValue(this.model);\r\n }\r\n\r\n getFormData(): any {\r\n return this.form.value;\r\n }\r\n\r\n edit() {\r\n this.editing = true;\r\n }\r\n\r\n cancel() {\r\n this.editing = false;\r\n this.setFormData();\r\n this.form.markAsPristine();\r\n }\r\n\r\n onValueChanged(data?: any) {\r\n if (this.form) {\r\n this.formErrorsArray = [];\r\n this.onValueChangedRecursive(this.formErrors);\r\n this.formErrors = Object.assign({}, this.formErrors);\r\n }\r\n this.validSubscription();\r\n this.dirtySubscription();\r\n }\r\n\r\n protected validSubscription() {\r\n this.actionsService.broadcast({\r\n action: this.name,\r\n behaviour: 'valid',\r\n value: this.form.valid\r\n }\r\n );\r\n }\r\n\r\n protected dirtySubscription() {\r\n if (this.form.dirty) {\r\n this.actionsService.broadcast({\r\n action: this.name,\r\n behaviour: 'dirty',\r\n value: this.form.dirty\r\n });\r\n }\r\n }\r\n\r\n onValueChangedRecursive(formErrors, formGroup?) {\r\n const form = this.form;\r\n var messages: any, message: any;\r\n for (const field in formErrors) {\r\n\r\n /*\r\n Get the control associated with the formError key\r\n */\r\n const control = (typeof formGroup == 'undefined') ? form.get(field) : formGroup.get(field);\r\n /*\r\n If we are dealing with a formErrors object then recursively set the formErrors for that object\r\n */\r\n if (!(formErrors[field] instanceof Array)) {\r\n /*\r\n If the control is null then delete the formErrors for the control. This occurs when an array item has been removed from the form.\r\n The last formErrors item will still exist for the array until we remove it\r\n */\r\n if (control == null) {\r\n delete formErrors[field];\r\n }\r\n else {\r\n this.onValueChangedRecursive(formErrors[field], control);\r\n }\r\n }\r\n else {\r\n /*\r\n If we are dealing with a formErrors array then set the errors based upon the control state\r\n */\r\n\r\n formErrors[field] = [];\r\n\r\n if (control && control.dirty && !control.valid) {\r\n messages = this.formDefinition.metadata[field].errormessages;\r\n for (const key in control.errors) {\r\n message = control.errors[key];\r\n if (typeof messages[key] != 'undefined') {\r\n message = messages[key].replace('{{field}}', this.formDefinition.metadata[field].label);\r\n if (field == 'registration') {\r\n message = message.replace('.', ', or search one of our cars');\r\n }\r\n for (const value in control.errors[key]) {\r\n if (control.errors[key][value] instanceof Date) {\r\n message = message.replace('{{' + value + '}}', moment(control.errors[key][value]).format('MMMM Do YYYY'));\r\n }\r\n else {\r\n message = message.replace('{{' + value + '}}', control.errors[key][value]);\r\n }\r\n }\r\n }\r\n formErrors[field].push(message);\r\n this.formErrorsArray.push(message);\r\n }\r\n }\r\n }\r\n }\r\n this.formGroupErrors = [];\r\n for (const groupError in this.form.errors) {\r\n this.formGroupErrors.push(this.form.errors[groupError]);\r\n }\r\n }\r\n\r\n initialiseFormArrayItems(data: any, formArray: FormArray, controls: FormGroup) {\r\n data.forEach(\r\n item => {\r\n formArray.push(controls)\r\n }\r\n );\r\n }\r\n\r\n addItem(formArray: FormArray, controls: FormGroup, formErrorsObject: any) {\r\n var formErrorItem: any = {};\r\n /*\r\n Get a formErrors object for the new item\r\n */\r\n this.initializeFormDefinitionRecursive(controls.controls, formErrorItem, false);\r\n /*\r\n Set formErrors object for the new item\r\n */\r\n formErrorsObject[Object.keys(formErrorsObject).length] = formErrorItem;\r\n /*\r\n Add the controls for the item to the form array\r\n */\r\n formArray.push(controls);\r\n /*\r\n Mark the form as dirty as angular doesn't do this by default (it's a feature not a bug apparently!)\r\n */\r\n this.form.markAsDirty();\r\n }\r\n\r\n removeItem(formArray: FormArray, i: number) {\r\n this.form.markAsDirty();\r\n formArray.removeAt(i);\r\n }\r\n}\r\n","

\r\n base-form works!\r\n

\r\n","/*\r\n Income & Expentidture\r\n*/\r\nclass Income {\r\n public salary?: number;\r\n public monthlyIncome?: number;\r\n}\r\n\r\nexport {\r\n Income\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Vehicle } from '../../models/vehicle.model';\r\n\r\n@Component({\r\n selector: 'vehicle-summary',\r\n templateUrl: './vehicle-summary.component.html',\r\n styleUrls: ['./vehicle-summary.component.scss']\r\n})\r\nexport class VehicleSummaryComponent implements OnInit {\r\n\r\n @Input() vehicle:Vehicle; \r\n @Input() loanOptionsReady:boolean;\r\n @Input() agreementDocsReady:boolean;\r\n @Input() stage:string;\r\n @Input() customerId:string;\r\n mileage: number;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.mileage = this.vehicle.Mileage;\r\n\r\n //console.log(this.vehicle);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n\r\n
{{vehicle.Make | titlecase}} {{vehicle.Model | titlecase}}
\r\n
\r\n {{vehicle.Mileage | number: ''}} miles, \r\n {{vehicle.Transmission | titlecase}}, \r\n {{vehicle.FuelType | titlecase}}, \r\n {{vehicle.Doors}} doors, \r\n {{vehicle.Colour | titlecase}} \r\n
\r\n\r\n\r\n
\r\n
\r\n
Pending loan options
\r\n
View loan options
\r\n
\r\n \r\n
","import { Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { Application } from \"../services/types\";\r\nimport { UserService } from \"../services/user/user.service\";\r\n\r\n@Injectable()\r\nexport class ApplicationResolver implements Resolve {\r\n constructor(private userService: UserService) { }\r\n\r\n resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | any {\r\n\r\n if (route.parent == null) {\r\n throw Error(\"A parent route has not been found\");\r\n }\r\n\r\n let applicationId = parseInt(route.params[\"id\"]);\r\n\r\n if (applicationId) {\r\n return this.userService.getApplicationById(applicationId);\r\n }\r\n else {\r\n throw new Error(\"The application id is required - I've broken here\")\r\n }\r\n \r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n@Component({\r\n selector: 'login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n})\r\nexport class LoginComponent {\r\n constructor() {\r\n }\r\n ngOnInit() {\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n","\r\n","\r\n/*\r\n Addresses\r\n*/\r\nclass Address {\r\n public id: string;\r\n public buildingNumber: string;\r\n public buildingName: string;\r\n public address1: string;\r\n public address2: string;\r\n public town: string;\r\n public county: string;\r\n public postcode: string;\r\n public country?: string;\r\n }\r\n \r\n class ResidentialInformation {\r\n public residentialStatus: string;\r\n public startDate: Date;\r\n public endDate: string;\r\n }\r\n \r\n declare type ResidentialAddress = Address & ResidentialInformation;\r\n \r\n class CommercialInformation {\r\n public company: string;\r\n public department: string;\r\n }\r\n \r\n declare type CommercialAddress = Address & CommercialInformation;\r\n\r\n export {\r\n Address, ResidentialInformation, ResidentialAddress, CommercialInformation, CommercialAddress\r\n }","import { Directive, OnChanges, SimpleChanges, Input } from '@angular/core';\r\nimport { Validator, AbstractControl, NG_VALIDATORS, ValidatorFn, ValidationErrors } from \"@angular/forms\";\r\nimport { isDate } from \"../utilities\";\r\n\r\nexport function maxDate(maxDate: Date): ValidatorFn {\r\n if (!isDate(maxDate)) {\r\n throw Error(\"The maximum date is expected to be a date\");\r\n }\r\n\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (control.value != null) {\r\n let value = new Date(control.value);\r\n\r\n if (isDate(value) && value > maxDate) {\r\n return {\r\n 'maxDate': {\r\n actualValue: value,\r\n maximumValue: maxDate\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n\r\n@Directive({\r\n selector: '[maximumDate]',\r\n providers: [{ provide: NG_VALIDATORS, useExisting: MaxDateDirective, multi: true }]\r\n})\r\nexport class MaxDateDirective implements Validator, OnChanges {\r\n @Input()\r\n maximumDate: Date;\r\n\r\n validator: ValidatorFn;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const change = changes['maximumDate'];\r\n\r\n if (change) {\r\n this.validator = maxDate(change.currentValue);\r\n }\r\n else {\r\n this.validator = null;\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors {\r\n if (this.validator) {\r\n return this.validator(control)\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnInit, SimpleChange, SimpleChanges } from '@angular/core';\r\n\r\nimport { ActionsService } from './../../../../core/services/actions/actions.service';\r\n\r\nimport { RecordsetPager, Navigate, Visibility, Broadcast } from './../../models.class';\r\nimport { Subscription } from 'rxjs';\r\n\r\nconst GROUP = 'pager';\r\n\r\n@Component({\r\n moduleId: module.id,\r\n selector: 'recordset-pager',\r\n templateUrl: 'recordset-pager.component.html',\r\n styleUrls: ['recordset-pager.component.scss']\r\n})\r\nexport class RecordsetPagerComponent implements OnInit, Navigate, Visibility, Broadcast {\r\n\r\n @Input()\r\n public model: RecordsetPager;\r\n\r\n @Input()\r\n public pagerId: string;\r\n\r\n @Input()\r\n public parentName: string;\r\n\r\n pages: any[];\r\n\r\n paginatorChanges: Subscription;\r\n\r\n totalPages: number;\r\n\r\n isMobile = (window.navigator.userAgent.indexOf('Mobile') >= 0);\r\n\r\n constructor(private actionsService: ActionsService) {\r\n\r\n this.pages = [];\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n \r\n\r\n this.paginatorChanges = this.actionsService.registerObserver(\r\n 'paginator.change',\r\n action => {\r\n if (this.isMobile) {\r\n this.initializeSmallScreen();\r\n } else {\r\n this.initialize();\r\n }\r\n },\r\n this\r\n );\r\n\r\n if (this.isMobile) {\r\n this.initializeSmallScreen();\r\n } else {\r\n this.initialize();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n if (this.isMobile) {\r\n this.initializeSmallScreen();\r\n } else {\r\n this.initialize();\r\n }\r\n if (changes['model']) {\r\n\r\n }\r\n\r\n }\r\n\r\n initialize() {\r\n\r\n this.pages = [];\r\n\r\n this.totalPages = Math.ceil(this.model.totalRecords / this.model.pageSize);\r\n\r\n if (this.totalPages < 10) {\r\n for (var i = 1; i <= this.totalPages; i++) {\r\n this.pages.push(i);\r\n }\r\n } else {\r\n for (var i = 0, j = this.model.page - 4; this.pages.length < 10; i++ , j++) {\r\n if (this.model.page < 5) {\r\n j = this.model.page - 9 + i\r\n } if (this.model.page > this.totalPages - 5) {\r\n j = this.totalPages - 9 + i;\r\n }\r\n if (j > 0 && j <= this.totalPages) {\r\n this.pages.push(j);\r\n }\r\n }\r\n if (this.model.page > (this.totalPages)) {\r\n this.model.page = 1;\r\n }\r\n }\r\n\r\n }\r\n\r\n initializeSmallScreen() {\r\n this.pages = [];\r\n\r\n this.totalPages = Math.ceil(this.model.totalRecords / this.model.pageSize);\r\n\r\n if (this.totalPages < 3) {\r\n for (var i = 1; i <= this.totalPages; i++) {\r\n this.pages.push(i);\r\n }\r\n } else {\r\n for (var i = 0, j = this.model.page - 1; this.pages.length < 3; i++ , j++) {\r\n if (this.model.page < 1) {\r\n j = this.model.page - 2 + i\r\n } if (this.model.page > this.totalPages - 1) {\r\n j = this.totalPages - 2 + i;\r\n }\r\n if (j > 0 && j <= this.totalPages) {\r\n this.pages.push(j);\r\n }\r\n }\r\n if (this.model.page > (this.totalPages)) {\r\n this.model.page = 1;\r\n }\r\n }\r\n\r\n }\r\n\r\n first() {\r\n\r\n if (this.model.page > 1) {\r\n this.model.page = 1;\r\n this.broadcast();\r\n }\r\n\r\n }\r\n\r\n last() {\r\n\r\n if (this.model.page < this.totalPages) {\r\n this.model.page = this.totalPages;\r\n this.broadcast();\r\n }\r\n\r\n }\r\n\r\n next() {\r\n if (this.model.page < this.totalPages) {\r\n this.model.page++;\r\n this.broadcast();\r\n };\r\n\r\n }\r\n\r\n previous() {\r\n\r\n if (this.model.page > 1) {\r\n this.model.page--;\r\n this.broadcast();\r\n };\r\n\r\n }\r\n\r\n goto(page: number) {\r\n if (page > 0 && page <= this.totalPages) {\r\n this.model.page = page;\r\n this.broadcast();\r\n };\r\n\r\n }\r\n\r\n show() {\r\n\r\n this.model.visible = true;\r\n\r\n }\r\n\r\n hide() {\r\n\r\n this.model.visible = false;\r\n\r\n }\r\n\r\n toggle() {\r\n\r\n this.model.visible = (!this.model.visible);\r\n\r\n }\r\n\r\n broadcast() {\r\n if (this.parentName == 'showRoom') {\r\n this.actionsService.broadcast({\r\n action: 'pageNumber',\r\n behaviour: 'change',\r\n value: this.model.page\r\n });\r\n }\r\n if (this.parentName == 'customerList') {\r\n\r\n\r\n var action = {\r\n action: GROUP + this.pagerId,\r\n behaviour: 'page',\r\n value: this.model.page\r\n };\r\n\r\n this.actionsService.broadcast(action);\r\n }\r\n }\r\n\r\n}\r\n","\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\r\n\r\n\r\n@Component({\r\n selector: 'form-generator',\r\n templateUrl: './form-generator.component.html',\r\n styleUrls: ['./form-generator.component.scss']\r\n})\r\nexport class FormGeneratorComponent implements OnInit {\r\n\r\n @Input()\r\n items: any[] = [\r\n {\r\n name: 'forename',\r\n label: 'Forename',\r\n description: 'This is the help text for the forename',\r\n validators: []\r\n },\r\n {\r\n name: 'middleNames',\r\n label: 'Middle names',\r\n description: 'This is the help text for the middle names',\r\n validators: []\r\n },\r\n {\r\n name: 'surname',\r\n label: 'Surname',\r\n description: 'This is the help text for the surname',\r\n validators: []\r\n }\r\n ];\r\n\r\n outerHTML: string;\r\n innerHTML: string='';\r\n innerHTMLLine: string;\r\n safeHTML: SafeHtml;\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n\r\n this.items.map(\r\n (item) => {\r\n\r\n this.innerHTMLLine =\r\n `\r\n \r\n

\r\n ${ item.description}\r\n

\r\n \r\n `;\r\n\r\n this.innerHTML += this.innerHTMLLine;\r\n }\r\n );\r\n\r\n this.outerHTML=`\r\n
\r\n
\r\n
\r\n
\r\n ${ this.innerHTML }\r\n \r\n
\r\n
\r\n
\r\n
\r\n `;\r\n\r\n this.safeHTML = this.sanitizer.bypassSecurityTrustHtml(this.outerHTML);\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","\r\n","import { FinanceOptions } from \"./configuration.types\";\r\n\r\nconst FINANCE_OPTIONS: FinanceOptions = {\r\n HP: {\r\n label: 'Hire Purchase',\r\n requiresAnnualMileage: false,\r\n maximumDeposit: 1.0,\r\n conditions: [],\r\n content: '
  • Fixed Monthly Payments
  • Fixed Interest
  • No annual mileage limit
  • Own vehicle at end of agreement
',\r\n productLink: 'https://www.creditplus.co.uk/car-finance/options/hire-purchase/'\r\n },\r\n PCP: {\r\n label: 'Personal Contract Purchase',\r\n requiresAnnualMileage: true,\r\n maximumDeposit: 0.3,\r\n conditions: [\r\n {\r\n key: 'vehicleage',\r\n comparison: '<=',\r\n value: 4\r\n },\r\n {\r\n key: 'mileage',\r\n comparison: '<=',\r\n value: 60000\r\n }\r\n ],\r\n content: '
  • Lower monthly payments
  • Annual mileage limit
  • Balloon payment at end of contract (pay and keep car, leave car or use it as a deposit for a new car)
  • Available for good credit ratings and above
',\r\n productLink: 'https://www.creditplus.co.uk/car-finance/options/personal-contract-purchase/'\r\n },\r\n LP: {\r\n label: 'Lease Purchase',\r\n requiresAnnualMileage: true,\r\n maximumDeposit: 0.3,\r\n conditions: [\r\n {\r\n key: 'vehicleage',\r\n comparison: '<=',\r\n value: 4\r\n }\r\n ],\r\n content: '
  • Fixed Monthly Payments
  • Defer up to 31% of payment to end of agreement
  • Own vehicle at end of agreement
  • Balloon payment (must be paid)
',\r\n productLink: 'https://www.creditplus.co.uk/car-finance-glossary/p/personal-contract-hire/'\r\n }\r\n};\r\n\r\n\r\nexport {\r\n FINANCE_OPTIONS\r\n}","\r\nconst SECTIONS = {\r\n ACCEPTANCE_STATUS: 'acceptance-status',\r\n ADD_A_CAR: 'add-a-car',\r\n ADDRESS: 'address',\r\n BANK_DETAILS: 'bank-details',\r\n CONSUMER_INFORMATION: 'consumer-information',\r\n CONTACT: 'contact', \r\n CREDIT_RATING: 'credit-rating',\r\n DASHBOARD: 'dashboard',\r\n DEALER: 'dealer',\r\n DEALERPORTAL: 'dealer-portal',\r\n DEMANDS_AND_NEEDS: 'demands-and-needs',\r\n DOCUMENTS: 'agreement-and-documentation',\r\n EXTRADETAILS: 'extra-details',\r\n EMPLOYMENT: 'employment',\r\n FINANCE_DOCUMENTS: 'documents',\r\n FINAL_PAGE: 'final-page',\r\n FINANCE_REQUEST: 'finance-request',\r\n GAP: 'gap',\r\n GAP_PRODUCT: 'gap-product',\r\n GET_QUOTES: 'quotes',\r\n HELP: 'help',\r\n INCOME: 'income', \r\n JOINT_APPLICANT: 'joint-applicant',\r\n MARKETING: 'marketing',\r\n OUTGOINGS: 'outgoings',\r\n PRODUCTS: 'products',\r\n PRODUCT_ITEMS: 'product_items',\r\n PROOFS: 'proofs',\r\n PROOF_VERIFY: 'proofVerify',\r\n QUOTE_EXAMPLE: 'quote-example',\r\n SETTINGS: 'settings',\r\n TERMS: 'terms-and-acceptance',\r\n TIMELINE: 'timeline',\r\n WARRANTY: 'warranty',\r\n WARRANTY_PRODUCT: 'warranty-product',\r\n DOCS: 'docs',\r\n VEHICLES: 'vehicles'\r\n};\r\n\r\nexport {\r\n SECTIONS\r\n}","import { GROUPS } from \"./configuration-groups\";\r\n\r\nconst ROLES = {\r\n CUSTOMER: {\r\n name: 'customer',\r\n group: GROUPS.CONSUMER.name\r\n },\r\n ADMIN: {\r\n name: 'admin',\r\n group: GROUPS.CONSUMER.name\r\n },\r\n SALES: {\r\n name: 'sales',\r\n group: GROUPS.CONSUMER.name\r\n },\r\n DEALER: {\r\n name: 'dealerplus dealer',\r\n group: GROUPS.DEALER.name,\r\n },\r\n DEALER_CUSTOMER: {\r\n name: 'dealerpluscustomer',\r\n group: GROUPS.DEALER.name\r\n },\r\n CCF: {\r\n name: 'ccf customer',\r\n group: GROUPS.CCF.name\r\n },\r\n TEMP: {\r\n name: 'temporary user',\r\n group: GROUPS.TEMP.name\r\n },\r\n dealerplusCustomer: {\r\n name: 'dealerplus customer',\r\n group: GROUPS.DpCustomer.name\r\n }\r\n};\r\n\r\nexport {\r\n ROLES\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\nimport { DisplayVehicle } from '../../../core/services/types-quote';\r\nimport { ActionsService } from '../base-form/base-form-testing.barrel.spec';\r\n\r\n@Component({\r\n selector: 'vehicle-display',\r\n templateUrl: './vehicle-display.component.html',\r\n styleUrls: ['./vehicle-display.component.scss']\r\n})\r\nexport class VehicleDisplayComponent implements OnInit {\r\n\r\n displayVehicle: DisplayVehicle[];\r\n applicationStatus: string;\r\n lendingTerms;\r\n quote: any;\r\n\r\n constructor(private actionsService: ActionsService) {\r\n this.actionsService.registerObserver(\r\n 'displayVehicle.updateVehicle',\r\n action => {\r\n this.displayVehicle = action.value.vehicle;\r\n this.applicationStatus = action.value.status;\r\n this.lendingTerms = action.value.loanOffer;\r\n },\r\n this\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n // if(this.application != null ) {\r\n // this.quote = this.application.quotes[0];\r\n // }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
","import { Component, OnInit, EventEmitter, Output, Input } from '@angular/core';\r\nimport { Configuration } from '../../../core/services/configuration/configuration';\r\n\r\n@Component({\r\n selector: 'forward-button',\r\n templateUrl: './forward-button.component.html',\r\n styleUrls: ['./forward-button.component.scss']\r\n})\r\nexport class ForwardButtonComponent {\r\n @Input()\r\n valid:boolean\r\n\r\n @Output()\r\n forward: EventEmitter = new EventEmitter();\r\n\r\n showButton:boolean=Configuration.loadCurrentJourneyType().sectionNavigation.pagingMethod=='BACKWARDS_AND_FORWARDS'?true:false;\r\n\r\n goForward(){\r\n this.forward.emit();\r\n }\r\n\r\n}\r\n","","import { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { Duration } from \"moment\";\r\n\r\n@Injectable()\r\nexport class DateService {\r\n computeGap(first:string, second:string) : Duration{\r\n let firstDate: Date = new Date(first);\r\n let secondDate: Date = new Date(second);\r\n\r\n return moment.duration(secondDate.valueOf() - firstDate.valueOf());\r\n }\r\n \r\n getTodayDate(): string {\r\n // http://stackoverflow.com/questions/6040515/how-do-i-get-month-and-date-of-javascript-in-2-digit-format\r\n let today = new Date();\r\n let todayFormatted = today.getFullYear() + '-' + (\"0\" + (today.getMonth() + 1)).slice(-2) + '-' + (\"0\" + today.getDate()).slice(-2);\r\n\r\n return todayFormatted;\r\n }\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { User } from \"../services/types\";\r\nimport { UserService } from \"../services/user/user.service\";\r\n\r\n@Injectable()\r\nexport class UserResolver implements Resolve {\r\n constructor(private userService: UserService) { }\r\n\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): Observable | Promise | any {\r\n\r\n if (route.parent == null) {\r\n throw Error(\"A parent route has not been found\");\r\n }\r\n\r\n return this.userService.getItem();\r\n\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Sms, UserService } from '../../../core/services/user/user.service';\r\n\r\n@Component({\r\n selector: 'registration-complete',\r\n templateUrl: './registration-complete.component.html',\r\n styleUrls: ['./registration-complete.component.scss']\r\n})\r\nexport class RegistrationCompleteComponent implements OnInit {\r\n @Input() mobileNumber: string;\r\n textCopied:boolean = false;\r\n\r\n constructor(private userService: UserService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n copyToClipboard(){\r\n this.textCopied = true;\r\n var text:string = \"https://portal.creditplus.co.uk/login\"\r\n //console.log(\"text click as \" + text);\r\n navigator.clipboard.writeText(text);\r\n setTimeout(()=>{\r\n this.textCopied=false;\r\n },2000);\r\n \r\n }\r\n\r\n async sendSms() {\r\n\r\n let sms: Sms = {\r\n PhoneNumber: this.mobileNumber,\r\n SenderName: \"Creditplus\",\r\n MessageBody: \"GOTO PORTAL https://portal.creditplus.co.uk/login\"\r\n }\r\n\r\n await this.userService.sendSms(sms).toPromise();\r\n }\r\n}\r\n","
\r\n
Great news, your application has been sent!
\r\n
\r\n
\r\n
We just sent a link to +44********###
\r\n
This link will give you access to our Portal which will enable you to find your next car,\r\n get loan offers and track your application easily, all in one place.

\r\n Currently the Customer Portal is only accessible via mobile, so please follow the link we sent you.\r\n
\r\n
Didn't get a text?\r\n >Resend SMS\r\n
\r\n
OR
\r\n
To be able to access your portal copy or share the link between yourself, then open it on mobile.
\r\n
\r\n \r\n \r\n
\r\n
\r\n
Already on mobile?\r\n Login\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","
\r\n\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'navbar',\r\n templateUrl: 'navbar.component.html',\r\n styleUrls: ['navbar.component.scss']\r\n})\r\nexport class NavbarComponent implements OnInit {\r\n\r\n @Input() currentSection:string;\r\n currentUser;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.currentUser = localStorage.getItem(\"currentUser\");\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { LoginService } from './../../../core/services/login/login.service'\r\nimport { Router } from '@angular/router';\r\nimport { Application } from '../../../core/services/types';\r\nimport { UserService } from '../../../core/services/user/user.service';\r\nimport { ApplicationStatusService } from '../../../core/services/application-status/application-status.service';\r\nimport { Title } from '@angular/platform-browser';\r\nimport * as pako from 'pako';\r\n@Component({\r\n selector: 'settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['./settings.component.scss']\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n @Input()\r\n application: Application;\r\n homeUrl = \"../../../../assets/navbar/home.png\";\r\n vehicleUrl = \"../../../../assets/navbar/vehicles.png\";\r\n docsUrl = \"../../../../assets/navbar/documents.png\";\r\n accountUrl = \"../../../../assets/navbar/account-active.png\";\r\n constructor(private loginService:LoginService, private ParentRouter:Router,\r\n private userService: UserService, private applicationStatusService: ApplicationStatusService,\r\n private titleService: Title) { }\r\n \r\n ngOnInit() {\r\n this.titleService.setTitle(\"Account Settings\");\r\n const compressed = pako.deflate(JSON.stringify(this.application));\r\n localStorage.setItem('_sdma', JSON.stringify(compressed));\r\n }\r\n\r\n async logout(){\r\n this.loginService.logout();\r\n this.ParentRouter.navigateByUrl(\"/login\");\r\n }\r\n goHome(){\r\n this.ParentRouter.navigateByUrl(\"applications/\" + this.application.id + \"/dashboard\")\r\n }\r\n goDocuments(){\r\n this.ParentRouter.navigateByUrl(\"applications/\" + this.application.id + \"/docs\")\r\n }\r\n\r\n goVehicles(){\r\n this.ParentRouter.navigateByUrl(\"applications/\" + this.application.id + \"/vehicles\")\r\n this.application.mainApplicant.identity.forename\r\n }\r\n\r\n changePassword(){\r\n this.ParentRouter.navigateByUrl(\"applications/\" + this.application.id + \"/settings/change-password\")\r\n }\r\n // updateBankDetails(){\r\n // this.ParentRouter.navigateByUrl(\"applications/\" + this.application.id + \"/extra-details\")\r\n // }\r\n marketingPreferences(){\r\n this.ParentRouter.navigateByUrl(\"applications/\" + this.application.id + \"/marketing\")\r\n }\r\n}\r\n","
\r\n
\r\n
Account settings
\r\n
\r\n
{{ this.application.mainApplicant.identity.forename | titlecase}} {{ this.application.mainApplicant.identity.surname | titlecase}}
\r\n
Reference Number: {{ this.application.id }}
\r\n
Personal Consultant: {{ this.application.salesPerson }}
\r\n\r\n
\r\n
\r\n
Personal Details
\r\n
M
\r\n
\r\n\r\n\r\n
\r\n
\r\n
Change Password
\r\n
M
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
Help Centre
\r\n
M
\r\n
\r\n\r\n
\r\n
\r\n
Marketing Preferences
\r\n
M
\r\n
\r\n\r\n
\r\n
\r\n
Logout
\r\n
M
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output, OnChanges, ViewChild, ElementRef } from '@angular/core';\r\nimport { LoanOffer, Application, Quote } from '../../../core/services/types';\r\nimport { ApplicationStatusService } from '../../../core/services/application-status/application-status.service';\r\nimport { ApplyService } from '../../../core/services/apply/apply.service';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { UserService } from '../../../core/services/user/user.service';\r\nimport { QuotesService } from '../../../core/services/quotes/quotes.service';\r\nimport { dealerCommission, Offer } from '../../../core/services/types-loan-offer';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { Options, LabelType } from '@angular-slider/ngx-slider';\r\nimport { Vehicle } from '../../../shared/models/vehicle.model';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'offers-list',\r\n templateUrl: './offers-list.component.html',\r\n styleUrls: ['./offers-list.component.scss']\r\n})\r\nexport class OffersListComponent implements OnInit, OnChanges {\r\n\r\n @ViewChild('filterContentOuterWindow') filterContentOuterWindow: ElementRef;\r\n @ViewChild('filterContentOuterWindow') filteringWindowContentDynamic: ElementRef;\r\n @ViewChild('mainSearchWindow') mainSearchWindow: ElementRef;\r\n\r\n showPopup:boolean = false;\r\n\r\n viewButtonHidden:boolean=false;\r\n\r\n filterContentOuterHeight:number = 0;\r\n filterContentInnerHeight:number = 0;\r\n filterContentScrolledBottom:boolean = false;\r\n filterContentScrolledTop:boolean = true;\r\n needsToBeScrolledTop:boolean = false;\r\n mainWindowScrollPosition:number = 0; \r\n\r\n //this needs to be changed on initialisation if not actually true\r\n hpAvailable:boolean = true;\r\n pcpAvailable:boolean = true;\r\n loanTypeSelected:string = \"HirePurchase\";\r\n\r\n //customer's loan choices\r\n chosenDeposit:number;\r\n chosenTerm:number;\r\n chosenMileage:number;\r\n\r\n //loan choices selected in filters\r\n newChosenDeposit:number;\r\n newChosenTerm:number;\r\n newChosenMileage:number;\r\n\r\n //hard minimum deposit value of 300. Can overwrite if there is data from elsewhere,\r\n //but enforce this as minimum otherwise\r\n minDeposit:number = 300;\r\n maxDeposit:number = 10000;\r\n\r\n minTerm:number = 12;\r\n maxTerm:number = 60;\r\n\r\n minMileage:number = 5000;\r\n maxMileage:number = 50000;\r\n\r\n @Input()\r\n application: Application;\r\n\r\n @Output()\r\n selectedOffer: EventEmitter = new EventEmitter();\r\n\r\n customerId:string;\r\n bestValueOffer: number = 9999;\r\n status: string;\r\n offers: Array;\r\n displayedOffers: Array = null;\r\n offerTitle: string;\r\n currentQuote: Quote;\r\n telephone: any;\r\n filterLevel: any;\r\n filtersVisible:boolean=false;\r\n\r\n offersAcceptedCount:number = 0;\r\n offersReferredCount:number = 0;\r\n vehicleInfo: Vehicle;\r\n\r\n depositOptions: Options;\r\n termOptions: Options;\r\n mileageOptions: Options; \r\n maxLoanApproved: number;\r\n constructor(\r\n private actionsService: ActionsService, private quotesService: QuotesService,\r\n private applyService: ApplyService,\r\n private applicationStatusService: ApplicationStatusService, private userService: UserService,\r\n private titleService: Title) {\r\n this.telephone = this.applicationStatusService.configuration.contact.telephone;\r\n }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(\"Payment Options\");\r\n //document.body.style.background = '#eeeff3'\r\n //console.log(this.application.loanProposalResponses); \r\n this.vehicleInfo = JSON.parse(localStorage.getItem(\"vehicleObject\"));\r\n //console.log(this.application.loanProposalResponses)\r\n this.displayedOffers = this.filterAccordingToConfiguration(this.application.loanProposalResponses);\r\n\r\n //console.log(this.displayedOffers);\r\n //this.displayedOffers = this.displayedOffers.filter(f => f.loanOffer.loanAmount >= this.vehicleInfo.price - 300) //300 needs to be changed to deposit if deposit values changed\r\n \r\n //this.displayedOffers=[];\r\n if (this.displayedOffers!=null && this.displayedOffers.length > 0){\r\n this.sortProposalsAlphabetically();\r\n this.offersAcceptedCount = (this.displayedOffers.filter(o => o.status === 'APPLICATION_ACCEPTED') || []).length;\r\n this.offersReferredCount = (this.displayedOffers.filter(o => o.status === 'APPLICATION_REFERRED') || []).length;\r\n \r\n //this.broadcastLowestOffer()\r\n //this.getDealerCommission(this.displayedOffers);\r\n\r\n //default values should be auto generated from journey?\r\n this.chosenDeposit = 300;\r\n this.chosenTerm = 36;\r\n this.chosenMileage = 10000;\r\n\r\n //default values stored for filters. Should only be changed on customer submit, so separated from standard values\r\n this.newChosenDeposit = this.chosenDeposit;\r\n this.newChosenTerm = this.chosenTerm;\r\n this.newChosenMileage = this.chosenMileage;\r\n \r\n }\r\n //generate options for sliders\r\n //Deposit isn't allowed to go down on slider, so set minDeposit to the initally chosen deposit\r\n this.minDeposit = this.chosenDeposit;\r\n this.depositOptions = {\r\n floor: Math.floor(this.minDeposit/100)*100,\r\n ceil: Math.ceil(this.maxDeposit/100)*100,\r\n step: 100,\r\n animateOnMove: true,\r\n translate: (value: number, label: LabelType): string => {\r\n switch (label) {\r\n case LabelType.Low:\r\n return '£ ' + value\r\n case LabelType.High:\r\n return '£ ' + value\r\n default:\r\n return '£ ' + value;\r\n }\r\n }\r\n };\r\n\r\n this.termOptions = {\r\n floor: this.minTerm,\r\n ceil: this.maxTerm,\r\n step: 1,\r\n animateOnMove: true,\r\n translate: (value: number, label: LabelType): string => {\r\n switch (label) {\r\n case LabelType.Low:\r\n return value + ' mths'\r\n case LabelType.High:\r\n return value + ' mths'\r\n default:\r\n return value + ' mths'\r\n }\r\n }\r\n };\r\n\r\n this.mileageOptions = {\r\n floor: Math.floor(this.minMileage/1000)*1000,\r\n ceil: Math.ceil(this.maxMileage/1000)*1000,\r\n step: 1000,\r\n animateOnMove: true,\r\n };\r\n\r\n this.customerId = this.application.id.toString();\r\n var tempValue = 0;\r\n var acceptance:LoanOffer = null;\r\n for (var i = 0; i < this.application.loanProposalResponses.length; i++){\r\n //console.log(\"loan response amount = \" + this.application.loanProposalResponses[i].loanOffer.loanAmount);\r\n // look for approved loan offers\r\n if (this.application.loanProposalResponses[i].status.toLowerCase()== \"application_accepted\") {\r\n // if approved loan offer is greater than vehicle price, add to acceptance\r\n if (this.application.loanProposalResponses[i].loanOffer.loanAmount >= this.vehicleInfo.Price){\r\n // but only add acceptance if the apr is the best available\r\n if (acceptance==null || acceptance.loanOffer.apr > this.application.loanProposalResponses[i].loanOffer.apr){\r\n acceptance = this.application.loanProposalResponses[i];\r\n }\r\n }\r\n \r\n if(this.application.loanProposalResponses[i].loanOffer.loanAmount > tempValue) {\r\n tempValue = this.application.loanProposalResponses[i].loanOffer.loanAmount;\r\n }\r\n //console.log(\"temp value = \" + tempValue);\r\n }\r\n }\r\n \r\n this.maxLoanApproved = tempValue;\r\n\r\n //console.log(\"acceptance in offer list = \");\r\n //console.log(acceptance);\r\n //console.log(\"vehicle in offer list = \");\r\n //console.log(this.vehicleInfo);\r\n\r\n if (acceptance != null)\r\n {\r\n var fractionOfAccepted = 1;\r\n if (this.vehicleInfo.Price <= acceptance.loanOffer.loanAmount)\r\n {\r\n fractionOfAccepted = this.vehicleInfo.Price / acceptance.loanOffer.loanAmount;\r\n }\r\n\r\n var quotedOffer = new LoanOffer();\r\n quotedOffer.loanOffer = new Offer();\r\n quotedOffer.loanOffer.apr = acceptance.loanOffer.apr;\r\n quotedOffer.loanOffer.balloon = acceptance.loanOffer.balloon;\r\n quotedOffer.loanOffer.deposit = acceptance.loanOffer.deposit == 0 ? 300 : acceptance.loanOffer.deposit;\r\n quotedOffer.loanOffer.loanAmount = this.vehicleInfo.Price - quotedOffer.loanOffer.deposit;\r\n quotedOffer.loanOffer.totalPayable = acceptance.loanOffer.totalPayable * fractionOfAccepted;\r\n quotedOffer.loanOffer.term = acceptance.loanOffer.term;\r\n quotedOffer.loanOffer.product = acceptance.loanOffer.product;\r\n quotedOffer.loanOffer.payment = (acceptance.loanOffer.payment * fractionOfAccepted) + 1; //Add £1 to monthly payment to allow for loss of precision\r\n quotedOffer.status = acceptance.status;\r\n \r\n if(this.vehicleInfo.Price < this.maxLoanApproved || this.displayedOffers.length == 0 ){\r\n this.displayedOffers = [quotedOffer]\r\n }\r\n } \r\n }\r\n\r\n getData() {\r\n return this.offers;\r\n }\r\n\r\n ngOnChanges() {\r\n this.currentQuote = this.application.quotes.find(q => q.isSelected);\r\n }\r\n\r\n filterAccordingToConfiguration(data: Array): Array {\r\n if (data == null) {\r\n return [];\r\n }\r\n\r\n let result: Array;\r\n result = data.filter(o => o.status.includes('APPLICATION_ACCEPTED') && o.status.includes('APPLICATION_REFERRED') || o.status.includes('APPLICATION_ACCEPTED') || o.status.includes('APPLICATION_REFERRED'));\r\n\r\n return this.clearDuplicateOffer(result);\r\n }\r\n\r\n async getProposalStatusUpdate() {\r\n if (environment.name != \"PROD\") {\r\n this.displayedOffers.forEach(element => {\r\n element.status = 'APPLICATION_ACCEPTED';\r\n });\r\n this.offerTitle = this.displayedOffers.filter(x => x.status = 'APPLICATION_ACCEPTED').length === 1\r\n ? 'We have an offer for you:'\r\n : 'Congratulations! You have been accepted by ' + this.displayedOffers.filter(x => x.status = 'APPLICATION_ACCEPTED').length + ' lenders. You can see your offers below.';\r\n this.sortProposalsAlphabetically();\r\n this.displayedOffers = this.clearDuplicateOffer(this.displayedOffers);\r\n }\r\n else {\r\n var results = await this.applyService.updateProposalStatus(this.application.id).toPromise();\r\n for (var result of results) {\r\n for (var offer of this.displayedOffers) {\r\n if (offer.lenderid == result.lenderId) {\r\n offer.status = result.status\r\n }\r\n }\r\n }\r\n this.sortProposalsAlphabetically();\r\n this.displayedOffers = this.clearDuplicateOffer(this.displayedOffers);\r\n }\r\n }\r\n goToFilterLevel(term: string) {\r\n this.filterLevel = term;\r\n this.waitThenCompareFilterHeights();\r\n }\r\n\r\n\r\n // compare heights of filter windows to see if scrolling indicator is needed\r\n compareFilterWindowHeights(){\r\n this.filterContentOuterHeight=this.filterContentOuterWindow.nativeElement.clientHeight;\r\n this.filterContentInnerHeight=this.filteringWindowContentDynamic.nativeElement.scrollHeight;\r\n ////console.log(\"outer height = \" + this.filterContentOuterWindow.nativeElement.offsetHeight);\r\n ////console.log(\"inner height = \" + this.filterContentInnerHeight);\r\n if (this.filteringWindowContentDynamic.nativeElement.scrollHeight - this.filteringWindowContentDynamic.nativeElement.scrollTop \r\n - this.filteringWindowContentDynamic.nativeElement.clientHeight < 1){\r\n this.filterContentScrolledBottom = true;\r\n }\r\n else{\r\n this.filterContentScrolledBottom = false;\r\n }\r\n if (this.filteringWindowContentDynamic.nativeElement.scrollTop == 0){\r\n this.filterContentScrolledTop = true;\r\n }\r\n else{\r\n this.filterContentScrolledTop = false;\r\n }\r\n if (this.needsToBeScrolledTop == true){\r\n this.needsToBeScrolledTop = false;\r\n this.filteringWindowContentDynamic.nativeElement.scrollTop = 0;\r\n }\r\n ////console.log(\"scrolled bottom = \" + this.filterContentScrolledBottom);\r\n ////console.log(\"scrolled top = \" + this.filterContentScrolledTop);\r\n }\r\n\r\n async waitThenCompareFilterHeights(){\r\n setTimeout(() => {\r\n this.compareFilterWindowHeights(); \r\n } , 10);\r\n }\r\n sortProposalsAlphabetically() {\r\n //This will order the offers by status alphabetic, wich works well in our use case\r\n //since we want acceptances first and refers last\r\n this.displayedOffers = this.displayedOffers.sort((n1, n2) => {\r\n if (n1.status > n2.status) {\r\n return 1;\r\n }\r\n if (n1.status < n2.status) {\r\n return -1;\r\n }\r\n return 0;\r\n })\r\n }\r\n\r\n clearDuplicateOffer(offerList: LoanOffer[]) {\r\n var result = [];\r\n for (var val of offerList) {\r\n if (val.loanOffer != null) {\r\n if (!result.some(x => x.lendername == val.lendername)) {\r\n if (val.loanOffer.payment < this.bestValueOffer) {\r\n this.bestValueOffer = val.loanOffer.payment;\r\n }\r\n val.display = (val.status == \"APPLICATION_REFERRED\" && result.filter(r => r.status == \"APPLICATION_REFERRED\").length > 0) ? false : true;\r\n result.push(val);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n broadcastLowestOffer() {\r\n if (this.bestValueOffer == 9999) {\r\n this.bestValueOffer = this.application.quotes[0].financeResponse.monthlyPayment;\r\n }\r\n this.actionsService.broadcast(\r\n {\r\n action: 'offers',\r\n behaviour: 'lowestPrice',\r\n value: this.bestValueOffer\r\n }\r\n );\r\n }\r\n\r\n\r\n\r\n\r\n \r\n async getDealerCommission(offers) {\r\n let commissionResult = await this.quotesService.getLenderCommission(offers).toPromise();\r\n for (var i = 0; i < this.displayedOffers.length; i++) {\r\n for (var commissionVal of commissionResult) {\r\n if (this.displayedOffers[i].lenderid == commissionVal.lenderTier.lenderId) {\r\n if (commissionVal != null) {\r\n commissionVal.dealerCut = Math.round(commissionVal.dealerCut * 1) / 1;\r\n this.displayedOffers[i].commission = commissionVal;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n selectOffer(){\r\n \r\n }\r\n\r\n setLoanTypeSelected(loanType:string){\r\n this.loanTypeSelected = loanType;\r\n }\r\n\r\n showFilters(show:boolean){\r\n if (show==true){\r\n this.filtersVisible=true;\r\n }\r\n else {\r\n this.filtersVisible=false;\r\n }\r\n }\r\n\r\n submitLoanChanges(){\r\n // this is just to display the changes for demoing, I imagine this would require an actual API call\r\n this.chosenMileage=this.newChosenMileage;\r\n this.chosenDeposit=this.newChosenDeposit;\r\n this.chosenTerm=this.newChosenTerm;\r\n this.showFilters(false);\r\n }\r\n\r\n hidePopup(){\r\n this.showPopup=false;\r\n }\r\n\r\n displayPopup(){\r\n //console.log(\"I'm in display popup\");\r\n this.showPopup=true;\r\n }\r\n\r\n\r\n}\r\n","
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
LPayment\r\n Options
\r\n
\r\n
Deposit
\r\n
\r\n \r\n
\r\n
A deposit is required to reserve the vehicle. The full amount is\r\n required within 24 hours of checkout.\r\n
\r\n
Term
\r\n
\r\n \r\n
\r\n
Annual Mileage
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
Submit changes
\r\n
\r\n
\r\n
\r\n
If you adjust these parameters your application will be resent\r\n for approval.\r\n This can take up to 2 hours.\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
Payment Options
\r\n\r\n
\r\n
\r\n
\r\n
HP
i
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n
There are no available offers for \r\n hired purchase. Please select PCP.\r\n personal contract purchase. Please select HP.\r\n
\r\n \r\n
\r\n\r\n
0 || offersReferredCount >0\">\r\n
\r\n We need more time to find your best finance options.\r\n We will contact you by phone to discuss.\r\n
\r\n
\r\n
Return Home
\r\n
\r\n
\r\n\r\n
0 || offersReferredCount <= 0\">\r\n
\r\n Your finance offers are loading. This can take up to 2 hours.\r\n Or enough time to watch the first episode of 'The Queen's Gambit' - we'd recommend giving it a watch!\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
X
\r\n
Hire Purchase (HP)
\r\n
Buy outright over a fixed length\r\n
There's no mileage restrictions and you own the car at the end.
\r\n
\r\n
\r\n
Personal Contract Purchase (PCP)
\r\n
Repay monthly then buy, exchange or hand back.\r\n
Usually lower monthly repayments and flexibility at the end.
\r\n
\r\n
\r\n
","\r\nimport {throwError as observableThrowError, Subscription , Observable , of } from 'rxjs';\r\n\r\nimport {map, catchError, finalize, share, mergeMap} from 'rxjs/operators';\r\nimport { environment } from './../../../../environments/environment';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse\r\n // Response,\r\n } from '@angular/common/http';\r\nimport { User, Application, IndustryTypes, Preference, employedStatus } from './../types';\r\nimport { LoginService } from './../login/login.service';\r\nimport { TimedActionService } from '../timed-action/timed-action.service';\r\nimport { TokenService } from '../token/token.service';\r\nimport { LoadingModalService } from '../modal/loading-modal.service';\r\n\r\n\r\nimport { ApplicantNotes } from '../types-applicantNotes';\r\n\r\n@Injectable()\r\nexport class UserService {\r\n\r\n firstTime = true;\r\n user: User;\r\n industry: number;\r\n currentApplicationId: number;\r\n category: string;\r\n urls: any = {\r\n user: environment.base + '/customer/application?id=:id',\r\n save: environment.base + '/customer/application/save',\r\n vehicle: environment.base + '/customer/application/vehicle?id=:id',\r\n empindustry: environment.base + '/lookUp/jobindustry',\r\n empStatus: environment.base + '/lookUp/employedStatus',\r\n LenderTarget: environment.base + '/lookUp/LenderTarget',\r\n ContactNotes: environment.base + '/lookUp/customerNotes?contactid=:id',\r\n apply: environment.base + '/customer/application/apply',\r\n notes: environment.base + '/customer/application/create-note',\r\n sms: environment.base + '/customer/application/SendSms'\r\n };\r\n loginStatusSubscription: Subscription;\r\n getUserSubscription: Subscription;\r\n getUserObservable: Observable;\r\n getVehicleObservable: Observable\r\n\r\n constructor(\r\n private loginService: LoginService,\r\n private tokenService: TokenService,\r\n private http: HttpClient,\r\n private timedActionService: TimedActionService,\r\n private loadingModalService: LoadingModalService) {\r\n this.loginStatusSubscription = loginService.loginStatusAnnounced$.subscribe(\r\n loggedIn => {\r\n if (!loggedIn) {\r\n this.clearUserCache();\r\n }\r\n }\r\n );\r\n }\r\n\r\n getItem(userId?: string): Observable {\r\n if (this.user != null) {\r\n return of(this.user);\r\n }\r\n if (typeof userId === 'undefined') {\r\n userId = this.tokenService.currentUser;\r\n }\r\n ////console.log(\"I'm in get user ID\");\r\n const url = this.urls.user.replace(':id', userId);\r\n this.loadingModalService.show();\r\n this.getUserObservable = this.http.get(url, {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((res) => {\r\n // //console.log(\"I made it to the map process\");\r\n ////console.log(res);\r\n this.timedActionService.resetTimer();\r\n this.user = res;\r\n return res;\r\n }),\r\n catchError((error: any) => {\r\n this.timedActionService.checkResetTimerOnError(error);\r\n return observableThrowError('An error occurred when retrieving the user ' + JSON.stringify(error));\r\n }),\r\n finalize(() => this.loadingModalService.hide()),\r\n share()\r\n );\r\n return this.getUserObservable;\r\n }\r\n\r\n getVehicle(userId: number): Observable {\r\n const url = this.urls.vehicle.replace(':id', userId);\r\n this.loadingModalService.show();\r\n return this.http.get>(url, {headers: this.loginService.getHeaderOptions(false)}).pipe(\r\n map((response) => {\r\n return response.body;\r\n }),\r\n catchError((error: any) => {\r\n this.timedActionService.checkResetTimerOnError(error);\r\n return observableThrowError('An error occurred when retrieving the user vehicle ' + error);\r\n }),\r\n finalize(() => this.loadingModalService.hide())\r\n );\r\n }\r\n\r\n getCurrentApplication(): Observable {\r\n return this.getItem().pipe(map(\r\n (user: User) => {\r\n return user.applications.find(\r\n application =>\r\n application.id === this.currentApplicationId, this\r\n );\r\n }\r\n ));\r\n }\r\n\r\n applyFormNewCustomer(application: Application) {\r\n var body: any = { Application: application };\r\n const url = this.urls.apply;\r\n this.loadingModalService.show();\r\n this.loadingModalService.displayMessage(3);\r\n\r\n return this.http.post>(url, body, {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n // this.logQuoteLookup(quote, true);\r\n return response.body;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n // this.logQuoteLookup(quote, false);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide())\r\n );\r\n }\r\n\r\n createNewNote(customerNote: ApplicantNotes) {\r\n var body = customerNote;\r\n const url = this.urls.notes;\r\n //console.log(url);\r\n return this.http.post>(url, body, {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n // this.logQuoteLookup(quote, false);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide())\r\n );\r\n }\r\n\r\n sendSms(sms: Sms) {\r\n var body = sms;\r\n const url = this.urls.sms\r\n //this.loadingModalService.show();\r\n return this.http.post>(url, body, {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n // this.logQuoteLookup(quote, false);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide())\r\n );\r\n }\r\n\r\n getApplicationById(applicationId: number): Observable {\r\n return this.getItem(applicationId.toString()).pipe(map(\r\n (user: User) => {\r\n return user.applications.find(\r\n application =>\r\n application.id === applicationId, this\r\n );\r\n }\r\n ));\r\n }\r\n\r\n updateIndustry(): Observable {\r\n return this.http.get>(this.urls.empindustry, {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n return response.body;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n updateEmploymentStatus(): Observable {\r\n return this.http.get>(this.urls.empStatus, { headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n return response.body;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n getCustomerNotes(contactid: number): Observable {\r\n this.loadingModalService.show();\r\n const url = this.urls.ContactNotes.replace(':id', contactid);\r\n return this.http.get>(url, { headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n return response.body;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide())\r\n );\r\n }\r\n\r\n getLenderTargetMarket(Category: string): Observable {\r\n this.category = Category;\r\n return this.http.post>(this.urls.LenderTarget, JSON.stringify(this.category), { headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n return response.body;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n\r\n updateApplication(application: Application, step: number): Observable {\r\n const existingApp = this.user.applications.find(a => a.id === application.id);\r\n //console.log(existingApp)\r\n const index: number = this.user.applications.indexOf(existingApp);\r\n if (existingApp) {\r\n const updatingApp = JSON.parse(JSON.stringify(existingApp));\r\n for (const key in application) {\r\n if (key === 'mainApplicant') {\r\n for (const mainApplicantKey of Object.keys(application['mainApplicant'])) {\r\n updatingApp['mainApplicant'][mainApplicantKey] = application['mainApplicant'][mainApplicantKey];\r\n }\r\n } else {\r\n updatingApp[key] = application[key];\r\n }\r\n }\r\n const url = this.urls.save;\r\n application.feedCategories = [];\r\n application.bestSellers = [];\r\n if (application['loanProposalResponses'] == null\r\n && updatingApp.loanProposalResponses != null\r\n && updatingApp.loanProposalResponses.some(r => r.isSelected)) {\r\n application['loanProposalResponses'] = updatingApp.loanProposalResponses;\r\n }\r\n var body: any = { Application: application, Step: step };\r\n if (window.location.href.indexOf(\"dealerplus\") != -1) {\r\n this.loadingModalService.show();\r\n if (step == 3) { \r\n this.loadingModalService.displayMessage(2);\r\n }\r\n }\r\n else {\r\n if (step == 3) {\r\n\r\n this.loadingModalService.displayMessage(2);\r\n }\r\n }\r\n //console.log(this.urls.save)\r\n\r\n return this.http.post>(this.urls.save, body, { headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n mergeMap(saveApplication => {\r\n var app:Application = JSON.parse(JSON.stringify(saveApplication));\r\n this.user.applications[index] = app;\r\n // Reset the token expiration timer\r\n this.timedActionService.resetTimer();\r\n return of(saveApplication);\r\n }),\r\n catchError(error => {\r\n console.log(error)\r\n this.timedActionService.checkResetTimerOnError(error);\r\n return observableThrowError('An error occurred when saving the application: ' + error);\r\n }),\r\n finalize(() => \r\n this.loadingModalService.hide())\r\n );\r\n }\r\n \r\n \r\n }\r\n\r\n getOnboardingQuote(contactId, username){\r\n var url = environment.base + '/customer/application/onboarding-details?userId=' + contactId + \"&userEmail=\" + username;\r\n return this.http.get(url);\r\n }\r\n\r\n updatePreference(preference: Preference) {\r\n this.user.preference.marketing = preference.marketing;\r\n localStorage.setItem('user', JSON.stringify(this.user));\r\n return of({ status: 'OK' });\r\n }\r\n\r\n updateUserCache(application: Application) {\r\n const foundApplication = this.user.applications\r\n .find(findApplication => findApplication.id === application.id);\r\n if (foundApplication != null) {\r\n const index = this.user.applications.indexOf(foundApplication);\r\n if (index !== -1) {\r\n this.user.applications[index] = application;\r\n }\r\n }\r\n }\r\n\r\n clearUserCache() {\r\n this.user = null;\r\n }\r\n\r\n clearUserCacheIfUserIsDifferent(id: number) {\r\n if (this.user && this.user.id !== id) {\r\n this.clearUserCache();\r\n }\r\n }\r\n\r\n updateVehicleNeeds(applicationId: any, vehicleAlreadyFound: boolean){\r\n var vehicleNeeded = vehicleAlreadyFound ? false : true;\r\n return this.http.post(environment.base + \"/customer/application/vehicle-needs?id=\" + applicationId + \"&vehicleNeeded=\" + vehicleNeeded, null);\r\n }\r\n}\r\n\r\nexport class Sms {\r\n public PhoneNumber: string;\r\n public SenderName: string;\r\n public MessageBody: string;\r\n}\r\n","import { CommercialAddress } from \"./types-address\";\r\n\r\n/*\r\n Dealer\r\n*/\r\nclass Dealer {\r\n public name?: string;\r\n public address?: CommercialAddress;\r\n public contact?: DealerContact;\r\n public vehicleLink?: string;\r\n public website?: string;\r\n}\r\n\r\nclass DealerContact {\r\n public name: string;\r\n public telephone: string;\r\n}\r\n\r\nexport {\r\n Dealer, DealerContact\r\n}\r\n","class Range {\r\n public min: number;\r\n public max: number;\r\n}\r\n\r\nexport {\r\n Range\r\n}","import { Component, Input } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { Application } from '../../../core/services/types';\r\nimport { LocationStrategy } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'applications-quotes',\r\n templateUrl: './quotes.component.html',\r\n styleUrls: ['./quotes.component.scss']\r\n})\r\n\r\nexport class QuotesComponent {\r\n headerObservers: Subscription;\r\n displayShowRoom: boolean = false;\r\n id: number = -1;\r\n vehicleDetailsPage: boolean = false;\r\n financeBreakdownRequested: boolean = false\r\n\r\n @Input()\r\n application: Application;\r\n\r\n selectedVehicle: any;\r\n\r\n constructor(private actionsService: ActionsService, private locationStrategy: LocationStrategy) {\r\n history.pushState(null, null, location.href);\r\n this.locationStrategy.onPopState(() => {\r\n if (this.vehicleDetailsPage == true) {\r\n this.displayShowroom(true);\r\n }\r\n else {\r\n this.displayShowroom(false);\r\n }\r\n history.pushState(null, null, location.href);\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n if (this.application.quotes[0].vehicle.derivative == \"Best Deal Car\") {\r\n this.displayShowRoom = true;\r\n this.id = 0;\r\n }\r\n this.headerObservers = this.actionsService.registerObserver(\r\n 'showroom.display',\r\n action => {\r\n this.displayShowRoom = action.value.displayShowroom;\r\n this.id = action.value.id;\r\n },\r\n this\r\n );\r\n this.headerObservers = this.actionsService.registerObserver(\r\n 'back.quotes',\r\n action => {\r\n this.displayShowRoom = false;\r\n },\r\n this\r\n );\r\n this.headerObservers = this.actionsService.registerObserver(\r\n 'back.showroom',\r\n action => {\r\n this.displayShowRoom = true;\r\n this.vehicleDetailsPage = false;\r\n },\r\n this\r\n );\r\n\r\n this.headerObservers = this.actionsService.registerObserver(\r\n 'display.financeBreakdown',\r\n action => {\r\n this.financeBreakdownRequested = action.value.display;\r\n },\r\n this\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.headerObservers.unsubscribe();\r\n }\r\n\r\n displayVehicleDetails(value) {\r\n this.displayShowRoom = false;\r\n this.vehicleDetailsPage = true;\r\n this.selectedVehicle = value;\r\n window.scroll(0, 0);\r\n }\r\n displayBreakDown(value) {\r\n this.selectedVehicle = value;\r\n this.financeBreakdownRequested = true;\r\n }\r\n displayShowroom(value) {\r\n this.displayShowRoom = value;\r\n this.vehicleDetailsPage = false;\r\n }\r\n financeBreakdownClicked(value) {\r\n this.financeBreakdownRequested = value;\r\n }\r\n}","
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { ActionsService } from '../base-form/base-form-testing.barrel.spec';\r\n\r\n@Component({\r\n selector: 'creditplus-privacy-policy',\r\n templateUrl: './creditplus-privacy-policy.component.html',\r\n styleUrls: ['./creditplus-privacy-policy.component.scss']\r\n})\r\nexport class CreditplusPrivacyPolicyComponent implements OnInit {\r\n constructor(private actionsService: ActionsService) { }\r\n\r\n ngOnInit() {\r\n }\r\n \r\n hidePolicy() {\r\n this.actionsService.broadcast({\r\n action: 'hide',\r\n behaviour: 'privacy',\r\n value: true\r\n });\r\n\r\n }\r\n}\r\n","
\r\n

Terms & Conditions

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

1. Acceptance of Terms

\r\n\r\n

\r\n 1.1 The website www.creditplus.co.uk (“the Site”) is a site operated by Whichdeal Limited, trading as ‘Creditplus’\r\n (\"We, Us, Creditplus\"). We are registered in The United Kingdom under companynumber 04997789 and our registered office\r\n address is Waterloo House, Fleets Corner, Nuffield Road, Poole, Dorset, BH27 0HL, UK. We are a limited company.

\r\n\r\n

\r\n 1.2 We are governed by UK and EU laws.

\r\n\r\n

\r\n 1.3 We are a “regulated Business”, directly authorised and regulated by the Financial Conduct Authority (FCA)\r\n Registration Number 456327.

\r\n\r\n

\r\n 1.4 Please make sure you have read these Terms & Conditions carefully, they protect you as a user of the\r\n Site and prevent the Site from being used for any illegal or unauthorised purposes. They also outline the parameters\r\n on which you are permitted to use the Site and by accessing and continuing to use this Site you agree to be bound\r\n by and act in accordance with these Terms & Conditions.

\r\n\r\n

\r\n 1.5 Your privacy is very important to us and we process all information about you in accordance with our Privacy\r\n Policy and Cookies Policy. By accessing and using the Site, you confirm that you have read and agreed to our Privacy\r\n Policy and Cookies Policy. We recommend that you print or save a copy of these Terms and Conditions for your information/future\r\n reference.

\r\n\r\n

\r\n 1.6 We may amend these Terms & Conditions at any time without prior notice. You are expected to check these\r\n Terms & Conditions from time to time and your continued use of the Site will mean that you accept any amendments\r\n to the Terms & Conditions.

\r\n\r\n

\r\n 1.7 All rights, including copyright and database rights of the Creditplus website and its contents are owned\r\n by Creditplus or otherwise used by Creditplus as permitted by applicable law.

\r\n\r\n

\r\n 1.8 To apply you must be at least 18 years old and a UK resident (excluding the Channel Islands and the Isle\r\n of Man). Car finance is also subject to personal circumstance.

\r\n\r\n

\r\n 1.9 If you have any questions, queries or concerns relating to these Terms & Conditions, please contact us\r\n at\r\n compliance@creditplus.co.uk\r\n

\r\n\r\n

2. Website

\r\n\r\n

\r\n 2.1 The Site is a medium for providing information and access to products and services of third parties, which\r\n is related to cars including new and used car loans. The site also advertises vehicles for sale by third party sellers\r\n on our web application(s) as indicated in these Terms & Conditions as “Creditplus”.

\r\n\r\n

\r\n 2.2 We do our utmost to ensure that the information on the Site is accurate, reliable and helpful. However, the\r\n information is general in nature, and is intended as a guide only to the types of products and services offered by\r\n Creditplus. Users are advised to consult with Creditplus and to check any product or service information for specific\r\n information. We will not be responsible if any such material is untrue, inaccurate, incomplete and/or contains errors\r\n and we disclaim all liability and responsibility arising from any reliance you place on such material.

\r\n\r\n

\r\n 2.3 All vehicle descriptions are supplied by dealers, and therefore Creditplus shall not be held responsible\r\n for any related errors or emissions on pricing or vehicle description. Creditplus has the right to refuse a sale\r\n or adjust any details up until an order has been received in writing from the customer at an agreed price set by\r\n Creditplus.

\r\n\r\n

\r\n 2.4 Any loan or other product or service which you obtain via the Site will be subject to the terms and conditions\r\n of the relevant product provider. Before proceeding with any loan or other product or service with the product provider,\r\n you should read its terms and conditions carefully and, where appropriate, take independent advice.

\r\n\r\n

\r\n 2.5 The Site and the information supplied for use with it have been obtained from sources believed to be reliable\r\n and accurate at the date of publication. Creditplus makes no representation or warranty, express or implied, as to\r\n its accuracy or completeness. No independent verification has been undertaken in respect of the information supplied.

\r\n\r\n

\r\n 2.6 Material contained on the site may be out of date at any given time and, whilst we endeavour to maintain\r\n the validity of material and to ensure that the information is up to date. However, we are under no obligation to\r\n do so and material on the site may be subject to change at any time.

\r\n\r\n

\r\n 2.7 If a linked site is used, any personal information you provide to that site will be actioned in line with\r\n that site’s Privacy policy, not the privacy policy of Creditplus, so please ensure that you have read that site’s\r\n Privacy Policy and Terms & Conditions before you provide any personal Information and use the services of that\r\n website.

\r\n\r\n

3. Your use of the Website

\r\n\r\n

\r\n 3.1 By accessing Creditplus web pages, you agree that you will access the contents solely for your own private\r\n use and not for any commercial or public use. Except as permitted within, you undertake not to copy, store in any\r\n medium (including in any other website), distribute, transmit, re-transmit, broadcast, modify, or show in public\r\n any part of Creditplus web site save for the purposes as laid out in these terms and conditions without the prior\r\n written permission of Creditplus or in accordance with the Copyright, Designs and Patents Act 1988.

\r\n\r\n

\r\n 3.2 Anyone can access the Creditplus site using their web browser and associated internet connection. However,\r\n if you want to access and use Creditplus website and/or any connected services, you as consumer will need to make\r\n an application for Motor Finance. To access the afore mentioned services you must be 18 years of age or older and\r\n be resident within the United Kingdom.

\r\n\r\n

\r\n 3.3 You must not under any circumstances attempt to gain unauthorised access to our site, the server on which\r\n our site is stored, or any server, computer or database connected to our site. You must not seek to undermine the\r\n security of the site in any way. In particular, but without limitation, you must not attempt to alter or delete any\r\n information that you are not authorised to access, attack our site via a denial-of-service attack or a distributed\r\n denial-of service attack. By doing so you would commit a criminal offence under the Computer Misuse Act 1990.

\r\n\r\n

\r\n 3.4 You are permitted to print or download extracts from material on the site as a consumer for your personal\r\n use only, provided you keep intact all or any copyright and proprietary notes contained on the site. No licence is\r\n granted to you in these Terms & Conditions to use any trade mark of Creditplus.

\r\n\r\n

\r\n 3.5 The site may be used only for lawful purposes and you may not use the site that in any way breaches any local,\r\n national or international law or regulation. In any way that is unlawful or fraudulent or has any unlawful or fraudulent\r\n purpose or effect.

\r\n\r\n

\r\n 3.6 You are not permitted to use the site for the purpose or intent of attempting to harm minors in any way

\r\n\r\n

\r\n 3.7 You may not use the site to knowingly transmit, send upload or conceal any data or other material that may\r\n contain viruses, spyware, adware or any other harmful programs or similar computer designed code(s) to damage, disrupt\r\n or adversely affect the operation of the site or any computer software/hardware.

\r\n\r\n

4. Disclaimer/Liability

\r\n\r\n

\r\n 4.1 Neither the Site nor the information derived from it constitutes an offer by Creditplus. Prices contained\r\n within the site and/or Quotations subsequently obtained are subject to confirmation by Creditplus. We have the right\r\n to decline any proposal. No contract will be binding on Creditplus unless it is in writing and signed by a duly authorised\r\n representative of Creditplus.

\r\n\r\n

\r\n 4.2 Any photographs and colours used in the site are for illustrative purposes only and do not form part of any\r\n contract.

\r\n\r\n

\r\n 4.3 We do not make any promises as to the availability, accessibility and or reliability of the site(s)when you\r\n wish to access, the content on it or the services we provide will be available or delivered uninterrupted in a timely\r\n manner or error free and it may be necessary to suspend, restrict or terminate access by users at any time. If a\r\n fault does occur in the service you experience, you should report it to us and we will attempt to reinstate the service\r\n as soon as we reasonably can.

\r\n\r\n

\r\n 4.4 Accordingly, neither Creditplus nor its directors, representatives or employees, accept any liability whatsoever\r\n for any direct, indirect or consequential loss howsoever arising from the use of this Site and the information supplied\r\n in connection therewith.

\r\n\r\n

\r\n 4.5 By using the Site the User further agrees to indemnify and hold Creditplus harmless from any and all claims,\r\n expenses and liability of any kind arising out of or in connection with any use of the Site.

\r\n\r\n

\r\n 4.6 The Site contains links to other websites. When you activate any of these links, you will leave the Site\r\n and we accept no responsibility for the availability or content of any linked websites or for any loss or damage\r\n that may arise from your use of them. The links are provided for your convenience and any such link does not imply\r\n endorsement by us of a website or any association with the operators of a website.

\r\n\r\n

\r\n 4.7 In assessing your car loan application, we will make enquiries about you including searching your records\r\n held by Equifax Plc and/or Experian Ltd. You consent to us disclosing details of your finance application and we\r\n may use a 'credit scoring' or other automated process in deciding whether to accept your application. Your information\r\n may also be sent to a third party for further loan/insurance option purposes. Loan offers will be valid for 30 days.\r\n

\r\n\r\n

\r\n 4.8 Any access to the Creditplus site is permitted on a temporary basis, as we reserve the right to amend or\r\n withdraw the service we provide on the site at any time and without notice. We will not be held liable if, for any\r\n reason, the site is unavailable at any time or for any period of time.

\r\n\r\n

5. New and Pre-registered Cars supplied by Creditplus

\r\n\r\n

\r\n 5.1 All New and Pre-registered cars supplied by Creditplus will be covered by the relevant Manufacturer’s warranty.\r\n Where a vehicle is Pre-registered the balance of manufacturer’s warranty shall apply with no additional warranties\r\n being supplied by Creditplus. It is the customer’s responsibility to be fully aware of the parts not covered by the\r\n manufacturer’s car warranty (if any). All New & Pre-registered cars are supplied on the basis that the client\r\n understands Creditplus will not rectify or compensate for any car repairs outside of the car warranty.

\r\n\r\n

\r\n 5.2 If a New or Pre-registered car is returned the customer bears the cost of return along with a cancellation\r\n fee of 5% of the car value or a minimum of £500, whichever is the greater.

\r\n\r\n

6. Used Cars Supplied by Creditplus

\r\n\r\n

\r\n 6.1 Cars supplied by Creditplus will be covered by a car warranty for a minimum of 6 months. It is the customer's\r\n responsibility to be fully aware of the parts not covered by the car warranty (if any). The car is supplied on the\r\n basis that the client understands Creditplus will not rectify or compensate for any car repairs outside of the car\r\n warranty. For further information visit our car warranties explained page (/help-and-advice/making-anapplication/joint-applications/guarantor/).\r\n

\r\n\r\n

\r\n 6.2 If a car is returned the customer bears the cost of return and a cancellation fee of 5% of the car value\r\n or a minimum of £500, whichever is the greater.

\r\n\r\n

\r\n 6.3 The Creditplus Vehicle Standards Guideline can be found here (/media/1255/vehiclestandards.pdf).

\r\n\r\n

\r\n 6.4 On delivery of a vehicle supplied by Creditplus, you must inspect it and sign for its acceptance. If you\r\n allow another individual to do this, it will be taken that they are acting fully on your behalf and that you personally\r\n have accepted the vehicle. If you require a test drive of the vehicle, you need to notify the driver who will allow\r\n you to do so.

\r\n\r\n

\r\n 6.5 The customer has a 14 day notice period from delivery, for notification of any mechanical or body defects\r\n providing they are not commensurate with the vehicle age and mileage or notified to you before delivery.

\r\n\r\n

\r\n 6.6 Cancellation after accepting the vehicle will only be allowed provided the goods are deemed faulty and that\r\n Creditplus cannot repair such items within 30 days. The cancellation fee does not apply if the vehicle order is cancelled\r\n under these terms. Order pricing is valid 02/01/2020 Terms and Conditions https://www.creditplus.co.uk/terms-and-conditions/\r\n 4/8 pp y p g for 14 days. If you are purchasing the vehicle using finance, you need to refer to the lenders terms\r\n and conditions. This does not affect your statutory rights as per distance selling rights.

\r\n\r\n

7. Data Protection

\r\n\r\n

\r\n 7.1 If you make an application, your details will be held on computer and used in a credit scoring or other automated\r\n decision-making process when assessing your application. An enquiry will be made with Credit Reference Agencies,\r\n who will record it so that it can be viewed by other Agency users. Your information will also be checked with fraud\r\n prevention agencies and if fraud is suspected Creditplus (\"we\" or \"us\") will record this and those details will be\r\n shared with other subscribing organisations. For the purposes of this application you may be treated as financially\r\n linked and your application will be assessed with reference to any \"associated\" records. If you are a joint applicant\r\n or if you have told us of some other financial association with another person, you must be sure that you are entitled\r\n to:

\r\n\r\n

· Disclose information about your joint applicant and anyone referred to by you

\r\n\r\n

· Authorise Creditplus to search, link or record information at credit reference agencies about you and anyone referred\r\n to by you

\r\n\r\n

\r\n 7.2 You authorise us to make all enquiries necessary to verify this information to enable us to consider this\r\n and or any subsequent application. By agreeing to the terms and conditions when making your application, you are\r\n giving your consent for you

\r\n\r\n

\r\n 7.3 r information to be used by Creditplus for administrative, underwriting, marketing and revenue purposes.\r\n This may include partners or related 3rd parties. This also includes any of our sister sites. If you do not want\r\n your details to be used for marketing please write to Creditplus, Waterloo House, Fleets Corner, Nuffield Road, Poole,\r\n Dorset, BH27 0HL. Under the terms of the act you have the right to obtain a copy of the information held about you\r\n upon payment of the appropriate fee.

\r\n\r\n

\r\n 7.4 Regulatory requirements and applicable laws state that there are elements of the service that must be communicated\r\n in writing. Our main communication means with you will be electronic. We will contact you by letter or email. For\r\n contractual purposes, you consent to electronic means of communication and acknowledge that all information, notices,\r\n contracts, agreements and other communications we provide to you as customer electronically, comply with and regulatory\r\n and legal requirement that such communication be in writing. This condition in no way affects your statutory rights.

\r\n\r\n

8. Additional Fees

\r\n\r\n

\r\n 8.1 At the request of the customer, Creditplus will disclose to the customer, in good time before a regulated\r\n credit agreement or a regulated consumer hire agreement is entered into, the amount (or if the precise amount is\r\n not known, the likely amount) of any commission or fee or other remuneration payable to Creditplus by the lender\r\n or owner or a third party.

\r\n\r\n

\r\n 8.2 Creditplus reserve the right to charge an administration fee to cover the cost of sourcing a suitable vehicle\r\n or vetting an appropriate dealer. The administration charge is kept to a minimum to cover costs only. In the event\r\n of a cancelled order by the client, or the client changing supplier the administration fee will not be returned by\r\n Creditplus.

\r\n\r\n

\r\n 8.3 If a customer wants payment from a lender within 24 hours of pay-outs, Creditplus will charge a £25 administration\r\n fee.

\r\n\r\n

\r\n 8.4 As per Road Fund Licence (Road Tax) regulation changed on 1\r\n st October 2014, Creditplus are not able to provide any road tax with any vehicle, new or used. It is the responsibility\r\n of the customer to contact the DVLA and arrange road tax payment. Creditplus will not be held responsible for any\r\n loss incurred by the customer for failure to comply with the new regulations. 02/01/2020Terms and Conditions https://www.creditplus.co.uk/terms-and-conditions/\r\n 5/8

\r\n\r\n

\r\n 8.5 All contacts supplied by Creditplus will be in English.

\r\n\r\n

9. Information about our Financial Services

\r\n\r\n

\r\n 9.1 Creditplus is a specialist vehicle financier and vehicle supplier, strictly governed by its relationships\r\n with lenders and dealers, and cannot be held responsible for any change to vehicle specification or finance rates\r\n or any other variable outside of its control so imposed by those companies.

\r\n\r\n

\r\n 9.2 The term of any contract we offer will be between 12-60 months. We do not offer contracts for less than 12\r\n months.

\r\n\r\n

\r\n 9.3 Any offers provided by Creditplus will be valid for 30 days, from the date issued.

\r\n\r\n

\r\n 9.4 The Consumer Rights Act 2015 exists to protect the customers from businesses that operate without reasonable\r\n care and skill. All services supplied by Creditplus are governed by the Consumer Rights act 2015 which superseded\r\n the Supply of Goods & Services act of 1982. You can find the act with full details here\r\n http://www.legislation.gov.uk/ukpga/2015/15/pdfs/ukpga_20150015_en.pdf ).

\r\n\r\n

\r\n 9.5 You will be provided with a standardised form with any credit agreement called Standard European Consumer\r\n Credit Information (SECCI). This document allows you to see exactly what your finance agreement contains. For more\r\n information visit our car finance glossary, SECCI explained page (/why-us/our-values/ethical-lending-policy/).

\r\n\r\n

\r\n 9.6 Quotes generated by the 'Build your finance quote' form are powered by the vehicle and finance settings chosen\r\n by the user. All the quotes are based on prime interest rates and are subject to change. In addition, the quotes\r\n do not take into account any customer information or circumstances which can affect an individual’s chance of getting\r\n finance for a vehicle. The figures provided by this form are quotes and do not represent an acceptance for a loan\r\n of any kind. As the quotes are subject to a user’s personal circumstances and lender requirements, full confirmation\r\n on the price to be paid (including all related lender fees) will be detailed in the lender’s customer documentation\r\n pack.

\r\n\r\n

10. Complaints

\r\n\r\n

\r\n 10.1 If you have a complaint then we have full details of the complaint’s procedure available on our complaints\r\n page. Any general complaints or feedback please contact us at\r\n complaints@creditplus.co.uk or by post to Creditplus.

\r\n\r\n

\r\n 10.2 If 8 weeks has passed since making your complaint and you are still not happy then you may contact the Financial\r\n Ombudsman Service (FOS). Details on FOS and how to contact them can be found on our complaints page.

\r\n\r\n

\r\n 10.3 As a company we respect the intellectual property rights of other users of our site are prohibited from\r\n uploading, posting, submitting or transmitting any materials that impair, violate or infringe any other person’s\r\n intellectual property rights. It is our policy to comply with clear notices of alleged copyright infringement. If\r\n you are aware of, or wish too submit a notice of alleged copyright infringement or lodge a counter notice, please\r\n contact us by emailing\r\n compliance@creditplus.co.uk\r\n

\r\n\r\n

\r\n 11.Cancellation Policy\r\n

\r\n\r\n

\r\n 11.1 The customer has 14 days from the date of funding to cancel the agreement with no penalty.

\r\n\r\n

\r\n 11.2 If the car is delivered the customer has 14 days from the day of delivery to cancel without penalty under\r\n the Consumer Contracts Regulations 2014 and the Consumer Rights Act of 2015. However, the vehicle supplier has the\r\n right to claim reasonable compensation for any true costs incurred.

\r\n\r\n

12. Compensation

\r\n\r\n

\r\n 12.1 You agree to only use the site in accordance with these Terms and Conditions and further agree to compensate\r\n us (and our agents, suppliers, employees and officers) in full for any costs, losses, damages and expenses, including\r\n reasonable legal fees, that we incur, arising from or in connection with any breach of these Terms and Conditions.\r\n This incudes any actions that you take which disrupts access to and/or the functioning of the sites(S), or any liability\r\n we incur as a result of your use of the site(s).

\r\n\r\n

13. Changes

\r\n\r\n

These Terms and Conditions may change at any time as the conditions or terms alter. It is the responsibility of the\r\n users of the site to ensure that they review our Terms & Conditions should they use the site on each occasion.\r\n Continued us of the site means that you accept any such changes.

\r\n\r\n

14. Got a question for us?

\r\n\r\n

If you require further assistance, our team of Customer Advisors are here to help. We're open seven days a week - you\r\n can view our opening hours here contact us - and we're more than happy to answer your questions.

\r\n\r\n

Please call 0333 6000 290

\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n","import { Provider } from '@angular/core';\r\nimport { XhrFactory, HttpXhrBackend } from '@angular/common/http';\r\n\r\nexport function getBackEnd(\r\n browser: XhrFactory) {\r\n\r\n return new HttpXhrBackend(browser);\r\n}\r\n\r\nexport let xhrProvider: Provider = {\r\n provide: HttpXhrBackend,\r\n useFactory: getBackEnd,\r\n deps: [XhrFactory]\r\n}\r\n\r\nexport const environment = {\r\n production: false,\r\n isDebugging: true,\r\n base: \"https://quickdealapi-dev.creditplus.co.uk/api\",\r\n provider: xhrProvider,\r\n name: \"Dev\",\r\n demo: true\r\n};\r\n","import { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core';\r\nimport { Application, Proof, RequiredProof } from '../../../core/services/types';\r\nimport { Router } from '@angular/router';\r\nimport { FileUploader, FileItem, ParsedResponseHeaders } from 'ng2-file-upload';\r\nimport { LoadingModalService } from '../../../core/services/modal/loading-modal.service';\r\nimport { TokenService } from './../../../core/services/token/token.service';\r\nimport { environment } from './../../../../environments/environment';\r\n\r\n//onfido objects\r\nimport { Applicant } from './../../../shared/models/onfido/Applicant';\r\nimport { Address } from './../../../shared/models/onfido/Address';\r\nimport { SdkToken } from './../../../shared/models/onfido/SdkToken';\r\nimport { OnfidoRef } from './../../../shared/models/onfido/OnfidoRef';\r\nimport { Check } from './../../../shared/models/onfido/Check';\r\n\r\nimport * as moment from 'moment/moment'\r\nimport { HttpClient, HttpHeaders,\r\n //RequestOptionsArgs, RequestOptions, ResponseContentType \r\n} from '@angular/common/http';\r\nimport { ProofsService } from '../../../core/services/proofs/proofs.service';\r\nimport {LoginService} from '../../../core/services/login/login.service';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { OtherProofsCheck } from '../../../shared/models/onfido/OtherProofsCheck';\r\nclass DropZone {\r\n uploader: FileUploader;\r\n label: string;\r\n id: string;\r\n requiredProof: RequiredProof;\r\n addingProof: boolean;\r\n}\r\n\r\nclass EmailRequest{\r\n customer : Customer\r\n Metadata : MetaData\r\n}\r\nclass Customer{\r\ncontactid: number\r\nfname: string\r\nlname: string\r\nemail: string\r\n\r\n}\r\n\r\nclass MetaData {\r\n EmailTemplateId: number\r\n Optional_text: Array\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'proofs',\r\n templateUrl: './proofs.component.html',\r\n styleUrls: ['./proofs.component.scss']\r\n})\r\n\r\nexport class ProofsComponent implements OnInit {\r\n @Input()\r\n application: Application;\r\n dropZone: DropZone;\r\n availableProofs: Proof[]\r\n uploadProofUrl: string;\r\n checkProofUrl: string;\r\n //requestArgs: RequestOptionsArgs;\r\n fileFound;\r\n allowedExtensions: string[];\r\n incomeProofCount;\r\n sdkToken: SdkToken;\r\n showOnfidoSdk: boolean =false;\r\n onfidoRef: OnfidoRef;\r\n otherProofsCheck: OtherProofsCheck;\r\n\r\n @ViewChild('licenceFrontUpload') drivingLicenceUpload: ElementRef;\r\n @ViewChild('licenceBackUpload') drivingLicenceBackUpload: ElementRef;\r\n @ViewChild('addressProofUpload') addressProofUpload: ElementRef;\r\n @ViewChild('incomeProofUpload') incomeProofUpload: ElementRef;\r\n @ViewChild('licenceModal') licenceModal: ElementRef;\r\n @ViewChild('incomeModal') incomeModal: ElementRef;\r\n @ViewChild('addressModal') addressModal: ElementRef;\r\n @ViewChild('fileFormatModal') fileFormatModal: ElementRef;\r\n @ViewChild('incomeProofMaxModal') incomeProofMaxModal: ElementRef;\r\n\r\n constructor(private http: HttpClient,\r\n private parentRouter: Router,\r\n private loadingModalService: LoadingModalService,\r\n private tokenService: TokenService,\r\n private proofService: ProofsService,\r\n private loginService:LoginService,\r\n private titleService: Title,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n\r\n //onfido page currently disabled;\r\n this.parentRouter.navigateByUrl(\"/login\");\r\n\r\n return;\r\n\r\n //delete this block to re-enable onfido\r\n\r\n this.onfidoRef = new OnfidoRef();\r\n this.onfidoRef.checks = [];\r\n this.titleService.setTitle(\"Proofs\");\r\n this.incomeProofCount = 0;\r\n this.allowedExtensions = [\".png\", \".jpg\", \".jpeg\", \".gif\", \".tif\", \".tiff\"]\r\n this.fileFound =\r\n {\r\n addressProof: false,\r\n incomeProof: false,\r\n }\r\n\r\n var requiredProof = {\r\n label: \"Driving licence Front\",\r\n id: \"drivingLicenseFront\",\r\n description: \"Driving Licence (front)\",\r\n docsRequired: 1\r\n };\r\n\r\n this.dropZone = {\r\n uploader: new FileUploader({ removeAfterUpload: true }),\r\n label: \"Driving licence Front\",\r\n id: \"drivingLicenseFront\",\r\n requiredProof: requiredProof,\r\n addingProof: true\r\n };\r\n\r\n this.uploadProofUrl = environment.base + `/docs/?applicationId=${this.application.id}`;\r\n this.availableProofs = [];\r\n this.checkProofUrl = environment.base + `/docs/download/?applicationId=${this.application.id}`;\r\n this.computeMissingDocuments(this.dropZone);\r\n this.bindEvents(this.dropZone);\r\n this.getFiles();\r\n }\r\n\r\n ngAfterViewInit(){\r\n this.retrieveOnfidoReferences();\r\n this.checkUploadedFiles();\r\n }\r\n\r\n\r\n\r\n importFile(file: File, addingProofs: boolean) {\r\n this.loadingModalService.show();\r\n this.dropZone.addingProof = addingProofs;\r\n this.dropZone.uploader.addToQueue([file]);\r\n this.loadingModalService.hide();\r\n }\r\n\r\n getProof(item: FileItem, id: string) {\r\n return {\r\n dateUploaded: moment(new Date()).format(\"DD-MM-YYYY\"),\r\n filename: item._file.name,\r\n id: 0,\r\n title: item._file.name,\r\n type: id\r\n };\r\n }\r\n\r\n retrieveOnfidoReferences(){\r\n var applicant = new Applicant();\r\n applicant.id = this.application.id.toString();\r\n this.http.post(environment.base + \"/onfido/retrieve-references\", applicant).subscribe(\r\n (result) => {this.handleRetrievedReferences(result)}\r\n )\r\n}\r\n\r\nhandleRetrievedReferences(result){\r\n if (result!=null){\r\n this.onfidoRef = JSON.parse(result);\r\n // To protect against duplicate checks for the same \r\n if (this.onfidoRef!=null && this.onfidoRef.checks!=null && this.onfidoRef.checks.length>1){\r\n this.onfidoRef.checks.sort((b, a) => new Date(a.statusChangeDate).getTime() - new Date(b.statusChangeDate).getTime());\r\n this.onfidoRef.checks[0].status=\"complete\";\r\n this.onfidoRef.checks[0].result=\"consider\"; //for testing only\r\n }\r\n }\r\n}\r\n\r\n\r\ncheckUploadedFiles(){\r\n var applicant = new Applicant();\r\n applicant.id = this.application.id.toString();\r\n this.http.post(environment.base + \"/onfido/check-other-proofs\", applicant).subscribe(\r\n (result) => {this.handleUploadedFileCheck(result)}\r\n )\r\n}\r\n\r\nhandleUploadedFileCheck(result){\r\n this.otherProofsCheck = JSON.parse(result);\r\n if (this.otherProofsCheck.proofAddressFound==true){\r\n this.fileFound.addressProof = true;\r\n }\r\n if (this.otherProofsCheck.proofIncomeFound==true){\r\n this.fileFound.incomeProof = true;\r\n }\r\n this.updateFiles();\r\n}\r\n\r\n\r\n checkOnfidoReference(){\r\n if (this.onfidoRef.id==null){\r\n this.createOnfidoApplicant();\r\n }\r\n else{\r\n this.startOnfidoSDK();\r\n }\r\n }\r\n\r\n createOnfidoApplicant(){\r\n \r\n var applicant = new Applicant();\r\n \r\n //add the 454 number to the applicant ID for sending to the backend. This will be stripped out and replaced with\r\n //the onfido reference id once created\r\n applicant.id = this.application.id + \"\";\r\n\r\n applicant.first_name = this.application.mainApplicant.identity.forename;\r\n applicant.last_name = this.application.mainApplicant.identity.surname;\r\n applicant.email = this.application.mainApplicant.contact.email;\r\n applicant.dob = this.application.mainApplicant.identity.dateOfBirth;\r\n\r\n var address = new Address();\r\n\r\n address.street = this.application.mainApplicant.addresses[0].address1;\r\n address.town = this.application.mainApplicant.addresses[0].town;\r\n address.postcode = this.application.mainApplicant.addresses[0].postcode;\r\n address.country = \"GBR\";\r\n\r\n applicant.address = address;\r\n\r\n this.http.post(environment.base + \"/onfido/create-applicant\", applicant).subscribe(\r\n (result) => {console.log(result); this.onfidoRef.id = result.toString(); \r\n this.startOnfidoSDK();}\r\n );\r\n }\r\n\r\n startOnfidoSDK(){\r\n var applicant = new Applicant();\r\n applicant.id = this.onfidoRef.id;\r\n this.http.post(environment.base + \"/onfido/get-sdk-token\", applicant).subscribe(\r\n (result) => {console.log(result); this.sdkToken=JSON.parse(result.toString()); this.showOnfidoSdk=true;}\r\n );\r\n }\r\n\r\n onfidoFinished(Input: any){\r\n //console.log(\"Trying to cose onfido with input = \");\r\n //console.log(Input);\r\n //console.log(\"document front id = \" + Input.document_front.id);\r\n //console.log(\"document back id = \" + Input.document_back.id);\r\n //console.log(\"face id = \");\r\n this.showOnfidoSdk=false;\r\n \r\n var applicant = new Applicant(); \r\n applicant.id = this.onfidoRef.id;\r\n applicant.first_name = this.application.mainApplicant.identity.forename;\r\n applicant.last_name = this.application.mainApplicant.identity.surname;\r\n \r\n this.http.post(environment.base + \"/onfido/create-check\", applicant).subscribe(\r\n (result) => {this.retrieveOnfidoReferences();}\r\n );\r\n }\r\n\r\n //uses object taken from actual onfido web hook request\r\n onfidoWebHookTest(){\r\n this.http.post(environment.base + \"/onfido/hook\", {\"payload\": {\r\n \"resource_type\": \"check\",\r\n \"action\": \"check.completed\",\r\n \"object\": {\r\n \"id\": \"c7472418-6b67-44c8-bc81-ff8b6dcf8d5a\",\r\n \"status\": \"complete\",\r\n \"completed_at_iso8601\": \"2021-06-17T14:42:06Z\",\r\n \"href\": \"https://api.onfido.com/v3/checks/410dbc74-c82c-4951-9890-38a89ccc2b4a\"\r\n }\r\n }}).subscribe(\r\n (result) => {console.log(result);}\r\n );\r\n }\r\n\r\n bindEvents(dropZone: DropZone) {\r\n dropZone.uploader.onSuccessItem = (item: FileItem, response: string, status: number, headers: ParsedResponseHeaders) => {\r\n this.removeAnyDuplicateAvailableProof(item);\r\n if (dropZone.addingProof) {\r\n this.availableProofs.push(this.getProof(item, dropZone.requiredProof.id));\r\n } else {\r\n this.dropZone.addingProof = true;\r\n }\r\n };\r\n dropZone.uploader.onCompleteAll = () => {\r\n this.computeMissingDocuments(this.dropZone);\r\n };\r\n };\r\n\r\n computeMissingDocuments(dropZone: DropZone) {\r\n dropZone.uploader.setOptions({\r\n url: this.uploadProofUrl,\r\n queueLimit: 4,\r\n authToken: 'Bearer ' + this.tokenService.bearerToken,\r\n additionalParameter: {\r\n label: dropZone.id\r\n }\r\n });\r\n }\r\n\r\n removeAnyDuplicateAvailableProof(item: FileItem) {\r\n var foundProof = this.availableProofs.find(availableProof => availableProof.filename == item.file.name);\r\n if (foundProof != null) {\r\n this.removeProofFromAvailableProofs(foundProof);\r\n }\r\n }\r\n\r\n removeProofFromAvailableProofs(proof: Proof) {\r\n let existingProof = this.availableProofs.find(p => p.filename === proof.filename);\r\n if (existingProof == null) {\r\n throw new Error(\"The deleted proof does not exist\");\r\n }\r\n let proofIndex = this.availableProofs.indexOf(existingProof);\r\n if (proofIndex === -1) {\r\n throw new Error(\"No index could be found for the existing index\");\r\n }\r\n this.availableProofs.splice(proofIndex, 1);\r\n }\r\n\r\n fileEvent(fileInput: Event, filename) {\r\n var incomeCountMaxed = false;\r\n var file = (fileInput.target as HTMLInputElement).files[0];\r\n var fileExtension = \".\" + file.name.split(\".\")[1];\r\n if (this.allowedExtensions.indexOf(fileExtension.toLowerCase()) != -1) {\r\n switch (filename.toLowerCase()) {\r\n\r\n case (\"addressproof\"):\r\n this.addressProofUpload.nativeElement.classList.add(\"file-to-upload\")\r\n this.addressProofUpload.nativeElement.classList.remove(\"file-found-image\")\r\n this.addressProofUpload.nativeElement.classList.remove(\"no-file-image\")\r\n this.fileFound.addressProof = true;\r\n break;\r\n\r\n case (\"incomeproof\"):\r\n if(this.incomeProofCount >= 15){\r\n incomeCountMaxed = true;\r\n } else {\r\n this.fileFound.incomeProof = true;\r\n filename = filename + (this.incomeProofCount + 1).toString();\r\n this.incomeProofCount++;\r\n }\r\n this.incomeProofUpload.nativeElement.classList.add(\"file-to-upload\")\r\n this.incomeProofUpload.nativeElement.classList.remove(\"file-found-image\")\r\n this.incomeProofUpload.nativeElement.classList.remove(\"no-file-image\")\r\n break;\r\n\r\n\r\n default: break;\r\n }\r\n if(!incomeCountMaxed){\r\n let filev2 = new File([file], filename + fileExtension.toLowerCase(), { type: file.type });\r\n this.importFile(filev2, true);\r\n //this.updateFiles();\r\n } else {\r\n this.showModal(\"incomeProofMaxModal\")\r\n }\r\n } else {\r\n this.showModal(\"fileFormatError\")\r\n }\r\n }\r\n\r\n updateFiles() {\r\n\r\n if (this.fileFound.addressProof == true) {\r\n this.addressProofUpload.nativeElement.classList.remove(\"no-file-image\")\r\n this.addressProofUpload.nativeElement.classList.remove(\"file-to-upload\")\r\n this.addressProofUpload.nativeElement.classList.add(\"file-found-image\")\r\n }\r\n else {\r\n this.addressProofUpload.nativeElement.classList.add(\"no-file-image\")\r\n this.addressProofUpload.nativeElement.classList.remove(\"file-found-image\")\r\n }\r\n if (this.fileFound.incomeProof == true) {\r\n this.incomeProofUpload.nativeElement.classList.remove(\"no-file-image\")\r\n this.incomeProofUpload.nativeElement.classList.remove(\"file-to-upload\")\r\n this.incomeProofUpload.nativeElement.classList.add(\"file-found-image\")\r\n }\r\n else {\r\n this.incomeProofUpload.nativeElement.classList.add(\"no-file-image\")\r\n this.incomeProofUpload.nativeElement.classList.remove(\"file-found-image\")\r\n } \r\n \r\n }\r\n\r\n getFiles() {\r\n this.proofService.getAllFiles(this.application.id.toString()).subscribe(response => {\r\n //Body is returned as a long string. Converting to array.\r\n //Remove \"[ ]\"\r\n var fileList = response._body;\r\n if (fileList!=null){\r\n fileList = fileList.substr(1, fileList.length - 2)\r\n fileList = fileList.split(\",\"); \r\n var incomeProofCountTemp = 0;\r\n var incomeProofNumber = 0;\r\n for (var i = 0; i < fileList.length; i++) {\r\n //Removing all whitespace, and quotation marks, then separating the extension.\r\n fileList[i] = fileList[i].replace(/\\s/g, \"\").replace('\"', \"\").replace('\"', \"\").toLowerCase();\r\n fileList[i] = fileList[i].split(\".\")[0];\r\n if(fileList[i].includes(\"incomeproof\")){\r\n incomeProofNumber = parseInt(fileList[i].replace(\"uploaded-incomeproof\",\"\") ) \r\n if(incomeProofCountTemp < incomeProofNumber ){\r\n incomeProofCountTemp = incomeProofNumber; \r\n }\r\n }\r\n } \r\n this.incomeProofCount = incomeProofCountTemp;\r\n\r\n if (fileList.indexOf(\"uploaded-addressproof\") != -1) {\r\n this.fileFound.addressProof = true;\r\n }\r\n\r\n if (fileList.indexOf(\"uploaded-incomeproof1\") != -1) {\r\n this.fileFound.incomeProof = true;\r\n }\r\n \r\n this.updateFiles();\r\n }\r\n })\r\n }\r\n\r\n closeModal(modalName) {\r\n switch (modalName) {\r\n case (\"fileFormatError\"):\r\n this.fileFormatModal.nativeElement.style.display = \"none\";\r\n break;\r\n\r\n case (\"licenceModal\"):\r\n this.licenceModal.nativeElement.style.display = \"none\";\r\n break;\r\n\r\n case (\"incomeModal\"):\r\n this.incomeModal.nativeElement.style.display = \"none\";\r\n break;\r\n\r\n\r\n case (\"addressModal\"):\r\n this.addressModal.nativeElement.style.display = \"none\";\r\n break;\r\n\r\n case (\"incomeProofMaxModal\"):\r\n this.incomeProofMaxModal.nativeElement.style.display = \"none\";\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n\r\n showModal(modalName) {\r\n switch (modalName) {\r\n case (\"fileFormatError\"):\r\n this.fileFormatModal.nativeElement.style.display = \"block\";\r\n break;\r\n\r\n case (\"licenceModal\"):\r\n this.licenceModal.nativeElement.style.display = \"block\";\r\n break;\r\n case (\"incomeModal\"):\r\n this.incomeModal.nativeElement.style.display = \"block\";\r\n break;\r\n\r\n\r\n case (\"addressModal\"):\r\n this.addressModal.nativeElement.style.display = \"block\";\r\n break;\r\n \r\n case (\"incomeProofMaxModal\"):\r\n this.incomeProofMaxModal.nativeElement.style.display = \"block\";\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n \r\n doneButton() { \r\n this.updateFiles();\r\n this.fileFound.addressProof=false;\r\n this.fileFound.incomeProof=false;\r\n this.retrieveOnfidoReferences();\r\n //console.log(this.fileFound);\r\n // this.emailSalesperson();\r\n }\r\n}\r\n\r\n","\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
Upload your Proofs
\r\n\r\n
\r\n To prevent fraud and complete the underwriting process, please upload proofs of your identity.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Driving Licence
\r\n
i
\r\n
\r\n M\r\n
\r\n
\r\n\r\n
0\">\r\n
\r\n
\r\n
\r\n
\r\n
Driving Licence
\r\n
i
\r\n
\r\n M\r\n
\r\n
\r\n
\r\n\r\n
0\">\r\n
\r\n
\r\n
\r\n
\r\n
Driving Licence
\r\n
i
\r\n
\r\n M\r\n
\r\n
\r\n
\r\n\r\n
0\">\r\n
\r\n
\r\n
\r\n
\r\n
Driving Licence
\r\n
i
\r\n
\r\n M\r\n
\r\n
\r\n
\r\n We’ve been unable to process your document, you will need to speak with our team to complete the underwriting process.\r\n Please call 0333 6000 290.
\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
Proof of Address
\r\n
i
\r\n \r\n
\r\n M\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
Proof of Income
\r\n
i
\r\n
\r\n M\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
Upload documents
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
Requirements
\r\n
\r\n
- Valid driver's licence with 6 months remaining
\r\n
- Clear photo with no obstruction or glares
\r\n
- All four corners of the licence shown
\r\n
\r\n
Close
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
Requirements
\r\n
\r\n
Any of the following, dated within the last 60 days:
\r\n
- A bank or credit card statement
\r\n
- A council text letter
\r\n
- A utility bill
\r\n
\r\n
Close
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
Requirements
\r\n
\r\n
If you are employed:
\r\n
- Take a photo of your payslips from the last 2 months
\r\n
\r\n
If you are self-employed:
\r\n
- Upload your last 3 months bank statements
\r\n
- Upload proof of self-employment from either of the following:
\r\n
- Your most recent tax return
\r\n
- HMRC document which shows the UTR number
\r\n
\r\n
Close
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n X\r\n

File format!

\r\n

- Please upload any file(s) in an image format!

\r\n

- Acceptable formats: png, jpg, jpeg, gif, tiff.

\r\n
\r\n

If you would like to give upload a file with another format please contact us.

\r\n
\r\n
\r\n\r\n
\r\n
\r\n X\r\n

Upload limit

\r\n

You can only upload up to 15 files to prove income, if you have accidentally uploaded an incorrect file, or too many files, please contact us.

\r\n
\r\n
\r\n
\r\n","import { UserService } from './../../../core/services/user/user.service';\r\nimport { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { LookUpVehicle, Quote } from '../../../core/services/types-quote';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { Router } from '@angular/router';\r\nimport { ApplyService } from '../../../core/services/apply/apply.service';\r\nimport { Application } from '../../../core/services/types';\r\nimport { ApplicationStatusService } from '../../../shared/components/base-form/base-form-testing.barrel.spec';\r\nimport { Subscription } from 'rxjs';\r\nimport { QuotesService } from '../../../core/services/quotes/quotes.service';\r\n\r\n@Component({\r\n selector: 'quote-vehicle-item',\r\n templateUrl: './quote-vehicle-item.component.html',\r\n styleUrls: ['./quote-vehicle-item.component.scss']\r\n})\r\nexport class QuoteVehicleItemComponent implements OnInit {\r\n @Input()\r\n vehicle: any\r\n @Input()\r\n id: number;\r\n @Input()\r\n application: Application;\r\n @Input()\r\n term: number;\r\n @Input()\r\n deposit: number;\r\n @Input()\r\n apiErrorMessages: any;\r\n @Output()\r\n public updateVehicleCard: EventEmitter = new EventEmitter();\r\n annualMileage: number;\r\n quoteVehicleItemObservable: Subscription;\r\n source: string;\r\n registrationYear: string;\r\n form: FormGroup;\r\n lookupVehicle: LookUpVehicle;\r\n nextPageUrlSuccess;\r\n mileageValue: number;\r\n regLookupEnabled: boolean = false;\r\n isTemporaryUser: boolean = false;\r\n priceValue: number;\r\n dealerPlusUnsuccess;\r\n dealerPlussuccess;\r\n constructor(private formBuilder: FormBuilder,\r\n private actionsService: ActionsService,\r\n private parentRouter: Router,\r\n private applyService: ApplyService,\r\n private applicationStatusService: ApplicationStatusService,\r\n private userService: UserService,\r\n private quotesService: QuotesService) {\r\n this.form = this.formBuilder.group({\r\n regNumber: ['', [Validators.required, Validators.maxLength(8)]],\r\n price: ['', [Validators.required, Validators.pattern(\"^[0-9]*$\")]],\r\n mileage: ['', Validators.required]\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.isTemporaryUser = this.application.roles.indexOf('temporary user') > -1;\r\n this.applicationStatusService.setState(this.application, 'ENQUIRY_RECEIVED');\r\n this.dealerPlussuccess = 'applications/' + this.application.id + '/loan-offer';\r\n this.dealerPlusUnsuccess = 'applications/' + this.application.id + '/final-page';\r\n this.quoteVehicleItemObservable = this.actionsService.registerObserver(\r\n 'quoteFilters.update',\r\n action => {\r\n this.annualMileage = action.value.annualMillage;\r\n this.vehicle.term = action.value.term;\r\n this.vehicle.deposit = action.value.deposit;\r\n this.application.quotes[0].financeRequest.financeType = action.value.financeType;\r\n this.application.quotes[0].financeRequest.annualMileage = action.value.annualMillage;\r\n this.application.quotes[0].financeRequest.flatRatePercent = action.value.flatRatePercent;\r\n },\r\n this\r\n );\r\n\r\n if (window.location.href.indexOf(\"dealerplus\") != -1) {\r\n this.source = 'dealer';\r\n this.regLookupEnabled = true;\r\n\r\n }\r\n else if (window.location.href.indexOf(\"comparecarfinance\") != -1) {\r\n this.source = 'ccf';\r\n }\r\n else {\r\n this.source = 'customer';\r\n }\r\n this.nextPageUrlSuccess = 'applications/' + this.application.id + '/extra-details';\r\n }\r\n\r\n ngOnDestroy() {\r\n this.actionsService.cancelSubscription(this.quoteVehicleItemObservable);\r\n }\r\n\r\n sanitizeResult() {\r\n var mileage = this.form.controls['mileage'].value;\r\n var price = this.form.controls['price'].value;\r\n this.mileageValue = Math.round(mileage.replace(\",\", \"\"));\r\n this.priceValue = price.replace(\",\", \"\");\r\n }\r\n\r\n search() {\r\n this.sanitizeResult();\r\n this.lookupVehicle = {\r\n regNumber: this.form.controls['regNumber'].value,\r\n loanTerm: this.term,\r\n loanDeposit: this.deposit,\r\n loanAmmount: this.priceValue,\r\n vehicleMileage: this.mileageValue,\r\n cardId: this.id,\r\n cardSuggested: false,\r\n IsShowroomPicked: false,\r\n }\r\n this.application.quotes[0].manualLookUpOccured = true;\r\n this.actionsService.broadcast(\r\n {\r\n action: 'searchVehicle',\r\n behaviour: 'regNumber',\r\n value: this.lookupVehicle\r\n }\r\n );\r\n }\r\n\r\n displayshowroom() {\r\n this.application.quotes[0].showroomVisitOccured = true;\r\n this.actionsService.broadcast(\r\n {\r\n action: 'showroom',\r\n behaviour: 'display',\r\n value: { displayShowroom: true, id: this.id }\r\n }\r\n );\r\n window.scroll(0, 0);\r\n }\r\n\r\n quoteSelected() {\r\n var quotes = this.application.quotes[0];\r\n quotes.financeResponse = this.vehicle.quote;\r\n quotes.financeRequest.term = this.term;\r\n quotes.financeResponse.term = this.term;\r\n quotes.financeRequest.deposit.cash = this.deposit;\r\n quotes.financeRequest.deposit.total = this.deposit;\r\n quotes.financeResponse.deposit = this.deposit;\r\n quotes.vehicle = this.vehicle.vehicle;\r\n quotes.isSelected = true;\r\n quotes.financeRequest.annualMileage = this.annualMileage;\r\n quotes.applicationId = this.application.id;\r\n quotes.vehicle.IsShowroomPicked = this.vehicle.IsShowroomPicked;\r\n quotes.showroomVisitOccured = this.application.quotes[0].showroomVisitOccured;\r\n quotes.showroomCarSelectionOccured = this.application.quotes[0].showroomCarSelectionOccured;\r\n quotes.manualLookUpOccured = this.application.quotes[0].manualLookUpOccured;\r\n\r\n const selectedQuote: Quote = this.application.quotes.find(quote => quote.isSelected);\r\n if (!selectedQuote) {\r\n throw Error('No quote was selected');\r\n }\r\n else {\r\n this.addQuoteToNotes(selectedQuote);\r\n }\r\n }\r\n\r\n async updateStatus() {\r\n this.application = await this.userService.updateApplication(this.application, 1).toPromise();\r\n this.parentRouter.navigateByUrl(this.nextPageUrlSuccess);\r\n }\r\n\r\n async saveQuotes() {\r\n this.application = await this.userService.updateApplication(this.application, 1).toPromise();\r\n this.apply();\r\n }\r\n\r\n async apply() {\r\n try {\r\n const selectedQuote: Quote = this.application.quotes.find(quote => quote.isSelected);\r\n //await this.quotesService.updateLendingCriteria(this.application.id).toPromise();\r\n /*var loanOffers = await this.applyService.applyForLoan(selectedQuote.id.toString()).toPromise();\r\n if (loanOffers == undefined) {\r\n this.parentRouter.navigateByUrl(this.dealerPlusUnsuccess);\r\n } else {\r\n this.application.loanProposalResponses = loanOffers;\r\n this.userService.updateUserCache(this.application);\r\n }*/\r\n if (this.application.loanProposalResponses.filter(offer => offer.status == 'APPLICATION_ACCEPTED').length == 0) {\r\n if (this.application.loanProposalResponses.filter(offer => offer.status == 'APPLICATION_REFERRED').length == 0) {\r\n this.parentRouter.navigateByUrl(this.dealerPlusUnsuccess);\r\n }\r\n else {\r\n this.parentRouter.navigateByUrl(this.dealerPlussuccess);\r\n }\r\n } else {\r\n this.parentRouter.navigateByUrl(this.dealerPlussuccess);\r\n }\r\n } catch (error) {\r\n if (error.status == 422) {\r\n throw {\r\n customError: {\r\n errorConfiguration: this.applicationStatusService.configuration.errors.offer_validation,\r\n error: error\r\n }\r\n };\r\n }\r\n throw {\r\n customError: {\r\n errorConfiguration: this.applicationStatusService.configuration.errors.offer_generic,\r\n error: error\r\n }\r\n };\r\n }\r\n }\r\n\r\n async addQuoteToNotes(selectedQuote) {\r\n await this.quotesService.saveNote(selectedQuote).toPromise();\r\n if (!this.isTemporaryUser) {\r\n this.saveQuotes();\r\n }\r\n else {\r\n this.updateStatus();\r\n }\r\n }\r\n\r\n changeLayout(bool: boolean) {\r\n this.regLookupEnabled = bool;\r\n }\r\n}\r\n","
\r\n
\r\n

Want to compare this with another quote?

\r\n Get a new quote\r\n
\r\n \r\n
\r\n ×\r\n
\r\n
\r\n

Add the vehicle you want to buy

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n Please enter a valid registration number\r\n
\r\n
\r\n \r\n
\r\n £\r\n \r\n
\r\n Please enter a valid price\r\n
\r\n
\r\n \r\n
\r\n m\r\n \r\n
\r\n Please enter a valid mileage\r\n
\r\n \r\n
\r\n 0 \">{{vehicle.errorList[0].message}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Haven't found a car yet?

\r\n Search our database of over\r\n 200,000 vehicles.\r\n \r\n or\r\n
\r\n

I have already found the vehicle\r\n

\r\n\r\n \r\n
\r\n
\r\n 0 \">{{vehicle.errorList[0].message}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Our suggestion
\r\n
\r\n
\r\n

From Creditplus stock for you...

\r\n

From Compare Car Finance stock for you...

\r\n

You are looking to buy this...

\r\n

{{vehicle.vehicle.make}} {{vehicle.vehicle.model}}

\r\n

Finance type:\r\n Hire purchase\r\n

\r\n

Finance type:\r\n Personal contract purchase\r\n

\r\n

Registration: {{vehicle.vehicle.registration}} ({{vehicle.year}})

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

{{vehicle.term}} monthly payments from

\r\n

£{{vehicle.monthlyPayment}}

\r\n
\r\n
\r\n \r\n from\r\n \r\n\r\n

£{{vehicle.monthlyPayment}}

\r\n \r\n per month for {{vehicle.term}} months\r\n \r\n
\r\n
\r\n
\r\n With a \r\n

£{{vehicle.quote.balloon}}

\r\n purchase option\r\n
\r\n
\r\n
\r\n 0 \">{{vehicle.errorList[0].message}}\r\n
\r\n
0\">\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
","import { Component } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { LoginService } from './../../../core/services/login/login.service'\r\nimport { PasswordConfiguration } from '../../../core/services/configuration/configuration.types';\r\nimport { GROUPS } from '../../../core/services/configuration/configuration-groups';\r\nimport { CustomersService } from '../../../core/services/customers/customers.service';\r\n\r\n@Component({\r\n selector: 'forgotten-password',\r\n templateUrl: './forgotten-password.component.html',\r\n styleUrls: ['./forgotten-password.component.scss']\r\n})\r\n\r\nexport class ForgottenPasswordComponent {\r\n\r\n isMobile:boolean = false;\r\n isDesktop:boolean = false;\r\n\r\n accessDenied: boolean = false;\r\n showPassword:boolean = false;\r\n\r\n verifyingInProgress:boolean = true;\r\n verificationPassed:boolean = false;\r\n verifyKey:string;\r\n passwordError:boolean = false;\r\n\r\n model = {\r\n customerId:'',\r\n username: '',\r\n newpass: ''\r\n };\r\n\r\n errorMessage = '';\r\n\r\n consumerLogin: boolean = true;\r\n passwordPolicy: PasswordConfiguration;\r\n\r\n constructor(private loginService: LoginService, private parentRouter: Router, private customerService: CustomersService,\r\n private activatedRoute: ActivatedRoute\r\n ) {\r\n this.activatedRoute.queryParams.subscribe(\r\n params => {\r\n this.verifyKey = params['key'];\r\n }\r\n );\r\n }\r\n\r\n ngAfterViewInit(){\r\n this.verifyPasswordLink(); \r\n }\r\n\r\n async verifyPasswordLink(){\r\n \r\n this.customerService.verifyPasswordLink(this.verifyKey).subscribe(response => \r\n {\r\n this.verificationReturned(response)\r\n }, \r\n error => {\r\n if (error.status==500){\r\n console.log(\"Error: Verification failed\");\r\n this.verificationFailed();\r\n }\r\n else {\r\n console.log(\"Error: api unreachable\");\r\n this.verificationFailed();\r\n }\r\n });\r\n }\r\n \r\n verificationReturned(result){\r\n this.verificationPassed = true;\r\n this.verifyingInProgress = false;\r\n this.model.customerId = result.split(\"££\")[0];\r\n this.model.username = result.split(\"££\")[1];\r\n this.model.newpass = \"\";\r\n }\r\n\r\n verificationFailed(){\r\n this.verificationPassed = false;\r\n this.verifyingInProgress = false;\r\n }\r\n \r\n login() {\r\n\r\n this.loginService.forgottenPassword(this.model)\r\n .subscribe(\r\n response => {\r\n\r\n if (typeof response != 'undefined') {\r\n\r\n this.accessDenied = false;\r\n\r\n this.loginService.setUserInformation(response);\r\n if (this.isMobile==true){\r\n this.parentRouter.navigateByUrl(\"/login\");\r\n }\r\n else{\r\n this.parentRouter.navigateByUrl(\"/\");\r\n }\r\n }\r\n },\r\n error => {\r\n if (error.status == 401) {\r\n this.accessDenied = true;\r\n } else {\r\n this.errorMessage = error;\r\n }\r\n }\r\n );\r\n\r\n }\r\n\r\n showHidePassword(){\r\n if (this.showPassword==true){\r\n this.showPassword=false;\r\n }\r\n else{\r\n this.showPassword=true;\r\n }\r\n }\r\n\r\n checkPassword(){\r\n var password = this.model.newpass;\r\n if (/[a-z]/.test(password)==false||/[A-Z]/.test(password)==false||\r\n /\\d/.test(password)==false||password.length < 8){\r\n this.passwordError = true; \r\n }\r\n else{\r\n this.passwordError = false;\r\n }\r\n \r\n }\r\n\r\n mobileSubmit(){\r\n this.isMobile = true;\r\n this.isDesktop = false;\r\n }\r\n\r\n desktopSubmit(){\r\n this.isDesktop = true;\r\n this.isMobile = false;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
Welcome to
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n

Password reset

\r\n\r\n
\r\n Verifying password reset code. Please wait.\r\n
\r\n\r\n
\r\n The password reset link provided is invalid or has expired.\r\n
Return to log in page
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
E
\r\n
\r\n
\r\n
\r\n
\r\n
!
\r\n
​8
\r\n

\r\n Your password must include at least 8 characters, a mixture of both uppercase and\r\n lowercase letters and a number.\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
","\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'valid-invalid-icon',\r\n templateUrl: './valid-invalid-icon.component.html',\r\n styleUrls: ['./valid-invalid-icon.component.scss']\r\n})\r\nexport class ValidInvalidIconComponent implements OnInit {\r\n\r\n @Input()\r\n valid?: boolean = null;\r\n\r\n @Input()\r\n validIcon?: string = 'icon-tick';\r\n\r\n @Input()\r\n validIconSmall?: string = 'icon-tick-small';\r\n\r\n @Input()\r\n invalidIcon?: string = 'fa-exclamation-triangle';\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { ButtonGroupComponent } from './../button-group/button-group.component';\r\nimport { ButtonGroup } from './../../models.class';\r\n\r\n@Component({\r\n selector: 'amendment',\r\n templateUrl: 'amendment.component.html',\r\n styleUrls: ['amendment.component.scss']\r\n})\r\n\r\nexport class AmendmentComponent extends ButtonGroupComponent {\r\n\r\n @Input()\r\n model :ButtonGroup = new ButtonGroup(\r\n {\r\n group:'AMENDMENT',\r\n type:'icons',\r\n btnclass:'btn-primary',\r\n navbar:true,\r\n selection:'none',\r\n visible:true,\r\n items:[\r\n {icon:'fa-plus', action:'ADD', disabled:false, active:false, visible:true},\r\n {icon:'fa-pencil', action:'EDIT', disabled:false, active:false, visible:true},\r\n {icon:'fa-trash', action:'DELETE', disabled:false, active:false, visible:true}\r\n ]\r\n }\r\n );\r\n\r\n}\r\n","\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Application } from '../../../core/services/types';\r\nimport { TimelineService } from '../../../core/services/timeline/timeline.service'\r\nimport { Title } from '@angular/platform-browser';\r\n@Component({\r\n selector: 'docs',\r\n templateUrl: './docs.component.html',\r\n styleUrls: ['./docs.component.scss']\r\n})\r\nexport class DocsComponent implements OnInit {\r\n @Input()\r\n application: Application;\r\n homeUrl = \"../../../../assets/navbar/home-active.png\";\r\n // docsUrl = \"../../../../assets/navbar/documents-active.png\";\r\n // vehicleUrl = \"../../../../assets/navbar/vehicles.png\";\r\n accountUrl = \"../../../../assets/navbar/account.png\";\r\n formattedStateNames: Array = new Array();\r\n formattedStateDates: Array = new Array();\r\n formattedStateTimes: Array = new Array();\r\n arrayContainer:Array> = new Array();\r\n lastStateName: string;\r\n lastStateDate: string;\r\n lastStateTime: string;\r\n lastStateDateTime: string;\r\n constructor(private parentRouter:Router, private timelineService: TimelineService, protected titleService: Title) { }\r\n\r\n ngOnInit() { \r\n this.titleService.setTitle(\"Documents\");\r\n }\r\n\r\n ngAfterViewInit(){\r\n if(this.application.dealActionHistory.length == 0){\r\n this.formattedStateDates.push(\"Enquiry received!\")\r\n this.formattedStateNames.push(\"Enquiry received!\")\r\n } else {\r\n this.arrayContainer = this.timelineService.getDealStates(this.application.dealActionHistory);\r\n this.formattedStateNames = this.arrayContainer[1];\r\n this.formattedStateDates = this.arrayContainer[2];\r\n this.formattedStateTimes = this.arrayContainer[3];\r\n this.lastStateName = this.formattedStateNames.pop();\r\n this.lastStateDate = this.formattedStateDates.pop();\r\n this.lastStateTime = this.formattedStateTimes.pop();\r\n this.lastStateDateTime = this.lastStateDate + \" \" + this.lastStateTime;\r\n\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
Documents
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n","import {Check} from './Check';\r\n\r\nexport class OnfidoRef{\r\n id: string;\r\n checks: Check[];\r\n}","
\r\n
\r\n

Properties

\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n {{designActiveControl.formControlName}}\r\n
\r\n
\r\n \r\n {{designActiveControl.type}}\r\n
\r\n
\r\n \r\n \r\n {{designActiveControl.label}}\r\n
\r\n
\r\n \r\n \r\n {{designActiveControl.order}}\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {{option.label}}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {{activePropertyName}}\r\n
\r\n\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'properties-panel',\r\n templateUrl: './properties-panel.component.html',\r\n styleUrls: ['./properties-panel.component.scss']\r\n})\r\nexport class PropertiesPanelComponent implements OnInit {\r\n\r\n @Input()\r\n configuration: any;\r\n\r\n @Input()\r\n designActiveControl: any;\r\n\r\n activePropertyName: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n setActivePropertyName(activePropertyName) {\r\n\r\n this.activePropertyName = activePropertyName;\r\n\r\n }\r\n\r\n removeOptionValue(option) {\r\n\r\n var index = this.designActiveControl.selectionOptions.indexOf(option);\r\n\r\n if (index != -1) {\r\n this.designActiveControl.selectionOptions.splice(index, 1);\r\n }\r\n\r\n }\r\n\r\n addOptionValue() {\r\n\r\n this.designActiveControl.selectionOptions.push(\r\n {\r\n label: 'New option',\r\n value: 'NewOption',\r\n }\r\n );\r\n\r\n }\r\n\r\n moveOptionValueUp(option) {\r\n\r\n var index = this.designActiveControl.selectionOptions.indexOf(option);\r\n\r\n if (index) {\r\n this.arrayMove(this.designActiveControl.selectionOptions, index, index - 1);\r\n }\r\n\r\n }\r\n\r\n moveOptionValueDown(option) {\r\n\r\n var index = this.designActiveControl.selectionOptions.indexOf(option);\r\n\r\n if (index <= this.designActiveControl.selectionOptions.length ) {\r\n this.arrayMove(this.designActiveControl.selectionOptions, index, index + 1);\r\n }\r\n\r\n }\r\n\r\n changeControlOrder(newIndex) {\r\n\r\n if (newIndex>0 && newIndex <= this.configuration.controls.length) {\r\n var currentIndex=this.configuration.controls.indexOf(this.designActiveControl);\r\n this.arrayMove(this.configuration.controls, currentIndex, --newIndex,);\r\n }\r\n\r\n }\r\n\r\n save() {\r\n\r\n }\r\n\r\n // https://stackoverflow.com/questions/5306680/move-an-array-element-from-one-array-position-to-another\r\n arrayMove(arr, old_index, new_index) {\r\n\r\n if (new_index >= arr.length) {\r\n var k = new_index - arr.length + 1;\r\n while (k--) {\r\n arr.push(undefined);\r\n }\r\n }\r\n arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);\r\n return arr; // for testing\r\n\r\n };\r\n\r\n}\r\n","import { Address } from \"./Address\";\r\n\r\nexport class Applicant{\r\n id: string; //onfido's applicant id value\r\n first_name: string;\r\n last_name: string;\r\n dob: string;\r\n email: string;\r\n address: Address; \r\n}","import { Directive, HostListener, ElementRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[selectAllOnFocus]'\r\n})\r\nexport class SelectAllOnFocusDirective {\r\n constructor(private el: ElementRef) { }\r\n\r\n @HostListener('focus') onFocus(){\r\n // from http://stackoverflow.com/questions/4067469/selecting-all-text-in-html-text-input-when-clicked\r\n this.el.nativeElement.setSelectionRange(0, this.el.nativeElement.value.length);\r\n } \r\n}\r\n","import { LookupsConfiguration } from \"./configuration.types\";\r\n\r\nconst LOOKUPS: LookupsConfiguration = {\r\n employmentStatuses: {\r\n controlType: 'buttons',\r\n items: [\r\n { label: \"Employed\", value: \"EMP\" },\r\n { label: \"Self-employed\", value: \"SEMP\" },\r\n { label: \"Retired\", value: \"RT\" },\r\n { label: \"Student\", value: \"STD\" },\r\n { label: \"Unemployed\", value: \"UNEMP\" }\r\n ]\r\n },\r\n residentialStatuses: {\r\n controlType: 'buttons',\r\n items: [\r\n { label: \"Home Owner\", value: \"OW\" },\r\n { label: \"Living with Parents\", value: \"LP\" },\r\n { label: \"Military/Married Quarters\", value: \"MT\" },\r\n { label: \"Other/None\", value: \"OT\" },\r\n { label: \"Tenant-Council\", value: \"CT\" },\r\n { label: \"Tenant-Private\", value: \"PT\" }\r\n ]\r\n },\r\n titles: {\r\n controlType: 'buttons',\r\n items: [\r\n { label: \"Mr\", value: \"Mr\" },\r\n { label: \"Mrs\", value: \"Mrs\" },\r\n { label: \"Miss\", value: \"Miss\" },\r\n { label: \"Ms\", value: \"Ms\" },\r\n { label: \"Doctor\", value: \"Dr\" },\r\n { label: \"Reverend\", value: \"Rev\" },\r\n { label: \"Other\", value: \"Unknown\" }\r\n ]\r\n },\r\n maritalStatuses: {\r\n controlType: 'buttons',\r\n items: [\r\n { label: \"Married\", value: \"MR\" },\r\n { label: \"Single\", value: \"SG\" },\r\n { label: \"Living with Partner\", value: \"LP\" },\r\n { label: \"Civil Partnership\", value: \"CP\" },\r\n { label: \"Widowed\", value: \"WD\" },\r\n { label: \"Separated\", value: \"SP\" },\r\n { label: \"Divorced\", value: \"DV\" },\r\n { label: \"Other\", value: \"OT\" }\r\n ]\r\n },\r\n gender: {\r\n controlType: 'buttons',\r\n items: [\r\n { label: 'Male', value: 'Male' },\r\n { label: 'Female', value: 'Female' }\r\n ]\r\n },\r\n drivingLicence: {\r\n controlType: 'buttons',\r\n items: [\r\n { label: \"Full UK driving license\", value: \"FULL\" },\r\n { label: \"Provisional UK driving license\", value: \"PROV\" },\r\n { label: \"European license\", value: \"EU\" },\r\n { label: \"International license\", value: \"INTL\" },\r\n { label: \"No license\", value: \"NONE\" }\r\n ]\r\n },\r\n preferredContactMethods: {\r\n controlType: 'buttons',\r\n items: [\r\n { label: \"Mobile\", value: \"Mobile\" },\r\n { label: \"Telephone\", value: \"Telephone\" },\r\n { label: \"Email\", value: \"Email\" }\r\n ]\r\n },\r\n preferredContactTimes: {\r\n controlType: 'buttons',\r\n items: [\r\n { label: \"No Preference\", value: \"No Preference\" },\r\n { label: \"Morning\", value: \"Morning\" },\r\n { label: \"Afternoon\", value: \"Afternoon\" },\r\n { label: \"Lunch\", value: \"Lunch\" },\r\n { label: \"Evening\", value: \"Evening\" }\r\n ]\r\n }\r\n};\r\n\r\n\r\nexport { \r\n LOOKUPS\r\n}","import {\r\n AuthenticationConfiguration, LookupsConfiguration, LookupItem, SelectListItem, AcceptanceConfiguration, EmploymentConfiguration, AddressesConfiguration,\r\n OutgoingsConfiguration, IdentityConfiguration, ContactConfiguration, QuotesConfiguration, PageSCrollConfiguration, \r\n SaveConfiguration, ProductsConfiguration, PostcodeLookupConfiguration, FinanceRequestConfiguration, VehicleConfiguration, \r\n FinanceOptions, Journeys, JourneyConfiguration, ErrorsConfiguration, CreditRatingConfiguration, ProofsConfiguration, AppearanceConfiguration\r\n} from \"./configuration.types\"\r\n\r\nimport { JOURNEYS, PAGES, SECTIONS, PAGE_JOURNEYS } from \"./configuration-journeys\";\r\n\r\nimport { JourneyPage } from \"../types\";\r\nimport { CONFIGURATION } from \"./configuration-groups-base\";\r\n\r\nexport class Configuration {\r\n public appearance?: AppearanceConfiguration; \r\n public errors?: ErrorsConfiguration;\r\n public currentJourney?: string; // 'FORWARDS_ONLY' | 'BACKWARDS_AND_FORWARDS';\r\n public authentication?: AuthenticationConfiguration;\r\n public contact?: ContactConfiguration;\r\n public identity?: IdentityConfiguration;\r\n public creditRating?: CreditRatingConfiguration;\r\n public pageScroll?: PageSCrollConfiguration;\r\n public outgoings?: OutgoingsConfiguration;\r\n public vehicle?: VehicleConfiguration;\r\n public financeRequest?: FinanceRequestConfiguration;\r\n public quotes?: QuotesConfiguration;\r\n public proofs?: ProofsConfiguration;\r\n public proofVerify?: ProofsConfiguration;\r\n public products?: ProductsConfiguration;\r\n public save?: SaveConfiguration;\r\n public financeOptions?: FinanceOptions;\r\n public addressLookup?: PostcodeLookupConfiguration;\r\n public employment?: EmploymentConfiguration;\r\n public addresses?: AddressesConfiguration;\r\n public acceptanceConfiguration?: AcceptanceConfiguration;\r\n public lookupConfiguration?: LookupsConfiguration;\r\n\r\n\r\n /*\r\n NOTE: The current journey is currently being picked up from the base configuration CONFIGURATION.currentJourney.\r\n It should be loaded based upon the group configuration associated with the logged in role.\r\n */\r\n\r\n static loadCurrentJourneyType(): JourneyConfiguration {\r\n let current: string = CONFIGURATION.currentJourney;\r\n\r\n if (current) {\r\n let journeys = Configuration.loadAvailableJourneys();\r\n\r\n if (journeys[current] == null) {\r\n throw Error(\"The journey selected was not found\")\r\n }\r\n\r\n return journeys[current];\r\n }\r\n\r\n throw Error(\"Journey\" + CONFIGURATION.currentJourney + \"does not exist\");\r\n }\r\n\r\n static loadCurrentJourneyPages(roles): JourneyPage[] {\r\n\r\n return this.loadCurrentJourney(roles).pages;\r\n\r\n }\r\n\r\n static loadCurrentJourney(roles): any {\r\n\r\n var foundJourney;\r\n\r\n for (var i = 0, ii = roles.length; i < ii; i++) {\r\n\r\n foundJourney = PAGE_JOURNEYS.find(\r\n pageJourney => pageJourney.roles.indexOf(roles[i]) != -1\r\n );\r\n\r\n if (foundJourney) {\r\n break;\r\n }\r\n\r\n }\r\n\r\n if (!foundJourney) {\r\n throw Error(`Journey for the roles ${roles.join(',')} does not exist`);\r\n }\r\n\r\n return foundJourney;\r\n\r\n }\r\n\r\n static loadCurrentJourneyKey(): string {\r\n let current: string = CONFIGURATION.currentJourney;\r\n\r\n if (current) {\r\n let journeys = Configuration.loadAvailableJourneys();\r\n\r\n if (journeys[current] == null) {\r\n throw Error(\"The journey selected was not found\")\r\n }\r\n\r\n return current;\r\n }\r\n\r\n throw Error(`Journey ${CONFIGURATION.currentJourney} does not exist`);\r\n }\r\n\r\n static loadAvailableJourneys(): Journeys {\r\n if (JOURNEYS == null) {\r\n throw Error(\"No journey was defined\");\r\n }\r\n\r\n return JOURNEYS;\r\n }\r\n\r\n static loadJourneyKeys(): Array {\r\n let journeyKeys: Array = Object.keys(this.loadAvailableJourneys());\r\n\r\n if (journeyKeys.length === 0) {\r\n throw Error(\"No journey was configured\");\r\n }\r\n\r\n return journeyKeys;\r\n }\r\n\r\n static selectJourney(journeyKey: string): void {\r\n let journeys: Array = Configuration.loadJourneyKeys();\r\n\r\n if (journeys.find(j => journeyKey === j) == null) {\r\n throw Error(\"The selected journey was not found\");\r\n }\r\n\r\n CONFIGURATION.currentJourney = journeyKey;\r\n }\r\n\r\n}\r\n\r\nexport {\r\n CONFIGURATION, PAGES, SECTIONS, JOURNEYS, LookupItem, SelectListItem, JourneyConfiguration\r\n};\r\n","export class ApplicantNotes {\r\n public contactid: number;\r\n public note: string;\r\n public noteSubject: string;\r\n public addedBy: number;\r\n public addedByUsername: string;\r\n public DateAdded: string;\r\n }","import { FormGroup } from '@angular/forms';\r\n\r\nclass ButtonGroup {\r\n public group :string;\r\n public type :string;\r\n public btnclass: string;\r\n public navbar :boolean;\r\n public selection :string;\r\n public visible :boolean;\r\n public items :ButtonGroupItem[];\r\n\r\n constructor(model:any) {\r\n\r\n this.group=model.group;\r\n this.type=model.type;\r\n this.btnclass=model.btnclass;\r\n this.navbar=model.navbar;\r\n this.selection=model.selection;\r\n this.visible=model.visible;\r\n this.items=model.items;\r\n\r\n }\r\n\r\n public getActiveKeys() {\r\n\r\n var keys=[];\r\n\r\n this.items.map(\r\n item => {\r\n if (item.active) {\r\n keys.push(item.action);\r\n }\r\n }\r\n );\r\n return keys;\r\n\r\n }\r\n\r\n}\r\n\r\nclass ButtonGroupItem {\r\n\r\n public text? :string;\r\n public icon? :string;\r\n public action :string;\r\n public disabled :boolean;\r\n public active :boolean;\r\n public visible :boolean;\r\n public candelete? :boolean;\r\n\r\n}\r\n\r\nclass Search {\r\n public value :string;\r\n public placeholder :string;\r\n public visible :boolean;\r\n}\r\n\r\nclass RecordNavigator {\r\n public items :any[];\r\n public position :number;\r\n public visible :boolean;\r\n}\r\n\r\nclass RecordsetPager {\r\n public page :number;\r\n public pageSize :number;\r\n public arrownavigators :boolean;\r\n public visible :boolean;\r\n public totalRecords :number;\r\n}\r\n\r\nclass NumberPlusMinus {\r\n public value :number;\r\n public min :number;\r\n public max :number;\r\n public visible :boolean;\r\n public enabled :boolean;\r\n}\r\n\r\ninterface Navigate {\r\n first();\r\n last();\r\n next();\r\n previous();\r\n goto(page :number);\r\n}\r\n\r\ninterface Visibility {\r\n show(key?:string);\r\n hide(key?:string);\r\n toggle(key?:string);\r\n}\r\n\r\ninterface Enablement {\r\n enable(key?:string);\r\n disable(key?:string);\r\n}\r\n\r\ninterface Activation {\r\n activate(key:string);\r\n deactivate(key:string);\r\n}\r\n\r\ninterface SetValue {\r\n setValue(key: string, itemkey: string, value:boolean);\r\n setValue(key: string, itemkey: string, value:string);\r\n}\r\n\r\ninterface Broadcast {\r\n \r\n broadcast();\r\n broadcast(item:any) :any;\r\n\r\n}\r\n \r\ninterface AcceptSetValueRequests {\r\n\r\n registerAcceptsSetValue(group: string);\r\n acceptSetValue(values :any);\r\n\r\n}\r\n\r\ninterface AcceptGetValueRequests {\r\n\r\n registerAcceptsGetValue(group: string);\r\n acceptGetValue(values :any);\r\n\r\n}\r\n\r\ninterface QueryParameters {\r\n\r\n getQueryParameters(params: any[]);\r\n setQueryParameters();\r\n\r\n}\r\n\r\ninterface BaseForm {\r\n\r\n form:FormGroup;\r\n formDefinition: any;\r\n formErrors: any;\r\n formValidationMessages: any;\r\n defaultFormValidationMessages: any;\r\n id: string;\r\n model: any;\r\n errorMessage :string;\r\n modalSettings :any;\r\n\r\n createForm();\r\n initializeFormDefinition();\r\n getModelData();\r\n setFormData();\r\n onValueChanged(data?: any);\r\n submit();\r\n cancel();\r\n}\r\n\r\ninterface Amendments {\r\n new();\r\n edit();\r\n display();\r\n delete();\r\n}\r\n\r\ninterface SaveCancel {\r\n save();\r\n cancel();\r\n}\r\n\r\ninterface Help {\r\n showHelp:boolean;\r\n toggleHelp();\r\n}\r\n\r\ninterface Valid {\r\n valid:boolean;\r\n} \r\n\r\ninterface Dirty {\r\n dirty:boolean;\r\n} \r\n\r\nexport {\r\n ButtonGroup,\r\n Search,\r\n RecordNavigator,\r\n RecordsetPager,\r\n Navigate,\r\n Visibility,\r\n Enablement,\r\n Activation,\r\n SetValue,\r\n Broadcast,\r\n AcceptSetValueRequests,\r\n AcceptGetValueRequests,\r\n QueryParameters,\r\n BaseForm,\r\n NumberPlusMinus,\r\n Help,\r\n Valid,\r\n Dirty\r\n}\r\n","import { Component, OnInit, Input, SimpleChanges } from '@angular/core';\r\nimport { Subscription } from '../../../../../node_modules/rxjs';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\n\r\n@Component({\r\n selector: 'upload-examples',\r\n templateUrl: './upload-examples.component.html',\r\n styleUrls: ['./upload-examples.component.scss']\r\n})\r\nexport class UploadExamplesComponent implements OnInit {\r\n @Input()\r\n proofId;\r\n helpObserver: Subscription;\r\n drivingLicenceFront: boolean = false;\r\n drivingLicenceback: boolean = false;\r\n proofOfAddress: boolean = false;\r\n proofOfEmployment: boolean = false;\r\n Passport: boolean = false;\r\n customerPack: boolean = false;\r\n lenderPack: boolean = false;\r\n selfEmployment: boolean = false;\r\n\r\n\r\n constructor(private actionsService: ActionsService) { }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.proofId == \"drivingLicenseFront\") {\r\n this.drivingLicenceFront = true\r\n }\r\n if (this.proofId == 'drivingLicenseback') {\r\n this.drivingLicenceback = true\r\n }\r\n if (this.proofId == 'address') {\r\n this.proofOfAddress = true\r\n }\r\n if (this.proofId == 'employment') {\r\n this.proofOfEmployment = true\r\n }\r\n if (this.proofId == 'Self-employed') {\r\n this.selfEmployment = true\r\n }\r\n if (this.proofId == 'passport') {\r\n this.Passport = true\r\n }\r\n if (this.proofId == 'CUSTOMERPACK') {\r\n this.customerPack = true\r\n }\r\n if (this.proofId == 'LENDERPACK') {\r\n this.lenderPack = true\r\n }\r\n if (this.proofId == 'selfEmployment') {\r\n this.selfEmployment = true\r\n }\r\n\r\n }\r\n closeToggle() {\r\n this.actionsService.broadcast(\r\n {\r\n action: 'close',\r\n behaviour: 'toggle',\r\n value: null\r\n }\r\n );\r\n }\r\n}\r\n","
\r\n

Here's what we need

\r\n
\r\n

\r\n Your Driving Licence (Front) scanned in a format shown below and uploaded as JPG, PNG or PDF

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Clear text and picture\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Blurred image and text\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Your Driving Licence (Back) scanned in a format shown below and uploaded as JPG, PNG or PDF

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Clear dates and references\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Blurred or low quality, unreadable or croppped\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n A utility bill scanned in a format shown below and uploaded as JPG, PNG or PDF

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Visible name and address confirmed, and the bill must be dated in the last 90 days\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Either of the details not correct or clearly visible\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Most recent Three payslips scanned in a format shown below and uploaded as JPG, PNG or PDF

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Employer and employee details seen clearly\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Blurred, cropped or concealed details\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n A bank statement scanned in a format shown below and uploaded as JPG, PNG or PDF

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Visible name and address confirmed, and the statement must be dated in the last 90 days\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Either of the details not correct or clearly visible\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Your Passport (ID page) scanned in a format shown below and uploaded as JPG, PNG or PDF

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Not blurry, not cropped, visible picture and text.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Reference code cropped or blurry/low quality scan\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
","import { Injectable } from '@angular/core';\r\nimport {\r\n CanActivate, Router,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\n\r\nimport { LoginService } from './../login/login.service';\r\nimport { TimedActionService } from \"../timed-action/timed-action.service\";\r\nimport { TokenService } from './../token/token.service';\r\nimport { URLS } from '../configuration/configuration.urls';\r\n\r\n@Injectable()\r\nexport class AuthenticationGuard implements CanActivate {\r\n\r\n constructor(private loginService: LoginService, private router: Router, private timedActionService: TimedActionService, private tokenService: TokenService) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n let url: string = state.url;\r\n return this.checkLogin(url) && this.checkRoles(route);\r\n \r\n }\r\n\r\n checkLogin(url: string): boolean {\r\n \r\n if (this.tokenService.isAuthenticated()) {\r\n this.timedActionService.startTimer();\r\n return true;\r\n }\r\n this.loginService.redirectUrl = url;\r\n this.router.navigateByUrl(URLS.Login.route);\r\n\r\n return false;\r\n \r\n }\r\n\r\n checkRoles(route: ActivatedRouteSnapshot) {\r\n \r\n\r\n if (route.data && route.data.roles) { \r\n var foundRole: boolean = this.tokenService.roles.some(\r\n (role) => route.data.roles.indexOf(role) != -1\r\n );\r\n\r\n if (!foundRole) {\r\n this.router.navigateByUrl(URLS.NotFound.route);\r\n return false;\r\n }\r\n\r\n }\r\n else if (route.data && route.data.redirectRoles) {\r\n\r\n var foundRedirectRole = route.data.redirectRoles.find( (redirectRole) => this.tokenService.roles.indexOf(redirectRole.id) != -1 );\r\n\r\n if (foundRedirectRole) {\r\n this.router.navigateByUrl(foundRedirectRole.redirectTo);\r\n return false;\r\n }\r\n\r\n }\r\n \r\n return true;\r\n \r\n }\r\n\r\n}\r\n","/*\r\n Proofs\r\n*/\r\ndeclare type Proofs = { [type: string]: Array }\r\n\r\nclass Proof {\r\n public id: number;\r\n public title: string;\r\n public type: string;\r\n public filename: string;\r\n public url: string;\r\n public dateUploaded: string;\r\n public status: string;\r\n}\r\n\r\nclass RequiredProof {\r\n public id: string;\r\n public label: string;\r\n public description: string;\r\n public docsRequired: number;\r\n}\r\n\r\nexport {\r\n Proofs, Proof, RequiredProof\r\n}","import { Injectable } from '@angular/core';\r\n\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n\r\n@Injectable()\r\nexport class GlobalModalService {\r\n\r\n constructor () {}\r\n\r\n // Show modal subscription\r\n private showSource = new Subject();\r\n showAnnounced$ = this.showSource.asObservable();\r\n\r\n // modal response subscription\r\n private responseSource = new Subject();\r\n responseAnnounced$ = this.responseSource.asObservable();\r\n\r\n // Broadcast show modal\r\n show(model: any): Observable {\r\n this.showSource.next(model);\r\n return this.responseAnnounced$;\r\n }\r\n\r\n // Broadcast modal response\r\n response(value: boolean) {\r\n this.responseSource.next(value);\r\n }\r\n\r\n}\r\n","\r\ndeclare type EventStates = { [type: string]: PageEventPages };\r\ndeclare type PageEventPages = { [type: string]: PageState };\r\n\r\nclass PageState {\r\n public enabled: boolean;\r\n public active: boolean;\r\n public editing: boolean;\r\n public sectionDefaults?: PageSectionState;\r\n public sections?: PageSectionStates;\r\n}\r\n\r\ndeclare type PageSectionStates = { [type: string]: PageSectionState };\r\n\r\nclass PageSectionState {\r\n public visible: boolean;\r\n public editing: boolean;\r\n public enabled: boolean;\r\n}\r\n\r\nconst PAGE_ENABLED_AND_EDITABLE: PageState = { enabled: true, active: true, editing: true, sectionDefaults: { visible: true, editing: true, enabled: true } };\r\nconst PAGE_ACTIVE_AND_EDITABLE: PageState = { enabled: true, active: true, editing: true, sectionDefaults: { visible: true, editing: true, enabled: true } };\r\nconst PAGE_ACTIVE_AND_READONLY: PageState = { enabled: true, active: true, editing: true, sectionDefaults: { visible: true, editing: true, enabled: true } };\r\nconst SECTION_VISIBLE_AND_EDITABLE: PageSectionState = { visible: true, editing: true, enabled: true };\r\nconst SECTION_VISIBLE_AND_READONLY: PageSectionState = { visible: true, editing: true, enabled: true };\r\nconst SECTION_HIDDEN: PageSectionState = { visible: true, editing: true, enabled: true };\r\nconst SECTION_DISABLED: PageSectionState = { visible: true, editing: true, enabled: true };\r\nconst PAGE_DISABLED: PageState = { enabled: true, active: true, editing: true, sectionDefaults: { visible: true, editing: true, enabled: true } };\r\nconst PAGE_ENABLED_AND_READONLY: PageState = { enabled: true, active: true, editing: true, sectionDefaults: { visible: true, editing: true, enabled: true } };\r\n\r\nexport {\r\n EventStates,\r\n PageEventPages,\r\n PageState,\r\n PageSectionStates,\r\n PageSectionState,\r\n PAGE_ENABLED_AND_EDITABLE,\r\n PAGE_ACTIVE_AND_EDITABLE,\r\n PAGE_ACTIVE_AND_READONLY,\r\n SECTION_VISIBLE_AND_EDITABLE,\r\n SECTION_VISIBLE_AND_READONLY,\r\n SECTION_HIDDEN,\r\n SECTION_DISABLED,\r\n PAGE_DISABLED,\r\n PAGE_ENABLED_AND_READONLY\r\n}\r\n","\r\nimport {finalize, map} from 'rxjs/operators';\r\nimport { environment } from './../../../../environments/environment';\r\nimport { AuthenticationResult } from './loginmodels';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\nimport { Subject , Observable , Subscription } from 'rxjs';\r\n\r\n\r\n\r\n\r\nimport { TokenService } from './../token/token.service';\r\nimport { TimedActionService } from '../timed-action/timed-action.service';\r\nimport { ActionsService } from '../actions/actions.service';\r\nimport { Configuration, CONFIGURATION } from '../configuration/configuration';\r\nimport { GROUPS } from '../configuration/configuration-groups';\r\nimport { LoadingModalService } from '../modal/loading-modal.service';\r\n\r\nconst dealerplusDomain = 'dealerplus';\r\nconst creditplusDomain = 'creditplus';\r\nconst comparecarfinanceDomain = 'comparecarfinance';\r\n\r\n@Injectable()\r\nexport class LoginService {\r\n\r\n redirectUrl = '';\r\n private subscriptionsForceExpire: Subscription[];\r\n private logoutSubscription: Subscription;\r\n private loginStatusSource = new Subject();\r\n loginStatusAnnounced$ = this.loginStatusSource.asObservable();\r\n urls: any = {\r\n loginDealer: environment.base + '/portalauth/internal',\r\n loginConsumer: environment.base + '/portalauth',\r\n register: environment.base + '/useraccount/createandregister',\r\n temporaryRegister: environment.base + '/useraccount/registertemp',\r\n changePassword: environment.base + '/useraccount/changepassword',\r\n forgottenPassword: environment.base + '/useraccount/resetforgottenpassword',\r\n registerDpCustomer: environment.base + '/useraccount/registerDpCustomer'\r\n };\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private timedActionService: TimedActionService,\r\n private tokenService: TokenService,\r\n private actionsService: ActionsService,\r\n private loadingModalService: LoadingModalService) {\r\n\r\n this.registerObservers();\r\n }\r\n\r\n registerObservers() {\r\n /*\r\n Listens for expiration broadcasts and sets the login status to false when received\r\n */\r\n this.subscriptionsForceExpire = this.actionsService.registerObservers(\r\n ['authentication.forceExpiration', 'authentication.expiration'],\r\n action => this.announceLoginStatus(false),\r\n this\r\n );\r\n\r\n /*\r\n Listens for logout broadcasts\r\n */\r\n this.logoutSubscription = this.actionsService.registerObserver(\r\n 'authentication.logout',\r\n action => this.logout(),\r\n this\r\n );\r\n }\r\n\r\n announceLoginStatus(loggedIn: boolean) {\r\n this.loginStatusSource.next(loggedIn);\r\n }\r\n\r\n temporaryRegister(userName: string, customerId: string): Observable {\r\n this.loadingModalService.show();\r\n return this.http\r\n .post(this.urls.temporaryRegister, { customerId: customerId, username: userName }).pipe(\r\n map((response) => this.extractLoginResult(response, userName)),\r\n finalize(() => this.loadingModalService.hide()),);\r\n }\r\n\r\n register(userName: string, customerId: string, password: string, source: string): Observable {\r\n return this.http\r\n .post(this.urls.register, { customerId: customerId, password: password, username: userName, source: source }).pipe(\r\n map((response) => this.extractLoginResult(response, userName)))\r\n }\r\n\r\n\r\n registerDpCustomer(userName: string, customerId: string, source: string): Observable {\r\n return this.http\r\n .post(this.urls.registerDpCustomer, { customerId: customerId, username: userName, source: source }).pipe(\r\n map((response) => this.extractLoginResult(response, userName)))\r\n }\r\n\r\n // Checked and working in angular 6\r\n login(body: Object, passwordPolicyKey: string): Observable {\r\n const loginUrl = (passwordPolicyKey === GROUPS.DEALER.name) ? this.urls.loginDealer : this.urls.loginConsumer;\r\n this.loadingModalService.show();\r\n return this.http\r\n .post(loginUrl, body, {headers: this.getHeaderOptions(false)}).pipe(\r\n map((response) => this.extractLoginResult(response, body['username'])),\r\n finalize(() => this.loadingModalService.hide()),);\r\n }\r\n\r\n changePassword(body: Object): Observable {\r\n this.loadingModalService.show();\r\n return this.http\r\n .put(this.urls.changePassword, body, {headers: this.getHeaderOptions(true)}).pipe(\r\n map((response) => this.extractLoginResult(response, this.tokenService.userName)),\r\n finalize(() => this.loadingModalService.hide()),);\r\n\r\n }\r\n\r\n forgottenPassword(body: Object): Observable {\r\n this.loadingModalService.show();\r\n return this.http\r\n .put(this.urls.forgottenPassword, body, {headers: this.getHeaderOptions(false)}).pipe(\r\n map((response) => this.extractLoginResult(response, body['username'])),\r\n finalize(() => this.loadingModalService.hide()),);\r\n }\r\n\r\n\r\n private extractLoginResult(response: any, userName: string): AuthenticationResult {\r\n if (response!=null) {\r\n const body = response;\r\n const lifetime = body.lifetime * 1000;\r\n\r\n\r\n if (body.applicationStatus != null) {\r\n return {\r\n bearerToken: body.token,\r\n username: userName,\r\n id: body.contactId,\r\n lifetime: lifetime,\r\n expires: this.tokenService.calculateExpires(lifetime),\r\n roles: body.roles,\r\n applicationStatus: body.applicationStatus\r\n };\r\n } else {\r\n return {\r\n bearerToken: body.token,\r\n username: userName,\r\n id: body.contactId,\r\n lifetime: lifetime,\r\n expires: this.tokenService.calculateExpires(lifetime),\r\n roles: body.roles\r\n };\r\n }\r\n\r\n }\r\n\r\n return null;\r\n\r\n }\r\n\r\n public setUserInformation(authenticationResult: AuthenticationResult) {\r\n\r\n // Update the token service with authentication info\r\n this.tokenService.setUserInformation(authenticationResult);\r\n\r\n // Start the token expiration timer - MUST take place after token service info set\r\n this.timedActionService.startTimer();\r\n\r\n // Broadcast the login to subscribers\r\n this.announceLoginStatus(true);\r\n }\r\n\r\n logout() {\r\n this.tokenService.clearUserInformation();\r\n this.announceLoginStatus(false);\r\n this.timedActionService.clearTimer();\r\n }\r\n\r\n getHeaderOptions(includeAuthorization: boolean): HttpHeaders {\r\n\r\n var headers = new HttpHeaders(\r\n { 'Content-Type' : 'application/json'}\r\n );\r\n\r\n if (includeAuthorization) {\r\n headers = headers.append('Authorization' , 'Bearer ' + this.tokenService.bearerToken);\r\n }\r\n\r\n return headers;\r\n\r\n }\r\n\r\n getPasswordPolicykey() {\r\n var result = GROUPS.CONSUMER.name;\r\n if (window.location.href.toLowerCase().indexOf(dealerplusDomain) != -1) {\r\n result = GROUPS.DEALER.name;\r\n } else if (window.location.href.toLowerCase().indexOf(comparecarfinanceDomain) != -1) {\r\n result = GROUPS.CCF.name;\r\n }\r\n return result\r\n }\r\n\r\n getPasswordPolicy(key: string) {\r\n const foundGroup = Object.keys(GROUPS).find(\r\n (group) => GROUPS[group].name === key\r\n );\r\n\r\n return foundGroup\r\n ? GROUPS[foundGroup].configuration.authentication.passwordPolicy\r\n : CONFIGURATION.authentication.passwordPolicy;\r\n\r\n }\r\n\r\n getInitialPasswordPolicy() {\r\n const passwordPolicyKey = this.getPasswordPolicykey();\r\n return this.getPasswordPolicy(passwordPolicyKey);\r\n }\r\n\r\n getLoginRedirectRoute(id: string) {\r\n const loginRedirectRoute: string = Configuration.loadCurrentJourney(this.tokenService.roles).redirectUrls.login.route;\r\n return loginRedirectRoute.replace('{{id}}', id);\r\n }\r\n\r\n getRegisterRedirectRoute(id: string) {\r\n const registerRedirectRoute: string = Configuration.loadCurrentJourney(this.tokenService.roles).redirectUrls.register.route;\r\n return registerRedirectRoute.replace('{{id}}', id);\r\n }\r\n}\r\n","\r\nimport { Component } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { URLS } from '../../../core/services/configuration/configuration.urls';\r\nimport { AuthenticationResult } from './../../../core/services/login/loginmodels';\r\nimport { LoginService } from '../../../core/services/login/login.service';\r\n\r\n\r\n@Component({\r\n selector: 'register',\r\n templateUrl: './register.component.html',\r\n styleUrls: ['./register.component.scss']\r\n})\r\nexport class RegisterComponent {\r\n username: string;\r\n contactId: string;\r\n permanentUser: boolean = false;\r\n nextPageUrl: string;\r\n nextPageUrlDp: string;\r\n source: string;\r\n\r\n /*\r\n constructor(private activatedRoute: ActivatedRoute, private router: Router, private loginService: LoginService) {\r\n this.activatedRoute.queryParams.subscribe(\r\n params => {\r\n this.permanentUser = params['perm'] ? true : false;\r\n this.username = params['username'];\r\n this.contactId = params['customerId'];\r\n this.permanentUser = params['perm'] ? true : false;\r\n this.source = params['source'];\r\n if (!this.username || !this.contactId) {\r\n this.router.navigateByUrl(URLS.NotFound.route);\r\n }\r\n }\r\n );\r\n }\r\n \r\n \r\n ngOnInit() {\r\n this.activatedRoute.queryParams.subscribe(\r\n params => {\r\n this.permanentUser = params['perm'] ? true : false;\r\n this.username = params['username'];\r\n this.contactId = params['customerId'];\r\n this.permanentUser = params['perm'] ? true : false;\r\n if (!this.username || !this.contactId) {\r\n this.router.navigateByUrl(URLS.NotFound.route);\r\n }\r\n }\r\n );\r\n this.nextPageUrl = 'register-panel?username=' + this.username + '&customerId=' + this.contactId;\r\n this.nextPageUrlDp = 'login';\r\n if (!this.permanentUser) {\r\n this.submitTempRegistration();\r\n }\r\n }\r\n \r\n\r\n async submitTempRegistration() {\r\n let registrationResult: AuthenticationResult = await this.loginService.temporaryRegister(this.username, this.contactId).toPromise();\r\n if (this.isValidAnswer(registrationResult)) {\r\n this.loginService.setUserInformation(registrationResult);\r\n this.router.navigateByUrl(this.nextPageUrl);\r\n }\r\n }\r\n \r\n */\r\n private isValidAnswer(result: AuthenticationResult) {\r\n return result\r\n && result.username\r\n && result.bearerToken\r\n && result.id\r\n }\r\n \r\n}\r\n","\r\n","import { Directive, OnChanges, SimpleChanges, Input } from '@angular/core';\r\nimport { Validator, AbstractControl, NG_VALIDATORS, ValidatorFn, ValidationErrors } from \"@angular/forms\";\r\nimport { isANumber } from \"../utilities\";\r\n\r\nexport function nonBlankValidator(): ValidatorFn {\r\n\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (control.value != null) {\r\n let value = Number(control.value);\r\n\r\n if (control.value.trim().length==0) {\r\n return {\r\n 'nonBlank': {\r\n actualValue: value\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n\r\n@Directive({\r\n selector: '[nonBlank]',\r\n providers: [{ provide: NG_VALIDATORS, useExisting: NonBlankDirective, multi: true }]\r\n})\r\nexport class NonBlankDirective implements Validator, OnChanges {\r\n\r\n validator: ValidatorFn;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const change = changes['nonBlank'];\r\n\r\n if (change) {\r\n this.validator = nonBlankValidator();\r\n }\r\n else {\r\n this.validator = null;\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors {\r\n if (this.validator) {\r\n return this.validator(control)\r\n }\r\n }\r\n}\r\n","import { JourneyPage } from \"../types\";\r\n\r\nimport { WORKFLOWS } from \"./configuration-workflows\";\r\nimport { SECTIONS } from \"./configuration-sections\";\r\nimport { PAGES } from \"./configuration-pages\";\r\n\r\n\r\nconst DEALER_JOURNEY: JourneyPage[] = [\r\n {\r\n label: 'Quotes',\r\n name: PAGES.QUOTES.label,\r\n route: PAGES.QUOTES.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '2',\r\n content:{\r\n editing: '

Now it’s time for the exciting part of your journey! Tell us the car you want and then what loan you are looking for…

'\r\n },\r\n activePageNextStep: {\r\n label: 'Proceed using this quote',\r\n displayProceedButton: false,\r\n // setStatus: 'DETAILS_STARTED'\r\n\r\n },\r\n sections: [SECTIONS.GET_QUOTES],\r\n sectionValidityObservers:[],\r\n workflows: [WORKFLOWS.ENQUIRY_RECEIVED, WORKFLOWS.PROVISIONALLY_ACCEPTED, WORKFLOWS.QUOTES_STARTED],\r\n states: []\r\n }, \r\n {\r\n label: 'Customer details',\r\n name: PAGES.EXTRADETAILS.label,\r\n route: PAGES.EXTRADETAILS.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '100',\r\n activePageNextStep: {\r\n label: 'Proceed and fill in your details',\r\n displayProceedButton: false,\r\n setStatus: 'DETAILS_STARTED'\r\n },\r\n sections: [SECTIONS.EXTRADETAILS],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Extra details',\r\n name: PAGES.EXTRADETAILS.label,\r\n route: PAGES.EXTRADETAILS.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '3',\r\n sections: [SECTIONS.EXTRADETAILS],\r\n sectionValidityObservers: [],\r\n workflows: [\r\n WORKFLOWS.Further_Info_Required,\r\n ],\r\n states: []\r\n },\r\n {\r\n label: 'Dealer Portal',\r\n name: PAGES.DEALERPORTAL.label,\r\n route: PAGES.DEALERPORTAL.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '1',\r\n sections: [SECTIONS.DEALERPORTAL],\r\n sectionValidityObservers: [],\r\n workflows: [\r\n WORKFLOWS.ENQUIRY_RECEIVED,\r\n ],\r\n states: []\r\n },\r\n {\r\n label: 'Final page',\r\n name: PAGES.FINAL.label,\r\n route: PAGES.FINAL.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '6',\r\n content: {\r\n editing: '

To get you started on your way to getting a new car we need to get some personal details from yourself so that we know who you are! The more information you provide, the better the loan offer!

',\r\n readOnly: '

If you have made a slight error entering your details then please contact us on {{telephone}} to make any changes, this is to prevent fraudulent activity.

'\r\n },\r\n activePageNextStep: {\r\n label: 'Get me a loan offer',\r\n displayProceedButton: true,\r\n setStatus: 'APPLICATION_PENDING'\r\n },\r\n sections: [SECTIONS.FINAL_PAGE],\r\n sectionValidityObservers: [],\r\n workflows: [\r\n WORKFLOWS.ENQUIRY_RECEIVED,\r\n WORKFLOWS.PROVISIONALLY_ACCEPTED,\r\n WORKFLOWS.QUOTES_STARTED,\r\n WORKFLOWS.DETAILS_STARTED,\r\n WORKFLOWS.DOCS_TO_BE_ISSUED,\r\n WORKFLOWS.DOCS_ISSUED,\r\n WORKFLOWS.DOCS_RECEIVED,\r\n WORKFLOWS.DOCS_WITH_LENDER,\r\n WORKFLOWS.AWAITING_PROOFS,\r\n WORKFLOWS.PROOFS_RECEIVED,\r\n WORKFLOWS.PAID_OUT,\r\n WORKFLOWS.CLIENT_CANCELLED,\r\n WORKFLOWS.ABANDONED,\r\n WORKFLOWS.CANNOT_LEND,\r\n WORKFLOWS.APPLICATION_PENDING,\r\n WORKFLOWS.APPLICATION_SENT,\r\n WORKFLOWS.APPLICATION_DECLINED,\r\n WORKFLOWS.APPLICATION_REFERRED,\r\n WORKFLOWS.APPLICATION_ACCEPTED,\r\n WORKFLOWS.APPLICATION_ERROR,\r\n WORKFLOWS.APPLICATION_MANUAL\r\n ],\r\n states: []\r\n },\r\n {\r\n label: 'Loan offer',\r\n name: PAGES.CONFIRMATION.label,\r\n route: PAGES.CONFIRMATION.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '4',\r\n content:{\r\n editing: '

That’s a great choice of car! You’re nearly there! The final part of your application is below, once this is completed simply select SUBMIT MY APPLICATION to secure your finance deal.

'\r\n },\r\n activePageNextStep: {\r\n label: 'Accept this offer',\r\n displayProceedButton: false,\r\n setStatus: 'DOCS_TO_BE_ISSUED'\r\n },\r\n sections: [SECTIONS.ACCEPTANCE_STATUS],\r\n sectionValidityObservers:[],\r\n workflows: [WORKFLOWS.APPLICATION_PENDING, WORKFLOWS.APPLICATION_SENT, WORKFLOWS.APPLICATION_DECLINED, WORKFLOWS.APPLICATION_REFERRED, WORKFLOWS.APPLICATION_ACCEPTED, WORKFLOWS.APPLICATION_ERROR, WORKFLOWS.APPLICATION_MANUAL],\r\n states: [\r\n {\r\n workflows: [WORKFLOWS.APPLICATION_DECLINED, WORKFLOWS.APPLICATION_REFERRED, WORKFLOWS.APPLICATION_ACCEPTED, WORKFLOWS.APPLICATION_ERROR],\r\n pageDefaults: 'PAGE_ACTIVE_AND_READONLY',\r\n sectionStates:[]\r\n }\r\n ]\r\n },\r\n {\r\n label: 'Agreement & documents',\r\n name: PAGES.AGREEMENT.label,\r\n route: PAGES.AGREEMENT.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '5',\r\n content:{\r\n editing: '

Congratulations! You’ve been accepted! The final part of your journey awaits! In order to secure your finance deal we need to get your proofs approved and tell you about our useful products designed to help you when you’re on the road!

'\r\n },\r\n sections: [SECTIONS.DOCUMENTS],\r\n activePageNextStep: {\r\n displayProceedButton: false\r\n },\r\n workflows: [WORKFLOWS.DOCS_TO_BE_ISSUED, WORKFLOWS.DOCS_ISSUED, WORKFLOWS.DOCS_RECEIVED, WORKFLOWS.DOCS_WITH_LENDER, WORKFLOWS.AWAITING_PROOFS, WORKFLOWS.PROOFS_RECEIVED, WORKFLOWS.PAID_OUT],\r\n states: [\r\n {\r\n workflows: [WORKFLOWS.DOCS_TO_BE_ISSUED],\r\n sectionStates:[\r\n {\r\n section: SECTIONS.DOCUMENTS,\r\n state: 'SECTION_HIDDEN'\r\n }\r\n ]\r\n },\r\n {\r\n workflows: [WORKFLOWS.DOCS_ISSUED, WORKFLOWS.DOCS_RECEIVED, WORKFLOWS.DOCS_WITH_LENDER, WORKFLOWS.AWAITING_PROOFS],\r\n sectionDefaults: 'SECTION_VISIBLE_AND_READONLY',\r\n sectionStates:[\r\n {\r\n section: SECTIONS.DOCUMENTS,\r\n state: 'SECTION_VISIBLE_AND_EDITABLE'\r\n }\r\n ]\r\n },\r\n {\r\n workflows: [WORKFLOWS.PROOFS_RECEIVED, WORKFLOWS.PAID_OUT],\r\n pageDefaults: 'PAGE_ACTIVE_AND_READONLY',\r\n sectionStates:[]\r\n }\r\n ]\r\n }\r\n];\r\n\r\nexport {\r\n DEALER_JOURNEY\r\n}\r\n","import { CONFIGURATION } from './configuration-groups-base';\r\nimport { CONFIGURATION_DEALER } from './configuration-groups-dealer';\r\nimport { CONFIGURATION_CCF } from './configuration-groups-ccf';\r\n\r\nconst GROUPS = {\r\n CONSUMER: {\r\n name: 'customer',\r\n configuration: CONFIGURATION\r\n },\r\n DEALER: {\r\n name: 'dealerplus dealer',\r\n configuration: CONFIGURATION_DEALER\r\n },\r\n CCF: {\r\n name: 'ccf customer',\r\n configuration: CONFIGURATION_CCF\r\n },\r\n TEMP: {\r\n name: 'temporary user',\r\n configuration: CONFIGURATION\r\n },\r\n DpCustomer: {\r\n name: 'dealerplus customer',\r\n configuration: CONFIGURATION_DEALER\r\n }\r\n};\r\n\r\nexport {\r\n GROUPS\r\n};\r\n","\r\nimport {finalize, catchError, map} from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse\r\n // Response \r\n} from '@angular/common/http';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { Quote, QuoteServiceResponse, Application } from '../types';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { LoginService } from './../login/login.service';\r\nimport { TimedActionService } from '../timed-action/timed-action.service';\r\nimport { AnalyticsData, FinanceRequest } from '../types-quote';\r\nimport { LoadingModalService } from '../modal/loading-modal.service';\r\nimport { LoanOffer } from '../types-loan-offer';\r\nimport { CalculatorRequest } from '../CalculatorRequest';\r\n\r\n@Injectable()\r\nexport class QuotesService {\r\n private verifyLenderRequirements: string = environment.base + '/quotes/verifyLenderRequirements';\r\n private quotesUrl: string = environment.base + '/quotes/getquote';\r\n private financeBreakdown: string = environment.base + '/quotes/getFinanceBreakdown';\r\n private calculator: string = environment.base + '/quotes/calculator';\r\n private updateLenderCriteriaUrl: string = environment.base + '/quotes/updatelendingcriteria';\r\n private PCPLenders: string = environment.base + '/quotes/getDynamicLenderOffersPCP';\r\n private lenderCommissionDisplay: string = environment.base + '/quotes/getDealerCommission';\r\n private getPassedCriteriaLendersUrl: string = environment.base + '/quotes/getpassedcriterialenders';\r\n private saveNotes: string = environment.base + '/quotes/saveQuotesToNotes';\r\n\r\n private body: any = {\r\n applicationId: null,\r\n financeRequest: null,\r\n vehicle: null\r\n };\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private loginService: LoginService,\r\n private timedActionService: TimedActionService,\r\n private loadingModalService: LoadingModalService) { }\r\n\r\n saveNote(quotes: Quote): Observable {\r\n this.body = quotes;\r\n return this.http.post(this.saveNotes, this.body, {headers: this.loginService.getHeaderOptions(true)})\r\n }\r\n\r\n getQuotes(applicationId: string, quoteFinanceRequest: FinanceRequest, vehicle: any): Observable {\r\n\r\n this.body.applicationId = applicationId;\r\n this.body.financeRequest = quoteFinanceRequest;\r\n this.body.vehicle = vehicle;\r\n\r\n\r\n return this.http.post(this.quotesUrl, this.body, { headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n // this.logQuoteLookupquote, true);\r\n return response;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n // this.logQuoteLookup(quote, false);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide()),);\r\n\r\n }\r\n getFinanceBreakdown(applicationId: string, quoteFinanceRequest: FinanceRequest, vehicle: any): Observable {\r\n\r\n this.body.applicationId = applicationId;\r\n this.body.financeRequest = quoteFinanceRequest;\r\n this.body.vehicle = vehicle;\r\n\r\n\r\n return this.http.post(this.financeBreakdown, this.body, {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n // this.logQuoteLookup(quote, true);\r\n return response;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n // this.logQuoteLookup(quote, false);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide()),);\r\n\r\n }\r\n\r\n getCalculatorResults(Request: CalculatorRequest): Observable {\r\n\r\n this.body = Request;\r\n\r\n this.loadingModalService.displayMessage(6);\r\n return this.http.post(this.calculator, this.body, {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n // this.logQuoteLookup(quote, true);\r\n return response;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n // this.logQuoteLookup(quote, false);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide()),);\r\n\r\n }\r\n \r\n updateLendingCriteria(applicationId: number): Observable {\r\n this.loadingModalService.show();\r\n return this.http.post(this.updateLenderCriteriaUrl, Number(applicationId), {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n return response;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide()),);\r\n }\r\n\r\n getPassedCriteriaLenders(applicationId: number): Observable {\r\n this.loadingModalService.show();\r\n return this.http.post(this.getPassedCriteriaLendersUrl, JSON.stringify(applicationId), {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n return response;\r\n }),\r\n catchError((error) => {\r\n console.log(error)\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide()),);\r\n }\r\n\r\n private logQuoteLookup(quote: Quote, success: boolean) {\r\n\r\n const analyticsData: AnalyticsData = {\r\n vehicle: {\r\n vrm: quote.vehicle.registration,\r\n mileage: quote.vehicle.mileage,\r\n price: quote.vehicle.price,\r\n cap_valuation: quote.vehicle.valuation ? quote.vehicle.valuation.retail : quote.vehicle.price\r\n },\r\n terms: {\r\n loanAmount: quote.financeRequest.loanAmount,\r\n months: quote.financeRequest.term,\r\n deposit: quote.financeRequest.deposit.cash,\r\n financeType: quote.financeRequest.financeType\r\n }\r\n };\r\n\r\n if (success) {\r\n window['dataLayer'].push({\r\n event: 'service-response',\r\n label: 'successful-quote-lookup',\r\n data: analyticsData,\r\n timestamp: new Date().toISOString()\r\n });\r\n } else {\r\n window['dataLayer'].push({\r\n event: 'service-response',\r\n label: 'unsuccessful-quote-lookup',\r\n data: analyticsData,\r\n timestamp: new Date().toISOString()\r\n });\r\n }\r\n }\r\n \r\n checkLenderRequirements(application: Application): Observable {\r\n\r\n return this.http.post(this.verifyLenderRequirements, application.id, {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n return response;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide()),);\r\n }\r\n getDynamicLenderOffersPCP(application: Application): Observable {\r\n\r\n return this.http.post(this.PCPLenders, application.id , {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n return response;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide()),);\r\n }\r\n\r\n getLenderCommission(LendersResponse): Observable {\r\n\r\n return this.http.post(this.lenderCommissionDisplay, LendersResponse, { headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n return response;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide()),);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Subject , Observable } from 'rxjs';\r\n\r\n\r\n@Injectable()\r\nexport class LoadingModalService {\r\n\r\n constructor () {}\r\n\r\n // Show modal subscription\r\n private showSource = new Subject();\r\n showAnnounced$ = this.showSource.asObservable();\r\n\r\n//show message\r\n private displaySource = new Subject();\r\n display$ = this.displaySource.asObservable();\r\n\r\n // modal response subscription\r\n private hideSource = new Subject();\r\n hideAnnounced$ = this.hideSource.asObservable();\r\n\r\n // Broadcast show modal\r\n show(): Observable {\r\n this.showSource.next();\r\n return this.hideAnnounced$;\r\n }\r\n\r\n displayMessage(number){\r\n this.displaySource.next(number);\r\n }\r\n // Broadcast hide\r\n hide() {\r\n this.hideSource.next();\r\n }\r\n}\r\n","import { Component, ViewChild, ElementRef } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { LoginService } from './../../../core/services/login/login.service';\r\nimport { TokenService } from \"../../../core/services/token/token.service\";\r\n\r\nimport { LookupItem } from \"../../../core/services/configuration/configuration\";\r\nimport { environment } from '../../../../environments/environment';\r\nimport { PasswordConfiguration } from '../../../core/services/configuration/configuration.types';\r\nimport { NgForm } from '@angular/forms';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { GROUPS } from '../../../core/services/configuration/configuration-groups';\r\n\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ApplicationStatusService } from '../../../core/services/application-status/application-status.service';\r\nimport { FavIconService } from '../../../core/services/fav-icon/fav-icon.service';\r\nimport { ProposedVehicle } from '../../../core/services/types';\r\nimport { Meta } from '@angular/platform-browser';\r\nimport { CustomersService } from '../../../core/services/customers/customers.service';\r\n//import { ApplicationHeaderComponent } from '../../../shared/components/application-header/application-header.component'\r\nconst comparecarfinanceDomain = 'comparecarfinance';\r\nconst dealerplusDomain = 'dealerplus';\r\n\r\n\r\n@Component({\r\n selector: 'login-panel',\r\n templateUrl: './login-panel.component.html',\r\n styleUrls: ['./login-panel.component.scss']\r\n})\r\nexport class LoginPanelComponent {\r\n\r\n @ViewChild('loginForm') loginForm: NgForm;\r\n @ViewChild('forgottenPasswordModal') forgottenPasswordModal: ElementRef;\r\n vehicle: ProposedVehicle\r\n\r\n //values for handling new customers\r\n username:string;\r\n contactEmail:string;\r\n contactId:string;\r\n registerLink:string;\r\n\r\n isDemo: boolean = environment.demo;\r\n accessDenied: boolean = false;\r\n showPassword: boolean = false;\r\n logintype: string;\r\n loggingIn: boolean = false;\r\n platform: string;\r\n nextPageDpDealerUrl: string;\r\n cssClass: string;\r\n model = {\r\n username: '',\r\n password: '',\r\n source: ''\r\n \r\n };\r\n password: string;\r\n passwordError: boolean = true;\r\n forgotPassword:boolean = false;\r\n passwordEmailSuccess:boolean = false;\r\n passwordEmailFail:boolean = false;\r\n verifyingPasswordEmail:boolean = false;\r\n\r\n errorMessage = '';\r\n\r\n passwordPolicy: PasswordConfiguration;\r\n passwordPolicyKey: string;\r\n\r\n displayLoginTypes: boolean;\r\n\r\n loginTypes: LookupItem = {\r\n controlType: 'buttons',\r\n items: [\r\n { label: \"Customer\", value: GROUPS.CONSUMER.name },\r\n { label: \"Dealer\", value: GROUPS.DEALER.name },\r\n { label: \"Compare Car Finance\", value: GROUPS.CCF.name }]\r\n };\r\n\r\n nextPageUrl: string;\r\n\r\n constructor(private loginService: LoginService, private meta: Meta, private parentRouter: Router,\r\n private tokenService: TokenService, private actionsService: ActionsService,\r\n private titleService: Title, private favIconService: FavIconService,\r\n private applicationStatusService: ApplicationStatusService, private customerService: CustomersService,\r\n private activatedRoute: ActivatedRoute,) {this.activatedRoute.queryParams.subscribe(\r\n params => {\r\n this.username = params['username'];\r\n this.contactId = params['customerId'];\r\n }\r\n );\r\n if (this.tokenService.isAuthenticated()) {\r\n this.parentRouter.navigateByUrl(this.getCurrentStep(\"test\", this.tokenService.currentUser));\r\n }\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(\"Login\");\r\n this.registerLink = \"/register?customerId=\"+ this.contactId + \"&username=\" +this.username;\r\n\r\n if (window.location.href.toLowerCase().indexOf(\"localhost\") != -1) {\r\n this.displayLoginTypes = true;\r\n }\r\n if (window.location.href.toLowerCase().indexOf(comparecarfinanceDomain) != -1) {\r\n this.model.source = 'ccf customer'\r\n } else if (window.location.href.toLowerCase().indexOf(dealerplusDomain) != -1) {\r\n this.model.source = 'dealerplus dealer'\r\n this.platform = 'dp'\r\n } else {\r\n this.model.source = 'customer'\r\n }\r\n var key = this.model.source;\r\n this.changeLoginType(key);\r\n\r\n this.nextPageUrl = 'applications/';\r\n this.nextPageDpDealerUrl = 'dealer-portal'\r\n this.contactEmail = this.username;\r\n \r\n }\r\n\r\n login() {\r\n if (this.platform == \"dp\") {\r\n var element = document.getElementById(\"source\");\r\n this.model.source = element.value;\r\n }\r\n this.loggingIn = true;\r\n this.loginService.login(this.model, this.passwordPolicyKey)\r\n .subscribe(\r\n response => {\r\n if (response.roles.indexOf(\"dealerplus dealer\") != -1) {\r\n this.loginService.setUserInformation(response);\r\n this.accessDenied = false;\r\n this.actionsService.broadcast(\r\n {\r\n action: 'document',\r\n behaviour: 'changeCSSClass',\r\n value: this.logintype\r\n }\r\n );\r\n this.parentRouter.navigateByUrl(this.nextPageDpDealerUrl);\r\n }\r\n\r\n else if (response.roles.indexOf(\"dealerplus customer\") != -1) {\r\n this.loginService.setUserInformation(response);\r\n this.accessDenied = false;\r\n this.actionsService.broadcast(\r\n {\r\n action: 'document',\r\n behaviour: 'changeCSSClass',\r\n value: this.logintype\r\n }\r\n );\r\n this.parentRouter.navigateByUrl(this.getCurrentStep(response.applicationStatus, response.id));\r\n }\r\n else {\r\n if (typeof response != null) {\r\n this.loginService.setUserInformation(response);\r\n this.parentRouter.navigateByUrl(this.getCurrentStep(response.applicationStatus, response.id));\r\n this.accessDenied = false;\r\n }\r\n }\r\n },\r\n error => {\r\n this.loggingIn = false;\r\n if (error.status == 401) {\r\n this.accessDenied = true;\r\n }\r\n else {\r\n throw error;\r\n }\r\n }\r\n );\r\n }\r\n\r\n forgottenPassword(forgotten:boolean){\r\n if (forgotten==true){\r\n this.forgotPassword = true;\r\n }\r\n else{\r\n this.forgotPassword = false;\r\n }\r\n }\r\n\r\n // send email for people who forgot their password\r\n sendPasswordEmail(){\r\n this.verifyingPasswordEmail = true;\r\n this.customerService.createPasswordLink(this.model.username).subscribe(\r\n response => {this.sendPasswordEmailSuccess();},\r\n error => {this.sendPasswordEmailFail()}\r\n );\r\n }\r\n\r\n sendPasswordEmailSuccess(){\r\n this.verifyingPasswordEmail = false;\r\n this.passwordEmailSuccess = true;\r\n }\r\n\r\n sendPasswordEmailFail(){\r\n this.verifyingPasswordEmail = false;\r\n this.passwordEmailFail = true;\r\n }\r\n\r\n changingForgottenPasswordEmail(){\r\n if (this.verifyingPasswordEmail!=true){\r\n this.passwordEmailSuccess = false;\r\n this.passwordEmailFail = false;\r\n }\r\n }\r\n\r\n changeLoginType(loginType: string) {\r\n this.setPasswordPolicy(loginType);\r\n this.model.source = loginType;\r\n this.logintype = loginType;\r\n }\r\n\r\n setPasswordPolicy(passwordPolicyKey: string) {\r\n this.passwordPolicyKey = passwordPolicyKey;\r\n this.passwordPolicy = this.loginService.getPasswordPolicy(this.passwordPolicyKey);\r\n }\r\n\r\n getCurrentStep(status, contactId): string {\r\n var result;\r\n switch (status) {\r\n // case 'EnquiryReceived':\r\n // result = 'applications/' + contactId + '/quotes';\r\n // break;\r\n // case 'FurtherInfoRequired':\r\n // result = 'applications/' + contactId + '/extra-details';\r\n // break;\r\n // case 'ProposalSent':\r\n // case 'ProposalAccepted':\r\n // case 'ProposalReferred':\r\n // result = 'applications/' + contactId + '/loan-offer';\r\n // break;\r\n // case 'DocsIssued':\r\n // result = 'applications/' + contactId + '/agreement-and-documentation';\r\n // break;\r\n // case 'ProofsReceived':\r\n // case 'AwaitingProofs':\r\n // case 'Declined':\r\n // result = 'applications/' + contactId + '/final-page';\r\n // break;\r\n default:\r\n result = 'vehicle/' + localStorage.getItem(\"currentUser\"); //+ contactID needs to be added\r\n break;\r\n }\r\n return result;\r\n }\r\n\r\n\r\n closeModal() {\r\n\r\n this.forgottenPasswordModal.nativeElement.style.display = \"none\";\r\n\r\n }\r\n\r\n showModal() {\r\n\r\n this.forgottenPasswordModal.nativeElement.style.display = \"block\";\r\n\r\n \r\n }\r\n\r\n \r\n\r\n showHidePassword() {\r\n if (this.showPassword == true) {\r\n this.showPassword = false;\r\n }\r\n else {\r\n this.showPassword = true;\r\n }\r\n }\r\n\r\n checkPassword() {\r\n var password = this.model.password;\r\n if (/[a-z]/.test(password) == false || /[A-Z]/.test(password) == false ||\r\n /\\d/.test(password) == false || password.length < 8) {\r\n this.passwordError = true;\r\n }\r\n else {\r\n this.passwordError = false;\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n","
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Login to your portal

\r\n\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
E
\r\n
\r\n
\r\n
Forgot password?
\r\n\r\n
\r\n
\r\n The email or password that you entered is incorrect\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n

Password Reset

\r\n
Please enter your email address to receive password reset instructions
\r\n
\r\n L Back to Sign in\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
From your portal account:
\r\n
● See your finance options with personalised offers
\r\n
● Choose from our RAC approved cars, or tell us about a car you've already found
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n fEmail sent!\r\n
\r\n
\r\n
\r\n
\r\n No account found! Confirm email address\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActionsService } from '../base-form/base-form-testing.barrel.spec';\r\n\r\n@Component({\r\n selector: 'ribbon',\r\n templateUrl: './ribbon.component.html',\r\n styleUrls: ['./ribbon.component.scss']\r\n})\r\nexport class RibbonComponent implements OnInit {\r\n\r\n hideToggle: boolean = false;\r\n displayToggle: boolean = false;\r\n constructor(private actionsService: ActionsService) { }\r\n\r\n ngOnInit() {\r\n this.actionsService.registerObserver(\r\n 'hide.privacy',\r\n action => {\r\n this.displayToggle = false;\r\n this.hideToggle = true;\r\n },\r\n this\r\n );\r\n }\r\n displayPolicy() {\r\n this.displayToggle = true;\r\n }\r\n hideRibbon(){\r\n this.hideToggle = true;\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

We care about your needs.

\r\n

By proceeding, a hard search may be conducted by the lender(s), which may affect your credit profile. For more information, please see our \r\n \r\n Terms & Conditions\r\n .

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Directive, OnChanges, SimpleChanges, Input } from '@angular/core';\r\nimport { Validator, AbstractControl, NG_VALIDATORS, ValidatorFn, ValidationErrors } from \"@angular/forms\";\r\nimport { isDate } from \"../utilities\";\r\n\r\nexport function minDate(minDate: Date): ValidatorFn {\r\n if (!isDate(minDate)) {\r\n throw Error(\"The minimum date is expected to be a date\");\r\n }\r\n\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (control.value != null) {\r\n let value = new Date(control.value);\r\n\r\n if (isDate(value) && value < minDate) {\r\n return {\r\n 'minDate': {\r\n actualValue: value,\r\n minimumValue: minDate\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n\r\n@Directive({\r\n selector: '[minimumDate]',\r\n providers: [{ provide: NG_VALIDATORS, useExisting: MinDateDirective, multi: true }]\r\n})\r\nexport class MinDateDirective implements Validator, OnChanges {\r\n @Input()\r\n minimumDate: Date;\r\n\r\n validator: ValidatorFn;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const change = changes['minimumDate'];\r\n\r\n if (change) {\r\n this.validator = minDate(change.currentValue);\r\n }\r\n else {\r\n this.validator = null;\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors {\r\n if (this.validator) {\r\n return this.validator(control)\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'saving-alert',\r\n templateUrl: './saving-alert.component.html',\r\n styleUrls: ['./saving-alert.component.scss']\r\n})\r\nexport class SavingAlertComponent implements OnInit {\r\n\r\n @Input()\r\n saving: boolean = false;\r\n\r\n @Input()\r\n dirty: boolean = false;\r\n\r\n @Input()\r\n message: string = 'Saving';\r\n\r\n @Output()\r\n save: EventEmitter = new EventEmitter();\r\n\r\n @Output()\r\n exit: EventEmitter = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n {{message}}\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Application } from '../../../core/services/types';\r\nimport { DisplayVehicle } from '../../../core/services/types-quote';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { Subscription } from '../../../../../node_modules/rxjs';\r\n\r\n@Component({\r\n selector: 'agreements-documentation',\r\n templateUrl: './agreements-documentation.component.html',\r\n styleUrls: ['./agreements-documentation.component.scss']\r\n})\r\nexport class AgreementsDocumentationComponent implements OnInit {\r\n\r\n pageCount: boolean;\r\n @Input()\r\n application: Application;\r\n agreementsObserve: Subscription;\r\n\r\n constructor(private actionsService: ActionsService) {\r\n this.pageCount = false;\r\n }\r\n\r\n ngOnInit() {\r\n document.body.style.background = '#eeeff3'\r\n this.agreementsObserve = this.actionsService.registerObserver(\r\n 'force.reload',\r\n action => {\r\n location.reload();\r\n },\r\n this\r\n );\r\n this.broadcastVehicle();\r\n this.pageCount =true;\r\n }\r\n\r\n broadcastVehicle() {\r\n const quote = this.application.quotes[0];\r\n const vehicle: DisplayVehicle = {\r\n make: quote.vehicle.make,\r\n model: quote.vehicle.model,\r\n variant: quote.vehicle.model,\r\n source: quote.vehicle.source = \"quote generated\",\r\n registration: quote.vehicle.registration,\r\n regYear: Number(quote.vehicle.dateOfRegistration.split(\"-\")[0]),\r\n term: quote.financeRequest.term,\r\n financeType: quote.financeRequest.financeType,\r\n balloon: quote.financeResponse.balloon,\r\n monthlyPayments: quote.financeResponse.monthlyPayment,\r\n imageUrl_Main: quote.vehicle.imageUrl\r\n }\r\n\r\n this.actionsService.broadcast({\r\n action: 'displayVehicle',\r\n behaviour: 'updateVehicle',\r\n value: {\r\n vehicle: vehicle,\r\n status: this.application.status,\r\n loanOffer: this.application.loanProposalResponses.filter(loan => loan.isSelected)[0].loanOffer\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","
\r\n \r\n \r\n
\r\n","import { Component, Input, OnChanges, AfterViewInit, OnDestroy, Inject } from '@angular/core';\r\nimport { LoadingModalService } from '../../../core/services/modal/loading-modal.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'loading-modal',\r\n templateUrl: 'loading-modal.component.html',\r\n styleUrls: ['loading-modal.component.scss']\r\n})\r\nexport class LoadingModalComponent implements OnChanges, AfterViewInit, OnDestroy {\r\n\r\n @Input()\r\n loading: boolean;\r\n config: any;\r\n isVisible = false;\r\n resolver: any;\r\n blockNgOnChangesCheck: boolean;\r\n \r\n subscription1: Subscription;\r\n subscription2: Subscription;\r\n promise: Promise;\r\n source: string;\r\n registerationMessage = false;\r\n currentPromise;\r\n proposalMessage = false;\r\n documentsMessage= false;\r\n dealersApplyPageMessage= false;\r\n getQuotes= false;\r\n carLookup= false;\r\n calculator= false;\r\n message: string = \"Gathering loan options\";\r\n docsMessage: string = \"Preparing your documents\";\r\n applyMessage: string = \"Credit searching...\";\r\n getQuoteMessage: string = \"Generating quote...\";\r\n vehicleLookupMessage: string = \"Searching vehicle...\";\r\n calculatorMessage: string = \"Calculating...\";\r\n \r\n constructor(public loadingModalService: LoadingModalService) {\r\n\r\n if (window.location.href.indexOf(\"dealerplus\") != -1) {\r\n this.source = 'dealer';\r\n }\r\n else if (window.location.href.indexOf(\"comparecarfinance\") != -1) {\r\n this.source = 'ccf';\r\n }\r\n else {\r\n this.source = 'consumer';\r\n }\r\n // Subscribe to showAnnounced in the Loading Modal service and show the Modal when it is broadcast\r\n this.subscription1 = this.loadingModalService.showAnnounced$.subscribe(\r\n () => {\r\n this.show();\r\n }\r\n ); \r\n \r\n // Subscribe to showAnnounced in the Loading Modal service and show the Modal when it is broadcast\r\n this.subscription1 = this.loadingModalService.display$.subscribe(\r\n (step) => {\r\n this.displayMessage(step);\r\n }\r\n );\r\n\r\n // Subscribe to hideAnnounced in the Loading Modal service and hide the Modal when it is broadcast\r\n this.subscription1 = this.loadingModalService.hideAnnounced$.subscribe(\r\n () => {\r\n this.hide();\r\n }\r\n );\r\n\r\n this.blockNgOnChangesCheck = true;\r\n this.config = {\r\n ignoreBackdropClick: true,\r\n keyboard: false\r\n };\r\n }\r\n \r\n public displayMessage(step){\r\n if(step == 1){\r\n this.proposalMessage = true;\r\n }\r\n if(step == 2){\r\n this.documentsMessage = true;\r\n }\r\n if(step == 3){\r\n this.dealersApplyPageMessage = true;\r\n }\r\n if(step == 4){\r\n this.getQuotes = true;\r\n }\r\n if(step == 5){\r\n this.carLookup = true;\r\n }\r\n if(step == 6){\r\n this.calculator = true;\r\n }\r\n }\r\n\r\n public show(): Promise {\r\n if (window.location.href.includes(\"register\")) {\r\n this.registerationMessage = true;\r\n }\r\n const result = new Promise(\r\n (resolve, reject) => {\r\n this.isVisible = true;\r\n this.resolver = resolve;\r\n }\r\n );\r\n result.then(value => {\r\n this.hide();\r\n });\r\n return result;\r\n }\r\n\r\n public hide(): void {\r\n this.registerationMessage = false;\r\n this.proposalMessage = false;\r\n this.documentsMessage = false;\r\n this.dealersApplyPageMessage = false;\r\n this.getQuotes = false;\r\n this.carLookup = false;\r\n this.isVisible = false;\r\n this.calculator = false;\r\n }\r\n\r\n public checkloading() {\r\n if (this.loading) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.checkloading();\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.blockNgOnChangesCheck) {\r\n this.blockNgOnChangesCheck = false;\r\n } else {\r\n this.checkloading();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription1.unsubscribe();\r\n this.subscription2.unsubscribe();\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n","import { Directive, OnChanges, SimpleChanges, Input } from '@angular/core';\r\nimport { ValidatorFn, Validator, AbstractControl, ValidationErrors, NG_VALIDATORS } from \"@angular/forms\";\r\nimport { isANumber, containsElement } from \"../utilities\";\r\n\r\nexport function anyOf(collection: Array): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (control.value != null) {\r\n if (!containsElement(collection, control.value)) {\r\n return {\r\n 'anyof': {\r\n actualValue: control.value,\r\n requiredValue: collection\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[anyof]',\r\n providers: [{ provide: NG_VALIDATORS, useExisting: AnyofDirective, multi: true }]\r\n})\r\nexport class AnyofDirective implements Validator, OnChanges {\r\n @Input()\r\n anyof: any;\r\n\r\n validator: ValidatorFn;\r\n\r\n validate(control: AbstractControl): ValidationErrors {\r\n if (this.validator) {\r\n return this.validator(control)\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const change = changes['anyof'];\r\n\r\n if (change) {\r\n this.validator = anyOf(change.currentValue);\r\n }\r\n else {\r\n this.validator = null;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, ViewChild } from '@angular/core';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ButtonGroup, NumberPlusMinus } from './../models.class';\r\n\r\nimport { SaveCancelComponent } from './../toolbar/save-cancel/save-cancel.component';\r\nimport { RecordNavigatorComponent } from './../toolbar/record-navigator/record-navigator.component';\r\n\r\nimport { ActionsService } from './../../../core/services/actions/actions.service';\r\n\r\n@Component({\r\n selector: 'form-container',\r\n templateUrl: 'form-container.component.html',\r\n styleUrls: ['form-container.component.scss'],\r\n providers: [ ActionsService ]\r\n})\r\nexport class FormContainerComponent implements OnInit {\r\n\r\n // @Input()\r\n public cont :string=\"TOOLBAR1\";\r\n\r\n @ViewChild(SaveCancelComponent)\r\n private saveCancelComponent: SaveCancelComponent;\r\n\r\n @ViewChild(RecordNavigatorComponent)\r\n private recordNavigatorComponent: RecordNavigatorComponent;\r\n\r\n public buttonmodel :ButtonGroup;\r\n public model :ButtonGroup;\r\n public dropdownmodel :ButtonGroup;\r\n public listgroupmodel :ButtonGroup;\r\n public breadcrumbmodel :any;\r\n public numberplusminusmodel :NumberPlusMinus;\r\n\r\n private actionsSubscription: Subscription;\r\n\r\n constructor(private actionsService: ActionsService) {\r\n\r\n this.actionsSubscription=this.actionsService.registerGlobalObserver(\r\n action => { this.action(action); },\r\n this\r\n );\r\n\r\n this.breadcrumbmodel={\r\n items:[\r\n {link:'', text:'Breadcrumb 1'},\r\n {link:'', text:'Breadcrumb 2'},\r\n {link:'', text:'Breadcrumb 3'}\r\n ]\r\n };\r\n\r\n this.model=new ButtonGroup(\r\n {\r\n group:'SORT',\r\n type:'buttongroup',\r\n btnclass:'btn-primary',\r\n navbar:true,\r\n selection:'single',\r\n visible:true,\r\n items:[\r\n {text:'Sort 1', action:'SORT1', disabled:false, active:false, visible:true},\r\n {text:'Sort 2', action:'SORT2', disabled:false, active:false, visible:true},\r\n {text:'Sort 3', action:'SORT3', disabled:false, active:false, visible:true}\r\n ]\r\n }\r\n );\r\n\r\n this.dropdownmodel=new ButtonGroup(\r\n {\r\n group:'SORT',\r\n type:'dropdown',\r\n btnclass:'btn-success',\r\n navbar:true,\r\n selection:'single',\r\n visible:true,\r\n items:[\r\n {text:'Item 1', action:'ITEM1', disabled:false, active:false, visible:true},\r\n {text:'Item 2', action:'ITEM2', disabled:false, active:false, visible:true},\r\n {text:'Item 3', action:'ITEM3', disabled:false, active:false, visible:true}\r\n ]\r\n }\r\n );\r\n\r\n this.buttonmodel=new ButtonGroup(\r\n {\r\n group:'BUTTON',\r\n type:'buttons',\r\n btnclass:'btn-success',\r\n navbar:true,\r\n selection:'multiple',\r\n visible:true,\r\n items:[\r\n {text:'Button 1', action:'BUTTON1', disabled:false, active:false, visible:true, candelete:true},\r\n {text:'Button 2', action:'BUTTON2', disabled:false, active:false, visible:true, candelete:true},\r\n {text:'Button 3', action:'BUTTON3', disabled:false, active:false, visible:true, candelete:true}\r\n ]\r\n }\r\n );\r\n\r\n this.listgroupmodel=new ButtonGroup(\r\n {\r\n group:'LISTGROUP',\r\n type:'listgroup',\r\n btnclass:'',\r\n navbar:false,\r\n selection:'multiple',\r\n visible:true,\r\n items:[\r\n {text:'List item 1', action:'LIST1', disabled:false, active:false, visible:true, candelete:true},\r\n {text:'List item 2', action:'LIST2', disabled:false, active:false, visible:true, candelete:true},\r\n {text:'List item 3', action:'LIST3', disabled:false, active:false, visible:true, candelete:true}\r\n ]\r\n }\r\n );\r\n\r\n this.numberplusminusmodel={\r\n value:5,\r\n min:0,\r\n max:10,\r\n visible:true,\r\n enabled:true\r\n };\r\n\r\n }\r\n ngOnDestroy(){\r\n\r\n this.actionsSubscription.unsubscribe();\r\n\r\n }\r\n\r\n gotoNextRecord() {\r\n\r\n this.recordNavigatorComponent.next();\r\n this.saveCancelComponent.disable('cancel');\r\n this.saveCancelComponent.toggle('save');\r\n }\r\n\r\n action(action) {\r\n\r\n switch (action.group) {\r\n case 'search' :\r\n var tag={text:action.value, action:'BUTTON'+(this.buttonmodel.items.length+2), disabled:false, active:false, visible:true, candelete:true};\r\n this.buttonmodel.items.push(tag);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n }\r\n\r\n save() {\r\n\r\n }\r\n\r\n cancel() {\r\n\r\n }\r\n\r\n search(value) {\r\n\r\n }\r\n\r\n filter() {\r\n\r\n }\r\n\r\n position(position) {\r\n\r\n }\r\n\r\n goto(page) {\r\n\r\n }\r\n\r\n add() {\r\n\r\n }\r\n\r\n edit() {\r\n\r\n }\r\n\r\n delete() {\r\n\r\n }\r\n\r\n sort(key) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.actionsService.context=this.cont;\r\n\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

Click me!

\r\n \r\n
\r\n\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { ActionsService } from './../../../../core/services/actions/actions.service';\r\n\r\nimport { ButtonGroup, Visibility, Enablement, Activation, SetValue, Broadcast, AcceptSetValueRequests, AcceptGetValueRequests } from './../../models.class';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n moduleId:module.id,\r\n selector: 'button-group',\r\n templateUrl: 'button-group.component.html',\r\n styleUrls: ['button-group.component.scss']\r\n})\r\nexport class ButtonGroupComponent implements OnInit, Visibility, Enablement, Activation, SetValue, Broadcast, AcceptSetValueRequests, AcceptGetValueRequests {\r\n\r\n @Input()\r\n model: ButtonGroup;\r\n\r\n acceptSetValueObserver :Subscription;\r\n acceptGetValueObserver :Subscription;\r\n\r\n constructor(public actionsService :ActionsService) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy(){\r\n\r\n if (typeof this.acceptSetValueObserver!='undefined') {\r\n this.actionsService.cancelSubscription(this.acceptSetValueObserver);\r\n }\r\n\r\n if (typeof this.acceptGetValueObserver!='undefined') {\r\n this.actionsService.cancelSubscription(this.acceptGetValueObserver);\r\n }\r\n\r\n }\r\n\r\n registerAcceptsSetValue(group) {\r\n\r\n this.acceptSetValueObserver=this.actionsService.registerAcceptsSetValue(\r\n group,\r\n values => {\r\n this.acceptSetValue(values);\r\n },\r\n this\r\n );\r\n\r\n }\r\n\r\n acceptSetValue(values :any) {\r\n\r\n this.setValue(values.key, values.itemkey, values.value);\r\n\r\n }\r\n\r\n registerAcceptsGetValue(group) {\r\n\r\n this.acceptGetValueObserver=this.actionsService.registerAcceptsGetValue(\r\n group,\r\n values => {\r\n this.acceptGetValue(values);\r\n },\r\n this\r\n );\r\n\r\n }\r\n\r\n acceptGetValue(values :any) {\r\n\r\n var index=this.getItemIndex(values.key);\r\n\r\n if (index!=-1) {\r\n }\r\n return this.model.items[index][values.itemkey];\r\n\r\n }\r\n\r\n\r\n action(item) {\r\n\r\n if (this.model.selection=='single') {\r\n this.setActiveIndex(item);\r\n }\r\n else if (this.model.selection=='multiple') {\r\n this.toggleActive(item);\r\n }\r\n\r\n this.broadcast(item);\r\n\r\n }\r\n\r\n delete(item) {\r\n\r\n var index=this.model.items.indexOf(item);\r\n\r\n if (index!=-1) {\r\n item.behaviour='delete';\r\n this.broadcast(item);\r\n\r\n this.model.items.splice(index,1);\r\n }\r\n\r\n };\r\n\r\n broadcast(item?: any) {\r\n\r\n var action={\r\n group:this.model.group,\r\n action:item.action,\r\n behaviour:(typeof item.behaviour!='undefined')?item.behaviour:'click'\r\n };\r\n this.actionsService.broadcast(action);\r\n\r\n }\r\n\r\n getItemIndex(action: string) {\r\n\r\n var i=-1;\r\n\r\n this.model.items.map(\r\n (item, index) => {\r\n if (item.action==action) {\r\n i=index;\r\n return;\r\n }\r\n }\r\n );\r\n return i;\r\n };\r\n\r\n setActiveIndex(item: any) {\r\n\r\n this.model.items.map(\r\n mapitem => { mapitem.active = (mapitem==item)?true:false }\r\n );\r\n\r\n }\r\n\r\n toggleActive(item: any) {\r\n\r\n var index=this.model.items.indexOf(item);\r\n\r\n if (index!=-1) {\r\n this.model.items[index].active=(!this.model.items[index].active);\r\n }\r\n\r\n }\r\n\r\n enable(key :string) {\r\n\r\n this.setValue(key, 'disabled', false);\r\n\r\n }\r\n\r\n disable(key :string) {\r\n\r\n this.setValue(key, 'disabled', true);\r\n\r\n }\r\n\r\n show(key :string) {\r\n\r\n this.setValue(key, 'visible', true);\r\n\r\n }\r\n\r\n hide(key: string) {\r\n\r\n this.setValue(key, 'visible', false);\r\n\r\n }\r\n\r\n toggle(key: string) {\r\n\r\n this.setValue(key, 'visible', 'toggle');\r\n\r\n }\r\n\r\n activate(key: string) {\r\n\r\n this.setValue(key, 'active', true);\r\n\r\n }\r\n\r\n deactivate(key :string) {\r\n\r\n this.setValue(key, 'active', false);\r\n\r\n }\r\n\r\n setValue(key: string, itemkey: string, value) {\r\n\r\n this.model.items.map(\r\n item => {\r\n if (item.action.toLowerCase()==key.toLowerCase()) {\r\n\r\n if (itemkey=='active' && this.model.selection=='single') {\r\n this.setActiveIndex(item);\r\n }\r\n else {\r\n item[itemkey]=(value=='toggle')?(!item[itemkey]):value;\r\n }\r\n return false;\r\n }\r\n }\r\n );\r\n\r\n }\r\n}\r\n","\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","export class CreditRating {\r\n public score: number;\r\n public category: string;\r\n}","import { Component, Input, ViewChild } from '@angular/core';\r\n\r\nimport { ModalDirective } from 'ngx-bootstrap/modal';\r\n\r\n@Component({\r\n selector: 'child-modal',\r\n templateUrl: 'child-modal.component.html'\r\n})\r\nexport class ChildModalComponent {\r\n @Input()\r\n model:any;\r\n @ViewChild('modal')\r\n modal:ModalDirective;\r\n\r\n isVisible:boolean=false;\r\n resolver:any;\r\n\r\n public show():Promise {\r\n // this.modal.show();\r\n\r\n var result=new Promise(\r\n (resolve, reject) => {\r\n\r\n this.modal.show();\r\n this.isVisible=true;\r\n\r\n this.resolver=resolve;\r\n\r\n }\r\n );\r\n\r\n result.then(value => {\r\n this.hide();\r\n });\r\n\r\n return result;\r\n\r\n }\r\n\r\n public hide():void {\r\n this.modal.hide();\r\n this.isVisible=false;\r\n }\r\n\r\n public confirm():void {\r\n this.resolver(true);\r\n\r\n }\r\n\r\n public reject():void {\r\n this.resolver(false);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n

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

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","\r\nimport {timer as observableTimer, Subscription, Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { Router } from '@angular/router';\r\nimport { CONFIGURATION } from \"../configuration/configuration\";\r\n\r\nimport * as moment from 'moment/moment';\r\n\r\nimport { ActionsService } from \"../actions/actions.service\";\r\nimport { TokenService } from \"../token/token.service\";\r\nimport { environment } from '../../../../environments/environment';\r\n\r\nimport { URLS } from '../configuration/configuration.urls';\r\n\r\n@Injectable()\r\nexport class TimedActionService {\r\n\r\n subscription: Subscription;\r\n subscriptionExpired: Subscription;\r\n\r\n subscriptionForceExpire: Subscription;\r\n\r\n constructor(private actionsService: ActionsService, private parentRouter: Router, private tokenService: TokenService) {\r\n\r\n this.registerForceExpirationObserver();\r\n\r\n }\r\n\r\n startTimer() {\r\n\r\n /*\r\n Make sure to only call this method directly if you only want it to start if not already initialised\r\n otherwise call resetTimer()\r\n \r\n A setting for lifetime of 0 indicates that the user will be permanently logged in\r\n */\r\n\r\n if (this.tokenService.lifetime>0 && (!this.subscription || (this.subscription && this.subscription.closed))) {\r\n\r\n this.log('timer started:' + moment().format('h:mm:ss a') + ' lifetime=' + this.tokenService.lifetime);\r\n\r\n // Update the token expires setting (extends token expiry by the lifetime from now)\r\n this.tokenService.updateExpires();\r\n\r\n // Start a timer to broadcast before the token expiration takes place\r\n this.subscription = observableTimer(this.tokenService.lifetime - CONFIGURATION.authentication.expirationCountdown).subscribe(\r\n () => this.broadcastExpirationImpending()\r\n );\r\n\r\n // Start a timer to run on actual token expiration\r\n this.subscriptionExpired = observableTimer(this.tokenService.lifetime).subscribe(\r\n () => {\r\n this.expire();\r\n this.broadcastExpiration();\r\n }\r\n );\r\n\r\n }\r\n\r\n }\r\n\r\n resetTimer() {\r\n\r\n this.log('timer reset');\r\n this.clearTimer();\r\n this.startTimer();\r\n\r\n }\r\n\r\n checkResetTimerOnError(error) {\r\n\r\n /*\r\n Resets the timer where the response status is anything other than 401 and the internet connection is present\r\n */\r\n if (error.status !== 401 && navigator.onLine) {\r\n this.resetTimer();\r\n }\r\n\r\n }\r\n\r\n clearTimer() {\r\n\r\n if (this.subscription) {\r\n this.log('cleared timer subscription');\r\n this.subscription.unsubscribe();\r\n this.subscription = null;\r\n }\r\n\r\n if (this.subscriptionExpired) {\r\n this.log('cleared timer subscriptionExpired');\r\n this.subscriptionExpired.unsubscribe();\r\n this.subscriptionExpired = null;\r\n }\r\n\r\n }\r\n\r\n broadcastExpirationImpending() {\r\n\r\n /*\r\n Components and/or services can subscribe to this action\r\n */\r\n this.actionsService.broadcast(\r\n {\r\n action: 'authentication',\r\n behaviour: 'expiration-impending',\r\n value: true\r\n }\r\n );\r\n\r\n this.log('authentication.expiration-impending:' + moment().format('h:mm:ss a'));\r\n\r\n }\r\n\r\n broadcastExpiration() {\r\n\r\n /*\r\n Components and/or services can subscribe to this action\r\n */\r\n this.actionsService.broadcast(\r\n {\r\n action: 'authentication',\r\n behaviour: 'expiration',\r\n value: true\r\n }\r\n );\r\n\r\n this.log('authentication.expiration:' + moment().format('h:mm:ss a'));\r\n\r\n }\r\n\r\n\r\n registerForceExpirationObserver() {\r\n \r\n // Components and/or services can broadcast this action to force an expiration and redirect\r\n \r\n this.subscriptionForceExpire = this.actionsService.registerObserver(\r\n 'authentication.forceExpiration',\r\n action => this.expire(),\r\n this\r\n );\r\n\r\n }\r\n\r\n expire() {\r\n\r\n this.clearTimer();\r\n this.tokenService.clearUserInformation();\r\n this.parentRouter.navigateByUrl(URLS.Login.route);\r\n\r\n }\r\n\r\n log(message: string) {\r\n\r\n if (!environment.production) {\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { IconComponent } from './components/icon-component/icon-component';\r\nimport { AddressComponent } from './components/address/address.component';\r\nimport { IsMobileService } from './components/is-mobile/is-mobile.service';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\r\nimport { TabsModule } from 'ngx-bootstrap/tabs';\r\nimport { CollapseModule} from 'ngx-bootstrap/collapse';\r\nimport { PopoverModule } from 'ngx-bootstrap/popover';\r\n\r\nimport { ChildModalComponent } from './components/child-modal/child-modal.component';\r\nimport { ControlErrorMessagesComponent } from './components/control-error-messages/control-error-messages.component';\r\nimport { FormErrorMessagesComponent } from './components/form-error-messages/form-error-messages.component';\r\nimport { LoadingComponent } from './components/loading/loading.component';\r\nimport { LoadingModalComponent } from './components/loading-modal/loading-modal.component';\r\nimport { ApplicationHeaderComponent } from './components/application-header/application-header.component';\r\nimport { ApplicationFooterComponent } from './components/application-footer/application-footer.component';\r\n\r\nimport { SortComponent } from './components/toolbar/sort/sort.component';\r\nimport { FilterComponent } from './components/toolbar/filter/filter.component';\r\nimport { SearchComponent } from './components/toolbar/search/search.component';\r\nimport { RecordsetPagerComponent } from './components/toolbar/recordset-pager/recordset-pager.component';\r\nimport { RecordNavigatorComponent } from './components/toolbar/record-navigator/record-navigator.component';\r\nimport { ToolbarComponent } from './components/toolbar/toolbar/toolbar.component';\r\nimport { ButtonGroupComponent } from './components/toolbar/button-group/button-group.component';\r\nimport { AmendmentComponent } from './components/toolbar/amendment/amendment.component';\r\nimport { SaveCancelComponent } from './components/toolbar/save-cancel/save-cancel.component';\r\nimport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\r\nimport { NavbarComponent } from './components/navbar/navbar.component';\r\nimport { FormContainerComponent } from './components/form-container/form-container.component';\r\nimport { SortDirectionComponent } from './components/toolbar/sort-direction/sort-direction.component';\r\nimport { NumberPlusMinusComponent } from './components/number-plus-minus/number-plus-minus.component';\r\n\r\nimport { LoginStatusComponent } from './components/login-status/login-status.component';\r\nimport { BaseFormComponent } from './components/base-form/base-form.component';\r\n\r\nimport { FullnamePipe } from './../shared/pipes/fullname/fullname.pipe';\r\nimport { AddressPipe } from './pipes/address/address.pipe';\r\nimport { SafePipe } from './pipes/safe/safe.pipe';\r\nimport { MinDirective } from './directives/validation/min/min.directive';\r\nimport { MaxDirective } from './directives/validation/max/max.directive';\r\nimport { AnyofDirective } from './directives/validation/anyof/anyof.directive';\r\nimport { MinDateDirective } from './directives/validation/minDate/minDate.directive';\r\nimport { MaxDateDirective } from './directives/validation/maxDate/maxDate.directive';\r\nimport { NonBlankDirective } from './directives/validation/nonBlank/nonBlank.directive';\r\n\r\nimport { PasswordPolicyValidatorDirective } from './directives/validation/password-policy-validator/password-policy-validator.directive';\r\n\r\nimport { SectionContainerComponent } from './components/section-container/section-container.component';\r\nimport { FocusIfDirective } from './directives/focus/focus-if.directive';\r\nimport { SelectAllOnFocusDirective } from './directives/focus/select-all-on-focus.directive';\r\nimport { LoadingObserverComponent } from './components/loading/loading-observer.component';\r\nimport { FormGeneratorComponent } from './components/form-generator/form-generator.component';\r\nimport { HelpPanelComponent } from './components/help-panel/help-panel.component';\r\nimport { ValidInvalidIconComponent } from './components/valid-invalid-icon/valid-invalid-icon.component';\r\nimport { CustomRadioButtonComponent } from './components/custom-radio-button/custom-radio-button.component';\r\nimport { YesOrNoComponent } from './components/custom-radio-button/yes-or-no.component';\r\nimport { DropzoneComponent } from './components/dropzone/dropzone.component';\r\nimport { FileUploadModule } from 'ng2-file-upload';\r\nimport { DocumentListerComponent } from './components/document-lister/document-lister.component';\r\nimport { ProductLinkDirective } from './components/product-link/product-link.component';\r\nimport { IsMobileDirective } from './components/is-mobile/is-mobile.directive';\r\nimport { TelephoneComponent } from './telephone/telephone.component';\r\nimport { SectionChildContainerComponent } from './components/section-child-container/section-child-container.component';\r\nimport { AddressLookupComponent } from './components/address-lookup/address-lookup.component';\r\nimport { ElementHeightDirective } from './directives/element-height/element-height.directive';\r\nimport { ChangePasswordComponent } from './components/change-password/change-password.component';\r\nimport { NotFoundComponent } from './components/not-found/not-found.component';\r\nimport { SavingAlertComponent } from './components/saving-alert/saving-alert.component';\r\nimport { PropertiesPanelComponent } from './components/properties-panel/properties-panel.component';\r\nimport { SectionHeadingsComponent } from './components/section-headings/section-headings.component';\r\nimport { VehicleDisplayComponent } from './components/vehicle-display/vehicle-display.component';\r\nimport { ShowVehicleComponent } from './components/show-vehicle/show-vehicle.component';\r\nimport { SuggestFinanceComponent } from './components/suggest-finance/suggest-finance.component';\r\nimport { DesktopWarningComponent } from './components/desktop-warning/desktop-warning.component';\r\n\r\nimport { BackwardButtonComponent } from './components/backward-button/backward-button.component';\r\nimport { ForwardButtonComponent } from './components/forward-button/forward-button.component';\r\n\r\nimport { NgxPageScrollCoreModule } from 'ngx-page-scroll-core';\r\nimport { NgxPageScrollModule } from 'ngx-page-scroll';\r\nimport { ButtonWithInvalidSectionsPopupComponent } from './components/button-with-invalid-sections-popup/button-with-invalid-sections-popup.component';\r\nimport { CollapsableContainerComponent } from './components/collapsable-container/collapsable-container.component';\r\nimport { PageSizeSelectionComponent } from './components/page-size-selection/page-size-selection.component';\r\nimport { OrderBySelectorComponent } from './components/order-by-selector/order-by-selector.component';\r\nimport { RibbonComponent } from './components/ribbon/ribbon.component';\r\nimport { PrivacyPolicyComponent } from './components/privacy-policy/privacy-policy.component';\r\nimport { CreditplusPrivacyPolicyComponent } from './components/creditplus-privacy-policy/creditplus-privacy-policy.component';\r\nimport { DealerplusPrivacyPolicyComponent } from './components/dealerplus-privacy-policy/dealerplus-privacy-policy.component';\r\nimport { ComparecarfinancePrivacyPolicyComponent } from './components/comparecarfinance-privacy-policy/comparecarfinance-privacy-policy.component';\r\nimport { ProgressBarComponent } from './components/progress-bar/progress-bar.component';\r\nimport { VehicleSummaryComponent } from './components/vehicle-summary/vehicle-summary.component';\r\nimport { PanoramicViewerComponent } from './components/panoramic-viewer/panoramic-viewer.component';\r\n@NgModule({\r\n imports: [\r\n CommonModule, ReactiveFormsModule, FormsModule, RouterModule,\r\n ModalModule.forRoot(), TabsModule.forRoot(), AccordionModule.forRoot(), CollapseModule.forRoot(), PopoverModule.forRoot(),\r\n FileUploadModule, NgxPageScrollCoreModule, NgxPageScrollModule],\r\n declarations: [\r\n ChildModalComponent, FormErrorMessagesComponent, ControlErrorMessagesComponent,\r\n LoadingModalComponent, LoadingComponent, LoadingObserverComponent,\r\n SortComponent, FilterComponent, SearchComponent, RecordsetPagerComponent, RecordNavigatorComponent, ToolbarComponent,\r\n ButtonGroupComponent, AmendmentComponent, SaveCancelComponent, BreadcrumbComponent, NavbarComponent, FormContainerComponent,\r\n SortDirectionComponent, NumberPlusMinusComponent, LoginStatusComponent, BaseFormComponent, FullnamePipe, AddressPipe,\r\n ApplicationHeaderComponent, ApplicationFooterComponent, MinDirective, MaxDirective, AnyofDirective, PasswordPolicyValidatorDirective,\r\n MinDateDirective, MaxDateDirective, NonBlankDirective, SectionContainerComponent, FocusIfDirective, VehicleDisplayComponent,\r\n ShowVehicleComponent, SuggestFinanceComponent,\r\n SelectAllOnFocusDirective, FormGeneratorComponent, HelpPanelComponent, ValidInvalidIconComponent, CustomRadioButtonComponent,\r\n YesOrNoComponent, DropzoneComponent, DocumentListerComponent, ProductLinkDirective, IsMobileDirective, TelephoneComponent,\r\n AddressLookupComponent, AddressComponent, SafePipe, SectionChildContainerComponent, ElementHeightDirective,\r\n IconComponent, ChangePasswordComponent, NotFoundComponent, SavingAlertComponent, PropertiesPanelComponent,\r\n SectionHeadingsComponent, BackwardButtonComponent, ForwardButtonComponent, ButtonWithInvalidSectionsPopupComponent,\r\n CollapsableContainerComponent, PageSizeSelectionComponent, PageSizeSelectionComponent, OrderBySelectorComponent, RibbonComponent, \r\n PrivacyPolicyComponent, CreditplusPrivacyPolicyComponent, DealerplusPrivacyPolicyComponent, ComparecarfinancePrivacyPolicyComponent, ProgressBarComponent,\r\n VehicleSummaryComponent, DesktopWarningComponent, PanoramicViewerComponent\r\n ],\r\n providers: [IsMobileService],\r\n exports: [\r\n CommonModule, ReactiveFormsModule, FormsModule, TabsModule, AccordionModule,\r\n ChildModalComponent, FormErrorMessagesComponent, ControlErrorMessagesComponent,\r\n LoadingModalComponent, LoadingComponent, LoadingObserverComponent,\r\n SortComponent, FilterComponent, SearchComponent, RecordsetPagerComponent, RecordNavigatorComponent, ToolbarComponent,\r\n ButtonGroupComponent, AmendmentComponent, SaveCancelComponent, BreadcrumbComponent, NavbarComponent, PanoramicViewerComponent, FormContainerComponent,\r\n SortDirectionComponent, NumberPlusMinusComponent, LoginStatusComponent, FullnamePipe, AddressPipe,\r\n ApplicationHeaderComponent, ApplicationFooterComponent, MinDirective, MaxDirective, AnyofDirective, PasswordPolicyValidatorDirective,\r\n MinDateDirective, NonBlankDirective, SectionContainerComponent, FocusIfDirective, VehicleDisplayComponent, ShowVehicleComponent,\r\n SuggestFinanceComponent, SelectAllOnFocusDirective, FormGeneratorComponent, HelpPanelComponent, ValidInvalidIconComponent,\r\n CustomRadioButtonComponent, YesOrNoComponent, DropzoneComponent, DocumentListerComponent, ProductLinkDirective, TelephoneComponent,\r\n AddressLookupComponent, AddressComponent, SafePipe, SectionChildContainerComponent, ElementHeightDirective, IconComponent,\r\n ChangePasswordComponent, NotFoundComponent, SavingAlertComponent, PropertiesPanelComponent,\r\n SectionHeadingsComponent, BackwardButtonComponent, ForwardButtonComponent, ButtonWithInvalidSectionsPopupComponent,\r\n CollapsableContainerComponent, PageSizeSelectionComponent, OrderBySelectorComponent,RibbonComponent,PrivacyPolicyComponent,\r\n CreditplusPrivacyPolicyComponent, DealerplusPrivacyPolicyComponent, ComparecarfinancePrivacyPolicyComponent, ProgressBarComponent,\r\n VehicleSummaryComponent, DesktopWarningComponent\r\n ]\r\n})\r\nexport class SharedModule {\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LoginService } from './../../../core/services/login/login.service'\r\nimport { TokenService } from \"../../../core/services/token/token.service\";\r\nimport { URLS } from '../../../core/services/configuration/configuration.urls';\r\n\r\n\r\n@Component({\r\n selector: 'old-login-status',\r\n templateUrl: 'login-status.component.html'\r\n})\r\n\r\nexport class OldLoginStatusComponent {\r\n\r\n loggedIn: boolean;\r\n username: string;\r\n\r\n subscription: Subscription;\r\n\r\n constructor(private loginService: LoginService, private parentRouter: Router, private tokenService:TokenService) {\r\n\r\n this.subscription = this.loginService.loginStatusAnnounced$.subscribe(loggedIn => { this.loginStatusAnnounced(loggedIn); })\r\n this.loggedIn = this.tokenService.isAuthenticated();\r\n this.username = this.tokenService.userName;\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n this.username = this.tokenService.userName;\r\n\r\n }\r\n\r\n logout() {\r\n\r\n this.loginService.logout();\r\n this.parentRouter.navigateByUrl(URLS.Login.route);\r\n\r\n }\r\n\r\n login() {\r\n\r\n this.parentRouter.navigateByUrl(URLS.Login.route);\r\n\r\n }\r\n\r\n loginStatusAnnounced(loggedIn: boolean) {\r\n\r\n this.loggedIn = loggedIn;\r\n this.username = this.tokenService.userName;\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n}\r\n","
\r\n

Signed in as {{username}}

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

You are currently logged out

\r\n \r\n
\r\n","import { Component, Input, forwardRef, EventEmitter, Output, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'custom-radio-button',\r\n templateUrl: './custom-radio-button.component.html',\r\n styleUrls: ['./custom-radio-button.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CustomRadioButtonComponent),\r\n multi: true,\r\n }]\r\n})\r\nexport class CustomRadioButtonComponent implements ControlValueAccessor {\r\n\r\n @Input()\r\n editing:boolean=true;\r\n\r\n @Input()\r\n label: string;\r\n\r\n @Input()\r\n items: { [key: string]: any; };\r\n \r\n @Output()\r\n selected: EventEmitter = new EventEmitter();\r\n \r\n private propagateChange = (_: any) => {\r\n };\r\n \r\n value?: any;\r\n \r\n /*\r\n If this setting is true then each items key will need to have a string property called content containing popup html \r\n */\r\n @Input()\r\n includeHoverPopups: boolean=false;\r\n\r\n @ViewChild(TemplateRef) popoverTemplate: TemplateRef\r\n popoverHTML :string = '';\r\n\r\n\r\n constructor() { }\r\n\r\n setValue(newValue) {\r\n this.value = newValue;\r\n this.propagateChange(this.value);\r\n this.selected.emit(this.value);\r\n }\r\n\r\n writeValue(obj: any) {\r\n this.value = obj;\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n }\r\n\r\n onShown(item) {\r\n\r\n /*\r\n Popup template content is set in the onShown event triggered when the popup is hovered over. There is only one template reference used as there are issues\r\n otherwise with the popup\r\n */\r\n\r\n this.popoverHTML=item.popoverTemplate;\r\n\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n\r\n
\r\n

{{label}}

\r\n \r\n
\r\n","import { CapDetails } from \"./CapDetails\";\r\n\r\nexport class Vehicle { \r\n Make: string;\r\n Model: string;\r\n IsMock: boolean;\r\n Mileage:number;\r\n Colour:string;\r\n Registration:string;\r\n ImageUrl_Main: string;\r\n ImageUrl_More1: string;\r\n ImageUrl_More2: string;\r\n ImageUrl_More3: string;\r\n ImageUrl_More4: string;\r\n ImageUrl_More5: string;\r\n ImageUrl_More6: string;\r\n ImageUrl_More7: string;\r\n ImageUrl_More8: string;\r\n ImageUrl_More9: string;\r\n Variant: string;\r\n RegistrationYear: number;\r\n Doors: number;\r\n Transmission: string;\r\n TransmissionType: number; // to match G3 leads\r\n FuelType: string;\r\n EngineSizeCC: number;\r\n EngineSize: number;\r\n Price: number;\r\n Description: string;\r\n BodyType: string;\r\n //Id for finding vehicle in database\r\n Id:number;\r\n RetailPrice: number;\r\n MonthlyPrice: number;\r\n CapDetails: CapDetails;\r\n}\r\n\r\nexport class ApplicantVehicle { \r\n make: string;\r\n model: string;\r\n isMock: boolean;\r\n mileage:number;\r\n colour:string;\r\n registration:string;\r\n imageUrl_Main: string;\r\n imageUrl_More1: string;\r\n imageUrl_More2: string;\r\n imageUrl_More3: string;\r\n imageUrl_More4: string;\r\n imageUrl_More5: string;\r\n imageUrl_More6: string;\r\n imageUrl_More7: string;\r\n imageUrl_More8: string;\r\n imageUrl_More9: string;\r\n variant: string;\r\n registrationYear: number;\r\n doors: number;\r\n transmission: string;\r\n transmissionType: number; // to match G3 leads\r\n fuelType: string;\r\n engineSizeCC: number;\r\n price: number;\r\n description: string;\r\n bodyType: string;\r\n //Id for finding vehicle in database\r\n id:number;\r\n retailPrice: number;\r\n monthlyPrice: number;\r\n capDetails: CapDetails;\r\n}\r\n","import { Journeys } from \"./configuration.types\";\r\nimport { JourneyPage } from \"../types\";\r\n\r\nimport { WORKFLOWS } from \"./configuration-workflows\";\r\nimport { SECTIONS } from \"./configuration-sections\";\r\nimport { PAGES } from \"./configuration-pages\";\r\n\r\nimport { CONSUMER_JOURNEY } from \"./configuration-journeys-consumer\";\r\nimport { DEALER_JOURNEY } from \"./configuration-journeys-dealer\";\r\n\r\nimport { ROLES } from \"./configuration-roles\";\r\nimport { PAGE_DISABLED, PAGE_ACTIVE_AND_EDITABLE, PAGE_ENABLED_AND_READONLY } from \"./configuration-page-states\";\r\nimport { URLS } from \"./configuration.urls\";\r\n\r\nconst JOURNEY_TYPES = {\r\n FORWARDS_ONLY: 'FORWARDS_ONLY',\r\n BACKWARDS_AND_FORWARDS: 'BACKWARDS_AND_FORWARDS'\r\n};\r\n\r\nlet JOURNEYS: Journeys = {\r\n FORWARDS_ONLY: {\r\n topMenu: {\r\n show: true,\r\n validInvalidIconStyle: 'NONE',\r\n showActiveItemOnly: false\r\n },\r\n secondaryMenu: {\r\n show: false,\r\n validInvalidIconStyle: 'TICK_AND_WARNING'\r\n },\r\n sectionNavigation: {\r\n validInvalidIconStyle: 'TICK_AND_WARNING',\r\n includeNextSectionButton: false,\r\n sectionCollapse: 'INVALID_OPEN',\r\n gotoFirstInvalidSection: true,\r\n pagingMethod: 'FORWARDS_ONLY' //'BACKWARDS_AND_FORWARDS' // \r\n },\r\n help: {\r\n show: false\r\n },\r\n defaultPastStepState: PAGE_DISABLED,\r\n defaultActiveStepState: PAGE_ACTIVE_AND_EDITABLE,\r\n defaultFutureStepState: PAGE_DISABLED\r\n },\r\n BACKWARDS_AND_FORWARDS: {\r\n topMenu: {\r\n show: true,\r\n validInvalidIconStyle: 'NONE',\r\n showActiveItemOnly: false\r\n },\r\n secondaryMenu: {\r\n show: false,\r\n validInvalidIconStyle: 'NONE'\r\n },\r\n sectionNavigation: {\r\n validInvalidIconStyle: 'TICK_AND_WARNING',\r\n includeNextSectionButton: false,\r\n sectionCollapse: 'INVALID_OPEN',\r\n gotoFirstInvalidSection: true,\r\n pagingMethod: 'BACKWARDS_AND_FORWARDS'\r\n },\r\n help: {\r\n show: true\r\n },\r\n defaultPastStepState: PAGE_ENABLED_AND_READONLY,\r\n defaultActiveStepState: PAGE_ACTIVE_AND_EDITABLE,\r\n defaultFutureStepState: PAGE_DISABLED\r\n }\r\n};\r\n\r\n\r\nconst PAGE_JOURNEYS = [\r\n {\r\n id: 'CONSUMER',\r\n title: 'Standard Consumer journey',\r\n roles: [ROLES.CUSTOMER.name],\r\n pages: CONSUMER_JOURNEY,\r\n description: '',\r\n created: {\r\n on: '25/04/2018',\r\n by: 'Ross Tyler'\r\n },\r\n redirectUrls: {\r\n login: URLS.ApplicationCurrentStep,\r\n register: URLS.ApplicationCurrentStep,\r\n home: URLS.Login\r\n }\r\n },\r\n {\r\n id: 'ADMIN',\r\n title: 'Admin journey',\r\n roles: [ROLES.ADMIN.name],\r\n pages: CONSUMER_JOURNEY,\r\n description: '',\r\n created: {\r\n on: '25/04/2018',\r\n by: 'Ross Tyler'\r\n },\r\n redirectUrls: {\r\n login: URLS.Dealerportal,\r\n register: URLS.Dealerportal,\r\n home: URLS.Dealerportal\r\n }\r\n },\r\n {\r\n id: 'DEALER',\r\n title: 'Standard Dealer Plus journey',\r\n roles: [ROLES.DEALER.name],\r\n pages: DEALER_JOURNEY,\r\n description: '',\r\n created: {\r\n on: '25/04/2018',\r\n by: 'Ross Tyler'\r\n },\r\n redirectUrls: {\r\n login: URLS.Dealerportal,\r\n register: URLS.Dealerportal,\r\n home: URLS.Dealerportal\r\n }\r\n },\r\n {\r\n id: 'DEALER CUSTOMER',\r\n title: 'Standard dealer customer',\r\n roles: [ROLES.DEALER_CUSTOMER.name],\r\n pages: DEALER_JOURNEY,\r\n description: '',\r\n created: {\r\n on: '25/04/2018',\r\n by: 'Ross Tyler'\r\n },\r\n redirectUrls: {\r\n login: URLS.ApplicationCurrentStep,\r\n register: URLS.ApplicationCurrentStep,\r\n home: URLS.Login\r\n }\r\n },\r\n {\r\n id: 'ccf customer',\r\n title: 'Standard CCF journey',\r\n roles: [ROLES.CCF.name],\r\n pages: CONSUMER_JOURNEY,\r\n description: '',\r\n created: {\r\n on: '25/04/2018',\r\n by: 'Ross Tyler'\r\n },\r\n redirectUrls: {\r\n login: URLS.ApplicationCurrentStep,\r\n register: URLS.ApplicationCurrentStep,\r\n home: URLS.Login\r\n }\r\n },\r\n {\r\n id: 'Temporary user',\r\n title: 'Temporary User journey',\r\n roles: [ROLES.TEMP.name],\r\n pages: CONSUMER_JOURNEY,\r\n description: '',\r\n created: {\r\n on: '25/04/2018',\r\n by: 'Ross Tyler'\r\n },\r\n redirectUrls: {\r\n login: URLS.Quotes,\r\n register: URLS.Quotes,\r\n home: URLS.Quotes\r\n }\r\n },\r\n {\r\n id: 'dealerplus customer',\r\n title: 'dealerplus customer journey',\r\n roles: [ROLES.dealerplusCustomer.name],\r\n pages: DEALER_JOURNEY,\r\n description: '',\r\n created: {\r\n on: '18/02/2019',\r\n by: 'Tawfik Sabbagh'\r\n },\r\n redirectUrls: {\r\n login: URLS.Documents,\r\n register: URLS.Quotes,\r\n home: URLS.Quotes\r\n }\r\n }\r\n];\r\n\r\nexport {\r\n PAGES, SECTIONS, JOURNEYS, PAGE_JOURNEYS, JOURNEY_TYPES\r\n};\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n moduleId:module.id,\r\n selector: 'toolbar',\r\n templateUrl: 'toolbar.component.html',\r\n styleUrls: ['toolbar.component.scss']\r\n})\r\nexport class ToolbarComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","\r\n","import { Injectable } from '@angular/core';\r\nimport { ResidentialAddress } from \"../types\";\r\n\r\n@Injectable()\r\nexport class SorterService {\r\n\r\n sort(input:Array): Array{\r\n let list = this.createTemporaryList(input);\r\n return list.sort((first, second) => (first.startDate <= second.startDate) ? 1 : -1);\r\n }\r\n\r\n private createTemporaryList(input:Array): Array {\r\n return Array.from(input);\r\n }\r\n\r\n}\r\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\nimport { init } from 'onfido-sdk-ui';\r\n\r\n\r\n@Component({\r\n selector: 'onfido-sdk',\r\n templateUrl: './onfido-sdk.component.html',\r\n styleUrls: ['./onfido-sdk.component.scss']\r\n})\r\nexport class OnfidoSdkComponent implements OnInit {\r\n\r\n @Input() sdkToken: string;\r\n @Output() onfidoFinished = new EventEmitter();\r\n\r\n \r\n dataHolder: any;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit() {\r\n var Onfido = require('onfido-sdk-ui')\r\n\r\n\r\n Onfido.init({\r\n customUI: {\"colorBorderSurfaceModal\" : \"#fbfbfb\", \"colorBackgroundButtonPrimary\": \"#c50084\",\r\n \"colorContentButtonPrimaryText\": \"white\", \"colorBackgroundButtonPrimaryHover\": \"#c50084\",\r\n \"colorBorderButtonPrimary\" : \"#c50084\", \"colorBackgroundLinkHover\" : \"white\",\r\n \"colorContentLinkTextHover\" : \"black\", \"colorContentBody\" : \"#203757\", \"colorContentTitle\": \"#203757\",\r\n \"colorContentSubtitle\": \"#203757\"},\r\n token: this.sdkToken,\r\n containerId: 'onfido-mount',\r\n onComplete: (data)=> {\r\n this.afterOnfido(data); \r\n },\r\n steps: [\r\n {\"type\" : \"welcome\",\r\n \"options\": {\r\n \"title\" : \"Protect your identity\",\r\n \"descriptions\" : [\"Complete our quick ID check to get your finance accepted and protect you from fraud.\",\r\n \"It's as simple as taking a photo of the front and rear of your driving licence and taking a selfie to verify it's you.\"],\r\n \"nextButton\" : \"Proceed\"\r\n }\r\n },\r\n {\r\n \"type\": \"document\",\r\n \"options\": {\r\n \"documentTypes\": {\r\n \"driving_licence\": {\r\n \"country\": \"GBR\"\r\n }\r\n }\r\n }\r\n },\r\n \"face\"\r\n ]\r\n\r\n })\r\n}\r\n\r\nonfidoEnd(value: string){\r\n //console.log(\"I'm inside the parent element with + \" + value)\r\n}\r\n\r\nafterOnfido(data: any){\r\n //console.log(data);\r\n //console.log(\"This data was in parent thingy\");\r\n this.onfidoFinished.emit(data);\r\n\r\n}\r\n\r\n\r\n}\r\n","
\r\n\r\n","import { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterTestingModule } from \"@angular/router/testing\";\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { By } from '@angular/platform-browser';\r\nimport { LoginService } from './../../../core/services/login/login.service';\r\nimport { UserService } from './../../../core/services/user/user.service';\r\nimport { GlobalModalService } from './../../../core/services/modal/global-modal.service';\r\nimport { ActionsService } from \"../../../core/services/actions/actions.service\";\r\nimport { ApplicationStatusService } from './../../../core/services/application-status/application-status.service';\r\nimport { CreditRatingService } from './../../../core/services/credit-rating/credit-rating.service';\r\nimport { DateService } from './../../../core/services/date/date.service';\r\nimport { SorterService } from './../../../core/services/addressesSorter/address-sorter.service';\r\nimport { ConditionsService } from './../../../core/services/conditions/conditions.service';\r\nimport { AddressLookupService } from './../../../core/services/address-lookup/address-lookup.service';\r\nimport { SectionChildContainerComponent } from './../../../shared/components/section-child-container/section-child-container.component';\r\nimport { HelpPanelComponent } from './../../../shared/components/help-panel/help-panel.component';\r\nimport { ValidInvalidIconComponent } from './../../../shared/components/valid-invalid-icon/valid-invalid-icon.component';\r\nimport { ControlErrorMessagesComponent } from './../../../shared/components/control-error-messages/control-error-messages.component';\r\nimport { IconComponent } from './../../../shared/components/icon-component/icon-component';\r\nimport { CustomRadioButtonComponent } from './../custom-radio-button/custom-radio-button.component';\r\nimport { YesOrNoComponent } from './../custom-radio-button/yes-or-no.component';\r\nimport { BackwardButtonComponent } from './../backward-button/backward-button.component';\r\nimport { FocusIfDirective } from './../../directives/focus/focus-if.directive';\r\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\r\nimport { BaseFormTester } from './base-form.component.spec';\r\n\r\n// import { BankAccount, Answer, Employer, ResidentialAddress, Contact, Identity, Dealer, DemandsAndNeeds, Gap, ProductOption, Warranty, Quote, LoanOffer } from \"../../../core/services/types\";\r\nimport { BankAccount, Employer, ResidentialAddress, Contact, Identity, Dealer, Quote, LoanOffer } from \"../../../core/services/types\";\r\n\r\nclass mockVehicleService {\r\n\r\n}\r\n\r\nclass mockLoginService {\r\n}\r\n\r\nclass mockUserService {\r\n}\r\n\r\nclass mockAddressLookupService {\r\n}\r\n\r\nconst BANK_DETAILS_VALID: BankAccount = {\r\n bankName: 'Abbey National',\r\n accountName: 'Tyler',\r\n accountNumber: '12345678',\r\n sortCode: '123456',\r\n dateOpened: '2017-03-03'\r\n};\r\n\r\nconst BANK_DETAILS_INVALID: BankAccount = {\r\n bankName: '',\r\n accountName: '',\r\n accountNumber: '',\r\n sortCode: '',\r\n dateOpened: ''\r\n};\r\n\r\nconst DEALER_VALID: Dealer = {\r\n name: 'Trotter Independent Trading',\r\n vehicleLink: 'https://portal.autotrader.co.uk',\r\n website: 'https://portal.autotrader.co.uk',\r\n address: {\r\n id: '0',\r\n company: null,\r\n department: null,\r\n buildingNumber: '65',\r\n buildingName: '',\r\n address1: 'Southdown Road',\r\n address2: '',\r\n town: 'Weymouth',\r\n county: 'Dorset',\r\n postcode: 'DT4 9DF',\r\n country: 'UK',\r\n },\r\n contact: {\r\n name: 'John',\r\n telephone: '10305 734 567'\r\n }\r\n};\r\n\r\nconst DEALER_INVALID: Dealer = {\r\n name: '',\r\n address: {\r\n id: '',\r\n company: null,\r\n department: null,\r\n buildingNumber: '',\r\n buildingName: '',\r\n address1: '',\r\n address2: '',\r\n town: '',\r\n county: '',\r\n postcode: '',\r\n country: '',\r\n },\r\n contact: {\r\n name: 'John',\r\n telephone: '10305 734 567'\r\n },\r\n vehicleLink: '',\r\n website: ''\r\n};\r\n\r\nconst IDENTITY_VALID: Identity = {\r\n title: 'Mr',\r\n forename: 'Joe',\r\n surname: 'Bloggs',\r\n dateOfBirth: '2017-12-27',\r\n gender: 'male',\r\n maritalStatus: 'SG',\r\n drivingLicense: 'FULL',\r\n nationality:'British'\r\n};\r\n\r\nconst IDENTITY_INVALID: Identity = {\r\n title: '',\r\n forename: '',\r\n surname: '',\r\n dateOfBirth: '',\r\n gender: '',\r\n maritalStatus: '',\r\n drivingLicense: '',\r\n nationality:'British'\r\n};\r\n\r\nconst ADDRESSES_VALID: ResidentialAddress[] = [\r\n {\r\n id: '0',\r\n buildingNumber: '21',\r\n buildingName: '',\r\n address1: 'Southdown Road',\r\n address2: '',\r\n town: 'Weymouth',\r\n county: 'Dorset',\r\n postcode: 'DT4 9LH',\r\n startDate: new Date('1968-11-16T00:00:00'),\r\n endDate: '2017-12-27',\r\n country: 'UK',\r\n residentialStatus: 'OW'\r\n }\r\n];\r\n\r\nconst ADDRESSES_INVALID: ResidentialAddress[] = [\r\n {\r\n id: '',\r\n buildingNumber: '',\r\n buildingName: '',\r\n address1: '',\r\n address2: '',\r\n town: '',\r\n county: '',\r\n postcode: '',\r\n startDate: new Date('1968-11-16T00:00:00'),\r\n endDate: '',\r\n country: '',\r\n residentialStatus: ''\r\n\r\n }\r\n];\r\n\r\nconst EMPLOYMENT_VALID: Employer[] = [\r\n {\r\n status: 'full-time',\r\n name: 'Test Solutions Ltd.',\r\n jobTitle: 'Testing',\r\n jobIndustry: 'testing',\r\n employmentStatus: 'full time',\r\n JobType : '',\r\n address: {\r\n id: \"0\",\r\n company: null,\r\n department: null,\r\n buildingNumber: '21',\r\n buildingName: '',\r\n address1: 'Southdown Road',\r\n address2: '',\r\n town: 'Weymouth',\r\n county: 'Dorset',\r\n postcode: 'DT4 9DF',\r\n country: 'UK'\r\n },\r\n startDate: new Date('1968-11-16T00:00:00'),\r\n endDate: new Date(),\r\n telephone: '12345'\r\n }\r\n];\r\n\r\nconst EMPLOYMENT_INVALID: Employer[] = [\r\n {\r\n status: '',\r\n name: '',\r\n jobTitle: '',\r\n jobIndustry: '',\r\n JobType : '',\r\n employmentStatus: '',\r\n address: {\r\n id: '0',\r\n company: null,\r\n department: null,\r\n buildingNumber: '',\r\n buildingName: '',\r\n address1: '',\r\n address2: '',\r\n town: '',\r\n county: '',\r\n postcode: '',\r\n country: ''\r\n },\r\n startDate:new Date('1968-11-16T00:00:00'),\r\n endDate: new Date(),\r\n telephone: ''\r\n }\r\n];\r\n\r\nconst INCOME_VALID = {\r\n salary: 0,\r\n monthlyIncome: 0\r\n};\r\n\r\nconst INCOME_INVALID = {\r\n salary: 25000,\r\n monthlyIncome: null\r\n};\r\n\r\nconst EXPENDITURE_VALID = {\r\n mortgage: 0,\r\n councilTax: 0,\r\n utilities: 0,\r\n loans: 0,\r\n other: 0,\r\n broadband: 0,\r\n children: 0,\r\n insurance: 0,\r\n dependents: 0\r\n};\r\n\r\nconst EXPENDITURE_INVALID = {\r\n mortgage: null,\r\n councilTax: null,\r\n utilities: null,\r\n loans: null,\r\n other: null,\r\n broadband: null,\r\n children: null,\r\n insurance: null,\r\n dependents: null\r\n};\r\n\r\nconst VALID_QUOTE: Quote[] = [\r\n {\r\n id: 29,\r\n applicationId: 29,\r\n isSelected: true,\r\n dateReceived: '2017-10-10',\r\n vehicle: {\r\n id: 0,\r\n model: '3 Series 320d',\r\n make: 'BMW',\r\n derivative: '2.0 Zetec',\r\n registration: 'HG04YJV',\r\n dateOfRegistration: '2017-01-01',\r\n newcar: true,\r\n engineSize: 3000,\r\n fuelType: 'Petrol',\r\n transmission: 'Manual',\r\n doors: 5,\r\n colour: 'Gray',\r\n valuation: {\r\n average: 20000,\r\n below: 20000,\r\n clean: 20000,\r\n retail: 20000,\r\n future: 20000\r\n },\r\n mileage: 15000,\r\n price: 11500,\r\n ImageUrl_Main: './assets/bmw.jpg',\r\n capDetails: {\r\n id: 32785,\r\n code: null\r\n }\r\n },\r\n financeRequest: {\r\n loanAmount: 10000,\r\n deposit: {\r\n cash: 1000,\r\n partExchange: {},\r\n total: 1000\r\n },\r\n term: 36,\r\n annualMileage: 15000,\r\n financeType: 'LP'\r\n },\r\n financeResponse: {\r\n }\r\n }\r\n];\r\n\r\nconst INITIAL_VALID_QUOTE: Quote[] = [\r\n {\r\n id: 29,\r\n applicationId: 29,\r\n isSelected: true,\r\n dateReceived: '2017-10-10',\r\n vehicle: {\r\n id: 0,\r\n model: '3 Series 320d',\r\n make: 'BMW',\r\n derivative: '2.0 Zetec',\r\n registration: 'HG04YJV',\r\n dateOfRegistration: '2017-01-01',\r\n newcar: true,\r\n engineSize: 3000,\r\n fuelType: 'Petrol',\r\n transmission: 'Manual',\r\n doors: 5,\r\n colour: 'Gray',\r\n valuation: {\r\n average: 20000,\r\n below: 20000,\r\n clean: 20000,\r\n retail: 20000,\r\n future: 20000\r\n },\r\n mileage: 15000,\r\n price: 11500,\r\n ImageUrl_Main: './assets/bmw.jpg',\r\n capDetails: {\r\n id: 32785,\r\n code: null\r\n }\r\n },\r\n financeRequest: {\r\n loanAmount: 10000,\r\n deposit: {\r\n cash: 1000,\r\n partExchange: {},\r\n total: 1000\r\n },\r\n term: 36,\r\n annualMileage: 15000,\r\n financeType: 'LP'\r\n },\r\n financeResponse: {\r\n }\r\n }\r\n];\r\n\r\n\r\nconst INVALID_QUOTE_VEHICLE: Quote[] = [\r\n {\r\n id: 29,\r\n applicationId: 29,\r\n isSelected: true,\r\n dateReceived: '2017-10-10',\r\n vehicle: {\r\n registration: '',\r\n mileage: 0,\r\n price: 0\r\n },\r\n financeRequest: {\r\n loanAmount: 10000,\r\n deposit: {\r\n cash: 1000,\r\n partExchange: {},\r\n total: 1000\r\n },\r\n term: 36,\r\n annualMileage: 15000,\r\n financeType: 'LP'\r\n },\r\n financeResponse: {\r\n }\r\n }\r\n];\r\n\r\nconst INVALID_QUOTE_FINANCE_REQUEST: Quote[] = [\r\n {\r\n id: 29,\r\n applicationId: 29,\r\n isSelected: true,\r\n dateReceived: '2017-10-10',\r\n vehicle: {\r\n id: 0,\r\n model: '3 Series 320d',\r\n make: 'BMW',\r\n derivative: '2.0 Zetec',\r\n registration: 'HG04YJV',\r\n dateOfRegistration: '2017-01-01',\r\n newcar: true,\r\n engineSize: 3000,\r\n fuelType: 'Petrol',\r\n transmission: 'Manual',\r\n doors: 5,\r\n colour: 'Gray',\r\n valuation: {\r\n average: 20000,\r\n below: 20000,\r\n clean: 20000,\r\n retail: 20000,\r\n future: 20000\r\n },\r\n mileage: 15000,\r\n price: 11500,\r\n ImageUrl_Main: './assets/bmw.jpg',\r\n capDetails: {\r\n id: 32785,\r\n code: null\r\n }\r\n },\r\n financeRequest: {\r\n loanAmount: 10000,\r\n deposit: {\r\n cash: 1000,\r\n partExchange: {},\r\n total: 1000\r\n },\r\n term: 36,\r\n annualMileage: 15000,\r\n financeType: null\r\n },\r\n financeResponse: {\r\n }\r\n }\r\n];\r\n\r\nconst LOAN_OFFER_VALID: LoanOffer[] = [{\r\n id: 3,\r\n lenderid: 100,\r\n lendername: 'CP',\r\n funderReference: '',\r\n // product: 'HP',\r\n image: './assets/CreditPlus.PNG',\r\n status: '',\r\n isSelected: true,\r\n dateReceived: '2017-08-07',\r\n loanOffer: {\r\n // id: 1,\r\n // lender: 'CP',\r\n product: 'HP',\r\n loanAmount: 8500,\r\n requiredProofs: [],\r\n payment: 456.78,\r\n rate: 14,\r\n apr: 0.225,\r\n fees: 360,\r\n balloon: 0,\r\n deposit: 100,\r\n term: 48,\r\n totalPayable: 2342.00\r\n },\r\n errors: null,\r\n commission: {\r\n dealerCut: 500,\r\n totalValue: 1000,\r\n lenderTier: {\r\n lenderId:-2,\r\n tier: 1\r\n }\r\n }\r\n}];\r\n\r\n\r\nconst LOAN_OFFER_INVALID: LoanOffer[] = [{\r\n id: 3,\r\n lenderid: 100,\r\n lendername: 'CP',\r\n funderReference: '',\r\n image: './assets/CreditPlus.PNG',\r\n status: '',\r\n isSelected: true,\r\n dateReceived: '2017-08-07',\r\n loanOffer: {\r\n // id: 1,\r\n // lender: 'CP',\r\n product: 'HP',\r\n requiredProofs: [\r\n {\r\n id: 'DRIVING_LICENSE',\r\n label: 'Driving license',\r\n description: '',\r\n docsRequired: 3\r\n },\r\n {\r\n id: 'PASSPORT',\r\n label: 'UK Passport',\r\n description: '',\r\n docsRequired: 1\r\n }\r\n ],\r\n loanAmount: 8500,\r\n payment: 456.78,\r\n rate: 14,\r\n apr: 0.225,\r\n fees: 360,\r\n balloon: 0,\r\n deposit: 1000,\r\n term: 48,\r\n totalPayable: 2342.00\r\n },\r\n errors: null,\r\n commission: {\r\n dealerCut: 500,\r\n totalValue: 1000,\r\n lenderTier: {\r\n lenderId:-2,\r\n tier: 1\r\n }\r\n }\r\n}\r\n];\r\n\r\n\r\nconst VALID_QUOTE_FOR_WARRANTY: Quote[] = [{\r\n id: 29,\r\n applicationId: 29,\r\n isSelected: true,\r\n dateReceived: '2017-10-10',\r\n vehicle: {\r\n id: 0,\r\n model: '3 Series 320d',\r\n make: 'BMW',\r\n derivative: '2.0 Zetec',\r\n registration: 'HG04YJV',\r\n dateOfRegistration: '2017-01-01',\r\n newcar: true,\r\n engineSize: 3000,\r\n fuelType: 'Petrol',\r\n transmission: 'Manual',\r\n doors: 5,\r\n colour: 'Gray',\r\n valuation: {\r\n average: 20000,\r\n below: 20000,\r\n clean: 20000,\r\n retail: 20000,\r\n future: 20000\r\n },\r\n mileage: 15000,\r\n price: 9500,\r\n ImageUrl_Main: './assets/bmw.jpg',\r\n capDetails: {\r\n id: 32785,\r\n code: null\r\n }\r\n },\r\n financeRequest: {\r\n loanAmount: 6650,\r\n deposit: {\r\n cash: 2850,\r\n partExchange: {},\r\n total: 2850\r\n },\r\n term: 12,\r\n annualMileage: 22000,\r\n financeType: 'LP'\r\n },\r\n financeResponse: {\r\n }\r\n}];\r\n\r\nconst CONSUMER_INFORMATION_VALID = {\r\n secciConfirmed: true\r\n};\r\n\r\nconst CONSUMER_INFORMATION_INVALID = {\r\n secciConfirmed: null\r\n};\r\n\r\n\r\nexport {\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterTestingModule,\r\n HttpClientModule,\r\n CollapseModule,\r\n By,\r\n LoginService,\r\n UserService,\r\n GlobalModalService,\r\n ActionsService,\r\n ApplicationStatusService,\r\n CreditRatingService,\r\n DateService,\r\n SorterService,\r\n ConditionsService,\r\n AddressLookupService,\r\n SectionChildContainerComponent,\r\n HelpPanelComponent,\r\n ValidInvalidIconComponent,\r\n ControlErrorMessagesComponent,\r\n IconComponent,\r\n CustomRadioButtonComponent,\r\n YesOrNoComponent,\r\n BackwardButtonComponent,\r\n FocusIfDirective,\r\n mockVehicleService,\r\n mockLoginService,\r\n mockUserService,\r\n mockAddressLookupService,\r\n BaseFormTester,\r\n BANK_DETAILS_VALID,\r\n BANK_DETAILS_INVALID,\r\n IDENTITY_VALID,\r\n IDENTITY_INVALID,\r\n EMPLOYMENT_VALID,\r\n EMPLOYMENT_INVALID,\r\n ADDRESSES_VALID,\r\n ADDRESSES_INVALID,\r\n INCOME_VALID,\r\n INCOME_INVALID,\r\n EXPENDITURE_VALID,\r\n EXPENDITURE_INVALID,\r\n VALID_QUOTE,\r\n INITIAL_VALID_QUOTE,\r\n INVALID_QUOTE_VEHICLE,\r\n INVALID_QUOTE_FINANCE_REQUEST,\r\n DEALER_VALID,\r\n DEALER_INVALID,\r\n LOAN_OFFER_VALID,\r\n LOAN_OFFER_INVALID,\r\n VALID_QUOTE_FOR_WARRANTY,\r\n CONSUMER_INFORMATION_VALID,\r\n CONSUMER_INFORMATION_INVALID,\r\n BankAccount, Employer, ResidentialAddress, Contact, Identity\r\n}\r\n","const PAGES = {\r\n AGREEMENT: {\r\n label: 'agreement',\r\n route: 'agreement-and-documentation'\r\n },\r\n CONFIRMATION: {\r\n label: 'confirmation',\r\n route: 'loan-offer'\r\n },\r\n DASHBOARD:{\r\n label: 'dashboard',\r\n route: 'dashboard'\r\n },\r\n DEALERPORTAL:{\r\n label: 'dealerportal',\r\n route: 'dealer-portal'\r\n },\r\n DETAILS: {\r\n label: 'details',\r\n route: 'my-details',\r\n },\r\n DOCS:{\r\n label: 'docs',\r\n route: 'docs',\r\n },\r\n EXTRADETAILS:{\r\n label: 'extradetails',\r\n route: 'extra-details'\r\n },\r\n FINAL: {\r\n label: 'final',\r\n route: 'final-page',\r\n },\r\n FINANCEDOCUMENTS:{\r\n label: 'financedocuments',\r\n route: 'documents'\r\n },\r\n HELP:{\r\n label: 'help',\r\n route: 'help'\r\n },\r\n PROOFS:{\r\n label: 'proofs',\r\n route: 'proofs'\r\n },\r\n PROOFVERIFY:{\r\n label: 'proofverify',\r\n route: 'proof-verify'\r\n },\r\n QUOTES: {\r\n label: 'quotes',\r\n route: 'quotes'\r\n },\r\n SETTINGS:{\r\n label: 'settings',\r\n route: 'settings'\r\n },\r\n TERMS: {\r\n label: 'terms',\r\n route: 'terms-and-acceptance'\r\n },\r\n TIMELINE: {\r\n label: 'timeline',\r\n route: 'timeline'\r\n },\r\n MARKETING: {\r\n label: 'marketing',\r\n route: 'marketing'\r\n },\r\n VEHICLES:{\r\n label: 'vehicles',\r\n route: 'vehicles',\r\n },\r\n};\r\nexport {\r\n PAGES\r\n}","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import { Sms, UserService } from './../../../core/services/user/user.service';\r\nimport { AuthenticationResult } from './../../../core/services/login/loginmodels';\r\nimport { LoginService } from './../../../core/services/login/login.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { PasswordConfiguration } from '../../../core/services/configuration/configuration.types';\r\nimport { ApplicationStatusService, ActionsService } from '../../../shared/components/base-form/base-form-testing.barrel.spec';\r\nimport { FavIconService } from '../../../core/services/fav-icon/fav-icon.service';\r\nimport { Title } from '../../../../../node_modules/@angular/platform-browser';\r\nimport { Applicant, Application, Employer, Income } from '../../../core/services/types';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { isElementAccessExpression } from 'typescript';\r\nimport { ApplicantNotes } from '../../../core/services/types-applicantNotes';\r\n\r\n\r\nconst comparecarfinanceDomain = 'comparecarfinance';\r\n\r\n@Component({\r\n selector: 'register-panel',\r\n templateUrl: './register-panel.component.html',\r\n styleUrls: ['./register-panel.component.scss']\r\n})\r\nexport class RegisterPanelComponent {\r\n // start of account card\r\n initialTitle: string = \"Choose from your personalised offer and search our cars\";\r\n initialTitle2: string = \"View your personalised details and search our cars\";\r\n //initialTitle2: string = \"To get personalised finance offers please complete your details\";\r\n employmentAndPhoneTitle:string =\"Get access to over 15 years car & finance experience\";\r\n vehicleTitle:string=\"Choose a car from a dealer or get a quality Creditplus car delivered\";\r\n registrationTitle: string =this.initialTitle;\r\n registrationTitle2: string = this.initialTitle2;\r\n imputValue: boolean = false;\r\n\r\n username: string;\r\n password: string;\r\n passwordError: boolean = true;\r\n display: boolean = true;\r\n\r\n contactId: string;\r\n\r\n currentDate: Date = new Date();\r\n\r\n // start of telephone card1\r\n telephone: string;\r\n telephonePattern = \"^[^0][0-9]{9,10}$\";\r\n\r\n // start of employment card\r\n jobTitle: string;\r\n jobTitleError: boolean = false;\r\n startDate: string;\r\n startDateError: boolean = false;\r\n startDateFutureError: boolean = false;\r\n startDateDuplicateError: boolean = false;\r\n dateHistoryError: boolean = false;\r\n\r\n historyRequiredYears: number;\r\n historyRequiredMonths: number;\r\n\r\n updatingEmployment:boolean = false;\r\n\r\n monthlyIncome: string;\r\n monthlyIncomeError: boolean = false;\r\n companyName: string;\r\n companyNameError: boolean = false;\r\n companyAddress: string;\r\n //loqate entry block inside employment card\r\n buildingNumber: string;\r\n buildingName: string;\r\n addressLine1: string;\r\n addressLine2: string;\r\n town: string;\r\n postCode: string;\r\n\r\n registrationError: string = null;\r\n\r\n vehicleAlreadyFound: boolean = null;\r\n\r\n firstEmploymentAddress: boolean = true;\r\n employmentStatus: string; //now swapped over to referring to employment type, eg, employed, self employed or retired\r\n employmentStatusError: boolean = false;\r\n employmentIndustry: string;\r\n employmentIndustryError: boolean = false;\r\n\r\n employmentAddressSearchResults: any;\r\n\r\n showPassword: boolean = false;\r\n showConfirmPassword: boolean = true;\r\n apiErrorMessages: any[] = [];\r\n registering: boolean = false;\r\n nextPageUrl: string;\r\n passwordPolicy: PasswordConfiguration;\r\n passwordPolicyKey: string;\r\n showRules: boolean = false;\r\n passwordErrors: boolean = true;\r\n permanentUser: boolean = false;\r\n source: string;\r\n passwordCheck: RegExp;\r\n sectionName: string = \"createAccount\";\r\n createAccountComplete: boolean = false;\r\n phoneComplete: boolean = false;\r\n employmentComplete: boolean = false;\r\n affordabilityComplete: boolean = false;\r\n vehicleNeedsComplete: boolean = false;\r\n registrationComplete: boolean = false;\r\n partnerJourney: boolean = true;\r\n application: Application = null;\r\n showEmployment: boolean = false; //need to change to false after testing\r\n showPhone: boolean = false;\r\n showVehicleNeeds:boolean = false;\r\n partnerImgSrc: string = \"/assets/partnerLogos/gocologo_green.png\";\r\n mobileNumberDisabled: boolean = false;\r\n @ViewChild('registerPanel') registerPanel: ElementRef;\r\n @ViewChild('entirePage') entirePage: ElementRef;\r\n @ViewChild('titleBlock') titleBlock: ElementRef;\r\n @ViewChild('accountPanel') accountPanel: ElementRef;\r\n @ViewChild('phonePanel') phonePanel: ElementRef;\r\n @ViewChild('employmentPanel') employmentPanel: ElementRef;\r\n @ViewChild('affordabilityPanel') affordabilityPanel: ElementRef;\r\n @ViewChild('vehicleNeedsPanel') vehicleNeedsPanel: ElementRef;\r\n constructor(private activatedRoute: ActivatedRoute,\r\n private actionsService: ActionsService,\r\n private loginService: LoginService,\r\n private router: Router,\r\n private applicationStatusService: ApplicationStatusService,\r\n private titleService: Title, private favIconService: FavIconService,\r\n private userService: UserService, private http: HttpClient) {\r\n this.activatedRoute.queryParams.subscribe(\r\n params => {\r\n this.username = params['username'];\r\n this.contactId = params['customerId'];\r\n this.permanentUser = params['perm'] ? true : false;\r\n this.source = params['source'];\r\n }\r\n );\r\n this.loginService.logout();\r\n }\r\n\r\n changeTitle(_titleNum){\r\n switch(_titleNum){\r\n case 1:\r\n this.registrationTitle=this.initialTitle;\r\n break;\r\n case 2:\r\n this.registrationTitle=this.employmentAndPhoneTitle;\r\n break;\r\n case 3:\r\n this.registrationTitle=this.vehicleTitle;\r\n break;\r\n default:\r\n this.registrationTitle=this.initialTitle;\r\n break;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.passwordCheck = new RegExp('(?=.{8,})(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*');\r\n if (this.source == null) {\r\n if (window.location.href.indexOf(\"comparecarfinance\") != -1) {\r\n this.source = 'ccf';\r\n }\r\n else if (window.location.href.indexOf(\"dealerplus\") != -1) {\r\n this.source = 'DP';\r\n }\r\n else {\r\n this.source = 'customer';\r\n }\r\n }\r\n var key = this.loginService.getPasswordPolicykey();\r\n this.setPasswordPolicy(key);\r\n this.actionsService.broadcast(\r\n {\r\n action: 'header',\r\n behaviour: 'getId',\r\n value: this.contactId\r\n }\r\n );\r\n this.nextPageUrl = 'applications/' + this.contactId + '/vehicle';\r\n this.titleService.setTitle(\"Register\");\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.employmentStatus = \"\";\r\n this.employmentIndustry = \"\";\r\n }\r\n\r\n getEmploymentAddressAuto() {\r\n this.http.get(environment.base + \"/customer/application/get-employment-address?companyName=\" + this.companyName)\r\n .subscribe((result) => { this.employmentAddressSearchResults = result; this.handleEmploymentAddressResults() });\r\n }\r\n\r\n handleEmploymentAddressResults() {\r\n //return the first active employer that meets company name.\r\n //this may be incorrect company but was asked to import first company for now and let this be handled by\r\n //sales admin team later\r\n var firstActiveEmployer;\r\n for (var i = 0; i < this.employmentAddressSearchResults.items.length; i++) {\r\n if (this.employmentAddressSearchResults.items[i].company_status == \"active\") {\r\n firstActiveEmployer = this.employmentAddressSearchResults.items[i];\r\n break;\r\n }\r\n }\r\n\r\n //clear unused fields\r\n this.addressLine2 = null;\r\n this.buildingName = null;\r\n this.buildingNumber = null;\r\n //populate minimum required fields for auto prop with details found from api\r\n if (firstActiveEmployer!=null){\r\n this.addressLine1 = firstActiveEmployer.address.premises + \" \" + firstActiveEmployer.address.address_line_1; \r\n this.town = firstActiveEmployer.address.locality;\r\n this.postCode = firstActiveEmployer.address.postal_code;\r\n }\r\n else{\r\n this.addressLine1 = \"Not Found\";\r\n this.town = \"Not Found\";\r\n this.postCode = \"Not Found\";\r\n }\r\n\r\n //add created address to applicant details\r\n this.addAddress();\r\n\r\n }\r\n\r\n pickSection(nameIn) {\r\n this.sectionName = nameIn;\r\n if (nameIn == 'createAccount') {\r\n this.goAccount();\r\n }\r\n if (nameIn == 'phone') {\r\n this.goPhone();\r\n }\r\n if (nameIn == 'employment') {\r\n this.goEmployment();\r\n }\r\n if (nameIn == 'affordability') {\r\n this.goAffordability();\r\n }\r\n if (nameIn == 'vehicle-needs'){\r\n this.goVehicleNeeds();\r\n }\r\n }\r\n\r\n showHidePassword() {\r\n if (this.showPassword == true) {\r\n this.showPassword = false;\r\n }\r\n else {\r\n this.showPassword = true;\r\n }\r\n }\r\n\r\n showHideConfirmPassword() {\r\n if (this.showConfirmPassword == true) {\r\n this.showConfirmPassword = false;\r\n }\r\n else {\r\n this.showConfirmPassword = true;\r\n }\r\n }\r\n\r\n checkPassword() {\r\n var password = this.password;\r\n if (/[a-z]/.test(password) == false || /[A-Z]/.test(password) == false ||\r\n /\\d/.test(password) == false || password.length < 8) {\r\n this.passwordError = true;\r\n }\r\n else {\r\n this.passwordError = false;\r\n }\r\n\r\n }\r\n\r\n checkPhoneInput() {\r\n var tempNumber = this.telephone;\r\n for (var i = 0; i < tempNumber.length; i++) {\r\n if (!(tempNumber.charAt(i) >= '0' && tempNumber.charAt(i) <= '9') || (tempNumber.charAt(i) == '0' && i == 0)) {\r\n //console.log(\"invalid character detected at character \" + i);\r\n if (i == 0) {\r\n //console.log(\"telephone string length = \" +tempNumber.length)\r\n if (tempNumber.length == 1) {\r\n tempNumber = \"\"\r\n }\r\n else {\r\n tempNumber = tempNumber.slice(1);\r\n }\r\n }\r\n else if (i == tempNumber.length) {\r\n tempNumber = tempNumber.slice(0, tempNumber.length);\r\n }\r\n else {\r\n //console.log(\"slice(0, i-1) = \" + tempNumber.slice(0, i-1));\r\n tempNumber = tempNumber.slice(0, i) + tempNumber.slice(i + 1);\r\n }\r\n i--;\r\n }\r\n }\r\n //console.log(tempNumber);\r\n var tempMobileNumberDisabled = false;\r\n if (tempNumber.length >= 10) {\r\n tempMobileNumberDisabled = true;\r\n }\r\n setTimeout(() => { this.telephone = tempNumber, this.mobileNumberDisabled = tempMobileNumberDisabled }, 10);\r\n this.application.mainApplicant.contact.telephone = this.telephone;\r\n this.application.mainApplicant.contact.mobile = this.telephone;\r\n }\r\n\r\n checkIncomeInput() {\r\n\r\n var tempNumber = this.enforceNumbersOnly(this.monthlyIncome, true);\r\n setTimeout(() => {\r\n this.monthlyIncome = tempNumber;\r\n if (this.application.mainApplicant.income == null) {\r\n this.application.mainApplicant.income = new Income();\r\n this.application.mainApplicant.income.monthlyIncome = 0;\r\n }\r\n this.application.mainApplicant.income.monthlyIncome = parseFloat(this.monthlyIncome);\r\n //console.log(this.application.mainApplicant);\r\n }, 10);\r\n }\r\n\r\n enforceNumbersOnly(tempNumber: string, isDecimal: boolean) {\r\n const checkDecimal: boolean = isDecimal;\r\n for (var i = 0; i < tempNumber.length; i++) {\r\n if (!(tempNumber.charAt(i) >= '0' && tempNumber.charAt(i) <= '9')) {\r\n if (i == 0) {\r\n if (tempNumber.length == 1) {\r\n tempNumber = \"\"\r\n }\r\n else {\r\n tempNumber = tempNumber.slice(1);\r\n }\r\n }\r\n else if (isDecimal == true && (tempNumber.charAt(i) == '.' || tempNumber.charAt(i) == ',')) {\r\n if (tempNumber.charAt(i) == ',') {\r\n tempNumber = tempNumber.replace(\",\", \".\");\r\n }\r\n isDecimal = false;\r\n i++;\r\n }\r\n else if (i == tempNumber.length) {\r\n tempNumber = tempNumber.slice(0, tempNumber.length);\r\n }\r\n else {\r\n tempNumber = tempNumber.slice(0, i) + tempNumber.slice(i + 1);\r\n }\r\n i--;\r\n }\r\n }\r\n if (checkDecimal == true) {\r\n tempNumber = this.checkDecimal(tempNumber);\r\n }\r\n return tempNumber;\r\n }\r\n\r\n checkDecimal(tempNumber: string) {\r\n for (var i = 0; i < tempNumber.length; i++) {\r\n if (tempNumber.charAt(i) == '.') {\r\n if (i == tempNumber.length) {\r\n tempNumber = tempNumber.slice(0, tempNumber.length);\r\n }\r\n else if (i < tempNumber.length - 3) {\r\n tempNumber = tempNumber.slice(0, i + 3);\r\n }\r\n }\r\n }\r\n return tempNumber;\r\n }\r\n\r\n checkEmploymentType() {\r\n if (this.application.mainApplicant.income == null) {\r\n this.application.mainApplicant.income = new Income();\r\n this.application.mainApplicant.income.monthlyIncome = 0;\r\n }\r\n if (this.employmentStatus == \"SEMP\") {\r\n var addressToCopy = this.application.mainApplicant.addresses[0]\r\n this.addressLine1 = \"\";\r\n if (addressToCopy.buildingName != null && addressToCopy.buildingName.replace(/\\s+/g, '') != \"\") {\r\n this.addressLine1 = addressToCopy.buildingName + \", \";\r\n }\r\n if (addressToCopy.buildingNumber != null && addressToCopy.buildingNumber.replace(/\\s+/g, '') != \"\") {\r\n this.addressLine1 = this.addressLine1 + addressToCopy.buildingNumber + \" \";\r\n }\r\n this.addressLine1 = this.addressLine1 + addressToCopy.address1;\r\n this.addressLine2 = addressToCopy.address2;\r\n this.town = addressToCopy.town;\r\n this.postCode = addressToCopy.postcode;\r\n //console.log(\"self employed address prefilled\")\r\n }\r\n }\r\n\r\n async addAddress() {\r\n //create new employment object\r\n var employmentToAdd = new Employer();\r\n\r\n // only need address info and job industry for employed or self employed periods\r\n if (this.employmentStatus == \"EMP\" || this.employmentStatus == \"SEMP\") {\r\n\r\n employmentToAdd.jobIndustry = this.employmentIndustry;\r\n employmentToAdd.jobTitle = this.jobTitle;\r\n\r\n //instantiate new address type (not a class so can't use new operator)\r\n employmentToAdd.address =\r\n {\r\n id: null,\r\n buildingNumber: null,\r\n buildingName: null,\r\n address2: null,\r\n county: null,\r\n company: null,\r\n department: null,\r\n address1: this.addressLine1,\r\n town: this.town,\r\n postcode: this.postCode\r\n }\r\n //address line 2 only populated for self employed\r\n if (this.employmentStatus == \"SEMP\") {\r\n employmentToAdd.address.address2 = this.addressLine2;\r\n }\r\n }\r\n\r\n employmentToAdd.startDate = new Date(this.startDate);\r\n employmentToAdd.startDate.setMonth(employmentToAdd.startDate.getMonth());\r\n employmentToAdd.name = this.companyName;\r\n employmentToAdd.status= this.employmentStatus;\r\n\r\n if (this.firstEmploymentAddress == true) {\r\n this.firstEmploymentAddress = false;\r\n\r\n if (this.application.mainApplicant.employment == null) {\r\n this.application.mainApplicant.employment = [];\r\n this.application.mainApplicant.employment[0] = employmentToAdd;\r\n }\r\n else {\r\n this.application.mainApplicant.employment[0].address = employmentToAdd.address;\r\n this.application.mainApplicant.employment[0].jobIndustry = employmentToAdd.jobIndustry;\r\n this.application.mainApplicant.employment[0].status = employmentToAdd.status;\r\n this.application.mainApplicant.employment[0].jobTitle = employmentToAdd.jobTitle;\r\n this.application.mainApplicant.employment[0].startDate = employmentToAdd.startDate;\r\n this.application.mainApplicant.employment[0].name = employmentToAdd.name;\r\n this.application.mainApplicant.employment[0].employmentStatus = null;\r\n }\r\n }\r\n\r\n else {\r\n this.application.mainApplicant.employment.push(employmentToAdd);\r\n }\r\n\r\n //console.log(this.application.mainApplicant.employment);\r\n\r\n var dateCheck = new Date(this.startDate);\r\n var dateThreeYearsAgo = new Date();\r\n dateThreeYearsAgo.setFullYear(dateThreeYearsAgo.getFullYear() - 3);\r\n\r\n // make sure we have 3 years worth of history\r\n if (dateCheck < dateThreeYearsAgo) {\r\n //date is older than 3 years ago so can submit form\r\n this.employmentComplete = true;\r\n this.application = await this.userService.updateApplication(this.application, 5).toPromise();\r\n\r\n // if all stages complete\r\n this.sectionName = 'vehicle-needs';\r\n }\r\n else {\r\n //date is newer than 3 years ago so more history required\r\n this.addressLine1 = null;\r\n this.addressLine2 = null;\r\n this.town = null;\r\n this.postCode = null;\r\n this.employmentIndustry = null;\r\n this.employmentStatus = \"\";\r\n this.jobTitle = null;\r\n this.startDate = null;\r\n this.companyName = null;\r\n this.monthlyIncome = null;\r\n this.application.mainApplicant.employment.sort((a, b) => (a.startDate < b.startDate) ? 1 : -1);\r\n this.application.mainApplicant.employment[0].endDate = null;\r\n for (var i = 1; i < this.application.mainApplicant.employment.length; i++) {\r\n this.application.mainApplicant.employment[i].endDate = this.application.mainApplicant.employment[i - 1].startDate;\r\n }\r\n var earliestStartDate = this.application.mainApplicant.employment[this.application.mainApplicant.employment.length-1].startDate;\r\n this.historyRequiredYears = earliestStartDate.getFullYear() - dateThreeYearsAgo.getFullYear();\r\n if (earliestStartDate.getMonth()-dateThreeYearsAgo.getMonth() < 0){\r\n this.historyRequiredYears = this.historyRequiredYears - 1;\r\n this.historyRequiredMonths = 12 + (earliestStartDate.getMonth()-dateThreeYearsAgo.getMonth())\r\n }\r\n else{\r\n this.historyRequiredMonths = earliestStartDate.getMonth()-dateThreeYearsAgo.getMonth();\r\n }\r\n }\r\n //console.log(this.application.mainApplicant.employment);\r\n }\r\n\r\n async submit() {\r\n this.display = false;\r\n this.registrationError = null;\r\n try {\r\n this.registering = true;\r\n this.apiErrorMessages = [];\r\n if (this.source == null) {\r\n if (window.location.href.toLowerCase().indexOf(comparecarfinanceDomain) != -1) {\r\n this.source = 'ccf customer';\r\n }\r\n else if (window.location.href.indexOf(\"dealerplus\") != -1) {\r\n this.source = 'DP';\r\n }\r\n else {\r\n this.source = 'customer';\r\n }\r\n\r\n }\r\n let registrationResult: AuthenticationResult = await this.loginService.register(this.username, this.contactId, this.password, this.source).toPromise();\r\n if (this.isValidAnswer(registrationResult)) {\r\n this.loginService.setUserInformation(registrationResult);\r\n\r\n const app = await this.userService.getItem(this.contactId.toString()).toPromise();\r\n this.application = app.applications[0];\r\n\r\n //if (this.application.mainApplicant.employment[0].address != null) {\r\n // this.showEmployment = this.application.mainApplicant.employment[0].address.postcode ? false : true;\r\n //}\r\n //else{\r\n // this.showEmployment = true;\r\n //}\r\n\r\n this.showVehicleNeeds = true;\r\n\r\n this.showPhone = this.application.mainApplicant.contact.mobile == null || this.application.mainApplicant.contact.mobile.length < 5 ? true : false;\r\n\r\n //I'm not sure if the employment details are always going to be null, but they bug out the code normally so they're in this try block to stop them interfering \r\n //with the rest of the registering process\r\n try {\r\n this.jobTitle = this.application.mainApplicant.employment[0].jobTitle;\r\n this.monthlyIncome = this.application.mainApplicant.income.monthlyIncome.toString();\r\n this.buildingName = this.application.mainApplicant.employment[0].address.buildingName;\r\n this.buildingNumber = this.application.mainApplicant.employment[0].address.buildingNumber;\r\n\r\n this.companyName = this.application.mainApplicant.employment[0].name;\r\n }\r\n catch (error) {\r\n //no employment details provided\r\n }\r\n\r\n this.telephone = this.application.mainApplicant.contact.mobile;\r\n this.createAccountComplete = true;\r\n\r\n if ((this.showEmployment == false && this.showPhone == false)) {\r\n this.sectionName = \"vehicle-needs\"\r\n this.pickSection(\"vehicle-needs\");\r\n }\r\n else if (this.showPhone == false && this.showEmployment == true) {\r\n this.sectionName = \"employment\";\r\n this.pickSection(\"employment\");\r\n \r\n }\r\n else if (this.showPhone == true) {\r\n this.sectionName = \"phone\";\r\n this.pickSection(\"phone\");\r\n }\r\n }\r\n }\r\n catch (error) {\r\n if(error==null){\r\n return;\r\n }\r\n this.registering = false;\r\n if (error.status == 422) {\r\n\r\n for (var i = 0; error.error.length > i; i++){\r\n if (error.error[i].code == \"010105\"){ \r\n this.registrationError = \"A portal account has already been linked to this email address\";\r\n }\r\n else if (error.error[i].code == \"010106\"){ \r\n //this.registrationError = \"A portal account already exists for this reference number\";\r\n //break;\r\n }\r\n }\r\n this.apiErrorMessages = error\r\n }\r\n else {\r\n if (error != null) {\r\n throw {\r\n customError: {\r\n errorConfiguration: this.applicationStatusService.configuration.errors.generic,\r\n error: error\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private editEmployment(index: number) {\r\n this.updatingEmployment = true;\r\n this.employmentStatus = this.application.mainApplicant.employment[index].status;\r\n this.startDate = this.application.mainApplicant.employment[index].startDate.getFullYear() +\r\n \"-\" + (this.application.mainApplicant.employment[index].startDate.getMonth() + 1);\r\n if (this.employmentStatus == 'SEMP') {\r\n this.addressLine1 = this.application.mainApplicant.employment[index].address.address1;\r\n this.addressLine2 = this.application.mainApplicant.employment[index].address.address2;\r\n this.postCode = this.application.mainApplicant.employment[index].address.postcode;\r\n this.town = this.application.mainApplicant.employment[index].address.town;\r\n this.jobTitle = this.application.mainApplicant.employment[index].jobTitle;\r\n }\r\n else if (this.employmentStatus == 'EMP') {\r\n this.jobTitle = this.application.mainApplicant.employment[index].jobTitle;\r\n this.employmentIndustry = this.application.mainApplicant.employment[index].jobIndustry;\r\n this.companyName = this.application.mainApplicant.employment[index].name;\r\n }\r\n if (this.application.mainApplicant.employment.length > 1) {\r\n this.application.mainApplicant.employment.splice(index, 1);\r\n }\r\n else {\r\n if (this.application.mainApplicant.income!=null && this.application.mainApplicant.income.monthlyIncome!=null){\r\n this.monthlyIncome = this.application.mainApplicant.income.monthlyIncome + \"\";\r\n }\r\n this.application.mainApplicant.employment=null;\r\n this.firstEmploymentAddress = true;\r\n }\r\n }\r\n\r\n private async sendSms() {\r\n\r\n let sms: Sms = {\r\n PhoneNumber: \"000\",\r\n SenderName: \"Creditplus\",\r\n MessageBody: \"GOTO PORTAL https://portal.creditplus.co.uk/login\"\r\n }\r\n\r\n await this.userService.sendSms(sms).toPromise();\r\n }\r\n\r\n private isValidAnswer(result: AuthenticationResult) {\r\n return result\r\n && result.username\r\n && result.bearerToken\r\n && result.id\r\n }\r\n\r\n setPasswordPolicy(passwordPolicyKey: string) {\r\n this.passwordPolicyKey = passwordPolicyKey;\r\n this.passwordPolicy = this.loginService.getPasswordPolicy(passwordPolicyKey);\r\n }\r\n\r\n toggleSecurityRequirement() {\r\n if (this.showRules == true) {\r\n this.showRules = false;\r\n }\r\n else {\r\n this.showRules = true;\r\n }\r\n }\r\n displayErrors() {\r\n this.passwordErrors = true;\r\n }\r\n\r\n getCurrentStep(registrationResult): string {\r\n var result = 'applications/' + this.contactId + '/vehicle';\r\n return result;\r\n }\r\n\r\n complete() {\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n // true for mobile device\r\n //this.router.navigateByUrl('/docs');\r\n } else {\r\n // false for not mobile device\r\n this.sendSms();\r\n this.registrationComplete = true;\r\n\r\n }\r\n }\r\n\r\n broadcastDocumentChangeCSSClass(value: string) {\r\n this.actionsService.broadcast(\r\n {\r\n action: 'document',\r\n behaviour: 'changeCSSClass',\r\n value: value\r\n }\r\n );\r\n this.actionsService.broadcast(\r\n {\r\n action: 'header',\r\n behaviour: 'changeSource',\r\n value: value\r\n }\r\n );\r\n }\r\n\r\n async goAccount() {\r\n setTimeout(() => {\r\n var scrollTopTarget = this.accountPanel.nativeElement.offsetTop - (this.titleBlock.nativeElement.offsetTop + this.titleBlock.nativeElement.offsetHeight) - 5;\r\n this.scrollElement(scrollTopTarget, 0);\r\n }, 10);\r\n }\r\n\r\n async goPhone() {\r\n setTimeout(() => {\r\n var scrollTopTarget = this.phonePanel.nativeElement.offsetTop - (this.titleBlock.nativeElement.offsetTop + this.titleBlock.nativeElement.offsetHeight) - 5;\r\n this.scrollElement(scrollTopTarget, 0);\r\n }, 10);\r\n }\r\n\r\n async goEmployment() {\r\n setTimeout(() => {\r\n var scrollTopTarget = this.employmentPanel.nativeElement.offsetTop - (this.titleBlock.nativeElement.offsetTop + this.titleBlock.nativeElement.offsetHeight) - 5;\r\n this.scrollElement(scrollTopTarget, 0);\r\n }, 10);\r\n }\r\n\r\n async goAffordability() {\r\n setTimeout(() => {\r\n var scrollTopTarget = this.affordabilityPanel.nativeElement.offsetTop - (this.titleBlock.nativeElement.offsetTop + this.titleBlock.nativeElement.offsetHeight) - 5;\r\n this.scrollElement(scrollTopTarget, 0);\r\n }, 10);\r\n }\r\n\r\n async goVehicleNeeds() {\r\n setTimeout(() => {\r\n var scrollTopTarget = this.vehicleNeedsPanel.nativeElement.offsetTop - (this.titleBlock.nativeElement.offsetTop + this.titleBlock.nativeElement.offsetHeight) - 5;\r\n this.scrollElement(scrollTopTarget, 0);\r\n }, 10);\r\n }\r\n\r\n async scrollElement(scrollTopTarget, i) {\r\n\r\n // 30 iterations\r\n if (scrollTopTarget < 0) {\r\n scrollTopTarget = 0;\r\n }\r\n if (i < 30) {\r\n if (i == 29) {\r\n this.registerPanel.nativeElement.scrollTop = scrollTopTarget;\r\n }\r\n else {\r\n var scrollTop = (scrollTopTarget - this.registerPanel.nativeElement.scrollTop) / (30 - i);\r\n this.scrollElementSmoother(i, scrollTop, scrollTopTarget);\r\n }\r\n }\r\n }\r\n\r\n async scrollElementSmoother(i, scrollTop, scrollTopTarget) {\r\n await setTimeout(() => {\r\n this.registerPanel.nativeElement.scrollTop = this.registerPanel.nativeElement.scrollTop + scrollTop;\r\n\r\n i++;\r\n this.scrollElement(scrollTopTarget, i);\r\n }, 5);\r\n }\r\n\r\n redirectToLogin() {\r\n this.router.navigateByUrl('/login');\r\n }\r\n\r\n validatePhoneNumber() {\r\n this.phoneComplete;\r\n this.telephone = \"0\" + this.telephone.toString()\r\n this.submitPhoneNumber();\r\n }\r\n\r\n toggleSecurityRequirementPhoneNumber() {\r\n // logic goes here\r\n }\r\n\r\n async submitPhoneNumber() {\r\n this.application.mainApplicant.contact.telephone = this.telephone;\r\n this.application.mainApplicant.contact.mobile = this.telephone;\r\n this.application = await this.userService.updateApplication(this.application, 5).toPromise();\r\n this.phoneComplete = true;\r\n if (this.showEmployment == true){\r\n this.sectionName = 'employment';\r\n }\r\n else{\r\n this.sectionName = 'vehicle-needs';\r\n }\r\n }\r\n\r\n async validateEmployment() {\r\n if (this.employmentStatus == \"\") {\r\n this.employmentStatusError = true;\r\n }\r\n else {\r\n this.employmentStatusError = false;\r\n }\r\n // if not an employment period, don't collect employment details\r\n if (this.employmentStatus == 'STD' || this.employmentStatus == 'RT' || this.employmentStatus == 'UNEMP' || this.employmentStatus == 'OTHER') {\r\n this.employmentIndustry = \"\";\r\n this.employmentIndustryError = false;\r\n this.jobTitle = \"\";\r\n this.jobTitleError = false;\r\n this.monthlyIncome = \"\";\r\n this.monthlyIncomeError = false;\r\n this.companyName = \"\";\r\n this.companyNameError = false;\r\n this.addressLine1 = null;\r\n this.addressLine2 = null;\r\n this.town = null;\r\n this.postCode = null;\r\n this.buildingName = null;\r\n this.buildingNumber = null;\r\n }\r\n else {\r\n if (this.employmentIndustry == \"\") {\r\n if (this.employmentStatus == \"EMP\") {\r\n this.employmentIndustryError = true;\r\n }\r\n else {\r\n this.employmentIndustryError = false;\r\n }\r\n }\r\n else {\r\n this.employmentIndustryError = false;\r\n }\r\n if (this.jobTitle == null || this.jobTitle == \"\") {\r\n this.jobTitleError = true;\r\n }\r\n else {\r\n this.jobTitleError = false;\r\n }\r\n if (this.monthlyIncome == null || this.monthlyIncome == \"\") {\r\n if (this.firstEmploymentAddress == true) {\r\n this.monthlyIncomeError = true;\r\n }\r\n else {\r\n this.monthlyIncomeError = false;\r\n }\r\n }\r\n else {\r\n this.monthlyIncomeError = false;\r\n }\r\n if (this.companyName == null || this.companyName == \"\") {\r\n if (this.employmentStatus == \"EMP\") {\r\n this.companyNameError = true;\r\n }\r\n else {\r\n this.companyNameError = false;\r\n }\r\n }\r\n else {\r\n this.companyNameError = false;\r\n }\r\n }\r\n var startDateCheck = new Date(parseInt(this.startDate.split(\"-\")[0]), parseInt(this.startDate.split(\"-\")[1]) - 1);\r\n if (this.startDate == null) {\r\n this.startDateError = true;\r\n }\r\n else if (startDateCheck > new Date()) {\r\n this.startDateFutureError = true;\r\n }\r\n else {\r\n this.startDateError = false;\r\n this.startDateFutureError = false;\r\n }\r\n this.startDateDuplicateError = false;\r\n if (this.firstEmploymentAddress==false && this.application.mainApplicant.employment != null) {\r\n for (var i = 0; i < this.application.mainApplicant.employment.length; i++) {\r\n //console.log(\"start date check = \" + startDateCheck);\r\n //console.log(\"array date = \" + this.application.mainApplicant.employment[i].startDate);\r\n if (this.application.mainApplicant.employment[i].startDate.toString() == startDateCheck.toString()) {\r\n this.startDateDuplicateError = true;\r\n }\r\n }\r\n if (this.startDateDuplicateError == true) {\r\n this.startDateError = true;\r\n }\r\n }\r\n if (this.employmentIndustryError == false && this.employmentStatusError == false && this.jobTitleError == false\r\n && this.companyNameError == false && this.startDateError == false && this.monthlyIncomeError == false) {\r\n this.updatingEmployment = false;\r\n if (this.employmentStatus == 'EMP') {\r\n //console.log(\"going to auto add employed address\")\r\n this.getEmploymentAddressAuto();\r\n }\r\n else {\r\n //console.log(\"going to add other employment address\");\r\n this.addAddress();\r\n }\r\n }\r\n }\r\n\r\n checkInput() {\r\n\r\n if (this.companyName == null || this.companyName == '') {\r\n this.imputValue = false;\r\n }\r\n else {\r\n this.validateCompleteButton();\r\n }\r\n\r\n }\r\n\r\n ValidateDateHistory() {\r\n this.dateHistoryError = true;\r\n var dateCheck = new Date(this.startDate);\r\n var dateThreeYearsAgo = new Date();\r\n dateThreeYearsAgo.setFullYear(dateThreeYearsAgo.getFullYear() - 3);\r\n\r\n // make sure we have 3 years worth of history\r\n if (dateCheck < dateThreeYearsAgo) {\r\n //date is older than 3 years ago so can submit form\r\n this.dateHistoryError = false;\r\n\r\n }\r\n else {\r\n //date is newer than 3 years ago so more history required\r\n this.dateHistoryError = true;\r\n this.imputValue = false;\r\n }\r\n }\r\n\r\n validateCompleteButton() {\r\n\r\n this.ValidateDateHistory();\r\n\r\n if (this.jobTitle == null || this.jobTitle == \"\") {\r\n this.jobTitleError = true;\r\n }\r\n else {\r\n this.jobTitleError = false;\r\n this.imputValue = false;\r\n }\r\n if (this.employmentStatusError == false && this.employmentIndustryError == false && this.jobTitleError == false && this.monthlyIncomeError == false && this.companyNameError == false && this.dateHistoryError == false ) {\r\n this.imputValue = true;\r\n }\r\n }\r\n\r\n submitRegistration() {\r\n //registration saving code here\r\n // decide which page to route to after setting up register\r\n if (this.entirePage.nativeElement.clientWidth >= 700) {\r\n //path to desktop registration page\r\n this.userService.updateApplication(this.application, 5)\r\n this.router.navigate(['/registered']);\r\n\r\n }\r\n else {\r\n //path to login (only available on mobile devices)\r\n this.userService.updateApplication(this.application, 5)\r\n this.router.navigate(['/login']);\r\n }\r\n }\r\n\r\n vehicleFound(found: boolean){\r\n if (found == true){\r\n this.vehicleAlreadyFound = true;\r\n }\r\n else{\r\n this.vehicleAlreadyFound = false;\r\n }\r\n }\r\n\r\n submitVehicleNeeds(){\r\n this.userService.updateVehicleNeeds(this.application.id, this.vehicleAlreadyFound).subscribe(\r\n (result)=>{\r\n if (result==\"ok\"){\r\n this.vehicleNeedsComplete = true;\r\n var customerNote = new ApplicantNotes();\r\n customerNote.contactid = this.application.id;\r\n customerNote.addedBy = 1;\r\n customerNote.addedByUsername = \"portal\";\r\n customerNote.DateAdded = null;\r\n if (this.vehicleAlreadyFound == true){\r\n customerNote.noteSubject = \"Customer has found a car\";\r\n customerNote.note = \"Customer has already found a car they would like to finance.\";\r\n }\r\n else {\r\n customerNote.noteSubject = \"Customer has not found a car\";\r\n customerNote.note = \"Customer may need help finding a new car. Please qualify this lead.\"\r\n } \r\n this.redirectToLogin();\r\n this.userService.createNewNote(customerNote).toPromise();\r\n }\r\n else{\r\n //console.log(result);\r\n }\r\n }\r\n )\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Welcome to
\r\n \r\n \r\n
\r\n
\r\n {{ registrationTitle2 }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
Create Account
\r\n
8
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
E
\r\n
\r\n
\r\n
\r\n
\r\n Your password must include at least 8 characters, a mixture of both uppercase and lowercase letters and a number.\r\n
\r\n
​8
\r\n

\r\n Your password must include at least 8 characters, a mixture of both uppercase and\r\n lowercase letters and a number.\r\n

\r\n
\r\n
\r\n\r\n
\r\n
Create Account
\r\n
\r\n
{{registrationError}}

\r\n If you need help resetting your account, please call 0333 6000 290\r\n
\r\n
\r\n By continuing, you accept that you have read and agree to the Creditplus\r\n Terms & Conditions and\r\n Privacy Policy.\r\n © Creditplus {{currentDate.getFullYear()}}. All rights reserved.\r\n Creditplus is a trading name of Jump Finance Ltd (FRN 953084)\r\n registered in England (Registration Number 12665481. ICO Number ZA768331).\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
Continue
\r\n
\r\n\r\n
\r\n
From your portal account:
\r\n
● See your finance options with personalised offers
\r\n
● Choose from our RAC approved cars, or tell us about a car you've already found
\r\n
\r\n\r\n
\r\n
Mobile Number
\r\n
8
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
+44 (0)
\r\n
\r\n
\r\n
\r\n Mobile number is not valid. Please\r\n enter a valid UK telephone number\r\n
\r\n
\r\n
\r\n
\r\n
​8
\r\n\r\n

To help us verify your identity

\r\n\r\n
​8
\r\n\r\n

To get personalised finance offers

\r\n\r\n
​8
\r\n\r\n

To access our RAC- approved car search

\r\n
\r\n
Next
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Employment\r\n
\r\n
8
\r\n
\r\n
\r\n We need to know three years employment history. Dont worry, your employer will not be\r\n contacted.\r\n
\r\n\r\n
\r\n
\r\n
\r\n
F
\r\n
\r\n {{employer.jobTitle}}
\r\n
\r\n
Student
\r\n
Retired
\r\n
Unemployed
\r\n
Other
\r\n\r\n
\r\n {{\r\n(\"0\" +\r\n (employer.startDate.getMonth()+1)).slice(-2)\r\n }}/{{employer.startDate.getFullYear()}} to\r\n \r\n {{\r\n(\"0\" +\r\n (employer.endDate.getMonth()+1)).slice(-2)\r\n }}/{{employer.endDate.getFullYear()}}\r\n \r\n Current\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Please select an employment type\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
Please enter a job title
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n {{startDate.split(\"-\")[1]}}/{{startDate.split(\"-\")[0].substring(2)}}\r\n
\r\n
\r\n MM/YY\r\n
\r\n
\r\n
Please select a start date
\r\n
\r\n Start date cannot be in the\r\n future\r\n
\r\n
Start date already exists in employment history
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
£
\r\n
\r\n
\r\n Please enter a monthly income\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
Please select an industry
\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n
Please enter a company name
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
Please enter address line 1
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
Please enter town
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
Please enter postcode
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n {{startDate.split(\"-\")[1]}}/{{startDate.split(\"-\")[0].substring(2)}}\r\n
\r\n
\r\n MM/YY\r\n
\r\n
\r\n
Please select a start date
\r\n
\r\n Start date cannot be in the future\r\n
\r\n
Start date already exists in employment history
\r\n
\r\n
\r\n \r\n\r\n
\r\n Complete\r\n Update\r\n
\r\n
0 || historyRequiredMonths > 0\">Three years of employment history is required.
\r\n
0 || historyRequiredMonths > 0\">\r\n Please provide another\r\n 0\">\r\n {{historyRequiredYears}}\r\n year 1\">s\r\n \r\n 0 && historyRequiredMonths > 0\"> and \r\n 0\">\r\n {{historyRequiredMonths}}\r\n month 1\">s\r\n of employment history\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
Vehicle
\r\n
\r\n
Either finance a car you've found at a dealership or choose a quality-checked Creditplus car and get it delivered to your door.


\r\n Have you found the exact vehicle you'd like to buy?
\r\n
\r\n
Yes\r\n
\r\n
\r\n
\r\n
\r\n
No\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Complete
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { CanActivate, Router, ActivatedRouteSnapshot } from '@angular/router';\r\n\r\nimport { TokenService } from '../token/token.service';\r\n\r\nimport { Configuration } from '../configuration/configuration';\r\nimport { JourneyPage } from '../types';\r\nimport { URLS } from '../configuration/configuration.urls';\r\n\r\n@Injectable()\r\nexport class JourneyPageGuard implements CanActivate {\r\n\r\n constructor(private router: Router, private tokenService: TokenService) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot): boolean {\r\n\r\n if (this.checkPageJourneyURL(route)) {\r\n return true;\r\n }\r\n else {\r\n this.router.navigateByUrl(URLS.NotFound.route);\r\n return false;\r\n }\r\n\r\n }\r\n\r\n checkPageJourneyURL(route: ActivatedRouteSnapshot): boolean {\r\n\r\n if (route.params.page == 'current-step') {\r\n return true;\r\n }\r\n\r\n /*\r\n Check to see if the page route exists in the journey pages associated with the user roles\r\n */\r\n var journeyPages: JourneyPage[] = Configuration.loadCurrentJourneyPages(this.tokenService.roles);\r\n\r\n return journeyPages.some(journeyPage => journeyPage.route == route.params.page);\r\n\r\n }\r\n\r\n}","\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { ActionsService } from './../../../core/services/actions/actions.service';\r\n\r\nimport { NumberPlusMinus } from './../models.class';\r\n\r\n@Component({\r\n selector: 'number-plus-minus',\r\n templateUrl: 'number-plus-minus.component.html',\r\n styleUrls: ['number-plus-minus.component.scss']\r\n})\r\nexport class NumberPlusMinusComponent implements OnInit {\r\n\r\n @Input()\r\n model :any;\r\n\r\n constructor() { }\r\n\r\n minus() {\r\n if (this.model.value>this.model.min) {\r\n this.model.value--;\r\n }\r\n\r\n }\r\n\r\n plus() {\r\n if (this.model.value\r\n","import { AuthenticationResult } from './../../../core/services/login/loginmodels';\r\nimport { LoginService } from './../../../core/services/login/login.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Component, ViewChild } from '@angular/core';\r\n\r\nimport { Configuration } from \"../../../core/services/configuration/configuration\";\r\nimport { Form, FormGroup } from '@angular/forms';\r\nimport { PasswordConfiguration } from '../../../core/services/configuration/configuration.types';\r\nimport { Application } from '../../../core/services/types';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'change-password',\r\n templateUrl: './change-password.component.html',\r\n styleUrls: ['./change-password.component.scss']\r\n})\r\nexport class ChangePasswordComponent {\r\n applicationId: string;\r\n password: string;\r\n confirmNewPassword: string;\r\n newPassword: string;\r\n showPassword: boolean = false;\r\n showNewPassword: boolean = false;\r\n showConfirmNewPassword: boolean = false;\r\n passwordChanged: boolean = false;\r\n changingPassword: boolean = false;\r\n passwordPolicy: PasswordConfiguration;\r\n passwordPolicyKey: string;\r\n showHelp: boolean = Configuration.loadCurrentJourneyType().help.show;\r\n\r\n @ViewChild('form') form: FormGroup;\r\n\r\n constructor(private activatedRoute: ActivatedRoute, private loginService: LoginService, private router: Router,\r\n protected titleService: Title) {\r\n }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(\"Change Password\");\r\n var key = this.loginService.getPasswordPolicykey();\r\n this.setPasswordPolicy(key);\r\n this.applicationId=localStorage.getItem(\"currentUser\");\r\n }\r\n\r\n toggleHelp() {\r\n this.showHelp = !this.showHelp;\r\n }\r\n\r\n async submit() {\r\n this.changingPassword = true;\r\n let registrationResult: AuthenticationResult = await this.loginService.changePassword(this.getBody()).toPromise();\r\n if (this.isValidAnswer(registrationResult)) {\r\n this.form.reset();\r\n this.passwordChanged = true;\r\n this.loginService.setUserInformation(registrationResult);\r\n }\r\n this.passwordChanged=true;\r\n setTimeout(()=> {\r\n this.loginService.logout();\r\n this.router.navigateByUrl(\"/login\");\r\n this.changingPassword = false;\r\n }, 2000);\r\n }\r\n\r\n getBody() {\r\n return {\r\n currentPass: this.password,\r\n newPass: this.newPassword\r\n };\r\n }\r\n\r\n closeAlert() {\r\n this.passwordChanged = false;\r\n }\r\n\r\n private isValidAnswer(result: AuthenticationResult) {\r\n return result\r\n && result.username\r\n && result.bearerToken\r\n && result.id\r\n }\r\n\r\n setPasswordPolicy(passwordPolicyKey: string) {\r\n this.passwordPolicyKey = passwordPolicyKey;\r\n this.passwordPolicy = this.loginService.getPasswordPolicy(passwordPolicyKey);\r\n }\r\n\r\n showHidePassword(){\r\n if (this.showPassword==true){\r\n this.showPassword=false;\r\n }\r\n else{\r\n this.showPassword=true;\r\n }\r\n }\r\n\r\n showHideNewPassword(){\r\n if (this.showNewPassword==true){\r\n this.showNewPassword=false;\r\n }\r\n else{\r\n this.showNewPassword=true;\r\n }\r\n }\r\n\r\n showHideConfirmNewPassword(){\r\n if (this.showConfirmNewPassword==true){\r\n this.showConfirmNewPassword=false;\r\n }\r\n else{\r\n this.showConfirmNewPassword=true;\r\n }\r\n }\r\n}","
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
Change password
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
E
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
E
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
E
\r\n
\r\n
\r\n
\r\n
!
\r\n
​8
\r\n

\r\n Your password must include at least 8 characters, a mixture of both uppercase and\r\n lowercase letters and a number.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
Change password
\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n
Your password was succesfully changed.
\r\n
\r\n
\r\n","\r\nimport {filter} from 'rxjs/operators';\r\nimport { Router, NavigationEnd, NavigationStart, NavigationCancel, ResolveEnd, ActivatedRoute } from '@angular/router';\r\nimport { Component, ChangeDetectorRef } from '@angular/core';\r\nimport { ActionsService } from './core/services/actions/actions.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { LoginService } from './core/services/login/login.service';\r\nimport { TokenService } from './core/services/token/token.service';\r\nimport { ApplicationStatusService } from './core/services/application-status/application-status.service';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { FavIconService } from './core/services/fav-icon/fav-icon.service';\r\nimport { GROUPS } from './core/services/configuration/configuration-groups';\r\n\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: 'app.component.html',\r\n styleUrls: ['app.component.scss']\r\n})\r\n\r\nexport class AppComponent {\r\n\r\n isLoading: boolean = false;\r\n routerOutletSubscription: Subscription;\r\n cssClass: string = \"sub-body\";\r\n cssSource: string = 'customer';\r\n logoSource: string = \"customer\";\r\n posStyle: string = \"initial\";\r\n\r\n constructor(private router: Router, private changeDetectorRef: ChangeDetectorRef, private loginService: LoginService,\r\n private actionsService: ActionsService, private tokenService: TokenService, private applicationStatusService: ApplicationStatusService,\r\n private titleService: Title, private favIconService: FavIconService) {\r\n this.routerOutletSubscription = loginService.loginStatusAnnounced$.subscribe(loggedIn => { this.loginStatusAnnounced(loggedIn); });\r\n\r\n router.events.subscribe((val) => {\r\n if (val instanceof NavigationEnd) {\r\n if (router.url.indexOf(\"dashboard\") != -1) {\r\n this.posStyle = 'fixed';\r\n } else {\r\n this.posStyle = 'initial';\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.loginStatusAnnounced(this.tokenService.isAuthenticated());\r\n\r\n this.router.events.pipe(\r\n filter((event) => event instanceof NavigationStart && event.url.indexOf(\"applications\") !== -1))\r\n .subscribe((event) => this.isLoading = true);\r\n\r\n this.router.events.pipe(\r\n filter((event) => event instanceof NavigationStart && !event.url.includes(\"current-step\")))\r\n .subscribe((event) => window['dataLayer'].push({ event: 'navigation', timestamp: new Date().toISOString() }));\r\n\r\n this.router.events.pipe(\r\n filter((event) => event instanceof NavigationStart && event.url.includes(\"login\")))\r\n .subscribe((event) => { this.actionsService.broadcast({ action: 'navigation', behaviour: 'login', value: true }); })\r\n\r\n this.router.events.pipe(\r\n filter((event) => event instanceof NavigationEnd || event instanceof NavigationCancel))\r\n .subscribe((event) => this.isLoading = false);\r\n\r\n if (window.location.href.indexOf(\"dealerplus\") != -1) {\r\n this.cssSource = 'dealer';\r\n } else if (window.location.href.indexOf(\"comparecarfinance\") != -1) {\r\n this.cssSource = 'ccf';\r\n }\r\n\r\n this.cssClass = 'sub-body ' + this.cssSource;\r\n\r\n this.registerChangeCSSClassObserver();\r\n }\r\n\r\n ngAfterViewChecked() {\r\n\r\n this.changeDetectorRef.detectChanges();\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n this.actionsService.cancelSubscription(this.routerOutletSubscription);\r\n\r\n }\r\n\r\n registerChangeCSSClassObserver() {\r\n if (window.location.href.toLowerCase().indexOf(\"comparecarfinance\") != -1) {\r\n this.logoSource = 'ccf customer';\r\n } if (window.location.href.indexOf(\"dealerplus\") != -1) {\r\n this.logoSource = 'dealerplus dealer';\r\n }\r\n this.actionsService.broadcast(\r\n {\r\n action: 'header',\r\n behaviour: 'changeSource',\r\n value: this.logoSource\r\n }\r\n );\r\n\r\n this.routerOutletSubscription = this.actionsService.registerObserver(\r\n 'document.changeCSSClass',\r\n action => {\r\n if (action.value == 'ccf customer') {\r\n this.cssClass = \"sub-body ccf\";\r\n } else if (window.location.href.indexOf(\"dealerplus\") != -1) {\r\n this.cssSource = 'dealer';\r\n } else {\r\n this.cssClass = \"sub-body \" + action.value;\r\n }\r\n },\r\n this\r\n );\r\n }\r\n\r\n loginStatusAnnounced(loggedIn: boolean) {\r\n if (window.location.href.toLowerCase().indexOf(\"dealerplus\") != -1) {\r\n this.setTitleAndFavIcon(\"dealerplus dealer\");\r\n this.broadcastDocumentChangeCSSClass(\"dealerplus dealer\");\r\n }\r\n else if (window.location.href.toLowerCase().indexOf(\"comparecarfinance\") != -1) {\r\n this.broadcastDocumentChangeCSSClass(\"ccf customer\");\r\n this.setTitleAndFavIcon(\"ccf customer\");\r\n } else {\r\n this.broadcastDocumentChangeCSSClass(\"customer\");\r\n this.setTitleAndFavIcon(\"customer\");\r\n }\r\n }\r\n\r\n broadcastDocumentChangeCSSClass(value: string) {\r\n this.actionsService.broadcast(\r\n {\r\n action: 'document',\r\n behaviour: 'changeCSSClass',\r\n value: value\r\n }\r\n );\r\n this.actionsService.broadcast(\r\n {\r\n action: 'header',\r\n behaviour: 'changeSource',\r\n value: value\r\n }\r\n );\r\n }\r\n setTitleAndFavIcon(key: string) {\r\n var foundGroup = Object.keys(GROUPS).find(\r\n (group) => GROUPS[group].name == key\r\n );\r\n var appearance = (foundGroup) ? GROUPS[foundGroup].configuration.appearance : this.applicationStatusService.configuration.appearance;\r\n this.titleService.setTitle(appearance.title);\r\n this.favIconService.set(appearance.favIcon);\r\n\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { Application } from '../../../core/services/types';\r\nimport { QuotesService } from '../../../core/services/quotes/quotes.service';\r\n\r\n@Component({\r\n selector: 'finance-breakdown',\r\n templateUrl: './finance-breakdown.component.html',\r\n styleUrls: ['./finance-breakdown.component.scss']\r\n})\r\nexport class FinanceBreakdownComponent implements OnInit {\r\n @Input() selectedVehicle: any;\r\n @Input() application: Application;\r\n @Output() financeBreakdownClicked = new EventEmitter();\r\n constructor(private quoteService: QuotesService) { }\r\n\r\n MonthlyPayment: number; \r\n TotalAmountPayable: number;\r\n TotalAmountOfCredit: number;\r\n TotalChargesPayable: number;\r\n apr: number;\r\n loanAmount: number;\r\n balloon: number;\r\n term: number;\r\n deposit: number;\r\n financeType: string;\r\n\r\n ngOnInit() {\r\n this.getFinanceCalcs();\r\n }\r\n async getFinanceCalcs(){\r\n const quote = await this.quoteService.getFinanceBreakdown(this.application.id.toString(), this.application.quotes[0].financeRequest, this.selectedVehicle).toPromise();\r\n \r\n this.MonthlyPayment = quote.monthlyPayment;\r\n this.TotalAmountPayable = quote.totalAmountPayable;\r\n this.loanAmount = quote.loanAmount;\r\n this.apr = quote.apr;\r\n this.deposit = quote.deposit;\r\n this.term = quote.term;\r\n this.balloon = quote.balloon;\r\n this.financeType = quote.financeType;\r\n this.TotalChargesPayable = this.TotalAmountPayable - this.loanAmount;\r\n }\r\n\r\n CloseModal(){\r\n this.financeBreakdownClicked.emit(false);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n \r\n

{{application.quotes[0].financeRequest.financeType}} Illustrative Example

\r\n
\r\n
Finance Type
\r\n
{{application.quotes[0].financeRequest.financeType}}
\r\n
\r\n
\r\n
Monthly repayments
\r\n
{{MonthlyPayment | currency:'GBP':true:'1.2-2'}}
\r\n
\r\n
\r\n
Balloon payment
\r\n
{{balloon | currency:'GBP':true:'1.2-2'}}
\r\n
\r\n
\r\n
Term period
\r\n
{{term}}
\r\n
\r\n
\r\n
Cash price
\r\n
{{selectedVehicle.price | currency:'GBP':true:'1.2-2'}}
\r\n
\r\n
\r\n
Cash deposit
\r\n
{{deposit}}
\r\n
\r\n
\r\n
Total amount of credit
\r\n
{{loanAmount | currency:'GBP':true:'1.2-2'}}
\r\n
\r\n
\r\n
Total amount payable
\r\n
{{TotalAmountPayable | currency:'GBP':true:'1.2-2'}}
\r\n
\r\n
\r\n
Representative APR
\r\n
{{apr}}%
\r\n
\r\n
\r\n
Total charges payable
\r\n
{{TotalChargesPayable | currency:'GBP':true:'1.2-2'}}
\r\n
\r\n
\r\n
\r\n
","import { Component, OnInit, ViewChild, ElementRef, Input } from '@angular/core';\r\nimport { Application } from '../../../core/services/types';\r\nimport { LoginService } from './../../../core/services/login/login.service';\r\nimport { TokenService } from './../../../core/services/token/token.service';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { ApplicationStatusService } from '../base-form/base-form-testing.barrel.spec';\r\nimport { CONFIGURATION } from '../../../core/services/configuration/configuration';\r\nimport { CONFIGURATION_CCF } from '../../../core/services/configuration/configuration-groups-ccf';\r\nimport { CONFIGURATION_DEALER } from '../../../core/services/configuration/configuration-groups-dealer';\r\nimport { Router, NavigationEnd } from '../../../../../node_modules/@angular/router';\r\n\r\nconst comparecarfinanceDomain = 'comparecarfinance';\r\nconst dealerplusDomain = 'dealerplus';\r\n\r\n@Component({\r\n moduleId: module.id,\r\n selector: 'application-header',\r\n templateUrl: 'application-header.component.html',\r\n styleUrls: ['application-header.component.scss']\r\n})\r\nexport class ApplicationHeaderComponent implements OnInit {\r\n @Input()\r\n application: Application;\r\n\r\n loggedIn: boolean;\r\n homeRoute: string;\r\n logo: string;\r\n phoneIcon: string;\r\n contact: string;\r\n loginSubscription: Subscription;\r\n routerOutletSubscription: Subscription;\r\n changeLogoSubscription: Subscription;\r\n headerObservers: Subscription[];\r\n cssClass: string;\r\n contactId: number;\r\n cp: boolean = false;\r\n dp: boolean = false;\r\n ccf: boolean = false;\r\n dealerPortal: boolean = false;\r\n @ViewChild('headerbar') headerbar: ElementRef;\r\n @ViewChild('mobilelogo') mobileLogo: ElementRef;\r\n\r\n constructor(private loginService: LoginService, private actionsService: ActionsService, private parentRouter: Router,\r\n private tokenService: TokenService, private applicationStatusService: ApplicationStatusService, private elementRef: ElementRef) {\r\n this.loginSubscription = loginService.loginStatusAnnounced$.subscribe(loggedIn => { this.loginStatusAnnounced(loggedIn); })\r\n this.loginStatusAnnounced(this.tokenService.isAuthenticated());\r\n\r\n // parentRouter.events.subscribe((val) => {\r\n // if (val instanceof NavigationEnd) {\r\n // if (parentRouter.url.indexOf(\"dashboard\") != -1) {\r\n // this.elementRef.nativeElement.ownerDocument.body.style.backgroundColor = '#203757';\r\n // this.headerbar.nativeElement.classList.add(\"dashTestClass\");\r\n // this.headerbar.nativeElement.classList.remove(\"noDashTestClass\");\r\n // this.mobileLogo.nativeElement.style.color = \"#fff\";\r\n // } else {\r\n // this.elementRef.nativeElement.ownerDocument.body.style.backgroundColor = '#fbfbfb';\r\n // this.headerbar.nativeElement.classList.add(\"noDashTestClass\");\r\n // this.headerbar.nativeElement.classList.remove(\"DashTestClass\");\r\n // this.mobileLogo.nativeElement.style.color = \"#c50084\";\r\n // }\r\n // }\r\n // });\r\n }\r\n\r\n\r\n ngOnInit() {\r\n if (window.location.href.indexOf(\"dealerplus\") != -1) {\r\n this.dp = true;\r\n var group = this.applicationStatusService.getGroup(\"dealerplus dealer\");\r\n }\r\n else if (window.location.href.indexOf(\"comparecarfinance\") != -1) {\r\n this.ccf = true;\r\n var group = this.applicationStatusService.getGroup(\"ccf customer\");\r\n }\r\n else {\r\n this.cp = true;\r\n var group = this.applicationStatusService.getGroup(\"customer\");\r\n }\r\n if (group) {\r\n this.logo = group.configuration.appearance.logo;\r\n this.contact = group.configuration.contact.telephone;\r\n }\r\n //this.cssClass = \"navbar-header\";\r\n this.headerObservers = this.actionsService.registerObservers(\r\n ['header.changeCSSClass', 'header.getId', 'navigation.login', 'display.dealer_menu'],\r\n action => {\r\n if (action.action == 'header' && action.behaviour == 'getId') {\r\n this.contactId = action.value;\r\n }\r\n if (action.action == 'navigation' && action.behaviour == 'login') {\r\n this.landingOnLoginPage();\r\n }\r\n if (action.action == 'display') {\r\n this.dealerPortal = action.value\r\n }\r\n },\r\n this\r\n );\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n //this.loginSubscription.unsubscribe();\r\n this.actionsService.cancelSubscriptions([this.routerOutletSubscription, this.changeLogoSubscription]);\r\n }\r\n\r\n landingOnLoginPage() {\r\n this.contactId = null;\r\n }\r\n\r\n\r\n loginStatusAnnounced(loggedIn: boolean) {\r\n this.loggedIn = loggedIn;\r\n this.homeRoute = 'login';\r\n }\r\n\r\n redirectToPortal() {\r\n this.actionsService.broadcast({\r\n action: 'change',\r\n behaviour: 'view',\r\n value: 4\r\n })\r\n if (window.location.href.includes(\"dealer-portal\")) {\r\n this.parentRouter.navigate(['dealer-portal']);\r\n }\r\n else {\r\n this.parentRouter.navigate(['dealer-portal'])\r\n .then(() => {\r\n window.location.reload();\r\n });\r\n }\r\n\r\n }\r\n}\r\n","
\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
","import { Component, Input } from '@angular/core';\r\n\r\nimport { ButtonGroupComponent } from './../button-group/button-group.component';\r\nimport { ButtonGroup } from './../../models.class';\r\nimport { ActionsService } from './../../../../core/services/actions/actions.service';\r\n\r\nconst GROUP='SORTDIRECTION';\r\n\r\n@Component({\r\n selector: 'sort-direction',\r\n templateUrl: 'sort-direction.component.html',\r\n styleUrls: ['sort-direction.component.scss']\r\n})\r\nexport class SortDirectionComponent extends ButtonGroupComponent {\r\n\r\n @Input()\r\n model :ButtonGroup = new ButtonGroup(\r\n {\r\n group:GROUP,\r\n type:'icons',\r\n btnclass:'btn-primary',\r\n navbar:true,\r\n selection:'single',\r\n visible:true,\r\n items:[\r\n {icon:'fa-sort-alpha-asc', action:'ascending', disabled:false, active:true, visible:true},\r\n {icon:'fa-sort-alpha-desc', action:'descending', disabled:false, active:false, visible:true}\r\n ]\r\n }\r\n );\r\n\r\n constructor(public actionsService :ActionsService) {\r\n\r\n super(actionsService);\r\n\r\n this.registerAcceptsSetValue(GROUP);\r\n\r\n }\r\n\r\n}\r\n","\r\n","\r\nclass Document {\r\n clicked: boolean;\r\n id: string;\r\n title: string;\r\n status?: string;\r\n fileName: string;\r\n links: DocumentLink[];\r\n}\r\n\r\nclass DocumentLink {\r\n url: string;\r\n isEsignLink: boolean;\r\n downloadTimestamp: string;\r\n description: string;\r\n}\r\n\r\nexport {\r\n Document, DocumentLink\r\n}","import { Component, EventEmitter, Input, Output, OnChanges } from '@angular/core';\r\nimport { LoanOffer, Application } from '../../../core/services/types';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { UserService } from '../../../core/services/user/user.service';\r\nimport { ApplicationStatusService } from '../../../core/services/application-status/application-status.service';\r\nimport { Subscription } from '../../../../../node_modules/rxjs';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { dealerCommission } from '../../../core/services/types-loan-offer';\r\n\r\n@Component({\r\n selector: 'offers-list-item',\r\n templateUrl: './offers-list-item.component.html',\r\n styleUrls: ['./offers-list-item.component.scss']\r\n})\r\nexport class OffersListItemComponent implements OnChanges {\r\n\r\n @Input()\r\n offer: LoanOffer;\r\n @Input()\r\n application: Application;\r\n @Input()\r\n isLast: boolean;\r\n \r\n commission:dealerCommission;\r\n \r\n @Output()\r\n selectedOffer: EventEmitter = new EventEmitter();\r\n @Output() \r\n updateProposal = new EventEmitter();\r\n\r\n nextPageUrl: string;\r\n currentQuote?;\r\n deposit: number;\r\n offersListObservers: Subscription[];\r\n source: string; \r\n\r\n //for showing/hiding extra details\r\n showExtraDetails:boolean = false;\r\n\r\n constructor(private parentRouter: Router, private userService: UserService,private actionsService: ActionsService,\r\n private applicationStatusService: ApplicationStatusService, protected activatedRoute: ActivatedRoute ) { }\r\n\r\n ngOnInit() {\r\n this.application = this.activatedRoute.snapshot.data[\"application\"];\r\n if (this.application.roles.indexOf(\"dealerplus dealer\") != -1) {\r\n this.source = 'dealer';\r\n }\r\n //console.log(\"not broken\");\r\n this.nextPageUrl = 'applications/' + this.application.id + '/confirmation'\r\n //console.log(\"application id = \" + this.application.id);\r\n }\r\n \r\n acceptOffer() {\r\n this.application.loanProposalResponses.map(offer => {\r\n if(offer.isSelected){\r\n offer.isSelected=false;\r\n }\r\n });\r\n this.application.loanProposalResponses.find(offer => offer.status == \"APPLICATION_ACCEPTED\").isSelected = true;\r\n this.saveQuotes();\r\n }\r\n\r\n async saveQuotes() {\r\n //console.log( \"I'm before application step 6\");\r\n this.application = await this.userService.updateApplication(this.application, 6).toPromise();\r\n //console.log(\"I'm before application step 5\");\r\n this.application = await this.userService.updateApplication(this.application, 5).toPromise(); //broken\r\n //console.log(\"I'm after both update steps\");\r\n this.parentRouter.navigateByUrl(this.nextPageUrl);\r\n //console.log(\"i'm after redirect step\");\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.application == null || this.application.quotes == null) {\r\n throw Error('the application and the quotes should be populated at this stage');\r\n }\r\n \r\n const currentQuote = this.application.quotes.find(q => q.isSelected);\r\n if (currentQuote == null) {\r\n throw Error('At least one quote should have been selected at this stage');\r\n }\r\n\r\n this.deposit = currentQuote.financeResponse.deposit\r\n }\r\n\r\n showMoreDetails(show:boolean){\r\n if (show==true){\r\n this.showExtraDetails=true;\r\n }\r\n else{\r\n this.showExtraDetails=false;\r\n }\r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n\r\n\r\n
\r\n \r\n
J Pre-Approved
\r\n
{{offer.loanOffer.term/12}} year\r\n PCP\r\n HP\r\n
\r\n
\r\n \r\n
\r\n
{{offer.loanOffer.term}} monthly payments of
\r\n
{{offer.loanOffer.payment | currency:'GBP'}}
\r\n
\r\n\r\n
\r\n
\r\n
Deposit:
\r\n
£{{offer.loanOffer.deposit | number : '1.2-2'}}
\r\n
\r\n
\r\n
Vehicle price:
\r\n
£{{offer.loanOffer.loanAmount + offer.loanOffer.deposit | number : '1.2-2'}}
\r\n
\r\n
\r\n
APR:
\r\n
{{offer.loanOffer.apr | number : '1.2-2'}}%
\r\n
\r\n
\r\n
Loan amount:
\r\n
£{{offer.loanOffer.loanAmount | number : '1.2-2'}}
\r\n
\r\n
\r\n
Total cost of credit:
\r\n
£{{offer.loanOffer.totalPayable - offer.loanOffer.loanAmount | number : '1.2-2'}}
\r\n
\r\n
\r\n
Total amount payable:
\r\n
£{{offer.loanOffer.totalPayable | number: '1.2-2'}}
\r\n
\r\n
\r\n
Optional balloon payment:
\r\n
£{{offer.loanOffer.balloon | number: '1.2-2'}}
\r\n
\r\n
\r\n
Annual mileage limit:
\r\n
{{\"NEEDS MILEAGE\"}}
\r\n
\r\n
\r\n\r\n\r\n
\r\n Show more details\r\n
\r\n\r\n
\r\n Show less details\r\n
\r\n \r\n
\r\n \r\n
Reserve
\r\n
\r\n
\r\n","\r\nimport { Condition } from \"../types\";\r\nimport { PageState } from \"./configuration-page-states\";\r\n\r\nclass AuthenticationConfiguration {\r\n public passwordPolicy: PasswordConfiguration;\r\n public expirationCountdown: number;\r\n}\r\n\r\nclass PasswordConfiguration {\r\n public minimumLength: number;\r\n public numbers: boolean;\r\n public letters: boolean;\r\n public specialCharacters: string;\r\n}\r\n\r\n\r\nclass ErrorsConfiguration {\r\n generic: ErrorConfiguration;\r\n notfound: ErrorConfiguration;\r\n unauthorised: ErrorConfiguration;\r\n validationError:ErrorConfiguration;\r\n offline: ErrorConfiguration;\r\n quote_generic: ErrorConfiguration;\r\n quote_validation: ErrorConfiguration;\r\n vehicle_generic: ErrorConfiguration;\r\n vehicle_validation: ErrorConfiguration;\r\n postcode_generic: ErrorConfiguration;\r\n postcode_validation: ErrorConfiguration;\r\n offer_generic: ErrorConfiguration;\r\n offer_validation: ErrorConfiguration;\r\n proofs_upload: ErrorConfiguration;\r\n proofs_delete: ErrorConfiguration;\r\n proofs_download: ErrorConfiguration;\r\n notifications_generic: ErrorConfiguration;\r\n save_generic: ErrorConfiguration;\r\n creditRating_generic: ErrorConfiguration;\r\n}\r\n\r\nclass ErrorConfiguration {\r\n title: string;\r\n popupText: string;\r\n includeExceptioninfo: boolean;\r\n reDirect?: boolean;\r\n type: string;\r\n}\r\n\r\nclass ErrorMessage {\r\n code: string;\r\n message: string;\r\n}\r\n\r\nclass CustomError {\r\n public errorConfiguration: ErrorConfiguration;\r\n public error: any;\r\n}\r\n\r\nclass LookupsConfiguration {\r\n public residentialStatuses: LookupItem;\r\n public titles: LookupItem;\r\n public maritalStatuses: LookupItem;\r\n public gender: LookupItem;\r\n public drivingLicence: LookupItem;\r\n public preferredContactMethods: LookupItem;\r\n public preferredContactTimes: LookupItem;\r\n public employmentStatuses: LookupItem;\r\n}\r\n\r\nclass LookupItem {\r\n public controlType: 'select' | 'buttons';\r\n public items: Array;\r\n}\r\n\r\nclass SelectListItem {\r\n label: string;\r\n value: string;\r\n img?: string;\r\n}\r\n\r\nclass AcceptanceConfiguration {\r\n displayDeclinedResponses: boolean;\r\n displayReferredResponses: boolean;\r\n displayErrorResponses: boolean;\r\n applyTimeout: number;\r\n}\r\n\r\nclass IdentityConfiguration {\r\n minAge: number;\r\n maxAge: number;\r\n}\r\n\r\n\r\nclass EmploymentConfiguration {\r\n minHistoryMonths: number;\r\n}\r\n\r\nclass AddressesConfiguration {\r\n minHistoryMonths: number;\r\n}\r\n\r\nclass NavigationConfiguration {\r\n public validInvalidIconStyle: 'TICK_AND_WARNING' | 'TICK_AND_ITEM_ICON' | 'NONE';\r\n public includeNextSectionButton: boolean;\r\n public sectionCollapse: 'ALL_COLLAPSED' | 'ALL_OPEN' | 'INVALID_OPEN';\r\n public gotoFirstInvalidSection: boolean;\r\n public pagingMethod: 'FORWARDS_ONLY' | 'BACKWARDS_AND_FORWARDS';\r\n}\r\n\r\nclass OutgoingsConfiguration {\r\n public optional: boolean;\r\n}\r\n\r\nclass ContactConfiguration {\r\n public telephone: string;\r\n public telephoneComplaints: string;\r\n public email: string;\r\n public emailComplaints: string;\r\n public address: string;\r\n public defaultPreferredContactMethod: string;\r\n public defaultPreferredContactTime: string;\r\n}\r\n\r\nclass QuotesConfiguration {\r\n public copyVehicleOnAddQuote: boolean;\r\n public copyFinanceRequestOnAddQuote: boolean;\r\n public maximumPermitted: number;\r\n public getQuoteTimeoutCountdown: number;\r\n}\r\n\r\nclass PageSCrollConfiguration {\r\n public adjustHash: boolean;\r\n public offset: number;\r\n public duration: number;\r\n}\r\n\r\nclass HelpConfiguration {\r\n public show: boolean;\r\n}\r\n\r\nclass SaveConfiguration {\r\n public method: 'global' | 'paged' | 'auto';\r\n public savePeriod: number;\r\n}\r\n\r\nclass ProductsConfiguration {\r\n public noThanksId: number;\r\n}\r\n\r\nclass PostcodeLookupConfiguration {\r\n public addressListUrl: string;\r\n public addressDetailUrl: string;\r\n}\r\n\r\nclass FinanceRequestConfiguration {\r\n public maximumLTVPercentage: number;\r\n public minimumLoan: number;\r\n public minimumDeposit: number;\r\n public term: SliderConfiguration;\r\n public annualMileage: SliderConfiguration;\r\n}\r\n\r\nclass BaseRateConfiguration {\r\n public maximumLTVPercentage: number;\r\n public minimumLoan: number;\r\n public minimumDeposit: number;\r\n public term: SliderConfiguration;\r\n public annualMileage: SliderConfiguration;\r\n}\r\n\r\nclass SliderConfiguration {\r\n public minimum: number;\r\n public maximum: number;\r\n public step: number;\r\n}\r\n\r\nclass FinanceOptionConfiguration {\r\n public label: string;\r\n public requiresAnnualMileage: boolean;\r\n public maximumDeposit: number;\r\n public productLink?: string;\r\n public content: string;\r\n public conditions: Condition[];\r\n}\r\n\r\nclass VehicleConfiguration {\r\n public maximumSearchesPermitted: number;\r\n public maximumAgeAtStartOfLoan: number;\r\n public maximumAgeAtEndOfLoan: number;\r\n public maximumMileageAtStartOfLoan: number;\r\n public minRegistrationLength;\r\n public maxRegistrationLength;\r\n}\r\n\r\nclass WarrantyConfiguration {\r\n public maximumAge;\r\n public maximumMileage;\r\n}\r\n\r\nclass CreditRatingConfiguration {\r\n public ratingMethod: 'questions' | 'softSearch'\r\n}\r\n\r\nclass ProofsConfiguration {\r\n public maximumFileSize: number;\r\n public immediateDragDropUpload: boolean;\r\n public immediateFileSelectUpload: boolean;\r\n public confirmFileReplacements: boolean;\r\n public acceptedFileFormats: AcceptedFileFormat[];\r\n}\r\n\r\nclass AcceptedFileFormat {\r\n public label: string;\r\n public extention: string;\r\n public mimeType: string;\r\n}\r\n\r\ndeclare type FinanceOptions = { [type: string]: FinanceOptionConfiguration }\r\n\r\ndeclare type Journeys = { [type: string]: JourneyConfiguration };\r\n\r\nclass MenuConfiguration {\r\n public show: boolean;\r\n public validInvalidIconStyle: 'TICK_AND_WARNING' | 'TICK_AND_ITEM_ICON' | 'NONE';\r\n public showActiveItemOnly?: boolean;\r\n}\r\n\r\nclass AppearanceConfiguration {\r\n public logo: string;\r\n public mobileLogo?: string;\r\n public phoneIcon: string;\r\n public title: string;\r\n public favIcon: string;\r\n}\r\n\r\nclass JourneyConfiguration {\r\n public topMenu: MenuConfiguration;\r\n public secondaryMenu: MenuConfiguration;\r\n public sectionNavigation: NavigationConfiguration;\r\n public help: HelpConfiguration;\r\n public defaultPastStepState: PageState;\r\n public defaultActiveStepState: PageState;\r\n public defaultFutureStepState: PageState;\r\n}\r\n\r\nexport {\r\n AppearanceConfiguration, AuthenticationConfiguration, LookupsConfiguration, LookupItem, SelectListItem, AcceptanceConfiguration, EmploymentConfiguration, AddressesConfiguration, NavigationConfiguration,\r\n OutgoingsConfiguration, IdentityConfiguration, ContactConfiguration, QuotesConfiguration, PageSCrollConfiguration, HelpConfiguration, SaveConfiguration, ProductsConfiguration,\r\n PostcodeLookupConfiguration, FinanceRequestConfiguration, SliderConfiguration, FinanceOptionConfiguration, VehicleConfiguration, WarrantyConfiguration,\r\n FinanceOptions, Journeys, MenuConfiguration, JourneyConfiguration, ErrorsConfiguration, ErrorConfiguration, PasswordConfiguration, CreditRatingConfiguration, ProofsConfiguration\r\n};\r\n","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { LoginService } from './../../../core/services/login/login.service'\r\nimport { TokenService } from \"../../../core/services/token/token.service\";\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { ROLES } from '../../../core/services/configuration/configuration-roles';\r\nimport { URLS } from '../../../core/services/configuration/configuration.urls';\r\n\r\n@Component({\r\n selector: 'login-status',\r\n templateUrl: 'login-status.component.html',\r\n styleUrls: ['login-status.component.scss']\r\n})\r\n\r\nexport class LoginStatusComponent {\r\n\r\n loggedIn: boolean;\r\n accountAccessible: boolean = false;\r\n \r\n username: string;\r\n\r\n subscription: Subscription;\r\n\r\n constructor(private loginService: LoginService, private parentRouter: Router, private tokenService:TokenService) {\r\n\r\n this.subscription = loginService.loginStatusAnnounced$.subscribe(loggedIn => { this.loginStatusAnnounced(loggedIn); })\r\n this.loginStatusAnnounced(this.tokenService.isAuthenticated());\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n this.username = this.tokenService.userName;\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n this.subscription.unsubscribe();\r\n\r\n }\r\n\r\n logout() {\r\n\r\n this.parentRouter.navigateByUrl(URLS.Login.route);\r\n\r\n }\r\n\r\n login() {\r\n\r\n this.parentRouter.navigateByUrl(URLS.Login.route);\r\n\r\n }\r\n\r\n loginStatusAnnounced(loggedIn: boolean) {\r\n\r\n this.loggedIn = loggedIn;\r\n this.username = this.tokenService.userName;\r\n\r\n if (this.loggedIn) {\r\n this.checkAccountIsAccessibleBasedOnRoles();\r\n } \r\n\r\n }\r\n\r\n checkAccountIsAccessibleBasedOnRoles() {\r\n\r\n this.accountAccessible = this.tokenService.roles.some(\r\n (role) => role == ROLES.CUSTOMER.name\r\n );\r\n\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
    \r\n
    \r\n \r\n {{username}} \r\n
  • \r\n Sign out\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
    \r\n
    \r\n \r\n {{username}} \r\n
  • \r\n Sign out\r\n
  • \r\n
\r\n
\r\n
\r\n","import { ApplicationStatusService } from './../application-status/application-status.service';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { Application } from \"../types\";\r\n\r\nimport { ApplicationError } from '../global-error-handler/application-error';\r\n\r\n@Injectable()\r\nexport class CreditRatingService {\r\n\r\n ratingMethod;\r\n\r\n constructor(private applicationStatusService : ApplicationStatusService) { \r\n this.ratingMethod = this.applicationStatusService.configuration.creditRating.ratingMethod;\r\n }\r\n\r\n getSoftSearchRatingScore(application: Application) {\r\n\r\n if (application.creditRating.score == null) {\r\n throw new ApplicationError('No Credit Rating supplied', this.applicationStatusService.configuration.errors.creditRating_generic);\r\n }\r\n\r\n return application.creditRating.score;\r\n\r\n }\r\n\r\n getRating(application: Application): any {\r\n\r\n return this.getSoftSearchRatingScore(application);\r\n }\r\n}\r\n","import { Component, EventEmitter, Output, Input } from '@angular/core';\r\nimport { Configuration } from \"../../../core/services/configuration/configuration\";\r\n\r\n@Component({\r\n selector: 'backward-button',\r\n templateUrl: './backward-button.component.html',\r\n styleUrls: ['./backward-button.component.scss']\r\n})\r\nexport class BackwardButtonComponent {\r\n @Input()\r\n valid:boolean\r\n\r\n @Output()\r\n backward: EventEmitter = new EventEmitter();\r\n\r\n showButton:boolean=Configuration.loadCurrentJourneyType().sectionNavigation.pagingMethod=='BACKWARDS_AND_FORWARDS'?true:false;\r\n\r\n goBackward(){\r\n this.backward.emit();\r\n }\r\n\r\n}\r\n","","import { NgModule } from '@angular/core';\r\n\r\nimport { SharedModule } from './../shared/shared.module';\r\n\r\nimport { LoginRoutingModule } from './login-routing.module';\r\n\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { RegisterComponent } from './components/register/register.component';\r\nimport { ForgottenPasswordComponent } from './components/forgotten-password/forgotten-password.component';\r\nimport { OldLoginStatusComponent } from './components/login-status/login-status.component';\r\nimport { LoginPanelComponent } from './components/login-panel/login-panel.component';\r\n// import { VehicleDisplayComponent } from './components/vehicle-display/vehicle-display.component';\r\n// import { ShowVehicleComponent } from './components/show-vehicle/show-vehicle.component';\r\n// import { SuggestFinanceComponent } from './components/suggest-finance/suggest-finance.component';\r\nimport { RegisterPanelComponent } from './components/register-panel/register-panel.component';\r\nimport { RegistrationCompleteComponent } from './components/registration-complete/registration-complete.component';\r\n\r\n@NgModule({\r\n imports: [SharedModule, LoginRoutingModule],\r\n declarations: [\r\n LoginComponent, OldLoginStatusComponent, RegisterComponent, ForgottenPasswordComponent, LoginPanelComponent,\r\n RegisterPanelComponent,\r\n RegistrationCompleteComponent],\r\n exports: [ ]\r\n})\r\n\r\nexport class LoginModule { }\r\n","import { ApplicationStatusService } from './../../../core/services/application-status/application-status.service';\r\nimport { noop } from 'rxjs';\r\nimport { Component, EventEmitter, forwardRef, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { PATTERNS } from \"../../../core/services/validationservice/validation.config\";\r\nimport { Address } from '../../../core/services/types';\r\nimport { AddressLookupResult } from '../../../core/services/address-lookup/address-lookup';\r\nimport { AddressLookupService } from \"../../../core/services/address-lookup/address-lookup.service\";\r\n\r\n@Component({\r\n selector: 'addressLookup',\r\n template: ` \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n `,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AddressLookupComponent),\r\n multi: true,\r\n }]\r\n})\r\nexport class AddressLookupComponent implements ControlValueAccessor {\r\n @Output() address: EventEmitter
= new EventEmitter
();\r\n\r\n @Input() isInvalid: boolean;\r\n\r\n @Input() id: number;\r\n\r\n addresses: Address[];\r\n\r\n addressLookups: AddressLookupResult[];\r\n\r\n postcode: string;\r\n\r\n status: LookupStatus = LookupStatus.Init;\r\n\r\n lookupStatus = LookupStatus;\r\n\r\n selectedAddress: AddressLookupResult = null;\r\n\r\n private onChangeCallback: (_: any) => void = noop;\r\n\r\n setValue(postcode: any) {\r\n this.writeValue(postcode);\r\n this.onChangeCallback(this.postcode);\r\n }\r\n\r\n writeValue(postcode: any): void {\r\n this.postcode = postcode;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void { }\r\n\r\n setDisabledState(isDisabled: boolean): void { }\r\n\r\n toSearchingStatus() {\r\n this.status = LookupStatus.Searching;\r\n }\r\n\r\n async addressLookup() {\r\n this.status = LookupStatus.Searching;\r\n let addresses = [];\r\n\r\n try {\r\n //addresses = await this.addressLookupService.search(this.postcode).toPromise();\r\n }\r\n catch (error) {\r\n\r\n if (error.status == 404) {\r\n /*\r\n Not found so emit a null address which can then be handled elsewhere to display an error\r\n */\r\n this.address.emit(null);\r\n }\r\n else if (error.status == 422) {\r\n /*\r\n Display any validation errors returned by the service as we aren't expecting any\r\n */\r\n throw {\r\n customError: {\r\n errorConfiguration: this.applicationStatusService.configuration.errors.postcode_validation,\r\n error: error\r\n }\r\n };\r\n }\r\n else {\r\n throw {\r\n customError: {\r\n errorConfiguration: this.applicationStatusService.configuration.errors.postcode_generic,\r\n error: error\r\n }\r\n };\r\n }\r\n\r\n }\r\n\r\n if (addresses && addresses.length > 0) {\r\n this.status = LookupStatus.Selecting;\r\n this.addressLookups = addresses;\r\n }\r\n else {\r\n this.status = LookupStatus.Init;\r\n }\r\n }\r\n constructor(private addressLookupService: AddressLookupService, private applicationStatusService : ApplicationStatusService) { }\r\n}\r\n\r\nenum LookupStatus {\r\n Init = 0,\r\n Searching = 1,\r\n Selecting = 2\r\n}\r\n","\r\nimport {finalize} from 'rxjs/operators';\r\nimport { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport { LoadingComponent } from \"./loading.component\";\r\n\r\n@Component({\r\n selector: 'loading-observer',\r\n templateUrl: './loading.component.html',\r\n styleUrls: ['./loading.component.scss']\r\n})\r\nexport class LoadingObserverComponent extends LoadingComponent implements OnChanges {\r\n @Input()\r\n observable:Observable;\r\n \r\n private loadingSubscription : Subscription;\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.refreshSubscription();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if(this.loadingSubscription){\r\n this.loadingSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private refreshSubscription() {\r\n if (this.loadingSubscription) {\r\n this.loadingSubscription.unsubscribe();\r\n }\r\n\r\n if (this.observable){\r\n this.loading = true;\r\n this.loadingSubscription = this.observable.pipe(finalize(() => this.loading = false)).subscribe();\r\n }\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
[][][][]
\r\n
\r\n
\r\n
\r\n
\r\n

{{text}}

\r\n
\r\n \r\n
\r\n\r\n","import { HostListener } from '@angular/core';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { ApplicationStatusService } from '../../core/services/application-status/application-status.service';\r\n\r\n@Component({\r\n selector: 'telephone',\r\n template: `\r\n \r\n\r\n \r\n \r\n \"Creditplus{{telephone}}\r\n \r\n \r\n \r\n \r\n \"Creditplus{{telephone}}\r\n \r\n `\r\n})\r\nexport class TelephoneComponent {\r\n telephone: string;\r\n isMobile: boolean = false;\r\n\r\n @HostListener(\"isMobile\", ['$event']) isMobileListener($event) {\r\n this.isMobile = $event.detail;\r\n }\r\n constructor(applicationStatusService:ApplicationStatusService) {\r\n this.telephone = applicationStatusService.configuration.contact.telephone;\r\n }\r\n}\r\n","\r\nimport {catchError, map} from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { HttpClient, HttpHeaders, HttpResponse\r\n // ResponseContentType, Headers, RequestOptions\r\n } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Proof } from \"../types\";\r\nimport { LoginService } from '../login/login.service';\r\nimport { TimedActionService } from \"../timed-action/timed-action.service\";\r\nimport { TokenService } from '../token/token.service';\r\n\r\n@Injectable()\r\nexport class ProofsService {\r\n\r\n deleteProofUrl = environment.base + \"/docs/delete?applicationId=:applicationId\";\r\n getAllFilesUrl = environment.base + \"/docs/?applicationId=:applicationId\";\r\n downloadProofUrl = environment.base + \"/docs/download?fileName=:filename&proofType=:proofType&applicationId=:applicationId\";\r\n\r\n constructor(private http: HttpClient, private loginService: LoginService, private TokenService: TokenService, private timedActionService: TimedActionService) { }\r\n\r\n downloadProof(proof: Proof, applicationId:string): Observable {\r\n let url = this.downloadProofUrl.replace(\":filename\", proof.filename).replace(\":proofType\", proof.type).replace(\":applicationId\", applicationId);\r\n let options = this.loginService.getHeaderOptions(true);\r\n options.append('Response-Type', 'Blob');\r\n return this.http.get(url, { headers: options}).pipe(\r\n map(\r\n (response) => {\r\n this.timedActionService.resetTimer();\r\n return response;\r\n }\r\n ),\r\n catchError(\r\n (error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }\r\n ),);\r\n }\r\n\r\n deleteProof(proof: Proof, applicationId:string): Observable {\r\n let url = this.deleteProofUrl.replace(\":applicationId\", applicationId);\r\n return this.http.post(url, proof, { headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map(\r\n (response: HttpResponse) => {\r\n this.timedActionService.resetTimer();\r\n return response.status === 200 ? true : false;\r\n }\r\n ),\r\n catchError(\r\n (error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }\r\n ),);\r\n }\r\n\r\n getAllFiles(applicationId:string): Observable {\r\n let url = this.getAllFilesUrl.replace(\":applicationId\", applicationId);\r\n var headers = new HttpHeaders();\r\n headers = headers.append('Authorization', 'Bearer ' + this.TokenService.bearerToken);\r\n return this.http.get(url, { headers: headers }).pipe(\r\n map(\r\n (response) => {\r\n return(response)\r\n }\r\n ),\r\n catchError(\r\n (error) => {\r\n return \"No files found\"\r\n }\r\n ),);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { DYNAMIC_COMPONENTS } from '../configuration/configuration-dynamic-components';\r\nimport { PAGE_JOURNEYS } from '../configuration/configuration-journeys';\r\n\r\nimport { TokenService } from '../token/token.service';\r\n\r\n@Injectable()\r\nexport class DynamicComponentsService {\r\n\r\n constructor(protected tokenService: TokenService) { }\r\n\r\n /*\r\n The components object stores details on each component available for use by the application\r\n */\r\n components = DYNAMIC_COMPONENTS;\r\n\r\n getRolePageComponents(page: string): any[] {\r\n\r\n /*\r\n Get a list of components based upon a particular role and journey page\r\n */\r\n var roles = this.tokenService.roles,\r\n foundJourney = null;\r\n\r\n // roles=['dealerplus'];\r\n\r\n for (var i = 0, ii = roles.length; i < ii; i++) {\r\n\r\n foundJourney = PAGE_JOURNEYS.find(journey => journey.roles.indexOf(roles[i]) != -1);\r\n\r\n if (foundJourney) {\r\n break;\r\n }\r\n\r\n }\r\n\r\n if (foundJourney) {\r\n\r\n var foundPage = foundJourney.pages.find(foundJourneyPage => foundJourneyPage.name == page);\r\n\r\n if (foundPage) {\r\n var components = this.getComponents(foundPage.sections);\r\n return components;\r\n }\r\n\r\n throw `The page ${page} does not exist in the journey ${foundJourney.title}.`\r\n\r\n }\r\n\r\n throw `No journey was found for the role(s) ${roles.join(',')}.`\r\n\r\n }\r\n\r\n getComponents(sections: string[]) {\r\n\r\n return sections.map(\r\n section => {\r\n var a = 1;\r\n return this.components.find(component => component.id == section);\r\n }\r\n );\r\n\r\n }\r\n}\r\n\r\n","import { ApplicationStatusService } from './../../../core/services/application-status/application-status.service';\r\nimport { Component, OnInit, Input, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'icon-component',\r\n templateUrl: 'icon-component.html'\r\n})\r\nexport class IconComponent {\r\n\r\n @Input()\r\n icons: Array = []\r\n\r\n @Input()\r\n creationTimeInSeconds: number;\r\n \r\n ngOnChanges(changes:SimpleChanges){\r\n if(changes[\"icons\"]){\r\n this.icons = changes[\"icons\"].currentValue.filter(i => i.value);\r\n this.LogIfDiffrentStatusIcon(this.icons[0]);\r\n }\r\n }\r\n\r\n private LogIfDiffrentStatusIcon(icon: Icon) {\r\n var time = new Date();\r\n if(time.getSeconds() != this.creationTimeInSeconds){\r\n if (icon.classes.includes(\"icon-invalid\")){\r\n window['dataLayer'].push({event: 'validation-status', label: icon.title, status: 'invalid-section', timestamp: time.toISOString()})\r\n } \r\n else if (icon.classes.includes(\"icon-tick\")){\r\n window['dataLayer'].push({event: 'validation-status', label: icon.title, status: 'valid-section', timestamp: time.toISOString()})\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\nexport class Icon {\r\n classes:string;\r\n value:boolean;\r\n title:string;\r\n}","","import { Validator, AbstractControl, NG_VALIDATORS, ValidatorFn, ValidationErrors } from '@angular/forms';\r\nimport { Directive, forwardRef, SimpleChanges, Input } from '@angular/core';\r\nimport { PasswordConfiguration } from '../../../../core/services/configuration/configuration.types';\r\n\r\n\r\nexport function passwordPolicy(config: PasswordConfiguration): ValidatorFn {\r\n\r\n return (passwordControl: AbstractControl): ValidationErrors => {\r\n\r\n let password: string = passwordControl.value;\r\n let errors: any = {};\r\n\r\n if (password == null) {\r\n // https://stackoverflow.com/questions/7844359/password-regex-with-min-6-chars-at-least-one-letter-and-one-number-and-may-cont\r\n errors.passwordRequired = true;\r\n password = \"\";\r\n }\r\n\r\n if (password.length < config.minimumLength) {\r\n errors.passwordTooShort = true;\r\n }\r\n if (config.numbers && password.search(/\\d/) == -1) {\r\n errors.passwordNoNumbers = true;\r\n }\r\n if (config.letters && password.search(/[a-z]/) == -1) {\r\n errors.passwordNoLetters = true;\r\n }\r\n if (config.letters && password.search(/[A-Z]/) == -1) {\r\n errors.passwordNoUpperLetters = true;\r\n }\r\n // if (config.specialCharacters != '' && config.specialCharacters != null) {\r\n // let specialspecialCharactersRegex = new RegExp('[' + config.specialCharacters.split('').join('\\\\') + ']');\r\n // if (password.search(specialspecialCharactersRegex) == -1) {\r\n // errors.passwordSpecialCharacters = true;\r\n // }\r\n // }\r\n\r\n return errors;\r\n\r\n };\r\n}\r\n\r\n@Directive({\r\n selector: '[passwordPolicyValidator]',\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => PasswordPolicyValidatorDirective), multi: true }\r\n ]\r\n})\r\n\r\nexport class PasswordPolicyValidatorDirective implements Validator {\r\n\r\n @Input('passwordPolicyValidator')\r\n policy: PasswordConfiguration;\r\n\r\n validator: ValidatorFn;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n const change = changes['policy'];\r\n\r\n if (change) {\r\n this.validator = passwordPolicy(change.currentValue);\r\n }\r\n else {\r\n this.validator = null;\r\n }\r\n\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors {\r\n if (this.validator) {\r\n return this.validator(control)\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { BrowserModule } from '@angular/platform-browser';\r\n\r\nimport { CoreModule } from './core/core.module';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { LoginModule } from './login/login.module';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { AppComponent } from './app.component';\r\n\r\nimport { NgxSliderModule } from '@angular-slider/ngx-slider';\r\n\r\n@NgModule({\r\n imports: [HttpClientModule, BrowserModule, CoreModule, SharedModule, LoginModule, NgxSliderModule, AppRoutingModule ],\r\n declarations: [AppComponent],\r\n bootstrap: [AppComponent],\r\n providers: [\r\n ]\r\n})\r\nexport class AppModule { }\r\n","\r\nimport { throwError as observableThrowError, Observable } from 'rxjs';\r\n\r\nimport { finalize, catchError, map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n HttpClient, HttpResponse\r\n //Response, Headers, RequestOptions\r\n} from '@angular/common/http';\r\n\r\n\r\n\r\nimport { LoginService } from './../login/login.service';\r\nimport { environment } from './../../../../environments/environment';\r\nimport { ApplicationHistoryCustomer } from '../types';\r\nimport { TimedActionService } from '../timed-action/timed-action.service';\r\nimport { LoadingModalService } from '../modal/loading-modal.service';\r\n\r\n\r\n@Injectable()\r\nexport class CustomersService {\r\n\r\n constructor(private loginService: LoginService, private http: HttpClient, private timedActionService: TimedActionService,\r\n private loadingModalService: LoadingModalService) { }\r\n\r\n /*\r\n NOTE: These services have not yet been implemented within the API and are meant as a phase 2+ piece of work \r\n in conjunction with the CustomersComponent & CustomerComponent\r\n RPT - 26/09/2017\r\n */\r\n urls: any = {\r\n getCustomers: environment.base + '/customer/application/search',\r\n };\r\n\r\n /*\r\n LastSevenDays\r\n OneToTwoWeeksAgo\r\n TwoToFourWeeksAgo\r\n MoreThanFourWeeksAgo\r\n */\r\n\r\n getCustomers(dateRange: string, pageSize: number, pageNumber: number, status?: string): Observable {\r\n var body: any = {\r\n dateRange: dateRange,\r\n pageSize: pageSize,\r\n pageNumber: pageNumber\r\n };\r\n\r\n if (typeof status != 'undefined') {\r\n body.portalStatusLabel = status;\r\n }\r\n\r\n this.loadingModalService.show();\r\n return this.http.post(this.urls.getCustomers, body, { headers: this.loginService.getHeaderOptions(true) }).pipe(\r\n map(\r\n (res: HttpResponse) => {\r\n\r\n this.timedActionService.resetTimer();\r\n return res.body;\r\n\r\n }\r\n ),\r\n catchError(\r\n (error: any) => {\r\n\r\n this.timedActionService.checkResetTimerOnError(error);\r\n return observableThrowError(error);\r\n\r\n }\r\n ),\r\n\r\n finalize(() => this.loadingModalService.hide()));\r\n }\r\n\r\n createPasswordLink(email: string) {\r\n var url = environment.base + \"/customer/application/create-forgot-password-link\";\r\n var demo = environment.demo.toString();\r\n var retval = this.http.post(url, null, { params: { customerEmail: email, isDemo: demo } });\r\n return retval;\r\n }\r\n\r\n verifyPasswordLink(verifyCode: string) {\r\n var url = environment.base + \"/customer/application/verify-forgot-password-link\"\r\n var retVal = this.http.post(url, null, { params: { verifyCode: verifyCode } });\r\n return retVal;\r\n }\r\n\r\n getApplicantbyID(id: string) {\r\n var url = environment.base + \"crm/applicant\"\r\n var retVal = this.http.post(url, null, { params: { id: id} });\r\n return retVal;\r\n }\r\n\r\n}\r\n","\r\n\r\n
\r\n \r\n \r\n \r\n

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

{{whyText}}

\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'help-panel',\r\n templateUrl: './help-panel.component.html',\r\n styleUrls: ['./help-panel.component.scss']\r\n})\r\nexport class HelpPanelComponent implements OnInit {\r\n\r\n @Input()\r\n showHelp:boolean;\r\n\r\n @Input()\r\n infoText?:string='';\r\n\r\n @Input()\r\n whyText?:string='';\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Configuration } from \"./configuration\";\r\n\r\nvar CONFIGURATION_DEALER: Configuration = {\r\n appearance: {\r\n logo: './assets/LogoDealerPlus.png',\r\n phoneIcon: './assets/call-button.png',\r\n title: 'DealerPlus Self Serve',\r\n favIcon: 'assets/favicon-dealer.ico'\r\n },\r\n authentication: {\r\n passwordPolicy: {\r\n minimumLength: 6,\r\n numbers: false,\r\n letters: true,\r\n specialCharacters: ''\r\n },\r\n expirationCountdown: 30000\r\n },\r\n contact: {\r\n telephone: '0333 222 4070',\r\n telephoneComplaints: '01202 684 898',\r\n email: 'sales@dealerplus.co.uk',\r\n emailComplaints: 'complaints@dealerplus.co.uk',\r\n address: 'Waterloo House, Fleets Corner, Nuffield Rd, Poole, Dorset, BH17 0HL',\r\n defaultPreferredContactMethod: 'Mobile',\r\n defaultPreferredContactTime: 'No Preference'\r\n },\r\n financeRequest: {\r\n maximumLTVPercentage: 1.2,\r\n minimumLoan: 3000,\r\n minimumDeposit: 500,\r\n term: {\r\n minimum: 24,\r\n maximum: 120,\r\n step: 6\r\n },\r\n annualMileage: {\r\n minimum: 0,\r\n maximum: 40000,\r\n step: 1000\r\n }\r\n },\r\n vehicle: {\r\n maximumSearchesPermitted: -1,\r\n maximumAgeAtStartOfLoan: 5,\r\n maximumAgeAtEndOfLoan: 9,\r\n maximumMileageAtStartOfLoan: 120000,\r\n minRegistrationLength: 2,\r\n maxRegistrationLength: 8\r\n },\r\n};\r\n\r\nexport {\r\n CONFIGURATION_DEALER\r\n}","import { Component, OnInit, Input, EventEmitter, Output, ViewChild, ElementRef } from '@angular/core';\r\nimport { Application, Document, Proof, RequiredProof } from '../../../core/services/types';\r\nimport { Router } from '@angular/router';\r\nimport { TimelineService } from '../../../core/services/timeline/timeline.service'; \r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { FileUploader, FileItem, ParsedResponseHeaders } from 'ng2-file-upload';\r\nimport { environment } from './../../../../environments/environment';\r\nimport * as moment from 'moment/moment'\r\nimport { TokenService } from './../../../core/services/token/token.service';\r\n\r\nclass DropZone {\r\n uploader: FileUploader;\r\n label: string;\r\n id: string;\r\n requiredProof: RequiredProof;\r\n addingProof: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'finance-documents',\r\n templateUrl: './finance-documents.component.html',\r\n styleUrls: ['./finance-documents.component.scss']\r\n})\r\nexport class FinanceDocumentsComponent implements OnInit {\r\n @Input()\r\n dropZone: DropZone;\r\n availableProofs: Proof[]\r\n uploadProofUrl: string;\r\n checkProofUrl: string;\r\n application: Application;\r\n customerPack: Document;\r\n customerPackDocsUrl: string;\r\n customerPackEsignUrl: string;\r\n customerPackEsign: boolean;\r\n docsIssued: boolean;\r\n docsRecv: boolean;\r\n downloadableFiles: number = 0;\r\n lenderPack: Document;\r\n signedLenderPack: Document;\r\n fileBeingUploaded:boolean = false;\r\n lenderPackDocsUrl: string;\r\n lenderPackEsignUrl: string;\r\n lenderPackEsign: boolean = false;\r\n @ViewChild('lenderPackUpload') lenderPackUpload: ElementRef;\r\n @ViewChild('LenderAgreement') lenderAgreement: ElementRef;\r\n constructor(private parentRouter: Router, private timelineService: TimelineService, private domSanitizer: DomSanitizer,\r\n private tokenService: TokenService) { }\r\n\r\n ngOnInit() {\r\n this.customerPackEsign = false;\r\n this.lenderPackEsign = false;\r\n var requiredProof = {\r\n label: \"Driving licence Front\",\r\n id: \"drivingLicenseFront\",\r\n description: \"Driving Licence (front)\",\r\n docsRequired: 1\r\n };\r\n this.dropZone = {\r\n uploader: new FileUploader({ removeAfterUpload: true }),\r\n label: \"Driving licence Front\",\r\n id: \"drivingLicenseFront\",\r\n requiredProof: requiredProof,\r\n addingProof: true\r\n };\r\n this.uploadProofUrl = environment.base + `/docs/?applicationId=${this.application.id}`;\r\n this.availableProofs = [];\r\n this.setUpDocuments();\r\n var dealStates = this.timelineService.getDealStates(this.application.dealActionHistory);\r\n if(dealStates[0].indexOf(\"9\") != -1 ){\r\n this.docsIssued = true;\r\n } else {\r\n this.docsIssued = false;\r\n }\r\n if(dealStates[0].indexOf(\"10\") != -1 ){\r\n this.docsRecv = true;\r\n } else {\r\n this.docsRecv = false;\r\n }\r\n\r\n //for testing\r\n this.docsIssued=true;\r\n this.lenderPack={clicked : false, id: \"something\", title: \"sometitle\", status: \"somestatus\", fileName: \"somefile\", links: null};\r\n\r\n\r\n ////console.log(this.application);\r\n this.computeMissingDocuments(this.dropZone);\r\n this.bindEvents(this.dropZone);\r\n\r\n }\r\n\r\n doneButton(){\r\n this.parentRouter.navigateByUrl(\"applications/\" + this.application.id + \"/docs\")\r\n }\r\n\r\n\r\n setUpDocuments() {\r\n if (this.application.documents && Object.keys(this.application.documents).length > 0) {\r\n this.customerPack = this.application.documents.filter(doc => doc.id == \"CUSTOMER_PACK\")[0];\r\n this.lenderPack = this.application.documents.filter(doc => doc.id == \"LENDER_PACK\")[0];\r\n this.signedLenderPack = this.application.documents.filter(doc => doc.id == \"SIGNED_LENDER_PACK\")[0];\r\n if (this.customerPack) {\r\n for (var i = 0; i < this.customerPack.links.length; i++) {\r\n if (this.customerPack.links[i].isEsignLink) {\r\n this.customerPackEsign = true;\r\n this.customerPackEsignUrl = this.customerPack.links[i].url;\r\n }\r\n } \r\n if (!this.customerPackEsign) {\r\n this.customerPackDocsUrl = this.createPdfBlob(this.application.documents[0].links[1].url);\r\n }\r\n }\r\n if (this.lenderPack != undefined || this.lenderPack != null ) {\r\n for (var i = 0; i < this.lenderPack.links.length; i++) {\r\n if (this.lenderPack.links[i].isEsignLink) {\r\n this.lenderPackEsign = true;\r\n this.lenderPackEsignUrl = this.lenderPack.links[i].url;\r\n }\r\n }\r\n if (!this.lenderPackEsign) {\r\n this.lenderPackDocsUrl = this.createPdfBlob(this.application.documents[1].links[0].url);\r\n }\r\n }\r\n }\r\n }\r\n\r\n createPdfBlob(base64String: string): string {\r\n var byteCharacters = atob(base64String);\r\n var byteArrays = [];\r\n for (var offset = 0; offset < byteCharacters.length; offset += 512) {\r\n var slice = byteCharacters.slice(offset, offset + 512);\r\n var byteNumbers = new Array(slice.length);\r\n for (var i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n var byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n var blob = new Blob(byteArrays, { type: 'application/pdf' })\r\n return URL.createObjectURL(blob);\r\n }\r\n\r\n sanitize(url: string) {\r\n return this.domSanitizer.bypassSecurityTrustUrl(url);\r\n }\r\n\r\n\r\n\r\n bindEvents(dropZone: DropZone) {\r\n dropZone.uploader.onSuccessItem = (item: FileItem, response: string, status: number, headers: ParsedResponseHeaders) => {\r\n this.removeAnyDuplicateAvailableProof(item);\r\n if (dropZone.addingProof) {\r\n this.availableProofs.push(this.getProof(item, dropZone.requiredProof.id));\r\n } else {\r\n this.dropZone.addingProof = true;\r\n }\r\n };\r\n dropZone.uploader.onCompleteAll = () => {\r\n this.computeMissingDocuments(this.dropZone);\r\n };\r\n };\r\n\r\n computeMissingDocuments(dropZone: DropZone) {\r\n dropZone.uploader.setOptions({\r\n url: this.uploadProofUrl,\r\n queueLimit: 4,\r\n authToken: 'Bearer ' + this.tokenService.bearerToken,\r\n additionalParameter: {\r\n label: dropZone.id\r\n }\r\n });\r\n }\r\n\r\n removeAnyDuplicateAvailableProof(item: FileItem) {\r\n var foundProof = this.availableProofs.find(availableProof => availableProof.filename == item.file.name);\r\n if (foundProof != null) {\r\n this.removeProofFromAvailableProofs(foundProof);\r\n }\r\n }\r\n\r\n removeProofFromAvailableProofs(proof: Proof) {\r\n let existingProof = this.availableProofs.find(p => p.filename === proof.filename);\r\n if (existingProof == null) {\r\n throw new Error(\"The deleted proof does not exist\");\r\n }\r\n let proofIndex = this.availableProofs.indexOf(existingProof);\r\n if (proofIndex === -1) {\r\n throw new Error(\"No index could be found for the existing index\");\r\n }\r\n this.availableProofs.splice(proofIndex, 1);\r\n }\r\n \r\n importFile(file: File, addingProofs: boolean) {\r\n this.dropZone.addingProof = addingProofs;\r\n this.dropZone.uploader.addToQueue([file]);\r\n }\r\n\r\n getProof(item: FileItem, id: string) {\r\n return {\r\n dateUploaded: moment(new Date()).format(\"DD-MM-YYYY\"),\r\n filename: item._file.name,\r\n id: 0,\r\n title: item._file.name,\r\n type: id\r\n };\r\n }\r\n\r\n fileEvent(fileInput: Event, filename) {\r\n this.fileBeingUploaded = false;\r\n var incomeCountMaxed = false;\r\n var file = (fileInput.target as HTMLInputElement).files[0];\r\n var fileExtension = \".\" + file.name.split(\".\")[1];\r\n switch (filename.toLowerCase()) {\r\n case (\"lenderpackupload\"):\r\n this.fileBeingUploaded=true;\r\n //let filev2 = new File([file], filename + fileExtension, { type: file.type });\r\n this.importFile(file, true);\r\n break;\r\n\r\n default: break;\r\n }\r\n }\r\n\r\n \r\n}\r\n\r\n\r\n","
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
Finance Agreements
\r\n
\r\n To finalise your purchase, you need to sign the agreement(s).\r\n
\r\n
\r\n
Creditplus Agreement
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
M
\r\n
\r\n
\r\n\r\n
\r\n
Lender Agreement
\r\n
Download and sign your lender agreement. Then, Upload the signed document below.
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n Upload Signed Agreement\r\n \r\n
\r\n
M
\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n
","import { ErrorsConfiguration } from \"./configuration.types\";\r\n\r\nconst ERRORS: ErrorsConfiguration = {\r\n generic: {\r\n popupText: \"

Your session has expired. Please login again and resume your journey.

\",\r\n title: \"An error occurred\",\r\n includeExceptioninfo: true,\r\n reDirect: true,\r\n type: \"generic\"\r\n },\r\n notfound: {\r\n title: \"Not found\",\r\n popupText: \"

The searched item could not be found, please try again or call {{TELEPHONE}} to continue your application

\",\r\n includeExceptioninfo: false,\r\n type: \"Not found\"\r\n },\r\n unauthorised: {\r\n title: \"Unauthorised\",\r\n popupText: \"

The user is not authorised, please try to log in again or contact us on {{TELEPHONE}} to continue your application

\",\r\n includeExceptioninfo: false,\r\n type: \"Unauthorised\"\r\n },\r\n validationError: {\r\n title: \"Validation error(s)\",\r\n popupText: \"

You've already created an account. Please login to continue.

\",\r\n includeExceptioninfo: false,\r\n type: \"Validation error(s)\"\r\n },\r\n offline: {\r\n title: \"No internet connection\",\r\n popupText: \"Your internet connection appears to be down. Please check and re-connect before proceeding.\",\r\n includeExceptioninfo: false,\r\n reDirect: false,\r\n type: \"No internet connection\"\r\n },\r\n quote_generic: {\r\n popupText: \"A technical error occurred with a code of {{ERROR_CODE}} while attempting to get you a quote, please contact us on {{TELEPHONE}} to continue your application.\",\r\n title: \"Get quote error occured\",\r\n includeExceptioninfo: true,\r\n type: \"Get quote error occured\"\r\n },\r\n quote_validation: {\r\n title: \"Quote request validation error\",\r\n popupText: \"

A request made by the application to the quote service was unsuccessful as the information supplied is invalid.

The following error messages were returned:

    {{ERROR_MESSAGES}}

Please contact us on {{TELEPHONE}} to continue your application

\",\r\n includeExceptioninfo: false,\r\n type: \"Quote request validation error\"\r\n },\r\n vehicle_generic: {\r\n title: \"Get vehicle error occured\",\r\n popupText: \"A technical error occurred with a code of {{ERROR_CODE}} while attempting to return your vehicle details, please contact us on {{TELEPHONE}} to continue your application.\",\r\n includeExceptioninfo: true,\r\n type: \"Get vehicle error occured\"\r\n },\r\n vehicle_validation: {\r\n title: \"Vehicle lookup validation error\",\r\n popupText: \"

A request made by the application vehicle lookup service was unsuccessful as the information supplied is invalid.

The following error messages were returned:

    {{ERROR_MESSAGES}}

Please contact us on {{TELEPHONE}} to continue your application

\",\r\n includeExceptioninfo: false,\r\n type: \"Vehicle lookup validation error\"\r\n },\r\n postcode_generic: {\r\n title: \"Postcode lookup error occured\",\r\n popupText: \"A technical error occurred with a code of {{ERROR_CODE}} while attempting to return address details for the postcode you entered, please contact us on {{TELEPHONE}} to continue your application.\",\r\n includeExceptioninfo: true,\r\n type: \"Postcode lookup error occured\"\r\n },\r\n postcode_validation: {\r\n title: \"Postcode lookup error\",\r\n popupText: \"

A request made by the application postcode lookup service was unsuccessful as the information supplied is invalid.

The following error messages were returned:

    {{ERROR_MESSAGES}}

Please enter the address information manually to continue your application

\",\r\n includeExceptioninfo: false,\r\n type: \"Postcode lookup error\"\r\n },\r\n offer_generic: {\r\n title: \"Loan offer request error occured\",\r\n popupText: \"A technical error occurred with a code of {{ERROR_CODE}} while attempting to get you a loan offer, please contact us on {{TELEPHONE}} to continue your application.\",\r\n includeExceptioninfo: true,\r\n type: \"Loan offer request error occured\"\r\n },\r\n offer_validation: {\r\n title: \"Loan offer request validation error\",\r\n popupText: \"

A request made by the application loan offer service was unsuccessful as the information supplied is invalid.

The following error messages were returned:

    {{ERROR_MESSAGES}}

Please contact us on {{TELEPHONE}} to continue your application

\",\r\n includeExceptioninfo: false,\r\n type: \"Loan offer request validation error\"\r\n },\r\n proofs_upload: {\r\n title: \"Document upload error occured\",\r\n popupText: \"A technical error occurred while uploading your documents with a code of {{ERROR_CODE}}, please contact us on {{TELEPHONE}} to continue your application.\",\r\n includeExceptioninfo: false,\r\n type: \"Document upload error occured\"\r\n },\r\n proofs_delete: {\r\n title: \"Document delete error occured\",\r\n popupText: \"A technical error occurred while deleting your documents with a code of {{ERROR_CODE}}, please contact us on {{TELEPHONE}} to continue your application.\",\r\n includeExceptioninfo: false,\r\n type: \"Document delete error occured\"\r\n },\r\n proofs_download: {\r\n title: \"Document download error occured\",\r\n popupText: \"A technical error occurred while downloading your documents with a code of {{ERROR_CODE}}, please contact us on {{TELEPHONE}} to continue your application.\",\r\n includeExceptioninfo: false,\r\n type: \"Document download error occured\"\r\n },\r\n notifications_generic: {\r\n title: \"Notifications error occured\",\r\n popupText: \"A technical error occurred with a code of {{ERROR_CODE}} while attempting to return notifications, please contact us on {{TELEPHONE}} to continue your application.\",\r\n includeExceptioninfo: true,\r\n type: \"Notifications error occured\"\r\n },\r\n save_generic: {\r\n title: \"Application save error occured\",\r\n popupText: \"A technical error occurred while attempting to save your application, please contact us on {{TELEPHONE}} to continue your application.\",\r\n includeExceptioninfo: false,\r\n reDirect: false,\r\n type: \"Application save error occured\"\r\n },\r\n creditRating_generic: {\r\n title: \"Credit Rating error occured\",\r\n popupText: \"A technical error occurred while retrieving your Credit Rating information, please contact us on {{TELEPHONE}} to continue your application.\",\r\n includeExceptioninfo: false,\r\n type: \"Credit Rating error occured\"\r\n }\r\n};\r\n\r\n\r\nexport {\r\n ERRORS\r\n}","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ProposedVehicle, Application } from '../../../core/services/types';\r\nimport { RecordsetPager } from '../../../shared/components/models.class';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { Subscription } from '../../../../../node_modules/rxjs';\r\n\r\n@Component({\r\n selector: 'quote-showroom-item',\r\n templateUrl: './quote-showroom-item.component.html',\r\n styleUrls: ['./quote-showroom-item.component.scss']\r\n})\r\nexport class QuoteShowroomItemComponent implements OnInit {\r\n\r\n @Input() vehicle: any;\r\n\r\n @Input() id: number;\r\n @Input() application: Application;\r\n\r\n @Output()\r\n public vehicleChange: EventEmitter = new EventEmitter();\r\n\r\n @Output() vehicleSelected = new EventEmitter();\r\n @Output() financeBreakdownClicked = new EventEmitter();\r\n\r\n validImagesCount: number;\r\n parentName : string;\r\n showroomFilterObservers: Subscription[];\r\n \r\n constructor(private actionsService: ActionsService) { }\r\n\r\n ngOnInit() {\r\n //get the number of images excluding the nulls \r\n this.validImagesCount = Object.keys(this.vehicle).filter(x => x.match(\"image\")).map(key => this.vehicle[key]).filter(x => x != null).length;\r\n }\r\n\r\n selectedVehicle() {\r\n this.vehicleSelected.emit(this.vehicle);\r\n }\r\n\r\n updateUrl(){\r\n this.vehicle.imageUrl_Main = './assets/car-placeholder2.png';\r\n }\r\n\r\n financeBreakdown(){\r\n this.financeBreakdownClicked.emit(this.vehicle);\r\n }\r\n\r\n \r\n}\r\n","
\r\n
\r\n \r\n
\r\n RAC Approved\r\n \r\n \r\n \r\n \r\n {{validImagesCount}}\r\n
\r\n
\r\n
\r\n

{{vehicle.make}}

\r\n

{{vehicle.model}}

\r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n {{vehicle.engineSize}}\r\n
  • \r\n
  • \r\n \r\n {{vehicle.fuelType}}\r\n
  • \r\n
  • \r\n \r\n {{vehicle.transmission}}\r\n
  • \r\n
  • \r\n \r\n {{vehicle.mileage}} mi\r\n
  • \r\n
  • \r\n \r\n {{vehicle.registrationYear}}\r\n
  • \r\n
  • \r\n \r\n {{vehicle.colour}}\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n

£{{vehicle.price}}

\r\n \r\n
\r\n \r\n
\r\n \r\n
","import { environment } from './../../../../environments/environment';\r\nimport { VehicleService } from './../../../core/services/vehicle/vehicle.service';\r\nimport { Component, OnInit, Output, EventEmitter, Input, HostListener } from '@angular/core';\r\nimport { ProposedVehicle, Application } from '../../../core/services/types';\r\nimport { RecordsetPager } from '../../../shared/components/models.class';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'quote-showroom',\r\n templateUrl: './quote-showroom.component.html',\r\n styleUrls: ['./quote-showroom.component.scss']\r\n})\r\nexport class QuoteShowroomComponent implements OnInit {\r\n\r\n showroomVehicleResults: ProposedVehicle[];\r\n parentName: string;\r\n pagerModel: RecordsetPager;\r\n pricePerMonth: boolean = true;\r\n monthClass: string;\r\n totalClass: string;\r\n loadingValues: boolean;\r\n displayVehiclesMobile: boolean = false;\r\n scrollable: boolean;\r\n selectedVehicle: any;\r\n @Input()\r\n public form: FormGroup;\r\n\r\n @Input()\r\n application: Application;\r\n\r\n @Input()\r\n cardId: number;\r\n\r\n @Output()\r\n public vehicleChange: EventEmitter = new EventEmitter();\r\n\r\n @Output() displayVehicleDetails = new EventEmitter();\r\n @Output() displayBreakDown = new EventEmitter();\r\n\r\n showroomObserver: Subscription[];\r\n vehicle: ProposedVehicle = {};\r\n isDemo: boolean = environment.demo;\r\n vehicle_details_page_on: boolean = false;\r\n\r\n filterOption = [\r\n { label: \"Price (low to high)\", value: 1 },\r\n { label: \"Price (high to low))\", value: 2 },\r\n { label: \"Mileage (low to high)\", value: 3 },\r\n { label: \"Mileage (high to low)\", value: 4 },\r\n { label: \"Age (newestFirst)\", value: 5 },\r\n { label: \"Age (oldest First)\", value: 6 },\r\n { label: \"Engine (low to high)\", value: 7 },\r\n { label: \"Engine (high to low)\", value: 8 }\r\n ];\r\n\r\n\r\n constructor(public actionsService: ActionsService, public vehicleService: VehicleService) {\r\n this.pagerModel = {\r\n page: 1,\r\n pageSize: 12,\r\n arrownavigators: true,\r\n visible: true,\r\n totalRecords: 0\r\n };\r\n this.parentName = 'showRoom';\r\n\r\n this.showroomVehicleResults = [];\r\n }\r\n\r\n ngOnInit() {\r\n this.showroomObserver = this.actionsService.registerObservers(\r\n ['loadvehicles.searchresults'],\r\n action => {\r\n this.setShowroomVehicles(action.value.vehicles, action.value.infinitScroll);\r\n },\r\n this\r\n );\r\n this.showroomObserver = this.actionsService.registerObservers(\r\n ['display.list'],\r\n action => {\r\n this.displayVehiclesMobile = false;\r\n },\r\n this\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.actionsService.cancelSubscriptions(this.showroomObserver);\r\n }\r\n\r\n isVehicleShowroomEmpty() {\r\n return this.showroomVehicleResults == null || this.showroomVehicleResults.length == 0;\r\n }\r\n\r\n setShowroomVehicles(showRoomVehicles: any, infinitScroll?: boolean) {\r\n if (!infinitScroll) {\r\n this.showroomVehicleResults = showRoomVehicles.vehicles;\r\n this.pagerModel.page = 1;\r\n } else {\r\n this.showroomVehicleResults = this.showroomVehicleResults.concat(showRoomVehicles.vehicles);\r\n }\r\n this.pagerModel.totalRecords = showRoomVehicles.totalRecords;\r\n this.loadingValues = false;\r\n }\r\n\r\n async vehicleFound(newVehicle) {\r\n let vehicle;\r\n try {\r\n if (environment.production) {\r\n vehicle = await this.vehicleService.vehicleLookup({ applicationId: 0, registration: newVehicle.registration, mileage: newVehicle.mileage, price: newVehicle.retailPrice, showroom: true, isSuggested: false }).toPromise();\r\n } else {\r\n vehicle = await this.vehicleService.vehicleLookup({ applicationId: 0, registration: 'CN15 OED', mileage: newVehicle.mileage, price: newVehicle.retailPrice, showroom: true, isSuggested: false }).toPromise();\r\n }\r\n if (vehicle != null) {\r\n if (environment.production) {\r\n this.vehicle = vehicle;\r\n } else {\r\n this.vehicle = newVehicle;\r\n this.vehicle.valuation = vehicle.valuation;\r\n this.vehicle.dateOfRegistration = newVehicle.registrationYear + \"-03-20\";\r\n this.vehicle.id = vehicle.id;\r\n }\r\n if (Object.keys(this.vehicle).length > 0) {\r\n this.form.markAsDirty();\r\n this.form.controls['registration'].setValue(this.vehicle.registration);\r\n this.form.controls['mileage'].setValue(this.vehicle.mileage);\r\n if (environment.production) {\r\n this.form.controls['price'].setValue(this.vehicle.valuation.retail);\r\n } else {\r\n this.form.controls['price'].setValue(newVehicle.price);\r\n }\r\n }\r\n this.vehicleChange.emit(this.vehicle);\r\n this.form.updateValueAndValidity();\r\n\r\n\r\n this.actionsService.broadcast({\r\n action: 'vehicle',\r\n behaviour: 'change',\r\n value: {\r\n formParent: this.form.parent,\r\n valid: this.form.valid,\r\n vehicle: this.vehicle\r\n }\r\n });\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n\r\n toggleArchive(value: boolean) {\r\n this.pricePerMonth = value;\r\n }\r\n @HostListener('window:scroll', ['$event']) onScroll(): void {\r\n if (window.scrollY >= window.innerHeight + ((this.pagerModel.page - 1) * 1400) && !this.loadingValues) {\r\n this.pagerModel.page++;\r\n this.loadingValues = true;\r\n this.actionsService.broadcast({\r\n action: 'load',\r\n behaviour: 'update',\r\n value: true,\r\n });\r\n }\r\n }\r\n backButton() {\r\n this.displayVehiclesMobile = false;\r\n }\r\n\r\n scrollToTop() {\r\n\r\n window.scroll(0, 0);\r\n }\r\n\r\n vehicleSelected(vehicle) {\r\n this.displayVehicleDetails.emit(vehicle);\r\n }\r\n\r\n financeBreakdownClicked(vehicle){\r\n this.displayBreakDown.emit(vehicle);\r\n }\r\n \r\n clearFilterValues(){\r\n this.actionsService.broadcast({\r\n action: 'clear',\r\n behaviour: 'filters',\r\n value: true\r\n });\r\n }\r\n\r\n displayFilters(){\r\n this.displayVehiclesMobile = true;\r\n }\r\n returnQuotes() {\r\n this.actionsService.broadcast({\r\n action: 'back',\r\n behaviour: 'quotes',\r\n value: true\r\n });\r\n window.scroll(0, 0);\r\n }\r\n}","
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
Browse
\r\n
Filters
\r\n
Add
\r\n \r\n
\r\n
\r\n
\r\n

{{pagerModel.totalRecords}} vehicles found

\r\n

131569 vehicles found

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

There are 0 results found

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { OnChanges } from '@angular/core/core';\r\nimport { AddressLookupResult } from '../../../core/services/address-lookup/address-lookup';\r\nimport { Component, OnInit, SimpleChanges, Input } from '@angular/core';\r\n\r\nimport { FormGroup, FormControl, Validators, FormBuilder } from '@angular/forms';\r\n\r\nimport { BaseFormComponent } from '../base-form/base-form.component';\r\n\r\nimport { LoginService } from '../../../core/services/login/login.service';\r\nimport { UserService } from '../../../core/services/user/user.service';\r\nimport { GlobalModalService } from '../../../core/services/modal/global-modal.service';\r\nimport { Address, ResidentialAddress } from \"../../../core/services/types\";\r\n\r\nimport { defaultErrorMessages } from \"../base-form/base-form.config\";\r\nimport { ActionsService } from \"../../../core/services/actions/actions.service\";\r\nimport { PATTERNS } from \"../../../core/services/validationservice/validation.config\";\r\n\r\n\r\n@Component({\r\n selector: 'details-address',\r\n templateUrl: 'address.component.html'\r\n})\r\nexport class AddressComponent extends BaseFormComponent implements OnChanges {\r\n @Input()\r\n name: string;\r\n\r\n postcodeNotFound: boolean = false;\r\n\r\n constructor(public formBuilder: FormBuilder, public loginService: LoginService, public userService: UserService, public globalModalService: GlobalModalService, actionsService: ActionsService) {\r\n\r\n super(formBuilder, loginService, userService, globalModalService, actionsService);\r\n\r\n this.editing = false;\r\n\r\n this.modalSettings = {\r\n title: 'Discard Changes',\r\n content: 'Are you sure that you want to discard the changes?',\r\n yes: 'Yes',\r\n no: 'No',\r\n config: {\r\n ignoreBackdropClick: true,\r\n keyboard: false\r\n }\r\n };\r\n\r\n this.formDefinition = {\r\n controls: this.formBuilder.group({\r\n id: ['', []],\r\n buildingNumber: ['', [Validators.maxLength(50)]],\r\n buildingName: ['', [Validators.maxLength(50)]],\r\n address1: ['', [Validators.required, Validators.maxLength(100)]],\r\n address2: ['', [Validators.maxLength(100)]],\r\n town: ['', [Validators.required, Validators.maxLength(100)]],\r\n county: ['', [Validators.required, Validators.maxLength(100)]],\r\n postcode: ['', [Validators.required, Validators.pattern(PATTERNS.UK_POSTCODE)]],\r\n country: ['', [Validators.required, Validators.maxLength(100)]]\r\n }),\r\n defaultErrorMessages: defaultErrorMessages,\r\n metadata: {\r\n id: {\r\n label: 'Id'\r\n },\r\n buildingName: {\r\n label: 'House Name'\r\n },\r\n buildingNumber: {\r\n label: 'House Number'\r\n },\r\n address1: {\r\n label: 'Address Line 1'\r\n },\r\n address2: {\r\n label: 'Address Line 2'\r\n },\r\n town: {\r\n label: 'Town'\r\n },\r\n county: {\r\n label: 'County'\r\n },\r\n postcode: {\r\n label: 'Postcode'\r\n },\r\n country: {\r\n label: 'Country'\r\n }\r\n }\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n if (this.model == null) {\r\n this.model =
{\r\n id: \"-1\",\r\n buildingName: '',\r\n buildingNumber: '',\r\n address1: '',\r\n address2: '',\r\n country: 'UK',\r\n county: '',\r\n postcode: '',\r\n town: ''\r\n }\r\n }\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n populateForm(address: any) {\r\n \r\n if (address != null) {\r\n this.postcodeNotFound=false;\r\n delete address.id;\r\n this.form.patchValue(address);\r\n this.form.markAsDirty();\r\n }\r\n else {\r\n this.postcodeNotFound=true;\r\n }\r\n\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n \r\n 0\" (address)=\"populateForm($event)\">\r\n
\r\n
\r\n The postcode that you entered was not found\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core';\r\nimport { Application, Proof, RequiredProof } from '../../../core/services/types';\r\nimport { Router } from '@angular/router';\r\nimport { FileUploader, FileItem, ParsedResponseHeaders } from 'ng2-file-upload';\r\nimport { LoadingModalService } from '../../../core/services/modal/loading-modal.service';\r\nimport { TokenService } from '../../../core/services/token/token.service';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { Applicant } from '../../../shared/models/onfido/Applicant';\r\nimport { Address } from '../../../shared/models/onfido/Address';\r\nimport * as moment from 'moment/moment'\r\nimport { HttpClient, HttpHeaders,\r\n //RequestOptionsArgs, RequestOptions, ResponseContentType \r\n} from '@angular/common/http';\r\nimport { ProofsService } from '../../../core/services/proofs/proofs.service';\r\nimport {LoginService} from '../../../core/services/login/login.service';\r\nimport { Title } from '@angular/platform-browser';\r\nclass DropZone {\r\n uploader: FileUploader;\r\n label: string;\r\n id: string;\r\n requiredProof: RequiredProof;\r\n addingProof: boolean;\r\n}\r\n\r\nclass EmailRequest{\r\n customer : Customer\r\n Metadata : MetaData\r\n}\r\nclass Customer{\r\ncontactid: number\r\nfname: string\r\nlname: string\r\nemail: string\r\n\r\n}\r\n\r\nclass MetaData {\r\n EmailTemplateId: number\r\n Optional_text: Array\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'proofs-no-onfido',\r\n templateUrl: './proofs-no-onfido.component.html',\r\n styleUrls: ['./proofs-no-onfido.component.scss']\r\n})\r\n\r\nexport class ProofsNoOnfidoComponent implements OnInit {\r\n @Input()\r\n application: Application;\r\n dropZone: DropZone;\r\n availableProofs: Proof[]\r\n uploadProofUrl: string;\r\n checkProofUrl: string;\r\n //requestArgs: RequestOptionsArgs;\r\n fileFound;\r\n allowedExtensions: string[];\r\n incomeProofCount;\r\n @ViewChild('licenceFrontUpload') drivingLicenceUpload: ElementRef;\r\n @ViewChild('licenceBackUpload') drivingLicenceBackUpload: ElementRef;\r\n @ViewChild('addressProofUpload') addressProofUpload: ElementRef;\r\n @ViewChild('incomeProofUpload') incomeProofUpload: ElementRef;\r\n @ViewChild('licenceModal') licenceModal: ElementRef;\r\n @ViewChild('incomeModal') incomeModal: ElementRef;\r\n @ViewChild('addressModal') addressModal: ElementRef;\r\n @ViewChild('fileFormatModal') fileFormatModal: ElementRef;\r\n @ViewChild('incomeProofMaxModal') incomeProofMaxModal: ElementRef;\r\n\r\n constructor(private http: HttpClient,\r\n private parentRouter: Router,\r\n private loadingModalService: LoadingModalService,\r\n private tokenService: TokenService,\r\n private proofService: ProofsService,\r\n private loginService:LoginService,\r\n private titleService: Title,\r\n ) {\r\n }\r\n\r\n ngOnInit() { \r\n\r\n this.titleService.setTitle(\"Proofs\");\r\n this.incomeProofCount = 0;\r\n this.allowedExtensions = [\".png\", \".jpg\", \".jpeg\", \".gif\", \".tif\", \".tiff\"]\r\n this.fileFound =\r\n {\r\n drivingLicenceFront: false,\r\n drivingLicenceBack: false,\r\n addressProof: false,\r\n employmentProof: false,\r\n }\r\n\r\n var requiredProof = {\r\n label: \"Driving licence Front\",\r\n id: \"drivingLicenseFront\",\r\n description: \"Driving Licence (front)\",\r\n docsRequired: 1\r\n };\r\n\r\n this.dropZone = {\r\n uploader: new FileUploader({ removeAfterUpload: true }),\r\n label: \"Driving licence Front\",\r\n id: \"drivingLicenseFront\",\r\n requiredProof: requiredProof,\r\n addingProof: true\r\n };\r\n\r\n this.uploadProofUrl = environment.base + `/docs/?applicationId=${this.application.id}`;\r\n this.availableProofs = [];\r\n this.checkProofUrl = environment.base + `/docs/download/?applicationId=${this.application.id}`;\r\n this.computeMissingDocuments(this.dropZone);\r\n this.bindEvents(this.dropZone);\r\n this.getFiles();\r\n }\r\n\r\n importFile(file: File, addingProofs: boolean) {\r\n this.loadingModalService.show();\r\n this.dropZone.addingProof = addingProofs;\r\n this.dropZone.uploader.addToQueue([file]);\r\n this.loadingModalService.hide();\r\n }\r\n\r\n getProof(item: FileItem, id: string) {\r\n return {\r\n dateUploaded: moment(new Date()).format(\"DD-MM-YYYY\"),\r\n filename: item._file.name,\r\n id: 0,\r\n title: item._file.name,\r\n type: id\r\n };\r\n }\r\n\r\n \r\n\r\n bindEvents(dropZone: DropZone) {\r\n dropZone.uploader.onSuccessItem = (item: FileItem, response: string, status: number, headers: ParsedResponseHeaders) => {\r\n this.removeAnyDuplicateAvailableProof(item);\r\n if (dropZone.addingProof) {\r\n this.availableProofs.push(this.getProof(item, dropZone.requiredProof.id));\r\n } else {\r\n this.dropZone.addingProof = true;\r\n }\r\n };\r\n dropZone.uploader.onCompleteAll = () => {\r\n this.computeMissingDocuments(this.dropZone);\r\n };\r\n };\r\n\r\n computeMissingDocuments(dropZone: DropZone) {\r\n dropZone.uploader.setOptions({\r\n url: this.uploadProofUrl,\r\n queueLimit: 4,\r\n authToken: 'Bearer ' + this.tokenService.bearerToken,\r\n additionalParameter: {\r\n label: dropZone.id\r\n }\r\n });\r\n }\r\n\r\n removeAnyDuplicateAvailableProof(item: FileItem) {\r\n var foundProof = this.availableProofs.find(availableProof => availableProof.filename == item.file.name);\r\n if (foundProof != null) {\r\n this.removeProofFromAvailableProofs(foundProof);\r\n }\r\n }\r\n\r\n removeProofFromAvailableProofs(proof: Proof) {\r\n let existingProof = this.availableProofs.find(p => p.filename === proof.filename);\r\n if (existingProof == null) {\r\n throw new Error(\"The deleted proof does not exist\");\r\n }\r\n let proofIndex = this.availableProofs.indexOf(existingProof);\r\n if (proofIndex === -1) {\r\n throw new Error(\"No index could be found for the existing index\");\r\n }\r\n this.availableProofs.splice(proofIndex, 1);\r\n }\r\n\r\n fileEvent(fileInput: Event, filename) {\r\n var incomeCountMaxed = false;\r\n var file = (fileInput.target as HTMLInputElement).files[0];\r\n var fileExtension = \".\" + file.name.split(\".\")[1];\r\n if (this.allowedExtensions.indexOf(fileExtension.toLowerCase()) != -1) {\r\n switch (filename.toLowerCase()) {\r\n case (\"drivinglicencefront\"):\r\n this.drivingLicenceUpload.nativeElement.classList.add(\"file-to-upload\")\r\n this.drivingLicenceUpload.nativeElement.classList.remove(\"no-file-image\")\r\n this.drivingLicenceUpload.nativeElement.classList.remove(\"file-found-image\")\r\n this.fileFound.drivingLicenceFront = true;\r\n break;\r\n\r\n case (\"drivinglicenceback\"):\r\n this.drivingLicenceBackUpload.nativeElement.classList.add(\"file-to-upload\")\r\n this.drivingLicenceBackUpload.nativeElement.classList.remove(\"no-file-image\")\r\n this.drivingLicenceBackUpload.nativeElement.classList.remove(\"file-found-image\")\r\n this.fileFound.drivingLicenceBack = true;\r\n break;\r\n\r\n case (\"addressproof\"):\r\n this.addressProofUpload.nativeElement.classList.add(\"file-to-upload\")\r\n this.addressProofUpload.nativeElement.classList.remove(\"file-found-image\")\r\n this.addressProofUpload.nativeElement.classList.remove(\"no-file-image\")\r\n this.fileFound.addressProof = true;\r\n break;\r\n\r\n case (\"incomeproof\"):\r\n if(this.incomeProofCount >= 15){\r\n incomeCountMaxed = true;\r\n } else {\r\n this.fileFound.incomeProof = true;\r\n filename = filename + (this.incomeProofCount + 1).toString();\r\n this.incomeProofCount++;\r\n }\r\n this.incomeProofUpload.nativeElement.classList.add(\"file-to-upload\")\r\n this.incomeProofUpload.nativeElement.classList.remove(\"file-found-image\")\r\n this.incomeProofUpload.nativeElement.classList.remove(\"no-file-image\")\r\n break;\r\n\r\n\r\n default: break;\r\n }\r\n if(!incomeCountMaxed){\r\n let filev2 = new File([file], filename + fileExtension.toLowerCase(), { type: file.type });\r\n this.importFile(filev2, true);\r\n //this.updateFiles();\r\n } else {\r\n this.showModal(\"incomeProofMaxModal\")\r\n }\r\n } else {\r\n this.showModal(\"fileFormatError\")\r\n }\r\n }\r\n\r\n updateFiles() {\r\n if (this.fileFound.drivingLicenceFront == true) {\r\n this.drivingLicenceUpload.nativeElement.classList.remove(\"no-file-image\")\r\n this.drivingLicenceUpload.nativeElement.classList.remove(\"file-to-upload\")\r\n this.drivingLicenceUpload.nativeElement.classList.add(\"file-found-image\")\r\n }\r\n else {\r\n this.drivingLicenceUpload.nativeElement.classList.add(\"no-file-image\")\r\n this.drivingLicenceUpload.nativeElement.classList.remove(\"file-found-image\")\r\n }\r\n\r\n if (this.fileFound.drivingLicenceBack == true) {\r\n this.drivingLicenceBackUpload.nativeElement.classList.remove(\"no-file-image\")\r\n this.drivingLicenceBackUpload.nativeElement.classList.remove(\"file-to-upload\")\r\n this.drivingLicenceBackUpload.nativeElement.classList.add(\"file-found-image\")\r\n }\r\n else {\r\n this.drivingLicenceBackUpload.nativeElement.classList.add(\"no-file-image\")\r\n this.drivingLicenceBackUpload.nativeElement.classList.remove(\"file-found-image\")\r\n }\r\n\r\n if (this.fileFound.addressProof == true) {\r\n this.addressProofUpload.nativeElement.classList.remove(\"no-file-image\")\r\n this.addressProofUpload.nativeElement.classList.remove(\"file-to-upload\")\r\n this.addressProofUpload.nativeElement.classList.add(\"file-found-image\")\r\n }\r\n else {\r\n this.addressProofUpload.nativeElement.classList.add(\"no-file-image\")\r\n this.addressProofUpload.nativeElement.classList.remove(\"file-found-image\")\r\n }\r\n if (this.fileFound.incomeProof == true) {\r\n this.incomeProofUpload.nativeElement.classList.remove(\"no-file-image\")\r\n this.incomeProofUpload.nativeElement.classList.remove(\"file-to-upload\")\r\n this.incomeProofUpload.nativeElement.classList.add(\"file-found-image\")\r\n }\r\n else {\r\n this.incomeProofUpload.nativeElement.classList.add(\"no-file-image\")\r\n this.incomeProofUpload.nativeElement.classList.remove(\"file-found-image\")\r\n } \r\n \r\n }\r\n\r\n getFiles() {\r\n this.proofService.getAllFiles(this.application.id.toString()).subscribe(response => {\r\n //Body is returned as a long string. Converting to array.\r\n //Remove \"[ ]\"\r\n var fileList = response._body;\r\n fileList = fileList.substr(1, fileList.length - 2)\r\n fileList = fileList.split(\",\");\r\n var incomeProofCountTemp = 0;\r\n var incomeProofNumber = 0;\r\n for (var i = 0; i < fileList.length; i++) {\r\n //Removing all whitespace, and quotation marks, then separating the extension.\r\n fileList[i] = fileList[i].replace(/\\s/g, \"\").replace('\"', \"\").replace('\"', \"\").toLowerCase();\r\n fileList[i] = fileList[i].split(\".\")[0];\r\n if(fileList[i].includes(\"incomeproof\")){\r\n incomeProofNumber = parseInt(fileList[i].replace(\"uploaded-incomeproof\",\"\") ) \r\n if(incomeProofCountTemp < incomeProofNumber ){\r\n incomeProofCountTemp = incomeProofNumber; \r\n }\r\n }\r\n }\r\n this.incomeProofCount = incomeProofCountTemp;\r\n\r\n\r\n\r\n if (fileList.indexOf(\"uploaded-drivinglicencefront\") != -1) {\r\n this.fileFound.drivingLicenceFront = true;\r\n }\r\n\r\n if (fileList.indexOf(\"uploaded-drivinglicenceback\") != -1) {\r\n this.fileFound.drivingLicenceBack = true;\r\n }\r\n\r\n if (fileList.indexOf(\"uploaded-addressproof\") != -1) {\r\n this.fileFound.addressProof = true;\r\n }\r\n\r\n if (fileList.indexOf(\"uploaded-incomeproof1\") != -1) {\r\n this.fileFound.incomeProof = true;\r\n }\r\n\r\n this.updateFiles();\r\n })\r\n }\r\n\r\n closeModal(modalName) {\r\n switch (modalName) {\r\n case (\"fileFormatError\"):\r\n this.fileFormatModal.nativeElement.style.display = \"none\";\r\n break;\r\n\r\n case (\"licenceModal\"):\r\n this.licenceModal.nativeElement.style.display = \"none\";\r\n break;\r\n\r\n case (\"incomeModal\"):\r\n this.incomeModal.nativeElement.style.display = \"none\";\r\n break;\r\n\r\n\r\n case (\"addressModal\"):\r\n this.addressModal.nativeElement.style.display = \"none\";\r\n break;\r\n\r\n case (\"incomeProofMaxModal\"):\r\n this.incomeProofMaxModal.nativeElement.style.display = \"none\";\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n\r\n showModal(modalName) {\r\n switch (modalName) {\r\n case (\"fileFormatError\"):\r\n this.fileFormatModal.nativeElement.style.display = \"block\";\r\n break;\r\n\r\n case (\"licenceModal\"):\r\n this.licenceModal.nativeElement.style.display = \"block\";\r\n break;\r\n case (\"incomeModal\"):\r\n this.incomeModal.nativeElement.style.display = \"block\";\r\n break;\r\n\r\n\r\n case (\"addressModal\"):\r\n this.addressModal.nativeElement.style.display = \"block\";\r\n break;\r\n \r\n case (\"incomeProofMaxModal\"):\r\n this.incomeProofMaxModal.nativeElement.style.display = \"block\";\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n \r\n doneButton() { \r\n this.updateFiles();\r\n this.fileFound.drivingLicenceFront=false;\r\n this.fileFound.drivingLicenceBack=false;\r\n this.fileFound.addressProof=false;\r\n this.fileFound.employmentProof=false;\r\n //console.log(this.fileFound);\r\n // this.emailSalesperson();\r\n }\r\n}\r\n\r\n","
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
Upload your Proofs
\r\n \r\n
\r\n To prevent fraud and complete the underwriting process, please upload proofs of your identity.\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
Driving Licence (Front)
\r\n
i
\r\n
\r\n M\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
Driving Licence (Back)
\r\n
i
\r\n
\r\n M\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
Proof of Address
\r\n
i
\r\n \r\n
\r\n M\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
Proof of Income
\r\n
i
\r\n
\r\n M\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
Upload documents
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
Requirements
\r\n
\r\n
- Valid driver's licence with 6 months remaining
\r\n
- Clear photo with no obstruction or glares
\r\n
- All four corners of the licence shown
\r\n
\r\n
Close
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
Requirements
\r\n
\r\n
Any of the following, dated within the last 60 days:
\r\n
- A bank or credit card statement
\r\n
- A council text letter
\r\n
- A utility bill
\r\n
\r\n
Close
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
Requirements
\r\n
\r\n
If you are employed:
\r\n
- Take a photo of your payslips from the last 2 months
\r\n
\r\n
If you are self-employed:
\r\n
- Upload your last 3 months bank statements
\r\n
- Upload proof of self-employment from either of the following:
\r\n
- Your most recent tax return
\r\n
- HMRC document which shows the UTR number
\r\n
\r\n
Close
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n X\r\n

File format!

\r\n

- Please upload any file(s) in an image format!

\r\n

- Acceptable formats: png, jpg, jpeg, gif, tiff.

\r\n
\r\n

If you would like to give upload a file with another format please contact us.

\r\n
\r\n
\r\n \r\n
\r\n
\r\n X\r\n

Upload limit

\r\n

You can only upload up to 15 files to prove income, if you have accidentally uploaded an incorrect file, or too many files, please contact us.

\r\n
\r\n
\r\n
\r\n","import { Directive, Input, ElementRef, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[focusIf]'\r\n})\r\nexport class FocusIfDirective implements OnChanges {\r\n\r\n @Input() focusIf: boolean\r\n isOn: any;\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.isOn = changes['focusIf'];\r\n }\r\n\r\n ngAfterViewChecked() {\r\n\r\n if (this.isOn.currentValue) {\r\n this.isOn.currentValue=false;\r\n this.el.nativeElement.focus();\r\n }\r\n }\r\n\r\n}\r\n","import { environment } from './../../../../environments/environment';\r\nimport { Component, Input } from '@angular/core';\r\nimport { LookUpVehicle,FinanceRequest } from '../../../core/services/types-quote';\r\nimport { VehicleService } from '../../../core/services/vehicle/vehicle.service';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { QuotesService } from '../../../core/services/quotes/quotes.service';\r\nimport { Application } from '../../../core/services/types';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'quote-vehicle',\r\n templateUrl: 'quote-vehicle.component.html',\r\n styleUrls: ['quote-vehicle.component.scss']\r\n})\r\nexport class QuoteVehicleComponent {\r\n\r\n @Input()\r\n application: Application;\r\n\r\n totalVehicleCards: number;\r\n vehicleList: any = [];\r\n vehicleNotFound: boolean;\r\n unableToValueVehicle: boolean;\r\n vehicleAgeAtStartOfLoanIsValid: boolean = true;\r\n term: number;\r\n deposit: number;\r\n monthlyPayment: number = 0;\r\n financeType: string;\r\n flatRate?: number;\r\n annualMillage: number;\r\n slideIndex = 1;\r\n quoteVehicleObservable: Subscription[];\r\n lookupVehicle: LookUpVehicle;\r\n apiErrorMessages: any[] = [];\r\n selectedFilterValues: any = {\r\n selectedMake: null,\r\n selectedModel: null,\r\n selectedRegistrationYear: null,\r\n selectedMinimumPrice: null,\r\n selectedMaximumPrice: null,\r\n }\r\n suggestedVehicle: any[];\r\n numberOfSuggestedSearch: number = 0;\r\n source: string;\r\n\r\n constructor(\r\n private vehicleService: VehicleService,\r\n private quoteService: QuotesService,\r\n private actionsService: ActionsService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n window.scroll(0, 0);\r\n if (window.location.href.indexOf(\"dealerplus\") != -1) {\r\n this.source = 'dealer';\r\n }\r\n this.totalVehicleCards = 3;\r\n this.initializeCards();\r\n \r\n\r\n this.quoteVehicleObservable = this.actionsService.registerObservers(\r\n ['searchVehicle.regNumber', 'quoteFilters.update', 'showroom.selectedVehicle'],\r\n action => {\r\n if (action.action == 'searchVehicle') {\r\n \r\n this.searchVehicle(action.value)\r\n }\r\n if (action.action == 'quoteFilters') {\r\n this.deposit = action.value.deposit;\r\n this.term = action.value.term;\r\n this.financeType = action.value.financeType;\r\n this.annualMillage = action.value.annualMillage;\r\n this.flatRate = action.value.flatRatePercent;\r\n this.updatingAllCardsQuotes();\r\n }\r\n if (action.action == 'showroom') {\r\n this.application.quotes[0].showroomCarSelectionOccured = true;\r\n this.numberOfSuggestedSearch = 1;\r\n if (environment.production || environment.demo) {\r\n var lookupvehicle: LookUpVehicle = {\r\n cardId: action.value.id,\r\n cardSuggested: false,\r\n loanAmmount: action.value.vehicle.price.toString(),\r\n loanDeposit: this.deposit,\r\n loanTerm: this.term,\r\n regNumber: action.value.vehicle.registration,\r\n vehicleMileage: action.value.vehicle.mileage.toString(),\r\n IsShowroomPicked: true\r\n \r\n }\r\n } else {\r\n var lookupvehicle: LookUpVehicle = {\r\n cardId: action.value.id,\r\n cardSuggested: false,\r\n loanAmmount: action.value.vehicle.price.toString(),\r\n loanDeposit: this.deposit,\r\n loanTerm: this.term,\r\n regNumber: action.value.vehicle.registration,\r\n vehicleMileage: action.value.vehicle.mileage.toString(),\r\n IsShowroomPicked: true\r\n }\r\n }\r\n this.actionsService.broadcast(\r\n {\r\n action: 'showroom',\r\n behaviour: 'display',\r\n value: { displayShowroom: false, id: action.value.id }\r\n }\r\n );\r\n this.searchVehicle(lookupvehicle);\r\n }\r\n },\r\n this\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.actionsService.cancelSubscriptions(this.quoteVehicleObservable);\r\n }\r\n\r\n async updatingAllCardsQuotes() {\r\n for (var i = 0; i < 3; i++) {\r\n if (this.vehicleList[i].valid && this.vehicleList[i].open) {\r\n await this.updateQuotes(this.vehicleList[i]);\r\n }\r\n }\r\n }\r\n\r\n\r\n initializeCards() {\r\n for (var i = 0; i < this.totalVehicleCards; i++) {\r\n if (i == 0) {\r\n if (this.application.quotes[0].vehicle.registration != null && !this.application.quotes[0].vehicle.mockcar) {\r\n var price;\r\n if (this.application.quotes[0].vehicle.fullPrice == 0 || null) {\r\n price = this.application.quotes[0].vehicle.price\r\n }\r\n else {\r\n price = this.application.quotes[0].vehicle.fullPrice;\r\n }\r\n this.deposit = this.application.quotes[0].financeResponse.deposit;\r\n this.vehicleList.push({ valid: false, open: true })\r\n this.lookupVehicle = {\r\n regNumber: this.application.quotes[0].vehicle.registration,\r\n loanTerm: 48,\r\n loanDeposit: this.deposit,\r\n loanAmmount: price,\r\n vehicleMileage: this.application.quotes[0].vehicle.mileage,\r\n cardId: 0,\r\n cardSuggested: false,\r\n IsShowroomPicked: this.application.quotes[0].vehicle.IsShowroomPicked\r\n }\r\n this.searchVehicle(this.lookupVehicle);\r\n }\r\n else {\r\n this.vehicleList.push({ valid: false, open: true })\r\n }\r\n }\r\n else {\r\n this.vehicleList.push({ valid: false, open: false })\r\n }\r\n }\r\n }\r\n\r\n addVehicleCard(vehicle: any, lookUpVehicle: LookUpVehicle, id: number, response: any, cardSuggested: boolean) {\r\n let newVehicle = {\r\n valid: true,\r\n open: true,\r\n cardSuggested: cardSuggested,\r\n id: id,\r\n vehicle: vehicle,\r\n year: vehicle.dateOfRegistration.split(\"-\")[0],\r\n loanAmountRequest: (lookUpVehicle.loanAmmount - lookUpVehicle.loanDeposit),\r\n askingPrice: lookUpVehicle.loanAmmount,\r\n monthlyPayment: response.financeResponse.monthlyPayment.toFixed(2),\r\n term: this.term,\r\n deposit: this.deposit,\r\n quote: response.financeResponse,\r\n IsShowroomPicked: lookUpVehicle.IsShowroomPicked\r\n }\r\n this.vehicleList.splice(lookUpVehicle.cardId, 1, newVehicle);\r\n }\r\n\r\n updateVehicleCard(id: number) {\r\n if (this.vehicleList[id].valid) {\r\n this.vehicleList.splice(id, 1, { valid: false, open: true });\r\n } else {\r\n if (this.vehicleList[id].open) {\r\n this.vehicleList.splice(id, 1, { valid: false, open: false });\r\n } else {\r\n this.vehicleList.splice(id, 1, { valid: false, open: true });\r\n }\r\n }\r\n }\r\n\r\n async getSuggestedVehicles(vehicle, lookUpVehicle) {\r\n this.selectedFilterValues.selectedMake = vehicle.make;\r\n this.selectedFilterValues.selectedMinimumPrice = vehicle.price - 2000,\r\n this.selectedFilterValues.selectedMaximumPrice = vehicle.price + 2000,\r\n this.selectedFilterValues.selectedRegistrationYear = new Date().getFullYear() - 2;\r\n\r\n //this.selectedFilterValues.selectedModel = vehicle.model;\r\n await this.vehicleService.getShowroomVehicles(this.selectedFilterValues).subscribe(\r\n response => {\r\n this.suggestedVehicle = response.vehicles;\r\n this.suggestedVehicle = this.suggestedVehicle.sort(function () { return .5 - Math.random() }) // Shuffle array\r\n .slice(0, 2);\r\n var card: any = [\r\n 0,\r\n 1,\r\n 2\r\n ]\r\n var originalCard = lookUpVehicle.cardId;\r\n const index = card.indexOf(originalCard, 0);\r\n if (index > -1) {\r\n card.splice(index, 1);\r\n }\r\n for (var i = 0; i < this.suggestedVehicle.length; i++) {\r\n this.lookupVehicle = {\r\n regNumber: this.suggestedVehicle[i].registration,\r\n loanTerm: this.term,\r\n loanDeposit: this.deposit,\r\n loanAmmount: this.suggestedVehicle[i].price,\r\n vehicleMileage: this.suggestedVehicle[i].mileage,\r\n cardId: card[i],\r\n cardSuggested: true,\r\n IsShowroomPicked : true\r\n }\r\n this.searchVehicle(this.lookupVehicle)\r\n }\r\n },\r\n error => {\r\n\r\n }\r\n );\r\n }\r\n\r\n async searchVehicle(lookUpVehicle: LookUpVehicle): Promise {\r\n this.vehicleNotFound = false;\r\n this.unableToValueVehicle = false;\r\n try {\r\n let vehicle = await this.vehicleService.vehicleLookup({ applicationId: this.application.id, registration: lookUpVehicle.regNumber, mileage: lookUpVehicle.vehicleMileage, price: lookUpVehicle.loanAmmount, showroom: false, isSuggested: lookUpVehicle.cardSuggested }).toPromise();\r\n if (vehicle != null) {\r\n this.getQuote(vehicle, lookUpVehicle);\r\n if (this.source != \"dealer\" && !vehicle.mockcar) {\r\n if (this.numberOfSuggestedSearch == 0) {\r\n this.getSuggestedVehicles(vehicle, lookUpVehicle);\r\n this.numberOfSuggestedSearch = 1\r\n }\r\n }\r\n }\r\n }\r\n catch (error) {\r\n error = error.json();\r\n this.vehicleList[lookUpVehicle.cardId].errorList = error.filter(x => x.code != \"020105\");\r\n }\r\n }\r\n\r\n async getQuote(vehicle: any, lookUpVehicle: LookUpVehicle) {\r\n var quoteFinanceRequest: FinanceRequest = {\r\n loanAmount: lookUpVehicle.loanAmmount - this.deposit,\r\n term: lookUpVehicle.loanTerm,\r\n deposit: {\r\n cash: this.deposit,\r\n total: this.deposit,\r\n },\r\n financeType: this.financeType,\r\n annualMileage: this.annualMillage,\r\n flatRatePercent: this.flatRate,\r\n commissionLenderTiers: this.application.quotes[0].financeRequest.commissionLenderTiers\r\n }\r\n vehicle.price = (Number(lookUpVehicle.loanAmmount));\r\n vehicle.IsShowroomPicked = lookUpVehicle.IsShowroomPicked;\r\n this.quoteService.getQuotes(this.application.id.toString(), quoteFinanceRequest, vehicle).subscribe(\r\n response => {\r\n this.addVehicleCard(vehicle, lookUpVehicle, lookUpVehicle.cardId, response, lookUpVehicle.cardSuggested);\r\n if (response.financeResponse.dealerCommissionGuide != null) {\r\n {\r\n this.actionsService.broadcast(\r\n {\r\n action: 'comissionValue',\r\n behaviour: 'change',\r\n value: response.financeResponse.dealerCommissionGuide != null ? response.financeResponse.dealerCommissionGuide.mean : 0\r\n }\r\n );\r\n }\r\n }\r\n },\r\n error => {\r\n error = error.json();\r\n this.vehicleList[lookUpVehicle.cardId].errorList = error.filter(x => x.code != \"020105\");\r\n }\r\n );\r\n }\r\n\r\n async updateQuotes(tempVehicle) {\r\n var quoteFinanceRequest: FinanceRequest = {\r\n loanAmount: tempVehicle.askingPrice - this.deposit,\r\n term: this.term,\r\n deposit: {\r\n cash: this.deposit,\r\n total: this.deposit,\r\n },\r\n financeType: this.financeType,\r\n annualMileage: this.annualMillage,\r\n flatRatePercent: this.flatRate,\r\n commissionLenderTiers: this.application.quotes[0].financeRequest.commissionLenderTiers\r\n }\r\n tempVehicle.vehicle.price = (Number(tempVehicle.loanAmountRequest));\r\n this.quoteService.getQuotes(this.application.id.toString(), quoteFinanceRequest, tempVehicle.vehicle).subscribe(\r\n response => {\r\n this.vehicleList[tempVehicle.id].errorList = [];\r\n this.vehicleList[tempVehicle.id].monthlyPayment = response.financeResponse.monthlyPayment.toFixed(2)\r\n this.vehicleList[tempVehicle.id].financeType = response.financeResponse.financeType;\r\n this.vehicleList[tempVehicle.id].balloon = response.financeResponse.balloon;\r\n this.vehicleList[tempVehicle.id].quote = response.financeResponse;\r\n this.vehicleList[tempVehicle.id].flatRate = response.flatRate;\r\n this.vehicleList[tempVehicle.id].IsShowroomPicked = tempVehicle.IsShowroomPicked;\r\n this.actionsService.broadcast(\r\n {\r\n action: 'comissionValue',\r\n behaviour: 'change',\r\n value: response.financeResponse.dealerCommissionGuide != null ? response.financeResponse.dealerCommissionGuide.mean : 0\r\n }\r\n );\r\n },\r\n error => {\r\n error = error.json();\r\n this.vehicleList[tempVehicle.id].errorList = error.filter(x => x.code != \"020105\");\r\n \r\n }\r\n );\r\n }\r\n \r\n currentSlides(n, string) {\r\n if (this.slideIndex == 3) {\r\n this.slideIndex = this.slideIndex - 1;\r\n this.showSlides(n, string);\r\n\r\n }\r\n else {\r\n this.showSlides(this.slideIndex += n, string);\r\n }\r\n }\r\n showSlides(n, string) {\r\n var i;\r\n var slides = document.getElementsByClassName(\"mySlides\");\r\n var dots = document.getElementsByClassName(\"dot\");\r\n if (n > slides.length) { this.slideIndex = 1 }\r\n if (n < 1) { this.slideIndex = slides.length }\r\n if (slides.length == n && this.slideIndex) {\r\n if (string == 'left') {\r\n for (i = 0; i < dots.length; i--) {\r\n this.slideIndex -= i;\r\n n -= i;\r\n dots[i].className = dots[i].className.replace(\"active\", \"\");\r\n }\r\n }\r\n else {\r\n //do nothing\r\n }\r\n }\r\n for (i = 0; i < slides.length; i++) {\r\n if (string == \"right\") {\r\n switch (this.slideIndex) {\r\n case 2: {\r\n document.getElementById(\"section\").scrollBy(100, 0);\r\n }\r\n break;\r\n case 3: {\r\n document.getElementById(\"section\").scrollBy(500, 0);\r\n }\r\n break;\r\n }\r\n document.getElementsByClassName(\"active\")[0].setAttribute(\"color\", \"none\");\r\n }\r\n if (string == \"left\") {\r\n switch (this.slideIndex) {\r\n case 2: {\r\n document.getElementById(\"section\").scrollBy(-100, 0);\r\n }\r\n break;\r\n case 1: {\r\n document.getElementById(\"section\").scrollBy(-500, 0);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n for (i = 0; i < dots.length; i++) {\r\n dots[i].className = dots[i].className.replace(\"active\", \"\");\r\n }\r\n dots[this.slideIndex - 1].className += \" active\";\r\n }\r\n\r\n} ","
\r\n \r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","/*\r\n Identity\r\n*/\r\nclass Identity {\r\n public title: string;\r\n public forename: string;\r\n public surname: string;\r\n public dateOfBirth: string;\r\n public gender: string // 'Male' | 'Female';\r\n public maidenName?: string;\r\n public maritalStatus: string\r\n public drivingLicense: string;\r\n public nationality: string;\r\n}\r\n\r\n\r\nexport {\r\n Identity\r\n}","import { Input } from '@angular/core';\r\nimport { Component, OnInit, Output, EventEmitter } from '@angular/core';\r\nimport { FileUploader, FileItem } from \"ng2-file-upload\";\r\nimport { ApplicationStatusService } from '../base-form/base-form-testing.barrel.spec';\r\n\r\n\r\n@Component({\r\n selector: 'document-lister',\r\n templateUrl: './document-lister.component.html',\r\n styleUrls: ['./document-lister.component.scss']\r\n})\r\n\r\nexport class DocumentListerComponent {\r\n\r\n @Input()\r\n uploader: FileUploader;\r\n\r\n @Output()\r\n itemUploaded: EventEmitter = new EventEmitter();\r\n\r\n @Output()\r\n itemDeleted: EventEmitter = new EventEmitter();\r\n\r\n maximumFileSize: number;\r\n acceptedFileFormats: string[];\r\n acceptedFileFormatsList: string ;\r\n \r\n constructor(private applicationStatusService : ApplicationStatusService) {\r\n this.maximumFileSize = this.applicationStatusService.configuration.proofs.maximumFileSize;\r\n this.acceptedFileFormats = this.applicationStatusService.configuration.proofs.acceptedFileFormats.map(acceptedFileFormat => acceptedFileFormat.mimeType);\r\n this.acceptedFileFormatsList = this.applicationStatusService.configuration.proofs.acceptedFileFormats.map(acceptedFileFormat => acceptedFileFormat.extention).sort().join(', ');\r\n \r\n }\r\n\r\n onRemove(item:FileItem){\r\n item.remove();\r\n this.itemDeleted.emit(item);\r\n }\r\n\r\n onUpload(item:FileItem){\r\n item.upload();\r\n this.itemUploaded.emit(item);\r\n }\r\n\r\n}\r\n","
    \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
  • \r\n
    \r\n \r\n {{item?.file?.name}}\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    {{uploader.progress}}%
    \r\n
    \r\n
  • \r\n
    \r\n\r\n \r\n
  • \r\n
    \r\n \r\n {{item?.file?.name}}\r\n
    \r\n
    \r\n This file exceeds the maximum file size restriction of {{maximumFileSize/1024000}}MB so will not be uploaded\r\n \r\n \r\n
    \r\n
  • \r\n
    \r\n\r\n \r\n
  • \r\n
    \r\n \r\n {{item?.file?.name}}\r\n
    \r\n
    \r\n This file is not a format that we accept so will not be uploaded. The following file types are accepted:\r\n {{acceptedFileFormatsList}}\r\n \r\n \r\n
    \r\n
  • \r\n
    \r\n\r\n\r\n
\r\n","/*\r\n Quotes\r\n*/\r\nclass LookUpVehicle {\r\n public regNumber: string;\r\n public loanTerm: number;\r\n public loanDeposit: number;\r\n public loanAmmount: number;\r\n public vehicleMileage: number;\r\n public cardId: number;\r\n public cardSuggested: boolean;\r\n public errorList?: errorList[];\r\n public IsShowroomPicked?: boolean;\r\n}\r\n\r\nclass DisplayVehicle {\r\n public make: string;\r\n public model: string;\r\n public variant: string;\r\n public source?: string;\r\n public registration: string;\r\n public regYear: number;\r\n public term: number;\r\n public financeType: string;\r\n public monthlyPayments: number;\r\n public imageUrl_Main: string;\r\n public balloon?:number;\r\n}\r\n\r\nclass Quote {\r\n public id: number;\r\n public applicationId: number;\r\n public vehicle: ProposedVehicle;\r\n public financeRequest: FinanceRequest;\r\n public financeResponse: FinanceResponse;\r\n public dateReceived: string;\r\n public isSelected: boolean;\r\n public manualLookUpOccured?: boolean;\r\n public showroomVisitOccured?: boolean;\r\n public showroomCarSelectionOccured?: boolean;\r\n}\r\n\r\nclass BaseVehicle {\r\n public id?: number;\r\n public make?: string;\r\n public model?: string;\r\n public source?: string;\r\n public derivative?: string;\r\n public variant?: string;\r\n public newcar?: boolean;\r\n public mockcar?: boolean;\r\n public bodyType?: boolean;\r\n public engineSize?: number;\r\n public fuelType?: string;\r\n public transmission?: string;\r\n public doors?: number;\r\n public colour?: string;\r\n public description?: string;\r\n public сO2Emissions?: number;\r\n public IsShowroomPicked?: boolean;\r\n public isSuggested?: boolean;\r\n}\r\n\r\nclass ProposedVehicle extends BaseVehicle {\r\n public registration?: string;\r\n public dateOfRegistration?: string;\r\n public mileage?: any;\r\n public fullPrice?: number;\r\n public price?: number;\r\n public valuation?: VehicleValuation;\r\n public errors?: errorList;\r\n public imageUrl?: string;\r\n public ImageUrl_Main?: string;\r\n public ImageUrl_Main1?: string;\r\n public ImageUrl_Main2?: string;\r\n public ImageUrl_Main3?: string;\r\n public ImageUrl_Main4?: string;\r\n public ImageUrl_Main5?: string;\r\n public ImageUrl_Main6?: string;\r\n public ImageUrl_Main7?: string;\r\n public ImageUrl_Main8?: string;\r\n public ImageUrl_Main9?: string;\r\n public capDetails?: VehicleCap;\r\n}\r\n\r\nclass VehicleValuation {\r\n public average: number;\r\n public below: number;\r\n public clean: number;\r\n public retail: number;\r\n public future: number;\r\n}\r\n\r\nclass errorList{\r\n code: string;\r\n label: string;\r\n}\r\n\r\nclass VehicleCap {\r\n public id: number;\r\n public code: string;\r\n}\r\n\r\nclass FinanceRequest {\r\n public loanAmount: number;\r\n public term: number;\r\n public deposit: Deposit;\r\n public financeType: string;\r\n public annualMileage?: number;\r\n public flatRatePercent?:number;\r\n public commissionLenderTiers? : LenderTier[];\r\n}\r\n\r\nclass LenderTier {\r\n public LenderId: number;\r\n public Tier: number;\r\n}\r\n\r\nclass FinanceResponse {\r\n public financeType?: string;\r\n public loanAmount?: number;\r\n public monthlyPayment?: number;\r\n public flatRate?: number;\r\n public apr?: number;\r\n public fees?: number;\r\n public balloon?: number;\r\n public deposit?: number;\r\n public term?: number;\r\n public totalAmountPayable?: number;\r\n}\r\n\r\nclass Deposit {\r\n public cash: number;\r\n public partExchange?: ProposedVehicle;\r\n public total: number;\r\n}\r\n\r\nclass QuoteServiceResponse {\r\n public id: string;\r\n public applicationId: string;\r\n public vehicle: ProposedVehicle;\r\n public financeRequest: ProposedVehicle;\r\n public financeResponse: FinanceResponse;\r\n public isSelected: boolean;\r\n public dateReceived: string;\r\n}\r\n\r\nclass AnalyticsData {\r\n public vehicle: VehicleAnalyticsData;\r\n public terms?: TermsAnalyticsData;\r\n}\r\n\r\n\r\nclass VehicleAnalyticsData {\r\n vrm: string;\r\n mileage: number;\r\n price: number;\r\n cap_valuation?: number;\r\n}\r\n\r\nclass TermsAnalyticsData {\r\n loanAmount?: number;\r\n months?: number;\r\n deposit?: number;\r\n financeType?: string;\r\n}\r\n\r\nclass Lender {\r\n code: String;\r\n financeTypeOffered: String;\r\n hardSearches: boolean;\r\n id: number;\r\n lenderTier: number;\r\n maxBaseRate: number;\r\n minBaseRate: number;\r\n name: String;\r\n}\r\n\r\nexport {\r\n LookUpVehicle, Quote, BaseVehicle, ProposedVehicle, VehicleValuation, VehicleCap, FinanceRequest, FinanceResponse, Deposit, QuoteServiceResponse,\r\n AnalyticsData, VehicleAnalyticsData, TermsAnalyticsData, DisplayVehicle, Lender\r\n}\r\n","\r\nconst PATTERNS = {\r\n BANK_ACCOUNT_NUMBER: '[0-9]{8}',\r\n SORT_CODE: '[0-9]{6}',\r\n UK_MOBILE_NUMBER: '[0-9]{11}',\r\n UK_TELEPHONE_NUMBER: '[0-9]{10,11}',\r\n UK_POSTCODE: '^([A-Za-z](([0-9][0-9]?)|([A-Za-z][0-9][0-9]?)|([A-Za-z]?[0-9][A-Za-z])) ?[0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2})$',\r\n URL: new RegExp('^(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]\\.[^\\s]{2,})', 'i'),\r\n VEHICLE_REGISTRATION: '(?^[A-Z]{2}[0-9]{2}[A-Z]{3}$)|(?^[A-Z][0-9]{1,3}[A-Z]{3}$)|(?^[A-Z]{3}[0-9]{1,3}[A-Z]$)|(?^[0-9]{1,4}[A-Z]{1,2}$)|(?^[0-9]{1,3}[A-Z]{1,3}$)|(?^[A-Z]{1,2}[0-9]{1,4}$)|(?^[A-Z]{1,3}[0-9]{1,3}$)|(?^[A-Z]{1,3}[0-9]{1,4}$)',\r\n TEXT_NAME_OR_PLACE: new RegExp('^[A-Za-z0-9\\ \\-\\.\\'\\\"\\&]*', 'i'),\r\n SIX_DIGITS_MAXIMUM:'^[0-9]{1,6}',\r\n SEVEN_DIGITS_MAXIMUM:'^[0-9]{1,7}'\r\n}\r\n\r\n\r\nexport {\r\n PATTERNS\r\n};\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'section-child-container',\r\n templateUrl: './section-child-container.component.html',\r\n styleUrls: ['./section-child-container.component.scss']\r\n})\r\nexport class SectionChildContainerComponent implements OnInit {\r\n\r\n @Input()\r\n title: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

{{title}}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { ForgottenPasswordComponent } from './components/forgotten-password/forgotten-password.component';\r\nimport { RegisterComponent } from './components/register/register.component';\r\nimport { RegistrationCompleteComponent } from './components/registration-complete/registration-complete.component';\r\n\r\n\r\nconst loginRoutes: Routes = [\r\n { path: 'login', component: LoginComponent },\r\n { path: 'register', component: RegisterComponent },\r\n { path: 'registered', component: RegistrationCompleteComponent },\r\n { path: 'forgotten-password', component: ForgottenPasswordComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(loginRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\n\r\nexport class LoginRoutingModule { }\r\n","export class Address{\r\n street: string;\r\n town: string;\r\n postcode: string;\r\n country: string;\r\n}","import { DomSanitizer, Title } from '@angular/platform-browser';\r\nimport { TokenService } from './../../../core/services/token/token.service';\r\nimport { environment } from './../../../../environments/environment';\r\nimport { Component, Input } from '@angular/core';\r\nimport { ActionsService } from \"../../../core/services/actions/actions.service\";\r\nimport { ApplicationStatusService } from './../../../core/services/application-status/application-status.service';\r\nimport { Application, Proof, RequiredProof, Document } from \"../../../core/services/types\";\r\nimport { FileUploader, FileItem, ParsedResponseHeaders } from \"ng2-file-upload\";\r\nimport * as moment from 'moment/moment'\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from '../../../../../node_modules/rxjs';\r\nimport { UserService } from '../../../core/services/user/user.service';\r\nimport { LoadingModalService } from '../../../core/services/modal/loading-modal.service';\r\n\r\nclass DropZone {\r\n uploader: FileUploader;\r\n label: string;\r\n requiredProof: RequiredProof;\r\n id: string;\r\n addingProof: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'documents',\r\n templateUrl: './documents.component.html',\r\n styleUrls: ['./documents.component.scss']\r\n})\r\nexport class DocumentsComponent {\r\n\r\n @Input()\r\n application: Application;\r\n\r\n public proofId: string;\r\n customerPack: Document;\r\n customerPackDocsUrl: string;;\r\n customerPackEsignUrl: string;\r\n lenderPack: Document;\r\n lenderPackDocsUrl: string;\r\n lenderPackEsignUrl: string;\r\n uploadProofUrl: string\r\n emptyDropzone: DropZone = new DropZone();\r\n dropZone: DropZone;\r\n totalRequired: number = 0;\r\n availableProofs: Proof[];\r\n requiredProofs: RequiredProof[];\r\n documents: Array\r\n documentsObservers: Subscription;\r\n downloadableFiles: number = 0;\r\n source: string;\r\n verificationModel: boolean = false;\r\n showExamples: boolean = false;\r\n customerPackEsign: boolean;\r\n lenderPackEsign: boolean = false;\r\n nextPageUrl: string;\r\n results: any[];\r\n CreditRating: string;\r\n isStaging: boolean = false;\r\n\r\n constructor(public actionsService: ActionsService,\r\n public applicationStatusService: ApplicationStatusService,\r\n private tokenService: TokenService,\r\n private domSanitizer: DomSanitizer,\r\n private parentRouter: Router,\r\n private userService: UserService,\r\n private loadingModalService: LoadingModalService,\r\n protected titleService: Title) { }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(\"Sign Agreements\");\r\n if (environment.name != \"PROD\") {\r\n this.isStaging = true;\r\n this.lenderPackEsign = true;\r\n }\r\n this.source = window.location.href.indexOf(\"dealerplus\") != -1 ? 'dealer' : '';\r\n this.CreditRating = this.application.creditRating.category;\r\n this.setUpDocuments();\r\n this.documentsObservers = this.actionsService.registerObserver(\r\n 'close.toggle',\r\n action => { this.showExamples = false; },\r\n this\r\n );\r\n this.nextPageUrl = 'applications/' + this.application.id + '/final-page';\r\n this.uploadProofUrl = environment.base + `/docs/?applicationId=${this.application.id}`;\r\n this.tryPrepareFileBlobForNonLink();\r\n this.requiredProofs = this.application.loanProposalResponses.filter(loan => loan.isSelected)[0].loanOffer.requiredProofs;\r\n var requiredProof = {\r\n label: \"Driving licence Front\",\r\n id: \"drivingLicenseFront\",\r\n description: \"Driving Licence (front)\",\r\n docsRequired: 1\r\n };\r\n this.dropZone = {\r\n uploader: new FileUploader({ removeAfterUpload: true }),\r\n label: \"Driving licence Front\",\r\n requiredProof: requiredProof,\r\n id: \"drivingLicenseFront\",\r\n addingProof: true\r\n };\r\n this.availableProofs = [];\r\n this.computeMissingDocuments(this.dropZone);\r\n this.bindEvents(this.dropZone);\r\n }\r\n\r\n setUpDocuments() {\r\n if (this.application.documents && Object.keys(this.application.documents).length > 0) {\r\n this.customerPack = this.application.documents.filter(doc => doc.id == \"CUSTOMER_PACK\")[0];\r\n if (this.customerPack) {\r\n for (var i = 0; i < this.customerPack.links.length; i++) {\r\n if (this.customerPack.links[i].isEsignLink) {\r\n this.customerPackEsign = true;\r\n this.customerPackEsignUrl = this.customerPack.links[i].url;\r\n }\r\n }\r\n if (!this.customerPackEsign) {\r\n this.downloadableFiles++;\r\n }\r\n }\r\n this.lenderPack = this.application.documents.filter(doc => doc.id == \"LENDER_PACK\")[0];\r\n if (this.lenderPack != undefined || this.lenderPack != null ) {\r\n for (var i = 0; i < this.lenderPack.links.length; i++) {\r\n if (this.lenderPack.links[i].isEsignLink) {\r\n this.lenderPackEsign = true;\r\n this.lenderPackEsignUrl = this.lenderPack.links[i].url;\r\n }\r\n }\r\n if (!this.lenderPackEsign) {\r\n this.downloadableFiles++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n tryPrepareFileBlobForNonLink() {\r\n if (this.customerPack) {\r\n for (var i = 0; i < this.application.documents[0].links.length; i++) {\r\n if (!this.application.documents[0].links[i].isEsignLink) {\r\n this.application.documents[0].links[i].url = this.createPdfBlob(this.application.documents[0].links[i].url);\r\n this.customerPackDocsUrl = this.application.documents[0].links[i].url;\r\n }\r\n }\r\n }\r\n if (this.lenderPack) {\r\n for (var i = 0; i < this.application.documents[1].links.length; i++) {\r\n if (!this.application.documents[1].links[i].isEsignLink) {\r\n this.application.documents[1].links[i].url = this.createPdfBlob(this.application.documents[1].links[i].url);\r\n this.lenderPackDocsUrl = this.application.documents[1].links[i].url\r\n }\r\n }\r\n }\r\n this.customerPack = this.application.documents.filter(doc => doc.id == \"CUSTOMER_PACK\")[0];\r\n this.lenderPack = this.application.documents.filter(doc => doc.id == \"LENDER_PACK\")[0];\r\n }\r\n\r\n createPdfBlob(base64String: string): string {\r\n var byteCharacters = atob(base64String);\r\n var byteArrays = [];\r\n for (var offset = 0; offset < byteCharacters.length; offset += 512) {\r\n var slice = byteCharacters.slice(offset, offset + 512);\r\n var byteNumbers = new Array(slice.length);\r\n for (var i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n var byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n var blob = new Blob(byteArrays, { type: 'application/pdf' })\r\n return URL.createObjectURL(blob);\r\n }\r\n\r\n removeAnyDuplicateAvailableProof(item: FileItem) {\r\n var foundProof = this.availableProofs.find(availableProof => availableProof.filename == item.file.name);\r\n if (foundProof != null) {\r\n this.removeProofFromAvailableProofs(foundProof);\r\n }\r\n }\r\n\r\n bindEvents(dropZone: DropZone) {\r\n dropZone.uploader.onSuccessItem = (item: FileItem, response: string, status: number, headers: ParsedResponseHeaders) => {\r\n this.removeAnyDuplicateAvailableProof(item);\r\n if (dropZone.addingProof) {\r\n this.availableProofs.push(this.getProof(item, dropZone.requiredProof.id));\r\n } else {\r\n this.dropZone.addingProof = true;\r\n }\r\n };\r\n dropZone.uploader.onErrorItem = (item: FileItem, response: string, status: number, headers: ParsedResponseHeaders) => {\r\n if (environment.name === \"MOCK\") {\r\n dropZone.uploader.onSuccessItem(item, response, 200, headers);\r\n this.mockItemUpload(dropZone, item);\r\n }\r\n else {\r\n throw {\r\n customError: {\r\n errorConfiguration: this.applicationStatusService.configuration.errors.proofs_upload,\r\n error: { status: status }\r\n }\r\n };\r\n }\r\n }\r\n dropZone.uploader.onCompleteAll = () => {\r\n this.computeMissingDocuments(this.dropZone);\r\n };\r\n }\r\n\r\n mockItemUpload(dropZone: any, item: FileItem) {\r\n var index = dropZone.uploader.queue.indexOf(item, 0);\r\n if (index > -1) {\r\n dropZone.uploader.queue.splice(index, 1);\r\n }\r\n }\r\n\r\n computeMissingDocuments(dropZone: DropZone) {\r\n dropZone.uploader.setOptions({\r\n url: this.uploadProofUrl,\r\n queueLimit: dropZone.requiredProof.docsRequired,\r\n authToken: 'Bearer ' + this.tokenService.bearerToken,\r\n additionalParameter: {\r\n label: dropZone.id\r\n }\r\n });\r\n }\r\n\r\n importFile(event, addingProofs: boolean) {\r\n this.loadingModalService.show();\r\n this.dropZone.addingProof = addingProofs;\r\n this.dropZone.uploader.addToQueue(event.target.files);\r\n this.loadingModalService.hide();\r\n }\r\n\r\n getProof(item: FileItem, id: string) {\r\n return {\r\n dateUploaded: moment(new Date()).format(\"DD-MM-YYYY\"),\r\n filename: item._file.name,\r\n id: 0,\r\n title: item._file.name,\r\n type: id\r\n };\r\n }\r\n\r\n removeProofFromAvailableProofs(proof: Proof) {\r\n let existingProof = this.availableProofs.find(p => p.filename === proof.filename);\r\n if (existingProof == null) {\r\n throw new Error(\"The deleted proof does not exist\");\r\n }\r\n let proofIndex = this.availableProofs.indexOf(existingProof);\r\n if (proofIndex === -1) {\r\n throw new Error(\"No index could be found for the existing index\");\r\n }\r\n this.availableProofs.splice(proofIndex, 1);\r\n }\r\n\r\n sanitize(url: string) {\r\n return this.domSanitizer.bypassSecurityTrustUrl(url);\r\n }\r\n\r\n goForward() {\r\n this.application.proofs = this.availableProofs;\r\n this.saveQuotes();\r\n }\r\n\r\n toogleEsign(isCustomerPack: boolean, turnEsignOn: boolean) {\r\n if (isCustomerPack) {\r\n this.customerPackEsign = turnEsignOn;\r\n }\r\n else {\r\n this.lenderPackEsign = turnEsignOn;\r\n }\r\n if (turnEsignOn) {\r\n this.downloadableFiles--;\r\n } else {\r\n this.downloadableFiles++;\r\n }\r\n }\r\n\r\n async saveQuotes() {\r\n if (this.availableProofs.length > this.downloadableFiles) {\r\n this.applicationStatusService.setState(this.application, 'PROOFS_RECEIVED')\r\n } else {\r\n this.applicationStatusService.setState(this.application, 'AWAITING_PROOFS');\r\n }\r\n this.application = await this.userService.updateApplication(this.application, 4).toPromise();\r\n this.parentRouter.navigateByUrl(this.nextPageUrl);\r\n }\r\n\r\n displayVerificationModel(bool) {\r\n this.verificationModel = bool;\r\n window.scroll(0, 0);\r\n }\r\n\r\n displayHelpBox(string) {\r\n if (string == \"employment\") {\r\n if (this.application.mainApplicant.employment[0].status == \"SEMP\") {\r\n string = \"Self-employed\";\r\n }\r\n }\r\n this.proofId = string;\r\n this.showExamples = true;\r\n }\r\n}\r\n","\r\n
\r\n

Agreement & Documentation

\r\n
Please sign and upload the following documentation and proofs
\r\n
\r\n
\r\n

Your Customer Pack

\r\n\r\n
Please download the document and then print it so you can sign the relevant parts. Then scan the new document and upload\r\n it in the box below.
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

Your Lender Documentation

\r\n
Please download the document and then print it so you can sign the relevant parts. Then scan the new document and upload\r\n it in the box below.
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Proofs for you to upload

\r\n
Please upload a copy of the following:
\r\n
\r\n
\r\n
\r\n
Driving Licence (Front, displaying current address)\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Driving Licence (back)\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Proof of employment\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Customer pack\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Lender pack\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Proofs for you to upload

\r\n
Please upload a copy of the following:
\r\n
\r\n
\r\n
\r\n
\r\n
Driving licence (Front, displaying current address)\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Driving licence (back)\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Proof of employment\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Customer pack\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Lender pack\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n

Drag and drop your file(s) here.

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Tap here to upload files\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{proofs.filename}}
\r\n \r\n  \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

Confirm uploads

\r\n

Please double check, that you have uploaded all of the following proofs before continuing

\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
","import { Component, OnInit, Input } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup, FormBuilder } from \"@angular/forms\";\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\n\r\n@Component({\r\n selector: 'page-size-selection',\r\n templateUrl: './page-size-selection.component.html',\r\n styleUrls: ['./page-size-selection.component.scss']\r\n})\r\nexport class PageSizeSelectionComponent implements OnInit {\r\n\r\n public form: FormGroup;\r\n \r\n @Input()\r\n pageSizeOptions: any[];\r\n\r\n constructor(public formBuilder: FormBuilder, private actionsService: ActionsService) {\r\n\r\n this.form = formBuilder.group({\r\n pageSize: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.form.setValue({pageSize: this.pageSizeOptions[0].value});\r\n }\r\n\r\n changePageSize() {\r\n\r\n this.actionsService.broadcast({\r\n action: 'pageSizeSelection',\r\n behaviour: 'change',\r\n value: this.form.controls.pageSize.value\r\n });\r\n }\r\n\r\n\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'loading',\r\n templateUrl: './loading.component.html',\r\n styleUrls: ['./loading.component.scss']\r\n})\r\n\r\nexport class LoadingComponent {\r\n @Input()\r\n loading:boolean=false;\r\n\r\n @Input()\r\n text:string='...loading...';\r\n\r\n @Input()\r\n imagesource:string='./assets/hourglass.gif';\r\n\r\n @Input()\r\n className:string;\r\n\r\n classes:any={};\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n if (this.className) {\r\n this.classes[this.className]=true;\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrls: ['./progress-bar.component.scss']\r\n})\r\nexport class ProgressBarComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Directive, OnChanges, SimpleChanges, Input } from '@angular/core';\r\nimport { Validator, AbstractControl, NG_VALIDATORS, ValidatorFn, ValidationErrors } from \"@angular/forms\";\r\nimport { isANumber } from \"../utilities\";\r\n\r\nexport function max(max: number): ValidatorFn {\r\n if (!isANumber(max)) {\r\n throw Error(\"The maximum is expected to be numerical\");\r\n }\r\n\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (control.value != null) {\r\n let value = Number(control.value);\r\n\r\n if (isANumber(value) && value > max) {\r\n return {\r\n 'max': {\r\n actualValue: value,\r\n maximumValue: max\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n\r\n@Directive({\r\n selector: '[maximum]',\r\n providers: [{ provide: NG_VALIDATORS, useExisting: MaxDirective, multi: true }]\r\n})\r\nexport class MaxDirective implements Validator, OnChanges {\r\n @Input()\r\n maximum: number;\r\n\r\n validator: ValidatorFn;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const change = changes['maximum'];\r\n\r\n if (change) {\r\n this.validator = max(change.currentValue);\r\n }\r\n else {\r\n this.validator = null;\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors {\r\n if (this.validator) {\r\n return this.validator(control)\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class IsMobileService {\r\n\r\n public isMobile():boolean{\r\n // https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser\r\n var check = false;\r\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor);\r\n return check;\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { VehicleService } from '../../../core/services/vehicle/vehicle.service';\r\n\r\n@Component({\r\n selector: 'desktop-warning',\r\n templateUrl: './desktop-warning.component.html',\r\n styleUrls: ['./desktop-warning.component.css']\r\n})\r\nexport class DesktopWarningComponent implements OnInit {\r\n @Input() contactId: string;\r\n @Input() contactEmail: string;\r\n\r\n textCopied:boolean = false;\r\n emailSent:boolean = false;\r\n\r\n constructor(private vehicleService: VehicleService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n copyToClipboard(){\r\n this.textCopied = true;\r\n var text:string = \"https://portal.creditplus.co.uk/login\"\r\n //console.log(\"text click as \" + text);\r\n navigator.clipboard.writeText(text);\r\n setTimeout(()=>{\r\n this.textCopied=false;\r\n },2000);\r\n \r\n }\r\n\r\n sendLinkEmail(){\r\n this.vehicleService.sendPortalLinkEmail(this.contactId, this.contactEmail);\r\n this.emailSent=true;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
Welcome to
\r\n \r\n
\r\n
Oops! Trying to access your Customer Portal?
\r\n
\r\n \r\n
\r\n
\r\n How to access your Portal account:\r\n
\r\n
\r\n Currently the Customer Portal is only accessible via mobile.

\r\n The easiest way to open this page on your mobile is to send yourself a link, follow the direction below.\r\n
\r\n
\r\n
Get Link
\r\n
To be able to access your portal copy or share the link between yourself, then open it on mobile.
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Your mobile device is too wide to display the portal in landscape mode.

Please rotate your phone.
\r\n
\r\n
\r\n\r\n","/*\r\n Contact\r\n*/\r\nclass Contact {\r\n public email: string;\r\n public telephone: string;\r\n public mobile: string;\r\n}\r\n\r\nexport {\r\n Contact\r\n}","\r\nimport {from as observableFrom, Observable , Subscription } from 'rxjs';\r\n\r\nimport {delay} from 'rxjs/operators';\r\n\r\nimport { Component, Input, ViewChild, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { ModalDirective } from 'ngx-bootstrap/modal';\r\nimport { GlobalModalService } from '../../services/modal/global-modal.service';\r\n\r\nvar TRANSITION_DURATION = 600;\r\n\r\n@Component({\r\n selector: 'global-modal',\r\n templateUrl: 'global-modal.component.html',\r\n styleUrls: ['./global-modal.component.scss'],\r\n exportAs: 'bs-modal'\r\n})\r\nexport class GlobalModalComponent implements OnDestroy {\r\n @ViewChild('modal')\r\n modal: ModalDirective;\r\n\r\n model: any;\r\n subscription: Subscription;\r\n promise: Promise;\r\n isVisible: boolean;\r\n collapsedContent: boolean = true;\r\n \r\n resolver: any;\r\n currentPromise;\r\n\r\n constructor(public globalModalService: GlobalModalService, public changeDetectorRef: ChangeDetectorRef) {\r\n\r\n // Subscribe to showAnnounced in the Global Modal service and show the Modal when it is broadcast\r\n this.subscription = this.globalModalService.showAnnounced$.subscribe(\r\n model => {\r\n this.show(model);\r\n }\r\n );\r\n\r\n this.model = {\r\n title: 'Save',\r\n content: 'Do you want to save the application?',\r\n yes: 'Yes',\r\n no: 'No',\r\n maybe: 'Stay',\r\n config: {\r\n ignoreBackdropClick: true,\r\n keyboard: false\r\n }\r\n };\r\n\r\n this.isVisible = false;\r\n }\r\n\r\n public show(model: any): Promise {\r\n if (this.currentPromise) {\r\n observableFrom(this.currentPromise).pipe(delay(TRANSITION_DURATION)).subscribe(() => this.triggerPopup(model));\r\n }\r\n else {\r\n this.currentPromise = this.triggerPopup(model);\r\n }\r\n\r\n return this.currentPromise;\r\n\r\n }\r\n\r\n triggerPopup(model: any): Promise {\r\n this.model = model;\r\n\r\n if (this.currentPromise) {\r\n this.currentPromise = null;\r\n }\r\n\r\n var result: Promise = new Promise(\r\n (resolve, reject) => {\r\n this.changeDetectorRef.detectChanges();\r\n\r\n this.modal.show();\r\n this.isVisible = true;\r\n\r\n this.resolver = resolve;\r\n\r\n }\r\n );\r\n\r\n return result;\r\n }\r\n\r\n collapsedContentToggle() {\r\n\r\n this.collapsedContent = !this.collapsedContent;\r\n\r\n }\r\n\r\n public hide(): void {\r\n this.modal.hide();\r\n this.isVisible = false;\r\n }\r\n\r\n public confirm(): void {\r\n this.resolver(true);\r\n this.hide();\r\n this.globalModalService.response(true);\r\n\r\n }\r\n\r\n public maybe(): void {\r\n this.resolver(null);\r\n this.hide();\r\n this.globalModalService.response(null);\r\n }\r\n\r\n public reject(): void {\r\n this.resolver(false);\r\n this.hide();\r\n this.globalModalService.response(false);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n \r\n

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

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

{{model.exceptionInfo.message}}

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
","import { Component, OnInit, Input } from '@angular/core';\r\nimport { DisplayVehicle } from '../../../core/services/types-quote';\r\nimport { Subscription } from '../../../../../node_modules/rxjs';\r\nimport { min } from '../../directives/validation/min/min.directive';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\n\r\n@Component({\r\n selector: 'suggest-finance',\r\n templateUrl: './suggest-finance.component.html',\r\n styleUrls: ['./suggest-finance.component.scss']\r\n})\r\nexport class SuggestFinanceComponent implements OnInit {\r\n \r\n @Input() displayVehicle: DisplayVehicle[];\r\n vehicle: any;\r\n \r\n constructor(private actionsService: ActionsService) { }\r\n \r\n ngOnInit() {\r\n this.vehicle = this.displayVehicle[0];\r\n for (var dv of this.displayVehicle){\r\n if (dv.monthlyPayments < this.vehicle.monthlyPayments ) {\r\n this.vehicle = dv;\r\n }\r\n }\r\n }\r\n}\r\n\r\n","
\r\n

It looks like you can get from

\r\n

{{ vehicle.monthlyPayments| currency:'GBP'}}

\r\n

per month

\r\n

60 monthly payments over 5 years

\r\n

Not found a vehicle yet? What about these?

\r\n
","import { Injectable } from '@angular/core';\r\n\r\nimport { Application, Condition, ProposedVehicle } from \"../../../core/services/types\";\r\n\r\nimport * as moment from 'moment/moment';\r\n\r\n@Injectable()\r\nexport class ConditionsService {\r\n\r\n constructor() { }\r\n\r\n public checkConditions(application: Application, conditions: Condition[]) {\r\n\r\n var vehicle = this.getSelectedVehicle(application);\r\n\r\n return this.checkVehicleConditions(application, vehicle, conditions);\r\n\r\n }\r\n\r\n public checkVehicleConditions(application: Application, vehicle: ProposedVehicle, conditions: Condition[]) {\r\n\r\n var conditionMet: boolean = true;\r\n\r\n return conditions.every(\r\n condition => {\r\n\r\n if (Object.keys(vehicle).length == 0 && condition.key.toLowerCase() != 'netmonthlyincome') {\r\n return false;\r\n }\r\n\r\n switch (condition.key.toLowerCase()) {\r\n case 'retailprice':\r\n conditionMet = this.checkCondition(vehicle.valuation.retail, condition);\r\n break;\r\n\r\n case 'enginesize':\r\n conditionMet = this.checkCondition(vehicle.engineSize, condition);\r\n break;\r\n\r\n case 'netmonthlyincome':\r\n conditionMet = this.checkCondition(application.mainApplicant.income.monthlyIncome, condition);\r\n break;\r\n\r\n case 'mileage':\r\n conditionMet = this.checkCondition(vehicle.mileage, condition);\r\n break;\r\n\r\n case 'vehicleage':\r\n var dateOfApplication = moment(application.dateOpened);\r\n var duration = moment.duration(dateOfApplication.diff((vehicle.dateOfRegistration)));\r\n conditionMet = this.checkCondition(duration.asYears().toFixed(2), condition);\r\n break;\r\n\r\n default:\r\n conditionMet = false;\r\n }\r\n\r\n return conditionMet;\r\n }\r\n );\r\n\r\n }\r\n\r\n public checkCondition(value, condition: Condition): boolean {\r\n\r\n var show: boolean = true;\r\n\r\n switch (condition.comparison) {\r\n case '=':\r\n show = (value == condition.value);\r\n break;\r\n\r\n case '>=':\r\n show = (value >= condition.value);\r\n break;\r\n\r\n case '<=':\r\n show = (value <= condition.value);\r\n break;\r\n\r\n case '<':\r\n show = (value < condition.value);\r\n break;\r\n\r\n case '>':\r\n show = (value > condition.value);\r\n break;\r\n\r\n case '<>':\r\n show = (value != condition.value);\r\n break;\r\n\r\n default:\r\n show = false;\r\n }\r\n\r\n return show;\r\n\r\n }\r\n\r\n public getSelectedVehicle(application: Application) {\r\n\r\n if (typeof application.quotes != 'undefined') {\r\n var quote = application.quotes.find(quote => quote.isSelected == true);\r\n\r\n if (typeof quote != 'undefined') {\r\n return quote.vehicle;\r\n }\r\n }\r\n return {};\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\n\r\n@Component({\r\n moduleId: module.id,\r\n selector: 'application-footer',\r\n templateUrl: 'application-footer.component.html',\r\n styleUrls: ['application-footer.component.scss']\r\n})\r\nexport class ApplicationFooterComponent implements OnInit {\r\n\r\n routerOutletSubscription: Subscription;\r\n\r\n cssClass:string;\r\n\r\n constructor(private actionsService: ActionsService) { }\r\n \r\n \r\n ngOnInit() {\r\n\r\n this.routerOutletSubscription=this.actionsService.registerObserver(\r\n 'header.changeCSSClass',\r\n action => {\r\n\r\n this.cssClass=action.value;\r\n },\r\n this\r\n );\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n this.actionsService.cancelSubscription(this.routerOutletSubscription);\r\n\r\n }\r\n}\r\n","
\r\n\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'panoramic-viewer',\r\n templateUrl: './panoramic-viewer.component.html',\r\n styleUrls: ['./panoramic-viewer.component.css']\r\n})\r\nexport class PanoramicViewerComponent implements OnInit {\r\n\r\n @Input() imageUrl:string;\r\n\r\n imageWasResized:boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n}\r\n\r\nngAfterViewInit(){\r\n \r\n const create360Viewer = require('360-image-viewer');\r\n const canvasFit = require('canvas-fit');\r\n \r\n // load your image\r\n var image = new Image();\r\n image.crossOrigin = \"anonymous\"; // ask for CORS permission\r\n image.src = this.imageUrl;\r\n \r\n \r\n image.onload = () => {\r\n if (this.imageWasResized==false){\r\n var canvas = document.createElement('canvas');\r\n canvas.width = image.width/2;\r\n canvas.height = image.height/2;\r\n canvas.getContext('2d').drawImage(image, 0, 0, image.width/2, image.height/2);\r\n image.src = canvas.toDataURL('image/jpeg');\r\n this.imageWasResized=true;\r\n }\r\n else{\r\n var viewer = create360Viewer({\r\n image:image, fov: 90, rotateSpeed: -0.2\r\n });\r\n // attach canvas to body\r\n document.getElementById(\"canvas-holder\").appendChild(viewer.canvas);\r\n \r\n // setup fullscreen canvas sizing\r\n const fit = canvasFit(viewer.canvas, window, window.devicePixelRatio);\r\n window.addEventListener('resize', fit, false);\r\n fit();\r\n \r\n // start the render loop\r\n viewer.start();\r\n\r\n }\r\n}\r\n}\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n

You are looking to buy this

\r\n

{{vehicle.make}} {{vehicle.model}}

\r\n

Registration: {{vehicle.registration}} ({{vehicle.regYear}})

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

{{vehicle.term}} monthly payments from

\r\n

{{vehicle.monthlyPayments | currency:'GBP'}}

\r\n

{{lendingTerms.loanAmount | currency:'GBP'}} at {{lendingTerms.apr}}% APR

\r\n

({{lendingTerms.totalPayable | currency:'GBP'}} total repayable)

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n from\r\n \r\n

{{vehicle.monthlyPayments | currency:'GBP':true:'1.1-1'}}

\r\n \r\n per month for {{vehicle.term}} months\r\n \r\n
\r\n
\r\n
\r\n With a \r\n

£{{vehicle.balloon}}

\r\n purchase option\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Representative example\r\n
\r\n

Borrowing £7,500 over 48 months with a representative APR of 18.9%, an annual interest rate of 18.9% (Fixed)\r\n and a deposit of £0.00, the amount payable would be £223.86 per calendar month, with a total cost of credit\r\n of £3,245.06 and a total amount payable of £10,745.06.\r\n

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

You are looking to buy this

\r\n
\r\n

{{vehicle.make}} {{vehicle.model}}

\r\n

Reg: {{vehicle.registration}} ({{vehicle.regYear}})

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

{{vehicle.term}} monthly payments from\r\n {{vehicle.monthlyPayments | currency:'GBP'}}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { DisplayVehicle } from '../../../core/services/types-quote';\r\n\r\n@Component({\r\n selector: 'show-vehicle',\r\n templateUrl: './show-vehicle.component.html',\r\n styleUrls: ['./show-vehicle.component.scss']\r\n})\r\nexport class ShowVehicleComponent implements OnInit {\r\n @Input() displayVehicle: DisplayVehicle[];\r\n @Input() applicationStatus: string;\r\n @Input() lendingTerms;\r\n\r\n vehicle : any;\r\n regYearFormat: string;\r\n showVehicleOnserver: Subscription;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (!Array.isArray(this.displayVehicle)) {\r\n this.displayVehicle = [this.displayVehicle];\r\n }\r\n this.vehicle = this.displayVehicle[0];\r\n }\r\n}\r\n","\r\nimport { RequiredProof } from \"./types-proof\";\r\n\r\n/*\r\n Loan offers\r\n*/\r\n class LoanOffer {\r\n id: number;\r\n lenderid: number;\r\n lendername: string;\r\n image: string;\r\n funderReference: string;\r\n // product: string;\r\n status: string;\r\n loanOffer?: Offer;\r\n errors: any;\r\n dateReceived: string;\r\n isSelected: boolean;\r\n commission: dealerCommission;\r\n display?: boolean;\r\n }\r\n \r\n class Offer {\r\n product: string;\r\n loanAmount: number;\r\n payment: number;\r\n rate: number;\r\n apr: number;\r\n fees: number;\r\n balloon: number;\r\n deposit: number;\r\n term: number;\r\n totalPayable: number;\r\n requiredProofs?: RequiredProof[];\r\n }\r\n\r\n class dealerCommission{\r\n dealerCut: number;\r\n lenderTier: LenderTier;\r\n totalValue: number;\r\n }\r\n \r\n class LenderTier{\r\n lenderId: number;\r\n tier: number;\r\n }\r\n export {\r\n LoanOffer, Offer, dealerCommission, LenderTier\r\n }","import { Component, OnInit } from '@angular/core';\r\nimport { ActionsService } from '../base-form/base-form-testing.barrel.spec';\r\n\r\n@Component({\r\n selector: 'dealerplus-privacy-policy',\r\n templateUrl: './dealerplus-privacy-policy.component.html',\r\n styleUrls: ['./dealerplus-privacy-policy.component.scss']\r\n})\r\nexport class DealerplusPrivacyPolicyComponent implements OnInit {\r\n constructor(private actionsService: ActionsService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n hidePolicy() {\r\n this.actionsService.broadcast({\r\n action: 'hide',\r\n behaviour: 'privacy',\r\n value: true\r\n });\r\n\r\n }\r\n}","
\r\n

Terms & Conditions

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

\r\n 1. Acceptance of Terms\r\n

\r\n\r\n

1.1. The website www.Dealerplus.co.uk (“the Site”) is a site operated by Whichdeal Limited, trading as ‘Dealerplus’\r\n (\"We, Us, Dealerplus\"). We are registered in The United Kingdom under company number 04997789 and our registered\r\n office address is Waterloo House, Fleets Corner, Nuffield Road, Poole, Dorset, BH27 0HL, UK. We are a limited company.\r\n

\r\n\r\n

1.2. We are governed by UK and EU laws.

\r\n\r\n

1.3. We are a “regulated Business”, directly authorised and regulated by the Financial Conduct Authority (FCA) Registration\r\n Number 456327.

\r\n\r\n

1.4. Please make sure you have read these Terms & Conditions carefully, they protect you as a user of the Site\r\n and prevent the Site from being used for any illegal or unauthorised purposes. They also outline the parameters on\r\n which you are permitted to use the Site and by accessing and continuing to use this Site you agree to be bound by\r\n and act in accordance with these Terms & Conditions.

\r\n\r\n

1.5. Your privacy is very important to us and we process all information about you in accordance with our Privacy Policy\r\n and Cookies Policy. By accessing and using the Site, you confirm that you have read and agreed to our Privacy Policy\r\n and Cookies Policy. We recommend that you print or save a copy of these Terms and Conditions for your information/future\r\n reference.

\r\n\r\n

1.6. We may amend these Terms & Conditions at any time without prior notice. You are expected to check these Terms\r\n & Conditions from time to time and your continued use of the Site will mean that you accept any amendments to\r\n the Terms & Conditions.

\r\n\r\n

1.7. All rights, including copyright and database rights of the Dealerplus website and its contents are owned by Dealerplus\r\n or otherwise used by Dealerplus as permitted by applicable law.

\r\n\r\n

1.8. To apply you must be at least 18 years old and a UK resident (excluding the Channel Islands and the Isle of Man).\r\n Car finance is also subject to personal circumstance.

\r\n\r\n

1.9. If you have any questions, queries or concerns relating to these Terms & Conditions, please contact us at\r\n compliance@dealerplus.co.uk\r\n

\r\n\r\n

\r\n 2. Website\r\n

\r\n\r\n

2.1. The Site is a medium for providing information and access to products and services of third parties, which is\r\n related to cars including new and used car loans. The site also advertises vehicles for sale by third party sellers\r\n on our web application(s) as indicated in these Terms & Conditions as “Dealerplus”.

\r\n\r\n

2.2. We do our utmost to ensure that the information on the Site is accurate, reliable and helpful. However, the information\r\n is general in nature, and is intended as a guide only to the types of products and services offered by Dealerplus.\r\n Users are advised to consult with Dealerplus and to check any product or service information for specific information.\r\n We will not be responsible if any such material is untrue, inaccurate, incomplete and/or contains errors and we disclaim\r\n all liability and responsibility arising from any reliance you place on such material.

\r\n\r\n

2.3. All vehicle descriptions are supplied by dealers, and therefore Dealerplus shall not be held responsible for any\r\n related errors or emissions on pricing or vehicle description. Dealerplus has the right to refuse a sale or adjust\r\n any details up until an order has been received in writing from the customer at an agreed price set by Dealerplus.\r\n

\r\n\r\n

2.4. Any loan or other product or service which you obtain via the Site will be subject to the terms and conditions\r\n of the relevant product provider. Before proceeding with any loan or other product or service with the product provider,\r\n you should read its terms and conditions carefully and, where appropriate, take independent advice.

\r\n\r\n

2.5. The Site and the information supplied for use with it have been obtained from sources believed to be reliable\r\n and accurate at the date of publication. Dealerplus makes no representation or warranty, express or implied, as to\r\n its accuracy or completeness. No independent verification has been undertaken in respect of the information supplied.

\r\n\r\n

2.6. Material contained on the site may be out of date at any given time and, whilst we endeavour to maintain the validity\r\n of material and to ensure that the information is up to date. However, we are under no obligation to do so and material\r\n on the site may be subject to change at any time.

\r\n\r\n

2.7. If a linked site is used, any personal information you provide to that site will be actioned in line with that\r\n site’s Privacy policy, not the privacy policy of Dealerplus, so please ensure that you have read that site’s Privacy\r\n Policy and Terms & Conditions before you provide any personal Information and use the services of that website.

\r\n\r\n

\r\n 3. Your use of the Website\r\n

\r\n\r\n

3.1. By accessing Dealerplus web pages, you agree that you will access the contents solely for your own private use\r\n and not for any commercial or public use. Except as permitted within, you undertake not to copy, store in any medium\r\n (including in any other website), distribute, transmit, re-transmit, broadcast, modify, or show in public any part\r\n of Dealerplus web site save for the purposes as laid out in these terms and conditions without the prior written\r\n permission of Dealerplus or in accordance with the Copyright, Designs and Patents Act 1988.

\r\n\r\n

3.2. Anyone can access the Dealerplus site using their web browser and associated internet connection. However, if\r\n you want to access and use Dealerplus website and/or any connected services, you as consumer will need to make an\r\n application for Motor Finance. To access the afore mentioned services you must be 18 years of age or older and be\r\n resident within the United Kingdom.

\r\n\r\n

3.3. You must not under any circumstances attempt to gain unauthorised access to our site, the server on which our\r\n site is stored, or any server, computer or database connected to our site. You must not seek to undermine the security\r\n of the site in any way. In particular, but without limitation, you must not attempt to alter or delete any information\r\n that you are not authorised to access, attack our site via a denial-of-service attack or a distributed denial-of\r\n service attack. By doing so you would commit a criminal offence under the Computer Misuse Act 1990.

\r\n\r\n

3.4. You are permitted to print or download extracts from material on the site as a consumer for your personal use\r\n only, provided you keep intact all or any copyright and proprietary notes contained on the site. No licence is granted\r\n to you in these Terms & Conditions to use any trade mark of Dealerplus.

\r\n\r\n

3.5. The site may be used only for lawful purposes and you may not use the site that in any way breaches any local,\r\n national or international law or regulation. In any way that is unlawful or fraudulent or has any unlawful or fraudulent\r\n purpose or effect.

\r\n\r\n

3.6. You are not permitted to use the site for the purpose or intent of attempting to harm minors in any way

\r\n\r\n

3.7. You may not use the site to knowingly transmit, send upload or conceal any data or other material that may contain\r\n viruses, spyware, adware or any other harmful programs or similar computer designed code(s) to damage, disrupt or\r\n adversely affect the operation of the site or any computer software/hardware.

\r\n\r\n

\r\n 4. Disclaimer/Liability\r\n

\r\n\r\n

4.1. Neither the Site nor the information derived from it constitutes an offer by Dealerplus. Prices contained within\r\n the site and/or Quotations subsequently obtained are subject to confirmation by Dealerplus. We have the right to\r\n decline any proposal. No contract will be binding on Dealerplus unless it is in writing and signed by a duly authorised\r\n representative of Dealerplus.

\r\n\r\n

4.2. Any photographs and colours used in the site are for illustrative purposes only and do not form part of any contract.\r\n

\r\n\r\n

4.3. We do not make any promises as to the availability, accessibility and or reliability of the site(s)when you wish\r\n to access, the content on it or the services we provide will be available or delivered uninterrupted in a timely\r\n manner or error free and it may be necessary to suspend, restrict or terminate access by users at any time. If a\r\n fault does occur in the service you experience, you should report it to us and we will attempt to reinstate the service\r\n as soon as we reasonably can.

\r\n\r\n

4.4. Accordingly, neither Dealerplus nor its directors, representatives or employees, accept any liability whatsoever\r\n for any direct, indirect or consequential loss howsoever arising from the use of this Site and the information supplied\r\n in connection therewith.

\r\n\r\n

4.5. By using the Site the User further agrees to indemnify and hold Dealerplus harmless from any and all claims, expenses\r\n and liability of any kind arising out of or in connection with any use of the Site.

\r\n\r\n

4.6. The Site contains links to other websites. When you activate any of these links, you will leave the Site and we\r\n accept no responsibility for the availability or content of any linked websites or for any loss or damage that may\r\n arise from your use of them. The links are provided for your convenience and any such link does not imply endorsement\r\n by us of a website or any association with the operators of a website.

\r\n\r\n

4.7. In assessing your car loan application, we will make enquiries about you including searching your records held\r\n by Equifax Plc and/or Experian Ltd. You consent to us disclosing details of your finance application and we may use\r\n a 'credit scoring' or other automated process in deciding whether to accept your application. Your information may\r\n also be sent to a third party for further loan/insurance option purposes. Loan offers will be valid for 30 days.\r\n

\r\n\r\n

4.8. Any access to the Dealerplus site is permitted on a temporary basis, as we reserve the right to amend or withdraw\r\n the service we provide on the site at any time and without notice. We will not be held liable if, for any reason,\r\n the site is unavailable at any time or for any period of time.

\r\n\r\n

\r\n 5. New and Pre-registered Cars supplied by Dealerplus\r\n

\r\n\r\n

5.1. All New and Pre-registered cars supplied by Dealerplus will be covered by the relevant Manufacturer’s warranty.\r\n Where a vehicle is Pre-registered the balance of manufacturer’s warranty shall apply with no additional warranties\r\n being supplied by Dealerplus. It is the customer’s responsibility to be fully aware of the parts not covered by the\r\n manufacturer’s car warranty (if any). All New & Pre-registered cars are supplied on the basis that the client\r\n understands Dearlerplus will not rectify or compensate for any car repairs outside of the car warranty.

\r\n\r\n

5.2. If a New or Pre-registered car is returned the customer bears the cost of return along with a cancellation fee\r\n of 5% of the car value or a minimum of £500, whichever is the greater.

\r\n\r\n

\r\n 6. Used Cars Supplied by Dearlerplus\r\n

\r\n\r\n

6.1. Cars supplied by Dealerplus will be covered by a car warranty for a minimum of 6 months. It is the customer's\r\n responsibility to be fully aware of the parts not covered by the car warranty (if any). The car is supplied on the\r\n basis that the client understands Dearlerplus will not rectify or compensate for any car repairs outside of the car\r\n warranty. For further information visit our car warranties explained page (/help-and-advice/making-anapplication/joint-applications/guarantor/).\r\n

\r\n\r\n

6.2. If a car is returned the customer bears the cost of return and a cancellation fee of 5% of the car value or a\r\n minimum of £500, whichever is the greater.

\r\n\r\n

6.3. The Dearlerplus Vehicle Standards Guideline can be found here (/media/1255/vehiclestandards.pdf).

\r\n\r\n

6.4. On delivery of a vehicle supplied by Dealerplus, you must inspect it and sign for its acceptance. If you allow\r\n another individual to do this, it will be taken that they are acting fully on your behalf and that you personally\r\n have accepted the vehicle. If you require a test drive of the vehicle, you need to notify the driver who will allow\r\n you to do so.

\r\n\r\n

6.5. The customer has a 14-day notice period from delivery, for notification of any mechanical or body defects providing\r\n they are not commensurate with the vehicle age and mileage or notified to you before delivery.

\r\n\r\n

6.6. Cancellation after accepting the vehicle will only be allowed provided the goods are deemed faulty and that Dearlerplus\r\n cannot repair such items within 30 days. The cancellation fee does not apply if the vehicle order is cancelled under\r\n these terms. Order pricing is valid 02/01/2020 Terms and Conditions https://www.dealerplus.co.uk/terms-and-conditions/\r\n 4/8 pp y p g for 14 days. If you are purchasing the vehicle using finance, you need to refer to the lenders terms\r\n and conditions. This does not affect your statutory rights as per distance selling rights.

\r\n\r\n

\r\n 7. Data Protection\r\n

\r\n\r\n

7.1 If you make an application, your details will be held on computer and used in a credit scoring or other automated\r\n decision-making process when assessing your application. An enquiry will be made with Credit Reference Agencies,\r\n who will record it so that it can be viewed by other Agency users. Your information will also be checked with fraud\r\n prevention agencies and if fraud is suspected Dealerplus (\"we\" or \"us\") will record this and those details will be\r\n shared with other subscribing organisations. For the purposes of this application you may be treated as financially\r\n linked and your application will be assessed with reference to any \"associated\" records. If you are a joint applicant\r\n or if you have told us of some other financial association with another person, you must be sure that you are entitled\r\n to:

\r\n\r\n

1.1. Disclose information about your joint applicant and anyone referred to by you

\r\n\r\n

1.2. Authorise Dealerplus to search, link or record information at credit reference agencies about you and anyone referred\r\n to by you

\r\n\r\n

7.2 You authorise us to make all enquiries necessary to verify this information to enable us to consider this and or\r\n any subsequent application. By agreeing to the terms and conditions when making your application, you are giving\r\n your consent for your information to be used by Dealerplus for administrative, underwriting, marketing and revenue\r\n purposes. This may include partners or related 3rd parties. This also includes any of our sister sites. If you do\r\n not want your details to be used for marketing please write to Dealerplus, Waterloo House, Fleets Corner, Nuffield\r\n Road, Poole, Dorset, BH27 0HL. Under the terms of the act you have the right to obtain a copy of the information\r\n held about you upon payment of the appropriate fee.

\r\n\r\n

7.3 Regulatory requirements and applicable laws state that there are elements of the service that must be communicated\r\n in writing. Our main communication means with you will be electronic. We will contact you by letter or email. For\r\n contractual purposes, you consent to electronic means of communication and acknowledge that all information, notices,\r\n contracts, agreements and other communications we provide to you as customer electronically, comply with and regulatory\r\n and legal requirement that such communication be in writing. This condition in no way affects your statutory rights.

\r\n\r\n

\r\n 8. Additional Fees\r\n

\r\n\r\n

8.1 At the request of the customer, Dealerplus will disclose to the customer, in good time before a regulated credit\r\n agreement or a regulated consumer hire agreement is entered into, the amount (or if the precise amount is not known,\r\n the likely amount) of any commission or fee or other remuneration payable to Dearlerplus by the lender or owner or\r\n a third party.

\r\n\r\n

8.2 Dealerplus reserve the right to charge an administration fee to cover the cost of sourcing a suitable vehicle or\r\n vetting an appropriate dealer. The administration charge is kept to a minimum to cover costs only. In the event of\r\n a cancelled order by the client, or the client changing supplier the administration fee will not be returned by Dealerplus.\r\n

\r\n\r\n

8.3 If a customer wants payment from a lender within 24 hours of pay-outs, Dealerplus will charge a £25 administration\r\n fee.

\r\n\r\n

8.4 As per Road Fund Licence (Road Tax) regulation changed on 1\r\n st October 2014, Dealerplus are not able to provide any road tax with any vehicle, new or used. It is the responsibility\r\n of the customer to contact the DVLA and arrange road tax payment. Dealerplus will not be held responsible for any\r\n loss incurred by the customer for failure to comply with the new regulations. 02/01/2020Terms and Conditions https://www.dealerplus.co.uk/terms-and-conditions/\r\n 5/8

\r\n\r\n

8.5 All contacts supplied by Dealerplus will be in English.

\r\n\r\n

\r\n 9. Information about our Financial Services\r\n

\r\n\r\n

9.1 Dealerplus is a specialist vehicle financier and vehicle supplier, strictly governed by its relationships with\r\n lenders and dealers, and cannot be held responsible for any change to vehicle specification or finance rates or any\r\n other variable outside of its control so imposed by those companies.

\r\n\r\n

9.2 The term of any contract we offer will be between 12-60 months. We do not offer contracts for less than 12 months.\r\n

\r\n\r\n

9.3 Any offers provided by Dealerplus will be valid for 30 days, from the date issued.

\r\n\r\n

9.4 The Consumer Rights Act 2015 exists to protect the customers from businesses that operate without reasonable care\r\n and skill. All services supplied by Dealerplus are governed by the Consumer Rights act 2015 which superseded the\r\n Supply of Goods & Services act of 1982. You can find the act with full details here\r\n http://www.legislation.gov.uk/ukpga/2015/15/pdfs/ukpga_20150015_en.pdf ).

\r\n\r\n

9.5 You will be provided with a standardised form with any credit agreement called Standard European Consumer Credit\r\n Information (SECCI). This document allows you to see exactly what your finance agreement contains. For more information\r\n visit our car finance glossary, SECCI explained page (/why-us/our-values/ethical-lending-policy/).

\r\n\r\n

9.6 Quotes generated by the 'Build your finance quote' form are powered by the vehicle and finance settings chosen\r\n by the user. All the quotes are based on prime interest rates and are subject to change. In addition, the quotes\r\n do not take into account any customer information or circumstances which can affect an individual’s chance of getting\r\n finance for a vehicle. The figures provided by this form are quotes and do not represent an acceptance for a loan\r\n of any kind. As the quotes are subject to a user’s personal circumstances and lender requirements, full confirmation\r\n on the price to be paid (including all related lender fees) will be detailed in the lender’s customer documentation\r\n pack.

\r\n\r\n

\r\n 10.Complaints\r\n

\r\n\r\n

10.1 If you have a complaint then we have full details of the complaint’s procedure available on our complaints page.\r\n Any general complaints or feedback please contact us at\r\n complaints@dealerplus.co.uk or by post to Dealerplus.

\r\n\r\n

10.2 If 8 weeks has passed since making your complaint and you are still not happy then you may contact the Financial\r\n Ombudsman Service (FOS). Details on FOS and how to contact them can be found on our complaints page.

\r\n\r\n

10.3 As a company we respect the intellectual property rights of other users of our site are prohibited from uploading,\r\n posting, submitting or transmitting any materials that impair, violate or infringe any other person’s intellectual\r\n property rights. It is our policy to comply with clear notices of alleged copyright infringement. If you are aware\r\n of, or wish too submit a notice of alleged copyright infringement or lodge a counter notice, please contact us by\r\n emailing\r\n compliance@dealerplus.co.uk\r\n

\r\n\r\n

\r\n 11.Cancellation Policy\r\n

\r\n\r\n

11.1 The customer has 14 days from the date of funding to cancel the agreement with no penalty.

\r\n\r\n

11.2 If the car is delivered the customer has 14 days from the day of delivery to cancel without penalty under the\r\n Consumer Contracts Regulations 2014 and the Consumer Rights Act of 2015. However, the vehicle supplier has the right\r\n to claim reasonable compensation for any true costs incurred.

\r\n\r\n

\r\n 12.Compensation\r\n

\r\n\r\n

You agree to only use the site in accordance with these Terms and Conditions and further agree to compensate us (and\r\n our agents, suppliers, employees and officers) in full for any costs, losses, damages and expenses, including reasonable\r\n legal fees, that we incur, arising from or in connection with any breach of these Terms and Conditions. This includes\r\n any actions that you take which disrupts access to and/or the functioning of the sites(S), or any liability we incur\r\n as a result of your use of the site(s).

\r\n\r\n

\r\n 13.Changes\r\n

\r\n\r\n

These Terms and Conditions may change at any time as the conditions or terms alter. It is the responsibility of the\r\n users of the site to ensure that they review our Terms & Conditions should they use the site on each occasion.\r\n Continued us of the site means that you accept any such changes.

\r\n\r\n

\r\n 14. Got a question for us?\r\n

\r\n\r\n

If you require further assistance, our team of Customer Advisors are here to help. We're open seven days a week - you\r\n can view our opening hours here Contact us - and we're more than happy to answer your questions.

\r\n\r\n

Please call 0333 222 4070

\r\n\r\n
\r\n
\r\n \r\n
","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class FavIconService {\r\n\r\n constructor() { \r\n\r\n }\r\n\r\n set(href: string) {\r\n\r\n var iconLinkElement = document.querySelector('link[rel=icon]');\r\n\r\n if (iconLinkElement) {\r\n iconLinkElement.setAttribute( 'href', `${href}?refresh=please`);\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\nimport { ErrorConfiguration } from \"../configuration/configuration.types\";\r\n\r\nexport class ApplicationError extends Error {\r\n\r\n errorConfiguration: ErrorConfiguration;\r\n\r\n constructor(message: string, errorConfiguration: ErrorConfiguration) {\r\n super(message);\r\n\r\n this.errorConfiguration = errorConfiguration;\r\n\r\n // Set the prototype explicitly.\r\n Object.setPrototypeOf(this, ApplicationError.prototype);\r\n }\r\n\r\n}","\r\nimport {of as observableOf, throwError as observableThrowError, Observable } from 'rxjs';\r\n\r\nimport { environment } from \"../../../../environments/environment\";\r\n\r\nimport {catchError, map} from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse\r\n // Response, Headers, RequestOptions\r\n } from '@angular/common/http';\r\n\r\n\r\n\r\nimport { LoginService } from './../login/login.service';\r\nimport { NotificationMessage } from '../types';\r\nimport { ApplicantNotes } from '../types-applicantNotes';\r\n\r\n\r\nconst NOTIFICATIONS_URL = 'assets/notifications.json';\r\n\r\n@Injectable()\r\nexport class NotificationsService {\r\n\r\n items: NotificationMessage[]=[];\r\n loaded:boolean=false;\r\n\r\n constructor(private http: HttpClient, private loginService: LoginService) { }\r\n\r\n getNotifications(): Observable {\r\n\r\n // if (this.items === null) {\r\n if (!this.loaded) {\r\n \r\n return this.http.get>(NOTIFICATIONS_URL).pipe(\r\n map(\r\n (res) => {\r\n this.items = res.body;\r\n this.loaded=true;\r\n return this.items; \r\n }\r\n ),\r\n catchError(\r\n (error: any) => observableThrowError(error.json().error || 'Server error')\r\n ),);\r\n }\r\n\r\n return observableOf(this.items);\r\n\r\n }\r\n\r\n filterNotifications(notifications: NotificationMessage[], type: string, status: string) {\r\n\r\n return notifications.filter(\r\n notification => {\r\n\r\n var now = new Date();\r\n var lowerCaseType=type.toLowerCase();\r\n\r\n return new Date(notification.startDate) < now && new Date(notification.endDate) > now \r\n && notification.type.toLowerCase() == lowerCaseType\r\n && (lowerCaseType=='dashboard' || (lowerCaseType=='workflow' && notification.workflow.indexOf(status)!=-1));\r\n\r\n }\r\n );\r\n\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { ActionsService } from './../../../../core/services/actions/actions.service';\r\n\r\nimport { Search, Visibility, Broadcast } from './../../models.class';\r\n\r\n@Component({\r\n moduleId:module.id,\r\n selector: 'search',\r\n templateUrl: 'search.component.html',\r\n styleUrls: ['search.component.scss']\r\n})\r\n\r\nexport class SearchComponent implements OnInit, Visibility, Broadcast {\r\n\r\n @Input()\r\n model :Search={\r\n value:'',\r\n placeholder:'Search',\r\n visible:true\r\n };\r\n\r\n constructor(private actionsService :ActionsService) { }\r\n\r\n ngOnInit() { }\r\n\r\n search() {\r\n\r\n this.broadcast();\r\n\r\n }\r\n\r\n show() {\r\n\r\n this.model.visible=true;\r\n\r\n }\r\n\r\n hide() {\r\n\r\n this.model.visible=false;\r\n\r\n }\r\n\r\n toggle() {\r\n\r\n this.model.visible=(! this.model.visible);\r\n\r\n }\r\n\r\n broadcast() {\r\n\r\n var action={\r\n group:'search',\r\n value:this.model.value\r\n };\r\n\r\n this.actionsService.broadcast(action);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { ApplicationStatusService } from './../../../core/services/application-status/application-status.service';\r\nimport { Component, OnInit, Input, Output, EventEmitter, SimpleChanges } from '@angular/core';\r\nimport { FileUploader, FileItem } from \"ng2-file-upload\";\r\nimport { GlobalModalService } from './../../../core/services/modal/global-modal.service';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { Proof } from \"../../../core/services/types\";\r\n\r\n\r\n@Component({\r\n selector: 'dropzone',\r\n templateUrl: './dropzone.component.html',\r\n styleUrls: ['./dropzone.component.scss']\r\n})\r\nexport class DropzoneComponent implements OnInit {\r\n\r\n @Input()\r\n dropZone: any;\r\n\r\n @Input()\r\n availableProof: Proof[] = [];\r\n\r\n @Output()\r\n public removeProofFromAvailableProofs: EventEmitter = new EventEmitter();\r\n\r\n @Input()\r\n isDragAndDrop: boolean = true;\r\n\r\n @Output()\r\n itemUploaded: EventEmitter = new EventEmitter();\r\n\r\n isFileOver: boolean = false;\r\n\r\n immediateDragDropUpload: boolean;\r\n immediateFileSelectUpload: boolean;\r\n maximumFileSize: number;\r\n\r\n dropZoneinitialised: boolean = false;\r\n\r\n constructor(public globalModalService: GlobalModalService, private applicationStatusService : ApplicationStatusService) {\r\n this.immediateDragDropUpload = this.applicationStatusService.configuration.proofs.immediateDragDropUpload;\r\n this.immediateFileSelectUpload = this.applicationStatusService.configuration.proofs.immediateFileSelectUpload;\r\n this.maximumFileSize = this.applicationStatusService.configuration.proofs.maximumFileSize;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n if (!this.dropZoneinitialised && changes['dropZone'] && typeof this.dropZone.uploader != 'undefined') {\r\n this.dropZoneInitialise(this.dropZone);\r\n }\r\n\r\n }\r\n\r\n dropZoneInitialise(dropZone: any) {\r\n\r\n this.dropZoneinitialised = true;\r\n\r\n /*\r\n The uploader onAfterAddingAll event is used as opposed to the onFileDrop/change events being specified within the html markup.\r\n This was done because the change event was not firing correctly (the event object was returning an empty file object which should have contained one or more entries). \r\n */\r\n dropZone.uploader.onAfterAddingAll = (fileItems: FileItem[]) => {\r\n\r\n this.onAfterAddingAll(fileItems);\r\n\r\n };\r\n\r\n }\r\n\r\n setFileOver(e: boolean) {\r\n\r\n this.isFileOver = e;\r\n\r\n }\r\n\r\n onFileDrop(fileList: FileList) {\r\n\r\n }\r\n\r\n onAfterAddingAll(fileItems: FileItem[]) {\r\n\r\n this.removeDuplicateFilesFromTheQueue(fileItems);\r\n\r\n if (fileItems.length > this.dropZone.uploader.options.queueLimit) {\r\n /*\r\n If too many files provided then remove them and display a modal\r\n */\r\n this.displayTooManyFilesModal(fileItems);\r\n }\r\n /*\r\n If drag and drop & immediate uploads are configured then upload files\r\n */\r\n else if ((this.isDragAndDrop && this.immediateDragDropUpload) || (!this.isDragAndDrop && this.immediateFileSelectUpload)) {\r\n\r\n if (this.applicationStatusService.configuration.proofs.confirmFileReplacements && this.getFilesAlreadyUploaded(fileItems).length > 0) {\r\n this.displayFilesAlreadyUploadedModal(fileItems).subscribe(\r\n answer => {\r\n\r\n if (answer) {\r\n this.uploadAllFiles();\r\n }\r\n else {\r\n this.removeFilesFromQueue(fileItems);\r\n }\r\n\r\n }\r\n );\r\n }\r\n else {\r\n this.uploadAllFiles();\r\n }\r\n\r\n }\r\n else {\r\n /*\r\n Otherwise check to see if files already uploaded\r\n */\r\n if (this.applicationStatusService.configuration.proofs.confirmFileReplacements && this.getFilesAlreadyUploaded(fileItems).length > 0) {\r\n this.displayFilesAlreadyUploadedModal(fileItems).subscribe(\r\n answer => {\r\n\r\n if (!answer) {\r\n this.removeFilesFromQueue(fileItems);\r\n }\r\n\r\n }\r\n );\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n uploadAllFiles() {\r\n\r\n /*\r\n Upload all files not already uploading and within\r\n the file size limit in the queue\r\n */\r\n this.dropZone.uploader.queue.forEach(\r\n (fileItem: FileItem) => {\r\n if (!fileItem.isUploading && this.isFileSizeValid(fileItem) && this.isFileFormatValid(fileItem)) {\r\n fileItem.upload();\r\n this.itemUploaded.emit(fileItem);\r\n }\r\n }\r\n );\r\n\r\n }\r\n\r\n removeDuplicateFilesFromTheQueue(fileItems: FileItem[]) {\r\n\r\n fileItems.forEach(\r\n (fileItem: FileItem) => {\r\n\r\n var filteredDropZoneFileItems = this.dropZone.uploader.queue.filter((dropZoneFileItem: FileItem) => dropZoneFileItem.file.name == fileItem.file.name);\r\n\r\n if (filteredDropZoneFileItems.length > 1) {\r\n filteredDropZoneFileItems[0].remove();\r\n }\r\n\r\n }\r\n );\r\n\r\n }\r\n\r\n removeFilesFromQueue(fileItems: FileItem[]) {\r\n\r\n fileItems.forEach(\r\n (fileItem: FileItem) => {\r\n fileItem.remove();\r\n }\r\n );\r\n\r\n }\r\n\r\n isFileSizeValid(fileItem: FileItem) {\r\n\r\n return fileItem.file.size <= this.applicationStatusService.configuration.proofs.maximumFileSize;\r\n\r\n }\r\n\r\n isFileFormatValid(fileItem: FileItem) {\r\n\r\n return this.applicationStatusService.configuration.proofs.acceptedFileFormats.filter( acceptedFileFormat => acceptedFileFormat.mimeType.toLowerCase() == fileItem.file.type.toLowerCase() ).length > 0;\r\n\r\n }\r\n\r\n getFilesAlreadyUploaded(fileItems: FileItem[]) {\r\n\r\n return typeof this.availableProof == 'undefined' ? [] : this.availableProof.filter((proofItem: Proof) => fileItems.filter(item => item.file.name == proofItem.filename).length > 0);\r\n\r\n }\r\n\r\n displayTooManyFilesModal(fileItems: FileItem[]) {\r\n\r\n this.removeFilesFromQueue(fileItems);\r\n\r\n this.globalModalService.show(\r\n {\r\n title: `Too Many ${this.dropZone.label} files Provided`,\r\n content: `You have provided ${fileItems.length} proof documents but we only need ${this.dropZone.uploader.options.queueLimit}. Please try again.`,\r\n yes: 'Ok',\r\n config: {\r\n ignoreBackdropClick: true,\r\n keyboard: false\r\n }\r\n }\r\n );\r\n\r\n }\r\n\r\n displayFilesAlreadyUploadedModal(fileItems: FileItem[]): Observable {\r\n\r\n var options;\r\n\r\n if (fileItems.length > 1) {\r\n\r\n var fileList = '';\r\n\r\n fileItems.forEach(item => fileList += '
  • ' + item.file.name + '
  • ');\r\n\r\n options = {\r\n title: `Files already uploaded`,\r\n content: `

    The following files have already been uploaded.

      ${fileList}

    Do you want to replace them?

    `,\r\n yes: 'Yes',\r\n no: 'No',\r\n config: {\r\n ignoreBackdropClick: true,\r\n keyboard: false\r\n }\r\n };\r\n }\r\n else {\r\n\r\n options = {\r\n title: `File already uploaded`,\r\n content: `

    The file ${fileItems[0].file.name} has already been uploaded.
    Do you want to replace it?

    `,\r\n yes: 'Yes',\r\n no: 'No',\r\n config: {\r\n ignoreBackdropClick: true,\r\n keyboard: false\r\n }\r\n };\r\n\r\n }\r\n\r\n return this.globalModalService.show(options);\r\n\r\n }\r\n\r\n}\r\n","
    \r\n \r\n
    \r\n\r\n\r\n ","import { Component, OnInit, ViewChild, TemplateRef, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\n\r\n@Component({\r\n selector: 'button-with-invalid-sections-popup',\r\n templateUrl: './button-with-invalid-sections-popup.component.html',\r\n styleUrls: ['./button-with-invalid-sections-popup.component.scss']\r\n})\r\nexport class ButtonWithInvalidSectionsPopupComponent implements OnInit {\r\n\r\n @Input()\r\n key: string;\r\n\r\n @Input()\r\n label: string;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n hidden: boolean;\r\n\r\n @Output()\r\n proceed: EventEmitter = new EventEmitter();\r\n \r\n invalidSubSet: Array = [];\r\n\r\n validSectionsSubscription: Subscription;\r\n \r\n @ViewChild('popoverDirective') popoverDirective: PopoverDirective;\r\n\r\n @ViewChild(TemplateRef) popoverTemplate: TemplateRef;\r\n \r\n constructor(private actionsService: ActionsService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.validSectionsSubscription = this.actionsService.registerObserver(\r\n `componentSubsetValidItems.${this.key}`,\r\n action => {\r\n\r\n this.refreshPopover(action);\r\n\r\n },\r\n this\r\n );\r\n \r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n this.actionsService.cancelSubscription(this.validSectionsSubscription);\r\n\r\n }\r\n\r\n refreshPopover(action) {\r\n\r\n this.invalidSubSet = action.value.invalidSubSet;\r\n this.popoverDirective.hide();\r\n\r\n if (!action.value.valid && !this.hidden) {\r\n this.popoverDirective.popover = this.popoverTemplate;\r\n this.popoverDirective.show();\r\n }\r\n\r\n }\r\n\r\n scrollToSection(key: string) {\r\n\r\n /*\r\n Broadcast a scroll to the popup section clicked\r\n */\r\n this.actionsService.broadcast(\r\n {\r\n action: 'section',\r\n behaviour: 'scroll',\r\n value: key\r\n }\r\n );\r\n\r\n }\r\n\r\n}\r\n","\r\n

    Please complete the following sections:

    \r\n \r\n
    \r\n\r\n","\r\nimport {finalize, catchError, map} from 'rxjs/operators';\r\nimport { environment } from './../../environments/environment';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Document } from './services/types';\r\nimport { LoginService } from './services/login/login.service';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http'\r\nimport { TimedActionService } from './services/timed-action/timed-action.service';\r\nimport { LoadingModalService } from './services/modal/loading-modal.service';\r\n\r\n@Injectable()\r\nexport class DocumentsService {\r\n\r\n downloadDocumentUrl = environment.base + '/docs/download?fileName=:fileName&applicationId=:applicationId';\r\n\r\n constructor(\r\n private loginService: LoginService,\r\n private http: HttpClient,\r\n private timedActionService: TimedActionService,\r\n private loadingModalService: LoadingModalService) { }\r\n\r\n download(document: Document, applicationId: string): Observable {\r\n const url = this.downloadDocumentUrl.replace(':fileName', document.fileName).replace(':applicationId', applicationId);\r\n const options = this.loginService.getHeaderOptions(true);\r\n\r\n options.append('Response-Type','Blob');\r\n\r\n this.loadingModalService.show();\r\n return this.http.get(url, {headers: options}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n return response;\r\n }),\r\n catchError((error) => {\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }),\r\n finalize(() => this.loadingModalService.hide()),);\r\n\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TabDirective } from \"ngx-bootstrap/tabs\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Injectable()\r\nexport class TabsService {\r\n constructor(private router: Router){ }\r\n \r\n public openTabByRouteName(tabs : Array, ngxTabs : Array, route: string, applicationId:number) {\r\n let selectedTab: TabConfig = this.findTabByRoute(tabs, route);\r\n\r\n // TODO investigate this\r\n // if(selectedTab == null){\r\n // selectedTab = tabs[0];\r\n // }\r\n\r\n if(selectedTab != null){\r\n if (selectedTab.isInvalid()) {\r\n this.navigateToAlternativeRouteForTab(tabs, ngxTabs, applicationId, selectedTab, false);\r\n } \r\n else {\r\n this.activateNgxTab(ngxTabs, selectedTab.ngxOrder);\r\n }\r\n }\r\n }\r\n\r\n private activateNgxTab(ngxTabs : Array, index: number) {\r\n let ngxTab: TabDirective = ngxTabs[index];\r\n\r\n if (ngxTab) {\r\n ngxTab.active = true;\r\n } \r\n else {\r\n throw Error(\"There is no ngx tab matching at the requested index\")\r\n }\r\n }\r\n\r\n private findTabByRoute(tabs : Array, route: string): TabConfig {\r\n let selectedTabs : Array = tabs.filter(t => this.asRoute(t.name) === route);\r\n\r\n if (selectedTabs) {\r\n return selectedTabs[0];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private findTabByName(tabs : Array, name: string): TabConfig {\r\n let selectedTabs : Array = tabs.filter(t => t.name === name);\r\n\r\n if (selectedTabs) {\r\n return selectedTabs[0];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private navigateToAlternativeRouteForTab(tabs : Array, ngxTabs : Array, applicationId: number, selectedTab: TabConfig, withRouting:boolean): void {\r\n let alternativeTab: TabConfig = this.findTabByName(tabs, selectedTab.backfallTab);\r\n\r\n if (alternativeTab) {\r\n if(!alternativeTab.isInvalid()){\r\n this.doRoute(ngxTabs, alternativeTab, applicationId, withRouting)\r\n }\r\n else{\r\n throw Error(\"The alternative path should be valid\");\r\n }\r\n } \r\n else {\r\n throw Error(\"An alternative tab was not found\");\r\n }\r\n }\r\n\r\n private doRoute(ngxTabs : Array, selectedTab:TabConfig, applicationId: number, withRouting:boolean){ \r\n if(withRouting){\r\n this.router.navigate(['/applications', applicationId, this.asRoute(selectedTab.name)]);\r\n }\r\n else {\r\n this.activateNgxTab(ngxTabs, selectedTab.ngxOrder)\r\n }\r\n }\r\n\r\n public asRoute(name: string): string {\r\n return name.toLowerCase().split(' ').join('-');\r\n }\r\n}\r\n\r\nexport class TabConfig {\r\n ngxOrder: number;\r\n name: string;\r\n pageName:string;\r\n invalid: string;\r\n backfallTab: string;\r\n isInvalid: () => boolean;\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss']\r\n})\r\nexport class FilterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","

    \r\n filter works!\r\n

    \r\n","import { Directive, OnChanges, SimpleChanges, Input } from '@angular/core';\r\nimport { Validator, AbstractControl, NG_VALIDATORS, ValidatorFn, ValidationErrors } from \"@angular/forms\";\r\nimport { isANumber } from \"../utilities\";\r\n\r\nexport function min(min: number): ValidatorFn {\r\n if (!isANumber(min)) {\r\n throw Error(\"The minimum is expected to be numerical\");\r\n }\r\n\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (control.value != null) {\r\n let value = Number(control.value);\r\n\r\n if (isANumber(value) && value < min) {\r\n return {\r\n 'min': {\r\n actualValue: value,\r\n minimumValue: min\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n\r\n@Directive({\r\n selector: '[minimum]',\r\n providers: [{ provide: NG_VALIDATORS, useExisting: MinDirective, multi: true }]\r\n})\r\nexport class MinDirective implements Validator, OnChanges {\r\n @Input()\r\n minimum: number;\r\n\r\n validator: ValidatorFn;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const change = changes['minimum'];\r\n\r\n if (change) {\r\n this.validator = min(change.currentValue);\r\n }\r\n else {\r\n this.validator = null;\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors {\r\n if (this.validator) {\r\n return this.validator(control)\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, HostBinding } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[elementHeight]'\r\n})\r\nexport class ElementHeightDirective {\r\n\r\n constructor(private _elementRef: ElementRef) { }\r\n\r\n @HostBinding('style.height.px')\r\n // height: number=this._elementRef.nativeElement.scrollHeight;\r\n height: number;\r\n \r\n ngAfterViewInit() {\r\n\r\n this.height = this._elementRef.nativeElement.scrollHeight;\r\n\r\n }\r\n\r\n}","import { VehicleSearchesLeftService } from './services/vehicle-searches/vehicle-searches-left.service';\r\nimport { ProofsService } from './services/proofs/proofs.service';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { Injector, NgModule, Optional, Provider, SkipSelf, ErrorHandler } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n//import { BrowserXhr, ResponseOptions, XHRBackend, XSRFStrategy } from '@angular/common/http';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\r\n\r\n//import { SaveGuard } from '../applications/guards/save-guard';\r\nimport { ActionsService } from './services/actions/actions.service';\r\nimport { SorterService } from './services/addressesSorter/address-sorter.service';\r\nimport { ApplicationStatusService } from './services/application-status/application-status.service';\r\nimport { AuthenticationGuard } from './services/authentication-guard/authentication-guard.service';\r\nimport { CanDeactivateGuard } from './services/can-deactivate-guard/can-deactivate-guard.service';\r\nimport { ConditionsService } from './services/conditions/conditions.service';\r\nimport { CreditRatingService } from './services/credit-rating/credit-rating.service';\r\nimport { DateService } from './services/date/date.service';\r\nimport { GlobalModalService } from './services/modal/global-modal.service';\r\nimport { LoadingModalService } from './services/modal/loading-modal.service';\r\nimport { TabsService } from './services/tabs-service/tabs-service';\r\nimport { environment } from '../../environments/environment';\r\nimport { TimelineService } from './services/timeline/timeline.service';\r\nimport { LoginService } from './services/login/login.service';\r\nimport { TokenService } from './services/token/token.service';\r\nimport { UserService } from './services/user/user.service';\r\nimport { AddressLookupService } from './services/address-lookup/address-lookup.service';\r\nimport { QuotesService } from './services/quotes/quotes.service';\r\nimport { ApplyService } from './services/apply/apply.service';\r\nimport { VehicleService } from './services/vehicle/vehicle.service';\r\nimport { CustomersService } from './services/customers/customers.service';\r\nimport { NotificationsService } from './services/notifications/notifications.service';\r\n\r\n// import { GlobalErrorHandlerService } from './services/global-error-handler/global-error-handler.service';\r\n\r\nimport { ApplicationResolver } from './resolvers/applications';\r\nimport { UserResolver } from './resolvers/user';\r\n\r\nimport { TimedActionService } from './services/timed-action/timed-action.service';\r\n\r\nimport { GlobalModalComponent } from './components/global-modal/global-modal.component';\r\nimport { DocumentsService } from './documents.service';\r\nimport { DynamicComponentsService } from './services/dynamic-components/dynamic-components.service';\r\nimport { FavIconService } from './services/fav-icon/fav-icon.service';\r\n\r\nimport { JourneyPageGuard } from './services/journey-page-guard/journey-page-guard.service';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, BrowserAnimationsModule, ModalModule.forRoot(), CollapseModule.forRoot() ],\r\n declarations: [GlobalModalComponent],\r\n exports: [GlobalModalComponent],\r\n providers: [\r\n LoginService, TokenService, GlobalModalService, LoadingModalService, //SaveGuard,\r\n ActionsService,\r\n AuthenticationGuard, CanDeactivateGuard, UserService,\r\n DateService, SorterService, TabsService, CreditRatingService,\r\n ConditionsService, ApplicationStatusService, AddressLookupService, QuotesService,\r\n ApplyService, VehicleService, TimedActionService, environment.provider, ApplicationResolver, UserResolver,\r\n ProofsService, CustomersService, NotificationsService, DocumentsService, VehicleSearchesLeftService, DynamicComponentsService, JourneyPageGuard,\r\n FavIconService, TimelineService,\r\n /*{\r\n provide: ErrorHandler,\r\n useClass: GlobalErrorHandlerService\r\n }*/\r\n ]\r\n})\r\nexport class CoreModule {\r\n\r\n constructor( @Optional() @SkipSelf() parentModule: CoreModule) {\r\n if (parentModule) {\r\n throw new Error(\r\n 'CoreModule is already loaded. Import it in the AppModule only');\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanDeactivate } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface CanComponentDeactivate {\r\n canDeactivate: () => Observable | Promise | boolean;\r\n}\r\n@Injectable()\r\nexport class CanDeactivateGuard implements CanDeactivate {\r\n canDeactivate(component: CanComponentDeactivate) {\r\n return component.canDeactivate ? component.canDeactivate() : true;\r\n }\r\n}\r\n","
    \r\n {{error}}\r\n
    \r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'control-error-messages',\r\n templateUrl: 'control-error-messages.component.html'\r\n})\r\n\r\nexport class ControlErrorMessagesComponent {\r\n\r\n @Input()\r\n model:any[];\r\n\r\n constructor() {}\r\n\r\n}\r\n","\r\nimport { finalize, catchError, map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { ProposedVehicle } from \"../../../core/services/types\";\r\nimport { environment } from \"../../../../environments/environment\";\r\n\r\nimport { TimedActionService } from \"../timed-action/timed-action.service\";\r\nimport { LoginService } from '../login/login.service';\r\nimport { AnalyticsData } from '../types-quote';\r\nimport { LoadingModalService } from '../modal/loading-modal.service';\r\nimport { ApplicantVehicle, Vehicle } from '../../../shared/models/vehicle.model';\r\nimport * as pako from 'pako';\r\n\r\n\r\n@Injectable()\r\nexport class VehicleService {\r\n vehiclesUrl = environment.base + \"/vehiclelookup?registration=:registration¤tMileage=:mileage&applicationId=:applicationId&isSuggested=:isSuggested\";\r\n\r\n vehicleShowroomUrl = environment.base + `/showroom/updatefilter`;\r\n\r\n getVehicleListUrl = environment.base + \"/showroom/all-vehicles\";\r\n\r\n getVehicleByReg = environment.base + \"/showroom/carbyregistration?reg=:registration\";\r\n\r\n getVehicleShowroom = environment.base + `/showroom/search`;\r\n\r\n vehicleDetailsOnly = environment.base + `/vehiclelookup/detailsOnly?registration=:registration`;\r\n\r\n residualValue = environment.base + `/vehiclelookup/getFutureValuation?registerationDate=:registerationDate&endOfTermMileage=:endOfTermMileage&capId=:capId&term=:term`;\r\n\r\n constructor(private http: HttpClient, private timedActionService: TimedActionService, private loginService: LoginService,\r\n private loadingModalService: LoadingModalService) { }\r\n\r\n private extractVehicleData(response: HttpResponse): any {\r\n return response != null ? response : null;\r\n }\r\n\r\n private body: any = {\r\n Makes: null,\r\n Models: null,\r\n MinimumPrice: null,\r\n MaximumPrice: null,\r\n MaximumMileage: null,\r\n registrationYear: null,\r\n Transmissions: null,\r\n Colours: null,\r\n fuelType: null,\r\n sortBy: null,\r\n sortDescending: null,\r\n };\r\n\r\n getVehicleList(financeRequestBody) {\r\n return this.http.post(this.getVehicleListUrl, financeRequestBody, { headers: this.loginService.getHeaderOptions(true) });\r\n }\r\n\r\n getVehicleListFromFile(financeRequestBody) {\r\n return this.http.get(\"../../../../assets/GetVehicleList.json\");\r\n }\r\n\r\n getVehicleListFromZip() {\r\n return this.http.get(\"../../../../assets/GetVehicleList.json.gz\", {\r\n responseType: 'arraybuffer'\r\n });\r\n }\r\n\r\n getStandingDataFromZip() {\r\n return this.http.get(\"../../../../assets/PortalStandingData.json.gz\", {\r\n responseType: 'arraybuffer'\r\n });\r\n }\r\n\r\n\r\n getVehicleByRegistration(registration: string) {\r\n var url = this.vehicleDetailsOnly.replace(':registration', registration);\r\n return this.http.get(url, { headers: this.loginService.getHeaderOptions(true) });\r\n }\r\n\r\n getcarByRegistration(registration: string) {\r\n var reg = registration.replace(/\\s/g, '');\r\n// registration = registration.replace(/^\\s+|\\s+$/gm, ''); \r\n var url = this.getVehicleByReg.replace(':registration', reg );\r\n return this.http.get(url, { headers: this.loginService.getHeaderOptions(true) });\r\n }\r\n\r\n getVehicleDetails(registration: string): Observable {\r\n this.loadingModalService.show();\r\n this.loadingModalService.displayMessage(5);\r\n\r\n var url = this.vehicleDetailsOnly.replace(':registration', registration);\r\n if (registration) {\r\n return this.http.get>(url, { headers: this.loginService.getHeaderOptions(true) }).pipe(\r\n map(\r\n (response) => {\r\n this.timedActionService.resetTimer();\r\n //console.log(response)\r\n return response;\r\n }\r\n ),\r\n catchError((error: any) => {\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }\r\n ),\r\n finalize(() => this.loadingModalService.hide()));\r\n\r\n }\r\n }\r\n\r\n getShowroomVehicles(selectedFilterValues: any): any {\r\n //console.log(selectedFilterValues);\r\n this.body.Makes = selectedFilterValues.Makes == null ? [] : selectedFilterValues.Makes;\r\n this.body.Models = selectedFilterValues.Models == null ? [] : selectedFilterValues.Models;\r\n this.body.MinimumPrice = selectedFilterValues.MinimumPrice == null ? '' : selectedFilterValues.MinimumPrice;\r\n this.body.MaximumPrice = selectedFilterValues.MaximumPrice == null ? '' : selectedFilterValues.MaximumPrice;\r\n this.body.MaximumMileage = selectedFilterValues.MaximumMileage == null ? '' : selectedFilterValues.MaximumMileage;\r\n this.body.MinYear = selectedFilterValues.minYear == null ? '' : selectedFilterValues.minYear;\r\n this.body.MaxYear = selectedFilterValues.maxYear == null ? '' : selectedFilterValues.maxYear;\r\n this.body.FuelType = selectedFilterValues.fuelTerms ==null ? '' : selectedFilterValues.fuelTerms\r\n this.body.Transmissions = selectedFilterValues.transmissionTerms == null ? '' : selectedFilterValues.transmissionTerms;\r\n this.body.Colours = selectedFilterValues.cosmeticTerms.colours == null ? '' : selectedFilterValues.cosmeticTerms.colours;\r\n this.body.Doors = selectedFilterValues.functionTerms.doors == null ? '' : selectedFilterValues.functionTerms.doors;\r\n this.body.PageSize = selectedFilterValues.pageSize == null ? '' : selectedFilterValues.pageSize;\r\n this.body.PageNumber = selectedFilterValues.pageNumber == null ? '' : selectedFilterValues.pageNumber;\r\n this.body.MaxMonthlyPrice = selectedFilterValues.maxMonthlyPrice == null ? '' : selectedFilterValues.maxMonthlyPrice;\r\n this.body.BodyTypes = selectedFilterValues.functionTerms.bodyTypes == null ? '' : selectedFilterValues.functionTerms.bodyTypes;\r\n \r\n //console.log(\"BODY: G:G:\")\r\n //console.log(this.body)\r\n return this.http.post(this.getVehicleShowroom, JSON.stringify(this.body), { headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map(\r\n (response) => {\r\n return response;\r\n }\r\n ),\r\n catchError((error: any) => {\r\n throw error;\r\n }),);\r\n }\r\n\r\n vehicleLookup({ applicationId, registration, mileage, price, showroom, isSuggested }: { applicationId: number; registration: string; mileage: number; price: number; showroom: boolean; isSuggested: boolean; }): Observable {\r\n this.loadingModalService.show();\r\n this.loadingModalService.displayMessage(5);\r\n if (mileage == null) {\r\n mileage = 0;\r\n }\r\n\r\n if (applicationId == null) {\r\n throw new Error(\"An application id should be passed\");\r\n }\r\n\r\n var url = this.vehiclesUrl.replace(':registration', registration).replace(':mileage', String(mileage)).replace(':applicationId', String(applicationId)).replace(':isSuggested', String(Boolean(isSuggested)));\r\n if (registration) {\r\n return this.http.get>(url, { headers: this.loginService.getHeaderOptions(true) }).pipe(\r\n map(\r\n (response) => {\r\n this.timedActionService.resetTimer();\r\n this.logVehicleLookup(registration, mileage, price, true, showroom);\r\n // //console.log(this.extractVehicleData(response));\r\n return this.extractVehicleData(response);\r\n }\r\n ),\r\n catchError((error: any) => {\r\n this.timedActionService.checkResetTimerOnError(error);\r\n this.logVehicleLookup(registration, mileage, price, false, showroom);\r\n throw error;\r\n }\r\n ),\r\n finalize(() => this.loadingModalService.hide()));\r\n\r\n }\r\n}\r\n\r\nprivate logVehicleLookup(registration: string, mileage: number, price: number, success: boolean, showroom: boolean) {\r\n\r\n var label;\r\n var analyticsData = new AnalyticsData;\r\n analyticsData = {\r\n vehicle: {\r\n vrm: registration,\r\n mileage: mileage,\r\n price: price,\r\n }\r\n }\r\n if (showroom) {\r\n if (success) {\r\n label = 'successful-vehicle-showroom-lookup'\r\n } else {\r\n label = 'unsuccessful-vehicle-showroom-lookup'\r\n }\r\n } else {\r\n if (success) {\r\n label = 'successful-vehicle-reg-lookup'\r\n } else {\r\n label = 'unsuccessful-vehicle-reg-lookup'\r\n }\r\n }\r\n if (success) {\r\n window['dataLayer'].push(\r\n {\r\n event: 'service-response',\r\n label: label,\r\n data: analyticsData,\r\n timestamp: new Date().toISOString()\r\n })\r\n } else {\r\n window['dataLayer'].push(\r\n {\r\n event: 'service-response',\r\n label: label,\r\n data: analyticsData,\r\n timestamp: new Date().toISOString()\r\n })\r\n }\r\n}\r\n\r\n\r\n getResidualValue(registerationDate, endOfTermMileage, capId, term): Observable {\r\n this.loadingModalService.show();\r\n var url = this.residualValue.replace(':registerationDate', registerationDate).replace(':endOfTermMileage', endOfTermMileage).replace(':capId', capId).replace(':term', term);\r\n return this.http.get>(url, { headers: this.loginService.getHeaderOptions(true) }).pipe(\r\n map(\r\n (response) => {\r\n this.timedActionService.resetTimer();\r\n return response.body;\r\n }\r\n ),\r\n catchError((error: any) => {\r\n this.timedActionService.checkResetTimerOnError(error);\r\n throw error;\r\n }\r\n ),\r\n finalize(() => this.loadingModalService.hide()));\r\n\r\n }\r\n\r\n startVehicleTimer(customerId: string) {\r\n var url = environment.base + \"/timers/vehicle-search-new-user-check\";\r\n if (customerId != null) {\r\n this.http.get(url, { headers: this.loginService.getHeaderOptions(true), params: { customerId: customerId } }).toPromise()\r\n .then(async (resp: any) => {\r\n\r\n //console.log(resp);\r\n }).catch((error) => {\r\n\r\n console.log(error);\r\n\r\n });\r\n }\r\n }\r\n\r\n checkVehicleTimer(customerId: string) {\r\n var url = environment.base + \"/timers/vehicle-search-removal-check\";\r\n if (customerId != null) {\r\n this.http.get(url, { headers: this.loginService.getHeaderOptions(true), params: { customerId: customerId } }).toPromise()\r\n .then(async (resp: any) => {\r\n\r\n //console.log(resp);\r\n }).catch((error) => {\r\n\r\n console.log(error);\r\n\r\n });\r\n }\r\n }\r\n\r\n sendDocsToBeIssuedEmail(customerId:string, customerFirstName:string,customerLastName:string,salesPerson:string ){\r\n var url = environment.base + \"/customer/application/loan-confirmed\";\r\n this.http.post(url, null, { headers: this.loginService.getHeaderOptions(true), \r\n params: { customerId: customerId, firstName: customerFirstName, lastName: customerLastName, salesPerson: salesPerson, isDemo: environment.demo.toString() } }).toPromise()\r\n .then(async (resp: any) => {\r\n\r\n //console.log(resp);\r\n }).catch((error) => {\r\n\r\n console.log(error);\r\n\r\n });\r\n}\r\n\r\nsendPortalLinkEmail(customerId:string, customerEmail: string){\r\n var url = environment.base + \"/customer/application/portal-link\";\r\n this.http.post(url, null, { headers: this.loginService.getHeaderOptions(true), \r\n params: { customerId:customerId, customerEmail: customerEmail, isDemo: environment.demo.toString() } }).toPromise()\r\n .then(async (resp: any) => {\r\n\r\n //console.log(resp);\r\n }).catch((error) => {\r\n\r\n console.log(error);\r\n\r\n });\r\n}\r\n\r\nVehicleToApplicantVehicle(vehicle: Vehicle){\r\n var applicantVehicle = new ApplicantVehicle();\r\n \r\n applicantVehicle.bodyType = vehicle.BodyType;\r\n applicantVehicle.capDetails = vehicle.CapDetails;\r\n applicantVehicle.colour = vehicle.Colour;\r\n applicantVehicle.description = vehicle.Description;\r\n applicantVehicle.doors = vehicle.Doors;\r\n applicantVehicle.engineSizeCC = vehicle.EngineSizeCC;\r\n applicantVehicle.fuelType = vehicle.FuelType;\r\n applicantVehicle.id = vehicle.Id;\r\n applicantVehicle.imageUrl_Main = vehicle.ImageUrl_Main;\r\n applicantVehicle.imageUrl_More1 = vehicle.ImageUrl_More1;\r\n applicantVehicle.imageUrl_More2 = vehicle.ImageUrl_More2;\r\n applicantVehicle.imageUrl_More3 = vehicle.ImageUrl_More3;\r\n applicantVehicle.imageUrl_More4 = vehicle.ImageUrl_More4;\r\n applicantVehicle.imageUrl_More5 = vehicle.ImageUrl_More5;\r\n applicantVehicle.imageUrl_More6 = vehicle.ImageUrl_More6;\r\n applicantVehicle.imageUrl_More7 = vehicle.ImageUrl_More7;\r\n applicantVehicle.imageUrl_More8 = vehicle.ImageUrl_More8;\r\n applicantVehicle.imageUrl_More9 = vehicle.ImageUrl_More9;\r\n applicantVehicle.isMock = vehicle.IsMock;\r\n applicantVehicle.make = vehicle.Make;\r\n applicantVehicle.mileage = vehicle.Mileage;\r\n applicantVehicle.model = vehicle.Model;\r\n applicantVehicle.monthlyPrice = vehicle.MonthlyPrice;\r\n applicantVehicle.price = vehicle.Price;\r\n applicantVehicle.registration = vehicle.Registration;\r\n applicantVehicle.registrationYear = vehicle.RegistrationYear;\r\n applicantVehicle.retailPrice = vehicle.RetailPrice;\r\n applicantVehicle.transmission = vehicle.Transmission;\r\n applicantVehicle.transmissionType = vehicle.TransmissionType;\r\n applicantVehicle.variant = vehicle.Variant; \r\n\r\n return applicantVehicle;\r\n}\r\n\r\nApplicantVehicleToVehicle(applicantVehicle: ApplicantVehicle){\r\n var vehicle = new Vehicle();\r\n \r\n vehicle.BodyType = applicantVehicle.bodyType;\r\n vehicle.CapDetails = applicantVehicle.capDetails;\r\n vehicle.Colour = applicantVehicle.colour;\r\n vehicle.Description = applicantVehicle.description;\r\n vehicle.Doors = applicantVehicle.doors;\r\n vehicle.EngineSizeCC = applicantVehicle.engineSizeCC;\r\n vehicle.FuelType = applicantVehicle.fuelType;\r\n vehicle.Id = applicantVehicle.id;\r\n vehicle.ImageUrl_Main = applicantVehicle.imageUrl_Main;\r\n vehicle.ImageUrl_More1 = applicantVehicle.imageUrl_More1;\r\n vehicle.ImageUrl_More2 = applicantVehicle.imageUrl_More2;\r\n vehicle.ImageUrl_More3 = applicantVehicle.imageUrl_More3;\r\n vehicle.ImageUrl_More4 = applicantVehicle.imageUrl_More4;\r\n vehicle.ImageUrl_More5 = applicantVehicle.imageUrl_More5;\r\n vehicle.ImageUrl_More6 = applicantVehicle.imageUrl_More6;\r\n vehicle.ImageUrl_More7 = applicantVehicle.imageUrl_More7;\r\n vehicle.ImageUrl_More8 = applicantVehicle.imageUrl_More8;\r\n vehicle.ImageUrl_More9 = applicantVehicle.imageUrl_More9;\r\n vehicle.IsMock = applicantVehicle.isMock;\r\n vehicle.Make = applicantVehicle.make;\r\n vehicle.Mileage = applicantVehicle.mileage;\r\n vehicle.Model = applicantVehicle.model;\r\n vehicle.MonthlyPrice = applicantVehicle.monthlyPrice;\r\n vehicle.Price = applicantVehicle.price;\r\n vehicle.Registration = applicantVehicle.registration;\r\n vehicle.RegistrationYear = applicantVehicle.registrationYear;\r\n vehicle.RetailPrice = applicantVehicle.retailPrice;\r\n vehicle.Transmission = applicantVehicle.transmission;\r\n vehicle.TransmissionType = applicantVehicle.transmissionType;\r\n vehicle.Variant = applicantVehicle.variant; \r\n\r\n return vehicle;\r\n}\r\n\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { ButtonGroupComponent } from './../button-group/button-group.component';\r\nimport { ButtonGroup } from './../../models.class';\r\n\r\nimport { ActionsService } from './../../../../core/services/actions/actions.service';\r\n\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'save-cancel',\r\n templateUrl: 'save-cancel.component.html',\r\n styleUrls: ['save-cancel.component.scss']\r\n})\r\nexport class SaveCancelComponent extends ButtonGroupComponent {\r\n\r\n @Input()\r\n model :ButtonGroup = new ButtonGroup(\r\n {\r\n group:'SAVECANCEL',\r\n type:'icons',\r\n btnclass:'btn-default',\r\n navbar:true,\r\n selection:'none',\r\n visible:true,\r\n items:[\r\n {icon:'fa-check', action:'SAVE', disabled:false, active:false, visible:true},\r\n {icon:'fa-undo', action:'CANCEL', disabled:false, active:false, visible:true}\r\n ]\r\n }\r\n );\r\n\r\n observers :Subscription[];\r\n observer :Subscription;\r\n\r\n constructor(public actionsService :ActionsService) {\r\n\r\n super(actionsService);\r\n\r\n this.observer=this.actionsService.registerObserver(\r\n 'EDIT.click',\r\n action => {\r\n this.behaviour(action);\r\n },\r\n this\r\n );\r\n\r\n this.observers= this.actionsService.registerObservers(\r\n ['ADD.click','EDIT.visible', 'DELETE.enabled'],\r\n action => {\r\n this.behaviour(action);\r\n },\r\n this\r\n );\r\n\r\n }\r\n\r\n behaviour(action :any) {\r\n this.toggle('save');\r\n this.show('cancel');\r\n\r\n }\r\n\r\n ngOnDestroy(){\r\n this.actionsService.cancelSubscription(this.observer);\r\n this.actionsService.cancelSubscriptions(this.observers);\r\n }\r\n\r\n}\r\n","\r\n","import {Pipe} from '@angular/core';\r\nimport {DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl} from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n\tname: 'safe'\r\n})\r\nexport class SafePipe {\r\n\r\n\tconstructor(protected _sanitizer: DomSanitizer) {\r\n\r\n\t}\r\n\r\n\tpublic transform(value: string, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n\t\tswitch (type) {\r\n\t\t\tcase 'html':\r\n\t\t\t\treturn this._sanitizer.bypassSecurityTrustHtml(value);\r\n\t\t\tcase 'style':\r\n\t\t\t\treturn this._sanitizer.bypassSecurityTrustStyle(value);\r\n\t\t\tcase 'script':\r\n\t\t\t\treturn this._sanitizer.bypassSecurityTrustScript(value);\r\n\t\t\tcase 'url':\r\n\t\t\t\treturn this._sanitizer.bypassSecurityTrustUrl(value);\r\n\t\t\tcase 'resourceUrl':\r\n\t\t\t\treturn this._sanitizer.bypassSecurityTrustResourceUrl(value);\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Unable to bypass security for invalid type: ${type}`);\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { ActionsService } from './../../../../core/services/actions/actions.service';\r\n\r\nimport { RecordNavigator, Navigate, Visibility, Broadcast } from './../../models.class';\r\n\r\n@Component({\r\n moduleId:module.id,\r\n selector: 'record-navigator',\r\n templateUrl: 'record-navigator.component.html',\r\n styleUrls: ['record-navigator.component.scss']\r\n})\r\nexport class RecordNavigatorComponent implements OnInit, Navigate, Visibility, Broadcast {\r\n\r\n @Input()\r\n public model :RecordNavigator={\r\n items:[1,2,3,4,5],\r\n position:0,\r\n visible:true\r\n };\r\n\r\n constructor(private actionsService :ActionsService) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n first() {\r\n\r\n if (this.model.position>0) {\r\n this.model.position=0;\r\n this.broadcast();\r\n }\r\n\r\n }\r\n\r\n last() {\r\n\r\n if (this.model.position<(this.model.items.length-1)) {\r\n this.model.position=this.model.items.length-1;\r\n this.broadcast();\r\n }\r\n\r\n }\r\n\r\n next() {\r\n\r\n if (this.model.position<(this.model.items.length-1)) {\r\n this.model.position++;\r\n this.broadcast();\r\n };\r\n\r\n }\r\n\r\n previous() {\r\n\r\n if (this.model.position>0) {\r\n this.model.position--;\r\n this.broadcast();\r\n };\r\n\r\n }\r\n\r\n goto(position :number) {\r\n\r\n if (position>-1 && position\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n of {{model.items.length}}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n","import { QuotesComponent } from '../../../applications/components/quotes/quotes.component';\r\nimport { AcceptanceStatusComponent } from '../../../applications/components/acceptance-status/acceptance-status.component';\r\nimport { ProofsComponent } from \"../../../applications/components/proofs/proofs.component\";\r\nimport { FinanceDocumentsComponent } from \"../../../applications/components/finance-documents/finance-documents.component\"\r\nimport { SettingsComponent } from \"../../../applications/components/settings/settings.component\"\r\nimport { HelpComponent } from \"../../../applications/components/help/help.component\"\r\n\r\nimport { noop } from 'rxjs';\r\nimport { SECTIONS } from '../configuration/configuration';\r\nimport { AgreementsDocumentationComponent } from '../../../applications/components/agreements-documentation/agreements-documentation.component';\r\nimport { MarketingPreferencesComponent } from '../../../applications/components/marketing-preferences/marketing-preferences.component';\r\nimport { DocsComponent } from '../../../applications/components/docs/docs.component';\r\nimport { ProofsNoOnfidoComponent } from '../../../applications/components/proofs-no-onfido/proofs-no-onfido.component';\r\n\r\nconst DYNAMIC_COMPONENTS = [\r\n {\r\n component: DocsComponent,\r\n id: SECTIONS.DOCS,\r\n title: 'Docs'\r\n },\r\n {\r\n id: SECTIONS.CREDIT_RATING,\r\n title: 'Credit Rating',\r\n valid: (context, instance) => instance.form.valid,\r\n dirty: (context, instance) => instance.form.dirty,\r\n markAsPristine: (context, instance) => {\r\n instance.form.markAsPristine();\r\n },\r\n getData: (application, data, context, instance) => {\r\n application.creditRating.questions = data;\r\n }\r\n },\r\n {\r\n component: QuotesComponent,\r\n id: SECTIONS.GET_QUOTES,\r\n title: 'Quotes'\r\n },\r\n {\r\n component: ProofsNoOnfidoComponent,\r\n id: SECTIONS.PROOFS,\r\n title: 'Proofs'\r\n },\r\n {\r\n component: ProofsComponent,\r\n id: SECTIONS.PROOF_VERIFY,\r\n title: 'ProofVerify'\r\n },\r\n {\r\n component: FinanceDocumentsComponent,\r\n id: SECTIONS.FINANCE_DOCUMENTS,\r\n title: 'FinanceDocuments'\r\n },\r\n {\r\n component: SettingsComponent,\r\n id: SECTIONS.SETTINGS,\r\n title: 'Settings'\r\n },\r\n {\r\n component: HelpComponent,\r\n id: SECTIONS.HELP,\r\n title: 'Help'\r\n },\r\n {\r\n component: MarketingPreferencesComponent,\r\n id: SECTIONS.MARKETING,\r\n title: 'Marketing'\r\n }, \r\n {\r\n component: AcceptanceStatusComponent,\r\n id: SECTIONS.ACCEPTANCE_STATUS,\r\n title: 'Get my loan offer',\r\n valid: (context, instance) => true,\r\n dirty: (context, instance) => instance.isDirty,\r\n getData: (application, data, context, instance) => {\r\n\r\n if (data.length > 0) {\r\n application.loanProposalResponses = data;\r\n }\r\n\r\n },\r\n markAsPristine: noop\r\n },\r\n {\r\n component: AgreementsDocumentationComponent,\r\n id: SECTIONS.DOCUMENTS,\r\n title: 'Agreements & Documentation',\r\n valid: (context, instance) => false,\r\n dirty: (context, instance) => false,\r\n getData: (application, data, context, instance) => {\r\n // Document proof uploads and deletions are handled through seperate web service calls\r\n }\r\n }\r\n ];\r\n\r\n export {\r\n DYNAMIC_COMPONENTS\r\n }\r\n","\r\nconst defaultModalSettings = {\r\n title: 'Discard Changes',\r\n content: 'Are you sure that you want to discard the changes?',\r\n yes: 'Yes',\r\n no: 'No',\r\n config: {\r\n ignoreBackdropClick: true,\r\n keyboard: false\r\n }\r\n};\r\n\r\nconst defaultErrorMessages= {\r\n required: 'The {{field}} is required.',\r\n registrationRequired: 'The {{field}} is required, or search one of our cars',\r\n minlength: 'The {{field}} must be at least {{requiredLength}} characters long.',\r\n maxlength: 'The {{field}} cannot be more than {{requiredLength}} characters long.',\r\n min: 'The {{field}} should have a minimum value of {{minimumValue}}.',\r\n max: 'The {{field}} should have a maximum value of {{maximumValue}}.',\r\n minDate:'The {{field}} cannot be before {{minimumValue}}.',\r\n maxDate:'The {{field}} cannot be after {{maximumValue}}.',\r\n anyof: 'The {{field}} should be included in {{requiredValue}}.',\r\n pattern:'The {{field}} is invalid.',\r\n nonBlank:'The {{field}} is required'\r\n};\r\n\r\nexport {\r\n defaultModalSettings,\r\n defaultErrorMessages\r\n};\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'privacy-policy',\r\n templateUrl: './privacy-policy.component.html',\r\n styleUrls: ['./privacy-policy.component.scss']\r\n})\r\nexport class PrivacyPolicyComponent implements OnInit {\r\n\r\n source:string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if(window.location.href.indexOf(\"dealerplus\") != -1){\r\n this.source = 'dealer';\r\n }\r\n else if(window.location.href.indexOf(\"comparecarfinance\") != -1){\r\n this.source = 'ccf';\r\n }\r\n else{\r\n this.source = 'customer';\r\n }\r\n }\r\n}\r\n","import { async, ComponentFixture, TestBed } from '@angular/core/testing';\r\n\r\nimport { BaseFormComponent } from './base-form.component';\r\n\r\nimport { By } from '@angular/platform-browser';\r\n/*\r\n\r\nTESTS\r\n=====\r\n\r\nTest the broadcast to section-container set-open takes place for the form name \r\n\r\n ngOnChanges()\r\n isUpdate()\r\n canDeactivate()\r\n Test toggleHelp() toggles the showHelp value\r\n createForm()\r\n Test initializeFormDefinition() sets this.formDefinition.metadata correctly\r\n initializeFormDefinitionRecursive()\r\n getFormErrorsObjectRecursive()\r\n \r\n Test setMetaData() adds a metadata object with default settings where the key parameter doesn't exist on this.formDefinition.metadata\r\n Test setMetaData() adds a label to the metadata for the key parameter when no label exists\r\n Test setMetaData() adds an errorMessages object to the metadata for the key parameter when no errorMessages object exists\r\n Test setMetaData() adds a default errorMessages item to the metadata when an errorMessages object exists but the item doesn't\r\n Test setMetaData() does not change the errorMessages item on the metadata when an errorMessages object exists with the item\r\n Test setFormData() sets values successfully for plain data model that matches the form FormGroup\r\n Test setFormData() sets values successfully for hierarchical data model that matches the form FormGroup\r\n Test setFormData() sets values successfully for plain data model with array that matches the form FormGroup\r\n Test setFormData() sets values successfully for hierarchical data model with array that matches the form FormGroup\r\n Test setFormData() sets values successfully for plain data model that does not match the form FormGroup\r\n Test setFormData() sets values successfully for hierarchical data model that does not match the form FormGroup\r\n Test setFormData() sets values successfully for plain data model with array that does not match the form FormGroup\r\n Test setFormData() sets values successfully for hierarchical data model with array that does not match the form FormGroup\r\n Test getFormData() returns form data successfully\r\n\r\n getModelData()\r\n saveModelData()\r\n \r\n Test edit() sets this.editing=true\r\n Test cancel() sets this.editing = false\r\n Test cancel() runs this.setFormData\r\n Test cancel() marks the form as pristine\r\n Test onValueChanged() calls onValueChangedRecursive() if this.form exists\r\n Test onValueChanged() does not call onValueChangedRecursive() if this.form does not exist\r\n Test onValueChanged() calls validSubscription()\r\n Test onValueChanged() calls dirtySubscription()\r\n Test validSubscription() broadcasts where form.valid==true\r\n Test validSubscription() does not broadcast where form.value==false\r\n Test dirtySubscription() broadcasts where form.dirty==true\r\n Test dirtySubscription() does not broadcast where form.dirty==false\r\n Test onValueChangedRecursive() adds an error to this.formErrors for a FormGroup field that becomes invalid\r\n Test onValueChangedRecursive() removes the error from this.formErrors for a FormGroup field that becomes valid\r\n Test onValueChangedRecursive() adds an error to this.formErrors for a nested/child FormGroup field that becomes invalid\r\n Test onValueChangedRecursive() removes the error from this.formErrors for a nested/child FormGroup field that becomes valid\r\n Test onValueChangedRecursive() adds an error to this.formErrors for a FormArray field that becomes invalid\r\n Test onValueChangedRecursive() removes the error from this.formErrors for a FormArray field that becomes valid\r\n Test onValueChangedRecursive() that the error message '{{field}}' is replaced with the this.formDefinition.metadata field label for an error that occurs\r\n Test onValueChangedRecursive() that the error message '{{error value}}' is replaced with the error key value\r\n Test initialiseFormArrayItems() FormArray size == data array size\r\n Test addItem() adds a FormArray item\r\n Test addItem() sets form.dirty==true\r\n Test removeItem() removes a FormArray item\r\n Test removeItem() sets form.dirty==true\r\n \r\n*/\r\n\r\n// describe('BaseFormComponent', () => {\r\n// let component: BaseFormComponent;\r\n// let fixture: ComponentFixture;\r\n\r\n// beforeEach(async(() => {\r\n// TestBed.configureTestingModule({\r\n// declarations: [ BaseFormComponent ]\r\n// })\r\n// .compileComponents();\r\n// }));\r\n\r\n// beforeEach(() => {\r\n// fixture = TestBed.createComponent(BaseFormComponent);\r\n// component = fixture.componentInstance;\r\n// fixture.detectChanges();\r\n// });\r\n// });\r\n\r\n\r\nexport class BaseFormTester {\r\n\r\n constructor() { }\r\n\r\n public testApplicationStatusServiceSetState(component, status): boolean {\r\n\r\n component.editing = false;\r\n component.visible = false;\r\n component.enabled = false;\r\n\r\n component.applicationStatusService.setState(component.application, status, false);\r\n\r\n return component.editing && component.visible && component.enabled;\r\n\r\n }\r\n\r\n public testSectionCollapseExists(fixture: ComponentFixture): boolean {\r\n\r\n let de = fixture.debugElement.queryAll(By.css('.card-block.collapse'))[0];\r\n return (typeof de!='undefined');\r\n\r\n }\r\n\r\n public testSectionIsCollapsed(fixture: ComponentFixture): boolean {\r\n\r\n let de = fixture.debugElement.queryAll(By.css('.card-block.collapse'))[0];\r\n return de.attributes['aria-expanded'] && de.attributes['aria-expanded']=='false';\r\n\r\n }\r\n\r\n public testSectionContainerIcon(fixture: ComponentFixture, className:string): boolean {\r\n \r\n let de = fixture.debugElement.queryAll(By.css('icon-component i'))[0];\r\n return de.attributes['ng-reflect-ng-class'] && de.attributes['ng-reflect-ng-class']==className;\r\n \r\n }\r\n\r\n}\r\n","enum WORKFLOWS {\r\n ENQUIRY_RECEIVED = 'ENQUIRY_RECEIVED',\r\n PROVISIONALLY_ACCEPTED = 'PROVISIONALLY_ACCEPTED',\r\n QUOTES_STARTED = 'QUOTES_STARTED',\r\n DETAILS_STARTED = 'DETAILS_STARTED',\r\n APPLICATION_PENDING = 'APPLICATION_PENDING',\r\n APPLICATION_SENT = 'APPLICATION_SENT',\r\n APPLICATION_DECLINED = 'APPLICATION_DECLINED',\r\n APPLICATION_REFERRED = 'APPLICATION_REFERRED',\r\n APPLICATION_ACCEPTED = 'APPLICATION_ACCEPTED',\r\n APPLICATION_ERROR = 'APPLICATION_ERROR',\r\n APPLICATION_MANUAL = 'APPLICATION_MANUAL',\r\n DOCS_TO_BE_ISSUED = 'DOCS_TO_BE_ISSUED',\r\n DOCS_ISSUED = 'DOCS_ISSUED',\r\n DOCS_RECEIVED = 'DOCS_RECEIVED',\r\n DOCS_WITH_LENDER = 'DOCS_WITH_LENDER',\r\n AWAITING_PROOFS = 'AWAITING_PROOFS',\r\n PROOFS_RECEIVED = 'PROOFS_RECEIVED',\r\n PAID_OUT = 'PAID_OUT',\r\n CLIENT_CANCELLED = 'CLIENT_CANCELLED',\r\n ABANDONED = 'ABANDONED',\r\n CANNOT_LEND = 'CANNOT_LEND',\r\n Further_Info_Required = 'Further_Info_Required'\r\n};\r\n\r\nexport {\r\n WORKFLOWS\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Applicant } from \"../../../core/services/types\";\r\n\r\n@Pipe({\r\n name: 'fullname',\r\n pure: false\r\n})\r\nexport class FullnamePipe implements PipeTransform {\r\n\r\n transform(value: Applicant, args?: any): any {\r\n if(value == null || value.identity == null || Object.keys(value.identity).length === 0){\r\n return \"\";\r\n }\r\n\r\n let identity = value.identity;\r\n\r\n switch (args) {\r\n case 'long':\r\n return identity.title + ' ' + identity.forename + ' ' + identity.surname;\r\n\r\n case 'short':\r\n return identity.title + ' ' + identity.surname;\r\n\r\n default:\r\n return identity.title + ' ' + identity.forename + ' ' + identity.surname;\r\n }\r\n }\r\n\r\n}\r\n","import { CommercialAddress } from \"./types-address\";\r\n\r\n/*\r\n Employer\r\n*/\r\nclass Employer {\r\n public status: string;\r\n public jobIndustry: string;\r\n public employmentStatus: string;\r\n public name: string;\r\n public address: CommercialAddress;\r\n public telephone: string;\r\n public jobTitle: string;\r\n public startDate: Date;\r\n public endDate: Date;\r\n public JobType: string;\r\n}\r\n\r\n\r\nexport {\r\n Employer\r\n}","import { Component, OnInit, forwardRef, Input } from '@angular/core';\r\nimport { CustomRadioButtonComponent } from \"../custom-radio-button/custom-radio-button.component\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'yes-or-no',\r\n templateUrl: './custom-radio-button.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => YesOrNoComponent),\r\n multi: true,\r\n }]\r\n})\r\nexport class YesOrNoComponent extends CustomRadioButtonComponent {\r\n\r\n @Input()\r\n editing: boolean = true;\r\n\r\n constructor() { super(); }\r\n\r\n ngOnInit() {\r\n this.items = [{ label: 'Yes', value: true }, { label: 'No', value: false }];\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { AuthenticationGuard } from './core/services/authentication-guard/authentication-guard.service';\r\nimport { NotFoundComponent } from './shared/components/not-found/not-found.component';\r\n// import { ROLES } from './core/services/configuration/configuration-roles';\r\n\r\nconst appRoutes: Routes = [\r\n /*{\r\n path: '', pathMatch: 'full',\r\n component: NotFoundComponent,\r\n canActivate: [AuthenticationGuard],\r\n data: {\r\n redirectRoles: [\r\n {\r\n id: ROLES.CUSTOMER.name,\r\n redirectTo: '/login',\r\n },\r\n {\r\n id: ROLES.DEALER.name,\r\n redirectTo: '/dealer-portal',\r\n },\r\n {\r\n id: ROLES.ADMIN.name,\r\n redirectTo: '/dealer-portal',\r\n }\r\n ]\r\n }\r\n },*/\r\n {\r\n path: 'login',\r\n loadChildren: () => import ('../app/login/login.module').then(m => m.LoginModule)\r\n },\r\n {\r\n path: 'register',\r\n loadChildren: () => import ('../app/login/login.module').then(m => m.LoginModule)\r\n },\r\n {\r\n path: 'register-panel',\r\n loadChildren: () => import('../app/login/login.module').then(m => m.LoginModule)\r\n },\r\n {\r\n path: 'applications',\r\n loadChildren: () => import('../app/applications/applications.module').then(m => m.ApplicationsModule)\r\n },\r\n {\r\n path: 'NotFound',\r\n component: NotFoundComponent,\r\n canActivate: [AuthenticationGuard]\r\n },\r\n {\r\n path: 'vehicle', \r\n loadChildren: () => import('../app/vehicle/vehicle.module').then(m => m.VehicleModule)\r\n },\r\n {\r\n path: 'dashboard', \r\n loadChildren: () => import('../app/dashboard/dashboard.module').then(m =>m.DashboardModule)\r\n },\r\n {\r\n path: '', \r\n loadChildren: () => import('../app/home/home.module').then(m => m.HomeModule)\r\n },\r\n { path: '**', redirectTo: 'NotFound' }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(appRoutes, { paramsInheritanceStrategy: 'always' })\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { DealAction } from '../types-deal-action';\r\n\r\n@Injectable()\r\nexport class TimelineService{\r\n constructor() { }\r\n \r\n getDealStates(dealActions: DealAction[]){\r\n var statesToDisplay: Array = new Array();\r\n var formattedStateDates: Array = new Array();\r\n var formattedStateNames: Array = new Array();\r\n var formattedStateTimes: Array = new Array(); \r\n var formattedStateId: Array = new Array();\r\n var returnArray: Array> = new Array();\r\n const dealStates = [1,2,4,5,6,7,9,10,11,12,24,26,44,49,53,55,64,65,67,68,70,80,82]\r\n var dealStatesFound = [];\r\n //Get only states we wish to display, ignore others.\r\n for(var i = 0; i < dealActions.length; i++){\r\n if(dealStates.indexOf(dealActions[i].dealStateID) != -1 && dealStatesFound.indexOf(dealActions[i].dealStateID) == -1) {\r\n statesToDisplay.push(dealActions[i]);\r\n dealStatesFound.push(dealActions[i].dealStateID)\r\n }\r\n }\r\n var date: Date;\r\n var day: string;\r\n var month: string;\r\n var year: string;\r\n var dateString: string;\r\n var stateText: string;\r\n var hour: string;\r\n var minutes: string;\r\n var timeString: string;\r\n \r\n for(var j = 0; j < statesToDisplay.length; j++){\r\n //format date.\r\n date = new Date(statesToDisplay[j].dealActionDateTime);\r\n (date.getDate() < 10) ? day = \"0\" + date.getDate().toString() : day = date.getDate().toString();\r\n (date.getMonth() < 10) ? month = \"0\" + date.getMonth().toString() : month = date.getMonth().toString();\r\n year = date.getFullYear().toString();\r\n dateString = day + \"/\" + month + \"/\" + year;\r\n\r\n hour = date.getHours().toLocaleString();\r\n minutes = date.getMinutes().toLocaleString();\r\n timeString = hour + \":\" + minutes;\r\n var a = moment(date)\r\n timeString= a.format(\"DD/MM/YY HH:MM\");\r\n //map state id to text to display\r\n switch(statesToDisplay[j].dealStateID){\r\n \r\n case 1: // Enquiry received\r\n stateText = \"Application received\";\r\n break; \r\n \r\n case 2: //Proposal sent\r\n stateText = \"Application with lender\";\r\n break; \r\n \r\n case 4: //Proposal accepted\r\n stateText = \"Application accepted\";\r\n break; \r\n \r\n case 5: //Declined\r\n stateText = \"Application closed\";\r\n break; \r\n \r\n case 6: //Client cancel\r\n stateText = \"Application closed\";\r\n break; \r\n \r\n case 7: //Paid out\r\n stateText = \"Paid-out\";\r\n break; \r\n \r\n case 9: //Docs issued\r\n stateText = \"Please sign agreements\";\r\n break; \r\n \r\n case 10: //Docs received\r\n stateText = \"Agreements received\";\r\n break; \r\n \r\n case 11: //Abandoned\r\n stateText = \"Application closed\";\r\n break; \r\n \r\n case 12: //Further info required.\r\n stateText = \"Further information required\";\r\n break; \r\n \r\n case 24: //Cannot lend\r\n stateText = \"Application closed\";\r\n break; \r\n \r\n case 26: //Docs w/Lender\r\n stateText = \"Awaiting pay-out\";\r\n break; \r\n \r\n case 44: //Lost deal\r\n stateText = \"Application closed\";\r\n break; \r\n \r\n case 49: //Duplicate\r\n stateText = \"Application closed\";\r\n break; \r\n \r\n case 53: //False app\r\n stateText = \"Application closed\";\r\n break; \r\n \r\n // case 55: // Renewal\r\n // stateText = \"\";\r\n // break; \r\n \r\n case 64: //Underwriting\r\n stateText = \"Further information required\";\r\n break; \r\n \r\n case 65: //Provisionally accepted\r\n stateText = \"Application received\";\r\n break; \r\n \r\n // case 67: //Renewal progressed\r\n // stateText = \"\";\r\n // break; \r\n \r\n // case 68: //Renewal not progressed\r\n // stateText = \"\";\r\n // break; \r\n \r\n case 70: //Partial application\r\n stateText = \"Further information required\";\r\n break; \r\n \r\n // case 80: //Rewound\r\n // stateText = \"\";\r\n // break; \r\n \r\n case 82: //Details started\r\n stateText = \"Further information required\";\r\n break; \r\n \r\n default: \r\n break;\r\n }\r\n formattedStateId.push(statesToDisplay[j].dealStateID.toString());\r\n formattedStateNames.push(stateText);\r\n formattedStateDates.push(dateString);\r\n formattedStateTimes.push(timeString);\r\n }\r\n returnArray.push(formattedStateId);\r\n returnArray.push(formattedStateNames);\r\n returnArray.push(formattedStateDates);\r\n returnArray.push(formattedStateTimes)\r\n return returnArray;\r\n }\r\n \r\n }\r\n \r\n ","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\nimport { Application } from '../../../core/services/types';\r\n@Component({\r\n selector: 'help',\r\n templateUrl: './help.component.html',\r\n styleUrls: ['./help.component.scss']\r\n})\r\nexport class HelpComponent implements OnInit {\r\n @Input()\r\n application: Application;\r\n constructor(private parentRouter: Router, private titleService: Title) { }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(\"Help Centre\");\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Help Centre\r\n
    \r\n\r\n
    \r\n
    \r\n
    Frequently Asked Questions
    \r\n
    M
    \r\n
    \r\n
    \r\n
    \r\n
    Glossary
    \r\n
    M
    \r\n
    \r\n
    \r\n
    \r\n
    Blog
    \r\n
    M
    \r\n
    \r\n
    \r\n
    \r\n
    Contact
    \r\n
    M
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Subject, Subscription } from 'rxjs';\r\n\r\n@Injectable()\r\nclass ActionsService {\r\n\r\n public context: string;\r\n\r\n // Global actions subject available for subscription and will return actions from all components that implement the broadcast method\r\n private globalActionSubject = new Subject();\r\n\r\n private actions: any = {};\r\n // Will contain an object of specific action subscriptions i.e. save.click, cancel.click, add.click, edit.click in the format below\r\n // {\r\n // save:{\r\n // root:Subscription,\r\n // behaviours:{\r\n // click:Subscription,\r\n // actrive:Subscription\r\n // }\r\n // },\r\n // ...\r\n // }\r\n\r\n private acceptsSetValue: any = {};\r\n private acceptsGetValue: any = {};\r\n\r\n constructor() { }\r\n\r\n // Broadcasts actions globally through actionsource and for specific subscriptions in the actions object\r\n // The components that are subscribed can then act upon the action accordingly\r\n broadcast(action: any) {\r\n\r\n action.context = this.context;\r\n this.globalActionSubject.next(action);\r\n\r\n var observers = this.actions[action.action];\r\n\r\n if (typeof observers != 'undefined') {\r\n observers.root.next(action);\r\n\r\n if (typeof action.behaviour != 'undefined' && typeof observers.behaviours[action.behaviour] != 'undefined') {\r\n observers.behaviours[action.behaviour].next(action);\r\n }\r\n }\r\n\r\n }\r\n\r\n // Register an observer for global actions and return an associated subscription\r\n registerGlobalObserver(callback, context): Subscription {\r\n\r\n return this.globalActionSubject.subscribe(callback, context);\r\n\r\n }\r\n\r\n\r\n // Register an observer for a specific action i.e save.click, edit.click and return an associated subscription\r\n // This can be used by a component to check for a specific action on another component that it can then act upon\r\n registerObserver(action, callback, context): Subscription {\r\n\r\n var splitAction = action.split('.');\r\n var rootAction = splitAction[0];\r\n\r\n if (typeof this.actions[rootAction] == 'undefined') {\r\n this.actions[rootAction] = {\r\n root: new Subject(),\r\n behaviours: {}\r\n };\r\n }\r\n\r\n if (splitAction.length == 2) {\r\n if (typeof this.actions[rootAction].behaviours[splitAction[1]] == 'undefined') {\r\n this.actions[rootAction].behaviours[splitAction[1]] = new Subject();\r\n }\r\n var behaviour = this.actions[rootAction].behaviours[splitAction[1]];\r\n return behaviour.subscribe(callback, context);\r\n }\r\n return this.actions[rootAction].root.subscribe(callback, context);\r\n\r\n }\r\n\r\n // Register a list of observers for specific actions i.e save.click, edit.click and return associated subscriptions\r\n // This can be used by a component to check for specific actions on other components that it can then act upon\r\n registerObservers(actions, callback, context): Subscription[] {\r\n\r\n var subscriptions: Subscription[] = [];\r\n\r\n actions.map(\r\n action => {\r\n var observer = this.registerObserver(action, callback, context);\r\n subscriptions.push(observer);\r\n },\r\n this\r\n );\r\n\r\n return subscriptions;\r\n }\r\n\r\n // Cancel all subscriptions made for a particular registerObservers call\r\n cancelSubscriptions(subscription: Subscription[]) {\r\n\r\n if (subscription) {\r\n subscription.map(subscription => { subscription.unsubscribe(); });\r\n }\r\n }\r\n\r\n // Cancel a subscription made through registerObserver\r\n cancelSubscription(subscription: Subscription) {\r\n if (subscription) {\r\n subscription.unsubscribe();\r\n }\r\n }\r\n\r\n // Register an observer component that will be accept requests to change attributes/values/properties\r\n registerAcceptsSetValue(group, callback, context): Subscription {\r\n\r\n if (typeof this.acceptsSetValue[group] == 'undefined') {\r\n this.acceptsSetValue[group] = new Subject();\r\n }\r\n\r\n return this.acceptsSetValue[group].subscribe(callback, context);\r\n\r\n }\r\n\r\n // Set a value on a component that accepts change requests\r\n setValue(group: string, key: string, itemkey: string, value) {\r\n\r\n var subject = this.acceptsSetValue[group];\r\n\r\n var values = {\r\n key: key,\r\n itemkey: itemkey,\r\n value: value\r\n };\r\n\r\n if (typeof subject != 'undefined') {\r\n subject.next(values);\r\n }\r\n\r\n }\r\n\r\n // Register an observer component that will accept requests to return attributes/values/properties information\r\n registerAcceptsGetValue(group, callback, context): Subscription {\r\n\r\n if (typeof this.acceptsGetValue[group] == 'undefined') {\r\n this.acceptsGetValue[group] = new Subject();\r\n }\r\n\r\n return this.acceptsGetValue[group].subscribe(callback, context);\r\n\r\n }\r\n\r\n // Get a value from a component that accepts requests for attributes/values/properties information\r\n getValue(group: string, key: string, itemkey: string) {\r\n\r\n var subject = this.acceptsGetValue[group];\r\n\r\n var values = {\r\n key: key,\r\n itemkey: itemkey\r\n };\r\n\r\n if (typeof subject != 'undefined') {\r\n subject.source.next(values);\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport {\r\n ActionsService\r\n}\r\n","\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { PAGES, Configuration } from \"../../../core/services/configuration/configuration\";\r\nimport { JourneyPage } from \"../../../core/services/types\";\r\nimport { TokenService } from '../../../core/services/token/token.service';\r\n\r\n@Component({\r\n selector: 'section-headings',\r\n templateUrl: './section-headings.component.html',\r\n styleUrls: ['./section-headings.component.scss']\r\n})\r\nexport class SectionHeadingsComponent implements OnInit {\r\n\r\n @Input()\r\n page: string;\r\n\r\n showActiveItemOnly: boolean = Configuration.loadCurrentJourneyType().topMenu.showActiveItemOnly;\r\n\r\n pages: JourneyPage[];\r\n\r\n constructor(private tokenService: TokenService ) { }\r\n\r\n ngOnInit() {\r\n this.pages = Configuration.loadCurrentJourneyPages(this.tokenService.roles); \r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    ","import { Subscription } from 'rxjs';\r\nimport { Component, Input, OnInit, OnDestroy } from '@angular/core';\r\nimport { Application, ProposedVehicle } from '../../../core/services/types';\r\nimport { SECTIONS } from '../../../core/services/configuration/configuration';\r\n\r\nimport { ApplicationStatusService } from './../../../core/services/application-status/application-status.service';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { DisplayVehicle } from '../../../core/services/types-quote';\r\n\r\n@Component({\r\n selector: 'acceptance-status',\r\n templateUrl: './acceptance-status.component.html',\r\n styleUrls: ['./acceptance-status.component.scss']\r\n})\r\n\r\nexport class AcceptanceStatusComponent implements OnInit, OnDestroy {\r\n\r\n @Input()\r\n application: Application;\r\n\r\n vehicles: ProposedVehicle[];\r\n name = SECTIONS.ACCEPTANCE_STATUS;\r\n stateSubscriptions: Subscription[];\r\n\r\n constructor(\r\n private applicationStatusService: ApplicationStatusService,\r\n private actionsService : ActionsService ) { }\r\n\r\n ngOnInit() {\r\n window.scroll(0, 0);\r\n this.stateSubscriptions = this.applicationStatusService.registerSectionStatusObservers(this.name, this);\r\n this.vehicles = this.application.quotes.filter(q => q.isSelected).map(q => q.vehicle);\r\n this.actionsService.registerObserver(\r\n 'offers.lowestPrice',\r\n action => {\r\n this.application.quotes[0].financeResponse.monthlyPayment = action.value;\r\n },\r\n this\r\n );\r\n this.broadcastVehicle();\r\n }\r\n\r\n broadcastVehicle(){\r\n const quote = this.application.quotes[0];\r\n const vehicle: DisplayVehicle = {\r\n make: quote.vehicle.make,\r\n model: quote.vehicle.model,\r\n variant: quote.vehicle.model,\r\n source: quote.vehicle.source=\"quote generated\",\r\n registration: quote.vehicle.registration,\r\n regYear: Number(quote.vehicle.dateOfRegistration.split(\"-\")[0]),\r\n term: quote.financeRequest.term,\r\n monthlyPayments: quote.financeResponse.monthlyPayment,\r\n financeType: quote.financeRequest.financeType,\r\n balloon: quote.financeResponse.balloon,\r\n imageUrl_Main: quote.vehicle.imageUrl\r\n }\r\n this.actionsService.broadcast({\r\n action: 'displayVehicle',\r\n behaviour: 'updateVehicle',\r\n value: { vehicle: vehicle, status: this.application.status, loanOffer: null}\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.applicationStatusService.cancelSectionStatusSubscriptions(this.stateSubscriptions);\r\n }\r\n}\r\n\r\n","
    \r\n \r\n \r\n
    \r\n","\r\nimport {catchError, map} from 'rxjs/operators';\r\nimport { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core';\r\nimport { Application } from '../../../core/services/types';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { TokenService } from '../../../core/services/token/token.service';\r\nimport { LoadingModalService } from '../../../core/services/modal/loading-modal.service';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ActionsService } from '../../../core/services/actions/actions.service';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ApplicantNotes } from '../../../core/services/types-applicantNotes';\r\nimport { UserService } from '../../../core/services/user/user.service';\r\nimport * as pako from 'pako';\r\n\r\n\r\n@Component({\r\n selector: 'marketing-preferences',\r\n templateUrl: './marketing-preferences.component.html',\r\n styleUrls: ['./marketing-preferences.component.scss']\r\n})\r\nexport class MarketingPreferencesComponent implements OnInit {\r\n @Input()\r\n application: Application;\r\n detailsRequest: String;\r\n imputValue: boolean = true;\r\n imputValue2: boolean = false;\r\n notFound: boolean = false;\r\n display: boolean = true;\r\n visibleProperty: boolean = false;\r\n\r\n emailCheck: boolean;\r\n phoneCheck: boolean;\r\n smsCheck: boolean;\r\n postCheck: boolean;\r\n constructor(private http: HttpClient,\r\n private tokenService: TokenService,\r\n private loadingModalService: LoadingModalService,\r\n protected activatedRoute: ActivatedRoute, private userService: UserService, protected actionsService: ActionsService, private titleService: Title ) { }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(\"Marketing Preferences\");\r\n// this.emailCheck = this.application.\r\n this.phoneCheck = true;\r\n this.smsCheck = true;\r\n this.postCheck = true;\r\n //this.showLoading()\r\n //this.getPreferences();\r\n this.loadApplication();\r\n }\r\n\r\n loadApplication() {\r\n var retrievedArr = JSON.parse(localStorage.getItem('_sdma'));\r\n if (retrievedArr != null) {\r\n const restored = JSON.parse(pako.inflate(retrievedArr, { to: 'string' }));\r\n this.application = restored;\r\n }\r\n\r\n this.phoneCheck = this.application.dataProtection.phone;\r\n this.smsCheck = this.application.dataProtection.sms;\r\n this.postCheck = this.application.dataProtection.post;\r\n this.emailCheck = this.application.dataProtection.email;\r\n }\r\n\r\n sendNote() {\r\n var customerNote = new ApplicantNotes();\r\n customerNote.contactid = this.application.id;\r\n customerNote.addedBy = 1;\r\n customerNote.addedByUsername = \"portal\";\r\n customerNote.DateAdded = null;\r\n customerNote.noteSubject = \"Customer request - personal details\";\r\n customerNote.note = \"Customer message: \" + this.detailsRequest;\r\n this.userService.createNewNote(customerNote).toPromise();\r\n }\r\n\r\n updatePreferences() {\r\n this.notFound = true;\r\n this.imputValue2 = true;\r\n this.display = false;\r\n // this.sendNote();\r\n // console.log(this.detailsRequest);\r\n }\r\n\r\n getPreferences() {\r\n this.getPreferences2().subscribe(response => {\r\n var contactMethod;\r\n var contactAllowed;\r\n var formatBody = response._body\r\n formatBody = formatBody.replace(\"{\", \"\");\r\n formatBody = formatBody.replace(\"}\", \"\");\r\n var body = formatBody.split(\",\");\r\n for (var i = 0; i < body.length; i++) {\r\n body[i] = body[i].replace('\"', \"\");\r\n body[i] = body[i].replace('\"', \"\");\r\n body[i] = body[i].replace(',', \"\");\r\n body[i] = body[i].replace(/\\s/g, '');\r\n contactMethod = body[i].split(\":\")[0];\r\n contactAllowed = body[i].split(\":\")[1];\r\n\r\n switch (contactMethod) {\r\n case \"email\":\r\n if (contactAllowed == \"true\") {\r\n this.emailCheck = true;\r\n } else {\r\n this.emailCheck = false;\r\n }\r\n break;\r\n\r\n case \"post\":\r\n if (contactAllowed == \"true\") {\r\n this.postCheck = true;\r\n } else {\r\n this.postCheck = false;\r\n }\r\n break;\r\n\r\n case \"phone\":\r\n if (contactAllowed == \"true\") {\r\n this.phoneCheck = true;\r\n } else {\r\n this.phoneCheck = false;\r\n }\r\n break;\r\n\r\n case \"sms\":\r\n if (contactAllowed == \"true\") {\r\n this.smsCheck = true;\r\n } else {\r\n this.smsCheck = false;\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n this.hideLoadingModal();\r\n })\r\n }\r\n\r\n //checkPreferences(){\r\n // this.smsCheck = this.smsCheckbox.nativeElement.checked;\r\n // this.postCheck = this.postCheckbox.nativeElement.checked;\r\n // this.phoneCheck = this.phoneCheckbox.nativeElement.checked;\r\n // this.emailCheck = this.emailCheckbox.nativeElement.checked;\r\n //}\r\n\r\n getPreferences2(): Observable{\r\n let url = environment.base + \"/customer/application/gdpr?id=\" + this.application.id;\r\n var headers = new HttpHeaders( );\r\n headers = headers.append('Authorization', 'Bearer ' + this.tokenService.bearerToken);\r\n return this.http.get(url, ({ headers: headers }) ).pipe(\r\n map((response) => {\r\n return response\r\n }),catchError((error) => {\r\n throw error;\r\n }),)\r\n }\r\n\r\n updatePreferencesCall(){\r\n let url = environment.base + \"/customer/application/gdpr/update?id=\" + this.application.id + \r\n \"&email=\" + this.emailCheck +\r\n \"&phone=\" + this.phoneCheck +\r\n \"&sms=\" + this.smsCheck +\r\n \"&post=\" + this.postCheck;\r\n var headers = new HttpHeaders( );\r\n headers = headers.append('Authorization', 'Bearer ' + this.tokenService.bearerToken);\r\n return this.http.get(url, ({ headers: headers })).pipe(\r\n map((response) => {\r\n return response\r\n }),catchError((error) => {\r\n throw error;\r\n }),) \r\n }\r\n\r\n showLoading(){\r\n this.loadingModalService.show();\r\n } \r\n\r\n hideLoadingModal(){\r\n this.loadingModalService.hide();\r\n }\r\n\r\n checkInput() {\r\n\r\n var ngModel = this.detailsRequest;\r\n\r\n if (ngModel == null || ngModel == '') {\r\n this.imputValue = true;\r\n }\r\n else {\r\n this.imputValue = false;\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n

    Marketing preferences

    \r\n
    \r\n

    \r\n Please choose which method of contact you would like to recieve.\r\n

    \r\n
    Email:
    \r\n
    \r\n \r\n
    \r\n
    Phone:
    \r\n
    \r\n \r\n
    \r\n
    SMS:
    \r\n
    \r\n \r\n
    \r\n
    POST:
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n Your request is being reviewed.\r\n
    \r\n \r\n\r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n","import { Subscription } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { Application, JourneyPage } from \"../types\";\r\n\r\nimport { ActionsService } from \"../actions/actions.service\";\r\n\r\nimport { CONFIGURATION, Configuration, JourneyConfiguration } from \"../configuration/configuration\";\r\nimport { PAGES, JOURNEY_TYPES } from \"../configuration/configuration-journeys\";\r\nimport { ROLES } from '../configuration/configuration-roles';\r\n\r\nimport { TokenService } from '../token/token.service';\r\nimport { LoginService } from '../login/login.service';\r\n\r\nimport {\r\n EventStates,\r\n PageEventPages,\r\n PageState,\r\n PageSectionStates,\r\n PageSectionState,\r\n PAGE_ENABLED_AND_EDITABLE,\r\n PAGE_ACTIVE_AND_EDITABLE,\r\n PAGE_ACTIVE_AND_READONLY,\r\n SECTION_VISIBLE_AND_EDITABLE,\r\n SECTION_VISIBLE_AND_READONLY,\r\n SECTION_HIDDEN,\r\n SECTION_DISABLED,\r\n PAGE_DISABLED,\r\n PAGE_ENABLED_AND_READONLY\r\n} from '../configuration/configuration-page-states';\r\nimport { GROUPS } from '../configuration/configuration-groups';\r\nimport { CONFIGURATION_CCF } from '../configuration/configuration-groups-ccf';\r\n\r\n@Injectable()\r\nexport class ApplicationStatusService {\r\n\r\n\r\n eventStates: EventStates;\r\n state: any = {};\r\n stateObjectCreated: boolean = false;\r\n\r\n broadcastChangesOnly: boolean = false;\r\n\r\n pages: any;\r\n\r\n currentEvent: string;\r\n\r\n pageBehaviours: string[];\r\n sectionBehaviours: string[];\r\n\r\n defaultPastStepState: any;\r\n defaultActiveStepState: any;\r\n defaultFutureStepState: any;\r\n\r\n journeyPages: JourneyPage[];\r\n\r\n loggedInSubscription: Subscription;\r\n\r\n configuration: Configuration = CONFIGURATION;\r\n\r\n constructor(\r\n private actionsService: ActionsService, \r\n private router: Router, \r\n private activatedRoute: ActivatedRoute, \r\n private loginService: LoginService, \r\n private tokenService: TokenService) {\r\n\r\n this.pageBehaviours = ['enabled', 'active', 'editing'];\r\n this.sectionBehaviours = ['editing', 'visible', 'enabled'];\r\n\r\n this.setGroupConfiguration();\r\n /*\r\n\r\n Overview\r\n ========\r\n This service is used to automatically set read-only, editing, visible settings for all components within the application based upon a \r\n particular event state being applied.\r\n \r\n The event states are automatically defined based upon the sections, workflows & states array settings for each page in the journeyPages object\r\n\r\n Page & section state helper settings\r\n Page state\r\n ==========\r\n PAGE_ENABLED_AND_EDITABLE\r\n PAGE_ENABLED_AND_READONLY\r\n PAGE_ACTIVE_AND_EDITABLE - Make sure that only one page is active at a time\r\n PAGE_ACTIVE_AND_READONLY - Make sure that only one page is active at a time\r\n PAGE_DISABLED\r\n \r\n Section state\r\n =============\r\n SECTION_VISIBLE_AND_EDITABLE\r\n SECTION_VISIBLE_AND_READONLY\r\n SECTION_HIDDEN\r\n \r\n */\r\n\r\n this.loggedInSubscription = loginService.loginStatusAnnounced$.subscribe(loggedIn => { this.loginStatusAnnounced(loggedIn); })\r\n\r\n if (this.tokenService.roles.length) {\r\n this.initializeStateObjects();\r\n }\r\n\r\n }\r\n\r\n loginStatusAnnounced(loggedIn: boolean) {\r\n\r\n this.setGroupConfiguration();\r\n\r\n if (loggedIn) {\r\n this.initializeStateObjects();\r\n }\r\n\r\n }\r\n\r\n initializeState(application: Application) {\r\n\r\n this.setState(application, application.status);\r\n\r\n }\r\n\r\n initializeStateObjects() {\r\n\r\n this.journeyPages = Configuration.loadCurrentJourneyPages(this.tokenService.roles);\r\n\r\n this.setDefaultPageStepStates();\r\n\r\n /* \r\n \r\n These methods should only be called once to initialise when the application is first loaded. (currently in applications-container.component ngAfterViewInit() lifecycle)\r\n \r\n */\r\n this.createStateObject();\r\n this.createEventStatesObject();\r\n\r\n }\r\n\r\n setState(application: Application, status: string) {\r\n application.status = status;\r\n this.broadcast(status);\r\n }\r\n\r\n setDefaultPageStepStates() {\r\n\r\n var journeyType = this.getJourneyType();\r\n\r\n this.defaultPastStepState = journeyType.defaultPastStepState;\r\n this.defaultActiveStepState = journeyType.defaultActiveStepState;\r\n this.defaultFutureStepState = journeyType.defaultFutureStepState;\r\n\r\n }\r\n\r\n redirectRouteIfNotValidBasedOnStatus(application: Application, page: string) {\r\n\r\n /*\r\n Check that the page can be displayed based upon the current application status and if it can't then re-direct to the active page for the status\r\n */\r\n var pageRedirect = this.getValidRouteBasedOnStatus(application.status, page);\r\n\r\n if (pageRedirect != this.getRouteForPageName(page)) {\r\n this.router.navigate(['/applications', application.id, pageRedirect]);\r\n return true;\r\n }\r\n /*\r\n If no route was found based upon the status then redirect to the home route setting\r\n */\r\n else if (pageRedirect == null) {\r\n var homeRoute = this.getHomeRedirectRoute();\r\n this.router.navigate(homeRoute);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n getValidRouteBasedOnStatus(status: string, page: string): string {\r\n /*\r\n Check that the page can be displayed based upon the current application status and if it can't then re-direct to the active page for the status\r\n */\r\n var pages = this.getStatusPages(status);\r\n\r\n /*\r\n If the page is not enabled then get the re-direct to the page that should be active \r\n */\r\n if (page != null) {\r\n\r\n if (!pages[page].enabled) {\r\n for (var item in pages) {\r\n if (pages[item].active) {\r\n return PAGES[item.toUpperCase()].route;\r\n }\r\n }\r\n }\r\n else {\r\n return PAGES[page.toUpperCase()].route;\r\n }\r\n\r\n }\r\n /*\r\n If the page is null then return the active page\r\n */\r\n else {\r\n for (var item in pages) {\r\n if (pages[item].active) {\r\n return PAGES[item.toUpperCase()].route;\r\n }\r\n }\r\n }\r\n\r\n return page;\r\n\r\n }\r\n\r\n\r\n redirectRouteIfNotValidBasedOnStatusAndRoute(application: Application, routeName: string) {\r\n\r\n var routeRedirect = this.getValidRouteBasedOnStatusAndRoute(application.status, routeName);\r\n\r\n if (routeRedirect != routeName) {\r\n this.router.navigate(['/applications', application.id, routeRedirect]);\r\n }\r\n\r\n }\r\n\r\n getValidRouteBasedOnStatusAndRoute(status: string, routeName: string): string {\r\n\r\n var page = this.getPageNameForRoute(routeName);\r\n return this.getValidRouteBasedOnStatus(status, page);\r\n\r\n }\r\n\r\n getStatusPages(status: string): any {\r\n\r\n /*\r\n Returns the pages object associated with a particular application status state\r\n */\r\n return this.eventStates[status];\r\n\r\n }\r\n\r\n getPageNameForActivatedRoute() {\r\n\r\n var route = this.router.url.split('/')[3];\r\n\r\n return this.getPageNameForRoute(route);\r\n\r\n }\r\n\r\n getPageNameForRoute(routeName: string): string {\r\n\r\n var page = this.journeyPages.find(page => page.route == routeName);\r\n\r\n return (page != null) ? page.name : null;\r\n\r\n }\r\n\r\n\r\n getRouteForPageName(pageName: string): string {\r\n\r\n var page = this.journeyPages.find(page => page.name == pageName);\r\n\r\n return (page != null) ? page.route : null;\r\n\r\n }\r\n\r\n isPageEnabled(pageName: string) {\r\n\r\n var page = this.getPage(pageName);\r\n\r\n if (page != null) {\r\n return page.page.enabled;\r\n }\r\n\r\n return false;\r\n\r\n }\r\n\r\n getNextPage(pageName: string) {\r\n var page = this.getPage(pageName),\r\n journeyType = this.getJourneyType().sectionNavigation.pagingMethod;\r\n if (page != null && page.index < (this.journeyPages.length - 1) && this.journeyTypeHasNextPage(journeyType, page.page)) {\r\n return this.journeyPages[page.index + 1];\r\n }\r\n return null;\r\n }\r\n\r\n getPreviousPage(pageName: string) {\r\n\r\n var page = this.getPage(pageName);\r\n\r\n if (page != null && page.index > 0) {\r\n return this.journeyPages[page.index - 1];\r\n }\r\n\r\n return null;\r\n\r\n }\r\n\r\n getJourneyType(): JourneyConfiguration {\r\n\r\n return Configuration.loadCurrentJourneyType();\r\n\r\n }\r\n\r\n journeyTypeHasNextPage(journeyType: string, journeyPage: JourneyPage) {\r\n\r\n return (\r\n journeyType == JOURNEY_TYPES.FORWARDS_ONLY\r\n || (journeyType == JOURNEY_TYPES.BACKWARDS_AND_FORWARDS && !journeyPage.active));\r\n\r\n }\r\n\r\n getPage(pageName: string) {\r\n\r\n var page = this.journeyPages.find(page => page.name == pageName),\r\n index;\r\n\r\n if (page != null) {\r\n return {\r\n page: page,\r\n index: this.journeyPages.indexOf(page)\r\n };\r\n }\r\n\r\n return null;\r\n\r\n }\r\n\r\n navigateToNextPage(router, activatedRoute, pageName) {\r\n\r\n var route = '../' + this.getNextPage(pageName).route;\r\n router.navigate([route], { relativeTo: activatedRoute });\r\n\r\n }\r\n\r\n navigateToPreviousPage(router, activatedRoute, pageName) {\r\n\r\n var route = '../' + this.getPreviousPage(pageName).route;\r\n router.navigate([route], { relativeTo: activatedRoute });\r\n }\r\n\r\n createStateObject() {\r\n\r\n /* \r\n \r\n Create a state object based upon the page sections settings that will be used to check if a change has happened and needs broadcasting when the \r\n application state changes.\r\n \r\n */\r\n\r\n this.state = {};\r\n\r\n this.journeyPages.forEach(\r\n (page) => {\r\n\r\n this.state[page.name] = {};\r\n\r\n this.pageBehaviours.forEach(\r\n behaviour => this.state[page.name][behaviour] = null\r\n )\r\n this.state[page.name].sections = {};\r\n\r\n page.sections.forEach(\r\n (section) => {\r\n\r\n this.state[page.name].sections[section] = {};\r\n\r\n this.sectionBehaviours.forEach(\r\n behaviour => this.state[page.name].sections[section][behaviour] = null\r\n )\r\n\r\n }\r\n );\r\n\r\n }\r\n );\r\n\r\n }\r\n\r\n createEventStatesObject() {\r\n\r\n /* \r\n \r\n Create an event state object based upon the page sections settings that will be used to determine the states applied based upon different workflows.\r\n \r\n */\r\n this.eventStates = {\r\n UNDEFINED: {}\r\n };\r\n\r\n this.journeyPages.forEach(\r\n (page, pageIndex) => {\r\n\r\n var currentPage = page;\r\n\r\n this.createEventStatesWorkflow(page, pageIndex);\r\n this.createEventStatesState(page);\r\n\r\n /*\r\n Add an UNDEFINED workflow step that can be used when the application workflow status has not been defined in any of the pages in the journey.\r\n This workflow step will have read-only access.\r\n */\r\n this.eventStates.UNDEFINED[page.name] = JSON.parse(JSON.stringify(PAGE_DISABLED));\r\n\r\n }\r\n );\r\n\r\n }\r\n\r\n createEventStatesWorkflow(page: JourneyPage, pageIndex: number) {\r\n\r\n page.workflows.forEach(\r\n (workflow) => {\r\n\r\n if (!this.eventStates[workflow]) {\r\n this.eventStates[workflow] = {}\r\n }\r\n\r\n /*\r\n Assign the default settings for a page with an active state to the workflow page\r\n */\r\n this.eventStates[workflow][page.name] = JSON.parse(JSON.stringify(this.defaultActiveStepState));\r\n\r\n /*\r\n Loop through the pages and see if the page is actually before or after the active page and assign the appropriate default settings\r\n */\r\n this.journeyPages.forEach(\r\n (pageItem, index) => {\r\n\r\n if (index != pageIndex) {\r\n\r\n if (index < pageIndex) {\r\n this.eventStates[workflow][pageItem.name] = JSON.parse(JSON.stringify(this.defaultPastStepState));\r\n }\r\n else {\r\n this.eventStates[workflow][pageItem.name] = JSON.parse(JSON.stringify(this.defaultFutureStepState));\r\n }\r\n\r\n }\r\n\r\n }\r\n );\r\n }\r\n );\r\n\r\n }\r\n\r\n createEventStatesState(page: JourneyPage) {\r\n\r\n page.states.forEach(\r\n (state) => {\r\n\r\n state.workflows\r\n .forEach(\r\n (workflow) => {\r\n\r\n if (state.pageDefaults) {\r\n this.eventStates[workflow][page.name] = this.getPageState(page, state.pageDefaults);\r\n }\r\n\r\n if (state.sectionDefaults) {\r\n this.eventStates[workflow][page.name].sectionDefaults = this.getSectionState(page, state.sectionDefaults);\r\n }\r\n\r\n state.sectionStates.forEach(\r\n (sectionState) => {\r\n\r\n if (!this.eventStates[workflow][page.name].sections) {\r\n this.eventStates[workflow][page.name].sections = {};\r\n }\r\n this.eventStates[workflow][page.name].sections[sectionState.section] = this.getSectionState(page, sectionState.state, workflow, sectionState.section);\r\n }\r\n );\r\n }\r\n );\r\n\r\n }\r\n );\r\n\r\n }\r\n\r\n getSectionState(page, state, workflow?, section?) {\r\n\r\n switch (state) {\r\n case 'SECTION_VISIBLE_AND_EDITABLE':\r\n return JSON.parse(JSON.stringify(SECTION_VISIBLE_AND_EDITABLE));\r\n\r\n case 'SECTION_VISIBLE_AND_READONLY':\r\n return JSON.parse(JSON.stringify(SECTION_VISIBLE_AND_READONLY));\r\n\r\n case 'SECTION_HIDDEN':\r\n return JSON.parse(JSON.stringify(SECTION_HIDDEN));\r\n\r\n case 'SECTION_DISABLED':\r\n return JSON.parse(JSON.stringify(SECTION_DISABLED));\r\n\r\n default:\r\n throw 'Section state ' + state + ' was not found for page ' + page.name + ' ' + section;\r\n }\r\n\r\n }\r\n\r\n getPageState(page, state) {\r\n\r\n switch (state) {\r\n case 'PAGE_ENABLED_AND_EDITABLE':\r\n return JSON.parse(JSON.stringify(PAGE_ENABLED_AND_EDITABLE));\r\n\r\n case 'PAGE_ENABLED_AND_READONLY':\r\n return JSON.parse(JSON.stringify(PAGE_ENABLED_AND_READONLY));\r\n\r\n case 'PAGE_ACTIVE_AND_EDITABLE':\r\n return JSON.parse(JSON.stringify(PAGE_ACTIVE_AND_EDITABLE));\r\n\r\n case 'PAGE_ACTIVE_AND_READONLY':\r\n return JSON.parse(JSON.stringify(PAGE_ACTIVE_AND_READONLY));\r\n\r\n case 'PAGE_DISABLED':\r\n return JSON.parse(JSON.stringify(PAGE_DISABLED));\r\n\r\n default:\r\n throw 'Page state ' + state.pageState + ' was not found for page ' + page.name;\r\n }\r\n\r\n }\r\n\r\n\r\n broadcast(status: string) {\r\n\r\n var pages = (this.eventStates[status]) ? this.eventStates[status] : this.eventStates.UNDEFINED;\r\n\r\n var sections;\r\n\r\n for (var key in pages) {\r\n\r\n this.broadcastPage(key, pages[key]);\r\n this.broadcastSections(key, pages[key]);\r\n\r\n }\r\n\r\n }\r\n\r\n broadcastSections(key: string, page: PageState) {\r\n\r\n var sections = page.sections;\r\n var journeyPage = this.getPage(key).page;\r\n /*\r\n If sectionDefaults have been set up for the page then run broadcastSection for each section apart from those \r\n which have been defined in the sections object for the page. \r\n */\r\n if (typeof page.sectionDefaults != 'undefined') {\r\n\r\n for (var pageSection in this.state[key].sections) {\r\n\r\n if (typeof sections == 'undefined' || typeof sections[pageSection] == 'undefined') {\r\n this.broadcastSection(key, pageSection, page.sectionDefaults, journeyPage);\r\n }\r\n\r\n }\r\n }\r\n\r\n /*\r\n If a sections object has been defined for the page then run broadcastSection for each section defined\r\n */\r\n if (typeof sections != 'undefined') {\r\n for (var pageSection in sections) {\r\n this.broadcastSection(key, pageSection, page.sections[pageSection], journeyPage);\r\n }\r\n }\r\n\r\n }\r\n\r\n broadcastPage(page: string, stateSettings: PageState) {\r\n\r\n /* \r\n \r\n if a particular page (e.g. details) has a changed enabled or active state then update it's the state in the service and broadcast the change so that \r\n the subscription within the applications-container component can update the settting\r\n \r\n */\r\n this.pageBehaviours.forEach(\r\n (behaviour) => {\r\n\r\n\r\n if (!this.broadcastChangesOnly || (this.broadcastChangesOnly && this.hasPageStateChanged(page, behaviour, stateSettings[behaviour]))) {\r\n this.setPageState(page, behaviour, stateSettings[behaviour]);\r\n\r\n this.broadcastAction(\r\n page + '-page',\r\n behaviour,\r\n stateSettings[behaviour]\r\n );\r\n }\r\n\r\n }\r\n );\r\n\r\n }\r\n\r\n broadcastSection(page: string, section: string, stateSettings: any, journeyPage: JourneyPage) {\r\n\r\n /* \r\n \r\n if a particular component/section (e.g. employment) has a changed state then update it's the state in the service and broadcast the change so that the subscription can \r\n update the component/section\r\n \r\n */\r\n this.broadcastSectionBehaviours(page, section, stateSettings);\r\n\r\n /* \r\n Broadcast the changes to any child sections that were defined for the section when it was registered\r\n */\r\n var foundChildSections = this.getPageJourneySectionChildSections(journeyPage, section);\r\n\r\n if (foundChildSections) {\r\n foundChildSections.sections.forEach(\r\n // (childSection) => this.broadcastSectionBehaviours(page, childSection, stateSettings)\r\n (childSection) => {\r\n this.broadcastSectionBehaviours(page, childSection, stateSettings)\r\n }\r\n );\r\n }\r\n\r\n }\r\n\r\n\r\n broadcastSectionBehaviours(page: string, section: string, stateSettings: any) {\r\n\r\n /* \r\n \r\n if a particular component/section (e.g. employment) has a changed state then update it's the state in the service and broadcast the change so that the subscription can \r\n update the component/section\r\n \r\n */\r\n\r\n this.sectionBehaviours.forEach(\r\n (behaviour) => {\r\n\r\n if (!this.broadcastChangesOnly || (this.broadcastChangesOnly && this.hasSectionStateChanged(page, section, behaviour, stateSettings[behaviour]))) {\r\n this.setSectionState(page, section, behaviour, stateSettings[behaviour]);\r\n\r\n this.broadcastAction(\r\n section + '-section',\r\n behaviour,\r\n stateSettings[behaviour]\r\n );\r\n\r\n }\r\n }\r\n )\r\n\r\n }\r\n\r\n broadcastAction(action: string, behaviour: string, value: any) {\r\n\r\n this.actionsService.broadcast(\r\n {\r\n action: action,\r\n behaviour: behaviour,\r\n value: value\r\n }\r\n );\r\n\r\n }\r\n\r\n hasPageStateChanged(page: string, stateName: string, stateValue: boolean) {\r\n\r\n return (this.state[page][stateName] != stateValue) ? true : false;\r\n\r\n }\r\n\r\n hasSectionStateChanged(page: string, section: string, stateName: string, stateValue: boolean) {\r\n\r\n return (this.state[page].sections[section][stateName] != stateValue) ? true : false;\r\n\r\n }\r\n\r\n setPageState(page: string, stateName: string, stateValue: boolean) {\r\n\r\n if (typeof this.state[page] != 'undefined' && typeof this.state[page][stateName] != 'undefined') {\r\n this.state[page][stateName] = stateValue;\r\n }\r\n\r\n }\r\n\r\n setSectionState(page: string, section: string, stateName: string, stateValue: boolean) {\r\n\r\n if (typeof this.state[page] != 'undefined' && typeof this.state[page].sections[section] != 'undefined') {\r\n this.state[page].sections[section][stateName] = stateValue;\r\n }\r\n\r\n }\r\n\r\n registerSectionStatusObservers(sectionName: string, context: any, childSectionNames?: string[]): Subscription[] {\r\n\r\n /* \r\n \r\n Components/Sections (e.g. employment) need to call this method in their ngOnInit() lifecycle so that their k and visible properties can be automatically updated\r\n when the application state changes\r\n \r\n */\r\n var sectionObservers = [];\r\n\r\n this.registerJourneyPageChildSectionNames(sectionName, childSectionNames);\r\n\r\n this.sectionBehaviours.forEach(\r\n (behaviour) => {\r\n sectionObservers.push(sectionName + '-section.' + behaviour);\r\n }\r\n );\r\n\r\n return this.actionsService.registerObservers(\r\n sectionObservers,\r\n (action) => {\r\n\r\n if (typeof context[action.behaviour] != 'undefined') {\r\n context[action.behaviour] = action.value;\r\n }\r\n\r\n },\r\n context\r\n );\r\n\r\n }\r\n\r\n registerJourneyPageChildSectionNames(sectionName: string, childSectionNames?: string[]) {\r\n\r\n if (childSectionNames) {\r\n var pageName = this.getPageNameForActivatedRoute();\r\n var journeyPage = this.getPage(pageName).page;\r\n\r\n var foundChildSections = this.getPageJourneySectionChildSections(journeyPage, sectionName);\r\n\r\n if (foundChildSections) {\r\n foundChildSections.sections = childSectionNames;\r\n }\r\n else {\r\n journeyPage.childSections.push(\r\n {\r\n parentSectionName: sectionName,\r\n sections: childSectionNames\r\n }\r\n );\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n getPageJourneySectionChildSections(journeyPage: JourneyPage, sectionName: string) {\r\n\r\n journeyPage.childSections = journeyPage.childSections || [];\r\n\r\n return journeyPage.childSections.find(\r\n (childSection) => childSection.parentSectionName == sectionName\r\n );\r\n\r\n }\r\n\r\n cancelSectionStatusSubscriptions(subscription: Subscription[]) {\r\n\r\n /* \r\n \r\n Components/Sections (e.g. employment) need to call this method in their ngOnDestroy() lifecycle so that theire subscription to the service can be removed\r\n \r\n */\r\n this.actionsService.cancelSubscriptions(subscription);\r\n\r\n }\r\n\r\n isPageCompleted(application: Application, pageName: string): boolean {\r\n\r\n /*\r\n Check to see if a particular page is completed based upon the application status\r\n */\r\n\r\n var statePages = this.getStatusPages(application.status);\r\n\r\n if (!statePages) {\r\n return false;\r\n }\r\n\r\n var pageIndex = -1,\r\n activeIndex = -1;\r\n\r\n this.journeyPages.forEach(\r\n (page, index) => {\r\n\r\n /*\r\n Conditionally set the index for the active page. If the page has editing==false then we'll want to return true that it is \r\n completed so add 1 to the index so it passes the final check\r\n */\r\n if (statePages[page.name].active) {\r\n activeIndex = statePages[page.name].editing ? index : index + 1;\r\n }\r\n\r\n /*\r\n Conditionally set the index for the page.\r\n */\r\n\r\n if (page.name == pageName) {\r\n pageIndex = index;\r\n }\r\n\r\n }\r\n );\r\n\r\n return (pageIndex < activeIndex) ? true : false;\r\n\r\n }\r\n\r\n getHomeRedirectRoute() {\r\n\r\n var registerRedirectRoute = JSON.parse(JSON.stringify(Configuration.loadCurrentJourney(this.tokenService.roles).redirectUrls.home));\r\n registerRedirectRoute.route.replace('{{id}}', this.tokenService.currentUser);\r\n return registerRedirectRoute;\r\n\r\n }\r\n\r\n getLogo() {\r\n\r\n var roleGroupName = this.getRoleGroupName();\r\n var group = this.getGroup(roleGroupName);\r\n\r\n return group.configuration.appearance.logo;\r\n\r\n }\r\n\r\n getContact() {\r\n var roleGroupName = this.getRoleGroupName();\r\n var group = this.getGroup(roleGroupName);\r\n\r\n return group.configuration.contact.telephone;\r\n }\r\n\r\n getRoleGroupName() {\r\n\r\n /*\r\n Return the group associated with the first role in the users roles. All roles for a user should belong to the same group as the group will be used to\r\n load a configuration from configuration.ts\r\n */\r\n var roles = this.tokenService.roles;\r\n\r\n if (roles.length) {\r\n\r\n var foundRole = Object.keys(ROLES).find(\r\n (role) => ROLES[role].name == roles[0]\r\n );\r\n\r\n return (foundRole) ? ROLES[foundRole].group : '';\r\n\r\n }\r\n\r\n return '';\r\n\r\n }\r\n\r\n getGroup(key: string) {\r\n var foundGroup = Object.keys(GROUPS).find(\r\n (group) => GROUPS[group].name == key\r\n );\r\n\r\n return foundGroup ? GROUPS[foundGroup] : null;\r\n\r\n }\r\n\r\n setGroupConfiguration() {\r\n\r\n var roleGroup = this.getRoleGroupName();\r\n if (roleGroup == 'temporary user'){\r\n if (window.location.href.toLowerCase().indexOf('comparecarfinance') != -1) {\r\n this.configuration = CONFIGURATION_CCF;\r\n } else {\r\n this.configuration = CONFIGURATION;\r\n }\r\n }\r\n if (roleGroup != '') {\r\n\r\n var foundGroup = this.getGroup(roleGroup);\r\n\r\n if (foundGroup) {\r\n this.configuration = Object.assign(JSON.parse(JSON.stringify(CONFIGURATION)), JSON.parse(JSON.stringify(foundGroup.configuration)));\r\n }\r\n\r\n } else {\r\n\r\n this.configuration = CONFIGURATION;\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n","import { Configuration } from \"./configuration\";\r\nimport { ERRORS } from \"./configuration-errors\";\r\nimport { FINANCE_OPTIONS } from \"./configuration-finance-options\";\r\nimport { LOOKUPS } from \"./configuration-lookups\";\r\n\r\nvar CONFIGURATION: Configuration = {\r\n currentJourney: 'FORWARDS_ONLY',\r\n // currentJourney: 'BACKWARDS_AND_FORWARDS',\r\n appearance: {\r\n logo: './assets/CpLogo.PNG',\r\n phoneIcon: './assets/call-button.png',\r\n title: 'Creditplus Portal',\r\n favIcon: 'favicon.ico'\r\n },\r\n authentication: {\r\n passwordPolicy: {\r\n //note for \r\n minimumLength: 6,\r\n numbers: true,\r\n letters: true,\r\n specialCharacters: '!@#$%^&*()_+'\r\n },\r\n expirationCountdown: 30000\r\n },\r\n acceptanceConfiguration: {\r\n displayReferredResponses: true,\r\n displayDeclinedResponses: true,\r\n displayErrorResponses: true,\r\n applyTimeout: 60000\r\n },\r\n contact: {\r\n telephone: '0333 6000 290',\r\n telephoneComplaints: '01202 684 898',\r\n email: 'sales@creditplus.co.uk',\r\n emailComplaints: 'complaints@creditplus.co.uk',\r\n address: '52 Willis Way, Poole, Dorset, BH15 3SY, UK',\r\n defaultPreferredContactMethod: 'Mobile',\r\n defaultPreferredContactTime: 'No Preference'\r\n },\r\n identity: {\r\n minAge: 18,\r\n maxAge: 75\r\n },\r\n creditRating: {\r\n ratingMethod: 'softSearch'\r\n },\r\n errors: ERRORS,\r\n pageScroll: {\r\n adjustHash: true,\r\n offset: 116,\r\n duration: 300\r\n },\r\n outgoings: {\r\n optional: true\r\n },\r\n products: {\r\n noThanksId: -1\r\n },\r\n vehicle: {\r\n maximumSearchesPermitted: 5,\r\n maximumAgeAtStartOfLoan: 5,\r\n maximumAgeAtEndOfLoan: 9,\r\n maximumMileageAtStartOfLoan: 120000,\r\n minRegistrationLength: 2,\r\n maxRegistrationLength: 8\r\n },\r\n financeRequest: {\r\n maximumLTVPercentage: 1.2,\r\n minimumLoan: 3000,\r\n minimumDeposit: 500,\r\n term: {\r\n minimum: 24,\r\n maximum: 60,\r\n step: 6\r\n },\r\n annualMileage: {\r\n minimum: 0,\r\n maximum: 40000,\r\n step: 1000\r\n }\r\n },\r\n quotes: {\r\n copyVehicleOnAddQuote: true,\r\n copyFinanceRequestOnAddQuote: true,\r\n maximumPermitted: 3,\r\n getQuoteTimeoutCountdown: 1000\r\n },\r\n proofs: {\r\n maximumFileSize: 5120000,\r\n immediateDragDropUpload: true,\r\n immediateFileSelectUpload: true,\r\n confirmFileReplacements: true,\r\n acceptedFileFormats: [\r\n { label: 'Bitmap', extention: 'bmp', mimeType: 'image/bmp' },\r\n { label: 'High Efficiency Image File Format', extention: 'heif', mimeType: 'image/heif' },\r\n { label: 'JPEG', extention: 'jpg', mimeType: 'image/jpeg' },\r\n { label: 'Portable Network Graphics', extention: 'png', mimeType: 'image/png' },\r\n { label: 'Portable Document Format', extention: 'pdf', mimeType: 'application/pdf' },\r\n { label: 'Tagged Image Format File', extention: 'tif', mimeType: 'image/tif' },\r\n { label: 'WebP', extention: 'webp', mimeType: 'image/webp' }\r\n ]\r\n },\r\n proofVerify: {\r\n maximumFileSize: 5120000,\r\n immediateDragDropUpload: true,\r\n immediateFileSelectUpload: true,\r\n confirmFileReplacements: true,\r\n acceptedFileFormats: [\r\n { label: 'Bitmap', extention: 'bmp', mimeType: 'image/bmp' },\r\n { label: 'High Efficiency Image File Format', extention: 'heif', mimeType: 'image/heif' },\r\n { label: 'JPEG', extention: 'jpg', mimeType: 'image/jpeg' },\r\n { label: 'Portable Network Graphics', extention: 'png', mimeType: 'image/png' },\r\n { label: 'Portable Document Format', extention: 'pdf', mimeType: 'application/pdf' },\r\n { label: 'Tagged Image Format File', extention: 'tif', mimeType: 'image/tif' },\r\n { label: 'WebP', extention: 'webp', mimeType: 'image/webp' }\r\n ]\r\n },\r\n save: {\r\n method: 'paged',\r\n savePeriod: 2700000\r\n },\r\n financeOptions: FINANCE_OPTIONS,\r\n addressLookup: {\r\n addressListUrl: \"/address?postcode=:postcode&id=:id\",\r\n addressDetailUrl: \"/address/Retrieve?id=:id\"\r\n },\r\n employment: {\r\n minHistoryMonths: 24\r\n },\r\n addresses: {\r\n minHistoryMonths: 36\r\n },\r\n lookupConfiguration: LOOKUPS\r\n};\r\n\r\n\r\nexport {\r\n CONFIGURATION\r\n}","import { JourneyPage } from \"../types\";\r\n\r\nimport { WORKFLOWS } from \"./configuration-workflows\";\r\nimport { SECTIONS } from \"./configuration-sections\";\r\nimport { PAGES } from \"./configuration-pages\";\r\n\r\nconst CONSUMER_JOURNEY: JourneyPage[] = [\r\n {\r\n label: 'Quotes',\r\n name: PAGES.QUOTES.label,\r\n route: PAGES.QUOTES.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '3',\r\n content: {\r\n editing: '

    Now it’s time for the exciting part of your journey! Tell us the car you want and then what loan you are looking for….

    '\r\n },\r\n activePageNextStep: {\r\n label: 'Proceed using this quote',\r\n displayProceedButton: false,\r\n setStatus: 'DETAILS_STARTED'\r\n },\r\n sections: [SECTIONS.GET_QUOTES],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Dashboard',\r\n name: PAGES.DASHBOARD.label,\r\n route: PAGES.DASHBOARD.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '12',\r\n activePageNextStep: {\r\n },\r\n sections: [SECTIONS.DASHBOARD],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Proofs',\r\n name: PAGES.PROOFS.label,\r\n route: PAGES.PROOFS.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '2',\r\n activePageNextStep: {\r\n },\r\n sections: [SECTIONS.PROOFS],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'ProofVerify',\r\n name: PAGES.PROOFVERIFY.label,\r\n route: PAGES.PROOFVERIFY.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '2',\r\n activePageNextStep: {\r\n },\r\n sections: [SECTIONS.PROOF_VERIFY],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'FinanceDocuments',\r\n name: PAGES.FINANCEDOCUMENTS.label,\r\n route: PAGES.FINANCEDOCUMENTS.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '9',\r\n activePageNextStep: {\r\n },\r\n sections: [SECTIONS.FINANCE_DOCUMENTS],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Settings',\r\n name: PAGES.SETTINGS.label,\r\n route: PAGES.SETTINGS.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '10',\r\n activePageNextStep: {\r\n },\r\n sections: [SECTIONS.SETTINGS],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Help',\r\n name: PAGES.HELP.label,\r\n route: PAGES.HELP.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '11',\r\n activePageNextStep: {\r\n },\r\n sections: [SECTIONS.HELP],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Marketing',\r\n name: PAGES.MARKETING.label,\r\n route: PAGES.MARKETING.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '1',\r\n activePageNextStep: {\r\n },\r\n sections: [SECTIONS.MARKETING],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Timeline',\r\n name: PAGES.TIMELINE.label,\r\n route: PAGES.TIMELINE.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '1',\r\n activePageNextStep: {\r\n },\r\n sections: [SECTIONS.TIMELINE],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Docs',\r\n name: PAGES.DOCS.label,\r\n route: PAGES.DOCS.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '13',\r\n activePageNextStep: {\r\n },\r\n sections: [SECTIONS.DOCS],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Vehicles',\r\n name: PAGES.VEHICLES.label,\r\n route: PAGES.VEHICLES.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '14',\r\n activePageNextStep: {\r\n },\r\n sections: [SECTIONS.VEHICLES],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Extra Details',\r\n name: PAGES.EXTRADETAILS.label,\r\n route: PAGES.EXTRADETAILS.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '4',\r\n activePageNextStep: {\r\n },\r\n sections: [SECTIONS.EXTRADETAILS],\r\n sectionValidityObservers: [],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Final page',\r\n name: PAGES.FINAL.label,\r\n route: PAGES.FINAL.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '8',\r\n content: {\r\n editing: '

    To get you started on your way to getting a new car we need to get some personal details from yourself so that we know who you are! The more information you provide, the better the loan offer!

    ',\r\n readOnly: '

    If you have made a slight error entering your details then please contact us on {{telephone}} to make any changes, this is to prevent fraudulent activity.

    '\r\n },\r\n activePageNextStep: {\r\n label: 'Get me a loan offer',\r\n displayProceedButton: true,\r\n setStatus: 'APPLICATION_PENDING'\r\n },\r\n sections: [SECTIONS.FINAL_PAGE],\r\n sectionValidityObservers: [],\r\n workflows: [\r\n WORKFLOWS.ENQUIRY_RECEIVED,\r\n WORKFLOWS.PROVISIONALLY_ACCEPTED,\r\n WORKFLOWS.QUOTES_STARTED,\r\n WORKFLOWS.DETAILS_STARTED,\r\n WORKFLOWS.DOCS_TO_BE_ISSUED,\r\n WORKFLOWS.DOCS_ISSUED,\r\n WORKFLOWS.DOCS_RECEIVED,\r\n WORKFLOWS.DOCS_WITH_LENDER,\r\n WORKFLOWS.AWAITING_PROOFS,\r\n WORKFLOWS.PROOFS_RECEIVED,\r\n WORKFLOWS.PAID_OUT,\r\n WORKFLOWS.CLIENT_CANCELLED,\r\n WORKFLOWS.ABANDONED,\r\n WORKFLOWS.CANNOT_LEND,\r\n WORKFLOWS.Further_Info_Required,\r\n WORKFLOWS.APPLICATION_PENDING,\r\n WORKFLOWS.APPLICATION_SENT,\r\n WORKFLOWS.APPLICATION_DECLINED,\r\n WORKFLOWS.APPLICATION_REFERRED,\r\n WORKFLOWS.APPLICATION_ACCEPTED,\r\n WORKFLOWS.APPLICATION_ERROR,\r\n WORKFLOWS.APPLICATION_MANUAL,\r\n WORKFLOWS.Further_Info_Required\r\n ],\r\n states: []\r\n },\r\n {\r\n label: 'Loan offer',\r\n name: PAGES.CONFIRMATION.label,\r\n route: PAGES.CONFIRMATION.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '5',\r\n content: {\r\n editing: '

    That’s a great choice of car! You’re nearly there! The final part of your application is below, once this is completed simply select SUBMIT MY APPLICATION to secure your finance deal.

    '\r\n },\r\n activePageNextStep: {\r\n label: 'Accept this offer',\r\n displayProceedButton: false,\r\n setStatus: 'DOCS_TO_BE_ISSUED'\r\n },\r\n sections: [SECTIONS.ACCEPTANCE_STATUS],\r\n sectionValidityObservers: [\r\n {\r\n id: 'getLoanOffer',\r\n sections: [SECTIONS.BANK_DETAILS, SECTIONS.DEALER],\r\n }\r\n ],\r\n workflows: [\r\n ],\r\n states: [\r\n {\r\n workflows: [\r\n WORKFLOWS.ENQUIRY_RECEIVED,\r\n WORKFLOWS.PROVISIONALLY_ACCEPTED,\r\n WORKFLOWS.QUOTES_STARTED,\r\n WORKFLOWS.DETAILS_STARTED,\r\n WORKFLOWS.DOCS_TO_BE_ISSUED,\r\n WORKFLOWS.DOCS_ISSUED,\r\n WORKFLOWS.DOCS_RECEIVED,\r\n WORKFLOWS.DOCS_WITH_LENDER,\r\n WORKFLOWS.AWAITING_PROOFS,\r\n WORKFLOWS.PROOFS_RECEIVED,\r\n WORKFLOWS.PAID_OUT,\r\n WORKFLOWS.CLIENT_CANCELLED,\r\n WORKFLOWS.ABANDONED,\r\n WORKFLOWS.CANNOT_LEND,\r\n WORKFLOWS.APPLICATION_PENDING,\r\n WORKFLOWS.APPLICATION_SENT,\r\n WORKFLOWS.APPLICATION_DECLINED,\r\n WORKFLOWS.APPLICATION_REFERRED,\r\n WORKFLOWS.APPLICATION_ACCEPTED,\r\n WORKFLOWS.APPLICATION_ERROR,\r\n WORKFLOWS.APPLICATION_MANUAL,\r\n WORKFLOWS.Further_Info_Required\r\n ],\r\n sectionStates: [\r\n {\r\n section: SECTIONS.BANK_DETAILS,\r\n state: 'SECTION_VISIBLE_AND_READONLY'\r\n },\r\n {\r\n section: SECTIONS.DEALER,\r\n state: 'SECTION_VISIBLE_AND_READONLY'\r\n }\r\n ]\r\n },\r\n {\r\n workflows: [\r\n WORKFLOWS.ENQUIRY_RECEIVED,\r\n WORKFLOWS.PROVISIONALLY_ACCEPTED,\r\n WORKFLOWS.QUOTES_STARTED,\r\n WORKFLOWS.DETAILS_STARTED,\r\n WORKFLOWS.DOCS_TO_BE_ISSUED,\r\n WORKFLOWS.DOCS_ISSUED,\r\n WORKFLOWS.DOCS_RECEIVED,\r\n WORKFLOWS.DOCS_WITH_LENDER,\r\n WORKFLOWS.AWAITING_PROOFS,\r\n WORKFLOWS.PROOFS_RECEIVED,\r\n WORKFLOWS.PAID_OUT,\r\n WORKFLOWS.CLIENT_CANCELLED,\r\n WORKFLOWS.ABANDONED,\r\n WORKFLOWS.CANNOT_LEND,\r\n WORKFLOWS.APPLICATION_PENDING,\r\n WORKFLOWS.APPLICATION_SENT,\r\n WORKFLOWS.APPLICATION_DECLINED,\r\n WORKFLOWS.APPLICATION_REFERRED,\r\n WORKFLOWS.APPLICATION_ACCEPTED,\r\n WORKFLOWS.APPLICATION_ERROR,\r\n WORKFLOWS.APPLICATION_MANUAL,\r\n WORKFLOWS.Further_Info_Required\r\n ],\r\n pageDefaults: 'PAGE_ACTIVE_AND_READONLY',\r\n sectionStates: []\r\n }\r\n ]\r\n },\r\n\r\n {\r\n label: 'Agreements & Documentation',\r\n name: PAGES.AGREEMENT.label,\r\n route: PAGES.AGREEMENT.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '6',\r\n content: {\r\n editing: '

    Congratulations! You’ve been accepted! The final part of your journey awaits! In order to secure your finance deal we need to get your proofs approved and tell you about our useful products designed to help you when you’re on the road!

    '\r\n },\r\n sections: [SECTIONS.DOCUMENTS],\r\n workflows: [],\r\n states: []\r\n },\r\n {\r\n label: 'Terms & Acceptance',\r\n name: PAGES.TERMS.label,\r\n route: PAGES.TERMS.route,\r\n active: true,\r\n enabled: true,\r\n completed: false,\r\n order: '7',\r\n content: {\r\n editing: '

    To get you started on your way to getting a new car we need to get some personal details from yourself so that we know who you are! The more information you provide, the better the loan offer!

    ',\r\n },\r\n sections: [SECTIONS.TERMS],\r\n workflows: [],\r\n states: []\r\n }\r\n];\r\n\r\nexport {\r\n CONSUMER_JOURNEY\r\n}\r\n","\r\nimport {throwError as observableThrowError, Observable } from 'rxjs';\r\n\r\nimport {finalize, catchError, timeout, map} from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse, HttpResponseBase\r\n // Response \r\n} from '@angular/common/http';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { LoanOffer } from '../types';\r\nimport { TimedActionService } from '../timed-action/timed-action.service';\r\nimport { LoginService } from '../login/login.service';\r\nimport { ApplicationStatusService } from '../application-status/application-status.service';\r\nimport { LoadingModalService } from '../modal/loading-modal.service';\r\n\r\n@Injectable()\r\nexport class ApplyService {\r\n\r\n applyUrl: string = environment.base + '/quotes/submitproposal';\r\n updateProposalUrl: string = environment.base + '/lookUp/proposalstatusupdate';\r\n applyOfferTimeout;\r\n\r\n private body: any = {\r\n quoteId: null\r\n };\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private loginService: LoginService,\r\n private timedActionService: TimedActionService,\r\n private applicationStatusService: ApplicationStatusService,\r\n private loadingModalService: LoadingModalService) {\r\n\r\n this.applyOfferTimeout = this.applicationStatusService.configuration.acceptanceConfiguration.applyTimeout;\r\n }\r\n\r\n applyForLoan(quoteId): Observable> {\r\n this.loadingModalService.show();\r\n this.loadingModalService.displayMessage(1);\r\n return this.http.post(this.applyUrl, Number(quoteId), {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response) => {\r\n this.timedActionService.resetTimer();\r\n this.logApplicationForLoanResult(true);\r\n return response;\r\n }),\r\n timeout(this.applyOfferTimeout),\r\n catchError((error) => {\r\n\r\n // Reset the token expiration timer depending upon the error code\r\n this.timedActionService.checkResetTimerOnError(error);\r\n this.logApplicationForLoanResult(false);\r\n return new Array();\r\n }),\r\n finalize(() => this.loadingModalService.hide()),);\r\n }\r\n\r\n updateProposalStatus(contactid): Observable>{\r\n return this.http.post(this.updateProposalUrl, Number(contactid), {headers: this.loginService.getHeaderOptions(true)}).pipe(\r\n map((response: HttpResponse) => {\r\n return response.body;\r\n }),\r\n catchError((error) => {\r\n return observableThrowError(error);\r\n }),)\r\n }\r\n\r\n logApplicationForLoanResult(success: boolean) {\r\n if (success) {\r\n window['dataLayer'].push(\r\n {\r\n event: 'service-response',\r\n label: 'successful-loan-application',\r\n timestamp: new Date().toISOString()\r\n }\r\n )\r\n } else {\r\n window['dataLayer'].push(\r\n {\r\n event: 'service-response',\r\n label: 'unsuccessful-loan-application',\r\n timestamp: new Date().toISOString()\r\n }\r\n )\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, SimpleChanges, Input, EventEmitter, Output } from '@angular/core';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ActionsService } from \"../../../core/services/actions/actions.service\";\r\n\r\n\r\n@Component({\r\n selector: 'collapsable-container',\r\n templateUrl: './collapsable-container.component.html',\r\n styleUrls: ['./collapsable-container.component.scss']\r\n})\r\nexport class CollapsableContainerComponent implements OnInit {\r\n \r\n constructor(private actionsService: ActionsService) { }\r\n\r\n enabled:boolean=true;\r\n\r\n @Input()\r\n title: string;\r\n\r\n @Input()\r\n id: string;\r\n\r\n @Input()\r\n stayOpen: boolean;\r\n\r\n // @Input()\r\n // closed: boolean = true;\r\n\r\n closedValue: boolean;\r\n\r\n @Input()\r\n get closed() {\r\n return this.closedValue;\r\n }\r\n set closed(val) {\r\n this.closedValue = val;\r\n this.closedChange.emit(this.closedValue);\r\n }\r\n\r\n @Output()\r\n public closedChange: EventEmitter = new EventEmitter();\r\n\r\n\r\n @Output()\r\n toggleCollapse: EventEmitter = new EventEmitter();\r\n\r\n observer: Subscription;\r\n\r\n isLoading = false;\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n this.registerLoadingObserver();\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n this.actionsService.cancelSubscription(this.observer);\r\n\r\n }\r\n\r\n toggle() {\r\n\r\n if (this.enabled) {\r\n this.closed = !this.closed;\r\n }\r\n\r\n }\r\n\r\n open() {\r\n\r\n this.closed = false;\r\n\r\n }\r\n\r\n close() {\r\n\r\n this.closed = true;\r\n\r\n }\r\n\r\n registerLoadingObserver() {\r\n\r\n this.observer = this.actionsService.registerObserver(\r\n `${this.id}-section-container.set-loading`,\r\n action => {\r\n if (action.value === false) {\r\n this.isLoading = true;\r\n }\r\n else {\r\n this.isLoading = false;\r\n }\r\n },\r\n this\r\n );\r\n\r\n }\r\n\r\n checkEnabled(): boolean {\r\n\r\n if (!this.enabled) {\r\n this.closed = true;\r\n return false;\r\n }\r\n return true;\r\n\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n
    \r\n

    \r\n {{title}}\r\n \r\n

    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n","export function isANumber(value: any): boolean {\r\n return !isNaN(value);\r\n}\r\n\r\n\r\nexport function isDate(obj: any): boolean {\r\n return !/Invalid|NaN/.test(new Date(obj).toString());\r\n}\r\n\r\nexport function isStringNumber(value: string): boolean {\r\n return isANumber(Number(value));\r\n}\r\n\r\nexport function containsElement(collection: Array, value:number) : boolean {\r\n return collection.find(x => x === value) !== undefined;\r\n}","import { ApplicationStatusService } from './../../../core/services/application-status/application-status.service';\r\nimport { Component, OnInit, OnChanges, Input, HostBinding, Directive, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'product-link, [product-link]'\r\n})\r\nexport class ProductLinkDirective implements OnChanges {\r\n\r\n constructor (private applicationStatusService : ApplicationStatusService) {\r\n \r\n }\r\n\r\n @Input()\r\n product: string;\r\n\r\n @HostBinding('href') private link:string;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n switch(changes[\"product\"].currentValue){\r\n case 'HP': this.link = this.applicationStatusService.configuration.financeOptions.HP.productLink; break;\r\n case 'LP': this.link = this.applicationStatusService.configuration.financeOptions.LP.productLink; break;\r\n case 'PCP': this.link = this.applicationStatusService.configuration.financeOptions.PCP.productLink; break;\r\n }\r\n }\r\n\r\n}\r\n","class NotificationMessage {\r\n public message: string;\r\n public startDate: string;\r\n public endDate: string;\r\n public type: 'dashboard' | 'workflow';\r\n public class: string;\r\n public workflow: string[];\r\n public roles: string[];\r\n}\r\n\r\nexport {\r\n NotificationMessage\r\n}\r\n","\r\nimport { Icon } from './../icon-component/icon-component';\r\nimport { Subscription } from 'rxjs';\r\nimport { Component, OnInit, Input, Output, EventEmitter, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { Configuration } from './../../../core/services/configuration/configuration';\r\nimport { ActionsService } from \"../../../core/services/actions/actions.service\";\r\n\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n animate,\r\n transition\r\n} from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'section-container',\r\n templateUrl: './section-container.component.html',\r\n styleUrls: ['./section-container.component.scss'],\r\n animations: [\r\n trigger(\r\n 'slide',\r\n [\r\n state(\r\n 'open',\r\n style({ height: '*' })\r\n // style({ height: '200px' })\r\n ),\r\n state(\r\n 'close',\r\n style({ height: 0, paddingTop: 0, paddingBottom: 0, overflow: 'hidden' })\r\n ),\r\n transition('open => close', animate('300ms ease-in')),\r\n transition('close => open', animate('300ms ease-out'))\r\n ]\r\n )\r\n ]\r\n})\r\n\r\n\r\nexport class SectionContainerComponent implements OnInit, OnChanges {\r\n\r\n @Input()\r\n valid: boolean;\r\n\r\n @Input()\r\n enabled: boolean = true;\r\n\r\n @Input()\r\n editing: boolean;\r\n\r\n @Input()\r\n title: string;\r\n\r\n @Input()\r\n invalidIcon: string;\r\n\r\n @Input()\r\n validIconSmall: string;\r\n\r\n @Input()\r\n id: string;\r\n\r\n @Input()\r\n creationTimeInSeconds: number;\r\n\r\n icons: Array = []\r\n\r\n @Output()\r\n toggleHelp: EventEmitter = new EventEmitter();\r\n\r\n @Input()\r\n stayOpen: boolean;\r\n\r\n closed: boolean = true;\r\n observer: Subscription;\r\n\r\n isLoading = false;\r\n loadingText: string = '...loading...';\r\n\r\n constructor(private actionsService: ActionsService) { }\r\n\r\n ngOnInit() {\r\n\r\n if (this.stayOpen == null) {\r\n this.setOpenDefaultSetting(this.valid);\r\n }\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n if (changes[\"valid\"] || changes[\"editing\"]) {\r\n this.icons = this.getIcons();\r\n }\r\n\r\n if (typeof changes.enabled != 'undefined') {\r\n this.checkEnabled();\r\n }\r\n\r\n if (typeof changes.stayOpen != 'undefined' && this.stayOpen != null) {\r\n if (this.stayOpen) {\r\n this.open();\r\n }\r\n else {\r\n this.close();\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n this.registerOpenObserver();\r\n this.registerLoadingObserver();\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n this.actionsService.cancelSubscription(this.observer);\r\n\r\n }\r\n\r\n toggleCollapse() {\r\n\r\n if (this.enabled) {\r\n this.closed = !this.closed;\r\n\r\n if (!this.closed) {\r\n this.actionsService.broadcast(\r\n {\r\n action: 'section',\r\n behaviour: 'scroll',\r\n value: this.id\r\n }\r\n )\r\n }\r\n }\r\n\r\n }\r\n\r\n open() {\r\n\r\n this.closed = false;\r\n\r\n }\r\n\r\n close() {\r\n\r\n this.closed = true;\r\n\r\n }\r\n\r\n clickHelp(event) {\r\n\r\n if (!this.closed) {\r\n event.cancelBubble = true;\r\n }\r\n this.toggleHelp.emit(true);\r\n\r\n }\r\n\r\n /*\r\n This observer subscription is set up to allow the open default setting to be applied for components other than through\r\n view initialisation\r\n */\r\n registerOpenObserver() {\r\n\r\n this.observer = this.actionsService.registerObserver(\r\n `${this.id}-section-container.set-open`,\r\n action => {\r\n this.setOpenDefaultSetting(action.value);\r\n },\r\n this\r\n );\r\n\r\n }\r\n\r\n\r\n registerLoadingObserver() {\r\n\r\n this.observer = this.actionsService.registerObserver(\r\n `${this.id}-section-container.set-loading`,\r\n action => {\r\n if (action.value && action.value.isLoading) {\r\n this.setOpenDefaultSetting(!action.value.isLoading);\r\n }\r\n this.isLoading = action.value.isLoading;\r\n this.loadingText = action.value.loadingText;\r\n },\r\n this\r\n );\r\n\r\n }\r\n\r\n checkEnabled(): boolean {\r\n\r\n if (!this.enabled) {\r\n this.closed = true;\r\n return false;\r\n }\r\n return true;\r\n\r\n }\r\n\r\n setOpenDefaultSetting(valid: boolean) {\r\n\r\n if (this.checkEnabled()) {\r\n\r\n switch (Configuration.loadCurrentJourneyType().sectionNavigation.sectionCollapse) {\r\n case 'ALL_COLLAPSED':\r\n this.closed = true;\r\n break;\r\n\r\n case 'ALL_OPEN':\r\n this.closed = false;\r\n break;\r\n\r\n case 'INVALID_OPEN':\r\n if (valid != null) {\r\n this.closed = valid;\r\n }\r\n break;\r\n\r\n default:\r\n\r\n }\r\n }\r\n\r\n return this.closed;\r\n\r\n }\r\n\r\n getIcons(): Array {\r\n return [\r\n {\r\n classes: 'icon-tick',\r\n value: this.editing && this.valid,\r\n title: this.title,\r\n },\r\n {\r\n classes: this.invalidIcon + ' icon-invalid',\r\n value: this.editing && !this.valid,\r\n title: this.title,\r\n },\r\n {\r\n classes: 'icon-lock',\r\n value: !this.editing,\r\n title: this.title,\r\n }\r\n ]\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n
    \r\n

    \r\n \r\n {{title}} \r\n \r\n

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n ","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nvar gmtId = 'GTM-PDST233';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n gmtId = 'GTM-NQMQ6C'\r\n}\r\n\r\nif(environment.name == \"MOCK\") {\r\n var cacheControl = document.createElement(\"meta\");\r\n cacheControl.setAttribute('http-equiv', 'Cache-Control');\r\n cacheControl.setAttribute('content', 'no-cache, no-store, must-revalidate')\r\n document.head.insertBefore(cacheControl, document.head.children[0]);\r\n\r\n\r\n var pragma = document.createElement(\"meta\");\r\n pragma.setAttribute('http-equiv', 'Pragma');\r\n pragma.setAttribute('content', 'no-cache') \r\n document.head.insertBefore(pragma, document.head.children[0]);\r\n\r\n var expires = document.createElement(\"meta\");\r\n expires.setAttribute('http-equiv', 'Expires');\r\n expires.setAttribute('content', '0') \r\n document.head.insertBefore(expires, document.head.children[0]);\r\n}\r\n\r\nvar script = document.createElement(\"script\");\r\nscript.innerHTML = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\r\nnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\r\nj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\r\n'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\r\n})(window,document,'script','dataLayer','`+gmtId+`');`\r\ndocument.head.insertBefore(script, document.head.children[0]);\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err =>(err));\r\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 = \"zn8P\";","const URLS={\r\n NotFound : {\r\n label: 'Page not found',\r\n route: '/not-found'\r\n },\r\n Login : {\r\n label: 'Login',\r\n route: '/login'\r\n },\r\n Quotes : {\r\n label: 'quotes',\r\n route: '/applications/{{id}}/quotes'\r\n },\r\n Account: {\r\n label: 'Account',\r\n route: '/account'\r\n },\r\n Dealerportal: {\r\n label: 'Dealer portal',\r\n route: '/dealer-portal'\r\n },\r\n ApplicationCurrentStep: {\r\n label: 'Current step',\r\n route: '/applications/{{id}}/current-step'\r\n },\r\n Extradetails: {\r\n label: 'extra-details',\r\n route: '/applications/{{id}}/extra-details'\r\n },\r\n Registration: {\r\n label: 'registration',\r\n route: '/register?customerId={{id}}&username={{email}}&perm=true'\r\n },\r\n Documents: {\r\n label: 'Documents',\r\n route: '/applications/{{id}}//agreement-and-documentation'\r\n },\r\n RegisterPanel:{\r\n label: 'register-panel',\r\n route: '/register-panel'\r\n }\r\n};\r\n\r\nexport {\r\n URLS\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { ActionsService } from '../base-form/base-form-testing.barrel.spec';\r\n\r\n@Component({\r\n selector: 'comparecarfinance-privacy-policy',\r\n templateUrl: './comparecarfinance-privacy-policy.component.html',\r\n styleUrls: ['./comparecarfinance-privacy-policy.component.scss']\r\n})\r\nexport class ComparecarfinancePrivacyPolicyComponent implements OnInit {\r\n constructor(private actionsService: ActionsService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n hidePolicy() {\r\n this.actionsService.broadcast({\r\n action: 'hide',\r\n behaviour: 'privacy',\r\n value: true\r\n });\r\n\r\n }\r\n}","
    \r\n

    Terms & Conditions

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

    1. Acceptance of Terms

    \r\n

    \r\n 1.1 The website www.comparecarfinance.co.uk (“the Site”) is a site operated by Whichdeal Limited, trading\r\n as ‘Comparecarfinance’ (\"We, Us, Comparecarfinance\"). We are registered in The United Kingdom under company number\r\n 04997789 and our registered office address is Waterloo House, Fleets Corner, Nuffield Road, Poole, Dorset, BH17 0HL,\r\n UK. We are a limited company.

    \r\n

    \r\n 1.2 We are governed by UK and EU laws.

    \r\n

    \r\n 1.3 We are a “regulated Business”, directly authorised and regulated by the Financial Conduct Authority\r\n (FCA) Registration Number 456327.

    \r\n

    \r\n 1.4 Please make sure you have read these Terms & Conditions carefully, they protect you as a user of\r\n the Site and prevent the Site from being used for any illegal or unauthorised purposes. They also outline the parameters\r\n on which you are permitted to use the Site and by accessing and continuing to use this Site you agree to be bound\r\n by and act in accordance with these Terms & Conditions.

    \r\n

    \r\n 1.5 Your privacy is very important to us and we process all information about you in accordance with our\r\n Privacy Policy and Cookies Policy. By accessing and using the Site, you confirm that you have read and agreed to\r\n our Privacy Policy and Cookies Policy. We recommend that you print or save a copy of these Terms and Conditions for\r\n your information/future reference.

    \r\n

    \r\n 1.6 We may amend these Terms & Conditions at any time without prior notice. You are expected to check\r\n these Terms & Conditions from time to time and your continued use of the Site will mean that you accept any amendments\r\n to the Terms & Conditions.

    \r\n

    \r\n 1.7 All rights, including copyright and database rights of the Comparecarfinance website and its contents\r\n are owned by Comparecarfinance or otherwise used by Comparecarfinance as permitted by applicable law.

    \r\n

    \r\n 1.8 To apply you must be at least 18 years old and a UK resident (excluding the Channel Islands and the\r\n Isle of Man). Car finance is also subject to personal circumstance.

    \r\n

    \r\n 1.9 If you have any questions, queries or concerns relating to these Terms & Conditions, please contact\r\n us at compliance@comparecarfinace.co.uk

    \r\n
      \r\n
    1. \r\n Website\r\n
    2. \r\n
    \r\n

    \r\n 2.1 The Site is a medium for providing information and access to products and services of third parties,\r\n which is related to cars including new and used car loans. The site also advertises vehicles for sale by third party\r\n sellers on our web application(s) as indicated in these Terms & Conditions as “Comparecarfinance”.

    \r\n

    \r\n 2.2 We do our utmost to ensure that the information on the Site is accurate, reliable and helpful. However,\r\n the information is general in nature, and is intended as a guide only to the types of products and services offered\r\n by Comparecarfinance. Users are advised to consult with Comparecarfinance and to check any product or service information\r\n for specific information. We will not be responsible if any such material is untrue, inaccurate, incomplete and/or\r\n contains errors and we disclaim all liability and responsibility arising from any reliance you place on such material.

    \r\n

    \r\n 2.3 All vehicle descriptions are supplied by dealers, and therefore Comparecarfinance shall not be held\r\n responsible for any related errors or emissions on pricing or vehicle description. Comparecarfinance has the right\r\n to refuse a sale or adjust any details up until an order has been received in writing from the customer at an agreed\r\n price set by Comparecarfiance.

    \r\n

    \r\n 2.4 Any loan or other product or service which you obtain via the Site will be subject to the terms and\r\n conditions of the relevant product provider. Before proceeding with any loan or other product or service with the\r\n product provider, you should read its terms and conditions carefully and, where appropriate, take independent advice.

    \r\n

    \r\n 2.5 The Site and the information supplied for use with it have been obtained from sources believed to be\r\n reliable and accurate at the date of publication. Comparecarfiance makes no representation or warranty, express or\r\n implied, as to its accuracy or completeness. No independent verification has been undertaken in respect of the information\r\n supplied.

    \r\n

    \r\n 2.6 Material contained on the site may be out of date at any given time and, whilst we endeavour to maintain\r\n the validity of material and to ensure that the information is up to date. However, we are under no obligation to\r\n do so and material on the site may be subject to change at any time.  

    \r\n

    \r\n 2.7 If a linked site is used, any personal information you provide to that site will be actioned in line\r\n with that site’s Privacy policy, not the privacy policy of Comparecarfinance, so please ensure that you have read\r\n that site’s Privacy Policy and Terms & Conditions before you provide any personal Information and use the services\r\n of that website.

    \r\n

     

    \r\n

    3. Your use of the Website

    \r\n

    \r\n 3.1 By accessing Comparecarfinance web pages, you agree that you will access the contents solely for your\r\n own private use and not for any commercial or public use. Except as permitted within, you undertake not to copy,\r\n store in any medium (including in any other website), distribute, transmit, re-transmit, broadcast, modify, or show\r\n in public any part of Comparecarfinance web site save for the purposes as laid out in these terms and conditions\r\n without the prior written permission of Comparecarfinance or in accordance with the Copyright, Designs and Patents\r\n Act 1988.

    \r\n

    \r\n 3.2 Anyone can access the Comparecarfinance site using their web browser and associated internet connection.\r\n However, if you want to access and use Comparecarfiance website and/or any connected services, you as consumer will\r\n need to make an application for Motor Finance. To access the afore mentioned services you must be 18 years of age\r\n or older and be resident within the United Kingdom.

    \r\n

    \r\n 3.3 You must not under any circumstances attempt to gain unauthorised access to our site, the server on\r\n which our site is stored, or any server, computer or database connected to our site. You must not seek to undermine\r\n the security of the site in any way. In particular, but without limitation, you must not attempt to alter or delete\r\n any information that you are not authorised to access, attack our site via a denial-of-service attack or a distributed\r\n denial-of service attack. By doing so you would commit a criminal offence under the Computer Misuse Act 1990.

    \r\n

    \r\n 3.4 You are permitted to print or download extracts from material on the site as a consumer for your personal\r\n use only, provided you keep intact all or any copyright and proprietary notes contained on the site. No licence is\r\n granted to you in these Terms & Conditions to use any trade mark of Comparecarfinance.

    \r\n

    \r\n 3.5 The site may be used only for lawful purposes and you may not use the site that in any way breaches\r\n any local, national or international law or regulation. In any way that is unlawful or fraudulent or has any unlawful\r\n or fraudulent purpose or effect.

    \r\n

    \r\n 3.6 You are not permitted to use the site for the purpose or intent of attempting to harm minors in any\r\n way

    \r\n

    \r\n 3.7 You may not use the site to knowingly transmit, send upload or conceal any data or other material that\r\n may contain viruses, spyware, adware or any other harmful programs or similar computer designed code(s) to damage,\r\n disrupt or adversely affect the operation of the site or any computer software/hardware.

    \r\n

    \r\n 4. Disclaimer/Liability\r\n

    \r\n

    \r\n 4.1 Neither the Site nor the information derived from it constitutes an offer by Comparecarfinance. Prices\r\n contained within the site and/or Quotations subsequently obtained are subject to confirmation by Comparecarfinance.\r\n We have the right to decline any proposal. No contract will be binding on Comparecarfinance unless it is in writing\r\n and signed by a duly authorised representative of Comparecarfiance.

    \r\n

    \r\n 4.2 Any photographs and colours used in the site are for illustrative purposes only and do not form part\r\n of any contract.

    \r\n

    \r\n 4.3 We do not make any promises as to the availability, accessibility and or reliability of the site(s)when\r\n you wish to access, the content on it or the services we provide will be available or delivered uninterrupted in\r\n a timely manner or error free and it may be necessary to suspend, restrict or terminate access by users at any time.\r\n If a fault does occur in the service you experience, you should report it to us and we will attempt to reinstate\r\n the service as soon as we reasonably can.

    \r\n

    \r\n 4.4 Accordingly, neither Comparecarfiance nor its directors, representatives or employees, accept any liability\r\n whatsoever for any direct, indirect or consequential loss howsoever arising from the use of this Site and the information\r\n supplied in connection therewith.

    \r\n

    \r\n 4.5 By using the Site the User further agrees to indemnify and hold Comparecarfiance harmless from any and\r\n all claims, expenses and liability of any kind arising out of or in connection with any use of the Site.

    \r\n

    \r\n 4.6 The Site contains links to other websites. When you activate any of these links, you will leave the\r\n Site and we accept no responsibility for the availability or content of any linked websites or for any loss or damage\r\n that may arise from your use of them. The links are provided for your convenience and any such link does not imply\r\n endorsement by us of a website or any association with the operators of a website.

    \r\n

    \r\n 4.6 In assessing your car loan application, we will make enquiries about you including searching your records\r\n held by Equifax Plc and/or Experian Ltd. You consent to us disclosing details of your finance application and we\r\n may use a 'credit scoring' or other automated process in deciding whether to accept your application. Your information\r\n may also be sent to a third party for further loan/insurance option purposes. Loan offers will be valid for 30 days.

    \r\n

    \r\n 4.7 Any access to the Comparecarfinance site is permitted on a temporary basis, as we reserve the right\r\n to amend or withdraw the service we provide on the site at any time and without notice. We will not be held liable\r\n if, for any reason, the site is unavailable at any time or for any period of time.

    \r\n

     

    \r\n

    5. New and Pre-registered Cars supplied by Comparecarfinance

    \r\n

    \r\n 5.1 All New and Pre-registered cars supplied by Comparecarfinance will be covered by the relevant Manufacturer’s\r\n warranty. Where a vehicle is Pre-registered the balance of manufacturer’s warranty shall apply with no additional\r\n warranties being supplied by Comparecarfinance. It is the customer’s responsibility to be fully aware of the parts\r\n not covered by the manufacturer’s car warranty (if any). All New & Pre-registered cars are supplied on the basis\r\n that the client understands Comparecarfiance will not rectify or compensate for any car repairs outside of the car\r\n warranty.

    \r\n

    \r\n 5.2 If a New or Pre-registered car is returned the customer bears the cost of return along with a cancellation\r\n fee of 5% of the car value or a minimum of £500, whichever is the greater.

    \r\n

     

    \r\n

    6. Used Cars Supplied by Comparecarfiance

    \r\n

    \r\n 6.1 Cars supplied by Comparecarfiance will be covered by a car warranty for a minimum of 6 months. It is\r\n the customer's responsibility to be fully aware of the parts not covered by the car warranty (if any). The car is\r\n supplied on the basis that the client understands Comparecarfiance will not rectify or compensate for any car repairs\r\n outside of the car warranty. For further information visit our car warranties explained page (/help-and-advice/making-anapplication/joint-applications/guarantor/).

    \r\n

    \r\n 6.2 If a car is returned the customer bears the cost of return and a cancellation fee of 5% of the car value\r\n or a minimum of £500, whichever is the greater.

    \r\n

    \r\n 6.3 The Comparecarfinance Vehicle Standards Guideline can be found here (/media/1255/vehiclestandards.pdf).

    \r\n

    \r\n 6.4 On delivery of a vehicle supplied by Comparecarfiance, you must inspect it and sign for its acceptance.\r\n If you allow another individual to do this, it will be taken that they are acting fully on your behalf and that you\r\n personally have accepted the vehicle. If you require a test drive of the vehicle, you need to notify the driver who\r\n will allow you to do so.

    \r\n

    \r\n 6.5 The customer has a 14 day notice period from delivery, for notification of any mechanical or body defects\r\n providing they are not commensurate with the vehicle age and mileage or notified to you before delivery.

    \r\n

    \r\n 6.6 Cancellation after accepting the vehicle will only be allowed provided the goods are deemed faulty and\r\n that Comparecarfiance cannot repair such items within 30 days. The cancellation fee does not apply if the vehicle\r\n order is cancelled under these terms. Order pricing is valid 02/01/2020 Terms and Conditions https://www.comparecarfinance.co.uk/terms-and-conditions/\r\n 4/8 pp y p g for 14 days. If you are purchasing the vehicle using finance, you need to refer to the lenders terms\r\n and conditions. This does not affect your statutory rights as per distance selling rights.

    \r\n

     

    \r\n

    7. Data Protection

    \r\n

    \r\n 7.1 If you make an application, your details will be held on computer and used in a credit scoring or other\r\n automated decision-making process when assessing your application. An enquiry will be made with Credit Reference\r\n Agencies, who will record it so that it can be viewed by other Agency users. Your information will also be checked\r\n with fraud prevention agencies and if fraud is suspected Comparecarfiance (\"we\" or \"us\") will record this and those\r\n details will be shared with other subscribing organisations. For the purposes of this application you may be treated\r\n as financially linked and your application will be assessed with reference to any \"associated\" records. If you are\r\n a joint applicant or if you have told us of some other financial association with another person, you must be sure\r\n that you are entitled to:

    \r\n
      \r\n
    • Disclose information about your joint applicant and anyone referred to by you
    • \r\n
    • Authorise Comparecarfinance to search, link or record information at credit reference agencies about you and anyone\r\n referred to by you
    • \r\n
    \r\n

     

    \r\n

    \r\n 7.2 You authorise us to make all enquiries necessary to verify this information to enable us to consider\r\n this and or any subsequent application. By agreeing to the terms and conditions when making your application, you\r\n are giving your consent for your information to be used by Comparecarfiance for administrative, underwriting, marketing\r\n and revenue purposes. This may include partners or related 3rd parties. This also includes any of our sister sites.\r\n If you do not want your details to be used for marketing please write to Comparecarfiance, Waterloo House, Fleets\r\n Corner, Nuffield Road, Poole, Dorset, BH17 0HL. Under the terms of the act you have the right to obtain a copy of\r\n the information held about you upon payment of the appropriate fee.

    \r\n

    \r\n 7.3 Regulatory requirements and applicable laws state that there are elements of the service that must be\r\n communicated in writing. Our main communication means with you will be electronic. We will contact you by letter\r\n or email. For contractual purposes, you consent to electronic means of communication and acknowledge that all information,\r\n notices, contracts, agreements and other communications we provide to you as customer electronically, comply with\r\n and regulatory and legal requirement that such communication be in writing. This condition in no way affects your\r\n statutory rights.

    \r\n

     

    \r\n

    8. Additional Fees

    \r\n

    \r\n 8.1 At the request of the customer, Comparecarfinance will disclose to the customer, in good time before\r\n a regulated credit agreement or a regulated consumer hire agreement is entered into, the amount (or if the precise\r\n amount is not known, the likely amount) of any commission or fee or other remuneration payable to Comparecarfinance\r\n by the lender or owner or a third party.

    \r\n

    \r\n 8.2 Comparecarfinance reserve the right to charge an administration fee to cover the cost of sourcing a\r\n suitable vehicle or vetting an appropriate dealer. The administration charge is kept to a minimum to cover costs\r\n only. In the event of a cancelled order by the client, or the client changing supplier the administration fee will\r\n not be returned by Comparecarfinance.

    \r\n

    \r\n 8.3 If a customer wants payment from a lender within 24 hours of pay-outs, Comparecarfinance will charge\r\n a £25 administration fee.

    \r\n

    \r\n 8.4 As per Road Fund Licence (Road Tax) regulation changed on 1\r\n st October 2014, Comparecarfinance are not able to provide any road tax with any vehicle, new or used. It is\r\n the responsibility of the customer to contact the DVLA and arrange road tax payment. Comparecarfinance will not be\r\n held responsible for any loss incurred by the customer for failure to comply with the new regulations. 02/01/2020Terms\r\n and Conditions https://www.comparecarfinance.co.uk/terms-and-conditions/ 5/8

    \r\n

    \r\n 8.5 All contacts supplied by Comparecarfinance will be in English.

    \r\n

     

    \r\n

    9. Information about our Financial Services

    \r\n

    \r\n 9.1 Comparecarfinance is a specialist vehicle financier and vehicle supplier, strictly governed by its relationships\r\n with lenders and dealers, and cannot be held responsible for any change to vehicle specification or finance rates\r\n or any other variable outside of its control so imposed by those companies.

    \r\n

    \r\n 9.2 The term of any contract we offer will be between 12-60 months. We do not offer contracts for less than\r\n 12 months.

    \r\n

    \r\n 9.3 Any offers provided by Comparecarfinance will be valid for 30 days, from the date issued.

    \r\n

    \r\n 9.4 The Consumer Rights Act 2015 exists to protect the customers from businesses that operate without reasonable\r\n care and skill. All services supplied by Comparecarfinance are governed by the Consumer Rights act 2015 which superseded\r\n the Supply of Goods & Services act of 1982. You can find the act with full details here\r\n \r\n http://www.legislation.gov.uk/ukpga/2015/15/pdfs/ukpga20150015en.pdf\r\n ).

    \r\n

    \r\n 9.5 You will be provided with a standardised form with any credit agreement called Standard European Consumer\r\n Credit Information (SECCI). This document allows you to see exactly what your finance agreement contains. For more\r\n information visit our car finance glossary, SECCI explained page (/why-us/our-values/ethical-lending-policy/).

    \r\n

    \r\n 9.6 Quotes generated by the 'Build your finance quote' form are powered by the vehicle and finance settings\r\n chosen by the user. All the quotes are based on prime interest rates and are subject to change. In addition, the\r\n quotes do not take into account any customer information or circumstances which can affect an individual’s chance\r\n of getting finance for a vehicle. The figures provided by this form are quotes and do not represent an acceptance\r\n for a loan of any kind. As the quotes are subject to a user’s personal circumstances and lender requirements, full\r\n confirmation on the price to be paid (including all related lender fees) will be detailed in the lender’s customer\r\n documentation pack.

    \r\n

     

    \r\n

    10. Complaints

    \r\n

    \r\n 10.1 If you have a complaint then we have full details of the complaint’s procedure available on our complaints\r\n page. Any general complaints or feedback please contact us at\r\n \r\n complaints@comparecarfinance.co.uk\r\n or by post to Comparecarfinance.

    \r\n

    \r\n 10.2 If 8 weeks has passed since making your complaint and you are still not happy then you may contact\r\n the Financial Ombudsman Service (FOS). Details on FOS and how to contact them can be found on our complaints page.

    \r\n

    \r\n 10.3 As a company we respect the intellectual property rights of other users of our site are prohibited\r\n from uploading, posting, submitting or transmitting any materials that impair, violate or infringe any other person’s\r\n intellectual property rights. It is our policy to comply with clear notices of alleged copyright infringement. If\r\n you are aware of, or wish too submit a notice of alleged copyright infringement or lodge a counter notice, please\r\n contact us by emailing\r\n \r\n compliance@comparecarfinance.co.uk\r\n \r\n

    \r\n

     

    \r\n

    11. Cancellation Policy

    \r\n

    \r\n 11.1 The customer has 14 days from the date of funding to cancel the agreement with no penalty.

    \r\n

    \r\n 10.2 If the car is delivered the customer has 14 days from the day of delivery to cancel without penalty\r\n under the Consumer Contracts Regulations 2014 and the Consumer Rights Act of 2015. However, the vehicle supplier\r\n has the right to claim reasonable compensation for any true costs incurred.

    \r\n

     

    \r\n

     

    \r\n

     

    \r\n

    12. Compensation

    \r\n

    \r\n 12.1 You agree to only use the site in accordance with these Terms and Conditions and further agree to compensate\r\n us (and our agents, suppliers, employees and officers) in full for any costs, losses, damages and expenses, including\r\n reasonable legal fees, that we incur, arising from or in connection with any breach of these Terms and Conditions.\r\n This includes any actions that you take which disrupts access to and/or the functioning of the sites(S), or any liability\r\n we incur as a result of your use of the site(s).

    \r\n

    \r\n  \r\n

    \r\n

    13. Changes

    \r\n

    \r\n 13.1 These Terms and Conditions may change at any time as the conditions or terms alter. It is the responsibility\r\n of the users of the site to ensure that they review our Terms & Conditions should they use the site on each occasion.\r\n Continued us of the site means that you accept any such changes.

    \r\n

    \r\n  \r\n

    \r\n

    14. Got a question for us?

    \r\n

    If you require further assistance, our team of Customer Advisors are here to help. We're open seven days a week - you\r\n can view our opening hours here (/contact-us/) - and we're more than happy to answer your questions.

    \r\n

    Please call 0333 9000 290

    \r\n
    \r\n
    \r\n \r\n
    "],"sourceRoot":"webpack:///"}