import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; import { AuthenticationConfiguration, ExternalFetcherBaseSourceConfiguration, QueryCaseConfig, QueryConfig, ResultFieldsMappingConfiguration, ResultsConfiguration } from '@app/core/model/external-fetcher/external-fetcher'; import { PrefillingSource, PrefillingSourceDefinition, PrefillingSourceDefinitionField, PrefillingSourceDefinitionFixedValueField } from '@app/core/model/prefilling-source/prefilling-source'; import { PrefillingSourceService } from '@app/core/services/prefilling-source/prefilling-source.service'; import { BreadcrumbService } from '@app/ui/misc/breadcrumb/breadcrumb.service'; import { BaseEditorResolver } from '@common/base/base-editor.resolver'; import { Guid } from '@common/types/guid'; import { takeUntil, tap } from 'rxjs/operators'; import { nameof } from 'ts-simple-nameof'; @Injectable() export class PrefillingSourceEditorResolver extends BaseEditorResolver { constructor(private prefillingSourceService: PrefillingSourceService, private breadcrumbService: BreadcrumbService) { super(); } public static lookupFields(): string[] { return [ ...BaseEditorResolver.lookupFields(), nameof(x => x.id), nameof(x => x.label), [nameof(x => x.definition), nameof(x => x.fields), nameof(x => x.code)].join('.'), [nameof(x => x.definition), nameof(x => x.fields), nameof(x => x.systemFieldTarget)].join('.'), [nameof(x => x.definition), nameof(x => x.fields), nameof(x => x.semanticTarget)].join('.'), [nameof(x => x.definition), nameof(x => x.fields), nameof(x => x.trimRegex)].join('.'), [nameof(x => x.definition), nameof(x => x.fixedValueFields), nameof(x => x.systemFieldTarget)].join('.'), [nameof(x => x.definition), nameof(x => x.fixedValueFields), nameof(x => x.semanticTarget)].join('.'), [nameof(x => x.definition), nameof(x => x.fixedValueFields), nameof(x => x.trimRegex)].join('.'), [nameof(x => x.definition), nameof(x => x.fixedValueFields), nameof(x => x.fixedValue)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.type)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.key)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.label)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.ordinal)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.url)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.results), nameof(x => x.resultsArrayPath)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.results), nameof(x => x.fieldsMapping), nameof(x => x.code)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.results), nameof(x => x.fieldsMapping), nameof(x => x.responsePath)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.paginationPath)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.contentType)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.firstPage)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.httpMethod)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.requestBody)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.filterType)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.auth), nameof(x => x.enabled)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.auth), nameof(x => x.authUrl)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.auth), nameof(x => x.authMethod)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.auth), nameof(x => x.authTokenPath)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.auth), nameof(x => x.authRequestBody)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.auth), nameof(x => x.type)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.queries), nameof(x => x.name)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.queries), nameof(x => x.defaultValue)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.queries), nameof(x => x.cases),nameof(x => x.likePattern)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.queries), nameof(x => x.cases),nameof(x => x.separator)].join('.'), [nameof(x => x.definition), nameof(x => x.searchConfiguration), nameof(x => x.queries), nameof(x => x.cases),nameof(x => x.value)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.type)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.key)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.label)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.ordinal)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.url)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.results), nameof(x => x.resultsArrayPath)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.results), nameof(x => x.fieldsMapping), nameof(x => x.code)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.results), nameof(x => x.fieldsMapping), nameof(x => x.responsePath)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.paginationPath)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.contentType)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.firstPage)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.httpMethod)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.requestBody)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.filterType)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.auth), nameof(x => x.enabled)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.auth), nameof(x => x.authUrl)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.auth), nameof(x => x.authMethod)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.auth), nameof(x => x.authTokenPath)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.auth), nameof(x => x.authRequestBody)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.auth), nameof(x => x.type)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.queries), nameof(x => x.name)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.queries), nameof(x => x.defaultValue)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.queries), nameof(x => x.cases),nameof(x => x.likePattern)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.queries), nameof(x => x.cases),nameof(x => x.separator)].join('.'), [nameof(x => x.definition), nameof(x => x.getConfiguration), nameof(x => x.queries), nameof(x => x.cases),nameof(x => x.value)].join('.'), nameof(x => x.createdAt), nameof(x => x.updatedAt), nameof(x => x.hash), nameof(x => x.isActive) ] } resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { const fields = [ ...PrefillingSourceEditorResolver.lookupFields() ]; const id = route.paramMap.get('id'); if (id != null) { return this.prefillingSourceService.getSingle(Guid.parse(id), fields).pipe(tap(x => this.breadcrumbService.addIdResolvedValue(x.id?.toString(), x.label)), takeUntil(this._destroyed)); } } }