{"version":3,"file":"app-9e164259.xxxxxxxx.bundle.js","mappings":"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","sources":["webpack://iadviser/./src/resources/prerender-step.ts","webpack://iadviser/./src/resources/scroll-into-view.ts","webpack://iadviser/./src/resources/services/blob-service.ts","webpack://iadviser/./src/resources/services/claims-service.ts","webpack://iadviser/./src/resources/services/ia-toast-service.ts","webpack://iadviser/./src/resources/services/log-service.ts","webpack://iadviser/./src/resources/services/lookup-data.ts","webpack://iadviser/./src/resources/services/token-service.ts","webpack://iadviser/./src/resources/startup/console-appender.ts","webpack://iadviser/./src/resources/startup/i18tn-validation.ts","webpack://iadviser/./src/resources/tab-scroll.ts","webpack://iadviser/./src/resources/timer.ts"],"sourcesContent":["/* istanbul ignore file */\r\n\r\nexport class PreRenderStep {\r\n run(navigationInstruction, next) {\r\n const currentRoute = navigationInstruction.config;\r\n\r\n const currentRouteName = currentRoute.name;\r\n\r\n document.body.className = '';\r\n document.body.classList.add(`route--${currentRouteName}`);\r\n\r\n return next();\r\n }\r\n}\r\n","/* istanbul ignore file */\r\n\r\nexport function scrollIntoView(tableClassName, rowClassName = 'table-row-selected_') {\r\n setTimeout(() => {\r\n const tables = Array.from(document.querySelectorAll('table:not(.aurelia-hide)'));\r\n const table = tables.find((x) => x.className.includes(tableClassName)) as HTMLElement;\r\n if (table) {\r\n const tableRows = Array.from(table.querySelectorAll('tbody>tr'));\r\n const selectedTr = tableRows.find((x) => x.className.includes(rowClassName)) as HTMLElement;\r\n selectedTr?.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n }\r\n }, 0);\r\n}\r\n\r\nexport function scrollQCEErrorIntoView() {\r\n setTimeout(() => {\r\n const errors = document.querySelectorAll('qce .auFormInputError');\r\n if (errors.length) {\r\n errors[0].scrollIntoView({behavior: \"smooth\", block: \"center\", });\r\n }\r\n }, 0);\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient, json } from 'aurelia-fetch-client';\r\nimport { environment } from 'environment';\r\n\r\n@autoinject()\r\nexport class BlobService {\r\n constructor(private http: HttpClient) {}\r\n\r\n async downloadBlobFromUrl(fileName: string, url: string): Promise {\r\n if (this.isValidParams(fileName, url)) {\r\n const blob = await this.urlToBlob({ fileName, blobUrl: url });\r\n if (blob) {\r\n this.downloadFile(blob, fileName);\r\n }\r\n } else {\r\n console.error('Invalid params passed to BlobService');\r\n }\r\n }\r\n\r\n private isValidParams(fileName: string, url: string): boolean {\r\n return typeof url === 'string' && url.includes('http') && typeof fileName === 'string' && fileName.length > 0;\r\n }\r\n\r\n downloadFile(blob: Blob, fileName: string): void {\r\n const a = document.createElement('a');\r\n a.download = fileName;\r\n a.href = window.URL.createObjectURL(blob);\r\n document.body.appendChild(a);\r\n a.click();\r\n a.remove();\r\n }\r\n\r\n private async urlToBlob(body): Promise {\r\n const endpoint = environment.utils.urlToOctetStrem;\r\n const uri = endpoint.uri();\r\n\r\n try {\r\n const result = await this.http.fetch(uri, {\r\n body: json(body),\r\n headers: endpoint.headers,\r\n method: endpoint.method,\r\n });\r\n\r\n if (result.ok) {\r\n return result.blob();\r\n }\r\n } catch (error) {\r\n console.error(error.message);\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-fetch-client';\r\n\r\nimport { environment } from 'environment';\r\n\r\n@autoinject()\r\nexport class ClaimsService {\r\n claims: string[] = [];\r\n\r\n constructor(public http: HttpClient) {}\r\n\r\n async getClaims() {\r\n try {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/users/current/claims`);\r\n\r\n const { claims } = await response.json();\r\n const expiry = response.headers.get('X-Expiry');\r\n const expiryDate = new Date(expiry).getTime();\r\n\r\n return { claims: Array.isArray(claims) ? claims : [], expiryDate };\r\n } catch (e) {\r\n return { claims: [], expiryDate: null };\r\n }\r\n }\r\n\r\n /**\r\n * Returns true or false if the user has one or more claims\r\n *\r\n * @param claim string || string[]\r\n */\r\n has(claim: string | string[]): boolean {\r\n if (!Array.isArray(this.claims)) {\r\n return false;\r\n }\r\n\r\n if (Array.isArray(claim)) {\r\n return claim.every((value) => this.claims.includes(value));\r\n }\r\n\r\n return this.claims.includes(claim);\r\n }\r\n\r\n async hasAsync(claim: string | string[]): Promise {\r\n if (!Array.isArray(this.claims) || !this.claims.length) {\r\n const { expiryDate, claims } = await this.getClaims();\r\n this.claims = Array.isArray(claims) ? claims : [];\r\n localStorage.setItem('iadviserClaimsExpiry', expiryDate?.toString() ?? '');\r\n localStorage.setItem('iAdviserUserClaims', JSON.stringify(this.claims));\r\n }\r\n\r\n const dateNow = new Date().getTime();\r\n const expiry = parseInt(localStorage.getItem('iadviserClaimsExpiry') ?? '');\r\n\r\n if (isNaN(expiry) || dateNow > expiry) {\r\n const { expiryDate, claims } = await this.getClaims();\r\n this.claims = Array.isArray(claims) ? claims : [];\r\n localStorage.setItem('iadviserClaimsExpiry', expiryDate?.toString() ?? '');\r\n localStorage.setItem('iAdviserUserClaims', JSON.stringify(this.claims));\r\n }\r\n\r\n if (!Array.isArray(this.claims)) {\r\n return false;\r\n }\r\n\r\n if (Array.isArray(claim)) {\r\n return claim.some((value) => this.claims.includes(value));\r\n }\r\n\r\n return this.claims.includes(claim);\r\n }\r\n}\r\n","import '!style-loader!css-loader!izitoast/dist/css/iziToast.css';\r\nimport '!style-loader!css-loader!styles/ia-toast.css';\r\nimport { computedFrom } from 'aurelia-binding';\r\nimport { autoinject } from 'aurelia-dependency-injection';\r\nimport { TaskQueue } from 'aurelia-framework';\r\nimport izitoast, { IziToastProgress, IziToastSettings } from 'izitoast';\r\n\r\n/**\r\n * `iaAnyware` toast messenger service for global/component user messages\r\n *\r\n * Message types include success, error, warning, info, progress and question\r\n *\r\n * @see {@link IaToast} interface for available functionality (methods and options)\r\n * @see {@link router-layouts/client-nav/components.ClientDetails ClientDetails} component for an example usage\r\n */\r\n@autoinject()\r\nexport class IaToastService implements IaToast {\r\n private defaultOptions: IaToastOptions = {\r\n class: 'ia-toast',\r\n position: 'bottomRight',\r\n theme: 'light',\r\n layout: 1,\r\n title: '',\r\n titleColor: '#FFFFFF',\r\n messageColor: '#FFFFFF',\r\n iconColor: '#FFFFFF',\r\n backgroundColor: '#09A47A',\r\n close: true,\r\n closeOnEscape: false,\r\n closeOnClick: false,\r\n timeout: 3000,\r\n overlay: false,\r\n overlayClose: false,\r\n overlayColor: 'rgba(255,255,255,0.24)',\r\n transitionIn: 'fadeInUp',\r\n transitionOut: 'fadeOutDown',\r\n animateInside: false,\r\n progressBar: true,\r\n image: '',\r\n imageWidth: 50,\r\n maxWidth: null,\r\n displayMode: 0,\r\n drag: false,\r\n };\r\n\r\n private loader: IaToastMessage;\r\n private loaderOpen = false;\r\n\r\n constructor(private taskQueue: TaskQueue) {\r\n if (!izitoast)\r\n throw new Error('IziToast: Sorry but it seems the IziToast plugin is not available for the IaToastService!');\r\n izitoast.settings(this.defaultOptions);\r\n if (this.loader && this.loader.overrideOptions) return;\r\n this.bootstrapLoader();\r\n }\r\n\r\n setDefaultOptions(options: IaToastOptions): void {\r\n this.defaultOptions = { ...this.defaultOptions, ...options };\r\n izitoast.settings(this.defaultOptions);\r\n }\r\n\r\n getDefaultOptions(): IaToastOptions {\r\n return this.defaultOptions;\r\n }\r\n\r\n destroyAllToasts(): void {\r\n izitoast.destroy();\r\n }\r\n\r\n @computedFrom('loaderOpen')\r\n get isLoaderOpen() {\r\n return this.loaderOpen;\r\n }\r\n\r\n show(toast: IaToastMessage, toastMessageIsRequired = true): boolean | void {\r\n return izitoast.show(this.mergeToastSettings(toast, toastMessageIsRequired));\r\n }\r\n\r\n hide(toastRef: string | HTMLDivElement, toast?: IaToastMessage, closedBy?: string): void {\r\n let toastElement: HTMLDivElement;\r\n\r\n if (typeof toastRef === 'string' || toastRef instanceof String) {\r\n toastElement = document.querySelector(toastRef.toString());\r\n } else {\r\n toastElement = toastRef;\r\n }\r\n\r\n if (!toastElement) return;\r\n izitoast.hide(this.mergeToastSettings(toast, false), toastElement, closedBy);\r\n }\r\n\r\n public info(toast: IaToastMessage): void {\r\n toast.overrideOptions.timeout = toast.overrideOptions.timeout == undefined ? false : toast.overrideOptions.timeout;\r\n toast.overrideOptions.layout = 2;\r\n\r\n izitoast.info(this.mergeToastSettings(toast));\r\n }\r\n\r\n progress(toastRef: HTMLDivElement, toast?: IaToastMessage, callback?: () => void): IaToastProgress {\r\n return izitoast.progress(this.mergeToastSettings(toast, false), toastRef, callback);\r\n }\r\n\r\n success(toast: IaToastMessage): void {\r\n toast.overrideOptions.layout = 2;\r\n\r\n izitoast.success(this.mergeToastSettings(toast));\r\n }\r\n\r\n warning(toast: IaToastMessage): void {\r\n toast.overrideOptions.timeout = toast.overrideOptions.timeout == undefined ? false : toast.overrideOptions.timeout;\r\n toast.overrideOptions.layout = 2;\r\n\r\n izitoast.warning(this.mergeToastSettings(toast));\r\n }\r\n\r\n error(toast: IaToastMessage): void {\r\n toast.overrideOptions.timeout = toast.overrideOptions.timeout == undefined ? false : toast.overrideOptions.timeout;\r\n toast.overrideOptions.layout = 2;\r\n\r\n izitoast.error(this.mergeToastSettings(toast));\r\n\r\n this.restoreDefaultSettings(toast);\r\n }\r\n\r\n question(toast: IaToastMessage): void {\r\n izitoast.question(this.mergeToastSettings(toast));\r\n }\r\n\r\n getLoaderPath(loader: Loader) {\r\n return require(`img/loaders/${loader}`);\r\n }\r\n\r\n showLoader(loader?: Loader, loaderText = '') {\r\n this.taskQueue.queueMicroTask(() => {\r\n if (this.loaderOpen) return;\r\n\r\n if (loader) {\r\n this.loader.overrideOptions.image = this.getLoaderPath(loader);\r\n }\r\n this.loader.overrideOptions.$loaderText = loaderText;\r\n\r\n this.show(this.loader, false);\r\n this.loaderOpen = true;\r\n });\r\n }\r\n\r\n hideLoader(showStatusIcon = false, statusSuccess = true, statusIconTimeout = 1000) {\r\n this.taskQueue.queueMicroTask(() => {\r\n if (!this.loaderOpen) return;\r\n\r\n this.hide(`.${this.loader.overrideOptions.class}`);\r\n this.loaderOpen = false;\r\n\r\n if (showStatusIcon) {\r\n this.showStatusIcon(statusSuccess, statusIconTimeout);\r\n }\r\n });\r\n }\r\n\r\n private showStatusIcon(statusSuccess: boolean, statusIconTimeout: number) {\r\n const existingImage = this.loader.overrideOptions.image;\r\n const existingTransIn = this.loader.overrideOptions.transitionIn;\r\n const existingTimeout = this.loader.overrideOptions.timeout;\r\n const existingOnClosed = this.loader.overrideOptions.onClosed;\r\n\r\n this.loader.overrideOptions.timeout = statusIconTimeout;\r\n this.loader.overrideOptions.transitionIn = statusSuccess ? 'bounceInUp' : 'bounceInDown';\r\n\r\n this.loader.overrideOptions.onClosed = () => {\r\n this.hide(`.${this.loader.overrideOptions.class}`);\r\n this.loader.overrideOptions.image = existingImage;\r\n this.loader.overrideOptions.transitionIn = existingTransIn;\r\n this.loader.overrideOptions.timeout = existingTimeout;\r\n this.loader.overrideOptions.onClosed = existingOnClosed;\r\n };\r\n\r\n this.showLoader(statusSuccess ? Loader.GreenTick : Loader.RedCross);\r\n }\r\n\r\n private bootstrapLoader(loader = Loader.TailSpin) {\r\n this.loader = new IaToastMessage();\r\n\r\n this.loader.overrideOptions = {\r\n id: 'iaToastLoader',\r\n overlay: true,\r\n overlayClose: false,\r\n overlayColor: 'rgba(255,255,255,0.84)',\r\n close: false,\r\n class: 'ia-loader-toast',\r\n timeout: false,\r\n closeOnClick: false,\r\n closeOnEscape: false,\r\n position: 'center',\r\n transitionIn: 'fadeIn',\r\n transitionOut: 'fadeOut',\r\n animateInside: false,\r\n drag: false,\r\n backgroundColor: 'transparent',\r\n progressBar: false,\r\n image: this.getLoaderPath(loader),\r\n imageWidth: 50,\r\n maxWidth: 50,\r\n displayMode: 1,\r\n $loaderText: '',\r\n $loaderTextClass: 'ia-loader-text',\r\n };\r\n\r\n this.loader.overrideOptions.onOpening = () => {\r\n this.addLoaderText();\r\n this.loaderOpen = true;\r\n };\r\n\r\n this.loader.overrideOptions.onClosing = () => {\r\n this.removeLoaderText();\r\n this.loaderOpen = false;\r\n };\r\n }\r\n\r\n private addLoaderText() {\r\n if (!this.loader.overrideOptions.$loaderText) return;\r\n\r\n const loaderText = document.createElement('h3');\r\n loaderText.classList.add(this.loader.overrideOptions.$loaderTextClass);\r\n\r\n loaderText.appendChild(document.createTextNode(this.loader.overrideOptions.$loaderText));\r\n document.querySelector(`.${this.loader.overrideOptions.class}`)?.parentNode?.appendChild(loaderText);\r\n }\r\n\r\n private removeLoaderText() {\r\n if (!this.loader.overrideOptions.$loaderText) return;\r\n\r\n document.querySelector(`.${this.loader.overrideOptions.$loaderTextClass}`)?.remove();\r\n this.loader.overrideOptions.$loaderText = '';\r\n }\r\n\r\n private restoreDefaultSettings(toast: IaToastMessage) {\r\n toast.overrideOptions = { ...this.defaultOptions };\r\n }\r\n\r\n private mergeToastSettings(toast: IaToastMessage, toastMessageIsRequired = true): IziToastSettings {\r\n if (toastMessageIsRequired && (!toast || !toast.message || !toast.message.length)) {\r\n throw new Error('IA Toast: Toast message cannot be empty if \"toastMessageIsRequired\" is true!');\r\n }\r\n return toast ? { ...toast.overrideOptions, ...{ message: toast.message || '', title: toast.title || '' } } : {};\r\n }\r\n}\r\n\r\n/**\r\n * From `T` pick all properties except the set of properties `K`\r\n */\r\nexport type Omit = Pick>;\r\n/**\r\n * Various toast options available to change the toast behaviour\r\n */\r\nexport type IaToastOptions = Omit;\r\n/**\r\n * Toast progress bar interface\r\n */\r\nexport type IaToastProgress = IziToastProgress;\r\n\r\n/**\r\n * Method parameters object for different types of toast messages\r\n */\r\nexport class IaToastMessage {\r\n constructor(\r\n /**\r\n * Toast message body - required except for `progress` and `hide`\r\n */\r\n public message?: string,\r\n /**\r\n * Toast message title (optional)\r\n */\r\n public title?: string,\r\n /**\r\n * Toast message override options (optional)\r\n */\r\n public overrideOptions: IaToastOptions & { $loaderText?: string; $loaderTextClass?: string } = {},\r\n ) {}\r\n}\r\n\r\n/**\r\n * iaAnyware toast messenger interface for various message types\r\n */\r\nexport interface IaToast {\r\n /**\r\n * Sets the default options object for all toast messages\r\n *\r\n * Merges the provided options with existing standard defaults\r\n *\r\n * @param options default option values\r\n */\r\n setDefaultOptions(options: IaToastOptions): void;\r\n /**\r\n * Gets the current default options object for all toast messages\r\n */\r\n getDefaultOptions(): IaToastOptions;\r\n /**\r\n * Destroys all toast messages\r\n */\r\n destroyAllToasts(): void;\r\n /**\r\n * Opens a generic toast message; returns false if toast cannot be opened\r\n */\r\n show(toast: IaToastMessage): void | boolean;\r\n /**\r\n * Closes the specific toast message identified by `toastRef`\r\n *\r\n * Toast parameter `IaToastMessage` is optional and defaults to `{}`\r\n *\r\n * Set new `hide` options by passing `IaToastMessage.overrideOptions`\r\n *\r\n * @param toastRef Toast html element or string selector to close\r\n * @param toast toast message params (optional); default = `{}`\r\n * @param closedBy Custom closed by meta information (optional)\r\n */\r\n hide(toastRef: HTMLDivElement | string, toast?: IaToastMessage, closedBy?: string): void;\r\n /**\r\n * Toast control progress bar time identified by `toastRef`\r\n *\r\n * Toast parameter `IaToastMessage` is optional and defaults to `{}`\r\n *\r\n * Set `progress` options by passing `IaToastMessage.overrideOptions`\r\n *\r\n * @param toastRef Toast html element\r\n * @param toast toast message params (optional); default = `{}`\r\n * @param callback handler triggered for `IaToast.progress(...)`\r\n */\r\n progress(toastRef: HTMLDivElement, toast?: IaToastMessage, callback?: () => void): IaToastProgress;\r\n /**\r\n * Shows an information toast message\r\n */\r\n info(toast: IaToastMessage): void;\r\n /**\r\n * Shows a success toast message\r\n */\r\n success(toast: IaToastMessage): void;\r\n /**\r\n * Shows a warning toast message\r\n */\r\n warning(toast: IaToastMessage): void;\r\n /**\r\n * Shows an error toast message\r\n *\r\n * Message remains open until user dismisses it\r\n */\r\n error(toast: IaToastMessage): void;\r\n /**\r\n * Shows a question toast message\r\n */\r\n question(toast: IaToastMessage): void;\r\n}\r\n\r\n/**\r\n * All available loading indicators\r\n */\r\nexport enum Loader {\r\n Audio = 'audio.svg',\r\n BallTriangle = 'ball-triangle.svg',\r\n Bars = 'bars.svg',\r\n Circles = 'circles.svg',\r\n Grid = 'grid.svg',\r\n Hearts = 'hearts.svg',\r\n Oval = 'oval.svg',\r\n Puff = 'puff.svg',\r\n Rings = 'rings.svg',\r\n SpinningCircles = 'spinning-circles.svg',\r\n TailSpin = 'tail-spin.svg',\r\n ThreeDots = 'three-dots.svg',\r\n GreenTick = 'green-tick.svg',\r\n RedCross = 'red-cross.svg',\r\n}\r\n","import { LogManager } from 'aurelia-framework';\r\n\r\nexport const log = LogManager.getLogger('iAdviser');\r\n","import { ApiRefDataResponse, EntityReportingType, PremiumFunderStatusAction, ApiEndpoints, EntityAction, PremiumFunder, SurchargePayee } from '../../routes/app-adviser/client/quotes/interfaces';\r\nimport { ClaimCategoryModel, ClaimStatusActionModel, LicenceClassRefType } from '../../routes/app-adviser/client/claims/models/claim'\r\nimport { environment } from 'environment';\r\nimport { HttpClient } from 'aurelia-fetch-client';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport {\r\n FieldType\r\n} from 'resources/models/lookups';\r\nimport { StorageService } from '../utilities/storage-helper';\r\nimport { Underwriter } from 'resources/models/client';\r\nimport { AllowableDocumentType } from 'components/document-management/dtos';\r\nimport orderBy from 'lodash/orderBy';\r\nimport { IFieldValueDefiniton } from 'interfaces/lookups/i-field-value-definition';\r\nimport { IMandatoryFieldValueDefinition } from 'interfaces/lookups/i-mandatory-field-value-definition';\r\nimport {\r\n Adviser, AdviserOption, BankBranch, ClaimEvent, ClaimsPayingRatingStructure, CodeNameRef, CompanyOffice, CompanyOfficeOption,\r\n ConsentOption, ConsentType, ConsentVerbalScriptText, Country, DocumentActivityType, FieldTypeKeyPrefix, FieldTypeRow,\r\n HelpdeskContact, HomepageLink, HomepageUrl, InsurerOffice, InsurerOfficeServiceRisk, InsurerOfficeServicingRisks,\r\n InsurerOption, InsurerRef, NamedRef, OfficeAdviser, OfficeReferrer, OfficeUser, PaymentOutType, PremiumFunderStatusActionDetail,\r\n RedPlanetRisk, RedPlanetStatus, RedPlanetSubStatus, RefDataDescription, ReportAssignee, ReportBranch, ReportCode,\r\n InsurerCategoryItem, ReportCriteriaItem, ReportReferral, ReportRisk, ReportUser, RiskByClass, RiskClassTypeDetail, SecurityGroup, SystemParameters,\r\n TransferProcessStatus, UnderwriterRef, UserDetail, UserGroup, VulnerableClientType, WebFormStatusAction\r\n} from './lookup-data-models';\r\n\r\ntype LookupKeyPart = string | number | number[];\r\n\r\nconst LOCAL_STORAGE_KEY_PREFIX = 'REFDATA';\r\nconst EXPIRY_HEADER = 'X-Expiry';\r\n\r\n@autoinject()\r\nexport class LookupDataService {\r\n constructor(private http: HttpClient, private storage: StorageService) { }\r\n\r\n async acceptsElectronicDisclosureDocuments(): Promise {\r\n return Promise.resolve([\r\n {\r\n 'id': true,\r\n 'label': 'lookups:yes'\r\n },\r\n {\r\n 'id': false,\r\n 'label': 'lookups:no'\r\n }\r\n ]);\r\n }\r\n\r\n async acceptsMarketingMail(): Promise {\r\n return Promise.resolve([\r\n {\r\n 'id': true,\r\n 'label': 'lookups:yes'\r\n },\r\n {\r\n 'id': false,\r\n 'label': 'lookups:no'\r\n }\r\n ]);\r\n }\r\n\r\n async association(): Promise {\r\n return Promise.resolve([\r\n {\r\n 'id': 'One-Way',\r\n 'label': 'lookups:oneWay'\r\n },\r\n {\r\n 'id': 'Two-Way',\r\n 'label': 'lookups:twoWay'\r\n }\r\n ]);\r\n }\r\n\r\n async reportCodes(): Promise {\r\n return this.cachedLookup(\r\n 'reportCodes',\r\n () => this.http.fetch(`${environment.apiHost}/api/reportCodes`),\r\n (rows: ReportCode[]) => rows\r\n );\r\n }\r\n\r\n async glPeriodTypes(): Promise {\r\n return this.cachedLookup(\r\n 'glPeriodTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/GlPeriodType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async consentClientDisplayText(): Promise {\r\n let consentClientDisplayText = this.getRefDataFromLocalStorage('consentClientDisplayText');\r\n\r\n if (!consentClientDisplayText) {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/refdata/parameters/consentClientdisplaytext`);\r\n\r\n // Handle 204 No Content response\r\n if (response.status === 204) {\r\n consentClientDisplayText = null;\r\n } else {\r\n consentClientDisplayText = await response.json();\r\n }\r\n\r\n this.saveRefDataToLocalStorage('consentClientDisplayText', response, consentClientDisplayText);\r\n }\r\n return consentClientDisplayText;\r\n }\r\n\r\n async consentWizardDisplayText(): Promise {\r\n let consentWizardDisplayText = this.getRefDataFromLocalStorage('consentWizardDisplayText');\r\n\r\n if (!consentWizardDisplayText) {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/refdata/parameters/consentWizarddisplaytext`);\r\n\r\n // Handle 204 No Content response\r\n if (response.status === 204) {\r\n consentWizardDisplayText = null;\r\n } else {\r\n consentWizardDisplayText = await response.json();\r\n }\r\n\r\n this.saveRefDataToLocalStorage('consentWizardDisplayText', response, consentWizardDisplayText);\r\n }\r\n return consentWizardDisplayText;\r\n }\r\n\r\n async consentTypes(): Promise {\r\n return this.cachedLookup(\r\n 'consentTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/ConsentType`),\r\n (rows: ConsentType[]) => rows.filter(t => t.activeFlag).map((e) => ({ id: e.id, label: e.description, disabled: !e.userSelectableFlag }))\r\n );\r\n }\r\n\r\n async consentVerbalScriptTextByCompanyOffice(): Promise {\r\n return this.cachedLookup(\r\n 'consentVerbalScriptTextByCompanyOffice',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/companyoffices/consentverbalscripttext`),\r\n (rows: ConsentVerbalScriptText[]) => rows\r\n );\r\n }\r\n\r\n async transferProcessStatusTypes(): Promise {\r\n return this.cachedLookup(\r\n 'transferProcessStatusTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/TransferProcessStatuses`),\r\n (rows: TransferProcessStatus[]) => rows.map((x) => ({id: x.transferProcessStatusId, label: x.transferProcessStatus}))\r\n );\r\n }\r\n\r\n async webFormEditAction(): Promise {\r\n let webFormEditAction = this.getRefDataFromLocalStorage('webFormEditAction');\r\n\r\n if (!webFormEditAction) {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/refdata/WebFormEditAction`);\r\n const rows: ApiRefDataResponse[] = await response.json();\r\n webFormEditAction = rows.filter(t => t.activeFlag).map((x) => ({id: x.id, label: x.description}));\r\n this.saveRefDataToLocalStorage('webFormEditActions', response, webFormEditAction);\r\n }\r\n return webFormEditAction;\r\n }\r\n\r\n\r\n async webFormStatusActions(): Promise {\r\n return this.cachedLookup(\r\n 'webFormStatusActions',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/webFormStatusActions`),\r\n (rows: WebFormStatusAction[]) => rows.filter(t => t.activeFlag).map((x) => ({id: x.webFormStatusActionId, label: x.webFormStatusAction}))\r\n );\r\n }\r\n\r\n async WebFormStatus(): Promise {\r\n return this.cachedLookup(\r\n 'WebFormStatus',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/WebFormStatus`),\r\n (rows: ApiRefDataResponse[]) => rows.filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async webFormTypes(): Promise {\r\n return this.cachedLookup(\r\n 'webFormTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/WebFormType`),\r\n (rows: ApiRefDataResponse[]) => rows.filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async webFormRiskClassTypes(): Promise {\r\n return this.cachedLookup(\r\n 'webFormRiskClassTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/riskclasstypes`),\r\n (rows: RiskClassTypeDetail[]) => rows.filter((x) => x.useOnWebFormsFlag).map((x) => ({id: x.riskClassTypeId, label: x.displayName}))\r\n );\r\n }\r\n\r\n // No Caching added for insurerOfficesServiceRisks\r\n async insurerOfficesServiceRisks(companyOfficeId: number, riskByClassIds: number[]): Promise {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/refdata/insurerOffices?companyOfficeId=${companyOfficeId}&${riskByClassIds.map(rbc => `riskByClassIds=${rbc}`).join('&')}`);\r\n const rows: InsurerOfficeServicingRisks[] = await response.json();\r\n return rows.filter((x) => x.insurerProcessingTypeId == 1).map((x) => ({\r\n insurerId: x.insurerId,\r\n insurerOfficeId: x.insurerOfficeId,\r\n insurerOfficeCode: x.insurerOfficeCode,\r\n insurerOfficeName: x.insurerOfficeName,\r\n captureInsurerOccupationFlag: x.captureInsurerOccupationFlag\r\n }));\r\n }\r\n\r\n async webFormRisksByRiskClassTypes(riskClassTypeId: number): Promise {\r\n let webFormRisksByRiskClassTypes = this.getRefDataFromLocalStorage('webFormRisksByRiskClassTypes');\r\n\r\n if (!webFormRisksByRiskClassTypes) {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/refdata/RiskClassType/${riskClassTypeId}/risks`);\r\n const rows: RiskByClass[] = await response.json();\r\n webFormRisksByRiskClassTypes = orderBy(rows.filter((x) => x.useOnWebFormsFlag), ['riskCode'], ['desc']);\r\n this.saveRefDataToLocalStorage('webFormRisksByRiskClassTypes', response, webFormRisksByRiskClassTypes, [riskClassTypeId]);\r\n }\r\n\r\n return webFormRisksByRiskClassTypes;\r\n }\r\n\r\n // No Caching added for homepage helpdesk\r\n async homepageHelpdesk(): Promise {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/refdata/helpdesk`);\r\n return await response.json();\r\n }\r\n\r\n // No Caching added for homepage urls\r\n async homepageUrls(): Promise {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/refdata/homepageurls`);\r\n const rows: HomepageUrl[] = await response.json();\r\n return rows.map((x) => ({id: x.homePageUrlId, label: x.description, url: x.url}));\r\n }\r\n\r\n async glPaymentStatusTypes(): Promise {\r\n return this.cachedLookup(\r\n 'glPaymentStatusTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/GlPaymentStatus`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n\r\n async glPaymentPartyTypes(): Promise {\r\n return this.cachedLookup(\r\n 'glPaymentPartyTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/GlPaymentParty`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async settleAllCreditTypes(): Promise {\r\n return this.cachedLookup(\r\n 'settleAllCreditTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/SettleAllCreditsOption`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async glSettlementTypes(): Promise {\r\n return this.cachedLookup(\r\n 'glSettlementTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/GlSettlementType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async insurerWorkfileTypes(): Promise {\r\n return this.cachedLookup(\r\n 'insurerWorkfileTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/InsurerWorkfileType`),\r\n (rows: RefDataDescription[]) => orderBy(rows.map(this.refDataToFieldValueDefinition), ['id'], ['desc'])\r\n );\r\n }\r\n\r\n async glWorkfileStatusTypes(): Promise {\r\n return this.cachedLookup(\r\n 'glWorkfileStatusTypes',\r\n () => this.http.fetch(environment.refData.glWorkfileStatusTypes.uri()),\r\n (rows: ApiRefDataResponse[]) => rows.filter(t => t.activeFlag).map((x) => ({id: x.id, label: x.description}))\r\n );\r\n }\r\n\r\n async divisionType(): Promise {\r\n return this.cachedLookup(\r\n 'divisionTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/Division`),\r\n (rows: ApiRefDataResponse[]) => rows.filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async glBatchStatusTypes(): Promise {\r\n return this.cachedLookup(\r\n 'glBatchStatusTypes',\r\n () => this.http.fetch(environment.refData.glBatchStatusTypes.uri()),\r\n (rows: ApiRefDataResponse[]) => rows.filter(t => t.activeFlag).map((x) => ({id: x.id, label: x.description}))\r\n );\r\n }\r\n\r\n async knowYourClientTypes(): Promise {\r\n return this.cachedLookup(\r\n 'knowYourClientTypes',\r\n () => this.http.fetch(environment.refData.knowYourClientTypes.uri()),\r\n (rows: ApiRefDataResponse[]) => rows.filter(t => t.activeFlag).map((x) => ({id: x.id, label: x.description}))\r\n );\r\n }\r\n\r\n async vulnerabilityTypes(): Promise {\r\n return this.cachedLookup(\r\n 'vulnerabilityTypes',\r\n () => this.http.fetch(environment.refData.vulnerableClientTypes.uri()),\r\n (rows: VulnerableClientType[]) => rows.map((x) => ({id: x.vulnerableClientTypeId, label: `${x.vulnerableClientType}${x.synopsis ? ' - ' + x.synopsis : ''}`}))\r\n );\r\n }\r\n\r\n async webFormStatus(): Promise {\r\n let webFormStatusTypes = this.getRefDataFromLocalStorage('webFormStatus');\r\n\r\n if (!webFormStatusTypes) {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/refdata/WebFormStatus`);\r\n const rows: RefDataDescription[] = await response.json();\r\n webFormStatusTypes = rows.map(this.refDataToFieldValueDefinition);\r\n this.saveRefDataToLocalStorage('claimStatus', response, webFormStatusTypes);\r\n }\r\n\r\n return webFormStatusTypes;\r\n }\r\n\r\n async soaTypes(): Promise {\r\n return this.cachedLookup(\r\n 'soaTypes',\r\n () => this.http.fetch(environment.refData.soaTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map((x) => ({id: x.id, label: x.description}))\r\n );\r\n }\r\n\r\n async premiumFunderStatusActionTypes(): Promise {\r\n return this.cachedLookup(\r\n 'premiumFunderStatusActionTypes',\r\n () => this.http.fetch(environment.refData.premiumFunderStatusActionTypes.uri()),\r\n (rows: PremiumFunderStatusActionDetail[]) => rows.map((x) => ({id: x.premiumFunderStatusActionId, label: `${x.premumFunderStatus} - ${x.premiumFunderStatusAction}` }))\r\n );\r\n }\r\n\r\n async redPlanetStatusTypes(): Promise {\r\n return this.cachedLookup(\r\n 'redPlanetStatusTypes',\r\n () => this.http.fetch(environment.refData.redPlanetStatusTypes.uri()),\r\n (rows: RedPlanetStatus[]) => rows.map((x) => ({id: x.redPlanetStatusId, label: x.status }))\r\n );\r\n }\r\n\r\n async standardWordingTypes(): Promise {\r\n return this.cachedLookup(\r\n 'standardWordingTypes',\r\n () => this.http.fetch(environment.refData.standardWordingTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async additionalPageTemplateCategoryTypes(): Promise {\r\n return this.cachedLookup(\r\n 'additionalPageTemplateCategoryTypes',\r\n () => this.http.fetch(environment.refData.additionalPageTemplateCategoryTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async redPlanetInvoiceNumberFormatTypes(): Promise {\r\n return this.cachedLookup(\r\n 'redPlanetInvoiceNumberFormatTypes',\r\n () => this.http.fetch(environment.refData.redPlanetInvoiceNumberFormatTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async financialServicesGuideTypes(): Promise {\r\n return this.cachedLookup(\r\n 'financialServicesGuideTypes',\r\n () => this.http.fetch(environment.refData.financialServicesGuideTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async insurerTypes(): Promise {\r\n return this.cachedLookup(\r\n 'insurerTypes',\r\n () => this.http.fetch(environment.refData.insurerTypes.uri()),\r\n (rows: InsurerRef[]) => rows.map((x) => ({id: x.insurerId, label: `${x.insurerCode} - ${x.insurerName}`, paysOverrider: x.paysOverride }))\r\n );\r\n }\r\n\r\n async insurerOfficeTypes(insurerId: number): Promise {\r\n let insurerOfficeTypes = this.getRefDataFromLocalStorage('insurerOfficeTypes');\r\n\r\n if (!insurerOfficeTypes) {\r\n const endpoint = environment.refData.insurerOffices;\r\n const uri = endpoint.uri([insurerId]);\r\n const response = await this.http.fetch(uri);\r\n const rows: InsurerOffice[] = await response.json();\r\n insurerOfficeTypes = rows.map((x) => ({id: x.insurerOfficeId, label: `${x.insurerOfficeCode} - ${x.insurerOfficeName}` }));\r\n this.saveRefDataToLocalStorage('insurerOfficeTypes', response, insurerOfficeTypes, [insurerId]);\r\n }\r\n\r\n return insurerOfficeTypes;\r\n }\r\n\r\n async groupTypes(): Promise {\r\n return this.cachedLookup(\r\n 'groupTypes',\r\n () => this.http.fetch(environment.refData.groupTypes.uri()),\r\n (rows: SecurityGroup[]) => rows.map((x) => ({id: x.securityGroupId, label: x.name}))\r\n );\r\n }\r\n\r\n async partyInstanceTypes(): Promise {\r\n return this.cachedLookup(\r\n 'partyInstanceTypes',\r\n () => this.http.fetch(environment.refData.partyInstanceTypes.uri()),\r\n (rows: ApiRefDataResponse[]) => rows\r\n );\r\n }\r\n\r\n async apraClassTypes(): Promise {\r\n return this.cachedLookup(\r\n 'apraClassTypes',\r\n () => this.http.fetch(environment.refData.apraClassTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n // No Caching added for scheme types - used in admin\r\n async schemeTypesByRiskClassTypeId(riskClassTypeId: number): Promise {\r\n const endpoint = environment.refData.schemeTypesByRiskClassTypeId;\r\n const uri = endpoint.uri([riskClassTypeId]);\r\n const response = await this.http.fetch(uri);\r\n const rows: RefDataDescription[] = await response.json();\r\n return rows.map(this.refDataToFieldValueDefinition);\r\n }\r\n\r\n // No Caching added for red planet types - used in admin\r\n async redPlanetRiskTypesByPremiumFunderId(premiumFunderId: number): Promise {\r\n const endpoint = environment.refData.redPlanetRiskTypesByPremiumFunderId;\r\n const uri = endpoint.uri([premiumFunderId]);\r\n const response = await this.http.fetch(uri);\r\n const rows: RedPlanetRisk[] = await response.json();\r\n return rows.map((x) => ({id: x.redPlanetRiskId, label: `${x.redPlanetRiskCode} - ${x.redPlanetRiskName}`}));\r\n }\r\n\r\n // No Caching added for red planet sub status types - used in admin\r\n async redPlanetSubStatusTypesByPremiumFunderId(premiumFunderId: number): Promise {\r\n const endpoint = environment.refData.redPlanetSubStatusTypesByPremiumFunderId;\r\n const uri = endpoint.uri([premiumFunderId]);\r\n const response = await this.http.fetch(uri);\r\n const rows: RedPlanetSubStatus[] = await response.json();\r\n return rows.map((x) => ({id: x.redPlanetSubStatusId, label: `${x.redPlanetStatus} - ${x.redPlanetSubStatus}`}));\r\n }\r\n\r\n // No Caching added for template types - used in admin\r\n async templateTypes(): Promise {\r\n const endpoint = environment.refData.templateTypes;\r\n const uri = endpoint.uri();\r\n const response = await this.http.fetch(uri);\r\n const rows: NamedRef[] = await response.json();\r\n return rows.map((x) => ({id: x.id, label: x.name}));\r\n }\r\n\r\n // No Caching added for template categories - used in admin\r\n async templateCategoryTypes(): Promise {\r\n const endpoint = environment.refData.templateCategoryTypes;\r\n const uri = endpoint.uri();\r\n const response = await this.http.fetch(uri);\r\n const rows: NamedRef[] = await response.json();\r\n return rows.map((x) => ({id: x.id, label: x.name}));\r\n }\r\n\r\n // No Caching added for html template Types - used in admin\r\n async htmlTemplateTypes(): Promise {\r\n const endpoint = environment.refData.htmlTemplateTypes;\r\n const uri = endpoint.uri();\r\n const response = await this.http.fetch(uri);\r\n const rows: NamedRef[] = await response.json();\r\n return rows.map((x) => ({id: x.id, label: x.name}));\r\n }\r\n\r\n async PlTermFromTypes(): Promise {\r\n return this.cachedLookup(\r\n 'PlTermFromTypes',\r\n () => this.http.fetch(environment.refData.PlTermFromTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n\r\n\r\n async mailSortCodeTypes(): Promise {\r\n return this.cachedLookup(\r\n 'mailSortCodeTypes',\r\n () => this.http.fetch(environment.refData.mailSortCodeTypes.uri()),\r\n (rows: CodeNameRef[]) => rows.map((x) => ({id: x.id, label: x.name}))\r\n );\r\n }\r\n\r\n async stateTypes(): Promise {\r\n return this.cachedLookup(\r\n 'stateTypes',\r\n () => this.http.fetch(environment.refData.stateTypes.uri()),\r\n (rows: CodeNameRef[]) => rows.map((x) => ({id: x.id, label: x.name}))\r\n );\r\n }\r\n\r\n async stampDutyRegionTypes(): Promise {\r\n return this.cachedLookup(\r\n 'stampDutyRegionTypes',\r\n () => this.http.fetch(environment.refData.stampDutyRegionTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async fslRegionTypes(): Promise {\r\n return this.cachedLookup(\r\n 'fslRegionTypes',\r\n () => this.http.fetch(environment.refData.fslRegionTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async messagePriorityTypes(): Promise {\r\n return this.cachedLookup(\r\n 'messagePriorityTypes',\r\n () => this.http.fetch(environment.refData.messagePriorityTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async messageSourceTypes(): Promise {\r\n return this.cachedLookup(\r\n 'messageSourceTypes',\r\n () => this.http.fetch(environment.refData.messageSourceTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async plTermTypes(): Promise {\r\n let plTermTypes = this.getRefDataFromLocalStorage('plTermTypes');\r\n\r\n if (!plTermTypes) {\r\n const endpoint = environment.refData.plTermTypes;\r\n const uri = endpoint.uri();\r\n const response = await this.http.fetch(uri);\r\n const rows: RefDataDescription[] = await response.json();\r\n plTermTypes = orderBy(rows.map(this.refDataToFieldValueDefinition), ['label'], ['asc']);;\r\n this.saveRefDataToLocalStorage('plTermTypes', response, plTermTypes);\r\n }\r\n return plTermTypes;\r\n }\r\n\r\n async electronicBankingFileTypes(): Promise {\r\n return this.cachedLookup(\r\n 'electronicBankingFileTypes',\r\n () => this.http.fetch(environment.refData.electronicBankingFileTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.filter((x) => x.id !=600000001).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async socialMediaTypes(): Promise {\r\n return this.cachedLookup(\r\n 'socialMediaTypes',\r\n () => this.http.fetch(environment.refData.socialMediaTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async branchLocationTypes(): Promise {\r\n return this.cachedLookup(\r\n 'branchLocationTypes',\r\n () => this.http.fetch(environment.refData.branchLocationTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async branchTypes(): Promise {\r\n let branchTypes = this.getRefDataFromLocalStorage('branchTypes');\r\n\r\n if (!branchTypes) {\r\n const endpoint = environment.refData.branchTypes;\r\n const uri = endpoint.uri();\r\n const response = await this.http.fetch(uri);\r\n const rows: RefDataDescription[] = await response.json();\r\n branchTypes = rows.map(this.refDataToFieldValueDefinition).filter((x) => x.id != 1 && x.id != 2 );;\r\n this.saveRefDataToLocalStorage('branchTypes', response, branchTypes);\r\n }\r\n return branchTypes;\r\n }\r\n\r\n async underwriterTypes(): Promise {\r\n return this.cachedLookup(\r\n 'UnderwriterTypes',\r\n () => this.http.fetch(environment.refData.underwriterTypes.uri()),\r\n (rows: UnderwriterRef[]) => rows\r\n );\r\n }\r\n\r\n async bankBranchTypes(): Promise {\r\n return this.cachedLookup(\r\n 'BankBranchTypes',\r\n () => this.http.fetch(environment.refData.BankBranchTypes.uri()),\r\n (rows: BankBranch[]) => rows\r\n );\r\n }\r\n\r\n async claimsPayingRatingStructureTypes(): Promise {\r\n return this.cachedLookup(\r\n 'ClaimsPayingRatingStructureTypes',\r\n () => this.http.fetch(environment.refData.ClaimsPayingRatingStructureTypes.uri()),\r\n (rows: ClaimsPayingRatingStructure[]) => rows\r\n );\r\n }\r\n\r\n async claimsPayingRatingSourceTypes(): Promise {\r\n return this.cachedLookup(\r\n 'claimsPayingRatingSourceTypes',\r\n () => this.http.fetch(environment.refData.ClaimsPayingRatingSourceTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async referralTypes(): Promise {\r\n return this.cachedLookup(\r\n 'referralTypes',\r\n () => this.http.fetch(environment.refData.referralTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async adviserTypes(): Promise {\r\n return this.cachedLookup(\r\n 'adviserTypes',\r\n () => this.http.fetch(environment.refData.adviserTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n async authorisationReasons(): Promise {\r\n let authorisationReasons = this.getRefDataFromLocalStorage('authorisationReasons');\r\n\r\n if (!authorisationReasons) {\r\n const endpoint = environment.refData.authorisationReasons;\r\n const uri = endpoint.uri();\r\n const response = await this.http.fetch(uri);\r\n const rows: RefDataDescription[] = await response.json();\r\n authorisationReasons = rows.map(this.refDataToFieldValueDefinition);\r\n this.saveRefDataToLocalStorage('adviserTypes', response, authorisationReasons);\r\n }\r\n\r\n return authorisationReasons;\r\n }\r\n\r\n async titleTypes(): Promise {\r\n return this.cachedLookup(\r\n 'titleTypes',\r\n () => this.http.fetch(environment.refData.titleTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async actionTypes(): Promise {\r\n let actionTypes = this.getRefDataFromLocalStorage('actionTypes');\r\n\r\n if (!actionTypes) {\r\n const endpoint = environment.refData.actionTypes;\r\n const uri = endpoint.uri();\r\n const response = await this.http.fetch(uri);\r\n const rows: RefDataDescription[] = await response.json();\r\n actionTypes = orderBy(rows.map(this.refDataToFieldValueDefinition), ['label'], ['asc']);;\r\n this.saveRefDataToLocalStorage('actionTypes', response, actionTypes);\r\n }\r\n return actionTypes;\r\n }\r\n\r\n async referralCalculationMethods(): Promise {\r\n let referralCalculationMethods = this.getRefDataFromLocalStorage('referralCalculationMethods');\r\n\r\n if (!referralCalculationMethods) {\r\n const endpoint = environment.refData.referralCalculationMethods;\r\n const uri = endpoint.uri();\r\n const response = await this.http.fetch(uri);\r\n const rows: RefDataDescription[] = await response.json();\r\n referralCalculationMethods = orderBy(rows.map(this.refDataToFieldValueDefinition), ['label'], ['asc']);;\r\n this.saveRefDataToLocalStorage('referralCalculationMethods', response, referralCalculationMethods);\r\n }\r\n return referralCalculationMethods;\r\n }\r\n\r\n async bankAccountTypes(): Promise {\r\n return this.cachedLookup(\r\n 'bankAccountTypes',\r\n () => this.http.fetch(environment.refData.bankAccountTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async taxStatusTypes(): Promise {\r\n return this.cachedLookup(\r\n 'taxStatusTypes',\r\n () => this.http.fetch(environment.refData.taxStatusTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async settlementTypes(): Promise {\r\n return this.cachedLookup(\r\n 'settlementTypes',\r\n () => this.http.fetch(environment.refData.settlementTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async insurerCategoryTypes(): Promise {\r\n return this.cachedLookup(\r\n 'insurerCategoryTypes',\r\n () => this.http.fetch(environment.refData.insurerCategoryTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n // Filter BPay (600000002) & Credit Card (600000003)\r\n async paymentOutType(): Promise {\r\n return this.cachedLookup(\r\n 'paymentOutType',\r\n () => this.http.fetch(environment.refData.paymentOutType.uri()),\r\n (rows: PaymentOutType[]) => rows.filter((x) => x.id !== 600000002 && x.id !== 600000003).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n // only use on Client Settlements in iAccounts\r\n async paymentOutTypeAll(): Promise {\r\n return this.cachedLookup(\r\n 'paymentOutTypeAll',\r\n () => this.http.fetch(environment.refData.paymentOutType.uri()),\r\n (rows: PaymentOutType[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n // only use on Settlement Request modal in iAdviser\r\n async paymentOutTypeUseOnSettlementRequest(): Promise {\r\n return this.cachedLookup(\r\n 'paymentOutTypeUseOnSettlementRequest',\r\n () => this.http.fetch(environment.refData.paymentOutType.uri()),\r\n (rows: PaymentOutType[]) => rows.filter((x) => x.useOnSettlementRequest).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async activityTypes(): Promise {\r\n return this.cachedLookup(\r\n 'activityTypes',\r\n () => this.http.fetch(environment.refData.activityTypes.uri()),\r\n (rows: DocumentActivityType[]) => rows.map((a) => ({ id: a.entityDocumentActivityTypeId, label: a.activityType }))\r\n );\r\n }\r\n\r\n async taskCategoryTypes(): Promise {\r\n return this.cachedLookup(\r\n 'taskCategoryTypes',\r\n () => this.http.fetch(environment.refData.taskCategoryTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async taskPriorityTypes(): Promise {\r\n return this.cachedLookup(\r\n 'taskPriorityTypes',\r\n () => this.http.fetch(environment.refData.taskPriorityTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async userDetail(): Promise {\r\n return this.cachedLookup(\r\n 'userDetail',\r\n () => this.http.fetch(environment.applicationHomeEndpoints.userDetail.uri()),\r\n (detail: UserDetail) => detail\r\n );\r\n }\r\n\r\n async journalType(): Promise {\r\n return this.cachedLookup(\r\n 'journalType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/GlJournalType`),\r\n (rows: RefDataDescription[]) => orderBy(rows.map(this.refDataToFieldValueDefinition), ['label'], ['asc'])\r\n );\r\n }\r\n\r\n async salesStatusType(): Promise {\r\n return this.cachedLookup(\r\n 'salesStatusType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/SalesStatusType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async salesRatingType(): Promise {\r\n return this.cachedLookup(\r\n 'salesRatingType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/SalesRatingType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async fieldTypes(fieldType: FieldType, partyInstanceId: number): Promise {\r\n let localTypes = this.getRefDataFromLocalStorage(`${partyInstanceId}__${fieldType}Type`, partyInstanceId);\r\n\r\n if (!localTypes) {\r\n const response = await this.http.fetch(\r\n `${environment.apiHost}/api/refdata/${fieldType}types/${partyInstanceId}`\r\n );\r\n\r\n // Email and website come back as eAddressTypeId, etc so we have to check\r\n const keyPrefix: FieldTypeKeyPrefix = (fieldType === 'email' || fieldType === 'website') ? 'eAddress' : fieldType;\r\n\r\n const typeIdKey: `${FieldTypeKeyPrefix}TypeId` = `${keyPrefix}TypeId`;\r\n const typeKey: `${FieldTypeKeyPrefix}Type` = `${keyPrefix}Type`;\r\n const mandatoryKey = 'mandatoryFlag';\r\n\r\n const rows: FieldTypeRow[] = await response.json();\r\n localTypes = rows\r\n .map((obj) => ({ id: obj[typeIdKey], label: obj[typeKey], mandatory: obj[mandatoryKey] }));\r\n\r\n this.saveRefDataToLocalStorage(`${partyInstanceId}__${fieldType}Type`, response, localTypes, partyInstanceId);\r\n }\r\n\r\n return localTypes;\r\n }\r\n\r\n async adviser(companyOfficeId?: number): Promise {\r\n if (companyOfficeId > 0) {\r\n let advisers = this.getRefDataFromLocalStorage('adviser', companyOfficeId);\r\n\r\n if (!advisers) {\r\n const response = await this.http.fetch(\r\n `${environment.apiHost}/api/refdata/companyoffices/${companyOfficeId}/advisers`\r\n );\r\n const rows: OfficeAdviser[] = await response.json();\r\n advisers = rows.map(({ adviserId, adviserCode, adviserName }) => ({\r\n id: adviserId,\r\n code: parseInt(adviserCode),\r\n label: `${adviserCode} - ${adviserName}`\r\n })).sort((a, b) => a.code - b.code);\r\n\r\n this.saveRefDataToLocalStorage('adviser', response, advisers, companyOfficeId);\r\n }\r\n\r\n return advisers;\r\n } else {\r\n return Promise.resolve([\r\n {\r\n 'id': undefined,\r\n 'label': 'lookups:pleaseSelectOffice'\r\n }\r\n ]);\r\n }\r\n }\r\n\r\n async insurerUnderwriters(insurerId: number, validUnderwriterProcessTypeIds: string = undefined): Promise {\r\n if (insurerId <= 0) return;\r\n let underwriters: Underwriter[] = this.getRefDataFromLocalStorage('insurerUnderwriters', insurerId);\r\n\r\n let uri = `${environment.apiHost}/api/refdata/insurers/${insurerId}/underwriters`\r\n\r\n if(validUnderwriterProcessTypeIds){\r\n uri += `?underwriterProcessTypeIds=${validUnderwriterProcessTypeIds}`\r\n }\r\n\r\n if (!underwriters) {\r\n const response = await this.http.fetch(uri);\r\n if (!response.ok) return;\r\n\r\n underwriters = await response.json();\r\n this.saveRefDataToLocalStorage('insurerUnderwriters', response, underwriters, insurerId);\r\n }\r\n return underwriters;\r\n }\r\n\r\n async insurerProcessType(): Promise {\r\n return this.cachedLookup(\r\n 'insurerProcessType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/InsurerProcessType`),\r\n (rows: ApiRefDataResponse[]) => rows\r\n .filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async insurerType(): Promise {\r\n return this.cachedLookup(\r\n 'insurerType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/InsurerType`),\r\n (rows: ApiRefDataResponse[]) => rows\r\n .filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n // No Caching added for insurer groups - used in admin\r\n async insurerGroup(): Promise {\r\n const endpoint = environment.refData.insurerGroups;\r\n const uri = endpoint.uri();\r\n const response = await this.http.fetch(uri);\r\n const rows: ApiRefDataResponse[] = await response.json();\r\n return rows\r\n .filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition);\r\n }\r\n\r\n // No Caching added for risk group types - used in admin\r\n async riskGroupType(): Promise {\r\n const endpoint = environment.refData.riskGroupTypes;\r\n const uri = endpoint.uri();\r\n const response = await this.http.fetch(uri);\r\n const rows: ApiRefDataResponse[] = await response.json();\r\n return rows\r\n .filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition);\r\n }\r\n\r\n async paymentType(activeOnly = false): Promise {\r\n const localStorageKey = activeOnly ? 'activePaymentTypes' : 'allPaymentTypes';\r\n let paymentTypes = this.getRefDataFromLocalStorage(localStorageKey);\r\n\r\n if (!paymentTypes) {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/refdata/GlPaymentType`);\r\n\r\n const rows: ApiRefDataResponse[] = await response.json();\r\n const selected = activeOnly ? rows.filter(t => t.activeFlag) : rows;\r\n\r\n paymentTypes = orderBy(selected.map(this.refDataToFieldValueDefinition), ['label'], ['asc']);\r\n this.saveRefDataToLocalStorage(localStorageKey, response, paymentTypes);\r\n }\r\n\r\n return paymentTypes;\r\n }\r\n\r\n\r\n async businessEntityType(): Promise {\r\n return this.cachedLookup(\r\n 'businessEntityType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/BusinessEntityType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async quoteStatusType(): Promise {\r\n return this.cachedLookup(\r\n 'quoteStatusType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/QtQuoteStatusType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async paymentStatus(): Promise {\r\n return this.cachedLookup(\r\n 'paymentStatus',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/PlPaymentStatus`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async anzsicType(): Promise {\r\n let anzsicTypes = this.getRefDataFromLocalStorage('anzsicType');\r\n\r\n if (!anzsicTypes) {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/refdata/AnzsicType`);\r\n const rows: RefDataDescription[] = await response.json();\r\n anzsicTypes = orderBy(rows.map(this.refDataToFieldValueDefinition), ['label'], ['asc']);;\r\n this.saveRefDataToLocalStorage('anzsicType', response, anzsicTypes);\r\n }\r\n\r\n return anzsicTypes;\r\n }\r\n\r\n async riskClassType(): Promise {\r\n return this.cachedLookup(\r\n 'riskClassType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/RiskClassType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async activeRiskClassTypes(): Promise {\r\n return this.cachedLookup(\r\n 'activeRiskClassTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/RiskClassType`),\r\n (rows: ApiRefDataResponse[]) => rows.filter((x) =>x .activeFlag).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async risksByRiskClassType(riskClassTypeId: number): Promise {\r\n let risksByRiskClassType = this.getRefDataFromLocalStorage('risksByRiskClassType');\r\n\r\n if (!risksByRiskClassType) {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/refdata/RiskClassType/${riskClassTypeId}/risks`);\r\n const rows: RiskByClass[] = await response.json();\r\n risksByRiskClassType = rows.map((x) => ({id: x.riskByClassId, label: `${x.riskCode} - ${x.riskName}`}));\r\n this.saveRefDataToLocalStorage('risksByRiskClassType', response, risksByRiskClassType, [riskClassTypeId]);\r\n }\r\n\r\n return risksByRiskClassType;\r\n }\r\n\r\n async riskByClassTypes(): Promise {\r\n return this.cachedLookup(\r\n 'riskByClassTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/RisksByClass`),\r\n (rows: RiskByClass[]) => rows.map((x) => ({id: x.riskByClassId, label: `${x.riskCode} - ${x.riskName}`}))\r\n );\r\n }\r\n\r\n async clientCategory(): Promise {\r\n return this.cachedLookup(\r\n 'clientCategory',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/ClientCategory`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async clientDisclosureType(): Promise {\r\n return this.cachedLookup(\r\n 'clientDisclosureType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/ClientDisclosureType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async clientRole(): Promise {\r\n return this.cachedLookup(\r\n 'clientRole',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/ClientRole`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async clientType(): Promise {\r\n return this.cachedLookup(\r\n 'clientType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/ClientType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async companyOffice(): Promise {\r\n return this.cachedLookup(\r\n 'companyOffice',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/companyoffices`),\r\n (rows: CompanyOffice[]) => rows.map(c => ({\r\n id: c.companyOfficeId,\r\n code: parseInt(c.companyOfficeCode),\r\n label: `${c.companyOfficeCode} - ${c.companyOfficeName}`\r\n })).sort((a, b) => a.code - b.code)\r\n );\r\n }\r\n\r\n async countryCode(): Promise {\r\n return this.cachedLookup(\r\n 'countryCode',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/countries`),\r\n (rows: Country[]) => rows.map(c => ({\r\n id: c.countryCode,\r\n label: c.countryName\r\n }))\r\n );\r\n }\r\n\r\n async countryTypes(): Promise {\r\n return this.cachedLookup(\r\n 'countryTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/countries`),\r\n (rows: Country[]) => rows.map(c => ({\r\n id: c.countryId,\r\n label: c.countryName\r\n }))\r\n );\r\n }\r\n\r\n async distributionType(): Promise {\r\n return this.cachedLookup(\r\n 'distributionType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/DistributionType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async financialServicesGuideType(): Promise {\r\n return this.cachedLookup(\r\n 'financialServicesGuideType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/FinancialServicesGuideType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async introductionType(): Promise {\r\n return this.cachedLookup(\r\n 'introductionType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/IntroductionType`),\r\n (rows: ApiRefDataResponse[]) => rows.filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async noteType(): Promise {\r\n return this.cachedLookup(\r\n 'noteType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/NoteType`),\r\n (rows: ApiRefDataResponse[]) => orderBy(rows.filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition), ['label'], ['asc'])\r\n );\r\n }\r\n\r\n async declineType(): Promise {\r\n return this.cachedLookup(\r\n 'declineType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/DeclineType`),\r\n (rows: ApiRefDataResponse[]) => rows\r\n .filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async proposalStatus(): Promise {\r\n return this.cachedLookup(\r\n 'proposalStatus',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/ProposalStatus`),\r\n (rows: ApiRefDataResponse[]) => rows\r\n .filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async systemParameters(): Promise {\r\n return this.cachedLookup(\r\n 'systemParameters',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/parameters`),\r\n (parameters: SystemParameters) => parameters\r\n );\r\n }\r\n\r\n async verbalPrivacyStatement(): Promise {\r\n return this.cachedLookup(\r\n 'verbalPrivacyStatement',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/parameters/verbalprivacystatement`),\r\n (text: string) => text\r\n );\r\n }\r\n\r\n async verbalFsgStatement(): Promise {\r\n return this.cachedLookup(\r\n 'verbalFsgStatement',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/parameters/verbalfsgstatement`),\r\n (text: string) => text\r\n );\r\n }\r\n\r\n async verbalFsgStatementHtml(): Promise {\r\n return this.cachedLookup(\r\n 'verbalFsgStatementHtml',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/parameters/verbalfsgstatement/html`),\r\n (text: string) => text\r\n );\r\n }\r\n\r\n async lmiBiCalculatorLink(): Promise {\r\n return this.cachedLookup(\r\n 'lmiBiCalculatorLink',\r\n () => this.http.fetch(`${environment.apiHost}/api/lmi/bicalculator`),\r\n (text: string) => text\r\n );\r\n }\r\n\r\n async lmiRiskCoachLink(): Promise {\r\n return this.cachedLookup(\r\n 'lmiRiskCoachLink',\r\n () => this.http.fetch(`${environment.apiHost}/api/lmi/riskcoach`),\r\n (text: string) => text\r\n );\r\n }\r\n\r\n async lmiPolicyComparisonLink(): Promise {\r\n return this.cachedLookup(\r\n 'lmiPolicyComparisonLink',\r\n () => this.http.fetch(`${environment.apiHost}/api/lmi/policycomparison`),\r\n (text: string) => text\r\n );\r\n }\r\n\r\n async apiEndpoints(): Promise {\r\n let apiEndpoints: ApiEndpoints = this.getRefDataFromLocalStorage('apiEndpoints');\r\n const endpoint = environment.refData.endpoints;\r\n\r\n if (!apiEndpoints) {\r\n const response = await this.http.fetch(endpoint.uri());\r\n apiEndpoints = await response.json();\r\n this.saveRefDataToLocalStorage('apiEndpoints', response, apiEndpoints);\r\n }\r\n return apiEndpoints;\r\n }\r\n\r\n async entityActions(): Promise {\r\n return this.cachedLookup(\r\n 'entityActions',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/policyactions`),\r\n (rows: EntityAction[]) => rows.filter((x) => x.activeFlag)\r\n );\r\n }\r\n\r\n async entityReportingTypes(): Promise {\r\n return this.cachedLookup(\r\n 'entityReportingTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/policyreportingtypes`),\r\n (rows: EntityReportingType[]) => rows.filter((x) => x.activeFlag)\r\n );\r\n }\r\n\r\n async premiumFunderStatusTypes(): Promise {\r\n return this.cachedLookup(\r\n 'premiumFunderStatusTypes',\r\n () => this.http.fetch(environment.refData.premiumFunderStatusTypes.uri()),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async premiumFunderStatusActions(): Promise {\r\n return this.cachedLookup(\r\n 'premiumFunderStatusActions',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/premiumfunderstatusactions`),\r\n (rows: PremiumFunderStatusAction[]) => rows\r\n );\r\n }\r\n\r\n async premiumFunders(includeInactive = false): Promise {\r\n const localStorageKey = includeInactive ? 'allPremiumFunders' : 'activePremiumFunders';\r\n let premiumFunders: PremiumFunder[] = this.getRefDataFromLocalStorage(localStorageKey);\r\n\r\n if (!premiumFunders) {\r\n const response = await this.http.fetch(\r\n `${environment.apiHost}/api/refdata/premiumfunders?includeInactivePremiumFunders=${includeInactive}`\r\n );\r\n premiumFunders = await response.json();\r\n this.saveRefDataToLocalStorage(localStorageKey, response, premiumFunders);\r\n }\r\n return premiumFunders;\r\n }\r\n\r\n async surchargePayees(includeInactive = false): Promise {\r\n const localStorageKey = includeInactive ? 'allSurchargePayees' : 'activeSurchargePayees';\r\n let surchargePayees: SurchargePayee[] = this.getRefDataFromLocalStorage(localStorageKey);\r\n\r\n if (!surchargePayees) {\r\n const response = await this.http.fetch(\r\n `${environment.apiHost}/api/refdata/surchargePayees?includeInactiveSurchargePayees=${includeInactive}`\r\n );\r\n surchargePayees = await response.json();\r\n this.saveRefDataToLocalStorage(localStorageKey, response, surchargePayees);\r\n }\r\n return surchargePayees;\r\n }\r\n\r\n async allowableDocumentTypes(): Promise {\r\n return this.cachedLookup(\r\n 'allowableDocumentTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/docmgmt/allowabletypes`),\r\n (rows: AllowableDocumentType[]) => rows.filter(x => !x.synopsis.includes('System HTML'))\r\n );\r\n }\r\n\r\n async allowableDocumentTypesAll(): Promise {\r\n return this.cachedLookup(\r\n 'allowableDocumentTypesAll',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/docmgmt/allowabletypes`),\r\n (rows: AllowableDocumentType[]) => rows.filter(x => !x.synopsis.includes('System HTML Task'))\r\n );\r\n }\r\n\r\n async asicExemptionType(): Promise {\r\n return this.cachedLookup(\r\n 'asicExemptionType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/AsicExemptionType`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async aTypicalRiskClass(): Promise {\r\n return this.cachedLookup(\r\n 'aTypicalRiskClass',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/AtypicalRiskClass`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async customisedReason(): Promise {\r\n return this.cachedLookup(\r\n 'customisedReason',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/CustomisedReason`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async criminalRecordsStatement(): Promise {\r\n return this.cachedLookup(\r\n 'criminalRecordsStatement',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/parameters/criminalrecordsstatement`),\r\n (text: string) => text\r\n );\r\n }\r\n\r\n async referral(companyOfficeId?: number): Promise {\r\n if (companyOfficeId > 0) {\r\n let referrals = this.getRefDataFromLocalStorage('referral', companyOfficeId);\r\n\r\n if (!referrals) {\r\n const response = await this.http.fetch(\r\n `${environment.apiHost}/api/refdata/companyoffices/${companyOfficeId}/referrers`\r\n );\r\n const rows: OfficeReferrer[] = await response.json();\r\n referrals = rows.map(({ referralId, referralCode, referralName }) => ({\r\n id: referralId,\r\n label: `${referralCode} - ${referralName}`\r\n }));\r\n\r\n this.saveRefDataToLocalStorage('referral', response, referrals, companyOfficeId);\r\n }\r\n\r\n return referrals;\r\n } else {\r\n return Promise.resolve([\r\n {\r\n 'id': undefined,\r\n 'label': 'lookups:pleaseSelectOffice'\r\n }\r\n ]);\r\n }\r\n }\r\n\r\n async claimStatus(): Promise {\r\n return this.cachedLookup(\r\n 'claimStatus',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/ClClaimStatus`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async claimType(): Promise {\r\n return this.cachedLookup(\r\n 'claimType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/ClClaimType`),\r\n (rows: RefDataDescription[]) => orderBy(rows.map(this.refDataToFieldValueDefinition), ['label'], ['asc'])\r\n );\r\n }\r\n\r\n async claimEventTypes(): Promise {\r\n return this.cachedLookup(\r\n 'claimEventTypes',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/claimevents`),\r\n (rows: ClaimEvent[]) => rows.filter(t => t.activeFlag).map((x) => ({id: x.claimEventId, label: x.claimEvent}))\r\n );\r\n }\r\n\r\n async claimCategory(): Promise {\r\n return this.cachedLookup(\r\n 'claimCategory',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/claimcategories`),\r\n (rows: ClaimCategoryModel[]) => orderBy(rows, ['claimCategory'], ['asc'])\r\n );\r\n }\r\n\r\n async claimStatusActions(): Promise {\r\n return this.cachedLookup(\r\n 'claimStatusAction',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/claimstatusactions`),\r\n (rows: ClaimStatusActionModel[]) => orderBy(rows, ['claimStatusAction'], ['asc'])\r\n );\r\n }\r\n\r\n async licenceClasses(): Promise {\r\n return this.cachedLookup(\r\n 'licenceClasses',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/licenceClasses`),\r\n (rows: LicenceClassRefType[]) => rows\r\n );\r\n }\r\n\r\n async claimNoteType(): Promise {\r\n return this.cachedLookup(\r\n 'claimNoteType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/ClClaimNoteType`),\r\n (rows: ApiRefDataResponse[]) => orderBy(rows.filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition), ['label'], ['asc'])\r\n );\r\n }\r\n\r\n async claimPaymentType(): Promise {\r\n return this.cachedLookup(\r\n 'claimPaymentType',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/ClClaimPaymentType`),\r\n (rows: ApiRefDataResponse[]) => orderBy(rows.filter(t => t.activeFlag).map(this.refDataToFieldValueDefinition), ['label'], ['asc'])\r\n );\r\n }\r\n\r\n async get(refType: string): Promise {\r\n return this.cachedLookup(\r\n refType,\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/${refType}`),\r\n (rows: RefDataDescription[]) => rows.map(this.refDataToFieldValueDefinition)\r\n );\r\n }\r\n\r\n async users(companyOfficeId?: number): Promise {\r\n if (companyOfficeId > 0) {\r\n let users = this.getRefDataFromLocalStorage('user', companyOfficeId);\r\n\r\n if (!users) {\r\n const response = await this.http.fetch(\r\n `${environment.apiHost}/api/refdata/companyoffices/${companyOfficeId}/users`\r\n );\r\n const rows: OfficeUser[] = await response.json();\r\n users = rows.map(({ securityUsersId, fullName }) => ({\r\n id: securityUsersId,\r\n label: fullName\r\n }));\r\n\r\n this.saveRefDataToLocalStorage('user', response, users, companyOfficeId);\r\n }\r\n\r\n return users;\r\n } else {\r\n return Promise.resolve([\r\n {\r\n 'id': undefined,\r\n 'label': 'lookups:pleaseSelectOffice'\r\n }\r\n ]);\r\n }\r\n }\r\n\r\n async groups(): Promise {\r\n return this.cachedLookup(\r\n 'group',\r\n () => this.http.fetch(\r\n `${environment.apiHost}/api/admin/user/groups`\r\n ),\r\n (rows: UserGroup[]) => rows.map(({ id, name }) => ({\r\n id: id,\r\n label: name\r\n }))\r\n );\r\n }\r\n\r\n\r\n async financialAdviserTypes(): Promise {\r\n // Reading still expires stale entries, although this list always refreshes.\r\n this.getRefDataFromLocalStorage('financialAdviserType');\r\n const response = await this.http.fetch(\r\n `${environment.apiHost}/api/refdata/FinancialAdviserType`\r\n );\r\n const data: RefDataDescription[] = await response.json();\r\n const lst = data.map(this.refDataToFieldValueDefinition);\r\n this.saveRefDataToLocalStorage('financialAdviserType', response, lst);\r\n\r\n return lst;\r\n }\r\n\r\n async branchLocations(): Promise {\r\n return await this.adminRefData('companyoffice','locations');\r\n }\r\n\r\n async fsgType(): Promise {\r\n return await this.getValues('','FinancialServicesGuideType');\r\n }\r\n\r\n async adminRefData(controller:string, method:string): Promise {\r\n const results= await this.getValues(controller,method, 'admin')\r\n return results;\r\n }\r\n\r\n async advisers(): Promise {\r\n return this.cachedLookup(\r\n 'advisers',\r\n () => this.http.fetch(`${environment.apiHost}/api/refdata/advisers`),\r\n (rows: Adviser[]) => rows.map(c => {\r\n return {\r\n id: c.adviserId,\r\n code: c.companyOfficeCode,\r\n label: `${c.companyOfficeCode} - ${c.companyOfficeName}`,\r\n active: c.active,\r\n adviserCode: c.adviserCode,\r\n adviserName: c.adviserName,\r\n companyOfficeId: c.companyOfficeId\r\n };\r\n }).sort((a, b) => a.adviserName.toLowerCase().localeCompare(b.adviserName.toLowerCase()))\r\n );\r\n }\r\n\r\n async getValues(controller:string, method='', api='refdata'): Promise {\r\n // if (method==='') {throw('getValues called with blank method');}\r\n let items = this.getRefDataFromLocalStorage(method);\r\n if (!items) {\r\n const url=controller==='' ? `${environment.apiHost}/api/${api}/${method}`: `${environment.apiHost}/api/${api}/${controller}/${method}`;\r\n //console.log(`getValues ${url}`)\r\n const response = await this.http.fetch(\r\n url\r\n );\r\n const results: RefDataDescription[] = await response.json();\r\n items = results.map(({ id, description }) => ({\r\n id: id,\r\n label: description\r\n }));\r\n this.saveRefDataToLocalStorage(method, response, items);\r\n }\r\n return items;\r\n }\r\n\r\n async riskCriteria(): Promise {\r\n let riskCriteriaTypes = this.getRefDataFromLocalStorage('riskCriteria');\r\n\r\n if (!riskCriteriaTypes) {\r\n const endpoint = environment.reportEndpoints.reports.risk;\r\n const response = await this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n\r\n const rows: ReportRisk[] = await response.json();\r\n riskCriteriaTypes = rows;\r\n\r\n this.saveRefDataToLocalStorage('riskCriteria', response, riskCriteriaTypes);\r\n }\r\n\r\n return riskCriteriaTypes;\r\n }\r\n\r\n async riskGroupedByRiskCriteria(): Promise {\r\n let riskCriteriaTypes = this.getRefDataFromLocalStorage('riskGroupedByRiskCriteria');\r\n\r\n if (!riskCriteriaTypes) {\r\n const endpoint = environment.reportEndpoints.reports.riskGroupedByRisk;\r\n const response = await this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n\r\n const rows: ReportRisk[] = await response.json();\r\n riskCriteriaTypes = rows;\r\n\r\n this.saveRefDataToLocalStorage('riskGroupedByRiskCriteria', response, riskCriteriaTypes);\r\n }\r\n\r\n return riskCriteriaTypes;\r\n }\r\n\r\n async riskClassTypeCriteria(): Promise {\r\n let riskClassCriteriaTypes = this.getRefDataFromLocalStorage('riskClassTypeCriteria');\r\n\r\n if (!riskClassCriteriaTypes) {\r\n const endpoint = environment.reportEndpoints.reports.riskClassType;\r\n const response = await this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n\r\n const rows: ReportCriteriaItem[] = await response.json();\r\n riskClassCriteriaTypes = rows.sort((a, b) => a.id - b.id);\r\n\r\n this.saveRefDataToLocalStorage('riskClassTypeCriteria', response, riskClassCriteriaTypes);\r\n }\r\n\r\n return riskClassCriteriaTypes;\r\n }\r\n\r\n async premiumFunderTypes(): Promise {\r\n return this.cachedLookup(\r\n 'premiumFunderTypes',\r\n () => {\r\n const endpoint = environment.reportEndpoints.reports.premiumFunder;\r\n return this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n },\r\n (rows: ReportCriteriaItem[]) => rows.map((x) => ({id: x.id, label: x.code})).sort((a, b) => a.label.toLowerCase().localeCompare(b.label.toLowerCase()))\r\n );\r\n }\r\n\r\n async reportPremiumFunder(): Promise {\r\n let reportPremiumFunders = this.getRefDataFromLocalStorage('reportPremiumFunder');\r\n\r\n if (!reportPremiumFunders) {\r\n const endpoint = environment.reportEndpoints.reports.premiumFunder;\r\n const response = await this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n\r\n const rows: ReportCriteriaItem[] = await response.json();\r\n reportPremiumFunders = rows;\r\n\r\n this.saveRefDataToLocalStorage('reportPremiumFunder', response, reportPremiumFunders);\r\n }\r\n\r\n return reportPremiumFunders;\r\n }\r\n\r\n async underwriterCriteria(): Promise {\r\n let reportUnderwriters = this.getRefDataFromLocalStorage('reportUnderwriter');\r\n\r\n if (!reportUnderwriters) {\r\n const endpoint = environment.reportEndpoints.reports.underwriter;\r\n const response = await this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n\r\n const rows: ReportCriteriaItem[] = await response.json();\r\n reportUnderwriters = orderBy(rows, ['code'], ['asc']);\r\n\r\n this.saveRefDataToLocalStorage('reportUnderwriter', response, reportUnderwriters);\r\n }\r\n\r\n return reportUnderwriters;\r\n }\r\n\r\n async assignedTo(): Promise {\r\n let assignedTo = this.getRefDataFromLocalStorage('assignedTo');\r\n\r\n if (!assignedTo) {\r\n const endpoint = environment.reportEndpoints.reports.assignedTo;\r\n const response = await this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n\r\n const rows: ReportAssignee[] = await response.json();\r\n assignedTo = rows;\r\n\r\n this.saveRefDataToLocalStorage('assignedTo', response, assignedTo);\r\n }\r\n\r\n return assignedTo;\r\n }\r\n\r\n async allUsers(): Promise {\r\n let allUsers = this.getRefDataFromLocalStorage('allUsers');\r\n\r\n if (!allUsers) {\r\n const endpoint = environment.reportEndpoints.reports.allUsers;\r\n const response = await this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n\r\n const rows: ReportUser[] = await response.json();\r\n allUsers = rows;\r\n\r\n this.saveRefDataToLocalStorage('allUsers', response, allUsers);\r\n }\r\n\r\n return allUsers;\r\n }\r\n\r\n async reportingType(): Promise {\r\n let reportingTypes = this.getRefDataFromLocalStorage('reportingType');\r\n\r\n if (!reportingTypes) {\r\n const endpoint = environment.reportEndpoints.reports.reportingType;\r\n const response = await this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n\r\n const rows: ReportCriteriaItem[] = await response.json();\r\n reportingTypes = rows;\r\n\r\n this.saveRefDataToLocalStorage('reportingTypes', response, reportingTypes);\r\n }\r\n\r\n return reportingTypes;\r\n }\r\n\r\n async occupationCriteria(): Promise {\r\n let occupationTypes = this.getRefDataFromLocalStorage('occupationCriteria');\r\n\r\n if (!occupationTypes) {\r\n const endpoint = environment.reportEndpoints.reports.occupation;\r\n const response = await this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n\r\n const rows: ReportCriteriaItem[] = await response.json();\r\n occupationTypes = rows;\r\n\r\n this.saveRefDataToLocalStorage('occupationCriteria', response, occupationTypes);\r\n }\r\n\r\n return occupationTypes;\r\n }\r\n\r\n async referralCriteria(): Promise {\r\n return this.cachedLookup(\r\n 'referralCriteria',\r\n () => {\r\n const endpoint = environment.reportEndpoints.reports.referral;\r\n return this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n },\r\n (rows: ReportReferral[]) => rows\r\n );\r\n }\r\n\r\n async insurerCriteria(): Promise {\r\n let insurerTypes = this.getRefDataFromLocalStorage('insurerCriteria');\r\n\r\n if (!insurerTypes) {\r\n const endpoint = environment.reportEndpoints.reports.insurer;\r\n const response = await this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n\r\n const rows: ReportCriteriaItem[] = await response.json();\r\n insurerTypes = rows;\r\n\r\n insurerTypes.sort((a, b) => a.code.toLowerCase().localeCompare(b.code.toLowerCase()));\r\n\r\n this.saveRefDataToLocalStorage('insurerCriteria', response, insurerTypes);\r\n }\r\n\r\n return insurerTypes;\r\n }\r\n\r\n async insurerCategoryCriteria(): Promise {\r\n return this.cachedLookup(\r\n 'insurerCategoryCriteria',\r\n () => {\r\n const endpoint = environment.reportEndpoints.reports.insurerCategory;\r\n return this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n },\r\n (rows: InsurerCategoryItem[]) => rows.sort((a, b) => a.id - b.id)\r\n );\r\n }\r\n\r\n async branch(): Promise {\r\n let branches = this.getRefDataFromLocalStorage('branch');\r\n\r\n if (!branches) {\r\n const endpoint = environment.reportEndpoints.reports.branch;\r\n const response = await this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n\r\n const rows: ReportBranch[] = await response.json();\r\n branches = rows;\r\n\r\n branches.sort((a, b) => a.code.toLowerCase().localeCompare(b.code.toLowerCase()));\r\n\r\n this.saveRefDataToLocalStorage('branch', response, branches);\r\n }\r\n\r\n return branches;\r\n }\r\n\r\n async transtype(): Promise {\r\n return this.cachedLookup(\r\n 'transtype',\r\n () => {\r\n const endpoint = environment.reportEndpoints.reports.transtype;\r\n return this.http.fetch(endpoint.uri(), {\r\n method: endpoint.method\r\n });\r\n },\r\n (rows: ReportCriteriaItem[]) => rows\r\n );\r\n }\r\n\r\n async yesNo(): Promise {\r\n return Promise.resolve([\r\n {\r\n 'id': true,\r\n 'label': 'lookups:yes'\r\n },\r\n {\r\n 'id': false,\r\n 'label': 'lookups:no'\r\n }\r\n ]);\r\n }\r\n\r\n async searchType(): Promise {\r\n return Promise.resolve([\r\n {\r\n 'id': 'equals',\r\n 'label': 'lookups:equals'\r\n },\r\n {\r\n 'id': 'startsWith',\r\n 'label': 'lookups:startsWith',\r\n }, {\r\n 'id': 'endsWith',\r\n 'label': 'lookups:endsWith',\r\n },\r\n {\r\n 'id': 'like',\r\n 'label': 'lookups:like'\r\n }\r\n ]);\r\n }\r\n\r\n async activeInactive(): Promise {\r\n return Promise.resolve([\r\n {\r\n 'id': true,\r\n 'label': 'lookups:active'\r\n },\r\n {\r\n 'id': false,\r\n 'label': 'lookups:inactive'\r\n }\r\n ]);\r\n }\r\n\r\n async partyTypes(): Promise {\r\n return Promise.resolve([\r\n {\r\n 'id': 1,\r\n 'label': 'Person'\r\n },\r\n {\r\n 'id': 2,\r\n 'label': 'Organisation'\r\n }\r\n ]);\r\n }\r\n\r\n async completeIncomplete(): Promise {\r\n return Promise.resolve([\r\n {\r\n 'id': true,\r\n 'label': 'lookups:complete'\r\n },\r\n {\r\n 'id': false,\r\n 'label': 'lookups:incomplete'\r\n }\r\n ]);\r\n }\r\n\r\n async quarter(): Promise {\r\n return Promise.resolve([\r\n {\r\n 'id': 1,\r\n 'label': 'Q1'\r\n },\r\n {\r\n 'id': 2,\r\n 'label': 'Q2'\r\n },\r\n {\r\n 'id': 3,\r\n 'label': 'Q3'\r\n },\r\n {\r\n 'id': 4,\r\n 'label': 'Q4'\r\n }\r\n ]);\r\n }\r\n\r\n async month(): Promise {\r\n return Promise.resolve([\r\n {\r\n 'id': 'Jan',\r\n 'label': 'Jan'\r\n },\r\n {\r\n 'id': 'Feb',\r\n 'label': 'Feb'\r\n },\r\n {\r\n 'id': 'Mar',\r\n 'label': 'Mar'\r\n },\r\n {\r\n 'id': 'Apr',\r\n 'label': 'Apr'\r\n },\r\n {\r\n 'id': 'May',\r\n 'label': 'May'\r\n },\r\n {\r\n 'id': 'Jun',\r\n 'label': 'Jun'\r\n },\r\n {\r\n 'id': 'Jul',\r\n 'label': 'Jul'\r\n },\r\n {\r\n 'id': 'Aug',\r\n 'label': 'Aug'\r\n },\r\n {\r\n 'id': 'Sep',\r\n 'label': 'Sep'\r\n },\r\n {\r\n 'id': 'Oct',\r\n 'label': 'Oct'\r\n },\r\n {\r\n 'id': 'Nov',\r\n 'label': 'Nov'\r\n },\r\n {\r\n 'id': 'Dec',\r\n 'label': 'Dec'\r\n }\r\n ]);\r\n }\r\n\r\n private async cachedLookup(\r\n type: string,\r\n load: () => Promise,\r\n transform: (data: Data) => T\r\n ): Promise {\r\n const cached = this.getRefDataFromLocalStorage(type);\r\n if (cached) return cached;\r\n\r\n const response = await load();\r\n const data = transform(await response.json());\r\n this.saveRefDataToLocalStorage(type, response, data);\r\n return data;\r\n }\r\n\r\n refDataToFieldValueDefinition({ id, description }: { id: number, description: string }) {\r\n return {\r\n id,\r\n label: description\r\n };\r\n }\r\n\r\n buildLocalStorageKey(...parts: LookupKeyPart[]) {\r\n return `${LOCAL_STORAGE_KEY_PREFIX}_${parts.join('_')}`;\r\n }\r\n\r\n getExpiry(response: Response) {\r\n return response.headers.get(EXPIRY_HEADER);\r\n }\r\n\r\n saveRefDataToLocalStorage(type: string, response: Response, data: unknown, ...params: LookupKeyPart[]) {\r\n const localStorageKey = this.buildLocalStorageKey(type, ...params);\r\n\r\n const expiry = response.headers.get(EXPIRY_HEADER);\r\n\r\n this.storage.saveToLocalStorage(localStorageKey, { expiry, data });\r\n }\r\n\r\n getRefDataFromLocalStorage(type: string, ...params: LookupKeyPart[]): T | null {\r\n const localStorageKey = this.buildLocalStorageKey(type, ...params);\r\n\r\n try {\r\n const localStorageValue = this.storage.getFromLocalStorage(localStorageKey);\r\n\r\n if (localStorageValue) {\r\n const parsedData: { expiry: string | null, data: T } = localStorageValue;\r\n\r\n if (parsedData.expiry) {\r\n if (new Date().getTime() < new Date(parsedData.expiry).getTime()) {\r\n return parsedData.data;\r\n } else {\r\n localStorage.removeItem(localStorageKey);\r\n }\r\n }\r\n }\r\n return null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { AuthTokenEndpoint, ITokenResponse } from 'endpoints/auth/token-endpoint';\r\nimport { environment } from 'environment';\r\nimport { addDeviceTokenForUser, getDeviceTokenForUser } from 'resources/device-token-manager';\r\nimport { User } from '../models/user';\r\n\r\n@inject(AuthTokenEndpoint)\r\nexport class TokenService {\r\n private refreshRequest: Promise;\r\n\r\n constructor(private endpoint: AuthTokenEndpoint) {}\r\n\r\n async createAuthToken(user: User): Promise {\r\n const params = {};\r\n params['grant_type'] = user.webFormLinkCode ? 'web_form' : 'password';\r\n params['password_hashed'] = 'false';\r\n params['username'] = user.username;\r\n params['password'] = user.password;\r\n params['app_client_type'] = user.appClientType;\r\n params['app_client_instance'] = user.appClientInstance;\r\n params['client_id'] = environment.client;\r\n params['web_form_link_code'] = user.webFormLinkCode;\r\n\r\n const headers: Record = {};\r\n\r\n const deviceToken = getDeviceTokenForUser(user.username);\r\n if (deviceToken) {\r\n headers['X-Device-Token'] = deviceToken;\r\n }\r\n\r\n const { data, response } = await this.endpoint.fetch(undefined, params, null, headers);\r\n\r\n this.saveToken(data, user.webFormLinkCode ? sessionStorage : localStorage);\r\n\r\n if (response.headers.has('X-Password-Requires-Changing')) {\r\n const passwordRequiresChanging = response.headers.get('X-Password-Requires-Changing');\r\n localStorage.setItem('userRequiresPasswordChange', passwordRequiresChanging);\r\n }\r\n\r\n if (response.headers.has('X-Device-Id')) {\r\n const deviceId = response.headers.get('X-Device-Id');\r\n localStorage.setItem('deviceId', deviceId);\r\n }\r\n\r\n if (response.headers.has('X-Device-Token')) {\r\n const returnedDeviceToken = response.headers.get('X-Device-Token');\r\n addDeviceTokenForUser(user.username, returnedDeviceToken);\r\n }\r\n\r\n if (response.headers.has('X-2FA-Setup-Reqd')) {\r\n const twoFactorSetupRequired = response.headers.get('X-2FA-Setup-Reqd');\r\n localStorage.setItem('twoFactorSetupRequired', twoFactorSetupRequired);\r\n } else {\r\n /* istanbul ignore next */\r\n localStorage.removeItem('twoFactorSetupRequired');\r\n }\r\n\r\n if (response.headers.has('X-2FA-Code-Reqd')) {\r\n const twoFactorCodeRequired = response.headers.get('X-2FA-Code-Reqd');\r\n localStorage.setItem('twoFactorCodeRequired', twoFactorCodeRequired);\r\n } else {\r\n /* istanbul ignore next */\r\n localStorage.removeItem('twoFactorCodeRequired');\r\n }\r\n\r\n if (response.headers.has('X-Password-Expiry-Days')) {\r\n localStorage.setItem('daysUntilPasswordExpiry', response.headers.get('X-Password-Expiry-Days'));\r\n }\r\n\r\n if (response.headers.has('X-Licence-Acceptance-Reqd')) {\r\n localStorage.setItem('acceptLicenceAgreement', response.headers.get('X-Licence-Acceptance-Reqd'));\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /* istanbul ignore next */\r\n getAuthToken() {\r\n return this.getLocation('access_token').getItem('access_token');\r\n }\r\n\r\n /* istanbul ignore next */\r\n getRefreshToken() {\r\n return this.getLocation('refresh_token').getItem('refresh_token');\r\n }\r\n\r\n /* istanbul ignore next */\r\n getDeviceId() {\r\n return localStorage.getItem('deviceId');\r\n }\r\n\r\n /* istanbul ignore next */\r\n getDeviceTokens() {\r\n return localStorage.getItem('device_tokens');\r\n }\r\n\r\n /* istanbul ignore next */\r\n async refreshAuthToken() {\r\n if (this.refreshRequest) {\r\n return this.refreshRequest;\r\n }\r\n\r\n this.refreshRequest = this.requestRefreshedToken();\r\n try {\r\n return await this.refreshRequest;\r\n } finally {\r\n this.refreshRequest = undefined;\r\n }\r\n }\r\n\r\n private async requestRefreshedToken(): Promise {\r\n const storage = this.getLocation('refresh_token');\r\n const refreshToken = storage.getItem('refresh_token');\r\n\r\n const params = {};\r\n params['grant_type'] = 'refresh_token';\r\n params['client_id'] = environment.client;\r\n params['refresh_token'] = refreshToken;\r\n\r\n const result = (await this.endpoint.fetch(null, params)).data;\r\n\r\n if (storage.getItem('refresh_token') !== refreshToken) {\r\n throw new Error('Session changed during token refresh');\r\n }\r\n\r\n this.saveToken(result, storage);\r\n\r\n return result;\r\n }\r\n\r\n saveToken(token, storage) {\r\n storage.setItem('access_token', token.access_token);\r\n storage.setItem('refresh_token', token.refresh_token);\r\n storage.setItem('access_token_expiry', token['.expires']);\r\n }\r\n\r\n removeToken() {\r\n const storage = this.getLocation('access_token');\r\n\r\n storage.removeItem('access_token');\r\n storage.removeItem('refresh_token');\r\n storage.removeItem('access_token_expiry');\r\n }\r\n\r\n getLocation(key: string) {\r\n let storage = localStorage;\r\n\r\n if (sessionStorage.getItem(key)) {\r\n storage = sessionStorage;\r\n }\r\n\r\n return storage;\r\n }\r\n}\r\n","/*\r\n * An implementation of the Appender interface.\r\n */\r\nexport class ConsoleAppender {\r\n /**\r\n * Appends a debug log.\r\n *\r\n * @param logger The source logger.\r\n * @param rest The data to log.\r\n */\r\n debug(logger: { id: string }, ...rest: any[]): void {\r\n console.debug(`DEBUG [${logger.id}]`, ...rest);\r\n }\r\n\r\n /**\r\n * Appends an info log.\r\n *\r\n * @param logger The source logger.\r\n * @param rest The data to log.\r\n */\r\n info(logger: { id: string }, ...rest: any[]): void {\r\n console.info(`INFO [${logger.id}]`, ...rest);\r\n }\r\n\r\n /**\r\n * Appends a warning log.\r\n *\r\n * @param logger The source logger.\r\n * @param rest The data to log.\r\n */\r\n warn(logger: { id: string }, ...rest: any[]): void {\r\n console.warn(`WARN [${logger.id}]`, ...rest);\r\n }\r\n\r\n /**\r\n * Appends an error log.\r\n *\r\n * @param logger The source logger.\r\n * @param rest The data to log.\r\n */\r\n error(logger: { id: string }, ...rest: any[]): void {\r\n console.error(`ERROR [${logger.id}]`, ...rest);\r\n }\r\n}\r\n","import { Aurelia } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { ValidationMessageProvider } from 'aurelia-validation';\r\n\r\nexport function i18tnValidation(aurelia: Aurelia) {\r\n const originalGetMessage = ValidationMessageProvider.prototype.getMessage;\r\n const originalGetDisplayName = ValidationMessageProvider.prototype.getDisplayName;\r\n ValidationMessageProvider.prototype.getMessage = function (key) {\r\n const i18n = aurelia.container.get(I18N);\r\n const translation = i18n.tr(`errorMessages.${key}`);\r\n const message = this.parser.parse(translation);\r\n\r\n if (message.value === translation) {\r\n return originalGetMessage.call(this, key);\r\n }\r\n return message;\r\n };\r\n\r\n ValidationMessageProvider.prototype.getDisplayName = function (propertyName, displayName) {\r\n const i18n = aurelia.container.get(I18N);\r\n\r\n if (displayName !== null && displayName !== undefined) {\r\n const translation = i18n.tr(displayName as string);\r\n\r\n if (translation === displayName) {\r\n return originalGetDisplayName.call(this, propertyName, displayName);\r\n }\r\n\r\n return translation;\r\n }\r\n const translation = i18n.tr(propertyName as string);\r\n\r\n if (translation === propertyName) {\r\n return originalGetDisplayName.call(this, propertyName, displayName);\r\n }\r\n\r\n return translation;\r\n };\r\n}\r\n","/* istanbul ignore file */\r\n\r\nimport { throttle } from 'lodash';\r\n\r\nconst SCROLL_ADJUSTMENT = 200;\r\n\r\nexport enum ScrollDirection {\r\n Leading = 'left',\r\n Trailing = 'right',\r\n}\r\n\r\nexport interface ITabScrollComponent {\r\n isLeftChevronDisabled: boolean;\r\n isRightChevronDisabled: boolean;\r\n styles: any;\r\n tabClass: string;\r\n tabUI: HTMLElement;\r\n _tabScroll_currentPosition: number;\r\n _tabScroll_initialised?: boolean;\r\n _tabScroll_isScrolling: boolean;\r\n _tabScroll_lastTab: HTMLElement;\r\n _tabScroll_startPosition: number;\r\n _tabScroll_tabUIMutationObserver: MutationObserver | null;\r\n _tabScroll_tabUIResizeObserver: ResizeObserver | null;\r\n _tabScroll_tabUIWheelHandler?: ((event: WheelEvent) => void) | null;\r\n\r\n scrollTabs(direction: ScrollDirection | string): void;\r\n}\r\n\r\nexport function initScrollTabs(context: ITabScrollComponent | any) {\r\n // Prevent multiple initialization without dispose\r\n if (context._tabScroll_initialised) {\r\n return;\r\n }\r\n\r\n // Prevent initialization without tabUI\r\n if (!context.tabUI) {\r\n return;\r\n }\r\n\r\n // setup initial state\r\n context.isRightChevronDisabled = false;\r\n context._tabScroll_startPosition =\r\n context.tabUI\r\n .querySelector(\r\n `${(context.styles && context.styles['btn--tab-overflow-left']) || 'btn--tab-overflow-left'}`\r\n .split(' ')\r\n .map((c) => '.' + c)\r\n .join(''),\r\n )\r\n ?.getBoundingClientRect().width || 0;\r\n context._tabScroll_currentPosition = context._tabScroll_startPosition;\r\n\r\n // set initial tab positions and chevron states\r\n updateTabPositions(context);\r\n setLastTab(context);\r\n\r\n // setup event listeners and observers\r\n context._tabScroll_tabUIWheelHandler = onTabUIWheel.bind(null, context);\r\n context.tabUI.addEventListener('wheel', context._tabScroll_tabUIWheelHandler, { passive: false });\r\n\r\n context._tabScroll_tabUIMutationObserver = new MutationObserver(() => {\r\n // Update tab positions, then set last tab reference (which also updates chevron states)\r\n updateTabPositions(context);\r\n setLastTab(context);\r\n });\r\n context._tabScroll_tabUIMutationObserver.observe(context.tabUI, { childList: true, subtree: false });\r\n\r\n context._tabScroll_tabUIResizeObserver = new ResizeObserver(\r\n throttle(() => {\r\n // Make sure tab positions and chevron states are updated on resize\r\n setChevronStates(context);\r\n }, 100),\r\n );\r\n context._tabScroll_tabUIResizeObserver.observe(context.tabUI);\r\n\r\n context._tabScroll_initialised = true;\r\n}\r\n\r\nexport function disposeScrollTabs(context: ITabScrollComponent | any) {\r\n if (!context._tabScroll_initialised) {\r\n return;\r\n }\r\n\r\n // remove observers\r\n const observerKeys = ['_tabScroll_tabUIMutationObserver', '_tabScroll_tabUIResizeObserver'];\r\n observerKeys.forEach((key) => {\r\n if (context[key]) {\r\n context[key].disconnect();\r\n context[key] = null;\r\n }\r\n });\r\n\r\n // remove event listeners\r\n const eventKeys = ['_tabScroll_tabUIWheelHandler'];\r\n eventKeys.forEach((key) => {\r\n if (context.tabUI && context[key]) {\r\n context.tabUI.removeEventListener('wheel', context[key]);\r\n context[key] = null;\r\n }\r\n });\r\n\r\n context._tabScroll_lastTab = null;\r\n context._tabScroll_initialised = false;\r\n}\r\n\r\nexport function scrollTabs(context: ITabScrollComponent | any, direction: ScrollDirection) {\r\n if (!context.tabUI) {\r\n return;\r\n }\r\n\r\n // Debounce: prevent scrolling while transitions are in progress\r\n if (context._tabScroll_isScrolling) {\r\n return;\r\n }\r\n\r\n const allTabs = getTabs(context);\r\n if (!allTabs.length) {\r\n return;\r\n }\r\n\r\n if (\r\n (direction === ScrollDirection.Leading && context.isLeftChevronDisabled) ||\r\n (direction === ScrollDirection.Trailing && context.isRightChevronDisabled)\r\n ) {\r\n return;\r\n }\r\n\r\n context._tabScroll_isScrolling = true;\r\n const scrollAmount = direction === ScrollDirection.Leading ? SCROLL_ADJUSTMENT : -SCROLL_ADJUSTMENT;\r\n context._tabScroll_currentPosition = context._tabScroll_currentPosition + scrollAmount;\r\n updateTabPositions(context);\r\n\r\n // Update chevron states after transition to ensure accurate state\r\n afterTransition(context._tabScroll_lastTab, () => {\r\n setChevronStates(context);\r\n context._tabScroll_isScrolling = false;\r\n });\r\n}\r\n\r\n//#region Event Handlers\r\n\r\nfunction onTabUIWheel(context: ITabScrollComponent | any, event: WheelEvent) {\r\n event.preventDefault();\r\n const direction = event.deltaY < 0 ? ScrollDirection.Leading : ScrollDirection.Trailing;\r\n context.scrollTabs(direction);\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Helper Functions\r\n\r\n/**\r\n * Execute a callback either after transition completes or immediately if no transition\r\n * @param element The element to check for transitions\r\n * @param callback The function to execute\r\n */\r\nfunction afterTransition(element: Element, callback: () => void): void {\r\n if (!element) {\r\n callback();\r\n return;\r\n }\r\n\r\n const style = window.getComputedStyle(element);\r\n const duration = parseFloat(style.transitionDuration) || 0;\r\n\r\n if (duration > 0) {\r\n element.addEventListener('transitionend', callback, { once: true });\r\n } else {\r\n callback();\r\n }\r\n}\r\n\r\nfunction getTabs(context: ITabScrollComponent | any): HTMLElement[] {\r\n if (!context.tabUI) {\r\n return [];\r\n }\r\n return Array.from(context.tabUI.querySelectorAll(context.tabClass)) || [];\r\n}\r\n\r\nfunction isLastTabVisible(context: ITabScrollComponent | any): boolean {\r\n if (!context._tabScroll_lastTab) {\r\n return true;\r\n }\r\n\r\n const tabUIRect = context.tabUI.getBoundingClientRect();\r\n const lastTabRect = context._tabScroll_lastTab.getBoundingClientRect();\r\n\r\n // Calculate the effective right boundary by accounting for absolutely positioned children\r\n let effectiveRightBoundary = tabUIRect.right;\r\n\r\n const rightOverflowBtn = context.tabUI.querySelector(`.${(context.styles && context.styles['btn--tab-overflow-right']) || 'btn--tab-overflow-right'}`);\r\n if (rightOverflowBtn) {\r\n const childRect = rightOverflowBtn.getBoundingClientRect();\r\n effectiveRightBoundary = effectiveRightBoundary - childRect.width;\r\n }\r\n\r\n // Check if the last tab's right edge is fully visible within the effective area\r\n const isFullyVisible = lastTabRect.right <= effectiveRightBoundary;\r\n return isFullyVisible;\r\n}\r\n\r\nfunction setChevronStates(context: ITabScrollComponent | any): void {\r\n context.isLeftChevronDisabled = context._tabScroll_currentPosition === context._tabScroll_startPosition;\r\n context.isRightChevronDisabled = isLastTabVisible(context);\r\n}\r\n\r\nfunction setLastTab(context: ITabScrollComponent | any) {\r\n const allTabs = getTabs(context);\r\n context._tabScroll_lastTab = allTabs[allTabs.length - 1];\r\n setChevronStates(context);\r\n}\r\n\r\nfunction updateTabPositions(context: ITabScrollComponent | any) {\r\n const allTabs = getTabs(context);\r\n if (!allTabs.length) {\r\n return;\r\n }\r\n\r\n // Set position for all tabs\r\n allTabs.forEach((element: HTMLElement) => {\r\n element.style.position = 'relative';\r\n element.style.left = `${context._tabScroll_currentPosition}px`;\r\n });\r\n}\r\n\r\n//#endregion\r\n","export async function timer(msec): Promise {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve();\r\n }, msec);\r\n });\r\n}\r\n"],"names":["run","navigationInstruction","next","currentRouteName","config","name","document","body","className","classList","add","scrollIntoView","tableClassName","rowClassName","setTimeout","table","Array","from","querySelectorAll","find","x","includes","selectedTr","behavior","block","scrollQCEErrorIntoView","errors","length","http","downloadBlobFromUrl","fileName","url","Promise","this","isValidParams","urlToBlob","blobUrl","blob","downloadFile","console","error","a","createElement","download","href","window","URL","createObjectURL","appendChild","click","remove","endpoint","utils","urlToOctetStrem","uri","fetch","headers","method","result","ok","message","undefined","autoinject","BlobService","claims","getClaims","apiHost","response","json","expiry","get","expiryDate","Date","getTime","isArray","has","claim","every","value","hasAsync","localStorage","setItem","toString","JSON","stringify","dateNow","parseInt","getItem","isNaN","some","ClaimsService","Loader","taskQueue","defaultOptions","class","position","theme","layout","title","titleColor","messageColor","iconColor","backgroundColor","close","closeOnEscape","closeOnClick","timeout","overlay","overlayClose","overlayColor","transitionIn","transitionOut","animateInside","progressBar","image","imageWidth","maxWidth","displayMode","drag","loaderOpen","Error","loader","overrideOptions","bootstrapLoader","setDefaultOptions","options","getDefaultOptions","destroyAllToasts","show","toast","toastMessageIsRequired","mergeToastSettings","hide","toastRef","closedBy","toastElement","String","querySelector","info","progress","callback","success","warning","restoreDefaultSettings","question","getLoaderPath","showLoader","loaderText","queueMicroTask","$loaderText","hideLoader","showStatusIcon","statusSuccess","statusIconTimeout","existingImage","existingTransIn","existingTimeout","existingOnClosed","onClosed","GreenTick","RedCross","TailSpin","IaToastMessage","id","$loaderTextClass","onOpening","addLoaderText","onClosing","removeLoaderText","createTextNode","parentNode","TaskQueue","IaToastService","log","LogManager","EXPIRY_HEADER","storage","acceptsElectronicDisclosureDocuments","resolve","acceptsMarketingMail","association","reportCodes","cachedLookup","rows","glPeriodTypes","map","refDataToFieldValueDefinition","consentClientDisplayText","getRefDataFromLocalStorage","status","saveRefDataToLocalStorage","consentWizardDisplayText","consentTypes","filter","t","activeFlag","e","label","description","disabled","userSelectableFlag","consentVerbalScriptTextByCompanyOffice","transferProcessStatusTypes","transferProcessStatusId","transferProcessStatus","webFormEditAction","webFormStatusActions","webFormStatusActionId","webFormStatusAction","WebFormStatus","webFormTypes","webFormRiskClassTypes","useOnWebFormsFlag","riskClassTypeId","displayName","insurerOfficesServiceRisks","companyOfficeId","riskByClassIds","rbc","join","insurerProcessingTypeId","insurerId","insurerOfficeId","insurerOfficeCode","insurerOfficeName","captureInsurerOccupationFlag","webFormRisksByRiskClassTypes","homepageHelpdesk","homepageUrls","homePageUrlId","glPaymentStatusTypes","glPaymentPartyTypes","settleAllCreditTypes","glSettlementTypes","insurerWorkfileTypes","glWorkfileStatusTypes","refData","divisionType","glBatchStatusTypes","knowYourClientTypes","vulnerabilityTypes","vulnerableClientTypes","vulnerableClientTypeId","vulnerableClientType","synopsis","webFormStatus","webFormStatusTypes","soaTypes","premiumFunderStatusActionTypes","premiumFunderStatusActionId","premumFunderStatus","premiumFunderStatusAction","redPlanetStatusTypes","redPlanetStatusId","standardWordingTypes","additionalPageTemplateCategoryTypes","redPlanetInvoiceNumberFormatTypes","financialServicesGuideTypes","insurerTypes","insurerCode","insurerName","paysOverrider","paysOverride","insurerOfficeTypes","insurerOffices","groupTypes","securityGroupId","partyInstanceTypes","apraClassTypes","schemeTypesByRiskClassTypeId","redPlanetRiskTypesByPremiumFunderId","premiumFunderId","redPlanetRiskId","redPlanetRiskCode","redPlanetRiskName","redPlanetSubStatusTypesByPremiumFunderId","redPlanetSubStatusId","redPlanetStatus","redPlanetSubStatus","templateTypes","templateCategoryTypes","htmlTemplateTypes","PlTermFromTypes","mailSortCodeTypes","stateTypes","stampDutyRegionTypes","fslRegionTypes","messagePriorityTypes","messageSourceTypes","plTermTypes","electronicBankingFileTypes","socialMediaTypes","branchLocationTypes","branchTypes","underwriterTypes","bankBranchTypes","BankBranchTypes","claimsPayingRatingStructureTypes","ClaimsPayingRatingStructureTypes","claimsPayingRatingSourceTypes","ClaimsPayingRatingSourceTypes","referralTypes","adviserTypes","authorisationReasons","titleTypes","actionTypes","referralCalculationMethods","bankAccountTypes","taxStatusTypes","settlementTypes","insurerCategoryTypes","paymentOutType","paymentOutTypeAll","paymentOutTypeUseOnSettlementRequest","useOnSettlementRequest","activityTypes","entityDocumentActivityTypeId","activityType","taskCategoryTypes","taskPriorityTypes","userDetail","applicationHomeEndpoints","detail","journalType","salesStatusType","salesRatingType","fieldTypes","fieldType","partyInstanceId","localTypes","keyPrefix","obj","mandatory","adviser","advisers","adviserId","adviserCode","adviserName","code","sort","b","insurerUnderwriters","validUnderwriterProcessTypeIds","underwriters","insurerProcessType","insurerType","insurerGroup","insurerGroups","riskGroupType","riskGroupTypes","paymentType","activeOnly","localStorageKey","paymentTypes","selected","businessEntityType","quoteStatusType","paymentStatus","anzsicType","anzsicTypes","riskClassType","activeRiskClassTypes","risksByRiskClassType","riskByClassId","riskCode","riskName","riskByClassTypes","clientCategory","clientDisclosureType","clientRole","clientType","companyOffice","c","companyOfficeCode","companyOfficeName","countryCode","countryName","countryTypes","countryId","distributionType","financialServicesGuideType","introductionType","noteType","declineType","proposalStatus","systemParameters","parameters","verbalPrivacyStatement","text","verbalFsgStatement","verbalFsgStatementHtml","lmiBiCalculatorLink","lmiRiskCoachLink","lmiPolicyComparisonLink","apiEndpoints","endpoints","entityActions","entityReportingTypes","premiumFunderStatusTypes","premiumFunderStatusActions","premiumFunders","includeInactive","surchargePayees","allowableDocumentTypes","allowableDocumentTypesAll","asicExemptionType","aTypicalRiskClass","customisedReason","criminalRecordsStatement","referral","referrals","referralId","referralCode","referralName","claimStatus","claimType","claimEventTypes","claimEventId","claimEvent","claimCategory","claimStatusActions","licenceClasses","claimNoteType","claimPaymentType","refType","users","groups","financialAdviserTypes","data","lst","branchLocations","adminRefData","fsgType","getValues","controller","active","toLowerCase","localeCompare","api","items","results","riskCriteria","riskCriteriaTypes","reportEndpoints","reports","risk","riskGroupedByRiskCriteria","riskGroupedByRisk","riskClassTypeCriteria","riskClassCriteriaTypes","premiumFunderTypes","premiumFunder","reportPremiumFunder","reportPremiumFunders","underwriterCriteria","reportUnderwriters","underwriter","assignedTo","allUsers","reportingType","reportingTypes","occupationCriteria","occupationTypes","occupation","referralCriteria","insurerCriteria","insurer","insurerCategoryCriteria","insurerCategory","branch","branches","transtype","yesNo","searchType","activeInactive","partyTypes","completeIncomplete","quarter","month","type","load","transform","cached","buildLocalStorageKey","parts","getExpiry","params","saveToLocalStorage","localStorageValue","getFromLocalStorage","parsedData","removeItem","LookupDataService","createAuthToken","user","webFormLinkCode","username","password","appClientType","appClientInstance","client","deviceToken","saveToken","sessionStorage","passwordRequiresChanging","deviceId","returnedDeviceToken","twoFactorSetupRequired","twoFactorCodeRequired","getAuthToken","getLocation","getRefreshToken","getDeviceId","getDeviceTokens","refreshAuthToken","refreshRequest","requestRefreshedToken","refreshToken","token","access_token","refresh_token","removeToken","key","inject","TokenService","debug","logger","rest","warn","i18tnValidation","aurelia","originalGetMessage","ValidationMessageProvider","prototype","getMessage","originalGetDisplayName","getDisplayName","translation","container","I18N","tr","parser","parse","call","propertyName","i18n","ScrollDirection","SCROLL_ADJUSTMENT","initScrollTabs","context","_tabScroll_initialised","tabUI","isRightChevronDisabled","_tabScroll_startPosition","styles","split","getBoundingClientRect","width","_tabScroll_currentPosition","updateTabPositions","setLastTab","_tabScroll_tabUIWheelHandler","onTabUIWheel","bind","addEventListener","passive","_tabScroll_tabUIMutationObserver","MutationObserver","observe","childList","subtree","_tabScroll_tabUIResizeObserver","ResizeObserver","throttle","setChevronStates","disposeScrollTabs","forEach","disconnect","removeEventListener","_tabScroll_lastTab","scrollTabs","direction","_tabScroll_isScrolling","getTabs","Leading","isLeftChevronDisabled","Trailing","scrollAmount","element","style","getComputedStyle","parseFloat","transitionDuration","once","afterTransition","event","preventDefault","deltaY","tabClass","tabUIRect","lastTabRect","effectiveRightBoundary","right","rightOverflowBtn","isLastTabVisible","allTabs","left","timer","msec"],"sourceRoot":""}