{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/app-routing.module.ts","./landings/insapp/app/app.component.ts","./landings/insapp/app/app.component.html","./src/app/app.module.ts","./src/app/core/core.module.ts","./src/app/core/services/app.service.ts","./src/app/core/services/content.service.ts","./src/app/core/services/dadata.service.ts","./src/app/core/services/permit-route.service.ts","./src/app/core/services/settings.service.ts","./src/app/modules/mortgage/components/borrower-form/borrower-form.component.ts","./src/app/modules/mortgage/components/borrower-form/borrower-form.component.html","./src/app/modules/mortgage/components/contact-form/contact-form.component.ts","./src/app/modules/mortgage/components/contact-form/contact-form.component.html","./src/app/modules/mortgage/components/form/form.component.ts","./src/app/modules/mortgage/components/form/form.component.html","./src/app/modules/mortgage/components/insurance-object-form/insurance-object-form.component.ts","./src/app/modules/mortgage/components/insurance-object-form/insurance-object-form.component.html","./src/app/modules/mortgage/components/main/main.component.ts","./src/app/modules/mortgage/components/main/main.component.html","./src/app/modules/mortgage/components/main/select-company-filter/components/select-object/select-object.component.ts","./src/app/modules/mortgage/components/main/select-company-filter/components/select-object/select-object.component.html","./src/app/modules/mortgage/components/main/select-company-filter/select-company-filter.component.ts","./src/app/modules/mortgage/components/main/select-company-filter/select-company-filter.component.html","./src/app/modules/mortgage/components/mortgage-form/mortgage-form.component.ts","./src/app/modules/mortgage/components/mortgage-form/mortgage-form.component.html","./src/app/modules/mortgage/components/offline-form/offline-form.component.ts","./src/app/modules/mortgage/components/offline-form/offline-form.component.html","./src/app/modules/mortgage/components/policy-date-form/plicy-date-form.component.ts","./src/app/modules/mortgage/components/policy-date-form/plicy-date-form.component.html","./src/app/modules/mortgage/components/success-page/success-page.component.ts","./src/app/modules/mortgage/components/success-page/success-page.component.html","./src/app/modules/mortgage/mortgage-routing.module.ts","./src/app/modules/mortgage/mortgage.module.ts","./src/app/shared/components/autocomplete/autocomplete.component.ts","./src/app/shared/components/autocomplete/autocomplete.component.html","./src/app/shared/components/form-date-field/form-date-field.component.ts","./src/app/shared/components/form-date-field/form-date-field.component.html","./src/app/shared/components/form-field-error/form-field-error.component.html","./src/app/shared/components/form-field-error/form-field-error.component.ts","./src/app/shared/components/form-number-field/form-number-field.component.ts","./src/app/shared/components/form-number-field/form-number-field.component.html","./src/app/shared/components/form-text-field/form-text-field.component.ts","./src/app/shared/components/form-text-field/form-text-field.component.html","./src/app/shared/components/loader-offer/loader-offer.component.ts","./src/app/shared/components/loader-offer/loader-offer.component.html","./src/app/shared/components/offer-item/offer-item.component.ts","./src/app/shared/components/offer-item/offer-item.component.html","./src/app/shared/components/pdf-doc-view/pdf-doc-view.component.html","./src/app/shared/components/pdf-doc-view/pdf-doc-view.component.ts","./src/app/shared/components/progress-circle/progress-circle.component.ts","./src/app/shared/components/progress-circle/progress-circle.component.html","./src/app/shared/components/selected-offer/selected-offer.component.ts","./src/app/shared/components/selected-offer/selected-offer.component.html","./src/app/shared/constants/content.ts","./src/app/shared/constants/masks.ts","./src/app/shared/directives/date.directive.ts","./src/app/shared/directives/number.directive.ts","./src/app/shared/enums/da-data.enum.ts","./src/app/shared/enums/mortgage-objects.enum.ts","./src/app/shared/enums/routes.enum.ts","./src/app/shared/enums/yandex-metrika-goals.enum.ts","./src/app/shared/functions/checkIsHiddenBaseAmount.ts","./src/app/shared/functions/sizeWindow.ts","./src/app/shared/functions/utmData.ts","./src/app/shared/helpers/calendarHelper.ts","./src/app/shared/helpers/textmaskHelper.ts","./src/app/shared/services/form-filter.service.ts","./src/app/shared/services/form-offline.service.ts","./src/app/shared/services/form.service.ts","./src/app/shared/services/globalErrorHandler.service.ts","./src/app/shared/services/http.service.ts","./src/app/shared/services/httpIntercepter.service.ts","./src/app/shared/services/modal.service.ts","./src/app/shared/services/mortgage.service.ts","./src/app/shared/services/navigation.service.ts","./src/app/shared/services/validation.service.ts","./src/app/shared/services/yandex-metrika.service.ts","./src/app/shared/shared.module.ts","./src/environments/environment.common.prod.ts","./landings/insapp/environment.insapp.prod.ts","./src/main.ts","./node_modules/moment-mini/locale/ sync ^\\.\\/.*$","ignored|C:\\gitlab-runner-front-angular15\\builds\\glrt-Et-\\0\\hlopov\\insapp-front-mortgage\\node_modules\\pdfjs-dist\\build|canvas","ignored|C:\\gitlab-runner-front-angular15\\builds\\glrt-Et-\\0\\hlopov\\insapp-front-mortgage\\node_modules\\pdfjs-dist\\build|fs","ignored|C:\\gitlab-runner-front-angular15\\builds\\glrt-Et-\\0\\hlopov\\insapp-front-mortgage\\node_modules\\pdfjs-dist\\build|http","ignored|C:\\gitlab-runner-front-angular15\\builds\\glrt-Et-\\0\\hlopov\\insapp-front-mortgage\\node_modules\\pdfjs-dist\\build|https","ignored|C:\\gitlab-runner-front-angular15\\builds\\glrt-Et-\\0\\hlopov\\insapp-front-mortgage\\node_modules\\pdfjs-dist\\build|url","ignored|C:\\gitlab-runner-front-angular15\\builds\\glrt-Et-\\0\\hlopov\\insapp-front-mortgage\\node_modules\\pdfjs-dist\\build|zlib"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport {PreloadAllModules, RouterModule, Routes} from '@angular/router';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'mortgage', loadChildren: () => import('./modules/mortgage/mortgage.module').then(m => m.MortgageModule),\r\n canActivate: []\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, {\r\n onSameUrlNavigation: 'reload',\r\n preloadingStrategy: PreloadAllModules,\r\n useHash: false\r\n })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","// version: 1.1\r\nimport {Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport { setTheme } from 'ngx-bootstrap/utils';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { fromEvent, Observable, Subscription } from 'rxjs';\r\nimport { Title } from '@angular/platform-browser';\r\nimport {Router} from '@angular/router';\r\n\r\n// Сервисы\r\nimport {AppService} from 'src/app/core/services/app.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: '../../../landings/insapp/app/app.component.html',\r\n styleUrls: ['../../../landings/insapp/app/app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n @ViewChild('swiper', { static: true }) swiperRef: any;\r\n constructor(private readonly titleService: Title,\r\n private readonly elementRef: ElementRef,\r\n private readonly appService: AppService,\r\n public readonly router: Router) {\r\n setTheme('bs5');\r\n }\r\n\r\n // Заголовок сайта\r\n private title = 'СТРАХОВАНИЕ ИПОТЕКИ ОНЛАЙН';\r\n private faviconHref = 'assets/landingFiles/favicon-16x16.png';\r\n private favIcon: HTMLLinkElement | null = document.querySelector('#appIcon');\r\n\r\n // Индикатор загрузки\r\n public isLoading!: boolean;\r\n\r\n // События проверки интернет соединения\r\n private onlineEvent!: Observable;\r\n private offlineEvent!: Observable;\r\n\r\n // Подписка\r\n private subscriptions: Subscription[] = [];\r\n\r\n // Статус инетрнет соединения\r\n public connectionStatus!: string;\r\n\r\n get isShowBlock(): boolean {\r\n return !this.router.url.includes('form') && !this.router.url.includes('success');\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n console.log('Этот компонент заменили!');\r\n this.titleService.setTitle(this.title);\r\n if (this.favIcon != null) {\r\n this.favIcon.href = this.faviconHref;\r\n }\r\n this.checkNetworkStatus();\r\n this.isLoading = true;\r\n\r\n this.appService.loadApp()\r\n .pipe(finalize(() => this.isLoading = false))\r\n .subscribe(() => {\r\n this.router.navigate(['/'], {queryParamsHandling: 'merge'});\r\n });\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n }\r\n\r\n // // Уничтожение\r\n public ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n\r\n // Инициализация скрытого функционала\r\n public isAdmin(): boolean {\r\n const isAdmin = localStorage.getItem('isHideConfigInsapp');\r\n return isAdmin !== null && isAdmin !== '';\r\n }\r\n\r\n // Проверка инетрнет соединения\r\n private checkNetworkStatus(): void {\r\n this.onlineEvent = fromEvent(window, 'online');\r\n this.offlineEvent = fromEvent(window, 'offline');\r\n\r\n this.subscriptions.push(this.onlineEvent.subscribe(e => {\r\n this.reloadPage();\r\n this.connectionStatus = 'online';\r\n }));\r\n\r\n this.subscriptions.push(this.offlineEvent.subscribe(e => {\r\n this.connectionStatus = 'offline';\r\n }));\r\n }\r\n\r\n // Обновить страницу\r\n public reloadPage(): void {\r\n window.location.reload();\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n","import {ErrorHandler, NgModule} from '@angular/core';\r\nimport {BrowserModule} from '@angular/platform-browser';\r\n\r\nimport {AppRoutingModule} from './app-routing.module';\r\nimport {AppComponent} from './app.component';\r\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\r\nimport {MortgageModule} from \"./modules/mortgage/mortgage.module\";\r\nimport {SharedModule} from \"./shared/shared.module\";\r\nimport {CoreModule} from \"./core/core.module\";\r\nimport {BsDatepickerModule} from 'ngx-bootstrap/datepicker';\r\nimport {SwiperModule} from \"swiper/angular\";\r\nimport {PopoverModule} from \"ngx-bootstrap/popover\";\r\nimport {HTTP_INTERCEPTORS} from \"@angular/common/http\";\r\nimport {HttpErrorInterceptor} from \"./shared/services/httpIntercepter.service\";\r\nimport {GlobalErrorHandler} from \"./shared/services/globalErrorHandler.service\";\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent\r\n ],\r\n imports: [\r\n CoreModule,\r\n SharedModule,\r\n BrowserModule,\r\n AppRoutingModule,\r\n MortgageModule,\r\n BrowserAnimationsModule,\r\n BsDatepickerModule.forRoot(),\r\n SwiperModule,\r\n PopoverModule.forRoot(),\r\n ],\r\n providers: [{\r\n provide: ErrorHandler,\r\n useClass: GlobalErrorHandler\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: HttpErrorInterceptor,\r\n multi: true\r\n }],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n// Модули\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n// Сервисы и провайдеры\r\nimport { AppService } from './services/app.service';\r\nimport { DadataService } from './services/dadata.service';\r\nimport {ContentService} from \"./services/content.service\";\r\n\r\n// Модуль ядра приложения\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n SharedModule\r\n ],\r\n providers: [\r\n AppService,\r\n DadataService,\r\n ContentService\r\n ]\r\n})\r\nexport class CoreModule {\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport {BehaviorSubject, concatMap, Observable, of} from 'rxjs';\r\nimport {catchError, map, take, tap} from 'rxjs/operators';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {Router} from \"@angular/router\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\n// Сервисы\r\nimport {FormService} from '../../shared/services/form.service';\r\nimport {HttpService} from '../../shared/services/http.service';\r\nimport {FormFilterService} from \"../../shared/services/form-filter.service\";\r\nimport {SettingsService} from './settings.service';\r\nimport {YandexMetrikaService} from \"../../shared/services/yandex-metrika.service\";\r\n\r\n// Интерфейсы\r\nimport {IUrlParams} from '../../shared/interface/url-params.interface';\r\nimport {IApplicationRequest, IApplicationResponse} from \"../../shared/interface/application.interface\";\r\nimport { environment } from '../../../environments/environment';\r\nimport { CalendarHelper } from '../../shared/helpers/calendarHelper';\r\nimport {getUtmData} from \"../../shared/functions/utmData\";\r\nimport {YandexMetrikaGoalsEnum} from \"../../shared/enums/yandex-metrika-goals.enum\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppService extends HttpService {\r\n\r\n constructor(@Inject(HttpClient) protected override http: HttpClient,\r\n private readonly settingsService: SettingsService,\r\n private readonly formService: FormService,\r\n private readonly formFilterService: FormFilterService,\r\n private readonly router: Router,\r\n private readonly ym: YandexMetrikaService) {\r\n super(http);\r\n this.checkIsArmApplication();\r\n }\r\n\r\n // тип заявки - новая\\пролонгация etc\r\n private applicationType = 'New';\r\n // Анкета открыта из арма\r\n private _isArmApplication = false;\r\n // Анкета из арма\r\n private _armApplication: BehaviorSubject = new BehaviorSubject(null);\r\n armApplication$ = this._armApplication.asObservable();\r\n // Парметр src из ссылки, например OffersRecivedEmail\r\n public srcUrlParam: string = '';\r\n // Параметр offerId из url\r\n public offerIdFromUrlParams: string = '';\r\n // UID заявки\r\n public applicationId!: string;\r\n // UID клиента\r\n public clientId!: string;\r\n // Статус заявки\r\n public setWidgetDisplayedStatus = false;\r\n // АБ тест\r\n public alfaIdABTestingGroup!: number;\r\n // Данные из кэша есть или нет\r\n public dateFromCacheIsNull = false;\r\n\r\n // URL api окружения\r\n // private apiUrl = environment.apiUrl;\r\n // URL car info api\r\n // private carInfoApi = environment.carInfoApi;\r\n private armEventReceived = false;\r\n\r\n public checkIsArmApplication() {\r\n this._isArmApplication = this.isOpenFromArm();\r\n\r\n if (this._isArmApplication) {\r\n window.addEventListener('message', (ev: MessageEvent) => {\r\n if (!this.armEventReceived && ev.data && ev.data.type && ev.data.type === 'MortgageApplication') {\r\n this.armEventReceived = true;\r\n console.log(\"AppService::checkIsArmApplication::windowEvent\");\r\n this.settingsService.apiKey = ev.data.apikey;\r\n this.applicationType = ev.data.applicationType;\r\n this._armApplication.next(ev.data.application);\r\n }\r\n });\r\n\r\n window.opener.postMessage({type: 'MortgageApplication'}, '*');\r\n }\r\n }\r\n\r\n public get armApplication() {\r\n return this._armApplication.value;\r\n }\r\n\r\n private isOpenFromArm(): boolean {\r\n try {\r\n if (document.referrer == null || document.referrer == '') {\r\n return false;\r\n }\r\n\r\n var url = new URL(document.referrer);\r\n return url.hostname.toLowerCase() == environment.armHost;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n get isArmApplication(): boolean {\r\n return this._isArmApplication;\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Запросы вызываются при инициализации, старт запросов в OnInit app.component\r\n public loadApp(): Observable {\r\n this.dateFromCacheIsNull = false;\r\n // Сначала смотрим какие у нас данные есть, проверяем url, localStorage\r\n return this.getApplicationIdFromQueryParams()\r\n .pipe(\r\n concatMap((res) => res?.offerId && res?.offerId !== '0' || !res?.offerId ? this.getMortgageCacheByApplicationId(res) : of(null)),\r\n map((res) => {\r\n if (res && res.result && res.value) {\r\n this.formService.setFormDataFromCache(res.value);\r\n this.formFilterService.setFilterFormDataFromCache(res.value);\r\n this.formFilterService.saveFilterFormToLocalStorage();\r\n this.formService.saveFormToLocalStorage();\r\n } else {\r\n this.dateFromCacheIsNull = true;\r\n }\r\n return res;\r\n }),\r\n concatMap(() => this.getClientId()),\r\n concatMap(() => this.createApplication()),\r\n take(1)\r\n );\r\n }\r\n\r\n // Получаем данные анкеты с кэша\r\n private getMortgageCacheByApplicationId(urlParams: IUrlParams): Observable {\r\n const request = {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: urlParams.applicationId,\r\n }\r\n return this.http.post(environment.apiUrl + 'Client/GetMortgageCacheByApplicationId', request)\r\n // return this.http.post(environment.apiUrl + 'Client/GetCache', request)\r\n }\r\n\r\n // Получаем данные из параметров url\r\n public getApplicationIdFromQueryParams(): Observable {\r\n // Создаем ссылку\r\n const url: URL = new URL(window.location.href);\r\n // Получаем параметры\r\n const params: URLSearchParams = url.searchParams;\r\n // Получаем параметры из url\r\n const urlParams: IUrlParams = {\r\n applicationId: ''\r\n };\r\n\r\n // Если есть offersRecivedEmail в параметрах url, то используем его\r\n const src: string | null = params.get('src');\r\n if (src) {\r\n this.srcUrlParam = src;\r\n urlParams.src = src;\r\n }\r\n\r\n // Если есть apiKey в параметрах url, то используем его\r\n const apiKey: string | null = params.get('apikey');\r\n if (params && apiKey) {\r\n this.settingsService.apiKey = apiKey;\r\n urlParams.apiKey = apiKey;\r\n }\r\n\r\n // Если есть applicationId в параметрах url, то используем его\r\n const applicationId: string | null = params.get('applicationId');\r\n if (applicationId) {\r\n urlParams.applicationId = applicationId;\r\n this.formService.form.get('applicationId')?.setValue(applicationId);\r\n }\r\n\r\n // Если есть clientId в параметрах url, то используем его\r\n const clientId: string | null = params.get('clientId');\r\n if (clientId) {\r\n localStorage.setItem('clientId', clientId);\r\n urlParams.clientId = clientId;\r\n this.clientId = clientId;\r\n } else {\r\n this.clientId = localStorage.getItem('clientId') || '';\r\n }\r\n\r\n // Если есть cpaClientUid в параметрах url, то используем его\r\n const cpaClientUid: string | null = params.get('cpaClientId');\r\n if (cpaClientUid) {\r\n this.formService.form.get('cpaClientId')?.setValue(cpaClientUid);\r\n }\r\n\r\n // Если есть cpaClientUid2 в параметрах url, то используем его\r\n const cpaClientUid2: string | null = params.get('cpaClientId2');\r\n if (cpaClientUid2) {\r\n this.formService.form.get('cpaClientId2')?.setValue(cpaClientUid2);\r\n }\r\n\r\n // Если есть loyalty в параметрах url, то используем его\r\n const loyalty: string | null = params.get('loyalty');\r\n if (loyalty) {\r\n this.formService.form.get('cpaClientUid')?.setValue(loyalty);\r\n }\r\n\r\n // Если есть offerId в параметрах url, то используем его\r\n const offerId: string | null = params.get('offerId');\r\n if (offerId) {\r\n urlParams.offerId = offerId;\r\n this.offerIdFromUrlParams = offerId;\r\n }\r\n\r\n return new Observable(subscriber => subscriber.next(urlParams));\r\n }\r\n\r\n // Получаем данные из параметров url\r\n public getUrlParams(): IUrlParams {\r\n // Создаем ссылку\r\n const url: URL = new URL(window.location.href);\r\n // Получаем параметры\r\n const params: URLSearchParams = url.searchParams;\r\n // Получаем параметры из url\r\n const urlParams: IUrlParams = {};\r\n\r\n // Преобразуем все ключи параметров в нижний регистр\r\n const lowerCaseParams: Record = {};\r\n params.forEach((value, key) => {\r\n lowerCaseParams[key.toLowerCase()] = value;\r\n });\r\n\r\n // Если есть src в параметрах url, то используем его\r\n const src: string | null = lowerCaseParams['src'];\r\n if (src) {\r\n this.srcUrlParam = src;\r\n urlParams.src = src;\r\n }\r\n\r\n // Если есть apiKey в параметрах url, то используем его\r\n const apiKey: string | null = lowerCaseParams['apikey'];\r\n if (apiKey) {\r\n this.settingsService.apiKey = apiKey;\r\n urlParams.apiKey = apiKey;\r\n }\r\n\r\n // Если есть applicationId в параметрах url, то используем его\r\n const applicationId: string | null = lowerCaseParams['applicationid'];\r\n if (applicationId) {\r\n urlParams.applicationId = applicationId;\r\n this.formService.form.get('applicationId')?.setValue(applicationId);\r\n }\r\n\r\n // Если есть clientId в параметрах url, то используем его\r\n const clientId: string | null = lowerCaseParams['clientid'];\r\n if (clientId) {\r\n urlParams.clientId = clientId;\r\n }\r\n\r\n // Если есть cpaClientUid в параметрах url, то используем его\r\n const cpaClientUid: string | null = lowerCaseParams['cpaclientuid'];\r\n if (cpaClientUid) {\r\n urlParams.CpaClientUid = cpaClientUid;\r\n this.formService.form.get('cpaClientId')?.setValue(cpaClientUid);\r\n }\r\n\r\n // Если есть cpaClientUid в параметрах url, то используем его\r\n const cpaClientId: string | null = lowerCaseParams['cpaclientid'];\r\n if (cpaClientId) {\r\n urlParams.CpaClientId = cpaClientId;\r\n }\r\n\r\n // Если есть cpaClientUid2 в параметрах url, то используем его\r\n const cpaClientUid2: string | null = lowerCaseParams['cpaclientuid2'];\r\n if (cpaClientUid2) {\r\n urlParams.CpaClientUid2 = cpaClientUid2;\r\n this.formService.form.get('cpaClientId2')?.setValue(cpaClientUid2);\r\n }\r\n\r\n // Если есть loyalty в параметрах url, то используем его\r\n const loyalty: string | null = lowerCaseParams['loyalty'];\r\n if (loyalty) {\r\n urlParams.loyalty = loyalty;\r\n }\r\n\r\n // Если есть creditRemain в параметрах url, то используем его\r\n const creditRemain: string | null = lowerCaseParams['creditremain']?.replace(/\\s/g, '') || '';\r\n if (creditRemain) {\r\n urlParams.CreditRemain = creditRemain;\r\n this.formFilterService.form.get('creditRemain')?.setValue(creditRemain.replace('.', ','));\r\n this.formService.form.get('mortgage')?.get('mortgageCreditRemain')?.setValue(creditRemain.replace('.', ','));\r\n }\r\n\r\n // Если есть insuredBirthDate в параметрах url, то используем его\r\n const insuredBirthDate: string | null = lowerCaseParams['insuredbirthdate'];\r\n if (insuredBirthDate) {\r\n urlParams.insuredBirthDate = insuredBirthDate;\r\n this.formFilterService.form.get('insuredBirthDate')?.setValue(insuredBirthDate);\r\n }\r\n\r\n // Если есть insuredGender в параметрах url, то используем его\r\n const insuredGender: string | null = lowerCaseParams['insuredgender'];\r\n if (insuredGender) {\r\n urlParams.insuredGender = insuredGender;\r\n this.formFilterService.form.get('insuredGender')?.setValue(insuredGender);\r\n }\r\n\r\n // Если есть contractNumber в параметрах url, то используем его\r\n const contractNumber: string | null = lowerCaseParams['contractnumber'];\r\n if (contractNumber) {\r\n urlParams.contractNumber = contractNumber;\r\n this.formService.form.get('mortgage')?.get('mortgageCreditNumber')?.setValue(contractNumber);\r\n }\r\n\r\n // Если есть mortgageStartDate в параметрах url, то используем его\r\n const mortgageStartDate: string | null = lowerCaseParams['mortgagestartdate'];\r\n if (mortgageStartDate) {\r\n urlParams.mortgageStartDate = mortgageStartDate;\r\n this.formService.form.get('mortgagePolicyDate')?.get('mortgageStartDate')?.setValue(mortgageStartDate);\r\n }\r\n\r\n const platformId: string | null = lowerCaseParams['platformid'];\r\n if (platformId) {\r\n urlParams.platformId = platformId;\r\n }\r\n\r\n const webMasterID: string | null = lowerCaseParams['webmasterid'];\r\n if (webMasterID) {\r\n urlParams.webMasterID = webMasterID;\r\n }\r\n\r\n const utmSource: string | null = lowerCaseParams['utm_source'];\r\n if (utmSource) {\r\n urlParams.utmSource = utmSource;\r\n }\r\n\r\n const utmMedium: string | null = lowerCaseParams['utm_medium'];\r\n if (utmMedium) {\r\n urlParams.utmMedium = utmMedium;\r\n }\r\n\r\n const utmMid: string | null = lowerCaseParams['utm_mid'];\r\n if (utmMid) {\r\n urlParams.utmMid = utmMid;\r\n }\r\n\r\n const utmCampaign: string | null = lowerCaseParams['utm_campaign'];\r\n if (utmCampaign) {\r\n urlParams.utmCampaign = utmCampaign;\r\n }\r\n\r\n const utmContent: string | null = lowerCaseParams['utm_content'];\r\n if (utmContent) {\r\n urlParams.utmContent = utmContent;\r\n }\r\n\r\n const utmTerm: string | null = lowerCaseParams['utm_term'];\r\n if (utmTerm) {\r\n urlParams.utmTerm = utmTerm;\r\n }\r\n\r\n // Если есть offerId в параметрах url, то используем его\r\n const offerId: string | null = lowerCaseParams['offerid'];\r\n if (offerId) {\r\n urlParams.offerId = offerId;\r\n this.offerIdFromUrlParams = offerId;\r\n }\r\n\r\n return urlParams;\r\n }\r\n\r\n\r\n // Создаем новую заявку\r\n public createApplication(): Observable {\r\n // Создаем ссылку\r\n const url: URL = new URL(window.location.href);\r\n const urlParams = this.getUrlParams();\r\n const request: IApplicationRequest = {\r\n apiKey: this.settingsService.apiKey,\r\n productType: 'Mortgage',\r\n successPaymentUrl: url.origin + '/success',\r\n returnClientChannelType: this.srcUrlParam || undefined,\r\n clientId: this.clientId,\r\n channelType: \"Widget\",\r\n SourceUrl: url.href,\r\n source: urlParams.src,\r\n platformId: urlParams.platformId,\r\n webMasterID: urlParams.webMasterID,\r\n cpaClientUid: urlParams.CpaClientUid,\r\n cpaClientUid2: urlParams.CpaClientUid2,\r\n utmSource: urlParams.utmSource,\r\n utmMedium: urlParams.utmMedium,\r\n utm: getUtmData(urlParams),\r\n loyalty: urlParams.loyalty,\r\n localTime: CalendarHelper.getLocalDateTimeString(),\r\n }\r\n\r\n return this.post(environment.apiUrl + 'app/new', request)\r\n .pipe(\r\n map((res) => {\r\n if (res.value && res.value?.abTestingGroups && res.value?.abTestingGroups.alfaIdABTestingGroup) {\r\n this.alfaIdABTestingGroup = res.value?.abTestingGroups.alfaIdABTestingGroup;\r\n }\r\n if (res.value && res.value.applicationId) {\r\n this.applicationId = res.value.applicationId;\r\n }\r\n\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError, this.getUrlParams());\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.NewResultError, this.getUrlParams());\r\n }\r\n\r\n return res;\r\n }),\r\n concatMap(() => this.setWidgetDisplayed(this.getUrlParams())),\r\n map((res) => {\r\n this.setWidgetDisplayedStatus = true;\r\n return res;\r\n }),\r\n catchError(error => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon, this.getUrlParams());\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorAppNew, this.getUrlParams());\r\n return of(null);\r\n })\r\n );\r\n\r\n }\r\n\r\n setWidgetDisplayed(urlParams: IUrlParams): Observable {\r\n const request = {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: this.applicationId\r\n };\r\n\r\n if (urlParams && urlParams?.closeNewRequest && urlParams.applicationId) {\r\n this.applicationId = urlParams.applicationId;\r\n this.formService.form.get('applicationId')?.setValue(urlParams.applicationId);\r\n return new Observable(subscriber => subscriber.next({applicationId: urlParams.applicationId}));\r\n } else {\r\n this.formService.form.get('applicationId')?.setValue(this.applicationId);\r\n return this.post(environment.apiUrl + 'app/SetStatusWidgetDisplayed', request)\r\n .pipe(take(1),\r\n tap((res: any) => {\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError, this.getUrlParams());\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.SetStatusWidgetDisplayedResultError, this.getUrlParams());\r\n }\r\n }),\r\n catchError(error => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon, this.getUrlParams());\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorSetStatusWidgetDisplayed, this.getUrlParams());\r\n return of([]);\r\n })\r\n );\r\n }\r\n }\r\n\r\n // Получаем clientId из localStorage или генерируем новый\r\n private getClientId(): Observable {\r\n const clientIdFromLocalStorage = localStorage.getItem('clientId');\r\n // Если clientId есть в localStorage, то возвращаем его\r\n if (clientIdFromLocalStorage) {\r\n this.clientId = clientIdFromLocalStorage;\r\n return new Observable(subscriber => subscriber.next(clientIdFromLocalStorage));\r\n } else {\r\n // Иначе, генерируем новый clientId и сохраняем его в localStorage\r\n return new Observable(subscriber => {\r\n const generateClientId = uuidv4();\r\n this.clientId = generateClientId;\r\n localStorage.setItem('clientId', generateClientId);\r\n subscriber.next(generateClientId);\r\n });\r\n }\r\n }\r\n\r\n public error(message: string | null = null, logged = false): void {\r\n if (message != null) {\r\n this._errorMessages.push(message);\r\n }\r\n\r\n if (!logged) {\r\n this.postLocal('log', {\r\n applicationId: this.formService.form?.get('applicationId')?.value,\r\n message\r\n })\r\n .pipe(take(1))\r\n .subscribe({\r\n next: () => {\r\n },\r\n error: () => {\r\n }\r\n });\r\n }\r\n\r\n console.log('тут раньше в осаго был переход на страницу ошибки');\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// Данные контента\r\nimport * as Content from '../../../assets/data/content.json';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContentService {\r\n public content = Content;\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {environment} from '../../../environments/environment';\r\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\r\nimport {Observable} from 'rxjs';\r\nimport {DaData} from '../../shared/enums/da-data.enum';\r\nimport {map, switchMap} from 'rxjs/operators';\r\n\r\n// Сервис DaData\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DadataService {\r\n\r\n constructor(private readonly http: HttpClient) {\r\n }\r\n\r\n // Адрес сервера DaData\r\n private url = 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/';\r\n // Параметры запроса\r\n private headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n Authorization: 'Token ' + environment.dadataKey\r\n });\r\n // Опции\r\n private options = {\r\n method: 'POST',\r\n mode: 'cors',\r\n body: {}\r\n };\r\n\r\n public suggestionAddress(query: string, part: string): Observable {\r\n\r\n let url = '';\r\n let body = {};\r\n let filterFiasLevel = false;\r\n\r\n switch (part) {\r\n case DaData.ADDRESS:\r\n body = {\r\n from_bound: {value: 'region'},\r\n to_bound: {value: 'house'}\r\n };\r\n filterFiasLevel = true;\r\n url = this.url + 'address';\r\n break;\r\n case DaData.CITY:\r\n body = {\r\n from_bound: {value: 'city'},\r\n to_bound: {value: 'city'}\r\n };\r\n filterFiasLevel = true;\r\n url = this.url + 'address';\r\n break;\r\n case DaData.ADDRESS_FULL:\r\n body = {};\r\n url = this.url + 'address';\r\n break;\r\n case DaData.SURNAME:\r\n body = {\r\n parts: ['SURNAME']\r\n };\r\n url = this.url + 'fio';\r\n break;\r\n case DaData.NAME:\r\n body = {\r\n parts: ['NAME']\r\n };\r\n url = this.url + 'fio';\r\n break;\r\n case DaData.PATRONYMIC:\r\n body = {\r\n parts: ['PATRONYMIC']\r\n };\r\n url = this.url + 'fio';\r\n break;\r\n case DaData.FMS_UNIT:\r\n body = {\r\n parts: ['FMS_UNIT']\r\n };\r\n url = this.url + 'fms_unit';\r\n break;\r\n default:\r\n return new Observable();\r\n }\r\n\r\n this.options.body = {\r\n query,\r\n count: 7,\r\n ...body\r\n };\r\n\r\n const headers = this.headers;\r\n const requestOptions = {headers};\r\n return this.http.post(url, this.options.body, requestOptions)\r\n .pipe(\r\n map((data: any) => data && data.suggestions\r\n .map((item: any, i: number) => {\r\n return {\r\n id: i,\r\n value: item.value,\r\n data: item?.data\r\n };\r\n })),\r\n );\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\n\r\n// Перечисления\r\nimport { ROUTES } from '../../shared/enums/routes.enum';\r\n\r\n// Сервисы\r\nimport { ValidationService } from '../../shared/services/validation.service';\r\nimport { MortgageService } from '../../shared/services/mortgage.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PermitRouteService {\r\n\r\n constructor(private readonly validationService: ValidationService) {\r\n\r\n }\r\n\r\n public isPermitRoute(url: string): Observable | Promise | boolean | UrlTree {\r\n let isPermit = false;\r\n switch (url) {\r\n case(ROUTES.MainPage): {\r\n isPermit = true;\r\n break;\r\n }\r\n case(ROUTES.Form): {\r\n isPermit = this.validationService.validationFilterFormPage();\r\n break;\r\n }\r\n\r\n }\r\n\r\n return isPermit;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { environment } from '../../../environments/environment';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SettingsService {\r\n // apiKey\r\n public apiKey = environment.apiKey;\r\n\r\n constructor() {\r\n }\r\n}\r\n","import {Component, EventEmitter, inject, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {FormGroup, UntypedFormGroup} from \"@angular/forms\";\r\nimport {EMPTY, Subject, Subscription} from \"rxjs\";\r\n\r\n// Сервисы\r\nimport {FormService} from \"../../../../shared/services/form.service\";\r\nimport {YandexMetrikaService} from \"../../../../shared/services/yandex-metrika.service\";\r\n\r\n// Перечисления\r\nimport {DaData} from \"../../../../shared/enums/da-data.enum\";\r\nimport {DadataService} from \"../../../../core/services/dadata.service\";\r\nimport {debounceTime, switchMap, takeUntil} from \"rxjs/operators\";\r\nimport {checkIsHiddenBaseAmount} from \"../../../../shared/functions/checkIsHiddenBaseAmount\";\r\nimport { environment } from '../../../../../environments/environment';\r\nimport {MortgageService} from \"../../../../shared/services/mortgage.service\";\r\nimport { IBankListResponce, IProfession } from '../../../../shared/interface/bank-list';\r\n\r\n@Component({\r\n selector: 'app-borrower-form',\r\n templateUrl: './borrower-form.component.html',\r\n styleUrls: ['./borrower-form.component.scss']\r\n})\r\nexport class BorrowerFormComponent implements OnInit, OnDestroy {\r\n\r\n // Событие заполненной формы контактов\r\n @Output() borrowerFormComplete: EventEmitter = new EventEmitter();\r\n // Форма заемщика заблочена\r\n @Input() isBorrowerFormDisabled!: boolean;\r\n // Уже искали офферов, значит форма заполнена и теперь толкьо сохраняем ее без того что бы идти дальше по степам\r\n @Input() isApproveOffersComplete!: boolean;\r\n\r\n public mortgageService = inject(MortgageService);\r\n\r\n constructor(\r\n public readonly formService: FormService,\r\n private readonly ym: YandexMetrikaService,\r\n private readonly dadataService: DadataService) {\r\n }\r\n\r\n public bankSystemName = environment.partnerSystemName;\r\n // Форма контактов\r\n public formBorrower = (this.formService.form.get('borrower') as UntypedFormGroup);\r\n // Подписка\r\n private _subscription = new Subscription();\r\n // Индикатор загрузки\r\n public isLoading = false;\r\n // DaData системные имена\r\n public daDataSystemName = DaData;\r\n public professions: IProfession[] = [];\r\n private destroy$ = new Subject();\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n this.loadProfessions();\r\n this.subscribeHouseNumber()\r\n }\r\n public ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this._subscription.unsubscribe();\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n // Заполнили форму заемщика\r\n public onSubmit(isSaveForm: boolean): void {\r\n this.formBorrower.markAllAsTouched();\r\n if (this.formBorrower.invalid) return;\r\n\r\n this.formService.isBorrowerFormComplete = true;\r\n\r\n this.ym.onYandexReachGoal('BORROWER_GOAL');\r\n\r\n this.borrowerFormComplete.emit(isSaveForm);\r\n }\r\n\r\n // Выбрали значение \"Кем выдан паспорт\"\r\n public changeBorrowerPassportIssuer(event: any): void {\r\n if (event?.item?.data?.code) {\r\n this.formBorrower.get('borrowerDepartmentCode')?.setValue(event?.item?.data?.code);\r\n }\r\n }\r\n\r\n // Выбрали значение \"Код подразделения\"\r\n public changeBorrowerDepartmentCode(event: any): void {\r\n if (event?.item?.data?.name) {\r\n this.formBorrower.get('borrowerPassportIssuer')?.setValue(event?.item?.data?.name);\r\n }\r\n if (event?.item?.data?.code) {\r\n this.formBorrower.get('borrowerDepartmentCode')?.setValue(event?.item?.data?.code);\r\n }\r\n }\r\n\r\n // Подписка на контролы формы\r\n private subscribeHouseNumber(): void {\r\n const {\r\n borrowerAddress,\r\n borrowerHouseNumber,\r\n borrowerAddressFullDaData\r\n } = this.formBorrower.controls;\r\n\r\n const insuranceObjectFormGroup: FormGroup = this.formService.form.get('insuranceObject') as FormGroup;\r\n const {\r\n insuranceObjectAddressSameAsInsurer,\r\n } = insuranceObjectFormGroup.controls;\r\n\r\n this._subscription.add(\r\n borrowerAddress.valueChanges.pipe(\r\n debounceTime(300),\r\n switchMap((value) => {\r\n if (borrowerHouseNumber.value) {\r\n return this.dadataService.suggestionAddress(\r\n value + ', кв ' + borrowerHouseNumber.value,\r\n DaData.ADDRESS_FULL\r\n ).pipe(\r\n takeUntil(this.destroy$) // Отмена запроса при уничтожении subject\r\n );\r\n } else {\r\n // Вернуть EMPTY, если borrowerHouseNumber.value пусто\r\n return EMPTY;\r\n }\r\n })\r\n ).subscribe((res) => {\r\n const daData = {value: res[0]?.value, ...res[0]?.data};\r\n borrowerAddressFullDaData.setValue(daData);\r\n this.changeInsuranceObjectAddress(daData);\r\n })\r\n );\r\n\r\n this._subscription.add(\r\n borrowerHouseNumber.valueChanges.pipe(\r\n debounceTime(300),\r\n switchMap((value) => {\r\n\r\n value ? insuranceObjectAddressSameAsInsurer.enable() : insuranceObjectAddressSameAsInsurer.disable();\r\n if (!value) {\r\n insuranceObjectAddressSameAsInsurer.setValue(false);\r\n } else {\r\n insuranceObjectAddressSameAsInsurer.setValue(true);\r\n }\r\n\r\n if (borrowerAddress.value) {\r\n return this.dadataService.suggestionAddress(\r\n borrowerAddress.value + ', кв ' + value,\r\n DaData.ADDRESS_FULL\r\n ).pipe(\r\n takeUntil(this.destroy$)\r\n );\r\n } else {\r\n // Вернуть EMPTY, если borrowerHouseNumber.value пусто\r\n return EMPTY;\r\n }\r\n\r\n })\r\n ).subscribe((res) => {\r\n const daData = {value: res[0]?.value, ...res[0]?.data};\r\n borrowerAddressFullDaData.setValue(daData);\r\n this.changeInsuranceObjectAddress(daData);\r\n })\r\n );\r\n }\r\n\r\n // Выбрали адрес квартиры\r\n public changeInsuranceObjectAddress(data: any): void {\r\n const insuranceObjectFormGroup: FormGroup = this.formService.form.get('insuranceObject') as FormGroup;\r\n\r\n const {\r\n insuranceBaseAmount,\r\n kadastr,\r\n insuranceObjectSquare,\r\n insuranceObjectAddressSameAsInsurer,\r\n } = insuranceObjectFormGroup.controls;\r\n\r\n this.formService.insuranceObjectSquareIsHidden = data?.flat_area !== null;\r\n this.formService.insuranceBaseAmountIsHidden = checkIsHiddenBaseAmount(data);\r\n\r\n if (insuranceObjectAddressSameAsInsurer.value) {\r\n if (data?.flat_cadnum) {\r\n kadastr.setValue(data?.flat_cadnum);\r\n this.formService.kadastrIsHidden = false;\r\n } else {\r\n // kadastr.reset();\r\n this.formService.kadastrIsHidden = true;\r\n }\r\n\r\n if (data?.flat_area) {\r\n const flatArea = data?.flat_area;\r\n insuranceObjectSquare.setValue(flatArea);\r\n if (data?.square_meter_price) {\r\n const price = Number((data?.flat_area * data?.square_meter_price).toString().replace(',', '.')).toLocaleString('ru-RU', {\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 0,\r\n useGrouping: true\r\n });\r\n insuranceBaseAmount.setValue(data.flat_price ? data.flat_price : price.replace(/\\s/g, ''));\r\n }\r\n } else {\r\n // insuranceObjectSquare.reset();\r\n // insuranceBaseAmount.reset();\r\n }\r\n }\r\n }\r\n\r\n public loadProfessions(): void {\r\n this._subscription.add(\r\n this.mortgageService.getProfessions().subscribe((response: IBankListResponce) => {\r\n if (response.result) {\r\n this.professions = response.value || []; // Сохраняем профессии в переменную\r\n } else {\r\n console.error('Ошибка при получении профессий', response.error);\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Заёмщик
\r\n
Человек, на которого оформлена ипотека
\r\n
\r\n \r\n {{formBorrower.value?.borrowerFirstName}} {{formBorrower.value?.borrowerMiddleName}} {{formBorrower.value?.borrowerLastName}}\r\n \r\n \r\n Заёмщик\r\n \r\n
\r\n
\r\n \r\n заемщик\r\n \r\n \r\n Человек, на которого оформлена ипотека\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
Паспортные данные
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {UntypedFormGroup} from \"@angular/forms\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {FormService} from \"../../../../shared/services/form.service\";\r\nimport {conformToMask} from \"angular2-text-mask\";\r\nimport {MASKS} from \"../../../../shared/constants/masks\";\r\nimport {IMask} from \"../../../../shared/interface/masks.interface\";\r\nimport {MortgageService} from \"../../../../shared/services/mortgage.service\";\r\nimport {YandexMetrikaService} from \"../../../../shared/services/yandex-metrika.service\";\r\n\r\n@Component({\r\n selector: 'app-contact-form',\r\n templateUrl: './contact-form.component.html',\r\n styleUrls: ['./contact-form.component.scss']\r\n})\r\nexport class ContactFormComponent implements OnInit, OnDestroy {\r\n // Событие заполненной формы контактов\r\n @Output() contactFormComplete: EventEmitter = new EventEmitter();\r\n // Форма контактов заполнена\r\n @Input() isContactFormComplete!: boolean;\r\n // Уже искали офферов, значит форма заполнена и теперь толкьо сохраняем ее без того что бы идти дальше по степам\r\n @Input() isApproveOffersComplete!: boolean;\r\n constructor(\r\n public readonly formService: FormService,\r\n private readonly mortgageService: MortgageService,\r\n private readonly ym: YandexMetrikaService) {\r\n }\r\n\r\n // Форма контактов\r\n public formContacts = (this.formService.form.get('contacts') as UntypedFormGroup);\r\n // Подписка\r\n private _subscription = new Subscription();\r\n // Индикатор загрузки\r\n public isLoading = false;\r\n\r\n get phoneMask(): string {\r\n const phoneMask = conformToMask(\r\n this.formContacts.value?.phone,\r\n MASKS.find((item: IMask) => item.systemName === 'phone')?.mask,\r\n {guide: false}\r\n );\r\n return phoneMask.conformedValue;\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n }\r\n public ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n // Заполнили форму контактов\r\n public onSubmit(isSaveForm: boolean): void {\r\n this.formContacts.markAllAsTouched();\r\n if (this.formContacts.invalid) return;\r\n\r\n const phone = this.formContacts.value?.phone;\r\n const email = this.formContacts.value?.email;\r\n\r\n if (!this.isApproveOffersComplete) {\r\n this.mortgageService.sendContacts(phone, email).subscribe();\r\n }\r\n\r\n this.formService.isContactFormComplete = true;\r\n\r\n this.ym.onYandexReachGoal('CONTACTS_GOAL');\r\n\r\n this.contactFormComplete.emit(isSaveForm);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Ваши контакты
\r\n
Отправим полис на электронную почту после оплаты
\r\n
{{ phoneMask }}
\r\n
{{formContacts.value?.email}}
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n","import {AfterViewInit, Component, OnDestroy, OnInit} from '@angular/core';\r\nimport {NavigationService} from \"../../../../shared/services/navigation.service\";\r\nimport {PermitRouteService} from \"../../../../core/services/permit-route.service\";\r\nimport {FormService} from \"../../../../shared/services/form.service\";\r\nimport {Observable, Subscription, of, throwError} from \"rxjs\";\r\nimport {NavigationEnd, Router} from \"@angular/router\";\r\nimport { filter } from 'rxjs/operators';\r\n\r\n// Сервисы\r\nimport {MortgageService} from \"../../../../shared/services/mortgage.service\";\r\nimport {FormFilterService} from \"../../../../shared/services/form-filter.service\";\r\nimport { AppService } from '../../../../core/services/app.service';\r\nimport {YandexMetrikaService} from \"../../../../shared/services/yandex-metrika.service\";\r\n\r\n// Перечисления\r\nimport {ROUTES} from \"../../../../shared/enums/routes.enum\";\r\n\r\n// Интерфейсы\r\nimport {ISaveMortgageApplicationResponce} from \"../../../../shared/interface/mortgage-application.interface\";\r\nimport {IOffer} from \"../../../../shared/interface/offers.interface\";\r\nimport {catchError, finalize} from \"rxjs/operators\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport { environment } from '../../../../../environments/environment';\r\n\r\n@Component({\r\n selector: 'app-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss']\r\n})\r\nexport class FormComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n constructor(private readonly navigationService: NavigationService,\r\n private readonly permitRouteService: PermitRouteService,\r\n public readonly formService: FormService,\r\n public readonly formFilterService: FormFilterService,\r\n public readonly mortgageService: MortgageService,\r\n private readonly appService: AppService,\r\n private readonly ym: YandexMetrikaService,\r\n private readonly router: Router) {\r\n if (!this.permitRouteService.isPermitRoute(ROUTES.Form)) {\r\n this.navigateToBack(new Event('click'));\r\n }\r\n }\r\n\r\n public bankSystemName = environment.partnerSystemName;\r\n\r\n // Индикатор загрузки\r\n public isLoading = false;\r\n public isLoadingFormCache = false;\r\n // Подписка\r\n private subscriptions: Subscription[] = [];\r\n // Форма\r\n public form = this.formService.form;\r\n\r\n // Получили офферов\r\n public isApproveOffersComplete: boolean = false;\r\n // Офферы\r\n public offers: any = [];\r\n // Ошибка\r\n public isError: boolean = false;\r\n // Ищем апрув офферы\r\n public isApproveOffer: boolean = true;\r\n // Документ\r\n public agreement = true;\r\n\r\n private checkArmApplication(): Observable {\r\n if (!this.appService.isArmApplication)\r\n return of();\r\n\r\n return this.appService.armApplication$;\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n this.subscriptions.push(\r\n this.router.events\r\n .pipe(filter((event: any) => event.routerEvent instanceof NavigationEnd))\r\n .subscribe((event: any) => window.scrollTo({ top: 0, behavior: 'smooth' }))\r\n );\r\n\r\n this.ym.onYandexReachGoal('FORM_GOAL');\r\n\r\n if (this.appService.isArmApplication)\r\n this.getFormDataFromARM();\r\n else {\r\n // Сохраняем форму в локал сторедж только если не пришли в форму по ссылке из почты\r\n const urlParams = this.appService.getUrlParams();\r\n\r\n if (urlParams.offerId === '0') {\r\n this.getFormDataFromLocalStorage();\r\n }\r\n }\r\n\r\n this.showDefaultForm();\r\n }\r\n\r\n // После инициализации контента\r\n public ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n // Уничтожение\r\n public ngOnDestroy(): void {\r\n this.mortgageService.selectedOffer = null;\r\n this.mortgageService.offers = [];\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n this.formService.isContactFormComplete = false;\r\n this.formService.isBorrowerFormComplete = true;\r\n this.formService.isMortgageFormComplete = true;\r\n this.formService.isPolicyFormComplete = true;\r\n this.formService.isInsuranceFormComplete = true;\r\n this.formService.isBorrowerFormDisabled = true;\r\n this.formService.isMortgageFormDisabled = true;\r\n this.formService.isPolicyFormDisabled = true;\r\n this.formService.isInsuranceFormDisabled = true;\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n public navigateToBack(event: Event): void {\r\n event.preventDefault();\r\n this.navigationService.navigate('/');\r\n }\r\n\r\n // Заполнили форму контактов\r\n public contactFormComplete(isSaveForm: boolean): void {\r\n this.mortgageService.count = 1;\r\n if (isSaveForm) {\r\n this.triggerNewGetOffers();\r\n } else {\r\n if (this.formService.isBorrowerFormDisabled) {\r\n if (this.formService.isContactFormComplete) {\r\n this.formService.isBorrowerFormComplete = false;\r\n } else {\r\n this.formService.isBorrowerFormComplete = true;\r\n }\r\n }\r\n }\r\n // Теперь форма заемщика не заблочена\r\n this.formService.isBorrowerFormDisabled = false;\r\n }\r\n\r\n // Заполнили форму контактов\r\n public borrowerFormComplete(isSaveForm: boolean): void {\r\n this.mortgageService.count = 1;\r\n // this.formService.isBorrowerFormComplete = !this.formService.isBorrowerFormComplete;\r\n if (isSaveForm) {\r\n this.inspectFormValid();\r\n } else {\r\n if (this.formService.isMortgageFormDisabled) {\r\n if (this.formService.isBorrowerFormComplete) {\r\n this.formService.isMortgageFormComplete = false;\r\n } else {\r\n this.formService.isMortgageFormComplete = true;\r\n }\r\n }\r\n }\r\n // Теперь форма ипотеки не заблочена\r\n this.formService.isMortgageFormDisabled = false;\r\n }\r\n\r\n // Заполнили форму ипотеки\r\n public mortgageFormComplete(isSaveForm: boolean): void {\r\n this.mortgageService.count = 1;\r\n // this.formService.isMortgageFormComplete = !this.formService.isMortgageFormComplete;\r\n if (isSaveForm) {\r\n this.triggerNewGetOffers();\r\n } else {\r\n if (this.formService.isPolicyFormDisabled) {\r\n if (this.formService.isMortgageFormComplete) {\r\n this.formService.isPolicyFormComplete = false;\r\n } else {\r\n this.formService.isPolicyFormComplete = true;\r\n }\r\n }\r\n }\r\n // Теперь форма даты полиса не заблочена\r\n this.formService.isPolicyFormDisabled = false;\r\n }\r\n\r\n // Заполнили форму ипотеки\r\n public policyFormComplete(isSaveForm: boolean): void {\r\n this.mortgageService.count = 1;\r\n // this.formService.isPolicyFormComplete = !this.formService.isPolicyFormComplete;\r\n if (isSaveForm) {\r\n this.triggerNewGetOffers();\r\n } else {\r\n if (this.formService.isInsuranceFormDisabled) {\r\n if (this.formService.isPolicyFormComplete && this.formFilterService.form?.get('product')?.value !== 'Life') {\r\n this.formService.isInsuranceFormComplete = false;\r\n } else {\r\n this.formService.isInsuranceFormComplete = true;\r\n if (this.formFilterService.form?.get('product')?.value === 'Life') {\r\n this.getOffers();\r\n }\r\n }\r\n }\r\n }\r\n // Теперь форма страхователя не заблочена\r\n this.formService.isInsuranceFormDisabled = this.formFilterService.form?.get('product')?.value === 'Life';\r\n }\r\n\r\n // Заполнили форму страхователя\r\n public insuranceFormComplete(isGetOffers: boolean): void {\r\n this.mortgageService.count = 1;\r\n this.formService.isInsuranceFormComplete = !this.formService.isInsuranceFormComplete;\r\n\r\n if (isGetOffers && this.formService.isInsuranceFormComplete) {\r\n this.getOffers();\r\n\r\n this.ym.onYandexReachGoal('FORM_FINISH_GOAL');\r\n\r\n this.isApproveOffersComplete = true;\r\n }\r\n }\r\n\r\n // Получить предложения\r\n public getOffers(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n this.isError = false;\r\n this.isLoading = true;\r\n const formServiceValue = this.formService.form.value;\r\n const formFilterServiceValue = this.formFilterService.form.value;\r\n if (this.isApproveOffersComplete) {\r\n this.subscriptions.push(\r\n this.mortgageService.repeatGetOffers(formServiceValue, formFilterServiceValue)\r\n .pipe(finalize(() => this.isLoading = false))\r\n .subscribe((res) => {\r\n const approveOffer = res.value?.offers.find((offer: IOffer) => offer.status === 'Approved');\r\n if (approveOffer) {\r\n this.isApproveOffer = true;\r\n this.offers = res.value?.offers.filter((offer: IOffer) => offer.status === 'Approved');\r\n } else {\r\n this.isApproveOffer = false;\r\n this.offers = res.value?.offers.filter((offer: IOffer) => offer.status === 'PreApproved');\r\n\r\n }\r\n })\r\n );\r\n } else {\r\n this.subscriptions.push(\r\n this.mortgageService.saveMortgageApplication(formServiceValue, formFilterServiceValue)\r\n .pipe(\r\n finalize(() => this.isLoading = false),\r\n catchError((error: any) => {\r\n this.isError = true;\r\n return throwError(error);\r\n })\r\n )\r\n .subscribe((res: ISaveMortgageApplicationResponce) => {\r\n const approveOffer = res.value?.offers.find((offer: IOffer) => offer.status === 'Approved');\r\n if (approveOffer) {\r\n this.isApproveOffer = true;\r\n this.offers = res.value?.offers.filter((offer: IOffer) => offer.status === 'Approved');\r\n } else {\r\n this.isApproveOffer = false;\r\n this.offers = res.value?.offers.filter((offer: IOffer) => offer.status === 'PreApproved');\r\n\r\n // Повторный запрос\r\n // if (this.mortgageService.count === 1) {\r\n // this.mortgageService.count + 1;\r\n // this.getOffers();\r\n // }\r\n\r\n }\r\n })\r\n );\r\n }\r\n\r\n }\r\n\r\n // Проверяем валидность формы и переводим клиента на шаг где форма невалидна\r\n public inspectFormValid(): void {\r\n if (this.form.invalid) {\r\n // Если форма с данными объекта страхования невалидна, то перед поиском офферов переходим на эту форму\r\n if (this.form.get('insuranceObject')?.invalid) {\r\n this.borrowerFormComplete(false);\r\n this.formService.isInsuranceFormComplete = false;\r\n this.formService.form.get('insuranceObject')?.markAllAsTouched();\r\n }\r\n } else {\r\n this.triggerNewGetOffers();\r\n }\r\n\r\n }\r\n\r\n // Новый поиск офферов после того как предыдущий не овтетил и выбрали нового\r\n public triggerNewGetOffers(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n this.isLoading = true;\r\n const formServiceValue = this.formService.form.value;\r\n const formFilterServiceValue = this.formFilterService.form.value;\r\n this.subscriptions.push(\r\n this.mortgageService.repeatGetOffersAfterNotAprove(formServiceValue, formFilterServiceValue)\r\n .pipe(finalize(() => this.isLoading = false))\r\n .subscribe((res: ISaveMortgageApplicationResponce) => {\r\n const approveOffer = res.value?.offers.find((offer: IOffer) => offer.status === 'Approved');\r\n if (approveOffer) {\r\n this.isApproveOffer = true;\r\n this.offers = res.value?.offers.filter((offer: IOffer) => offer.status === 'Approved');\r\n } else {\r\n this.isApproveOffer = false;\r\n this.offers = res.value?.offers.filter((offer: IOffer) => offer.status === 'PreApproved')\r\n }\r\n })\r\n );\r\n }\r\n\r\n // Проверяем даныне формы в локальном хранилище\r\n private getFormDataFromLocalStorage(): void {\r\n // Получаем данные из локального хранилища, если они есть\r\n const formData = this.formService.getFormFromLocalStorage();\r\n\r\n if (formData) {\r\n this.form.patchValue(formData);\r\n // (this.form.get('borrower') as FormGroup)?.get('borrowerPassportIssuer')?.setValue(formData?.borrower?.borrowerPassportIssuerDadata?.value);\r\n // (this.form.get('borrower') as FormGroup)?.get('borrowerDepartmentCode')?.setValue(formData?.borrower?.borrowerPassportIssuerDadata?.code);\r\n }\r\n\r\n // Слушаем изменения значений в форме и сохраняем их в локальное хранилище\r\n this.form.valueChanges.subscribe((value) => {\r\n this.formService.saveFormToLocalStorage();\r\n });\r\n }\r\n\r\n // Проверяем даныне формы из АРМ\r\n private getFormDataFromARM(): void {\r\n // Получаем данные из АРМ, если они есть\r\n const formData = this.appService.armApplication?.application;\r\n\r\n if (formData) {\r\n this.form.patchValue(formData);\r\n // (this.form.get('borrower') as FormGroup)?.get('borrowerPassportIssuer')?.setValue(formData?.borrower?.borrowerPassportIssuerDadata?.value);\r\n // (this.form.get('borrower') as FormGroup)?.get('borrowerDepartmentCode')?.setValue(formData?.borrower?.borrowerPassportIssuerDadata?.code);\r\n }\r\n }\r\n\r\n // Отображаем по умолчанию форму\r\n public showDefaultForm(): void {\r\n if (this.formService.isContactFormComplete\r\n && this.formService.isBorrowerFormComplete\r\n && this.formService.isMortgageFormComplete\r\n && this.formService.isPolicyFormComplete\r\n && this.formService.isInsuranceFormComplete) {\r\n this.formService.isInsuranceFormComplete = false;\r\n }\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n

Оформление полиса

\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n \r\n Полис не подтвержден страховой компанией\r\n

Попробуйте выбрать другое предложение. Мы сохранили ваши данные, чтобы не заполнять их заново.

\r\n \r\n
\r\n\r\n
0\">\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"Kopeck\"\r\n
\r\n
\r\n
При оплате картой Ozon Банка вернём до 10% от стоимости страховки кешбэком
на карту в течение 90 дней после вступления полиса в силу
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {FormGroup, UntypedFormGroup, Validators} from \"@angular/forms\";\r\nimport {EMPTY, Subject, Subscription} from \"rxjs\";\r\nimport {FormService} from \"../../../../shared/services/form.service\";\r\nimport {DaData} from \"../../../../shared/enums/da-data.enum\";\r\nimport {BsModalRef, BsModalService, ModalOptions} from \"ngx-bootstrap/modal\";\r\nimport {PdfDocViewComponent} from \"../../../../shared/components/pdf-doc-view/pdf-doc-view.component\";\r\nimport {YandexMetrikaService} from \"../../../../shared/services/yandex-metrika.service\";\r\nimport {debounceTime, switchMap, takeUntil} from \"rxjs/operators\";\r\nimport {DadataService} from \"../../../../core/services/dadata.service\";\r\nimport {checkIsHiddenBaseAmount, checkIsHiddenObjectSquare} from \"../../../../shared/functions/checkIsHiddenBaseAmount\";\r\nimport { environment } from '../../../../../environments/environment';\r\n\r\n@Component({\r\n selector: 'app-insurance-object-form',\r\n templateUrl: './insurance-object-form.component.html',\r\n styleUrls: ['./insurance-object-form.component.scss']\r\n})\r\nexport class InsuranceObjectFormComponent implements OnInit, OnDestroy {\r\n // Событие заполненной формы страхователя\r\n @Output() insuranceFormComplete: EventEmitter = new EventEmitter();\r\n // Форма страхователя заполнена\r\n @Input() isInsuranceFormComplete!: boolean;\r\n // Уже искали офферов, значит форма заполнена и теперь толкьо сохраняем ее без того что бы идти дальше по степам\r\n @Input() isApproveOffersComplete!: boolean;\r\n constructor(\r\n private readonly modalService: BsModalService,\r\n public readonly formService: FormService,\r\n private readonly ym: YandexMetrikaService,\r\n private readonly dadataService: DadataService) {\r\n }\r\n\r\n public bankSystemName = environment.partnerSystemName;\r\n\r\n // Форма объекта страхования\r\n public formInsuranceObject = (this.formService.form.get('insuranceObject') as UntypedFormGroup);\r\n public form = this.formService.form;\r\n // Подписка\r\n private subscription = new Subscription();\r\n // Индикатор загрузки\r\n public isLoading = false;\r\n // DaData системные имена\r\n public daDataSystemName = DaData;\r\n private bsModalRef?: BsModalRef;\r\n private destroy$ = new Subject();\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n this.form.get('privacy')?.setValue(true);\r\n\r\n // Если адрес квартиры совпадает с адресом заемщика, то дизейблим поле insuranceObjectAddress\r\n if (this.formInsuranceObject.get('insuranceObjectAddressSameAsInsurer')?.value) {\r\n this.formInsuranceObject.get('insuranceObjectAddress')?.disable();\r\n }\r\n\r\n this.subscribeForm();\r\n this.subscribeHouseNumber();\r\n }\r\n public ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n // Заполнили форму страхователя\r\n public onSubmit(isGetOffers: boolean): void {\r\n this.formInsuranceObject.markAllAsTouched();\r\n if (this.formInsuranceObject.invalid) return;\r\n\r\n this.formService.isInsuranceFormDisabled = false;\r\n\r\n this.ym.onYandexReachGoal('INSURANCE_OBJECT_GOAL');\r\n\r\n this.insuranceFormComplete.emit(isGetOffers);\r\n }\r\n\r\n // Подписка на изменение формы\r\n private subscribeForm(): void {\r\n const formBorrower = (this.formService.form.get('borrower') as UntypedFormGroup);\r\n const borrowerAddressFullDaData = formBorrower.get('borrowerAddressFullDaData')?.value;\r\n const insuranceObjectFormGroup: FormGroup = this.formService.form.get('insuranceObject') as FormGroup;\r\n\r\n this.subscription.add(\r\n this.formInsuranceObject.get('insuranceObjectAddressSameAsInsurer')?.valueChanges\r\n .subscribe((value) => {\r\n const {\r\n insuranceBaseAmount,\r\n kadastr,\r\n insuranceObjectSquare,\r\n insuranceObjectFullAddressDaData,\r\n } = insuranceObjectFormGroup.controls;\r\n // kadastr.reset();\r\n // insuranceObjectSquare.reset();\r\n // insuranceBaseAmount.reset();\r\n\r\n if (value) {\r\n this.changeInsuranceObjectAddress(borrowerAddressFullDaData);\r\n this.formInsuranceObject.get('insuranceObjectAddress')?.disable();\r\n this.formInsuranceObject.get('insuranceHouseNumber')?.disable();\r\n } else {\r\n this.changeInsuranceObjectAddress(borrowerAddressFullDaData);\r\n this.formInsuranceObject.get('insuranceObjectAddress')?.enable();\r\n this.formInsuranceObject.get('insuranceHouseNumber')?.enable();\r\n }\r\n\r\n // Если адрес квартиры совпадает с адресом заемщика, то предзаполняем рыночную стоимость и количество квадратов\r\n this.formService.insuranceObjectSquareIsHidden = checkIsHiddenObjectSquare(borrowerAddressFullDaData);\r\n this.formService.insuranceBaseAmountIsHidden = checkIsHiddenBaseAmount(borrowerAddressFullDaData);\r\n })\r\n );\r\n }\r\n\r\n public showPdfDocModal(src: string): void {\r\n const initialState = {\r\n src,\r\n };\r\n this.bsModalRef = this.modalService.show(PdfDocViewComponent, {\r\n initialState,\r\n class: 'modal-dialog-centered PDFmodal'\r\n });\r\n }\r\n\r\n private subscribeHouseNumber(): void {\r\n const {\r\n insuranceObjectAddress,\r\n insuranceHouseNumber,\r\n insuranceObjectFullAddressDaData\r\n } = this.formInsuranceObject.controls;\r\n\r\n this.subscription.add(\r\n insuranceObjectAddress.valueChanges.pipe(\r\n debounceTime(300),\r\n switchMap((value) => {\r\n if (value && insuranceHouseNumber.value) {\r\n return this.dadataService.suggestionAddress(\r\n value + ', кв ' + insuranceHouseNumber.value,\r\n DaData.ADDRESS_FULL\r\n ).pipe(\r\n takeUntil(this.destroy$)\r\n );\r\n } else {\r\n return EMPTY;\r\n }\r\n })\r\n ).subscribe((res) => {\r\n const daData = {value: res[0]?.value, ...res[0]?.data};\r\n insuranceObjectFullAddressDaData.setValue(daData);\r\n return this.formInsuranceObject.get('insuranceObjectAddressSameAsInsurer')?.value ? EMPTY : this.setDadataResponse(res);\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n insuranceHouseNumber.valueChanges.pipe(\r\n debounceTime(300),\r\n switchMap((value) => {\r\n if (value && insuranceObjectAddress.value) {\r\n return this.dadataService.suggestionAddress(\r\n insuranceObjectAddress.value + ', кв ' + value,\r\n DaData.ADDRESS_FULL\r\n ).pipe(\r\n takeUntil(this.destroy$)\r\n );\r\n } else {\r\n return EMPTY;\r\n }\r\n })\r\n ).subscribe((res) => {\r\n const daData = {value: res[0]?.value, ...res[0]?.data};\r\n insuranceObjectFullAddressDaData.setValue(daData);\r\n return this.formInsuranceObject.get('insuranceObjectAddressSameAsInsurer')?.value ? EMPTY : this.setDadataResponse(res);\r\n })\r\n );\r\n\r\n }\r\n\r\n // Сохраняем данные dadata в форму\r\n private setDadataResponse(daDataRes: any): void {\r\n const {\r\n insuranceObjectFullAddressDaData\r\n } = this.formInsuranceObject.controls;\r\n const daData = {value: daDataRes[0]?.value, ...daDataRes[0]?.data};\r\n insuranceObjectFullAddressDaData.setValue(daData);\r\n // Скрываем или показываем контрол\r\n this.formService.insuranceObjectSquareIsHidden = checkIsHiddenObjectSquare(daData);\r\n this.formService.insuranceBaseAmountIsHidden = checkIsHiddenBaseAmount(daData);\r\n this.changeInsuranceObjectAddress(daData);\r\n }\r\n\r\n // Выбрали адрес квартиры\r\n public changeInsuranceObjectAddress(data: any): void {\r\n const insuranceObjectFormGroup: FormGroup = this.formService.form.get('insuranceObject') as FormGroup;\r\n\r\n const {\r\n insuranceBaseAmount,\r\n kadastr,\r\n insuranceObjectSquare\r\n } = insuranceObjectFormGroup.controls;\r\n\r\n if (data?.flat_cadnum) {\r\n kadastr.setValue(data?.flat_cadnum);\r\n this.formService.kadastrIsHidden = false;\r\n } else {\r\n // kadastr.reset();\r\n this.formService.kadastrIsHidden = true;\r\n }\r\n\r\n if (data?.flat_area) {\r\n const flatArea = data?.flat_area;\r\n insuranceObjectSquare.setValue(flatArea);\r\n if (data?.square_meter_price) {\r\n const price = Number((data?.flat_area * data?.square_meter_price).toString().replace(',', '.')).toLocaleString('ru-RU', {\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 0,\r\n useGrouping: true\r\n });\r\n insuranceBaseAmount.setValue(data.flat_price ? data.flat_price : price.replace(/\\s/g, ''));\r\n }\r\n } else {\r\n // insuranceObjectSquare.reset();\r\n // insuranceBaseAmount.reset();\r\n }\r\n }\r\n\r\n // Статус блокировки \"Адрес квартиры совпадает с адресом регистрации заёмщика\"\r\n public getDisabledStatus(): boolean {\r\n const formBorrower = (this.formService.form.get('borrower') as UntypedFormGroup);\r\n const borrowerAddressFullDaData = formBorrower.get('borrowerHouseNumber')?.value;\r\n return !borrowerAddressFullDaData;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Жильё
\r\n
Которое оформлено в ипотеку
\r\n
Жильё
\r\n
Которое оформлено в ипотеку
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n правилами\r\n предоставления информации\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {AfterViewInit, Component, ElementRef, OnDestroy, OnInit} from '@angular/core';\r\nimport {Observable, of, Subscription} from \"rxjs\";\r\nimport {finalize, switchMap, take} from \"rxjs/operators\";\r\n\r\n// Сервисы\r\nimport {ContentService} from \"../../../../core/services/content.service\";\r\nimport {MortgageService} from \"../../../../shared/services/mortgage.service\";\r\n\r\n// Интерфейсы\r\nimport {IFormFilter} from \"../../../../shared/interface/form-filter.interface\";\r\nimport {IOffer, IOffersResponce} from \"../../../../shared/interface/offers.interface\";\r\nimport {FormFilterService} from \"../../../../shared/services/form-filter.service\";\r\nimport {YandexMetrikaService} from \"../../../../shared/services/yandex-metrika.service\";\r\nimport {OfflineFormComponent} from \"../offline-form/offline-form.component\";\r\nimport {BsModalRef, BsModalService} from \"ngx-bootstrap/modal\";\r\nimport {AppService} from \"../../../../core/services/app.service\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {FormService} from \"../../../../shared/services/form.service\";\r\nimport {IMortgageProductsResponce} from \"../../../../shared/interface/mortgage-products.interface\";\r\n\r\n@Component({\r\n selector: 'app-main',\r\n templateUrl: './main.component.html',\r\n styleUrls: ['./main.component.scss']\r\n})\r\nexport class MainComponent implements OnInit, AfterViewInit, OnDestroy {\r\n constructor(public readonly contentService: ContentService,\r\n public readonly mortgageService: MortgageService,\r\n private readonly formFilterService: FormFilterService,\r\n private readonly elementRef: ElementRef,\r\n private readonly ym: YandexMetrikaService,\r\n private readonly bsModalService: BsModalService,\r\n private readonly appService: AppService,\r\n public readonly formService: FormService) {\r\n }\r\n\r\n radius = 50;\r\n strokeWidth = 5;\r\n circumference = 2 * Math.PI * this.radius;\r\n progress = 0;\r\n timerDuration = 5000;\r\n // Метод для получения стиля dasharray, который зависит от прогресса\r\n getDashArray() {\r\n return `${this.progress} ${this.circumference}`;\r\n }\r\n\r\n startTimer() {\r\n const interval = 1000 / 60; // 60 FPS\r\n const step = (this.circumference / this.timerDuration) * interval;\r\n\r\n const intervalId = setInterval(() => {\r\n this.progress += step;\r\n if (this.progress >= this.circumference) {\r\n this.progress = this.circumference;\r\n clearInterval(intervalId);\r\n }\r\n }, interval);\r\n }\r\n\r\n\r\n // Индикатор загрузки\r\n public isLoading = false;\r\n public offers: any = [];\r\n // Подписка\r\n private subscriptions: Subscription = new Subscription();\r\n\r\n public paymentCountdown = '02:00';\r\n private countdownInterval: any;\r\n // Ссылка на модальное окно\r\n private bsModalRef?: BsModalRef;\r\n // Был произведен поиск аофферов после того как пришли из email\r\n private isChangeCalculateFromEmail = false;\r\n\r\n private checkArmApplication(): Observable {\r\n if (!this.appService.isArmApplication)\r\n return of();\r\n\r\n return this.appService.armApplication$;\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n this.checkFormDataFromLocalStorage();\r\n this.startTimer();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.ym.onYandexReachGoal('MAIN_GOAL');\r\n }\r\n\r\n // Уничтожение\r\n public ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n // Получаем данные формы фильтра и ищем офферов\r\n public getFormValue(formFilterValue: IFormFilter): void {\r\n // Если мы заблочили контролы, остаток по кредиты, дату рождения и гендер, то берем их из параметрво url\r\n // Это сделано для партнера sber\r\n const value = formFilterValue;\r\n const params = this.appService.getUrlParams();\r\n if (params.insuredGender === 'Male' || params.insuredGender === 'Female') {\r\n value.insuredGender = params.insuredGender!;\r\n }\r\n if (params.contractNumber) {\r\n (this.formService.form.get('mortgage') as FormGroup)?.get('mortgageCreditNumber')?.setValue(params.contractNumber);\r\n }\r\n\r\n const formElement = this.elementRef.nativeElement.querySelector('#offers-list');\r\n formElement?.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n\r\n this.ym.onYandexReachGoal('FINISH_FILTER_GOAL');\r\n\r\n this.mortgageService.offers = [];\r\n\r\n if (params.offerId && !this.isChangeCalculateFromEmail) {\r\n this.startPaymentCountdown();\r\n this.isChangeCalculateFromEmail = true;\r\n this.calculateFromEmail(value);\r\n } else {\r\n const product = this.formFilterService.allMortgageProductList.find((item: any) => {\r\n return item.bankId === this.formFilterService.form.value.bankId\r\n && item.productType.toLowerCase() === this.formFilterService.form.value.product.toLowerCase()\r\n && item.mortgagePropertyTypes.find((mortgagePropertyType: string) => mortgagePropertyType.toLowerCase() === this.formFilterService.form.value.mortgagePropertyType.toLowerCase())\r\n });\r\n if (product) {\r\n this.startPaymentCountdown();\r\n this.calculateDefault(value);\r\n }\r\n }\r\n }\r\n\r\n private calculateDefault(formValue: any): void {\r\n // Сохраняем данные форму в локальное хранилище\r\n // this.formService.saveFormToLocalStorage();\r\n // Запрос на получение предварительного расчета\r\n this.subscriptions.add(\r\n this.mortgageService.calculate(formValue)\r\n .pipe(finalize(() => {\r\n this.isLoading = false;\r\n this.stopTimer();\r\n clearInterval(this.countdownInterval);\r\n this.ym.onYandexReachGoal('FINISH_PREAPPROVE_GOAL');\r\n }))\r\n .subscribe((res: IOffersResponce) => {\r\n if (this.mortgageService?.offers && this.mortgageService?.offers?.length > 0) {\r\n } else {\r\n this.bsModalRef = this.bsModalService.show(OfflineFormComponent,\r\n { class: 'offlineForm gray modal-lg' });\r\n }\r\n })\r\n );\r\n }\r\n\r\n private calculateFromEmail(formValue: any): void {\r\n this.subscriptions.add(\r\n this.mortgageService.calculateFromEmail(formValue)\r\n .pipe(finalize(() => {\r\n this.isLoading = false;\r\n this.stopTimer();\r\n clearInterval(this.countdownInterval);\r\n this.ym.onYandexReachGoal('FINISH_PREAPPROVE_GOAL');\r\n }))\r\n .subscribe((res: IOffersResponce) => {\r\n if (this.mortgageService?.offers && this.mortgageService?.offers?.length > 0) {\r\n // this.offers = res.value?.offers.filter((offer: IOffer) => offer.status === 'PreApproved')\r\n } else {\r\n this.bsModalRef = this.bsModalService.show(OfflineFormComponent,\r\n { class: 'offlineForm gray modal-lg' });\r\n }\r\n })\r\n );\r\n }\r\n\r\n stopTimer(): void {\r\n this.paymentCountdown = \"02:00\";\r\n }\r\n\r\n // Счетчик\r\n public startPaymentCountdown() {\r\n\r\n // начинаем обратный отсчет\r\n this.countdownInterval = setInterval(() => {\r\n const timeParts = this.paymentCountdown.split(':');\r\n let minutes = +timeParts[0];\r\n let seconds = +timeParts[1];\r\n\r\n if (minutes === 0 && seconds === 0) {\r\n clearInterval(this.countdownInterval);\r\n return;\r\n }\r\n\r\n if (seconds === 0) {\r\n minutes--;\r\n seconds = 59;\r\n } else {\r\n seconds--;\r\n }\r\n this.isLoading = true;\r\n this.paymentCountdown = `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\r\n }, 1000);\r\n }\r\n\r\n // Проверям данные в локальном хранилище\r\n private checkFormDataFromLocalStorage(): void {\r\n if (this.appService.isArmApplication)\r\n this.getFormDataFromARM();\r\n // Сохраняем форму в локал сторедж только если не пришли в форму по ссылке из почты\r\n else if (this.appService.srcUrlParam !== 'OffersRecivedEmail' && !this.appService.offerIdFromUrlParams && this.appService.dateFromCacheIsNull) {\r\n this.getFormDataFromLocalStorage();\r\n }\r\n\r\n this.showDefaultForm();\r\n }\r\n\r\n // Проверяем даныне формы в локальном хранилище\r\n private getFormDataFromARM(): void {\r\n\r\n // Получаем данные из локального хранилища, если они есть\r\n const formData = this.appService.armApplication?.application;\r\n\r\n if (formData) {\r\n this.formService.form.patchValue(formData);\r\n // (this.formService.form.get('borrower') as FormGroup)?.get('borrowerPassportIssuer')?.setValue(formData?.borrower?.borrowerPassportIssuerDadata?.value);\r\n // (this.formService.form.get('borrower') as FormGroup)?.get('borrowerDepartmentCode')?.setValue(formData?.borrower?.borrowerPassportIssuerDadata?.code);\r\n }\r\n }\r\n\r\n // Проверяем даныне формы в локальном хранилище\r\n private getFormDataFromLocalStorage(): void {\r\n\r\n // Получаем данные из локального хранилища, если они есть\r\n const formData = this.formService.getFormFromLocalStorage();\r\n\r\n if (formData) {\r\n this.formService.form.patchValue(formData);\r\n // (this.formService.form.get('borrower') as FormGroup)?.get('borrowerPassportIssuer')?.setValue(formData?.borrower?.borrowerPassportIssuerDadata?.value);\r\n // (this.formService.form.get('borrower') as FormGroup)?.get('borrowerDepartmentCode')?.setValue(formData?.borrower?.borrowerPassportIssuerDadata?.code);\r\n }\r\n\r\n // Слушаем изменения значений в форме и сохраняем их в локальное хранилище\r\n // this.subscriptions.add(this.formService.form.valueChanges.subscribe((value) => {\r\n // this.formService.saveFormToLocalStorage();\r\n // }));\r\n }\r\n\r\n // Отображаем по умолчанию форму\r\n public showDefaultForm(): void {\r\n if (this.formService.isContactFormComplete\r\n && this.formService.isBorrowerFormComplete\r\n && this.formService.isMortgageFormComplete\r\n && this.formService.isPolicyFormComplete\r\n && this.formService.isInsuranceFormComplete) {\r\n this.formService.isInsuranceFormComplete = false;\r\n }\r\n }\r\n\r\n}\r\n","

{{ contentService.content.mainPage.title }}

\r\n
\r\n \r\n\r\n \r\n\r\n
0\">\r\n \r\n
\r\n
\r\n\r\n\r\n","import { Component } from '@angular/core';\r\nimport {Subscription} from \"rxjs\";\r\nimport {FormFilterService} from \"../../../../../../../shared/services/form-filter.service\";\r\nimport {environment} from \"@environment/environment\";\r\n\r\n@Component({\r\n selector: 'app-select-object',\r\n templateUrl: './select-object.component.html',\r\n styleUrls: ['./select-object.component.scss']\r\n})\r\nexport class SelectObjectComponent {\r\n\r\n constructor(public readonly formFilterService: FormFilterService) {\r\n }\r\n\r\n // Форма\r\n public filterForm = this.formFilterService.form;\r\n\r\n protected readonly environment = environment;\r\n}\r\n","
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n Застраховать\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {AfterViewInit, Component, EventEmitter, OnDestroy, OnInit, Input, Output} from '@angular/core';\r\nimport {Observable, Subscription, of} from \"rxjs\";\r\nimport {FormFilterService} from \"../../../../../shared/services/form-filter.service\";\r\nimport {MortgageService} from \"../../../../../shared/services/mortgage.service\";\r\nimport {\r\n IBanksAndProduct,\r\n IMortgageProductsResponce\r\n} from \"../../../../../shared/interface/mortgage-products.interface\";\r\nimport {IFormFilter} from \"../../../../../shared/interface/form-filter.interface\";\r\nimport {BsModalRef, BsModalService} from \"ngx-bootstrap/modal\";\r\nimport {OfflineFormComponent} from \"../../offline-form/offline-form.component\";\r\nimport {finalize, switchMap, take, tap} from \"rxjs/operators\";\r\nimport {ActivatedRoute, Router} from \"@angular/router\";\r\nimport {FormService} from \"../../../../../shared/services/form.service\";\r\nimport {FormControl, FormGroup} from \"@angular/forms\";\r\nimport { environment } from '../../../../../../environments/environment';\r\nimport { AppService } from '../../../../../core/services/app.service';\r\nimport {CONTENT} from \"../../../../../shared/constants/content\";\r\nimport {PdfDocViewComponent} from \"../../../../../shared/components/pdf-doc-view/pdf-doc-view.component\";\r\nimport {YandexMetrikaService} from \"../../../../../shared/services/yandex-metrika.service\";\r\nimport {ModalService} from \"../../../../../shared/services/modal.service\";\r\nimport {IBankListResponce} from \"../../../../../shared/interface/bank-list\";\r\n\r\n@Component({\r\n selector: 'app-select-company-filter',\r\n templateUrl: './select-company-filter.component.html',\r\n styleUrls: ['./select-company-filter.component.scss']\r\n})\r\nexport class SelectCompanyFilterComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n // Передаем полученных офферов\r\n @Output() changeFormValue: EventEmitter = new EventEmitter();\r\n // Индикатор загрузки\r\n @Input() isLoadingCalculate!: boolean;\r\n\r\n constructor(public readonly formFilterService: FormFilterService,\r\n public readonly formService: FormService,\r\n public readonly mortgageService: MortgageService,\r\n private readonly bsModalService: BsModalService,\r\n private readonly modalService: ModalService,\r\n private readonly route: ActivatedRoute,\r\n private readonly appService: AppService,\r\n private readonly ym: YandexMetrikaService,\r\n private readonly router: Router) {\r\n }\r\n\r\n // Форма фильтра\r\n public filterForm = this.formFilterService.form;\r\n // Форма анкеты\r\n public form = this.formService.form;\r\n // Индикатор загрузки\r\n public isLoading = false;\r\n // Подписка\r\n private subscription: Subscription = new Subscription();\r\n\r\n creditRemain: FormControl = (this.form.get('borrower') as FormGroup)?.controls['creditRemain'] as FormControl;\r\n\r\n // Список доступных продуктов\r\n public mortgageProductList: IBanksAndProduct[] = [];\r\n // Ссылка на модальное окно\r\n private bsModalRef?: BsModalRef;\r\n // Выбрать другой банк кроме партнерского, нельзя\r\n public onlyPartnerBank = environment.onlyPartnerBank;\r\n // Выбрать другой банк кроме партнерского, нельзя\r\n public partnerBankId = environment.partnerBankId;\r\n // Системное имя банка\r\n public bankSystemName = environment.partnerSystemName;\r\n // Данные CONTENT\r\n public content = CONTENT;\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n this.getMortgageProductList();\r\n this.subscribeForm();\r\n // Сразу ищем предложения после того как не получили апрув\r\n // if (this.mortgageService.selectedBank) {\r\n // setTimeout(() => {\r\n // this.changeFormValue.emit(this.filterForm.value);\r\n // this.calculate();\r\n // }, 300)\r\n // }\r\n this.mortgageService.draftLink = '';\r\n this.mortgageService.additionalPolicyDraft = '';\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.ym.onYandexReachGoal('MAIN_GOAL');\r\n }\r\n\r\n // Уничтожение\r\n public ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n // Подписка на изменение формы\r\n private subscribeForm(): void {\r\n const {\r\n insuredGender,\r\n } = this.filterForm.controls;\r\n\r\n const borrowerFormGroup: FormGroup = this.form.get('borrower') as FormGroup;\r\n\r\n const {\r\n weight,\r\n height\r\n } = borrowerFormGroup?.controls;\r\n\r\n this.subscription.add(\r\n insuredGender.valueChanges\r\n .subscribe((value) => {\r\n weight.setValue(value === 'Male' ? 85 : 60);\r\n height.setValue(value === 'Male' ? 180 : 175);\r\n })\r\n );\r\n }\r\n\r\n // Получаем список доступных продуктов\r\n public getMortgageProductList(): void {\r\n console.log(\"getMortgageProductList start\");\r\n this.isLoading = true;\r\n if (this.formFilterService.bankList.length > 0) {\r\n // if (this.onlyPartnerBank) this.filterProductList();\r\n this.calculate();\r\n this.isLoading = false;\r\n } else {\r\n this.subscription.add(\r\n this.checkArmApplication()\r\n .pipe(\r\n take(1),\r\n switchMap(() => this.mortgageService.getProfessions()),\r\n tap((res: any) => {\r\n if (res.result && res.value) {\r\n this.mortgageService.professions = res.value;\r\n }\r\n }),\r\n switchMap(() => this.mortgageService.getBankList()),\r\n tap((res: IBankListResponce) => {\r\n if (res.result && res.value) {\r\n this.formFilterService.bankList = res.value;\r\n }\r\n }),\r\n switchMap(() => this.mortgageService.getMortgageProducts()),\r\n finalize(() => {\r\n console.log(\"getMortgageProductList finalize\");\r\n this.isLoading = false;\r\n })\r\n )\r\n .subscribe((res: IMortgageProductsResponce) => {\r\n if (res.result && res.value) {\r\n this.formFilterService.allMortgageProductList = res.value;\r\n this.mortgageProductList = this.formFilterService.getUniqueInsurerTypeBankProducts(res.value);\r\n\r\n this.setDefaultBank();\r\n\r\n this.getParamsFromUrl();\r\n\r\n const urlParams = this.appService.getUrlParams();\r\n\r\n if (urlParams.offerId && urlParams.offerId !== '0') {\r\n this.router.navigate([], { queryParams: {applicationId: this.appService.applicationId, offerId: 0}, queryParamsHandling: 'merge' });\r\n const productId = this.filterForm.get('productId')?.value;\r\n const bank = this.formFilterService.allMortgageProductList.find((item) => item.productId === productId);\r\n if (bank) {\r\n this.filterForm.get('product')?.setValue(bank?.productType);\r\n this.selectBank(bank);\r\n this.calculate();\r\n }\r\n } else {\r\n this.router.navigate([], { queryParams: {applicationId: this.appService.applicationId}, queryParamsHandling: 'merge' });\r\n this.getFilterDataFromLocalStorage();\r\n }\r\n if (this.onlyPartnerBank) this.filterProductList();\r\n\r\n this.setProductType();\r\n }\r\n })\r\n );\r\n }\r\n\r\n }\r\n\r\n private checkArmApplication(): Observable {\r\n if (!this.appService.isArmApplication)\r\n return of({});\r\n\r\n return this.appService.armApplication$;\r\n }\r\n\r\n // Фильтруем даныне продуктов и банков\r\n private filterProductList(): void {\r\n this.mortgageProductList = this.mortgageProductList.filter((item) => item.bankId === this.partnerBankId)\r\n }\r\n\r\n // Отправляем данные формы фильтра для поиска офферов\r\n public calculate(): void {\r\n this.filterForm.markAllAsTouched();\r\n if (this.filterForm.invalid) return;\r\n\r\n const product = this.formFilterService.allMortgageProductList.find((item: any) => {\r\n return item.bankId === this.filterForm.value.bankId\r\n && item.productType.toLowerCase() === this.filterForm.value.product.toLowerCase()\r\n && item.mortgagePropertyTypes.find((mortgagePropertyType: string) => mortgagePropertyType.toLowerCase() === this.filterForm.value.mortgagePropertyType.toLowerCase())\r\n });\r\n\r\n this.ym.onYandexReachGoal('FINISH_FILTER_GOAL');\r\n\r\n if (product && this.filterForm.value.mortgagePropertyType === 'Flat') {\r\n this.filterForm.controls['productId']?.setValue(product.productId);\r\n if (this.filterForm.invalid && !this.filterForm.value.productId) return;\r\n\r\n this.changeFormValue.emit(this.filterForm.value);\r\n } else {\r\n if (this.filterForm.invalid) return;\r\n this.bsModalRef = this.bsModalService.show(OfflineFormComponent,\r\n { class: 'offlineForm gray modal-lg' });\r\n }\r\n\r\n if (!this.appService.isArmApplication)\r\n this.formFilterService.saveFilterFormToLocalStorage()\r\n }\r\n\r\n // Выбрали банк\r\n public selectBank(event: IBanksAndProduct): void {\r\n this.mortgageService.selectedBank = event;\r\n }\r\n\r\n // Проверяем даныне фильтр в локальном хранилище\r\n private getFilterDataFromLocalStorage(): void {\r\n\r\n const {\r\n mortgagePropertyType,\r\n bankId,\r\n creditRemain,\r\n insuredBirthDate,\r\n insuredGender,\r\n product,\r\n productId,\r\n } = this.filterForm.controls;\r\n\r\n // Получаем данные из локального хранилища, если они есть\r\n const filterData = this.appService.isArmApplication\r\n ? this.appService.armApplication?.filter\r\n : this.formFilterService.getFilterFromLocalStorage();\r\n\r\n if (filterData) {\r\n // mortgagePropertyType.setValue(filterData.mortgagePropertyType);\r\n if (filterData.creditRemain) creditRemain.patchValue(filterData.creditRemain);\r\n if (filterData.insuredBirthDate) insuredBirthDate.setValue(filterData.insuredBirthDate);\r\n if (filterData.insuredGender) insuredGender.setValue(filterData.insuredGender);\r\n if (filterData.product) product.setValue(filterData.product);\r\n if (filterData.productId) productId.setValue(filterData.productId);\r\n if (filterData.bankId) bankId.setValue(filterData.bankId);\r\n }\r\n\r\n if (filterData && filterData.productId) {\r\n const bank = this.formFilterService.allMortgageProductList.find((bank) => bank.productId === filterData.productId);\r\n if (bank) {\r\n this.selectBank(bank);\r\n }\r\n }\r\n\r\n // Слушаем изменения значений в форме и сохраняем их в локальное хранилище\r\n this.filterForm.valueChanges.subscribe((value) => {\r\n if (!this.appService.isArmApplication)\r\n this.formFilterService.saveFilterFormToLocalStorage();\r\n });\r\n }\r\n\r\n // Обработка параметров из url\r\n public getParamsFromUrl(): void {\r\n this.route.queryParams.subscribe(params => {\r\n const {\r\n mortgagePropertyType,\r\n creditRemain,\r\n insuredBirthDate,\r\n insuredGender,\r\n product,\r\n } = this.filterForm.controls;\r\n\r\n const {\r\n InsurerProductName,\r\n CreditRemain,\r\n InsuredBirthDate,\r\n InsuredGender,\r\n ContractNumber,\r\n MortgageStartDate\r\n } = params;\r\n\r\n if (InsurerProductName) product.setValue(InsurerProductName);\r\n if (InsuredBirthDate) insuredBirthDate.setValue(InsuredBirthDate);\r\n if (InsuredGender) insuredGender.setValue(InsuredGender);\r\n if (CreditRemain) creditRemain.setValue(CreditRemain.toString().replace('.', ','));\r\n if (ContractNumber) (this.formService.form.get('mortgage') as FormGroup)?.get('mortgageCreditNumber')?.setValue(ContractNumber);\r\n if (MortgageStartDate) (this.formService.form.get('mortgage') as FormGroup)?.get('mortgageBeginDate')?.setValue(MortgageStartDate);\r\n\r\n // Если форма валидна, то сразу делаем предрасчет иначе подсвечиваем невалидные поля\r\n if (InsurerProductName && InsuredBirthDate && InsuredGender && CreditRemain && ContractNumber && MortgageStartDate) {\r\n if (this.filterForm.valid) {\r\n this.calculate();\r\n } else {\r\n this.filterForm.markAllAsTouched();\r\n }\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n // Выбираем банк по умолчанию Сбер\r\n public setDefaultBank(): void {\r\n const {\r\n bankId\r\n } = this.filterForm.controls;\r\n\r\n // Добавляем деффолтный банк - Сбер\r\n if (this.partnerBankId) {\r\n bankId.setValue(this.partnerBankId);\r\n }\r\n\r\n const bank = this.formFilterService.allMortgageProductList.find((bank) => {\r\n return bank.bankId === bankId.value\r\n });\r\n\r\n if (bank) {\r\n this.selectBank(bank);\r\n }\r\n }\r\n\r\n private setProductType(): void {\r\n const productId = this.formFilterService.form.get('productId')?.value;\r\n const findProduct = this.formFilterService.allMortgageProductList.find((product: any) => product.productId === productId);\r\n if (findProduct?.productType) {\r\n this.formFilterService.form.get('product')?.setValue(findProduct?.productType);\r\n }\r\n }\r\n\r\n public showPdfDocModal(src: string): void {\r\n const initialState = {\r\n src,\r\n };\r\n this.modalService.bsModalRef = this.bsModalService.show(PdfDocViewComponent, {\r\n initialState,\r\n class: 'modal-dialog-centered PDFmodal'\r\n });\r\n\r\n }\r\n\r\n protected readonly environment = environment;\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n Loading...\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Посмотрите требования страхования имущества\r\n
\r\n\r\n
\r\n Посмотрите требования по страхованию жизни и здоровья\r\n
\r\n\r\n
\r\n Посмотрите требования по страхованию имущества, жизни и здоровья\r\n
\r\n
\r\n\r\n
\r\n
\r\n Посмотрите требования страхования имущества\r\n
\r\n\r\n
\r\n Посмотрите требования по страхованию жизни и здоровья\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n Полис «Имущество» нужен, если дом сдан, и вы получили право собственности. Это требование закона\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n Полис «Жизнь и здоровье» нужен, если дом не построен и нет права собственности, и для снижения ставки по кредиту\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n Полис «Имущество+жизнь и здоровье» позволяет снизить ставку по кредиту и выполнить требование закона об ипотеке\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n Титульное страхование защищает от потери права собственности.\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {FormGroup, UntypedFormGroup} from \"@angular/forms\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {FormService} from \"../../../../shared/services/form.service\";\r\nimport {YandexMetrikaService} from \"../../../../shared/services/yandex-metrika.service\";\r\nimport {MortgageService} from \"../../../../shared/services/mortgage.service\";\r\nimport {FormFilterService} from \"../../../../shared/services/form-filter.service\";\r\nimport { environment } from '../../../../../environments/environment';\r\nimport {DaData} from \"../../../../shared/enums/da-data.enum\";\r\nimport moment from \"moment-mini\";\r\n\r\n@Component({\r\n selector: 'app-mortgage-form',\r\n templateUrl: './mortgage-form.component.html',\r\n styleUrls: ['./mortgage-form.component.scss']\r\n})\r\nexport class MortgageFormComponent implements OnInit, OnDestroy {\r\n // Событие заполненной формы ипотеки\r\n @Output() mortgageFormComplete: EventEmitter = new EventEmitter();\r\n // Форма ипотеки заблочена\r\n @Input() isMortgageFormDisabled!: boolean;\r\n // Уже искали офферов, значит форма заполнена и теперь толкьо сохраняем ее без того что бы идти дальше по степам\r\n @Input() isApproveOffersComplete!: boolean;\r\n constructor(\r\n public readonly formService: FormService,\r\n private readonly ym: YandexMetrikaService,\r\n private readonly mortgageService: MortgageService,\r\n private readonly formFilterService: FormFilterService) {\r\n }\r\n\r\n public bankSystemName = environment.partnerSystemName;\r\n\r\n // Форма ипотеки\r\n public formMortgage = (this.formService.form.get('mortgage') as UntypedFormGroup);\r\n // Форма контактов\r\n public formPolicy = (this.formService.form.get('mortgagePolicyDate') as UntypedFormGroup);\r\n // Подписка\r\n private _subscription = new Subscription();\r\n // Индикатор загрузки\r\n public isLoading = false;\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n this.formMortgage?.get('mortgageCreditRemain')?.setValue(this.formFilterService.form.get('creditRemain')?.value)\r\n this.subscribeForm();\r\n }\r\n public ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n // Заполнили форму контактов\r\n public onSubmit(isSaveForm: boolean): void {\r\n this.formMortgage.markAllAsTouched();\r\n if (this.formMortgage.invalid) return;\r\n\r\n this.formService.isMortgageFormComplete = true;\r\n\r\n this.ym.onYandexReachGoal('MORTGAGE_GOAL');\r\n\r\n this.mortgageFormComplete.emit(isSaveForm);\r\n }\r\n\r\n // Подписка на изменение формы\r\n private subscribeForm(): void {\r\n const {\r\n mortgageBeginEndDate\r\n } = this.formMortgage.controls;\r\n\r\n const {\r\n mortgageEndDate\r\n } = this.formPolicy.controls;\r\n\r\n const mortgagePolicyDate: FormGroup = this.formService.form.get('mortgagePolicyDate') as FormGroup;\r\n\r\n this._subscription.add(\r\n mortgageBeginEndDate.valueChanges.subscribe((value) => {\r\n const multiYearValue = mortgagePolicyDate.get('multiYear')?.value;\r\n if (multiYearValue) {\r\n mortgageEndDate.setValue(value)\r\n }\r\n })\r\n );\r\n\r\n }\r\n\r\n protected readonly daDataSystemName = DaData;\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Ипотека
\r\n
Данные по вашему кредиту
\r\n
Ипотека
\r\n
Данные по вашему кредиту
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
Процентная ставка по кредиту в случае отказа от страхования
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component, OnDestroy} from '@angular/core';\r\nimport {BsModalRef} from \"ngx-bootstrap/modal\";\r\nimport {Subscription} from \"rxjs\";\r\n\r\n// Перечисления\r\nimport {DaData} from \"../../../../shared/enums/da-data.enum\";\r\n\r\n// Сервисы\r\nimport {FormOfflineService} from \"../../../../shared/services/form-offline.service\";\r\nimport {MortgageService} from \"../../../../shared/services/mortgage.service\";\r\nimport {finalize} from \"rxjs/operators\";\r\nimport {NavigationService} from \"../../../../shared/services/navigation.service\";\r\n\r\n@Component({\r\n selector: 'app-offline-form',\r\n templateUrl: './offline-form.component.html',\r\n styleUrls: ['./offline-form.component.scss']\r\n})\r\nexport class OfflineFormComponent implements OnDestroy {\r\n constructor(public bsModalRef: BsModalRef,\r\n private readonly formOfflineService: FormOfflineService,\r\n private readonly mortgageService: MortgageService,\r\n private readonly navigationService: NavigationService) {}\r\n\r\n // Индикатор загрузки\r\n public isLoading = false;\r\n // DaData системные имена\r\n public daDataSystemName = DaData;\r\n // Подписка\r\n private subscriptions: Subscription[] = [];\r\n // Форма\r\n public formOffline = this.formOfflineService.form;\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n // Уничтожение\r\n public ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n // Отправялем данные формы оффлайн анкеты\r\n public onSubmit(): void {\r\n this.formOffline.markAllAsTouched();\r\n if (this.formOffline.invalid) return;\r\n this.isLoading = true;\r\n\r\n this.subscriptions.push(\r\n this.mortgageService.saveOfflineMortgage(this.formOffline.value)\r\n .pipe(\r\n finalize(() => this.isLoading = false)\r\n )\r\n .subscribe((res) => {\r\n if (res.result) {\r\n this.bsModalRef.hide();\r\n this.navigationService.navigate('/success', { status: 'offline' });\r\n }\r\n })\r\n )\r\n\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

Для оформления полиса оставьте заявку

\r\n \r\n
\r\n
\r\n \r\n Для данного продукта необходимо оформление с помощью менеджера\r\n \r\n \r\n

1. В течение часа с вами свяжется наш менеджер для уточнения деталей

\r\n

2. После согласования условий, вы получите ссылку на оплату полиса напрямую от страховой компании

\r\n

3. Полис поступит на вашу электронную почту сразу же после оплаты

\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {FormGroup, UntypedFormGroup} from \"@angular/forms\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {FormService} from \"../../../../shared/services/form.service\";\r\nimport moment from \"moment-mini\";\r\nimport {MortgageService} from \"../../../../shared/services/mortgage.service\";\r\nimport {YandexMetrikaService} from \"../../../../shared/services/yandex-metrika.service\";\r\nimport { environment } from '../../../../../environments/environment';\r\n\r\n@Component({\r\n selector: 'app-policy-date-form',\r\n templateUrl: './plicy-date-form.component.html',\r\n styleUrls: ['./plicy-date-form.component.scss']\r\n})\r\nexport class PlicyDateFormComponent implements OnInit, OnDestroy {\r\n // Событие заполненной формы даты полиса\r\n @Output() policyFormComplete: EventEmitter = new EventEmitter();\r\n // Форма даты полиса заблочена\r\n @Input() isPolicyFormDisabled!: boolean;\r\n // Уже искали офферов, значит форма заполнена и теперь толкьо сохраняем ее без того что бы идти дальше по степам\r\n @Input() isApproveOffersComplete!: boolean;\r\n\r\n constructor(public readonly formService: FormService,\r\n private readonly mortgageService: MortgageService,\r\n private readonly ym: YandexMetrikaService) {\r\n }\r\n\r\n public bankSystemName = environment.partnerSystemName;\r\n\r\n // Форма срок действия полиса\r\n public formPolicy = (this.formService.form.get('mortgagePolicyDate') as UntypedFormGroup);\r\n // Подписка\r\n private _subscription = new Subscription();\r\n // Индикатор загрузки\r\n public isLoading = false;\r\n\r\n // Доступен для редактирования контрол - Дата окончания страхования\r\n get isReadonlyMortgageEndDate(): boolean {\r\n const selectedBank = this.mortgageService.selectedBank;\r\n return selectedBank && selectedBank.bankSystemName !== 'Vtb' && selectedBank.bankSystemName !== 'Gazprombank'\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n this.subscribeForm();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n\r\n // Заполнили форму контактов\r\n public onSubmit(isSaveForm: boolean): void {\r\n this.formPolicy.markAllAsTouched();\r\n if (this.formPolicy.invalid) return;\r\n\r\n this.formService.isPolicyFormComplete = true;\r\n\r\n this.ym.onYandexReachGoal('POLICE_DATE_GOAL');\r\n\r\n this.policyFormComplete.emit(isSaveForm);\r\n }\r\n\r\n // Подписка на изменение формы\r\n private subscribeForm(): void {\r\n const {\r\n mortgageStartDate,\r\n mortgageEndDate\r\n } = this.formPolicy.controls;\r\n\r\n const mortgagePolicyDate: FormGroup = this.formService.form.get('mortgagePolicyDate') as FormGroup;\r\n\r\n this._subscription.add(\r\n mortgageStartDate.valueChanges\r\n .subscribe((value) => {\r\n const multiYearValue = mortgagePolicyDate.get('multiYear')?.value;\r\n\r\n // Дата окончания договора всегда + 1 год\r\n if (value && value.length > 0 && value.toString().length === 8 && !multiYearValue) {\r\n mortgageEndDate.setValue(\r\n moment(this.mortgageService.getFormatDate(value),\r\n 'DD.MM.YYYY', true)\r\n .add(1, 'year')\r\n .subtract(1, 'day')\r\n .format('DD.MM.YYYY')\r\n )\r\n }\r\n })\r\n )\r\n\r\n\r\n\r\n }\r\n\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Срок действия полиса
\r\n
Укажите дату начала страхования
\r\n
Срок действия полиса
\r\n
Укажите дату начала страхования
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n Дата начала страхования — это следующий день после окончания срока действия прошлого полиса.\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n Полис оформляется до окончания действия ипотечного договора с ежегодной оплатой, согласно графику платежей страховой компании\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n","import { Component } from '@angular/core';\r\nimport { AppService } from '../../../../core/services/app.service';\r\nimport { MortgageService } from '../../../../shared/services/mortgage.service';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { FormService } from '../../../../shared/services/form.service';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { ISaveMortgageApplicationResponce } from '../../../../shared/interface/mortgage-application.interface';\r\nimport {YandexMetrikaService} from \"../../../../shared/services/yandex-metrika.service\";\r\nimport {environment} from \"@environment/environment\";\r\n\r\n@Component({\r\n selector: 'app-success-page',\r\n templateUrl: './success-page.component.html',\r\n styleUrls: ['./success-page.component.scss']\r\n})\r\nexport class SuccessPageComponent {\r\n public isArmApplication = false;\r\n public clientEmail = \"\";\r\n public clientPhone = \"\";\r\n public isCopied = false;\r\n public isSent = false;\r\n public isSending = false;\r\n public isSendError = false;\r\n public optionSelected = true;\r\n public form: FormGroup;\r\n\r\n // Если мы пришли на страницу после заполнения офлайн формы\r\n public isOfflineStatus: boolean;\r\n\r\n constructor(\r\n private readonly fb: FormBuilder,\r\n private readonly formService: FormService,\r\n private readonly mortgageService: MortgageService,\r\n private readonly appService: AppService,\r\n private readonly ym: YandexMetrikaService) {\r\n\r\n const urlParams = new URLSearchParams(window.location.search);\r\n this.isOfflineStatus = urlParams.get('status') === 'offline';\r\n if (this.isOfflineStatus) {\r\n this.ym.onYandexReachGoal('OFFLINE_GOAL');\r\n } else {\r\n this.ym.onYandexReachGoal('SUCCESS_GOAL');\r\n }\r\n\r\n\r\n //this.isArmApplication = true;\r\n this.isArmApplication = appService.isArmApplication;\r\n this.clientEmail = this.formService.form.value.contacts.email;\r\n this.clientPhone = this.initPhoneNumber( this.formService.form.value.contacts.phone);\r\n\r\n this.form = this.fb.group({\r\n email: [true, {updateOn: 'change'}, ],\r\n phone: [true, {updateOn: 'change'}, ],\r\n });\r\n\r\n this.form.valueChanges.subscribe((currentValue) => {\r\n this.optionSelected = currentValue.email === true || currentValue.phone === true;\r\n });\r\n }\r\n\r\n public copyLink() {\r\n navigator.clipboard.writeText(this.mortgageService.paymentLink);\r\n this.isCopied = true;\r\n }\r\n\r\n public send() {\r\n this.isSending = true;\r\n this.isSendError = false;\r\n const sendEmail = this.form.value.email;\r\n const sendSms = this.form.value.phone;\r\n\r\n this.mortgageService.sendPaymentLink(sendEmail, sendSms)\r\n .pipe(\r\n finalize(() => this.isSending = false)\r\n )\r\n .subscribe({\r\n next: (res: ISaveMortgageApplicationResponce) => {\r\n this.isSent = res.result == true;\r\n this.isSendError = res.result != true\r\n },\r\n error: () => this.isSendError = true\r\n });\r\n }\r\n\r\n private initPhoneNumber(phoneNumber: string | undefined): string {\r\n try {\r\n const maskedPhone = phoneNumber?.toString();\r\n\r\n if (maskedPhone != null && maskedPhone.length === 10) {\r\n return `+7(${ maskedPhone.substr(0, 3) })${ maskedPhone.substr(3, 3) }-${ maskedPhone.substr(6, 2) }-${ maskedPhone.substr(8, 2) }`; }\r\n\r\n if (maskedPhone != null && maskedPhone.length === 11) {\r\n return `+7(${ maskedPhone.substr(1, 3) })${ maskedPhone.substr(4, 3) }-${ maskedPhone.substr(7, 2) }-${ maskedPhone.substr(9, 2) }`; }\r\n\r\n return maskedPhone || \"\";\r\n }\r\n catch {\r\n return \"\";\r\n }\r\n }\r\n\r\n protected readonly environment = environment;\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n

\r\n Спасибо за обращение!\r\n

\r\n\r\n
\r\n Мы работаем 10:00 - 18:00 по Московскому времени.
В ближайшее время мы свяжемся с вами для оформления полиса\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"Success\"\r\n
\r\n

Ваша заявка отправлена

\r\n
Спасибо за обращение. Мы работаем с 8:00 до 18:00 по Московскому времени. В ближайшее время мы свяжемся с вами для оформления полиса.
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"Success\"\r\n
\r\n

Отправили полис на email

\r\n
Письмо придёт в течение 20 минут.
Если его не будет, напишите нам
\r\n
\r\n
\r\n
\r\n
\r\n \"Kopeck\"\r\n
\r\n
\r\n
При оплате картой Ozon Банка вернём до 10% от стоимости страховки кешбэком на карту
в течение 90 дней после
вступления полиса в силу
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n

\r\n Ссылка на оплату успешно сформирована!\r\n

\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n Ссылка скопирована в буфер обмена\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n Ссылка отправлена\r\n \r\n\r\n \r\n При отправке ссылки произошла ошибка. Ссылка не была отправлена\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport {MainComponent} from \"./components/main/main.component\";\r\nimport {FormComponent} from \"./components/form/form.component\";\r\nimport {SuccessPageComponent} from \"./components/success-page/success-page.component\";\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: MainComponent\r\n },\r\n {\r\n path: 'form',\r\n component: FormComponent\r\n },\r\n {\r\n path: 'success',\r\n component: SuccessPageComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class MortgageRoutingModule { }\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {MainComponent} from './components/main/main.component';\r\nimport {MortgageRoutingModule} from \"./mortgage-routing.module\";\r\nimport {SharedModule} from \"../../shared/shared.module\";\r\nimport {BsDatepickerModule} from \"ngx-bootstrap/datepicker\";\r\nimport {SelectCompanyFilterComponent} from './components/main/select-company-filter/select-company-filter.component';\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {ContactFormComponent} from './components/contact-form/contact-form.component';\r\nimport {BorrowerFormComponent} from \"./components/borrower-form/borrower-form.component\";\r\nimport {MortgageFormComponent} from \"./components/mortgage-form/mortgage-form.component\";\r\nimport {PlicyDateFormComponent} from \"./components/policy-date-form/plicy-date-form.component\";\r\nimport {InsuranceObjectFormComponent} from \"./components/insurance-object-form/insurance-object-form.component\";\r\nimport { SelectObjectComponent } from './components/main/select-company-filter/components/select-object/select-object.component';\r\nimport { FormComponent } from './components/form/form.component';\r\nimport { OfflineFormComponent } from './components/offline-form/offline-form.component';\r\nimport {AlertModule} from \"ngx-bootstrap/alert\";\r\nimport { SuccessPageComponent } from './components/success-page/success-page.component';\r\nimport {PopoverModule} from \"ngx-bootstrap/popover\";\r\nimport {TooltipModule} from \"ngx-bootstrap/tooltip\";\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n MainComponent,\r\n SelectCompanyFilterComponent,\r\n ContactFormComponent,\r\n BorrowerFormComponent,\r\n MortgageFormComponent,\r\n PlicyDateFormComponent,\r\n InsuranceObjectFormComponent,\r\n SelectObjectComponent,\r\n FormComponent,\r\n OfflineFormComponent,\r\n SuccessPageComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n MortgageRoutingModule,\r\n BsDatepickerModule,\r\n ReactiveFormsModule,\r\n AlertModule,\r\n PopoverModule,\r\n FormsModule,\r\n TooltipModule,\r\n ]\r\n})\r\nexport class MortgageModule {\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n DoCheck, ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Inject,\r\n Injector,\r\n Input, OnDestroy,\r\n OnInit,\r\n Output, Renderer2, ViewChild\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n UntypedFormControl, FormControlDirective, FormControlName, UntypedFormGroup,\r\n FormGroupDirective,\r\n NG_VALUE_ACCESSOR,\r\n NgControl,\r\n} from '@angular/forms';\r\nimport {debounceTime, distinctUntilChanged, finalize, switchMap, tap} from 'rxjs/operators';\r\nimport {Observable, Observer, of, Subject, Subscription} from 'rxjs';\r\nimport {TypeaheadMatch} from 'ngx-bootstrap/typeahead';\r\n\r\n// Сервисы\r\nimport {FormService} from '../../services/form.service';\r\nimport {ValidationService} from '../../services/validation.service';\r\nimport {DaData} from '../../enums/da-data.enum';\r\nimport {DadataService} from \"../../../core/services/dadata.service\";\r\n\r\n// Маски\r\nimport {MASKS} from '../../constants/masks';\r\n\r\n// Интерфейсы\r\nimport {IMask} from '../../interface/masks.interface';\r\nimport {handleClickOutsideDropdown, triggerIframe} from \"../../functions/sizeWindow\";\r\n\r\n@Component({\r\n selector: 'app-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AutocompleteComponent),\r\n multi: true,\r\n }],\r\n})\r\nexport class AutocompleteComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy, DoCheck {\r\n @ViewChild('textarea') textarea!: ElementRef;\r\n @ViewChild('inputElement') inputElement!: ElementRef;\r\n // Событие выбора элемента\r\n @Output() typeaheadOnSelect = new EventEmitter();\r\n // Заголовок\r\n @Input() label!: string;\r\n // Placeholder\r\n @Input() placeholder!: string;\r\n // Массив данных\r\n @Input() typeaheadList!: any[];\r\n // Массив асинхронных данных\r\n @Input() asyncTypeaheadList!: Observable;\r\n // Получаем данные асинхронно\r\n @Input() typeaheadAsync!: boolean;\r\n // Значение для value\r\n @Input() typeaheadOptionField = 'value';\r\n // Значение для id\r\n @Input() idKeyName = 'id';\r\n // Показывать scroll в списке\r\n @Input() typeaheadScrollable = true;\r\n // Количество видимых элементов в списке\r\n @Input() typeaheadOptionsInScrollableView = 7;\r\n // Минимальное количество элементов для показа в списке\r\n @Input() typeaheadMinLength = 0;\r\n // Лимит элементов в списке\r\n @Input() typeaheadOptionsLimit = 7;\r\n // Только для чтения\r\n @Input() isReadonly!: boolean;\r\n // Забьлокирован\r\n @Input() disabled!: boolean;\r\n // Используем кастомный template для dropdown\r\n @Input() isCustomTemplate!: boolean;\r\n // Используем кастомный template для dropdown\r\n @Input() isFilter!: boolean;\r\n // Имя контролла которое валидируем\r\n @Input() validationControlName!: string;\r\n // Системное имя для сервиса DaData\r\n @Input() suggestionPart!: string;\r\n // Имя контролла, который содержить данные DaData\r\n @Input() daDataControlName!: string;\r\n // Только выбор, без автокомплита\r\n @Input() isDropdown!: boolean;\r\n // Если поле textarea\r\n @Input() isTextarea: boolean = false;\r\n // Нельзя сбрасывать\r\n @Input() notReset: boolean = false;\r\n // Возможность растягивать поле ввода для textarea\r\n @Input() isResize: boolean = true;\r\n\r\n // Контрол\r\n public control!: UntypedFormControl;\r\n // Контрол поиска\r\n public searchControl: UntypedFormControl = new UntypedFormControl();\r\n // Контрол поиска\r\n public daDataControl!: UntypedFormControl;\r\n // Подписка на контрол\r\n private subscription: Subscription = new Subscription();\r\n // Подписка на контрол поиска\r\n private subjectDaData: Subject = new Subject();\r\n // Сообщения валидации\r\n public messages: any = {};\r\n // Флаг, идет загрузка списка\r\n public isLoading = false;\r\n // Отфильтрованный список\r\n public filteredList!: any[];\r\n // Маска\r\n public mask: any;\r\n // Маска для чистого значения\r\n public clearMask: any;\r\n // Показываем маску при заполнении\r\n public showMask = false;\r\n // Высота textarea\r\n public heightTextarea = '58px';\r\n\r\n // Показываем клавиатуру, текст или только цифры\r\n public inputmode: string = 'text';\r\n\r\n // Событие фокуса\r\n public isFocus = false;\r\n\r\n // Вызовем когда значение изменится\r\n private onTouched: any = () => {\r\n };\r\n\r\n // Вызовем при любом действии пользователя с контроллом\r\n private onChange: any = () => {\r\n };\r\n\r\n constructor(@Inject(Injector) private injector: Injector,\r\n public readonly formService: FormService,\r\n private readonly validationService: ValidationService,\r\n private readonly dadataService: DadataService,\r\n private renderer: Renderer2) {\r\n\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n document.addEventListener('click', handleClickOutsideDropdown);\r\n const injectedControl = this.injector.get(NgControl);\r\n\r\n switch (injectedControl.constructor) {\r\n case FormControlName: {\r\n this.control = this.injector.get(FormGroupDirective).getControl(injectedControl as FormControlName);\r\n break;\r\n }\r\n default: {\r\n this.control = (injectedControl as FormControlDirective).form as UntypedFormControl;\r\n break;\r\n }\r\n }\r\n\r\n if (this.daDataControlName) {\r\n this.daDataControl = (this.control.parent as UntypedFormGroup)?.get(this.daDataControlName) as UntypedFormControl;\r\n }\r\n\r\n // Применяем параметры контрола\r\n if (injectedControl.name) {\r\n this.initPropertyControl(injectedControl.name.toString());\r\n }\r\n\r\n // Если есть системное имя для сервиса DaDada, то берем данные оттуда\r\n if (this.suggestionPart) {\r\n this.controlIsSuggestion();\r\n }\r\n\r\n }\r\n\r\n // Инициализация завершена\r\n public ngAfterViewInit(): void {\r\n // setTimeout(() => {\r\n // this.adjustTextarea();\r\n // });\r\n }\r\n\r\n public ngDoCheck(): void {\r\n }\r\n\r\n // Уничтожение\r\n public ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n\r\n // Применяем параметры контролла\r\n public initPropertyControl(injectedControlName: string): void {\r\n const propertyControl = this.formService.propertyControls[injectedControlName];\r\n if (propertyControl?.validation?.messages) {\r\n this.messages = propertyControl?.validation?.messages;\r\n }\r\n if (propertyControl?.label) {\r\n this.label = propertyControl.label;\r\n }\r\n if (propertyControl?.placeholder) {\r\n this.placeholder = propertyControl.placeholder;\r\n }\r\n if (propertyControl?.mask) {\r\n MASKS.filter((item: IMask) => item.systemName === propertyControl?.mask)\r\n .map((item) => this.mask = item.mask);\r\n }\r\n if (propertyControl?.showMask) {\r\n this.showMask = propertyControl?.showMask;\r\n }\r\n if (propertyControl?.inputmode) {\r\n this.inputmode = propertyControl?.inputmode;\r\n }\r\n if (propertyControl?.['typeaheadOptionField']) {\r\n this.typeaheadOptionField = propertyControl['typeaheadOptionField'];\r\n }\r\n if (propertyControl?.['idKeyName']) {\r\n this.idKeyName = propertyControl['idKeyName'];\r\n }\r\n if (propertyControl?.['typeaheadMinLength']) {\r\n this.typeaheadMinLength = propertyControl['typeaheadMinLength'];\r\n }\r\n\r\n this.validationService.setControlValidation(propertyControl, this.control);\r\n }\r\n\r\n // Если данные автокомплита берем из сервиса Dadata\r\n public controlIsSuggestion(): void {\r\n this.subscription.closed = false;\r\n // Флаг асинхронного запроса\r\n this.typeaheadAsync = true;\r\n\r\n // Слушаем изменение контрола и делаем запрос в сервис DaData\r\n // Таймаут запроса 500 миллисекунд\r\n this.asyncTypeaheadList = new Observable((observer: Observer) => {\r\n observer.next(this.searchControl.value);\r\n }).pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n tap(() => this.isLoading = true),\r\n switchMap((query: string) => {\r\n if (!query || query === this.control.value) {\r\n this.isLoading = false;\r\n return of([]);\r\n } else {\r\n this.getSuggestionData(query);\r\n return query ? this.subjectDaData : of([]);\r\n }\r\n }),\r\n finalize(() => this.isLoading = false)\r\n );\r\n }\r\n\r\n // Получаем данные из сервиса DaData\r\n public getSuggestionData(query: string): void {\r\n // Подписываем на получение данных из сервиса DaData\r\n // Если запрос отменили, то subscription снова открываем после отмены\r\n this.subscription.add(this.dadataService.suggestionAddress(query, this.suggestionPart)\r\n .pipe(\r\n finalize(() => this.isLoading = false)\r\n )\r\n .subscribe((data) => this.subjectDaData.next(data)));\r\n }\r\n\r\n // Вызовет форма, если значение изменилось извне\r\n public writeValue(selected: any): void {\r\n if (!this.typeaheadAsync && this.typeaheadList && this.typeaheadList?.length && selected !== null) {\r\n this.typeaheadList\r\n .filter((item) => item[this.idKeyName]?.toString() === selected?.toString())\r\n .map((item) => this.searchControl?.setValue(item[this.typeaheadOptionField], {emitEvent: false}));\r\n // Применяем полученный список в отфильтрованный список\r\n this.filteredList = this.typeaheadList;\r\n } else {\r\n this.searchControl?.setValue(selected);\r\n this.onChange(selected);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n // Сохраняем обратный вызов для изменений\r\n public registerOnChange(fn: any): void {\r\n // this.onChange = fn;\r\n }\r\n\r\n // Сохраняем обратный вызов для \"касаний\"\r\n public registerOnTouched(fn: any): void {\r\n // this.onTouched = fn;\r\n }\r\n\r\n // Установка состояния disabled\r\n public setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.searchControl.disable() : this.searchControl.enable();\r\n }\r\n\r\n // Событие выбора элемента\r\n public selectItem(event: any): void {\r\n setTimeout(() => {\r\n if (this.daDataControlName && this.daDataControl) {\r\n const value = event.item.value;\r\n this.daDataControl.setValue(Object.assign({value}, event.item.data));\r\n }\r\n this.control.setValue(event instanceof TypeaheadMatch ? event.item[this.idKeyName] : event[this.idKeyName]);\r\n this.searchControl.setValue(\r\n event instanceof TypeaheadMatch ? event.item[this.typeaheadOptionField] : event[this.typeaheadOptionField]\r\n );\r\n this.onChange(event);\r\n this.onTouched();\r\n this.typeaheadOnSelect.emit(event);\r\n }, 120);\r\n }\r\n\r\n // Событие фокуса на контролле поиска\r\n public focusEvent(event: any): void {\r\n event.target.dispatchEvent(new Event('input'));\r\n if (this.suggestionPart) {\r\n this.controlIsSuggestion();\r\n }\r\n setTimeout(() => {\r\n triggerIframe();\r\n }, 100);\r\n setTimeout(() => {\r\n this.isFocus = true;\r\n }, 300);\r\n }\r\n\r\n // Если убрали фокус с контролла\r\n public blurEvent(event: any): void {\r\n event?.preventDefault();\r\n setTimeout(() => {\r\n this.isFocus = false;\r\n }, 100);\r\n if (!event.target.value) {\r\n this.control.reset();\r\n this.searchControl.reset();\r\n // Обновляем стейт контролла с задержкой, что бы не показывать ошибку до выбора\r\n setTimeout(() => {\r\n this.control.markAsTouched();\r\n }, 200)\r\n } else {\r\n if (!this.typeaheadAsync) {\r\n // Ищем значение в массиве, если есть, то применяем его, если нет, то сбрасываем\r\n const findValue = this.typeaheadList.find((item) =>\r\n item[this.typeaheadOptionField].toLowerCase().trim() === event.target.value.toLowerCase().trim());\r\n if (findValue) {\r\n // this.selectItem(new TypeaheadMatch(findValue));\r\n } else if (this.searchControl.value) {\r\n const findValueSearchControl = this.typeaheadList.find((item) =>\r\n item[this.typeaheadOptionField]?.toLowerCase().trim() === this.searchControl.value.toLowerCase().trim());\r\n if (findValueSearchControl) {\r\n this.selectItem(new TypeaheadMatch(findValueSearchControl));\r\n } else if (this.control.value) {\r\n const findValueParentControl = this.typeaheadList.find((item) =>\r\n item[this.idKeyName]?.toString().toLowerCase().trim() === this.control.value.toString()?.toLowerCase().trim());\r\n if (findValueParentControl) {\r\n // this.searchControl.setValue(findValueParentControl[this.typeaheadOptionField]);\r\n // this.control.setValue(findValueParentControl[this.idKeyName]);\r\n // this.selectItem(new TypeaheadMatch(findValueParentControl));\r\n }\r\n } else {\r\n this.searchControl.reset();\r\n this.control.reset();\r\n }\r\n } else {\r\n this.searchControl.reset();\r\n this.control.reset();\r\n }\r\n } else {\r\n if (this.suggestionPart === DaData.ADDRESS || this.suggestionPart === DaData.CITY) {\r\n this.searchControl.setValue(this.control.value);\r\n } else {\r\n this.control.setValue(this.searchControl.value ? this.searchControl.value.trim() : this.searchControl.value);\r\n }\r\n }\r\n\r\n // Если получаем данные с сервиса DaData,\r\n // То после потери фокуса, нужно применить значение, что осталось\r\n // Это в случае если мы не выбрали элемент из списка, но изменили его\r\n // if (this.suggestionPart !== DaData.ADDRESS) {\r\n // this.control.setValue(this.searchControl.value ? this.searchControl.value.trim() : this.searchControl.value);\r\n // }\r\n\r\n this.control.markAsTouched();\r\n }\r\n this.subscription.unsubscribe();\r\n setTimeout(() => {\r\n triggerIframe();\r\n }, 100)\r\n }\r\n\r\n // Сбрпосить значение контрола\r\n public resetControl(event: any): void {\r\n event.preventDefault();\r\n this.searchControl.reset();\r\n this.inputElement.nativeElement.focus();\r\n }\r\n\r\n\r\n // Фильтр значений в списке\r\n public filterList(event: any) {\r\n if (!event.target.value) {\r\n this.filteredList = this.typeaheadList;\r\n } else {\r\n this.filteredList = this.typeaheadList.filter((item) => {\r\n const label = item[this.typeaheadOptionField] || '';\r\n return label.toLowerCase().indexOf(event.target.value.toLowerCase()) !== -1;\r\n });\r\n }\r\n }\r\n\r\n public getHeightControl(): void {\r\n const textarea = this.textarea?.nativeElement;\r\n if (textarea) {\r\n this.renderer.setStyle(textarea, 'height', 'auto');\r\n const scrollHeight = textarea.scrollHeight;\r\n this.renderer.setStyle(textarea, 'height', scrollHeight + 4 + 'px');\r\n }\r\n }\r\n\r\n\r\n adjustTextareaHeight(textarea: HTMLTextAreaElement): void {\r\n if (textarea) {\r\n this.renderer.setStyle(textarea, 'height', 'auto');\r\n const scrollHeight = textarea.scrollHeight;\r\n this.renderer.setStyle(textarea, 'height', scrollHeight + 4 + 'px');\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n
\r\n Loading...\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n Loading...\r\n
\r\n
\r\n\r\n\r\n
7 ? 7 * 46 + 'px' : 'auto'\">\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n\r\n\r\n","import {\r\n Component, ElementRef,\r\n forwardRef,\r\n HostListener,\r\n Inject,\r\n Injector,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n UntypedFormControl,\r\n FormControlDirective,\r\n FormControlName,\r\n FormGroupDirective,\r\n NG_VALUE_ACCESSOR,\r\n NgControl\r\n} from '@angular/forms';\r\nimport {Subscription} from 'rxjs';\r\nimport {FormService} from '../../services/form.service';\r\nimport {MASKS} from '../../constants/masks';\r\nimport {IMask} from '../../interface/masks.interface';\r\nimport {ValidationService} from '../../services/validation.service';\r\nimport {BsDatepickerConfig, BsDatepickerDirective, BsLocaleService} from \"ngx-bootstrap/datepicker\";\r\nimport {defineLocale, itLocale, ruLocale} from \"ngx-bootstrap/chronos\";\r\nimport moment from \"moment-mini\";\r\n\r\n@Component({\r\n selector: 'app-form-date-field',\r\n templateUrl: './form-date-field.component.html',\r\n styleUrls: ['./form-date-field.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FormDateFieldComponent),\r\n multi: true,\r\n }],\r\n})\r\nexport class FormDateFieldComponent implements ControlValueAccessor, OnInit, OnDestroy {\r\n\r\n // Заголовок\r\n @Input() label!: string;\r\n // Показываем календарь\r\n @Input() isShowCalendar: boolean = false;\r\n // Только для чтения\r\n @Input() isReadonly!: boolean;\r\n\r\n @ViewChild('inputDate', { static: false }) inputDate!: ElementRef;\r\n\r\n @ViewChild(BsDatepickerDirective, {static: false}) datepicker?: BsDatepickerDirective;\r\n\r\n @HostListener('window:scroll')\r\n onScrollEvent() {\r\n // this.datepicker?.hide();\r\n }\r\n\r\n // Настройки календаря\r\n public bsConfig?: Partial;\r\n\r\n // Локализавция календаря\r\n private locale = 'ru';\r\n\r\n // Контрол изменяемого input\r\n public inputControl: UntypedFormControl = new UntypedFormControl(null);\r\n public inputModel!: any;\r\n // Контрол\r\n public control!: UntypedFormControl;\r\n // Имя контрола\r\n public name!: string;\r\n // Подписка на контрол\r\n private subscription: Subscription = new Subscription();\r\n // Сообщения валидации\r\n public messages: { [key: string]: any } = {};\r\n // Флаг, идет загрузка списка\r\n public isLoading = false;\r\n // Паттерн - только числа\r\n public pattern = '[0-9]';\r\n // Маска для контролла даты\r\n public dateMask = [/\\d/, /\\d/, '.', /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/];\r\n // Максимальная дата для выбора в календаре\r\n public maxDate!: Date;\r\n // Минимальная дата для выбора в календаре\r\n public minDate!: Date;\r\n // Минимальная дата для выбора в календаре\r\n public minDateYear!: Date;\r\n\r\n // Вызовем когда значение изменится\r\n private onTouched: any = () => {\r\n };\r\n\r\n // Вызовем при любом действии пользователя с контроллом\r\n private onChange: any = () => {\r\n };\r\n\r\n constructor(@Inject(Injector) private injector: Injector,\r\n public readonly formService: FormService,\r\n private readonly validationService: ValidationService,\r\n private readonly localeService: BsLocaleService) {\r\n defineLocale('ru', ruLocale);\r\n localeService.use(this.locale);\r\n this.bsConfig = Object.assign({}, {\r\n showWeekNumbers: false\r\n });\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n MASKS.filter((item: IMask) => item.systemName === 'dateMask')\r\n .map((item) => this.dateMask = item.mask);\r\n\r\n const injectedControl = this.injector.get(NgControl);\r\n this.name = injectedControl.name + 'controlName';\r\n\r\n switch (injectedControl.constructor) {\r\n case FormControlName: {\r\n this.control = this.injector.get(FormGroupDirective).getControl(injectedControl as FormControlName);\r\n break;\r\n }\r\n default: {\r\n this.control = (injectedControl as FormControlDirective).form as UntypedFormControl;\r\n break;\r\n }\r\n }\r\n\r\n // Применяем параметры контрола\r\n if (injectedControl.name) {\r\n this.initPropertyControl(injectedControl.name.toString());\r\n }\r\n\r\n // Подписка на изменение контрола\r\n this.subscription.add(\r\n this.inputControl.valueChanges.subscribe((value) => {\r\n // Очистка значения контролла от пробелов и префикса\r\n const cleanValue = value && value.length > 0 ? value?.replace(/\\s/g, '').replace(/\\D/g, '') : value;\r\n this.control.setValue(cleanValue);\r\n })\r\n );\r\n\r\n }\r\n\r\n // Уничтожение\r\n public ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n\r\n // Применяем параметры контролла\r\n public initPropertyControl(injectedControlName: string): void {\r\n const propertyControl = this.formService.propertyControls[injectedControlName];\r\n if (propertyControl?.validation?.messages) {\r\n this.messages = propertyControl?.validation?.messages;\r\n }\r\n if (propertyControl?.label) {\r\n this.label = propertyControl.label;\r\n }\r\n\r\n if (propertyControl.maxDate === 'today' && this.bsConfig) {\r\n this.maxDate = moment().toDate();\r\n this.bsConfig.maxDate = this.maxDate;\r\n }\r\n\r\n if (propertyControl.maxDate && propertyControl.maxDate !== 'today' && this.bsConfig) {\r\n this.maxDate = moment().add(Number(propertyControl.maxDate), \"days\").toDate();\r\n this.bsConfig.maxDate = this.maxDate;\r\n }\r\n\r\n if (this.formService.policyStartDateMaxOffsetDaysDate && this.bsConfig && injectedControlName === 'mortgageStartDate') {\r\n this.maxDate = this.formService.policyStartDateMaxOffsetDaysDate;\r\n this.bsConfig.maxDate = this.maxDate;\r\n }\r\n\r\n if (propertyControl.minDate === 'today' && this.bsConfig) {\r\n this.minDate = moment().toDate();\r\n this.bsConfig.minDate = this.minDate;\r\n }\r\n\r\n if (propertyControl.minDate && propertyControl.minDate !== 'today' && this.bsConfig) {\r\n this.minDate = moment().add(Number(propertyControl.minDate), \"days\").toDate();\r\n this.bsConfig.minDate = this.minDate;\r\n }\r\n\r\n if (propertyControl.minDateYear && propertyControl.minDateYear !== 'today' && this.bsConfig) {\r\n this.minDateYear = moment().add(Number(propertyControl.minDateYear), \"years\").toDate();\r\n this.bsConfig.minDate = this.minDateYear;\r\n }\r\n if (propertyControl?.isReadonly) {\r\n this.isReadonly = propertyControl.isReadonly;\r\n }\r\n\r\n this.validationService.setControlValidation(propertyControl, this.control);\r\n\r\n return;\r\n }\r\n\r\n // Вызовет форма, если значение изменилось извне\r\n public writeValue(value: any): void {\r\n if (this.inputControl && this.inputControl.value !== value) {\r\n this.inputControl.setValue(value, {onlySelf: true, emitEvent: false});\r\n this.onChange(value);\r\n this.onTouched();\r\n\r\n const dateString = value;\r\n const date = moment(dateString, 'DD.MM.YYYY').toDate();\r\n // this.inputModel = date;\r\n if (this.inputDate?.nativeElement?.value) {\r\n this.inputDate.nativeElement.value = date;\r\n }\r\n }\r\n }\r\n\r\n // Сохраняем обратный вызов для изменений\r\n public registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n // Сохраняем обратный вызов для \"касаний\"\r\n public registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n // Установка состояния disabled\r\n public setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.inputControl.disable() : this.inputControl.enable();\r\n }\r\n\r\n // Событие при выходи из сонктрола\r\n public blurControl(event: any): void {\r\n const dateString = event.target?.value;\r\n const date = moment(dateString, 'DD.MM.YYYY').toDate();\r\n // this.inputModel = date;\r\n if (this.inputDate?.nativeElement?.value) {\r\n this.inputDate.nativeElement.value = date;\r\n }\r\n // Задержка перед тем как показать ошибку валидации, что бы не прыгал календарь (переделать)\r\n setTimeout(() => {\r\n this.control.markAsTouched();\r\n }, 200)\r\n }\r\n\r\n // Фокус на контроле\r\n public focusDateControl(event: any): void {\r\n }\r\n\r\n public changeDate(event: any): void {\r\n const date = moment(event);\r\n const formattedDate = date.format(\"DD.MM.YYYY\");\r\n this.inputControl.setValue(formattedDate);\r\n\r\n }\r\n}\r\n","
\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n","

{{error}}

\r\n","import { Component, Input } from '@angular/core';\r\n\r\n// Отображение ошибок валидации\r\n@Component({\r\n selector: 'app-form-field-error',\r\n templateUrl: './form-field-error.component.html',\r\n styleUrls: ['./form-field-error.component.scss'],\r\n})\r\nexport class FormFieldErrorComponent {\r\n\r\n // Базовые сообщения\r\n private readonly DEFAULT_MESSAGES = {\r\n required: 'Это поле обязательно для заполнения',\r\n };\r\n\r\n // Ошибки\r\n @Input() controlErrors!: any;\r\n\r\n // Сообщения валидации\r\n @Input() messages: {[key: string]: any} = {};\r\n\r\n // Отображаемые ошибки\r\n public get errors(): string[] {\r\n\r\n const errors = (this.controlErrors) || {} as any;\r\n const messages = {\r\n ...this.DEFAULT_MESSAGES,\r\n ...this.messages,\r\n } as any;\r\n\r\n if (errors.required) {\r\n return [messages.required];\r\n }\r\n\r\n if (errors.customValidation) {\r\n return [errors.message];\r\n }\r\n\r\n const arrays = Object.keys(errors)\r\n .filter(key => errors[key])\r\n .map(key => Array.isArray(messages[key]) ? messages[key] : [messages[key]]);\r\n\r\n return [].concat.apply([], arrays);\r\n }\r\n}\r\n","import {Component, DoCheck, forwardRef, Inject, Injector, Input, OnDestroy, OnInit,} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormControlDirective,\r\n FormControlName,\r\n FormGroupDirective,\r\n NG_VALUE_ACCESSOR,\r\n NgControl,\r\n UntypedFormControl,\r\n} from '@angular/forms';\r\nimport {Subscription} from 'rxjs';\r\n\r\n// Сервисы\r\nimport {FormService} from '../../services/form.service';\r\nimport {ValidationService} from '../../services/validation.service';\r\nimport {createNumberMask} from \"text-mask-addons\";\r\n\r\nconst maskProperty = {\r\n prefix: '',\r\n suffix: ' ₽',\r\n includeThousandsSeparator: true,\r\n thousandsSeparatorSymbol: ' ',\r\n allowDecimal: true,\r\n decimalLimit: 2,\r\n};\r\n\r\n\r\n@Component({\r\n selector: 'app-form-number-field',\r\n templateUrl: './form-number-field.component.html',\r\n styleUrls: ['./form-number-field.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FormNumberFieldComponent),\r\n multi: true,\r\n }],\r\n})\r\nexport class FormNumberFieldComponent\r\n implements ControlValueAccessor, OnInit, OnDestroy, DoCheck {\r\n\r\n // Заголовок\r\n @Input() label!: string;\r\n // Только для чтения\r\n @Input() isReadonly!: boolean;\r\n // Максимальное числовое значение\r\n @Input() maxLength!: number;\r\n // Количество знаков\r\n @Input() numericMaxLength!: number;\r\n // Разделитель дробных чисел\r\n @Input() decimalSeparator!: string;\r\n // Разделитель тысячных чисел\r\n @Input() numericThousandSeparator!: string;\r\n // Значение подставляемое после числа\r\n @Input() postfix!: string;\r\n\r\n public mask = createNumberMask({\r\n ...maskProperty\r\n });\r\n\r\n // Контрол изменяемого input\r\n public inputControl: UntypedFormControl = new UntypedFormControl(null);\r\n // Контрол\r\n public control!: UntypedFormControl;\r\n // Имя контрола\r\n public name!: string | number | null;\r\n // Подписка на контрол\r\n private subscription: Subscription = new Subscription();\r\n public subscriptions: Subscription[] = [];\r\n // Подписка на контрол поиска\r\n private searchSubscription!: Subscription;\r\n // Сообщения валидации\r\n public messages: { [key: string]: any } = {};\r\n // Флаг валидности контрола\r\n private valid!: boolean;\r\n // Флаг, идет загрузка списка\r\n public isLoading = false;\r\n // Паттерн - только числа\r\n public pattern = '[0-9]+';\r\n // Placeholder\r\n public placeholder!: string;\r\n // Размер контрола\r\n public large = false;\r\n // Разделитель дробной части\r\n public isDot: boolean | undefined = false;\r\n numb: string = ''\r\n // Тип ввода\r\n inputmode: string = 'decimal';\r\n // Символ разделитель для десятичных чисел\r\n public decimalSymbol!: string;\r\n // Символ суффикса\r\n public suffix!: string;\r\n // Скрываем элемент\r\n public isHidden = false;\r\n\r\n\r\n constructor(@Inject(Injector) private injector: Injector,\r\n public readonly formService: FormService,\r\n private readonly validationService: ValidationService) {\r\n }\r\n\r\n // Вызовем когда значение изменится\r\n private onTouched: any = () => {\r\n };\r\n\r\n // Вызовем при любом действии пользователя с контроллом\r\n private onChange: any = () => {\r\n };\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n const injectedControl = this.injector.get(NgControl);\r\n this.name = injectedControl.name;\r\n\r\n switch (injectedControl.constructor) {\r\n case FormControlName: {\r\n this.control = this.injector.get(FormGroupDirective).getControl(injectedControl as FormControlName);\r\n break;\r\n }\r\n default: {\r\n this.control = (injectedControl as FormControlDirective).form as UntypedFormControl;\r\n break;\r\n }\r\n }\r\n\r\n // Если нам известно имя контролла, применяем для него параметры\r\n if (injectedControl?.name) {\r\n this.initPropertyControl(injectedControl.name.toString());\r\n }\r\n\r\n // Подписка на изменение контрола\r\n this.subscriptions.push(\r\n this.inputControl.valueChanges.subscribe((value) => {\r\n // Очистка значения контролла от пробелов и префикса\r\n const cleanValue = value && typeof value === 'string' && !this.decimalSeparator\r\n ? value.replace(this.postfix, '').replace(/\\s/g, '')\r\n : value;\r\n\r\n this.control.setValue(cleanValue);\r\n // this.onChange(cleanValue);\r\n })\r\n );\r\n\r\n }\r\n\r\n // Уничтожение\r\n public ngOnDestroy(): void {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n\r\n // Применяем параметры контролла\r\n public initPropertyControl(injectedControlName: string): void {\r\n const propertyControl = this.formService.propertyControls[injectedControlName];\r\n if (propertyControl?.validation?.messages) {\r\n this.messages = propertyControl?.validation?.messages;\r\n }\r\n if (propertyControl?.postfix) {\r\n this.postfix = propertyControl.postfix;\r\n }\r\n if (propertyControl?.pattern) {\r\n this.pattern = propertyControl.pattern;\r\n }\r\n if (propertyControl?.label) {\r\n this.label = propertyControl.label;\r\n }\r\n if (propertyControl?.numericThousandSeparator) {\r\n this.numericThousandSeparator = propertyControl.numericThousandSeparator;\r\n }\r\n if (propertyControl?.numericMaxLength) {\r\n this.numericMaxLength = propertyControl.numericMaxLength;\r\n }\r\n if (propertyControl?.maxLength) {\r\n this.maxLength = propertyControl.maxLength;\r\n }\r\n if (propertyControl?.placeholder) {\r\n this.placeholder = propertyControl.placeholder;\r\n }\r\n if (propertyControl?.isReadonly) {\r\n this.isReadonly = propertyControl.isReadonly;\r\n }\r\n if (propertyControl?.isHidden) {\r\n this.isHidden = propertyControl.isHidden;\r\n }\r\n // if (propertyControl?.large !== null) {\r\n // this.large = propertyControl.large;\r\n // }\r\n\r\n this.mask = createNumberMask({\r\n prefix: propertyControl?.prefix ? propertyControl?.prefix : '',\r\n suffix: propertyControl?.postfix ? propertyControl?.postfix : '',\r\n includeThousandsSeparator: propertyControl?.includeThousandsSeparator,\r\n thousandsSeparatorSymbol: propertyControl?.thousandsSeparatorSymbol ? propertyControl?.thousandsSeparatorSymbol : ' ',\r\n allowDecimal: propertyControl?.allowDecimal,\r\n decimalSymbol: propertyControl?.decimalSymbol ? propertyControl?.decimalSymbol : ',',\r\n decimalLimit: propertyControl?.decimalLimit ? propertyControl?.decimalLimit : 2,\r\n requireDecimal: propertyControl?.requireDecimal,\r\n allowNegative: propertyControl?.allowNegative,\r\n allowLeadingZeroes: propertyControl?.allowLeadingZeroes,\r\n integerLimit: propertyControl?.integerLimit ? propertyControl?.integerLimit : 10\r\n });\r\n\r\n this.decimalSymbol = propertyControl?.decimalSymbol ? propertyControl?.decimalSymbol : ',';\r\n this.suffix = propertyControl?.postfix ? propertyControl?.postfix : '';\r\n\r\n this.isDot = propertyControl?.isDot;\r\n\r\n this.validationService.setControlValidation(propertyControl, this.control);\r\n\r\n return;\r\n }\r\n\r\n // Вызовет форма, если значение изменилось извне\r\n public writeValue(value: any): void {\r\n this.inputControl.setValue(this.isDot && value && value?.toString().includes(\".\")\r\n ? value?.toString().replace(\".\", \",\")\r\n : value, {emitEvent: false});\r\n }\r\n\r\n // Сохраняем обратный вызов для изменений\r\n public registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n // Сохраняем обратный вызов для \"касаний\"\r\n public registerOnTouched(fn: any): void {\r\n // this.onTouched = fn;\r\n }\r\n\r\n // Установка состояния disabled\r\n public setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.inputControl.disable() : this.inputControl.enable();\r\n }\r\n\r\n public ngDoCheck(): void {\r\n if (this.control && this.control.touched && this.inputControl.untouched) {\r\n this.inputControl.markAsTouched();\r\n }\r\n }\r\n\r\n public isFieldValid(field: string): any {\r\n return !this.formService.form.get(field)?.valid && this.formService.form.get(field)?.touched;\r\n }\r\n\r\n // Событие при выходи из сонктрола\r\n public blurControl(event: Event): void {\r\n this.control.markAsTouched();\r\n }\r\n\r\n onKeyDown(event: any) {\r\n const input = event.target as HTMLInputElement;\r\n const insertedChar = event.data;\r\n\r\n if ((insertedChar === '.' && this.decimalSymbol !== '.' && !input.value.includes(this.decimalSymbol))\r\n || insertedChar === ',' && this.decimalSymbol !== ',' && !input.value.includes(this.decimalSymbol)) {\r\n event.preventDefault();\r\n\r\n input.value = `${input.value.slice(0, -this.postfix.length)}${this.decimalSymbol}${this.postfix}`;\r\n\r\n const strWithoutPostfix = `${input.value.slice(0, -this.postfix.length)}${this.decimalSymbol}`;\r\n\r\n // Обновляем позицию курсора через небольшую задержку, чтобы убедиться, что браузер обработал изменение значения поля ввода\r\n setTimeout(() => {\r\n input.setSelectionRange(strWithoutPostfix.length - 1, strWithoutPostfix.length - 1);\r\n }, 0);\r\n }\r\n\r\n this.numb = input.value + ' - ' + input.selectionStart + ' - ' + input.selectionEnd + ' - ' + event.data;\r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n
\r\n","import {Component, ElementRef, forwardRef, Inject, Injector, Input, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n UntypedFormControl,\r\n FormControlDirective,\r\n FormControlName,\r\n FormGroupDirective, NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n NgControl\r\n} from '@angular/forms';\r\nimport {Subscription} from 'rxjs';\r\n\r\n// Сервисы\r\nimport {FormService} from '../../services/form.service';\r\n\r\n// Маски\r\nimport {MASKS} from '../../constants/masks';\r\n\r\n// Интерфейсы\r\nimport {IMask} from '../../interface/masks.interface';\r\nimport {ValidationService} from '../../services/validation.service';\r\n\r\n@Component({\r\n selector: 'app-form-text-field',\r\n templateUrl: './form-text-field.component.html',\r\n styleUrls: ['./form-text-field.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FormTextFieldComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => FormTextFieldComponent),\r\n multi: true\r\n }]\r\n})\r\nexport class FormTextFieldComponent implements ControlValueAccessor, OnInit, OnDestroy {\r\n\r\n @ViewChild('textControl') textControl!: ElementRef;\r\n\r\n // Заголовок\r\n @Input() label!: string;\r\n // Только для чтения\r\n @Input() isReadonly!: boolean;\r\n // Placeholder\r\n @Input() placeholder!: string;\r\n\r\n // Контрол изменяемого input\r\n public inputControl: UntypedFormControl = new UntypedFormControl(null);\r\n // Контрол\r\n public control!: UntypedFormControl;\r\n // Имя контрола\r\n public name!: string;\r\n // Тип\r\n public type = 'text';\r\n // Подписка на контрол\r\n private subscription: Subscription = new Subscription();\r\n // Сообщения валидации\r\n public messages: { [key: string]: any } = {};\r\n // Флаг, идет загрузка списка\r\n public isLoading = false;\r\n // Маска\r\n public mask: any;\r\n // Маска для чистого значения\r\n public clearMask: any;\r\n // Показываем маску при заполнении\r\n public showMask = false;\r\n // Показываем клавиатуру \"только цифры\" в мобильных устройствах\r\n public isNumberKeyboard!: boolean;\r\n // Показываем клавиатуру, текст или только цифры\r\n public inputmode: string = 'text';\r\n // Паттерн\r\n public pattern: string = '';\r\n\r\n // Вызовем когда значение изменится\r\n public onTouched: any = () => {\r\n };\r\n\r\n // Вызовем при любом действии пользователя с контроллом\r\n public onChange: any = () => {\r\n };\r\n\r\n constructor(@Inject(Injector) private injector: Injector,\r\n public readonly formService: FormService,\r\n private readonly validationService: ValidationService) {\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n const injectedControl = this.injector.get(NgControl);\r\n this.name = injectedControl.name + 'controlName';\r\n\r\n switch (injectedControl.constructor) {\r\n case FormControlName: {\r\n this.control = this.injector.get(FormGroupDirective).getControl(injectedControl as FormControlName);\r\n break;\r\n }\r\n default: {\r\n this.control = (injectedControl as FormControlDirective).form as UntypedFormControl;\r\n break;\r\n }\r\n }\r\n\r\n // Применяем параметры контрола\r\n if (injectedControl.name) {\r\n this.initPropertyControl(injectedControl.name.toString());\r\n }\r\n\r\n // Подписка на изменение контрола\r\n this.subscription.add(\r\n this.inputControl.valueChanges.subscribe((value) => {\r\n this.onChange(value);\r\n })\r\n );\r\n }\r\n\r\n // Уничтожение\r\n public ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n\r\n // Применяем параметры контролла\r\n public initPropertyControl(injectedControlName: string): void {\r\n const propertyControl = this.formService.propertyControls[injectedControlName];\r\n if (propertyControl?.validation?.messages) {\r\n this.messages = propertyControl?.validation?.messages;\r\n }\r\n if (propertyControl?.label) {\r\n this.label = propertyControl.label;\r\n }\r\n if (propertyControl?.mask) {\r\n MASKS.filter((item: IMask) => item.systemName === propertyControl?.mask)\r\n .map((item) => this.mask = item.mask);\r\n }\r\n if (propertyControl?.showMask) {\r\n this.showMask = propertyControl?.showMask;\r\n }\r\n if (propertyControl?.type) {\r\n this.type = propertyControl?.type;\r\n }\r\n if (propertyControl?.placeholder) {\r\n this.placeholder = propertyControl?.placeholder;\r\n }\r\n if (propertyControl?.inputmode) {\r\n this.inputmode = propertyControl?.inputmode;\r\n }\r\n if (propertyControl?.pattern) {\r\n this.pattern = propertyControl?.pattern;\r\n }\r\n if (propertyControl?.isReadonly) {\r\n this.isReadonly = propertyControl.isReadonly;\r\n }\r\n\r\n this.validationService.setControlValidation(propertyControl, this.control);\r\n this.validationService.setControlValidation(propertyControl, this.inputControl);\r\n\r\n return;\r\n }\r\n\r\n // Вызовет форма, если значение изменилось извне\r\n public writeValue(value: any): void {\r\n value ? this.inputControl.setValue(value) : this.inputControl.setValue('');\r\n }\r\n\r\n // Сохраняем обратный вызов для изменений\r\n registerOnChange(onChange: (value: any) => void): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n // Сохраняем обратный вызов для \"касаний\"\r\n public registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n // Установка состояния disabled\r\n public setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.inputControl.disable() : this.inputControl.enable();\r\n }\r\n\r\n // Событие при выходи из сонктрола\r\n public blurControl(event: Event): void {\r\n this.control.markAsTouched();\r\n }\r\n\r\n public validate(c: UntypedFormControl): any {\r\n if (!this.inputControl) {\r\n return null;\r\n }\r\n // return this.inputControl.type === this.type ? null : {\r\n // type: {\r\n // valid: false,\r\n // actual: c.value\r\n // }\r\n // }\r\n }\r\n\r\n // Событие фокуса\r\n public focus(event: any): void {\r\n if (this.type === 'phone') {\r\n let digits = event?.target?.value.replace(/\\D/g, '');\r\n const charPositionValue = digits.length === 1\r\n ? digits.length + 1\r\n : digits.length >= 2 && digits.length <= 4\r\n ? digits.length + 2\r\n : digits.length >= 5 && digits.length <= 7\r\n ? digits.length + 4\r\n : digits.length >= 8 && digits.length <= 9\r\n ? digits.length + 5\r\n : digits.length >= 10 && digits.length <= 11\r\n ? digits.length + 6\r\n : digits.length;\r\n setTimeout(() => {\r\n this.textControl.nativeElement.setSelectionRange(charPositionValue, charPositionValue);\r\n });\r\n }\r\n\r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n
\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {FormService} from \"../../services/form.service\";\r\nimport {UntypedFormGroup} from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'app-loader-offer',\r\n templateUrl: './loader-offer.component.html',\r\n styleUrls: ['./loader-offer.component.scss']\r\n})\r\nexport class LoaderOfferComponent implements OnInit {\r\n\r\n @Input() offer: any;\r\n\r\n constructor(private readonly formService: FormService) {\r\n }\r\n\r\n public isPaymentCountdownStarted = false;\r\n public paymentCountdown = '02:30';\r\n private countdownInterval: any;\r\n // Форма срок действия полиса\r\n public formPolicy!: UntypedFormGroup;\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n this.formPolicy = this.formService.form.get('mortgagePolicyDate') as UntypedFormGroup;\r\n this.startPaymentCountdown();\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n // Счетчик\r\n public startPaymentCountdown() {\r\n this.isPaymentCountdownStarted = true;\r\n\r\n // начинаем обратный отсчет\r\n this.countdownInterval = setInterval(() => {\r\n const timeParts = this.paymentCountdown.split(':');\r\n let minutes = +timeParts[0];\r\n let seconds = +timeParts[1];\r\n\r\n if (minutes === 0 && seconds === 0) {\r\n clearInterval(this.countdownInterval);\r\n this.isPaymentCountdownStarted = false;\r\n return;\r\n }\r\n\r\n if (seconds === 0) {\r\n minutes--;\r\n seconds = 59;\r\n } else {\r\n seconds--;\r\n }\r\n\r\n this.paymentCountdown = `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\r\n }, 1000);\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \"{{offer.insurerName}}\"\r\n
\r\n
Ожидание ответа от страховой
\r\n
Компания осуществляет проверку данных
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport {MortgageService} from \"../../services/mortgage.service\";\r\nimport {Router} from \"@angular/router\";\r\nimport {concatMap, Subscription} from \"rxjs\";\r\nimport {IOffer} from \"../../interface/offers.interface\";\r\nimport {AppService} from '../../../core/services/app.service';\r\nimport {NavigationService} from '../../services/navigation.service';\r\nimport {FormService} from \"../../services/form.service\";\r\nimport {FormFilterService} from \"../../services/form-filter.service\";\r\nimport {environment} from \"@environment/environment\";\r\nimport {YandexMetrikaService} from \"../../services/yandex-metrika.service\";\r\nimport {PdfDocViewComponent} from \"../pdf-doc-view/pdf-doc-view.component\";\r\nimport {BsModalRef, BsModalService} from \"ngx-bootstrap/modal\";\r\nimport {UntypedFormGroup} from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'app-offer-item',\r\n templateUrl: './offer-item.component.html',\r\n styleUrls: ['./offer-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class OfferItemComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n // Данные оффера\r\n @Input() offer: any;\r\n // Если ищем офферов которые можно оплатить\r\n @Input() isApproveOffer: boolean = false;\r\n // Если повторно выбираем оффера после того как предыдущий отказал\r\n @Input() isRepeatOffers: boolean = false;\r\n // Остаток по кредиту\r\n @Input() creditRemain: string = this.formFilterService.form.get('creditRemain')?.value;\r\n @Output() triggerNewGetOffers: EventEmitter = new EventEmitter();\r\n constructor(public readonly mortgageService: MortgageService,\r\n private readonly appService: AppService,\r\n public readonly formService: FormService,\r\n public readonly formFilterService: FormFilterService,\r\n private readonly navigationService: NavigationService,\r\n private readonly router: Router,\r\n private readonly cd: ChangeDetectorRef,\r\n private readonly ym: YandexMetrikaService,\r\n private readonly modalService: BsModalService,) {\r\n }\r\n\r\n public formPolicy!: UntypedFormGroup;\r\n public isPaymentCountdownStarted = false;\r\n public paymentCountdown = '02:00';\r\n private countdownInterval: any;\r\n // Документ\r\n public agreement = true;\r\n\r\n // Системное имя партнера\r\n public partnerSystemName = environment.partnerSystemName;\r\n\r\n // Индикатор загрузки черновика\r\n public isDraftLoader = false;\r\n // Ссылка на модальное окно\r\n private bsModalRef?: BsModalRef;\r\n // Показываем ошибку получения ссылки на оплату\r\n public paymentLinkIsEmpty = false;\r\n // Показать подарки\r\n public isShowPromocodes = false;\r\n\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit() {\r\n this.formPolicy = this.formService.form.get('mortgagePolicyDate') as UntypedFormGroup;\r\n if (this.isApproveOffer) {\r\n this.startPaymentCountdown();\r\n this.getMortgagePaymentLink(this.offer.offerId);\r\n }\r\n }\r\n\r\n public ngAfterViewInit() {\r\n\r\n }\r\n\r\n // Уничтожение\r\n public ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n\r\n // Счетчик\r\n public countdown = 120;\r\n // Подписка\r\n private subscriptions: Subscription[] = [];\r\n\r\n\r\n get getPreapprovePremiumAmount(): string {\r\n return this.offer.status === 'PreApproved'\r\n ? Math.floor(this.offer.preapprovePremiumAmount).toLocaleString('ru-RU', {\r\n maximumFractionDigits: 0,\r\n minimumFractionDigits: 0,\r\n useGrouping: true\r\n })\r\n : Math.floor(this.offer.premiumAmount).toLocaleString('ru-RU', {\r\n maximumFractionDigits: 0,\r\n minimumFractionDigits: 0,\r\n useGrouping: true\r\n });\r\n }\r\n\r\n get getCreditRemainAmount(): string {\r\n return Math.floor(Number(this.creditRemain.toString().replace(',', '.'))).toLocaleString('ru-RU', {\r\n maximumFractionDigits: 0, // Устанавливаем максимальное количество дробных знаков в 0\r\n minimumFractionDigits: 0, // Устанавливаем минимальное количество дробных знаков в 0\r\n useGrouping: true // Используем группировку разрядов\r\n });\r\n }\r\n\r\n // Выбрали оффера\r\n public selectOffer(offer: IOffer): void {\r\n if (this.isRepeatOffers) {\r\n this.mortgageService.selectedOffer = this.offer;\r\n this.triggerNewGetOffers.emit(true)\r\n } else if (offer) {\r\n this.subscriptions.push(\r\n this.mortgageService.selectOffer(offer.offerId, offer.productId)\r\n .subscribe(() => {\r\n this.mortgageService.selectedOffer = this.offer;\r\n // Сначала активна форма контактов и далее проходимся по всей форме\r\n this.formService.isContactFormComplete = false;\r\n\r\n this.formService.isBorrowerFormDisabled= true;\r\n this.formService.isMortgageFormDisabled = true;\r\n this.formService.isPolicyFormDisabled = true;\r\n this.formService.isInsuranceFormDisabled = true;\r\n\r\n this.formService.form.markAsUntouched();\r\n\r\n this.ym.onYandexReachGoal('SELECT_OFFER_GOAL');\r\n\r\n if (this.appService.srcUrlParam === 'OffersRecivedEmail') {\r\n this.router.navigate(['form'], {\r\n queryParamsHandling: 'merge'\r\n });\r\n } else {\r\n this.router.navigate(['form'], {\r\n queryParamsHandling: 'merge',\r\n queryParams: {applicationId: this.appService.applicationId}\r\n });\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n // Получаем ссылку на оплату\r\n public getMortgagePaymentLink(offerId: string): void {\r\n this.paymentLinkIsEmpty = false;\r\n this.subscriptions.push(\r\n this.mortgageService.calculateAprove()\r\n .pipe(\r\n concatMap((res) => {\r\n this.isDraftLoader = false;\r\n const offer = res.value.offers.find((offer: any) => offer.offerId === this.mortgageService.selectedOffer?.offerId);\r\n\r\n if (offer?.draft?.status === 2 && offer?.draft?.policyDraft) {\r\n this.mortgageService.draftLink = offer?.draft?.policyDraft;\r\n this.mortgageService.additionalPolicyDraft = offer?.draft?.additionalPolicyDraft;\r\n }\r\n this.cd.detectChanges();\r\n return this.mortgageService.getMortgagePaymentLink(offerId)\r\n })\r\n )\r\n .subscribe({\r\n next: (res) => {\r\n if(res.result) {\r\n this.mortgageService.paymentLink = res.value?.mortgagePaymentLink;\r\n this.paymentLinkIsEmpty = false;\r\n } else {\r\n this.paymentLinkIsEmpty = true;\r\n }\r\n\r\n this.isPaymentCountdownStarted = false;\r\n this.paymentCountdown = '02:00';\r\n clearInterval(this.countdownInterval);\r\n this.ym.onYandexReachGoal('GET_PAYMENT_LINK_GOAL');\r\n // Вставляем событие клика для ссылок на документы\r\n this.setClickForDocs();\r\n // Делаем проверку на изменение dom\r\n this.cd.markForCheck();\r\n },\r\n error: () => {},\r\n complete: () => {\r\n if (this.appService.isArmApplication)\r\n this.navigationService.navigate('/success');\r\n }\r\n })\r\n );\r\n }\r\n\r\n // Оплатить\r\n public payment(): void {\r\n this.subscriptions.push(this.mortgageService.clickPay().subscribe());\r\n window.open(this.mortgageService.paymentLink, '_blank');\r\n }\r\n\r\n // Открыть черновик\r\n public openDraft(): void {\r\n const initialState = {\r\n src: environment.apiUrl + 'File/draft/' + this.mortgageService.draftLink,\r\n };\r\n this.bsModalRef = this.modalService.show(PdfDocViewComponent, {\r\n initialState,\r\n class: 'modal-dialog-centered PDFmodal'\r\n });\r\n }\r\n\r\n // Открыть черновик\r\n public openAdditionalDraft(): void {\r\n const initialState = {\r\n src: environment.apiUrl + 'File/draft/' + this.mortgageService.additionalPolicyDraft,\r\n };\r\n this.bsModalRef = this.modalService.show(PdfDocViewComponent, {\r\n initialState,\r\n class: 'modal-dialog-centered PDFmodal'\r\n });\r\n }\r\n\r\n // Счетчик\r\n public startPaymentCountdown() {\r\n this.isPaymentCountdownStarted = true;\r\n\r\n // начинаем обратный отсчет\r\n this.countdownInterval = setInterval(() => {\r\n const timeParts = this.paymentCountdown.split(':');\r\n let minutes = +timeParts[0];\r\n let seconds = +timeParts[1];\r\n\r\n if (minutes === 0 && seconds === 0) {\r\n clearInterval(this.countdownInterval);\r\n this.isPaymentCountdownStarted = false;\r\n // Вставляем событие клика для ссылок на документы\r\n this.setClickForDocs();\r\n return;\r\n }\r\n\r\n if (seconds === 0) {\r\n minutes--;\r\n seconds = 59;\r\n } else {\r\n seconds--;\r\n }\r\n\r\n this.paymentLinkIsEmpty = false;\r\n this.cd.detectChanges();\r\n\r\n this.paymentCountdown = `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\r\n }, 1000);\r\n }\r\n\r\n // Вставляем событие клика для ссылок на документы\r\n public setClickForDocs(): void {\r\n setTimeout(() => {\r\n // В этом методе контент [innerHTML]=\"item\" уже доступен\r\n const elements = document.querySelectorAll('.form-check-label a');\r\n elements.forEach((element: any) => {\r\n element.addEventListener('click', (event: Event) => {\r\n event.preventDefault();\r\n\r\n if (!element.data) {\r\n element.data = element.href;\r\n }\r\n\r\n const initialState = {\r\n src: element.data,\r\n };\r\n this.bsModalRef = this.modalService.show(PdfDocViewComponent, {\r\n initialState,\r\n class: 'modal-dialog-centered PDFmodal'\r\n });\r\n\r\n element.href = 'javascript:void(0)';\r\n element.target = '_self';\r\n });\r\n\r\n });\r\n }, 100)\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n \r\n {{badge.title}}\r\n \r\n
\r\n
\r\n
\r\n \"{{offer.insurerName}}\"\r\n
\r\n
{{ offer.insurerName }}
\r\n
\r\n \r\n {{index < value ? '★' : '★'}}\r\n
{{offer.insurerRating}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Остаток
\r\n
\r\n {{ getCreditRemainAmount }} ₽\r\n
\r\n
\r\n
\r\n
Цена
\r\n
\r\n {{ getPreapprovePremiumAmount }} ₽\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
0\" class=\"col-auto\">\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"\"\r\n
\r\n
\r\n
\r\n {{item.promocodeTitle}}\r\n
\r\n
\r\n {{item.promocodeSubtitle}}\r\n
\r\n
\r\n {{item.promocodeDescription}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Промокоды с подарками будут отправлены вам на почту после оформления полиса
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Оплата проводится за период, равный одному году, из графика платежей страховой компании\r\n
\r\n
\r\n\r\n
\r\n Полис поступит на почту в течение 20 минут после оплаты. Загрузите полис и документ, подтверждающий оплату, на сайте\r\n ДомКлик или принесите в офис банка.\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n Полис не подтвержден страховой компанией\r\n

Не удалось получить ссылку на оплату от страховой, повторите позднее

\r\n \r\n
\r\n","
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {BsModalRef} from \"ngx-bootstrap/modal\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {ModalService} from \"../../services/modal.service\";\r\n\r\n@Component({\r\n selector: 'app-pdf-doc-view',\r\n templateUrl: './pdf-doc-view.component.html',\r\n styleUrls: ['./pdf-doc-view.component.scss']\r\n})\r\nexport class PdfDocViewComponent implements OnInit, OnDestroy {\r\n public src!: string;\r\n\r\n constructor(public readonly bsModalRef: BsModalRef,\r\n public readonly modalService: ModalService) {\r\n }\r\n\r\n // Подписка\r\n private subscriptions: Subscription[] = [];\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n }\r\n\r\n // Уничтожение\r\n public ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-progress-circle',\r\n templateUrl: './progress-circle.component.html',\r\n styleUrls: ['./progress-circle.component.scss']\r\n})\r\nexport class ProgressCircleComponent implements OnChanges {\r\n @Input() isLoading = false;\r\n @Input() paymentCountdown = '02:30'; // Время в формате 'MM:SS'\r\n\r\n radius = 36;\r\n strokeWidth = 5;\r\n circumference = 2 * Math.PI * this.radius;\r\n progress = 0;\r\n countdownTime = 0; // Время в миллисекундах\r\n remainingTime = 0; // Время, оставшееся в миллисекундах\r\n intervalId: any;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['paymentCountdown']) {\r\n this.updateCountdownTime(); // Обновляем время по значению paymentCountdown\r\n }\r\n\r\n if (changes['isLoading']) {\r\n if (this.isLoading) {\r\n this.startTimer();\r\n } else {\r\n this.resetTimer();\r\n }\r\n }\r\n }\r\n\r\n // Метод для преобразования 'MM:SS' в миллисекунды\r\n updateCountdownTime() {\r\n const [minutes, seconds] = this.paymentCountdown.split(':').map(Number);\r\n this.countdownTime = (Number(minutes) * 60 + Number(seconds)) * 1000; // Преобразуем в миллисекунды\r\n this.remainingTime = this.countdownTime;\r\n }\r\n\r\n startTimer() {\r\n if (this.countdownTime <= 0) {\r\n return;\r\n }\r\n\r\n this.progress = 0; // Сбрасываем прогресс\r\n const interval = 1000 / 60; // 60 FPS\r\n const step = (this.circumference / this.countdownTime) * interval;\r\n\r\n this.intervalId = setInterval(() => {\r\n this.progress += step;\r\n this.remainingTime -= interval;\r\n\r\n // Обратный отсчет времени\r\n if (this.remainingTime <= 0) {\r\n this.progress = this.circumference;\r\n clearInterval(this.intervalId);\r\n }\r\n\r\n if (this.progress >= this.circumference) {\r\n this.progress = this.circumference;\r\n clearInterval(this.intervalId);\r\n }\r\n }, interval);\r\n }\r\n\r\n\r\n\r\n resetTimer() {\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n }\r\n this.progress = 0; // Сброс прогресса до 0\r\n this.paymentCountdown = '02:00'; // Сброс времени\r\n this.remainingTime = this.countdownTime;\r\n }\r\n\r\n // Метод для получения стиля dasharray, который зависит от прогресса\r\n getDashArray() {\r\n return `${this.progress} ${this.circumference}`;\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
{{ paymentCountdown }}
\r\n\r\n
\r\n Подбираем варианты\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {MortgageService} from \"../../services/mortgage.service\";\r\nimport { environment } from '../../../../environments/environment';\r\n\r\n// Сервисы\r\nimport {FormFilterService} from \"../../services/form-filter.service\";\r\n\r\n// Перечисления\r\nimport {NavigationService} from \"../../services/navigation.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-selected-offer',\r\n templateUrl: './selected-offer.component.html',\r\n styleUrls: ['./selected-offer.component.scss']\r\n})\r\nexport class SelectedOfferComponent implements OnInit {\r\n\r\n public bankSystemName = environment.partnerSystemName;\r\n @Input() offer: any;\r\n // Остаток по кредиту\r\n @Input() creditRemain: string = this.formFilterService.form.get('creditRemain')?.value;\r\n\r\n constructor(public readonly mortgageService: MortgageService,\r\n public readonly formFilterService: FormFilterService,\r\n public readonly navigationService: NavigationService) {\r\n }\r\n\r\n get getPreapprovePremiumAmount(): number {\r\n return this.offer.preapprovePremiumAmount.toLocaleString('ru-RU', {\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 0,\r\n useGrouping: true\r\n });\r\n }\r\n\r\n get getCreditRemainAmount(): string {\r\n return Number(this.creditRemain.toString().replace(',', '.')).toLocaleString('ru-RU', {\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 0,\r\n useGrouping: true\r\n });\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n public navigateToBack(event: Event): void {\r\n event.preventDefault();\r\n this.navigationService.navigate('/');\r\n }\r\n}\r\n","
\r\n
\r\n \r\n {{badge.title}}\r\n \r\n
\r\n
\r\n
\r\n \"{{offer.insurerName}}\"\r\n
\r\n
{{ offer.insurerName }}
\r\n
\r\n \r\n {{index < value ? '★' : '★'}}\r\n
{{offer.insurerRating}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Ипотечный банк
\r\n
\r\n {{mortgageService.selectedBank.bank || mortgageService.selectedBank.name}}\r\n
\r\n
\r\n
\r\n
Цена
\r\n
\r\n {{ getPreapprovePremiumAmount }} ₽\r\n
\r\n
\r\n
\r\n
Остаток по кредиту
\r\n
\r\n {{ getCreditRemainAmount }} ₽\r\n
\r\n
\r\n
\r\n
Страхование
\r\n
Продукт
\r\n
\r\n \r\n Имущество\r\n \r\n\r\n \r\n Титул\r\n \r\n\r\n \r\n Жизнь и здоровье\r\n \r\n\r\n \r\n Имущество + жизнь и здоровье\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n","// Контент\r\nexport const CONTENT = {\r\n filter: {\r\n alertProductProperty: 'Выбирайте тип полиса \"Квартира\", когда дом сдан и вы получили свидетельство собственности',\r\n alertProductLife: 'Выбирайте тип полиса \"Жизнь\", если банк предоставляет скидку на страхование жизни',\r\n alertProductLifeAndProperty: 'Выбирайте тип полиса \"Квартира + Жизнь\", если дом достроен и требуется страхование жизни',\r\n }\r\n};\r\n","import { IMask } from '../interface/masks.interface';\r\n\r\n// Список всех масок\r\nexport const MASKS: IMask[] = [\r\n {\r\n systemName: 'license',\r\n mask: [ /^[a-zA-Zа-яА-ЯёЁ]$/, ' ', /\\d/, /\\d/, /\\d/, ' ', /^[a-zA-Zа-яА-ЯёЁ\\{\\[]$/, /^[a-zA-Zа-яА-ЯёЁ\\{\\[]$/, ' ', /\\d/, /\\d/, /\\d/ ],\r\n clearMask: [ /^[a-zA-Zа-яА-ЯёЁ]$/, /\\d/, /\\d/, /\\d/, /^[a-zA-Zа-яА-ЯёЁ\\{\\[]$/, /^[a-zA-Zа-яА-ЯёЁ\\{\\[]$/, /\\d/, /\\d/, /\\d/ ]\r\n },\r\n {\r\n systemName: 'stsNumber',\r\n mask: [/\\d/, /\\d/, ' ', /^[0-9а-яА-ЯёЁ]$/, /^[0-9а-яА-ЯёЁ]$/, ' ', /\\d/, /\\d/, /\\d/, ' ', /\\d/, /^[0-9-*]$/, /^[0-9-*]$/],\r\n clearMask: [/\\d/, /\\d/, /^[0-9а-яА-ЯёЁ]$/, /^[0-9а-яА-ЯёЁ]$/, /\\d/, /\\d/, /\\d/, /\\d/, /^[0-9-*]$/, /^[0-9-*]$/]\r\n },\r\n {\r\n systemName: 'ptsNumber',\r\n mask: [ /\\d/, /\\d/, ' ', /^[0-9а-яА-ЯёЁ]$/, /^[0-9а-яА-ЯёЁ]$/, ' ', /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/ ],\r\n clearMask: [ /\\d/, /\\d/, /^[0-9а-яА-ЯёЁ]$/, /^[0-9а-яА-ЯёЁ]$/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/ ]\r\n },\r\n {\r\n systemName: 'ePtsNumber',\r\n mask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/],\r\n clearMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\r\n },\r\n {\r\n systemName: 'vinNumber',\r\n mask: (): any[] => {\r\n let index = 0;\r\n const result = [];\r\n while (index < 19) {\r\n if (index === 3 || index === 10) {\r\n result.push(' ');\r\n } else {\r\n result.push(/^[0-9a-jklmnpr-zKLMNPR-ZA-JKLMNPR-Z-*]$/);\r\n }\r\n index++;\r\n }\r\n return result;\r\n }\r\n },\r\n {\r\n systemName: 'driverLicense',\r\n mask: [ /\\d/, /\\d/, ' ', /^[0-9a-zA-Zа-яА-ЯёЁ\\{\\[]$/, /^[0-9a-zA-Zа-яА-ЯёЁ\\{\\[]$/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/ ],\r\n clearMask: [ /\\d/, /\\d/, /^[0-9a-zA-Zа-яА-ЯёЁ\\{\\[]$/, /^[0-9a-zA-Zа-яА-ЯёЁ\\{\\[]$/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/ ]\r\n },\r\n {\r\n systemName: 'phone',\r\n mask: ['+', '7', '(', /\\d/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, '-', /\\d/, /\\d/],\r\n clearMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\r\n },\r\n {\r\n systemName: 'passportLicense',\r\n mask: [/\\d/, /\\d/, ' ', /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/],\r\n clearMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\r\n },\r\n {\r\n systemName: 'dateMask',\r\n mask: [ /\\d/, /\\d/, '.', /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/ ],\r\n clearMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\r\n },\r\n {\r\n systemName: 'borrowerDepartmentCode',\r\n mask: [ /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/ ],\r\n clearMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\r\n }\r\n\r\n];\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appIsDate]'\r\n})\r\nexport class DateDirective {\r\n private navigationKeys = [\r\n 'Backspace',\r\n 'Delete',\r\n 'Tab',\r\n 'Escape',\r\n 'Enter',\r\n 'Home',\r\n 'End',\r\n 'ArrowLeft',\r\n 'ArrowRight',\r\n 'Clear',\r\n 'Copy',\r\n 'Paste'\r\n ];\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: any) {\r\n if (\r\n this.navigationKeys.indexOf(event.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\r\n (event.key === 'a' && event.ctrlKey === true) || // Allow: Ctrl+A\r\n (event.key === 'c' && event.ctrlKey === true) || // Allow: Ctrl+C\r\n (event.key === 'v' && event.ctrlKey === true) || // Allow: Ctrl+V\r\n (event.key === 'x' && event.ctrlKey === true) || // Allow: Ctrl+X\r\n (event.key === 'a' && event.metaKey === true) || // Allow: Cmd+A (Mac)\r\n (event.key === 'c' && event.metaKey === true) || // Allow: Cmd+C (Mac)\r\n (event.key === 'v' && event.metaKey === true) || // Allow: Cmd+V (Mac)\r\n (event.key === 'x' && event.metaKey === true) // Allow: Cmd+X (Mac)\r\n ) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n\r\n if (event.target.selectionEnd > 0)\r\n return;\r\n\r\n const value = (event.target.value || '').replace(/\\_/g, '');\r\n if (value.length >= 10)\r\n event.preventDefault();\r\n }\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, HostListener, Input} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appIsNumeric]'\r\n})\r\nexport class IsNumericDirective implements AfterViewInit {\r\n @Input() numericMaxLength: number | null = null;\r\n @Input() decimalPlaces: number | null = null;\r\n @Input() decimalSeparator: string | null = ',';\r\n @Input() numericThousandSeparator: string | null = null;\r\n @Input() postfix: string | null = null;\r\n\r\n private navigationKeys = [\r\n 'Backspace',\r\n 'Delete',\r\n 'Tab',\r\n 'Escape',\r\n 'Enter',\r\n 'Home',\r\n 'End',\r\n 'ArrowLeft',\r\n 'ArrowRight',\r\n 'Clear',\r\n 'Copy',\r\n 'Paste'\r\n ];\r\n inputElement: HTMLElement;\r\n\r\n constructor(public el: ElementRef) {\r\n this.inputElement = el.nativeElement;\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngAfterViewInit(): void {\r\n const elem = this.el.nativeElement;\r\n const value = this.postfix != null\r\n ? elem.value.replace(this.postfix, '')\r\n : elem.value;\r\n elem.value = this.getValidText(value);\r\n if (this.postfix != null) {\r\n const currentPosition = this.getCaretPosition(elem);\r\n const maxPosition = elem.value.length - this.postfix.length - 1;\r\n if (currentPosition > maxPosition) {\r\n this.setCaretPosition(elem, maxPosition);\r\n }\r\n }\r\n elem.blur();\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: any): void {\r\n\r\n if (\r\n this.navigationKeys.indexOf(event.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\r\n (event.key === 'a' && event.ctrlKey === true) || // Allow: Ctrl+A\r\n (event.key === 'c' && event.ctrlKey === true) || // Allow: Ctrl+C\r\n (event.key === 'v' && event.ctrlKey === true) || // Allow: Ctrl+V\r\n (event.key === 'x' && event.ctrlKey === true) || // Allow: Ctrl+X\r\n (event.key === 'a' && event.metaKey === true) || // Allow: Cmd+A (Mac)\r\n (event.key === 'c' && event.metaKey === true) || // Allow: Cmd+C (Mac)\r\n (event.key === 'v' && event.metaKey === true) || // Allow: Cmd+V (Mac)\r\n (event.key === 'x' && event.metaKey === true) // Allow: Cmd+X (Mac)\r\n ) {\r\n return;\r\n }\r\n\r\n if (this.el.nativeElement.selectionStart >= 0 && this.el.nativeElement.selectionEnd > this.el.nativeElement.selectionStart) {\r\n return;\r\n }\r\n\r\n\r\n const elem = event.target;\r\n if (this.isInPostfixPart(elem)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const maxlength = this.numericMaxLength || 0;\r\n if (maxlength > 0 && !this.isInDecimalPart(event.target)) {\r\n let value = event.target.value || '';\r\n if (this.postfix != null) {\r\n value = value.replace(' ' + this.postfix, '');\r\n }\r\n\r\n if (this.numericThousandSeparator != null && this.numericThousandSeparator.length > 0) {\r\n value = value.split(this.numericThousandSeparator).join('').replace(/\\s/g, '');\r\n }\r\n\r\n if (value.length >= maxlength) {\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (this.isInDecimalPart(elem) && !this.checkDecimalMaxPlaces(elem)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n // Убираем все пробелы\r\n const noSpaces = event.target.value.replace(/\\s/g, '');\r\n // Проверяем есть ли десятичная часть и если да, то обрезаем ее до двух символов\r\n const match = noSpaces.match(/^(\\d+),(\\d{0,1}).*₽$/);\r\n if (match) {\r\n // Если есть десятичная часть, возвращаем число с двумя знаками после запятой и префиксом\r\n event.target.value = `${match[1].toLocaleString('ru-RU', {\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 0,\r\n useGrouping: true\r\n })},${match[2]}`;\r\n } else {\r\n // Если нет десятичной части, просто возвращаем число с префиксом\r\n event.target.value = `${noSpaces.toLocaleString('ru-RU', {\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 0,\r\n useGrouping: true\r\n })}`;\r\n }\r\n\r\n if (\r\n (event.key === '0') ||\r\n (event.key === '1') ||\r\n (event.key === '2') ||\r\n (event.key === '3') ||\r\n (event.key === '4') ||\r\n (event.key === '5') ||\r\n (event.key === '6') ||\r\n (event.key === '7') ||\r\n (event.key === '8') ||\r\n (event.key === '9') ||\r\n (event.key === ',')\r\n ) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n\r\n if (event.key === this.decimalSeparator) {\r\n if ((elem.value || '').replace(this.postfix || '', '').indexOf(this.decimalSeparator) !== -1) {\r\n event.preventDefault();\r\n }\r\n\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput(event: any): void {\r\n const elem = event.target;\r\n const value = this.postfix != null\r\n ? elem.value.replace(this.postfix, '')\r\n : elem.value;\r\n\r\n elem.value = this.getValidText(value);\r\n if (this.postfix != null) {\r\n const currentPosition = this.getCaretPosition(elem);\r\n const maxPosition = elem.value.length - this.postfix.length - 1;\r\n if (currentPosition > maxPosition) {\r\n this.setCaretPosition(elem, maxPosition);\r\n }\r\n }\r\n }\r\n\r\n private getValidText(value: any): string {\r\n let result = '';\r\n let index = 0;\r\n while (index < value.length) {\r\n switch (value.substr(index, 1)) {\r\n case '0':\r\n case '1':\r\n case '2':\r\n case '3':\r\n case '4':\r\n case '5':\r\n case '6':\r\n case '7':\r\n case '8':\r\n case '9':\r\n case ',':\r\n case this.decimalSeparator:\r\n result += value.substr(index, 1);\r\n }\r\n\r\n index++;\r\n }\r\n\r\n const parts = (this.decimalSeparator != null && this.decimalPlaces != null)\r\n ? result.split(this.decimalSeparator)\r\n : [result];\r\n\r\n if (this.numericMaxLength != null && parts[0].length > this.numericMaxLength) {\r\n parts[0] = parts[0].substr(0, this.numericMaxLength);\r\n }\r\n\r\n if (this.numericThousandSeparator != null && this.numericThousandSeparator.length > 0) {\r\n parts[0] = parts[0].replace(/\\B(?=(?:\\d{3})+(?!\\d))/g, this.numericThousandSeparator);\r\n }\r\n\r\n if (parts.length > 1 && this.decimalPlaces && parts[1].length > this.decimalPlaces) {\r\n parts[1] = parts[1].substr(0, this.decimalPlaces);\r\n }\r\n\r\n result = parts.length > 1\r\n ? parts.join(this.decimalSeparator || '')\r\n : parts[0];\r\n\r\n if (this.postfix != null && result.length > 0) {\r\n result += ' ' + this.postfix;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private checkDecimalMaxPlaces(elem: any): boolean {\r\n if (this.decimalSeparator == null || this.decimalPlaces == null) {\r\n return true;\r\n }\r\n\r\n const index = elem.value?.indexOf(this.decimalSeparator);\r\n if (index == null || index === -1) {\r\n return true;\r\n }\r\n\r\n if (this.getCaretPosition(elem) > index) {\r\n let value = elem.value || '';\r\n if (this.postfix != null) {\r\n value = value.replace(' ' + this.postfix, '');\r\n }\r\n\r\n const indexFromValue = value.indexOf(this.decimalSeparator);\r\n return indexFromValue >= (value.length - this.decimalPlaces);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private isInDecimalPart(elem: any): boolean {\r\n if (this.decimalSeparator == null || this.decimalPlaces == null) {\r\n return false;\r\n }\r\n\r\n const index = elem.value?.indexOf(this.decimalSeparator);\r\n if (index == null || index === -1) {\r\n return false;\r\n }\r\n\r\n return this.getCaretPosition(elem) > index;\r\n }\r\n\r\n private isInPostfixPart(elem: any): boolean {\r\n if (this.postfix == null) {\r\n return false;\r\n }\r\n\r\n const index = elem.value?.indexOf(this.postfix);\r\n if (index == null || index === -1) {\r\n return false;\r\n }\r\n\r\n return this.getCaretPosition(elem) > index;\r\n }\r\n\r\n // Получить текущую позицию каретки\r\n private getCaretPosition(elem: any): number {\r\n return elem.selectionStart || elem.selectionStart === 0\r\n ? elem.selectionStart\r\n : 0;\r\n }\r\n\r\n // Позиция каретки\r\n private setCaretPosition(elem: any, position: number): void {\r\n if (elem.createTextRange) {\r\n const range = elem.createTextRange();\r\n range.move('character', position);\r\n range.select();\r\n } else if (elem.selectionStart) {\r\n elem.setSelectionRange(position, position);\r\n }\r\n }\r\n}\r\n","export enum DaData {\r\n ADDRESS = 'address',\r\n ADDRESS_FULL = 'addressFull',\r\n NAME = 'name',\r\n SURNAME = 'surname',\r\n PATRONYMIC = 'patronymic',\r\n FMS_UNIT = 'fms_unit',\r\n CITY = 'city'\r\n}\r\n","export enum MortgageObjectsEnum {\r\n Flat = \"Квартира\",\r\n Townhouse = \"Таунхаус\",\r\n Apartments = \"Апартаменты\",\r\n Room = \"Комната\",\r\n House = \"Жилой дом\",\r\n ParkingPlace = \"Машиноместо\",\r\n LandPlot = \"Земельный участок\",\r\n HouseWithLandPlot = \"Жилой дом на земельном участке\",\r\n IndividualBulding = \"Индивидуальное строение\",\r\n NonResidential = \"Нежилое помещение\",\r\n}\r\n","export enum ROUTES {\r\n\r\n // Главная страница\r\n MainPage = '',\r\n\r\n // Страница с данными авто\r\n Form = 'form',\r\n\r\n}\r\n","export enum YandexMetrikaGoalsEnum {\r\n // Общая ошибка\r\n ErrorCommon = 'error_common',\r\n // Ошибки запроса new\r\n ErrorAppNew = 'error_app_new',\r\n // Ошибки запроса SetStatusWidgetDisplayed\r\n ErrorSetStatusWidgetDisplayed = 'error_set_status_widget_displayed',\r\n // Ошибки запроса GetBanks\r\n ErrorGetBanks = 'error_get_banks',\r\n // Ошибки запроса GetMortgageProducts\r\n ErrorGetMortgageProducts = 'error_get_mortgage_products',\r\n // Ошибки запроса GetApplicationInfo\r\n ErrorGetApplicationInfo = 'error_get_application_info',\r\n // Ошибки запроса PreapproveMortgageApplication\r\n ErrorPreapproveMortgageApplication = 'error_preapprove_mortgage_application',\r\n // Ошибки запроса GetOffers\r\n ErrorGetOffers = 'error_get_offers',\r\n // Ошибки запроса SelectOffer\r\n ErrorSelectOffer = 'error_select_offer',\r\n // Ошибки запроса GetProductDetails\r\n ErrorGetProductDetails = 'error_get_product_details',\r\n // Ошибки запроса SaveContacts\r\n ErrorSaveContacts = 'error_save_contacts',\r\n // Ошибки запроса SaveMortgageApplication\r\n ErrorSaveMortgageApplication = 'error_save_mortgage_application',\r\n // Ошибки запроса ApproveMortgageOffer\r\n ErrorApproveMortgageOffer = 'error_approve_mortgage_offer',\r\n // Ошибки запроса GetMortgagePaymentLink\r\n ErrorGetMortgagePaymentLink = 'error_get_mortgage_payment_link',\r\n // Ошибки запроса SetStatusBuyButtonPressed\r\n ErrorSetStatusBuyButtonPressed = 'error_set_status_buy_button_pressed',\r\n\r\n\r\n // Общая ошибка\r\n CommontResultError = 'commont_result_error',\r\n // Ошибки запроса New\r\n NewResultError = 'new_result_error',\r\n // Ошибки запроса GetCarBrands\r\n SetStatusWidgetDisplayedResultError = 'set_status_widget_displayed_result_error',\r\n // Ошибки запроса GetBanks\r\n GetBanksResultError = 'get_banks_result_error',\r\n // Ошибки запроса GetMortgageProducts\r\n GetMortgageProductsResultError = 'get_mortgage_products_result_error',\r\n // Ошибки запроса GetApplicationInfo\r\n GetApplicationInfoResultError = 'get_application_info_result_error',\r\n // Ошибки запроса PreapproveMortgageApplication\r\n PreapproveMortgageApplicationResultError = 'preapprove_mortgage_application_result_error',\r\n // Ошибки запроса GetOffers\r\n GetOffersResultError = 'get_offers_result_error',\r\n // Ошибки запроса SelectOffer\r\n SelectOfferResultError = 'select_offer_result_error',\r\n // Ошибки запроса GetProductDetails\r\n GetProductDetailsResultError = 'get_product_details_result_error',\r\n // Ошибки запроса SaveContacts\r\n SaveContactsResultError = 'save_contacts_result_error',\r\n // Ошибки запроса SaveMortgageApplication\r\n SaveMortgageApplicationResultError = 'save_mortgage_application_result_error',\r\n // Ошибки запроса ApproveMortgageOffer\r\n ApproveMortgageOfferResultError = 'approve_mortgage_offer_result_error',\r\n // Ошибки запроса GetMortgagePaymentLink\r\n GetMortgagePaymentLinkResultError = 'get_mortgage_payment_link_result_error',\r\n // Ошибки запроса SetStatusBuyButtonPressed\r\n SetStatusBuyButtonPressedResultError = 'set_status_buy_button_pressed_result_error',\r\n\r\n}\r\n\r\n","export function checkIsHiddenBaseAmount(data: any): boolean {\r\n return data?.flat_price !== null\r\n || (data?.flat_area && data?.square_meter_price && (data?.flat_area * data?.square_meter_price) === 0)\r\n}\r\nexport function checkIsHiddenObjectSquare(data: any): boolean {\r\n return data?.flat_area !== null\r\n}\r\n","export function sizeWindow(): number {\r\n const modalContent = document.querySelector('.modal-content') as HTMLElement;\r\n return modalContent ? modalContent.offsetHeight : 0;\r\n}\r\n// Функция для изменения iframe окна\r\nexport function triggerIframe(): void {\r\n\r\n const dropdownElm = document.querySelector('.dropdown.open') as HTMLElement;\r\n setTimeout(() => {\r\n window.parent.postMessage({ frameHeight: document.body.scrollHeight }, '*');\r\n }, 50);\r\n if (dropdownElm) {\r\n window.parent.postMessage({ frameHeight: document.body.scrollHeight }, '*');\r\n }\r\n}\r\n\r\n// Функция, которая будет вызвана при клике вне блока .dropdown\r\nexport function handleClickOutsideDropdown(event: any): void {\r\n const targetElement = event.target;\r\n // Проверяем, что клик был не внутри элемента с классом .dropdown и не на самом элементе\r\n if (!targetElement.closest('.autocomplete')) {\r\n const dropdownElm = document.querySelector('.dropdown.open') as HTMLElement;\r\n if (dropdownElm) {\r\n // dropdownElm.remove();\r\n window.parent.postMessage({ frameHeight: document.body.scrollHeight }, '*');\r\n }\r\n }\r\n}\r\n","import {IUrlParams} from \"../interface/url-params.interface\";\r\n\r\nexport function getUtmData(params: IUrlParams): string {\r\n return JSON.stringify({\r\n utm_source: params.utmSource,\r\n utm_medium: params.utmMedium,\r\n utm_campaign: params.utmCampaign,\r\n utm_content: params.utmContent,\r\n utm_term: params.utmTerm,\r\n utm_mid: params.utmMid,\r\n });\r\n}\r\n","import moment from 'moment-mini';\r\nexport class CalendarHelper {\r\n public static getLocalDateTimeString(): string {\r\n return moment().format('YYYY-MM-DDTHH:mm:ss.SSS');\r\n }\r\n}\r\n","//textmask mask fixer - value contains mask and incorrect date\r\nexport class TextMaskHelper {\r\n static adjustCaretPosition(fieldId: any, position: any) {\r\n const elem = document.getElementById(fieldId);\r\n if (elem == null)\r\n return;\r\n\r\n const currentPosition = TextMaskHelper.getCaretPosition(elem);\r\n if (position != null && currentPosition != null && !(currentPosition > position))\r\n TextMaskHelper.setCaretPosition(elem, position);\r\n }\r\n\r\n static getCaretPosition(elem: any) {\r\n return elem.selectionStart || elem.selectionStart == 0\r\n ? elem.selectionStart\r\n : null;\r\n }\r\n\r\n static setCaretPosition(elem: any, position: number) {\r\n if (elem.createTextRange) {\r\n var range = elem.createTextRange();\r\n range.move('character', position);\r\n range.select();\r\n } else if (elem.selectionStart)\r\n elem.setSelectionRange(position, position);\r\n }\r\n\r\n static getDate(maskedValue: string): string | null {\r\n if (maskedValue == null)\r\n return null;\r\n\r\n const isDash = maskedValue?.toString().indexOf(\"-\") != -1;\r\n let value = maskedValue?.toString().replace(/[^0-9]/g, '');\r\n if (value.length == 9)\r\n value = value.substr(0, 8);\r\n\r\n if (value.length != 8)\r\n return null;\r\n\r\n return isDash\r\n ? value.substr(6, 2) + '.' + value.substr(4, 2) + '.' + value.substr(0, 4)\r\n : value.substr(0, 2) + '.' + value.substr(2, 2) + '.' + value.substr(4);\r\n }\r\n\r\n static getYear(maskedValue: string): string | null {\r\n if (maskedValue == null) {\r\n return '';\r\n }\r\n\r\n let value = maskedValue.replace(/[^0-9]/g, '');\r\n\r\n if (value.length === 5) {\r\n value = value.substr(0, 4);\r\n }\r\n\r\n if (value.length !== 4) {\r\n return null;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n static driverLicense(maskedValue: string): string | null {\r\n let value = maskedValue.replace(/\\_/g, '').replace(/\\s/g, '')\r\n\r\n if (value.length == 11)\r\n value = value.substr(0, 10);\r\n\r\n if (value.length != 10)\r\n return null;\r\n\r\n return value;\r\n }\r\n\r\n static removeMask(maskedValue: string, maxLength: number | null = null): string {\r\n if (maskedValue != null && typeof maskedValue === \"number\")\r\n return maskedValue;\r\n\r\n let value = maskedValue != null\r\n ? maskedValue.replace(/\\+| |\\-|\\(|\\)/gi, '').replace(/\\_/g, '')\r\n : null;\r\n\r\n return (value != null && maxLength != null && maxLength < value.length)\r\n ? value.substr(0, maxLength)\r\n : value || '';\r\n }\r\n\r\n static translateChar(char: string) {\r\n switch (char) {\r\n case '0':\r\n case '1':\r\n case '2':\r\n case '3':\r\n case '4':\r\n case '5':\r\n case '6':\r\n case '7':\r\n case '8':\r\n case '9':\r\n case '_':\r\n return char;\r\n case 'а':\r\n case 'А':\r\n case 'f':\r\n case 'F':\r\n return 'А';\r\n case 'в':\r\n case 'В':\r\n case 'd':\r\n case 'D':\r\n return 'В';\r\n case 'е':\r\n case 'Е':\r\n case 't':\r\n case 'T':\r\n return 'Е';\r\n case 'к':\r\n case 'К':\r\n case 'r':\r\n case 'R':\r\n return 'К';\r\n case 'м':\r\n case 'М':\r\n case 'v':\r\n case 'V':\r\n return 'М';\r\n case 'н':\r\n case 'Н':\r\n case 'y':\r\n case 'Y':\r\n return 'Н';\r\n case 'о':\r\n case 'О':\r\n case 'j':\r\n case 'J':\r\n return 'О';\r\n case 'р':\r\n case 'Р':\r\n case 'h':\r\n case 'H':\r\n return 'Р';\r\n case 'с':\r\n case 'С':\r\n case 'c':\r\n case 'C':\r\n return 'С';\r\n case 'т':\r\n case 'Т':\r\n case 'n':\r\n case 'N':\r\n return 'Т';\r\n case 'у':\r\n case 'У':\r\n case 'e':\r\n case 'E':\r\n return 'У';\r\n case '{':\r\n case '[':\r\n case 'х':\r\n case 'Х':\r\n return 'Х';\r\n };\r\n\r\n return null;\r\n }\r\n\r\n static unmask(maskedValue: string | null, maxLength: number | null = null): string | null {\r\n if (maskedValue == null)\r\n return null;\r\n\r\n if (maskedValue.indexOf('_') != -1 && maskedValue.indexOf('_') < (maskedValue.length - 1))\r\n return null;\r\n\r\n let value = maskedValue != null\r\n ? maskedValue.replace(/\\+| |\\-|\\(|\\)/gi, '').replace(/\\_/g, '')\r\n : null;\r\n\r\n return (value != null && maxLength != null && maxLength < value.length)\r\n ? value.substr(0, maxLength)\r\n : value;\r\n }\r\n\r\n static toPtsFormat(value: string | null): string | null {\r\n if (value == null || value.length != 10)\r\n return null;\r\n\r\n return value.substr(0, 2) + \" \" + value.substr(2, 2) + \" \" + value.substr(4, 3) + \" \" + value.substr(7);\r\n }\r\n\r\n static toVinFormat(value: string | null): string | null {\r\n if (value == null || value.length != 17)\r\n return null;\r\n\r\n return value.substr(0, 3) + \" \" + value.substr(3, 6) + \" \" + value.substr(9);\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {\r\n FormControl,\r\n UntypedFormBuilder,\r\n UntypedFormControl,\r\n UntypedFormGroup,\r\n Validators\r\n} from '@angular/forms';\r\n\r\n// Хелперы\r\n\r\n// Перечисления\r\nimport {MortgageObjectsEnum} from \"../enums/mortgage-objects.enum\";\r\n\r\n// Интерфейсы\r\nimport {IMortgageObjectItem} from \"../interface/mortgage-application.interface\";\r\nimport {IBanksAndProduct} from \"../interface/mortgage-products.interface\";\r\nimport {IBankListResponce} from \"../interface/bank-list\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormFilterService {\r\n\r\n constructor(private readonly fb: UntypedFormBuilder) {\r\n this.initMortgageObjectsList();\r\n }\r\n\r\n // Форма\r\n public form: UntypedFormGroup = this.fb.group({\r\n productId: new FormControl(''),\r\n mortgagePropertyType: new FormControl('Flat', [Validators.required]),\r\n bankId: new FormControl('', [Validators.required]),\r\n creditRemain: new FormControl(null, [Validators.required]),\r\n insuredBirthDate: new FormControl('', {\r\n validators: [Validators.required],\r\n updateOn: 'submit'\r\n }),\r\n insuredGender: new FormControl('Male', [Validators.required]),\r\n product: new FormControl('LifeAndProperty', [Validators.required]),\r\n });\r\n // Список объектов страхования ипотеки\r\n public mortgageObjects!: IMortgageObjectItem[];\r\n // Список всех продуктов\r\n public allMortgageProductList: IBanksAndProduct[] = [];\r\n // Список банков\r\n public bankList: any[] = []\r\n // Список выбора пола\r\n public genderList: any[] = [\r\n {\r\n id: 'Male',\r\n value: 'Мужской'\r\n },\r\n {\r\n id: 'Female',\r\n value: 'Женский'\r\n }\r\n ];\r\n\r\n public validateAllFormFields(formGroup: UntypedFormGroup): void {\r\n Object.keys(formGroup.controls).forEach(field => {\r\n const control = formGroup.get(field);\r\n if (control instanceof UntypedFormControl) {\r\n control.markAsUntouched({onlySelf: true});\r\n control.markAsPristine();\r\n } else if (control instanceof UntypedFormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n\r\n // Инициализация объектов страхования ипотеки\r\n private initMortgageObjectsList(): void {\r\n this.mortgageObjects = Object.entries(MortgageObjectsEnum).map(([key, value]) => ({\r\n id: key,\r\n value: value,\r\n }));\r\n }\r\n\r\n // Уникальные значения для списка доступных продуктов\r\n public getUniqueInsurerTypeBankProducts(bankProducts: IBanksAndProduct[]): IBanksAndProduct[] {\r\n const uniqueInsurerTypes: string[] = [];\r\n\r\n // Фильтруем массив банковских продуктов, чтобы оставить только уникальные InsurerType\r\n const uniqueBankProducts: IBanksAndProduct[] = bankProducts.filter((product) => {\r\n if (uniqueInsurerTypes.includes(product.bank)) {\r\n return false;\r\n } else {\r\n uniqueInsurerTypes.push(product.bank);\r\n return true;\r\n }\r\n });\r\n\r\n return uniqueBankProducts;\r\n }\r\n\r\n\r\n // Сохраняем фильтр\r\n public saveFilterFormToLocalStorage(): void {\r\n localStorage.setItem('mortgageFilterValue', JSON.stringify(this.form.value));\r\n }\r\n\r\n public getFilterFromLocalStorage(): any {\r\n\r\n const filterDataFromLocalStorage = localStorage.getItem('mortgageFilterValue');\r\n if (filterDataFromLocalStorage) {\r\n const filterData = JSON.parse(filterDataFromLocalStorage);\r\n return filterData;\r\n }\r\n\r\n }\r\n\r\n // Применяем данные в форму, взятые из кэша\r\n public setFilterFormDataFromCache(formData: any): void {\r\n const {\r\n bankId,\r\n creditRemain,\r\n insuredBirthDate,\r\n insuredGender,\r\n product,\r\n productId,\r\n mortgagePropertyType\r\n } = this.form.controls;\r\n\r\n creditRemain.setValue(formData?.creditRemain?.toString()?.replace('.', ','));\r\n insuredBirthDate.setValue(formData?.insured?.birthDate);\r\n bankId.setValue(formData?.mortgageLoan?.bankId);\r\n mortgagePropertyType.setValue(formData?.mortgageLoan?.mortgagePropertyType);\r\n productId.setValue(formData?.insurerProductId);\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {\r\n FormControl,\r\n UntypedFormBuilder,\r\n UntypedFormControl,\r\n UntypedFormGroup,\r\n Validators\r\n} from '@angular/forms';\r\nimport {Subscription} from 'rxjs';\r\n\r\n// Хелперы\r\n\r\n// Перечисления\r\nimport {MortgageObjectsEnum} from \"../enums/mortgage-objects.enum\";\r\n\r\n// Интерфейсы\r\nimport {IMortgageObjectItem} from \"../interface/mortgage-application.interface\";\r\nimport {IBanksAndProduct} from \"../interface/mortgage-products.interface\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormOfflineService {\r\n\r\n constructor(private readonly fb: UntypedFormBuilder) {\r\n this.initMortgageObjectsList();\r\n }\r\n\r\n // Форма\r\n public form: UntypedFormGroup = this.fb.group({\r\n offlineFormFirstName: new FormControl('', Validators.required),\r\n offlineFormLastName: new FormControl('', Validators.required),\r\n offlineFormMiddleName: new FormControl('', Validators.required),\r\n city: new FormControl('', Validators.required),\r\n phone: new FormControl('', Validators.required),\r\n email: new FormControl('', Validators.required),\r\n });\r\n // Список объектов страхования ипотеки\r\n public mortgageObjects!: IMortgageObjectItem[];\r\n // Список всех продуктов\r\n public allMortgageProductList: IBanksAndProduct[] = [];\r\n\r\n public validateAllFormFields(formGroup: UntypedFormGroup): void {\r\n Object.keys(formGroup.controls).forEach(field => {\r\n const control = formGroup.get(field);\r\n if (control instanceof UntypedFormControl) {\r\n control.markAsUntouched({onlySelf: true});\r\n control.markAsPristine();\r\n } else if (control instanceof UntypedFormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n\r\n // Инициализация объектов страхования ипотеки\r\n private initMortgageObjectsList(): void {\r\n this.mortgageObjects = Object.entries(MortgageObjectsEnum).map(([key, value]) => ({\r\n id: key,\r\n value: value,\r\n }));\r\n }\r\n\r\n // Уникальные значения для списка доступных продуктов\r\n public getUniqueInsurerTypeBankProducts(bankProducts: IBanksAndProduct[]): IBanksAndProduct[] {\r\n const uniqueInsurerTypes: string[] = [];\r\n\r\n // Фильтруем массив банковских продуктов, чтобы оставить только уникальные InsurerType\r\n const uniqueBankProducts: IBanksAndProduct[] = bankProducts.filter((product) => {\r\n if (uniqueInsurerTypes.includes(product.bank)) {\r\n return false;\r\n } else {\r\n uniqueInsurerTypes.push(product.bank);\r\n return true;\r\n }\r\n });\r\n\r\n return uniqueBankProducts;\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {\r\n FormGroup,\r\n UntypedFormArray,\r\n UntypedFormBuilder,\r\n UntypedFormControl,\r\n UntypedFormGroup,\r\n Validators\r\n} from '@angular/forms';\r\nimport {Subscription} from 'rxjs';\r\n// import moment from 'moment-mini';\r\n\r\n// Хелперы\r\nimport {subControl} from '../helpers';\r\n\r\n// Перечисления\r\nimport {CarDocumentTypesEnum} from '../enums/car-document-types.enum';\r\nimport {CarIdentificatorsEnum} from '../enums/car-identificators.enum';\r\n\r\n// Интерфейсы\r\nimport {IPropertyControls} from '../interface/property-controls.interface';\r\n\r\n// Данные контролов\r\nimport * as PropertyControls from '../../../assets/data/property-controls.json';\r\nimport {IFields, IMortgageProductDetailsResponce} from \"../interface/mortgage-product-details.interface\";\r\nimport moment from \"moment-mini\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormService {\r\n\r\n // Форма\r\n public form: UntypedFormGroup;\r\n public subscriptions: Subscription[] = [];\r\n public propertyControls: IPropertyControls = PropertyControls as unknown as IPropertyControls;\r\n\r\n // Массив документов\r\n public agreements: string[] = []\r\n\r\n // Форма контактов заполнена и валидна\r\n public isContactFormComplete = false;\r\n\r\n // Форма заемщика заполнена и валидна\r\n public isBorrowerFormComplete = true;\r\n\r\n // Форма ипотеки заполнена и валидна\r\n public isMortgageFormComplete = true;\r\n\r\n // Форма даты полиса заполнена и валидна\r\n public isPolicyFormComplete = true;\r\n\r\n // Форма страхователя заполнена и валидна\r\n public isInsuranceFormComplete = true;\r\n\r\n // Форма заемщика неактивна\r\n public isBorrowerFormDisabled = true;\r\n\r\n // Форма ипотеки неактивна\r\n public isMortgageFormDisabled = true;\r\n\r\n // Форма даты полиса неактивна\r\n public isPolicyFormDisabled = true;\r\n\r\n // Форма страхователя неактивна\r\n public isInsuranceFormDisabled = true;\r\n\r\n // Скрываем если заполнили автоматически\r\n public insuranceObjectSquareIsHidden = false;\r\n public insuranceBaseAmountIsHidden = false;\r\n public kadastrIsHidden = false;\r\n\r\n // Максимальное значение даты начала действия полиса\r\n public policyStartDateMaxOffsetDaysDate: null | Date = null;\r\n\r\n constructor(private readonly fb: UntypedFormBuilder) {\r\n\r\n this.form = this.fb.group({\r\n applicationId: [null, [Validators.required]],\r\n privacy: [true, [Validators.requiredTrue]],\r\n borrower: this.fb.group({\r\n borrowerFirstName: [''],\r\n borrowerLastName: [''],\r\n borrowerMiddleName: [''],\r\n borrowerBirthDate: [null],\r\n borrowerPassportLicense: [null, ],\r\n borrowerPassportDate: [null],\r\n borrowerAddress: [''],\r\n borrowerAddressDaData: [null],\r\n borrowerAddressFullDaData: [null],\r\n borrowerHouseNumber: [null, []],\r\n borrowerGender: ['Male'],\r\n borrowerDepartmentCode: [null],\r\n borrowerPassportIssuer: [''],\r\n borrowerPassportIssuerDadata: [null],\r\n borrowerBirthPlace: [null],\r\n borrowerProfession: [null],\r\n professionId: [null],\r\n highPressure: [120],\r\n lowPressure: [80],\r\n weight: [85],\r\n height: [180],\r\n }),\r\n mortgage: this.fb.group({\r\n mortgageCreditRemain: [null, [Validators.required]],\r\n mortgageWithoutCreditNumber: [null],\r\n mortgageCreditNumber: [null, [Validators.required]],\r\n mortgageBeginDate: [null, [Validators.required]],\r\n mortgageBeginEndDate: [null, [Validators.required]],\r\n creditRate: [9],\r\n withRefusalRate: [null],\r\n loanIssueAddress: [null],\r\n loanIssueAddressDaData: [null],\r\n }),\r\n mortgagePolicyDate: this.fb.group({\r\n mortgageStartDate: [moment().add(1, 'days').format('DD.MM.YYYY'), [Validators.required]],\r\n mortgageEndDate: [null, [Validators.required]],\r\n multiYear: [false]\r\n }),\r\n insuranceObject: this.fb.group({\r\n insuranceObjectAddressSameAsInsurer: [true],\r\n insuranceObjectAddress: ['', [Validators.required]],\r\n insuranceObjectAddressDaData: [null],\r\n insuranceObjectFullAddressDaData: [null],\r\n insuranceHouseNumber: [null],\r\n insuranceObjectBuiltYear: [1980],\r\n insuranceObjectSquare: ['80'],\r\n insuranceBaseAmount: [],\r\n kadastr: [null],\r\n floorCount: [17],\r\n monthlyPayment: [null],\r\n ownershipLessThreeYears: [true],\r\n ownershipRestrictDoc: [true],\r\n hasGas: [false],\r\n withWood: [false],\r\n loanAgreementNumber: [null],\r\n loanAgreementEndDate: [null],\r\n hasIllegalRedevelopment: [false],\r\n mortgageObject: [false],\r\n ownershipConfirmDoc: [null],\r\n roomsCount: [null],\r\n floor: [null],\r\n hasOwnership: [false]\r\n }),\r\n insurer: this.fb.group({\r\n insurerFirstName: [null, ],\r\n insurerLastName: [null, ],\r\n insurerMiddleName: [null],\r\n insurerBirthDate: [null, ],\r\n passportLicense: [null, {updateOn: 'change'}, ],\r\n insurerPassportDate: [null, {updateOn: 'change'}, ],\r\n insurerCity: [null, {updateOn: 'change'}, ],\r\n insurerAddressDaData: [null, {updateOn: 'change'}],\r\n insurerIsJuridical: [false, {updateOn: 'change'}],\r\n }),\r\n contacts: this.fb.group({\r\n email: ['', {updateOn: 'change'}, ],\r\n phone: ['', {updateOn: 'change'}, ],\r\n smsCode: [{value: null, disabled: true}, ],\r\n }),\r\n });\r\n\r\n }\r\n\r\n public validateAllFormFields(formGroup: UntypedFormGroup): void {\r\n Object.keys(formGroup.controls).forEach(field => {\r\n const control = formGroup.get(field);\r\n if (control instanceof UntypedFormControl) {\r\n control.markAsUntouched({onlySelf: true});\r\n control.markAsPristine();\r\n } else if (control instanceof UntypedFormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n\r\n // Проверяем динамические поля\r\n public checkValidationDynamicFields(res: IMortgageProductDetailsResponce): void {\r\n const insuranceObjectFormGroup: FormGroup = this.form.get('insuranceObject') as FormGroup;\r\n const borrowerFormGroup: FormGroup = this.form.get('borrower') as FormGroup;\r\n const mortgage: FormGroup = this.form.get('mortgage') as FormGroup;\r\n const mortgagePolicyDate: FormGroup = this.form.get('mortgagePolicyDate') as FormGroup;\r\n\r\n const {\r\n hasIllegalRedevelopment,\r\n hasGas,\r\n hasOwnership,\r\n insuranceBaseAmount,\r\n kadastr,\r\n loanAgreementEndDate,\r\n loanAgreementNumber,\r\n monthlyPayment,\r\n mortgageObject,\r\n ownershipConfirmDoc,\r\n ownershipLessThreeYears,\r\n ownershipRestrictDoc,\r\n withWood,\r\n insuranceObjectSquare,\r\n insuranceObjectBuiltYear,\r\n floorCount,\r\n roomsCount,\r\n floor\r\n } = insuranceObjectFormGroup.controls;\r\n\r\n const {\r\n weight,\r\n height,\r\n highPressure,\r\n lowPressure,\r\n borrowerBirthPlace,\r\n borrowerProfession,\r\n } = borrowerFormGroup.controls;\r\n\r\n const {\r\n mortgageBeginEndDate,\r\n withRefusalRate,\r\n creditRate,\r\n loanIssueAddress\r\n } = mortgage.controls;\r\n\r\n const {\r\n multiYear\r\n } = mortgagePolicyDate.controls;\r\n\r\n const fields: IFields | undefined = res.value?.productRestrictions?.fields;\r\n\r\n if (fields) {\r\n fields.hasGas ? hasGas.enable() : hasGas.disable();\r\n fields.withWood ? withWood.enable() : withWood.disable();\r\n\r\n // fields.kadastr ? kadastr.enable() : kadastr.disable();\r\n fields.hasOwnership ? hasOwnership.enable() : hasOwnership.disable();\r\n\r\n fields.insuranceBaseAmount ? insuranceBaseAmount.enable() : insuranceBaseAmount.disable();\r\n fields.insuranceBaseAmount ? insuranceBaseAmount.enable() : insuranceBaseAmount.disable();\r\n fields.hasIllegalRedevelopment ? hasIllegalRedevelopment.enable() : hasIllegalRedevelopment.disable();\r\n fields.loanAgreementEndDate ? mortgageBeginEndDate.enable() : mortgageBeginEndDate.disable();\r\n fields.loanAgreementNumber ? loanAgreementNumber.enable() : loanAgreementNumber.disable();\r\n fields.loanIssueAddress ? loanIssueAddress.enable() : loanIssueAddress.disable();\r\n fields.monthlyPayment ? monthlyPayment.enable() : monthlyPayment.disable();\r\n fields.mortgageObject ? mortgageObject.enable() : mortgageObject.disable();\r\n fields.ownershipConfirmDoc ? ownershipConfirmDoc.enable() : ownershipConfirmDoc.disable();\r\n fields.ownershipLessThreeYears ? ownershipLessThreeYears.enable() : ownershipLessThreeYears.disable();\r\n fields.ownershipRestrictDoc ? ownershipRestrictDoc.enable() : ownershipRestrictDoc.disable();\r\n\r\n // Контроллы заемщика\r\n fields.weight ? weight.enable() : weight.disable();\r\n fields.height ? height.enable() : height.disable();\r\n fields.highPressure ? highPressure.enable() : highPressure.disable();\r\n fields.lowPressure ? lowPressure.enable() : lowPressure.disable();\r\n fields.birthPlace ? borrowerBirthPlace.enable() : borrowerBirthPlace.disable();\r\n fields.profession ? borrowerProfession.enable() : borrowerProfession.disable();\r\n\r\n // fields.mortgageObject ? insuranceObjectSquare.enable() : insuranceObjectSquare.disable();\r\n fields.mortgageObject ? insuranceObjectBuiltYear.enable() : insuranceObjectBuiltYear.disable();\r\n fields.mortgageObject ? floorCount.enable() : floorCount.disable();\r\n\r\n fields.withRefusalRate ? withRefusalRate.enable() : withRefusalRate.disable();\r\n fields.creditRate ? creditRate.enable() : creditRate.disable();\r\n fields.roomsCount ? roomsCount.enable() : roomsCount.disable();\r\n // Этаж\r\n fields.floor ? floor.enable() : floor.disable();\r\n\r\n // Мультигодовый платеж\r\n setTimeout(() => {\r\n res.value?.multiYear ? multiYear.enable() : multiYear.disable();\r\n multiYear.setValue(res.value?.multiYear);\r\n if (res.value?.multiYear) {\r\n const mortgageBeginEndDateValue = mortgageBeginEndDate?.value;\r\n if (mortgageBeginEndDateValue) {\r\n this.form.get('mortgagePolicyDate')?.get('mortgageEndDate')?.setValue(mortgageBeginEndDateValue);\r\n }\r\n } else {\r\n const mortgageStartDateValue = this.form.get('mortgagePolicyDate')?.get('mortgageStartDate')?.value;\r\n if (mortgageStartDateValue) {\r\n this.form.get('mortgagePolicyDate')?.get('mortgageEndDate')?.setValue(\r\n moment(mortgageStartDateValue, 'DD.MM.YYYY')\r\n .add(1, 'year')\r\n .subtract(1, 'day')\r\n .format('DD.MM.YYYY'));\r\n }\r\n }\r\n }, 0);\r\n\r\n }\r\n\r\n const policyStartDateMaxOffsetDays = res.value?.policyStartDateMaxOffsetDays ? res.value?.policyStartDateMaxOffsetDays : 90;\r\n\r\n this.policyStartDateMaxOffsetDaysDate = moment().add(policyStartDateMaxOffsetDays, 'days').toDate();\r\n this.agreements = res.value?.agreements!;\r\n\r\n }\r\n\r\n // Сохраняем форму\r\n public saveFormToLocalStorage(): void {\r\n localStorage.setItem('mortgageFormValue', JSON.stringify(this.form.value));\r\n }\r\n\r\n public getFormFromLocalStorage(): any {\r\n const formDataFromLocalStorage = localStorage.getItem('mortgageFormValue');\r\n if (formDataFromLocalStorage) {\r\n const formData = JSON.parse(formDataFromLocalStorage);\r\n return formData;\r\n }\r\n }\r\n\r\n // Применяем данные в форму, взятые из кэша\r\n public setFormDataFromCache(formData: any): void {\r\n const insuranceObjectFormGroup: FormGroup = this.form.get('insuranceObject') as FormGroup;\r\n const borrowerFormGroup: FormGroup = this.form.get('borrower') as FormGroup;\r\n const contactsFormGroup: FormGroup = this.form.get('contacts') as FormGroup;\r\n const insurerFormGroup: FormGroup = this.form.get('insurer') as FormGroup;\r\n const mortgageFormGroup: FormGroup = this.form.get('mortgage') as FormGroup;\r\n const mortgagePolicyDateFormGroup: FormGroup = this.form.get('mortgagePolicyDate') as FormGroup;\r\n\r\n const {\r\n hasIllegalRedevelopment,\r\n hasOwnership,\r\n insuranceBaseAmount,\r\n kadastr,\r\n loanAgreementEndDate,\r\n loanAgreementNumber,\r\n loanIssueAddress,\r\n monthlyPayment,\r\n mortgageObject,\r\n ownershipConfirmDoc,\r\n ownershipLessThreeYears,\r\n ownershipRestrictDoc,\r\n withWood,\r\n insuranceObjectAddressSameAsInsurer,\r\n insuranceObjectAddress,\r\n insuranceHouseNumber,\r\n insuranceObjectAddressDaData,\r\n insuranceObjectBuiltYear,\r\n insuranceObjectSquare,\r\n floorCount,\r\n } = insuranceObjectFormGroup.controls;\r\n\r\n insuranceObjectAddressSameAsInsurer.setValue(formData?.mortgageLoan?.addressSameAsInsurer, { emitEvent: false });\r\n\r\n if (formData?.mortgageLoan?.addressSameAsInsurer) {\r\n const matchAddress = formData?.insured?.passport?.registrationAddressData?.fullAddressString?.match(/(.+), кв \\d+/);\r\n if (matchAddress && matchAddress[1]) {\r\n const extractedAddress = matchAddress[1].trim();\r\n insuranceObjectAddress.setValue(extractedAddress, { emitEvent: false });\r\n }\r\n const flat = formData?.insured?.passport?.registrationAddressData?.flat;\r\n if (flat) {\r\n insuranceHouseNumber.setValue(flat, { emitEvent: false });\r\n }\r\n insuranceObjectAddressDaData.setValue(formData?.insured?.passport?.registrationAddressData, { emitEvent: false });\r\n } else {\r\n const matchAddress = formData?.mortgageLoan?.addressData?.fullAddressString?.match(/(.+), кв \\d+/);\r\n if (matchAddress && matchAddress[1]) {\r\n const extractedAddress = matchAddress[1].trim();\r\n insuranceObjectAddress.setValue(extractedAddress);\r\n }\r\n const flat = formData?.mortgageLoan?.addressData?.flat;\r\n if (flat) {\r\n insuranceHouseNumber.setValue(flat, { emitEvent: false });\r\n }\r\n insuranceObjectAddressDaData.setValue(formData?.mortgageLoan?.addressData, { emitEvent: false });\r\n }\r\n\r\n\r\n insuranceObjectBuiltYear.setValue(formData?.mortgageLoan?.builtYear);\r\n floorCount.setValue(formData?.mortgageLoan?.floorCount);\r\n insuranceObjectSquare.setValue(formData?.mortgageLoan?.square, { emitEvent: false });\r\n kadastr.setValue(formData?.mortgageLoan?.kadastr, { emitEvent: false });\r\n insuranceBaseAmount.setValue(formData?.mortgageLoan?.baseAmount, { emitEvent: false });\r\n\r\n const {\r\n weight,\r\n height,\r\n highPressure,\r\n lowPressure,\r\n } = borrowerFormGroup.controls;\r\n\r\n const {\r\n mortgageStartDate,\r\n mortgageEndDate\r\n } = mortgagePolicyDateFormGroup.controls;\r\n if (formData?.policyStartDate) {\r\n mortgageStartDate.setValue(formData?.policyStartDate);\r\n mortgageEndDate.setValue(moment(formData?.policyStartDate, 'DD.MM.YYYY').add(1, 'year').format('DD.MM.YYYY'));\r\n }\r\n\r\n const {\r\n mortgageCreditRemain,\r\n mortgageWithoutCreditNumber,\r\n mortgageCreditNumber,\r\n mortgageBeginDate,\r\n mortgageBeginEndDate,\r\n withRefusalRate,\r\n creditRate\r\n } = mortgageFormGroup.controls;\r\n mortgageCreditRemain.setValue(formData?.creditRemain);\r\n mortgageWithoutCreditNumber.setValue(formData?.mortgageLoan?.withoutContractNumber);\r\n mortgageCreditNumber.setValue(formData?.mortgageLoan?.contractNumber);\r\n mortgageBeginDate.setValue(formData?.mortgageLoan?.mortgageStartDate);\r\n mortgageBeginEndDate.setValue(formData?.mortgageLoan?.mortgageEndDate);\r\n withRefusalRate.setValue(formData?.mortgageLoan?.withRefusalRate);\r\n\r\n if (formData?.mortgageLoan?.creditRate) {\r\n creditRate.setValue(formData?.mortgageLoan?.creditRate);\r\n }\r\n\r\n const {\r\n borrowerFirstName,\r\n borrowerLastName,\r\n borrowerMiddleName,\r\n borrowerBirthDate,\r\n borrowerPassportLicense,\r\n borrowerPassportDate,\r\n borrowerPassportIssuer,\r\n borrowerDepartmentCode,\r\n borrowerAddress,\r\n borrowerAddressDaData,\r\n borrowerHouseNumber,\r\n } = borrowerFormGroup.controls;\r\n borrowerFirstName.setValue(formData?.insured?.firstName);\r\n borrowerLastName.setValue(formData?.insured?.lastName);\r\n borrowerMiddleName.setValue(formData?.insured?.middleName);\r\n borrowerBirthDate.setValue(formData?.insured?.birthDate);\r\n borrowerPassportLicense.setValue(formData?.insured?.passport?.passportSeries + formData?.insured?.passport?.passportNumber);\r\n borrowerPassportDate.setValue(formData?.insured?.passport?.passportIssueDate);\r\n borrowerPassportIssuer.setValue(formData?.insured?.passport?.passportIssuer);\r\n borrowerDepartmentCode.setValue(formData?.insured?.passport?.departmentCode);\r\n borrowerAddress.setValue(formData?.insured?.passport?.registrationAddressData?.addressAsString, { emitEvent: false });\r\n borrowerAddressDaData.setValue(formData?.insured?.passport?.registrationAddressData?.addressAsString, { emitEvent: false });\r\n borrowerHouseNumber.setValue(formData?.insured?.passport?.registrationAddressData?.addressAsString, { emitEvent: false });\r\n\r\n const matchAddress = formData?.insured?.passport?.registrationAddressData?.fullAddressString?.match(/(.+), кв \\d+/);\r\n if (matchAddress && matchAddress[1]) {\r\n const extractedAddress = matchAddress[1].trim();\r\n borrowerAddress.setValue(extractedAddress, { emitEvent: false });\r\n }\r\n const flat = formData?.insured?.passport?.registrationAddressData?.flat;\r\n if (flat) {\r\n borrowerHouseNumber.setValue(flat);\r\n }\r\n borrowerAddressDaData.setValue(formData?.insured?.passport?.registrationAddressData, { emitEvent: false });\r\n if (!formData?.mortgageLoan?.addressSameAsInsurer) {\r\n // const matchAddress = formData?.insured?.passport?.registrationAddressData?.fullAddressString?.match(/(.+), кв \\d+/);\r\n // if (matchAddress && matchAddress[1]) {\r\n // const extractedAddress = matchAddress[1].trim();\r\n // borrowerAddress.setValue(extractedAddress, { emitEvent: false });\r\n // }\r\n // const flat = formData?.insured?.passport?.registrationAddressData?.flat;\r\n // if (flat) {\r\n // borrowerHouseNumber.setValue(flat);\r\n // }\r\n // borrowerAddressDaData.setValue(formData?.insured?.passport?.registrationAddressData, { emitEvent: false });\r\n\r\n } else {\r\n // const matchAddress = formData?.mortgageLoan?.addressData?.fullAddressString?.match(/(.+), кв \\d+/);\r\n // if (matchAddress && matchAddress[1]) {\r\n // const extractedAddress = matchAddress[1].trim();\r\n // borrowerAddress.setValue(extractedAddress, { emitEvent: false });\r\n // }\r\n // const flat = formData?.mortgageLoan?.addressData?.flat;\r\n // if (flat) {\r\n // borrowerHouseNumber.setValue(flat, { emitEvent: false });\r\n // }\r\n // borrowerAddressDaData.setValue(formData?.mortgageLoan?.addressData, { emitEvent: false });\r\n }\r\n\r\n const {\r\n email,\r\n phone\r\n } = contactsFormGroup.controls;\r\n email.setValue(formData?.insured?.email);\r\n phone.setValue(formData?.insured?.phone?.slice(1));\r\n }\r\n\r\n}\r\n","import {HttpClient} from '@angular/common/http';\r\nimport {ErrorHandler, Inject, Injectable, OnDestroy} from '@angular/core';\r\nimport {Subscription} from 'rxjs';\r\nimport {HttpService} from './http.service';\r\nimport {AppService} from '../../core/services/app.service';\r\nimport {FormService} from './form.service';\r\nimport {YandexMetrikaService} from \"./yandex-metrika.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlobalErrorHandler extends HttpService implements ErrorHandler, OnDestroy {\r\n private _subscription = new Subscription();\r\n\r\n constructor(\r\n @Inject(HttpClient) protected override http: HttpClient,\r\n private readonly appService: AppService,\r\n private readonly formService: FormService,\r\n private readonly ym: YandexMetrikaService) {\r\n super(http);\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n\r\n public handleError(error: Error): void {\r\n this.ym.onYandexReachGoal('ERROR_GOAL');\r\n console.error('Error from global error handler', error);\r\n const message = error.message ?? JSON.stringify(error);\r\n this.appService.error(message, true);\r\n\r\n this._subscription.add(\r\n this.postLocal('log', {\r\n applicationId: this.formService.form?.get('applicationId')?.value,\r\n message: error.message ?? JSON.stringify(error)\r\n })\r\n .subscribe({\r\n next: () => {\r\n },\r\n error: () => {\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { Inject } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport {environment} from \"@environment/environment\";\r\n\r\nexport abstract class HttpService {\r\n private _baseUrl: string | null = null;\r\n private _hostUrl: string | null = null;\r\n protected _errorMessages: string[] = [];\r\n\r\n constructor(\r\n @Inject(HttpClient) protected http: HttpClient,) {\r\n this.baseUrl = '';\r\n this._hostUrl = environment.hostUrl;\r\n }\r\n\r\n public get baseUrl(): string | null {\r\n return this._baseUrl;\r\n }\r\n\r\n public set baseUrl(value: string | null) {\r\n this._baseUrl = value;\r\n }\r\n\r\n protected get options(): any {\r\n return {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n }),\r\n responseType: 'json'\r\n };\r\n }\r\n\r\n protected get(relativeUrl: string): Observable {\r\n const url = this.baseUrl + relativeUrl;\r\n\r\n return this.http.get(url, this.options)\r\n .pipe(\r\n tap({\r\n next: (response: any) => this.logResponse(response, url),\r\n error: (response: any) => this.logResponse(response, url, true)\r\n })\r\n ) as Observable;\r\n }\r\n\r\n protected getWithOptions(relativeUrl: string, options: any): Observable {\r\n const url = this.baseUrl + relativeUrl;\r\n\r\n return this.http.get(url, options)\r\n .pipe(\r\n tap({\r\n next: (response: any) => this.logResponse(response, url),\r\n error: (response: any) => this.logResponse(response, url, true)\r\n })\r\n ) as Observable;\r\n }\r\n\r\n protected post(relativeUrl: string, data: any): Observable {\r\n const url = this.baseUrl + relativeUrl;\r\n\r\n return this.http.post(url, data, this.options)\r\n .pipe(\r\n tap({\r\n next: (response: any) => this.logResponse(response, url),\r\n error: (response: any) => this.logResponse(response, url, true)\r\n })\r\n ) as Observable;\r\n }\r\n\r\n protected getLocal(relativeUrl: string): Observable {\r\n const url = this._hostUrl + relativeUrl;\r\n\r\n return this.http.get(url, this.options)\r\n .pipe(\r\n tap({\r\n next: (response: any) => this.logResponse(response, url),\r\n error: (response: any) => this.logResponse(response, url, true)\r\n })\r\n ) as Observable;\r\n }\r\n\r\n protected getWithOptionsLocal(relativeUrl: string, options: any): Observable {\r\n const url = this._hostUrl + relativeUrl;\r\n\r\n return this.http.get(url, options)\r\n .pipe(\r\n tap({\r\n next: (response: any) => this.logResponse(response, url),\r\n error: (response: any) => this.logResponse(response, url, true)\r\n })\r\n ) as Observable;\r\n }\r\n\r\n protected postLocal(relativeUrl: string, data: any): Observable {\r\n const url = this._hostUrl + relativeUrl;\r\n\r\n return this.http.post(url, data, this.options)\r\n .pipe(\r\n tap({\r\n next: (response: any) => this.logResponse(response, url),\r\n error: (response: any) => this.logResponse(response, url, true)\r\n })\r\n ) as Observable;\r\n }\r\n\r\n private logResponse(response: any, url: string, isError = false): void {\r\n const message = response != null && response.error != null && response.error.message != null\r\n ? response.error.message\r\n : '';\r\n\r\n if ((message === '' && isError === false) || message === 'Кеш для данного ключа не найден') {\r\n return;\r\n }\r\n\r\n const params = 'API call to ' + url + ' failed. ' + message;\r\n }\r\n}\r\n","import {\r\n HttpHandler,\r\n HttpRequest,\r\n HttpEvent,\r\n HttpErrorResponse,\r\n HttpInterceptor,\r\n HttpClient\r\n} from '@angular/common/http';\r\nimport { Observable, Subscription, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\r\nimport { HttpService } from './http.service';\r\nimport { FormService } from './form.service';\r\nimport {YandexMetrikaService} from \"./yandex-metrika.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpErrorInterceptor extends HttpService implements HttpInterceptor, OnDestroy {\r\n private _subscription = new Subscription();\r\n\r\n constructor(\r\n @Inject(HttpClient) protected override http: HttpClient,\r\n private readonly ym: YandexMetrikaService,\r\n private readonly formService: FormService) {\r\n super(http);\r\n }\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n // --------------------------------------------------------------------------\r\n\r\n private handleError(error: HttpErrorResponse): void {\r\n this._subscription.add(\r\n this.postLocal('log', {\r\n applicationId: this.formService.form?.get('applicationId')?.value,\r\n message: JSON.stringify(error)\r\n })\r\n .subscribe({\r\n next: () => {\r\n },\r\n error: () => {\r\n }\r\n })\r\n );\r\n }\r\n\r\n intercept(\r\n request: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (error != null && error.url != null && error.url.toLowerCase().indexOf('/log') === -1) {\r\n this.handleError(error);\r\n }\r\n\r\n return throwError(error);\r\n })\r\n ) as Observable>;\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {BsModalRef, BsModalService} from \"ngx-bootstrap/modal\";\r\nimport {combineLatest, Subscription} from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ModalService {\r\n\r\n bsModalRef?: BsModalRef;\r\n subscriptions: Subscription[] = [];\r\n messages: string[] = [];\r\n\r\n constructor(private modalService: BsModalService,\r\n public readonly modalRef: BsModalRef,) {\r\n this.bsModalRef = modalRef;\r\n }\r\n\r\n public openModal(component: any, config: any) {\r\n this.messages = [];\r\n\r\n this.bsModalRef = this.modalService.show(component, config);\r\n let _combine;\r\n // if (this.bsModalRef?.onHide && this.bsModalRef?.onHidden) {\r\n // _combine = combineLatest(\r\n // this.bsModalRef.onHide,\r\n // this.bsModalRef.onHidden\r\n // ).subscribe(() => this.changeDetection.markForCheck());\r\n // }\r\n\r\n if (this.bsModalRef?.onHide) {\r\n this.subscriptions.push(\r\n this.bsModalRef.onHide.subscribe((reason: string | any) => {\r\n if (typeof reason !== 'string') {\r\n reason = `onHide(), modalId is : ${reason.id}`;\r\n }\r\n const _reason = reason ? `, dismissed by ${reason}` : '';\r\n this.messages.push(`onHide event has been fired${_reason}`);\r\n })\r\n );\r\n }\r\n\r\n if (this.bsModalRef?.onHidden) {\r\n this.subscriptions.push(\r\n this.bsModalRef.onHidden.subscribe((reason: string | any) => {\r\n if (typeof reason !== 'string') {\r\n reason = `onHide(), modalId is : ${reason.id}`;\r\n }\r\n const _reason = reason ? `, dismissed by ${reason}` : '';\r\n this.messages.push(`onHidden event has been fired${_reason}`);\r\n this.unsubscribe();\r\n })\r\n );\r\n }\r\n\r\n if (_combine) {\r\n this.subscriptions.push(_combine);\r\n }\r\n }\r\n\r\n unsubscribe() {\r\n this.subscriptions.forEach((subscription: Subscription) => {\r\n subscription.unsubscribe();\r\n });\r\n this.subscriptions = [];\r\n }\r\n}\r\n","import {Inject, Injectable} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {concatMap, EMPTY, expand, last, Observable, of, throwError} from 'rxjs';\r\nimport {catchError, delay, map, take, takeWhile, tap} from 'rxjs/operators';\r\nimport {environment} from '../../../environments/environment';\r\nimport {HttpService} from './http.service';\r\nimport {Router} from \"@angular/router\";\r\n\r\n// Сервисы\r\nimport {YandexMetrikaService} from './yandex-metrika.service';\r\nimport {SettingsService} from '../../core/services/settings.service';\r\nimport {FormService} from \"./form.service\";\r\nimport { AppService } from '../../core/services/app.service';\r\n\r\n// Интерфейсы\r\nimport {\r\n IPreapproveMortgageApplicationRequest,\r\n IPreapproveMortgageApplicationResponce, ISaveMortgageApplicationRequest, ISaveMortgageApplicationResponce\r\n} from \"../interface/mortgage-application.interface\";\r\nimport {\r\n IBanksAndProduct,\r\n IMortgageProductsRequest, IMortgageProductsResponce,\r\n} from \"../interface/mortgage-products.interface\";\r\nimport {IApplicationRequest, IApplicationResponse} from \"../interface/application.interface\";\r\nimport {\r\n IMortgageProductDetailsRequest,\r\n IMortgageProductDetailsResponce\r\n} from \"../interface/mortgage-product-details.interface\";\r\nimport {IFormFilter} from \"../interface/form-filter.interface\";\r\nimport {IOffer, IOffersRequest, IOffersResponce} from \"../interface/offers.interface\";\r\nimport {IOfflineFormRequest} from \"../interface/offline-form.interface\";\r\nimport {IBankListRequest, IBankListResponce} from \"../interface/bank-list\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {YandexMetrikaGoalsEnum} from \"../enums/yandex-metrika-goals.enum\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MortgageService extends HttpService {\r\n // Список офферов\r\n public offers: IOffer[] = [];\r\n // Выбранный банк\r\n public selectedBank!: IBanksAndProduct;\r\n // Выбранный оффер\r\n public selectedOffer!: IOffer | null;\r\n // Ссылка на оплату\r\n public paymentLink!: string;\r\n // Ссылка на черновик\r\n public draftLink!: string;\r\n // Ссылка на второй черновик\r\n public additionalPolicyDraft!: string;\r\n // Статус анкеты из запроса GetAppInfo\r\n public appStatus = '';\r\n // Количество попыток\r\n public count = 1;\r\n // Список профессий\r\n public professions: any[] = [];\r\n\r\n constructor(@Inject(HttpClient) protected override http: HttpClient,\r\n protected readonly ym: YandexMetrikaService,\r\n private readonly settingsService: SettingsService,\r\n private readonly formService: FormService,\r\n private readonly appService: AppService,\r\n private readonly router: Router) {\r\n super(http);\r\n }\r\n\r\n // Получаем доступные для выбора продукты\r\n public getMortgageProducts(): Observable {\r\n const request: IMortgageProductsRequest = {\r\n apiKey: this.settingsService.apiKey\r\n }\r\n return this.post(environment.apiUrl + 'Dictionaries/GetMortgageProducts', request)\r\n .pipe(\r\n take(1),\r\n tap((res: any) => {\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.GetMortgageProductsResultError, this.appService.getUrlParams());\r\n }\r\n }),\r\n catchError((): Observable => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorGetMortgageProducts, this.appService.getUrlParams());\r\n return EMPTY;\r\n })\r\n );\r\n }\r\n\r\n // Получаем cписок банков\r\n public getBankList(): Observable {\r\n const request: IBankListRequest = {\r\n apiKey: this.settingsService.apiKey\r\n }\r\n return this.post(environment.apiUrl + 'Dictionaries/GetBanks', request)\r\n .pipe(\r\n take(1),\r\n tap((res: any) => {\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.GetBanksResultError, this.appService.getUrlParams());\r\n }\r\n }),\r\n catchError((): Observable => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorGetBanks, this.appService.getUrlParams());\r\n return EMPTY;\r\n })\r\n );\r\n }\r\n\r\n // Получаем список профессий\r\n public getProfessions(): Observable {\r\n const request: IBankListRequest = {\r\n apiKey: this.settingsService.apiKey\r\n }\r\n return this.post(environment.apiUrl + 'Dictionaries/GetProfessions', request);\r\n }\r\n\r\n // Рассчитать\r\n public calculate(formValue: IFormFilter): Observable {\r\n return this.getAppInfo()\r\n .pipe(\r\n concatMap(() => this.appStatus === 'WidgetDisplayed' ? of(null) : this.appService.createApplication()),\r\n concatMap(() => this.preapproveMortgageApplication(formValue)),\r\n concatMap(() => this.getOffers()),\r\n expand((res) => {\r\n\r\n if (res.result && res.value) {\r\n this.filterUniqueOffers(res.value.offers);\r\n }\r\n\r\n if (res.value && res.value.allOffersReceived === false) {\r\n return of(res).pipe(\r\n delay(2000),\r\n concatMap(() => this.getOffers())\r\n );\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n last()\r\n );\r\n }\r\n\r\n // Рассчитать\r\n public calculateAprove(): Observable {\r\n return this.getOffers()\r\n .pipe(\r\n expand((res) => {\r\n if (res.value && res.value.offers.length && this.selectedOffer) {\r\n const selectedOfferInsurerType = this.selectedOffer.insurerType;\r\n const offer = res.value.offers.find((offer) => offer.insurerType === selectedOfferInsurerType);\r\n\r\n return offer && offer.draft && offer.draft.status !== 1\r\n ? EMPTY\r\n : of(res).pipe(\r\n delay(2000),\r\n concatMap(() => this.getOffers())\r\n );\r\n\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n last()\r\n );\r\n }\r\n\r\n // Рассчитать если пришли с email\r\n public calculateFromEmail(formValue: IFormFilter): Observable {\r\n return this.getAppInfo()\r\n .pipe(\r\n concatMap(() => this.appStatus === 'WidgetDisplayed' ? of(null) : this.appService.createApplication()),\r\n concatMap(() => this.preapproveMortgageApplication(formValue)),\r\n concatMap(() => this.getOffers()),\r\n expand((res) => {\r\n\r\n if (res.result && res.value) {\r\n this.filterUniqueOffers(res.value.offers);\r\n }\r\n\r\n if (res.value && res.value.allOffersReceived === false) {\r\n return of(res).pipe(\r\n delay(2000),\r\n concatMap(() => this.getOffers())\r\n );\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n last()\r\n );\r\n }\r\n\r\n// Фильтруем только уникальные офферы, сохраняя их порядок\r\n private filterUniqueOffers(offers: IOffer[]): void {\r\n const offersMap = new Map(this.offers.map((offer: IOffer) => [offer.offerId, offer]));\r\n\r\n // Добавляем новые офферы, сохраняя их позиции\r\n offers.forEach((offer: IOffer, index: number) => {\r\n if (!offersMap.has(offer.offerId)) {\r\n offersMap.set(offer.offerId, offer);\r\n // Вставляем оффер в правильную позицию\r\n this.offers.splice(index, 0, offer);\r\n }\r\n });\r\n\r\n // Удаляем дубликаты, сохраняя первый встретившийся оффер\r\n const seen = new Set();\r\n this.offers = this.offers.filter((offer: IOffer) => {\r\n if (seen.has(offer.offerId)) {\r\n return false;\r\n } else {\r\n seen.add(offer.offerId);\r\n return true;\r\n }\r\n });\r\n }\r\n // Получаем данные всех брендов авто\r\n public getProductDetails(productId: string): Observable {\r\n const request: IMortgageProductDetailsRequest = {\r\n apiKey: this.settingsService.apiKey,\r\n ProductId: productId\r\n };\r\n return this.post(environment.apiUrl + 'Dictionaries/GetProductDetails', request)\r\n .pipe(\r\n tap((res: any) => {\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.GetProductDetailsResultError, this.appService.getUrlParams());\r\n }\r\n }),\r\n catchError((): Observable => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorGetProductDetails, this.appService.getUrlParams());\r\n return EMPTY;\r\n })\r\n );\r\n }\r\n\r\n // Отправялем данные фильтра\r\n private preapproveMortgageApplication(formValue: IFormFilter): Observable {\r\n const request: IPreapproveMortgageApplicationRequest = {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: this.appService.applicationId,\r\n InsurerProductId: formValue.productId,\r\n CreditRemain: Number(formValue.creditRemain.toString().replace(',', '.')),\r\n // InsuredBirthDate: formValue.insuredBirthDate,\r\n InsuredBirthDate: this.getFormatDate(formValue?.insuredBirthDate),\r\n InsuredGender: formValue.insuredGender,\r\n MortgagePropertyType: formValue.mortgagePropertyType,\r\n MortgageObjectPararms: {\r\n WithoutCreditNumber: false,\r\n WithoutOwnership: false,\r\n WithWood: false,\r\n WithGas: false,\r\n WithIllegalRedevelopment: false,\r\n },\r\n }\r\n return this.post(environment.apiUrl + 'app/PreapproveMortgageApplication', request)\r\n .pipe(\r\n tap((res: any) => {\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.PreapproveMortgageApplicationResultError, this.appService.getUrlParams());\r\n }\r\n }),\r\n catchError((): Observable => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorPreapproveMortgageApplication, this.appService.getUrlParams());\r\n return EMPTY;\r\n })\r\n );\r\n }\r\n\r\n // Получаем данные офферов предварительного расчета\r\n public getOffers(): Observable {\r\n const request: IOffersRequest = {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: this.appService.applicationId,\r\n }\r\n return this.post(environment.apiUrl + 'app/GetOffers', request)\r\n .pipe(\r\n tap((res) => {\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.GetOffersResultError, this.appService.getUrlParams());\r\n }\r\n }\r\n ),\r\n catchError(error => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorGetOffers, this.appService.getUrlParams());\r\n return EMPTY;\r\n })\r\n );\r\n }\r\n\r\n // Выбрали оффер\r\n public selectOffer(offerId: string, productId: string): Observable {\r\n return this.post(environment.apiUrl + 'app/SelectOffer', {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: this.appService.applicationId,\r\n offerId: offerId\r\n }).pipe(\r\n concatMap(() => this.getProductDetails(productId)),\r\n map((res) => this.formService.checkValidationDynamicFields(res)),\r\n tap((res: any) => {\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.SelectOfferResultError, this.appService.getUrlParams());\r\n }\r\n }),\r\n catchError(error => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorSelectOffer, this.appService.getUrlParams());\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n\r\n // Приводит дату в нужный формат дд.мм.гггг\r\n public getFormatDate(date: string): string {\r\n const replaceDate = date && date.toString()?.split('.').join('');\r\n if (replaceDate) {\r\n return `${replaceDate?.slice(0, 2)}.${replaceDate?.slice(2, 4)}.${replaceDate?.slice(4, 9)}`;\r\n } else {\r\n return date;\r\n }\r\n }\r\n\r\n // Сохарняем данные формы\r\n public saveMortgageApplication(formServiceValue: any, formFilterServiceValue: IFormFilter): Observable {\r\n\r\n const request: ISaveMortgageApplicationRequest = this.getMortgageApplicationRequest(formServiceValue, formFilterServiceValue);\r\n\r\n return this.post(environment.apiUrl + 'app/SaveMortgageApplication', request).pipe(\r\n map((res) => {\r\n if (res.value && res.value.applicationId) {\r\n this.appService.applicationId = res.value.applicationId;\r\n this.router.navigate(['form'], {\r\n queryParamsHandling: 'merge',\r\n queryParams: {applicationId: this.appService.applicationId}\r\n });\r\n }\r\n return res;\r\n }),\r\n concatMap((res) => {\r\n if (!res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.SaveMortgageApplicationResultError, this.appService.getUrlParams());\r\n throw new Error(res.error?.message || 'Failed to save mortgage application');\r\n }\r\n return of(res);\r\n }),\r\n catchError(error => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorSaveMortgageApplication, this.appService.getUrlParams());\r\n return of(null);\r\n }),\r\n concatMap(() => this.approveMortgageApplication()),\r\n delay(1000),\r\n concatMap(() => this.getOffers()),\r\n expand((res) => {\r\n const selectedOfferInsurerType = this.selectedOffer?.insurerType;\r\n const isSelectedOfferInRes = res.value?.offers.find((offer: IOffer) => offer.insurerType === selectedOfferInsurerType);\r\n\r\n if (!isSelectedOfferInRes) {\r\n return EMPTY;\r\n }\r\n\r\n const approvedOffer = res.value?.offers.find((offer: IOffer) => offer.status === 'Approved');\r\n if (res.value && !approvedOffer && res.value.offers.length > 0) {\r\n return of(res).pipe(\r\n delay(2000),\r\n concatMap(() => this.getOffers())\r\n );\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n last()\r\n );\r\n }\r\n\r\n public getMortgageApplicationRequest(formServiceValue: any, formFilterServiceValue: IFormFilter): any {\r\n return {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: this.appService.applicationId,\r\n AddressData: {addressAsString: \"\"},\r\n policyStartDate: this.getFormatDate(formServiceValue.mortgagePolicyDate.mortgageStartDate),\r\n policy: 'https://insapp.ru/polzovatelskoe-soglashenie/',\r\n MortgageLoan: {\r\n MortgagePropertyType: formFilterServiceValue.mortgagePropertyType,\r\n BankId: formFilterServiceValue.bankId,\r\n CreditRate: Number(formServiceValue.mortgage.creditRate?.toString().replace(',', '.')),\r\n CreditRateRefusal: formServiceValue.mortgage.withRefusalRate ? Number(formServiceValue.mortgage.withRefusalRate) : undefined,\r\n ContractNumber: formServiceValue.mortgage.mortgageCreditNumber.replace(/\\\\+/g, ''),\r\n MortgageStartDate: this.getFormatDate(formServiceValue.mortgage.mortgageBeginDate),\r\n MortgageEndDate: formServiceValue.mortgage.mortgageBeginEndDate ? this.getFormatDate(formServiceValue.mortgage.mortgageBeginEndDate) : null,\r\n MonthlyPayment: formServiceValue.insuranceObject.monthlyPayment,\r\n ownershipLessThreeYears: formServiceValue.insuranceObject.ownershipLessThreeYears,\r\n square: Number(formServiceValue.insuranceObject.insuranceObjectSquare?.toString().replace(',', '.')),\r\n floorCount: Number(formServiceValue.insuranceObject.floorCount),\r\n roomsCount: Number(formServiceValue.insuranceObject.roomsCount),\r\n floor: Number(formServiceValue.insuranceObject.floor),\r\n builtYear: Number(formServiceValue.insuranceObject.insuranceObjectBuiltYear),\r\n kadastr: formServiceValue.insuranceObject.kadastr,\r\n insuranceBaseAmount: formServiceValue.insuranceObject.insuranceBaseAmount,\r\n addressSameAsInsurer: formServiceValue.insuranceObject.insuranceObjectAddressSameAsInsurer,\r\n AddressData: formServiceValue.insuranceObject.insuranceObjectAddressSameAsInsurer\r\n ? null :\r\n {\r\n addressAsString: formServiceValue.insuranceObject?.insuranceHouseNumber ? formServiceValue.insuranceObject.insuranceObjectAddress + `, кв ${formServiceValue.insuranceObject?.insuranceHouseNumber}` : formServiceValue.insuranceObject.insuranceObjectAddress,\r\n hasNoApartment: !formServiceValue.borrower?.insuranceHouseNumber\r\n },\r\n mortgageObjectPararms: {\r\n withoutCreditNumber: formServiceValue.mortgage.mortgageWithoutCreditNumber,\r\n withoutOwnership: false,\r\n withWood: formServiceValue.insuranceObject.withWood,\r\n withGas: formServiceValue.insuranceObject.hasGas,\r\n withIllegalRedevelopment: formServiceValue.insuranceObject.hasIllegalRedevelopment\r\n },\r\n loanissueaddress: this.formService.form.get('mortgage')?.get('loanIssueAddress')?.enabled ? {\r\n addressAsString: formServiceValue.mortgage.loanIssueAddressDaData.value,\r\n daDataAddress: formServiceValue.mortgage.loanIssueAddressDaData,\r\n hasNoApartment: false\r\n } : undefined\r\n },\r\n Insured: {\r\n firstName: formServiceValue.borrower.borrowerFirstName,\r\n lastName: formServiceValue.borrower.borrowerLastName,\r\n middleName: formServiceValue.borrower.borrowerMiddleName,\r\n Height: Number(formServiceValue.borrower.height) || undefined,\r\n Weight: Number(formServiceValue.borrower.weight) || undefined,\r\n LowPressure: Number(formServiceValue.borrower.lowPressure) || undefined,\r\n HighPressure: Number(formServiceValue.borrower.highPressure) || undefined,\r\n Phone: '7' + this.sanitizePhoneNumber(formServiceValue.contacts.phone),\r\n Email: formServiceValue.contacts.email,\r\n birthPlace: formServiceValue.borrower?.borrowerBirthPlace || undefined,\r\n professionId: formServiceValue.borrower?.professionId || undefined,\r\n passport: {\r\n departmentCode: formServiceValue.borrower.borrowerPassportIssuerDadata?.code?.replace(/-/g, \"\") || formServiceValue.borrower.borrowerDepartmentCode?.replace(/-/g, \"\"),\r\n passportIssueDate: this.getFormatDate(formServiceValue.borrower.borrowerPassportDate),\r\n // passportIssuer: formServiceValue.borrower.borrowerPassportIssuer,\r\n passportIssuer: formServiceValue.borrower.borrowerPassportIssuerDadata?.value || formServiceValue.borrower.borrowerPassportIssuer,\r\n passportNumber: formServiceValue.borrower.borrowerPassportLicense.toString().replace(/\\s/g, \"\").slice(4),\r\n passportSeries: formServiceValue.borrower.borrowerPassportLicense.toString().replace(/\\s/g, \"\").slice(0, 4),\r\n registrationAddressData: {\r\n addressAsString: formServiceValue.borrower?.borrowerHouseNumber ? formServiceValue.borrower.borrowerAddress + `, кв ${formServiceValue.borrower?.borrowerHouseNumber}` : formServiceValue.borrower.borrowerAddress,\r\n hasNoApartment: !formServiceValue.borrower?.borrowerHouseNumber\r\n }\r\n },\r\n AddressData: {\r\n addressAsString: formServiceValue.borrower?.borrowerHouseNumber ? formServiceValue.borrower.borrowerAddress + `, кв ${formServiceValue.borrower?.borrowerHouseNumber}` : formServiceValue.borrower.borrowerAddress,\r\n hasNoApartment: !formServiceValue.borrower?.borrowerHouseNumber\r\n }\r\n },\r\n mortgageObject: formServiceValue?.insuranceObject?.mortgageObject ? {\r\n buildYear: Number(formServiceValue.insuranceObject.insuranceObjectBuiltYear),\r\n floorCount: Number(formServiceValue.insuranceObject.floorCount),\r\n square: Number(formServiceValue.insuranceObject.insuranceObjectSquare?.toString().replace(',', '.')),\r\n } : undefined\r\n }\r\n }\r\n\r\n // Получаем одобренные заявки\r\n public approveMortgageApplication(): Observable {\r\n return this.post(environment.apiUrl + 'app/ApproveMortgageOffer', {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: this.appService.applicationId\r\n })\r\n .pipe(\r\n tap((res: any) => {\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ApproveMortgageOfferResultError, this.appService.getUrlParams());\r\n }\r\n }),\r\n catchError((): Observable => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorApproveMortgageOffer, this.appService.getUrlParams());\r\n return EMPTY;\r\n })\r\n );\r\n }\r\n\r\n // Получаем ссылку на оплату\r\n public getMortgagePaymentLink(offerId: string): Observable {\r\n return this.getPaymentLink(offerId)\r\n .pipe(\r\n expand((payment) => {\r\n const isProcessing = payment.value?.status === 'Processing';\r\n if (isProcessing) {\r\n return of(payment).pipe(\r\n delay(2000),\r\n concatMap(() => this.getPaymentLink(offerId))\r\n );\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n last(),\r\n );\r\n }\r\n\r\n public getPaymentLink(offerId: string): Observable {\r\n return this.post(environment.apiUrl + 'app/GetMortgagePaymentLink', {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: this.appService.applicationId,\r\n offerId: offerId,\r\n skipNotification: this.appService.isArmApplication == true\r\n })\r\n .pipe(\r\n tap((res: any) => {\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.GetMortgagePaymentLinkResultError, this.appService.getUrlParams());\r\n }\r\n }),\r\n catchError((): Observable => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorGetMortgagePaymentLink, this.appService.getUrlParams());\r\n return EMPTY;\r\n })\r\n );\r\n }\r\n\r\n // Повторная заявка\r\n public repeatGetOffers(formServiceValue: IFormFilter, formFilterServiceValue: any): Observable {\r\n return this.appService.createApplication()\r\n .pipe(\r\n concatMap(() => this.preapproveMortgageApplication(formFilterServiceValue)),\r\n concatMap(() => this.getOffers()),\r\n expand((res) => {\r\n if (res.value && res.value.allOffersReceived === false) {\r\n return of(res).pipe(\r\n delay(2000),\r\n concatMap(() => this.getOffers())\r\n );\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n last(),\r\n concatMap((offers) => {\r\n const selectedOfferInsurerType = this.selectedOffer?.insurerType;\r\n const selectedOffer = offers.value?.offers.find((offer) => offer.insurerType === selectedOfferInsurerType);\r\n if (selectedOffer) {\r\n return this.selectOffer(selectedOffer.offerId!, selectedOffer.productId)\r\n .pipe(\r\n concatMap(() => this.sendContacts()),\r\n concatMap(() => this.saveMortgageApplication(formServiceValue, formFilterServiceValue))\r\n );\r\n } else {\r\n return throwError('Selected offer is not available');\r\n }\r\n }),\r\n // concatMap(() => this.saveMortgageApplication(formServiceValue, formFilterServiceValue)),\r\n );\r\n }\r\n\r\n // Повторная заявка\r\n public repeatGetOffersAfterNotAprove(formServiceValue: IFormFilter, formFilterServiceValue: any): Observable {\r\n return this.appService.createApplication()\r\n .pipe(\r\n concatMap(() => this.preapproveMortgageApplication(formFilterServiceValue)),\r\n concatMap(() => this.getOffers()),\r\n expand((res) => {\r\n if (res.value && res.value.allOffersReceived === false) {\r\n return of(res).pipe(\r\n delay(2000),\r\n concatMap(() => this.getOffers())\r\n );\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n last(),\r\n concatMap((offers) => {\r\n const selectedOfferInsurerType = this.selectedOffer?.insurerType;\r\n const selectedOffer = offers.value?.offers.find((offer) => offer.insurerType === selectedOfferInsurerType);\r\n if (selectedOffer) {\r\n return this.selectOffer(selectedOffer.offerId!, selectedOffer.productId)\r\n .pipe(\r\n concatMap(() => this.sendContacts()),\r\n concatMap(() => this.saveMortgageApplication(formServiceValue, formFilterServiceValue))\r\n );\r\n } else {\r\n return throwError('Selected offer is not available');\r\n }\r\n }),\r\n );\r\n }\r\n\r\n // Сохраняем данные оффлайн формы\r\n public saveOfflineMortgage(value: any): Observable {\r\n return this.appService.createApplication()\r\n .pipe(\r\n concatMap(() => {\r\n const request: IOfflineFormRequest = {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: this.appService.applicationId,\r\n firstName: value.offlineFormFirstName,\r\n lastName: value.offlineFormLastName,\r\n middleName: value.offlineFormMiddleName,\r\n email: value.email,\r\n phone: '7' + this.sanitizePhoneNumber(value.phone),\r\n addressData: {\r\n addressAsString: value.city\r\n }\r\n }\r\n return this.post(environment.apiUrl + 'app/SaveOfflineMortgageApplication', request)\r\n }),\r\n );\r\n }\r\n\r\n // Получаем данные офферов предварительного расчета\r\n public sendPaymentLink(email: boolean, sms: boolean): Observable {\r\n const request = {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: this.appService.applicationId,\r\n sendEmail: email,\r\n sendSms: sms\r\n }\r\n\r\n return this.post(environment.apiUrl + 'app/SendMortgagePaymentLink', request);\r\n }\r\n\r\n // Получаем данные анкеты с кэша\r\n public clickPay(): Observable {\r\n const request = {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: this.appService.applicationId\r\n }\r\n return this.http.post(environment.apiUrl + 'app/SetStatusBuyButtonPressed', request)\r\n .pipe(\r\n tap((res: any) => {\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.SetStatusBuyButtonPressedResultError, this.appService.getUrlParams());\r\n }\r\n }),\r\n catchError(error => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorSetStatusBuyButtonPressed, this.appService.getUrlParams());\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n // Отправка контактов\r\n public sendContacts(phone?: string, email?: string): Observable {\r\n const emailFromForm = this.formService.form.get('contacts')?.value?.email;\r\n const phoneFromForm = this.formService.form.get('contacts')?.value?.phone;\r\n const request = {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: this.appService.applicationId,\r\n Phone: `7${phone ? this.sanitizePhoneNumber(phone) : this.sanitizePhoneNumber(phoneFromForm)}`,\r\n Email: email ? email : emailFromForm\r\n }\r\n\r\n return this.post(environment.apiUrl + 'app/SaveContacts', request)\r\n .pipe(\r\n tap((res) => {\r\n if (res && !res.result) {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.SaveContactsResultError, this.appService.getUrlParams());\r\n }\r\n }\r\n ),\r\n catchError(error => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorSaveContacts, this.appService.getUrlParams());\r\n return EMPTY;\r\n })\r\n );\r\n }\r\n\r\n // Получить информацию о текущей анкете\r\n public getAppInfo(): Observable {\r\n const {value} = this.formService.form;\r\n const request = {\r\n apiKey: this.settingsService.apiKey,\r\n applicationId: value?.applicationId\r\n };\r\n return this.post(environment.apiUrl + 'app/GetApplicationInfo', request)\r\n .pipe(\r\n tap((response: any) => {\r\n if (response.result) {\r\n this.appStatus = response.result && response?.value?.applicationData.applicationStatus;\r\n } else {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.CommontResultError);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.GetApplicationInfoResultError, this.appService.getUrlParams());\r\n }\r\n }),\r\n catchError((): Observable => {\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorCommon);\r\n this.ym.onYandexReachGoal(YandexMetrikaGoalsEnum.ErrorGetApplicationInfo, this.appService.getUrlParams());\r\n return EMPTY;\r\n })\r\n );\r\n }\r\n\r\n public sanitizePhoneNumber(phoneNumber: string): string {\r\n // Remove all non-digit characters and the first digit '7'\r\n const sanitizedNumber = phoneNumber.replace(/[^0-97]/g, '').replace(/^7/, '');\r\n\r\n // Check if the sanitized number is empty or contains only non-digit characters\r\n if (sanitizedNumber.length === 0 || sanitizedNumber.match(/[^0-9]/g)) {\r\n return ''; // Return empty string if invalid\r\n }\r\n\r\n // Return the sanitized phone number\r\n return sanitizedNumber;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Params, QueryParamsHandling, Router, ActivatedRoute } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NavigationService {\r\n\r\n constructor(private readonly router: Router,\r\n private readonly route: ActivatedRoute) { }\r\n\r\n // Общий метод перехода по роуту\r\n // По умолчанию роутер мержит параметры\r\n public navigate(route: string, params?: Params, queryParamsHandlingValue: QueryParamsHandling = 'preserve'): void {\r\n// this.router.navigate([route], { queryParams: params, queryParamsHandling: queryParamsHandlingValue });\r\n this.router.navigate([route], {\r\n relativeTo: this.route,\r\n queryParams: params,\r\n queryParamsHandling: 'merge'\r\n });\r\n }\r\n\r\n // Вставляем в url параметры\r\n public changeQueryParams(params: Params): void {\r\n this.router.navigate([], { queryParams: params, queryParamsHandling: 'merge' });\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {FormService} from './form.service';\r\nimport {\r\n AbstractControl,\r\n UntypedFormControl,\r\n UntypedFormGroup,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport {TextMaskHelper} from '../../shared/helpers/textmaskHelper';\r\nimport moment from 'moment-mini';\r\nimport {IProperty} from '../interface/property-controls.interface';\r\nimport {FormFilterService} from \"./form-filter.service\";\r\n\r\n// Сервис валидации формы\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ValidationService {\r\n\r\n constructor(private readonly formService: FormService,\r\n private readonly formFilterService: FormFilterService) {\r\n }\r\n\r\n // Валидация фильтра на главной странице\r\n public validationFilterFormPage(): boolean {\r\n return this.formFilterService.form.valid;\r\n }\r\n\r\n // Применяем валидацию для контролла\r\n public setControlValidation(propertyControl: IProperty, control: UntypedFormControl): void {\r\n const validators: ValidatorFn | ValidatorFn[] | null = [];\r\n if (control && propertyControl && propertyControl?.validation?.values) {\r\n propertyControl?.validation?.values?.forEach((item) => {\r\n switch (item.validName) {\r\n case 'required':\r\n validators.push(Validators.required);\r\n break;\r\n case 'email':\r\n validators.push(Validators.email);\r\n break;\r\n case 'min':\r\n validators.push(Validators.min(item.validValue || 0));\r\n break;\r\n case 'max':\r\n validators.push(Validators.max(item.validValue || 999));\r\n break;\r\n case 'minLength':\r\n validators.push(Validators.minLength(item.validValue || 0));\r\n break;\r\n case 'maxLength':\r\n validators.push(Validators.maxLength(item.validValue || 999));\r\n break;\r\n case 'pattern':\r\n validators.push(Validators.pattern(new RegExp(item.validValue)));\r\n break;\r\n case 'birthDate':\r\n validators.push(this.birthDate());\r\n break;\r\n case 'policyStartDate':\r\n validators.push(this.policyStartDate());\r\n break;\r\n case 'insurerBirthDate':\r\n validators.push(this.birthDate('insurerPassportDate'));\r\n break;\r\n case 'insurerPassportDate':\r\n validators.push(this.passportDate('insurerBirthDate'));\r\n break;\r\n case 'mortgageBeginDate':\r\n validators.push(this.mortgageBeginDate());\r\n break;\r\n case 'mortgageStartDate':\r\n validators.push(this.mortgageStartDate('mortgageBeginDate'));\r\n break;\r\n case 'borrowerDaDataRequired':\r\n validators.push(this.daDataRequired('borrowerAddress'));\r\n break;\r\n case 'borrowerDaDataHouseNumber':\r\n validators.push(this.daDataAddressHouseFlatNumber('borrowerAddressDaData'));\r\n break;\r\n case 'insuranceObjectAddressDaDataHouseNumber':\r\n validators.push(this.daDataAddressHouseFlatNumber('insuranceObjectAddressDaData'));\r\n break;\r\n case 'insurerDaDataRequired':\r\n validators.push(this.daDataRequired('insurerAddressDaData'));\r\n break;\r\n case 'numberValidator':\r\n validators.push(this.numberValidator('creditRate'));\r\n break;\r\n case 'insuranceObjectBuiltYear':\r\n validators.push(this.insuranceObjectBuiltYearValidator());\r\n break;\r\n case 'maxDecimal':\r\n validators.push(this.maxDecimal());\r\n break;\r\n case 'insuranceObjectSquare':\r\n validators.push(this.insuranceObjectSquare());\r\n break;\r\n }\r\n });\r\n control.setValidators(validators);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Валидация даты рождения\r\n public birthDate(dependedControlName?: string): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n const value = TextMaskHelper.getDate(fc.value);\r\n\r\n const date = moment(value || '', 'DD.MM.YYYY', true);\r\n if (!date.isValid() || date.isAfter()) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите корректную дату рождения'\r\n };\r\n }\r\n\r\n if (moment(value || '', 'DD.MM.YYYY', true).add(18, 'years').isAfter()) {\r\n return {\r\n customValidation: true,\r\n message: 'Должно быть больше 18 лет'\r\n };\r\n }\r\n\r\n if (!moment(value || '', 'DD.MM.YYYY', true).add(70, 'years').isAfter()) {\r\n return {\r\n customValidation: true,\r\n message: 'Заёмщику должно быть не более 70 лет'\r\n };\r\n }\r\n\r\n const experienceDate = (fc.parent as UntypedFormGroup)?.get('experienceDate');\r\n if (experienceDate && !experienceDate.valid) {\r\n experienceDate?.updateValueAndValidity();\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n // Валидация даты начала стажа\r\n public experienceStartDate(ignore = () => false, birthDateFieldName: string = 'driverBirthDate'): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n const value = TextMaskHelper.getDate(fc.value);\r\n if (value == null) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите корректную дату'\r\n };\r\n }\r\n\r\n const date = moment(value, 'DD.MM.YYYY', true);\r\n if (!date.isValid() || date.isAfter()) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите корректную дату'\r\n };\r\n }\r\n\r\n const birthDate = (fc.parent as UntypedFormGroup)?.get(birthDateFieldName);\r\n if (birthDate && !birthDate.valid) {\r\n birthDate?.updateValueAndValidity();\r\n return null;\r\n }\r\n\r\n const birthDateValue = birthDate ? TextMaskHelper.getDate(birthDate.value) : null;\r\n if (birthDateValue && moment(birthDateValue, 'DD.MM.YYYY', true).add(16, 'year').isAfter(date)) {\r\n return {\r\n customValidation: true,\r\n message: 'Стаж начался в возрасте до 16 лет'\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n public experienceStartYear(ignore = () => false, birthDateFieldName: string = 'driverBirthDate'): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n\r\n const value = TextMaskHelper.getYear(fc.value);\r\n if (value == null || moment().year() < Number(value)) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите корректный год'\r\n };\r\n }\r\n\r\n const date = moment('31.12.' + value, 'DD.MM.YYYY', true);\r\n if (!date.isValid()) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите корректный год'\r\n };\r\n }\r\n\r\n const birthDate = (fc.parent as UntypedFormGroup)?.get(birthDateFieldName);\r\n if (!birthDate?.valid) {\r\n return null;\r\n }\r\n\r\n const birthDateValue = TextMaskHelper.getDate(birthDate.value);\r\n if (moment(birthDateValue || '', 'DD.MM.YYYY', true).add(16, 'year').isAfter(date)) {\r\n return {\r\n customValidation: true,\r\n message: 'Стаж начался в возрасте до 16 лет'\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n // Валидация контролла год выпуска авто\r\n public productionYear(ignore = () => false): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n const stsDate = (fc.parent as UntypedFormGroup)?.get('stsDate');\r\n stsDate?.updateValueAndValidity();\r\n const ptsDate = (fc.parent as UntypedFormGroup)?.get('ptsDate');\r\n ptsDate?.updateValueAndValidity();\r\n const ePtsDate = (fc.parent as UntypedFormGroup)?.get('ePtsDate');\r\n ePtsDate?.updateValueAndValidity();\r\n return null;\r\n };\r\n }\r\n\r\n // Валидация даты выдачи паспорта\r\n public passportDate(birthdateFieldName: string, ignore = () => false): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n if (ignore()) {\r\n return null;\r\n }\r\n\r\n const value = TextMaskHelper.getDate(fc.value);\r\n if (value == null) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите корректную дату выдачи паспорта'\r\n };\r\n }\r\n\r\n const date = moment(value, 'DD.MM.YYYY', true);\r\n if (!date.isValid() || date.isAfter()) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите корректную дату выдачи паспорта'\r\n };\r\n }\r\n\r\n if (!moment(value || '', 'DD.MM.YYYY', true).add(100, 'years').isAfter()) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите корректную дату выдачи паспорта'\r\n };\r\n }\r\n\r\n const birthDate = (fc.parent as UntypedFormGroup)?.get(birthdateFieldName);\r\n\r\n if (birthDate && !birthDate.valid) {\r\n birthDate?.updateValueAndValidity();\r\n return null;\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n // Валидация даты начала стажа\r\n public policyStartDate(ignore = () => false): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n const value = TextMaskHelper.getDate(fc.value);\r\n if (value == null) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите корректную дату'\r\n };\r\n }\r\n const minDate = moment();\r\n\r\n const date = moment(value, 'DD.MM.YYYY', true);\r\n if (!date.isValid() || date.isBefore(minDate)) {\r\n return {\r\n customValidation: true,\r\n message: 'Дата должна быть больше текущей'\r\n };\r\n }\r\n\r\n if (!moment(value, 'DD.MM.YYYY', true).isBefore(moment().add(30, 'days'))) {\r\n return {\r\n customValidation: true,\r\n message: 'Дата начала договора не может быть более чем через 30 дней'\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n // Валидация даты начала договора\r\n public mortgageBeginDate(ignore = () => false): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n const value = TextMaskHelper.getDate(fc.value);\r\n if (value == null) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите корректную дату'\r\n };\r\n }\r\n const maxDate = moment();\r\n\r\n const date = moment(value, 'DD.MM.YYYY', true);\r\n if (!date.isValid() || date.isAfter(maxDate)) {\r\n return {\r\n customValidation: true,\r\n message: 'Дата не может быть позже текущего дня'\r\n };\r\n }\r\n\r\n const thirtyYearsAgo = moment().subtract(35, 'years');\r\n\r\n if (date.isBefore(thirtyYearsAgo)) {\r\n return {\r\n customValidation: true,\r\n message: 'Дата не может быть раньше 35 лет от текущего дня'\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n // Валидация даты начала страхования\r\n public mortgageStartDate(mortgageBeginDateControlName: string, ignore = () => false): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n const value = TextMaskHelper.getDate(fc.value);\r\n if (value == null) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите корректную дату'\r\n };\r\n }\r\n const minDate = moment();\r\n\r\n const date = moment(value, 'DD.MM.YYYY', true);\r\n if (!date.isValid() || date.isBefore(minDate)) {\r\n return {\r\n customValidation: true,\r\n message: 'Дата должна быть больше текущей'\r\n };\r\n }\r\n\r\n if (!moment(value, 'DD.MM.YYYY', true).isBefore(moment().add(90, 'days'))) {\r\n return {\r\n customValidation: true,\r\n message: 'Дата начала договора не может быть более чем через 90 дней'\r\n };\r\n }\r\n\r\n const mortgageBeginDateControl = (fc.parent as UntypedFormGroup)?.get(mortgageBeginDateControlName);\r\n\r\n if (mortgageBeginDateControl && !mortgageBeginDateControl.valid) {\r\n mortgageBeginDateControl?.updateValueAndValidity();\r\n return null;\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n // Обязательный выбор из списка, полученного с сервиса daData\r\n public daDataRequired(daDataFieldName: string): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n const cityDaData = (fc.parent as UntypedFormGroup)?.get(daDataFieldName)?.value;\r\n\r\n // if (!(Number(cityDaData?.fias_level) >= 8 || (Number(cityDaData?.fias_level) === 7 && cityDaData?.house != null))) {\r\n // return {\r\n // customValidation: true,\r\n // message: 'Укажите адрес до дома'\r\n // };\r\n // }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n // Валидация номера квартиры в адресе\r\n public daDataAddressHouseFlatNumber(daDataFieldName: string): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n const cityDaData = (fc.parent as UntypedFormGroup)?.get(daDataFieldName)?.value;\r\n\r\n // Если нету номера дома\r\n if (cityDaData && !cityDaData?.house) {\r\n return {\r\n customValidation: true,\r\n message: 'Укажите полный адрес до дома'\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n // Вадлидация смс кода\r\n public errorCode(isValidCode: boolean): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n\r\n if (!isValidCode) {\r\n return {\r\n customValidation: true,\r\n message: 'Вы ввели неверный смс код'\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n // Валидация целых и дробных чисел\r\n public numberValidator(fieldName: string, ignore = () => false): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n if (ignore()) {\r\n return null;\r\n }\r\n\r\n const control = (fc.parent as UntypedFormGroup)?.get(fieldName);\r\n\r\n const isNumber = /^\\d+(\\.\\d{1,2})?$/.test(control?.value);\r\n return isNumber ? null : { invalidNumber: true };\r\n };\r\n }\r\n\r\n // Валидация год постройки дома\r\n public insuranceObjectBuiltYearValidator(ignore = () => false): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n if (ignore()) {\r\n return null;\r\n }\r\n\r\n const currentYear = new Date().getFullYear();\r\n\r\n\r\n if (Number(fc.value) > currentYear) {\r\n return {\r\n customValidation: true,\r\n message: 'Год постройки не может быть больше текущего'\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n // Валидация годовая ставка\r\n public maxDecimal(ignore = () => false): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n if (ignore()) {\r\n return null;\r\n }\r\n\r\n const stringNumber = fc?.value?.toString().replace(',', '.');\r\n\r\n if (stringNumber > 100) {\r\n return {\r\n customValidation: true,\r\n message: 'Максимальная ставка 100%'\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n // Валидация площадь квартиры\r\n public insuranceObjectSquare(ignore = () => false): ValidatorFn {\r\n return (fc: AbstractControl) => {\r\n if (ignore()) {\r\n return null;\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n}\r\n","import {inject, Injectable} from '@angular/core';\r\nimport {environment} from \"@environment/environment\";\r\nimport {IApplicationRequest} from \"../interface/application.interface\";\r\nimport {getUtmData} from \"../functions/utmData\";\r\nimport {CalendarHelper} from \"../helpers/calendarHelper\";\r\nimport {SettingsService} from \"../../core/services/settings.service\";\r\nimport {IUrlParams} from \"../interface/url-params.interface\";\r\n\r\ndeclare global {\r\n interface Window {\r\n ym: any;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport abstract class YandexMetrikaService {\r\n private settingsService = inject(SettingsService);\r\n\r\n constructor() {\r\n this.ym = window.ym;\r\n }\r\n\r\n // Яндекс метрика\r\n private readonly ym;\r\n\r\n // Отправка события в яндекс метрику\r\n public onYandexReachGoal(ymTarget: string, urlParams?: IUrlParams, goalParams?: any): void {\r\n const url: URL = new URL(window.location.href);\r\n const request: IApplicationRequest = {\r\n apiKey: this.settingsService.apiKey,\r\n productType: 'Mortgage',\r\n clientId: localStorage.getItem('clientId')!,\r\n channelType: \"Widget\",\r\n SourceUrl: url.href,\r\n source: urlParams?.src,\r\n platformId: urlParams?.platformId,\r\n webMasterID: urlParams?.webMasterID,\r\n cpaClientUid: urlParams?.CpaClientUid,\r\n cpaClientUid2: urlParams?.CpaClientUid2,\r\n utmSource: urlParams?.utmSource,\r\n utmMedium: urlParams?.utmMedium,\r\n utm: urlParams ? getUtmData(urlParams!) : '',\r\n loyalty: urlParams?.loyalty,\r\n localTime: CalendarHelper.getLocalDateTimeString(),\r\n }\r\n\r\n goalParams = {...goalParams, ...request};\r\n\r\n if (window.ym) {\r\n // Отправка цели с параметрами\r\n window.ym(environment.yandexMetrika, 'reachGoal', ymTarget, goalParams);\r\n if (environment.yandexMetrikaPartner) {\r\n window.ym(environment.yandexMetrikaPartner, 'reachGoal', ymTarget, goalParams);\r\n }\r\n }\r\n // this.metrika.fireEvent(ymTarget);\r\n }\r\n\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {AutocompleteComponent} from \"src/app/shared/components/autocomplete/autocomplete.component\";\r\nimport {FormFieldErrorComponent} from \"./components/form-field-error/form-field-error.component\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {TypeaheadModule} from \"ngx-bootstrap/typeahead\";\r\nimport {FormDateFieldComponent} from \"./components/form-date-field/form-date-field.component\";\r\nimport {FormNumberFieldComponent} from \"./components/form-number-field/form-number-field.component\";\r\nimport {IsNumericDirective} from \"./directives/number.directive\";\r\nimport {TextMaskModule} from \"angular2-text-mask\";\r\nimport {OfferItemComponent} from './components/offer-item/offer-item.component';\r\nimport {FormTextFieldComponent} from \"src/app/shared/components/form-text-field/form-text-field.component\";\r\nimport {HttpClientModule} from \"@angular/common/http\";\r\nimport { SelectedOfferComponent } from './components/selected-offer/selected-offer.component';\r\nimport {LoaderOfferComponent} from \"./components/loader-offer/loader-offer.component\";\r\nimport {ModalModule} from \"ngx-bootstrap/modal\";\r\nimport {DateDirective} from \"./directives/date.directive\";\r\nimport {BsDatepickerModule} from \"ngx-bootstrap/datepicker\";\r\nimport {BrowserAnimationsModule} from \"@angular/platform-browser/animations\";\r\nimport {RatingModule} from \"ngx-bootstrap/rating\";\r\nimport { PdfDocViewComponent } from './components/pdf-doc-view/pdf-doc-view.component';\r\nimport {PdfViewerModule} from \"ng2-pdf-viewer\";\r\nimport {AlertModule} from \"ngx-bootstrap/alert\";\r\nimport {RouterLink} from \"@angular/router\";\r\nimport { ProgressCircleComponent } from './components/progress-circle/progress-circle.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AutocompleteComponent,\r\n FormFieldErrorComponent,\r\n FormDateFieldComponent,\r\n FormNumberFieldComponent,\r\n IsNumericDirective,\r\n OfferItemComponent,\r\n FormTextFieldComponent,\r\n SelectedOfferComponent,\r\n LoaderOfferComponent,\r\n DateDirective,\r\n PdfDocViewComponent,\r\n ProgressCircleComponent\r\n ],\r\n exports: [\r\n AutocompleteComponent,\r\n FormDateFieldComponent,\r\n FormNumberFieldComponent,\r\n OfferItemComponent,\r\n FormTextFieldComponent,\r\n SelectedOfferComponent,\r\n LoaderOfferComponent,\r\n ProgressCircleComponent\r\n ],\r\n imports: [\r\n BsDatepickerModule.forRoot(),\r\n BrowserAnimationsModule,\r\n CommonModule,\r\n ReactiveFormsModule,\r\n TypeaheadModule,\r\n TextMaskModule,\r\n HttpClientModule,\r\n ModalModule.forRoot(),\r\n FormsModule,\r\n RatingModule,\r\n PdfViewerModule,\r\n AlertModule,\r\n RouterLink\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SharedModule {\r\n}\r\n","export const environmentProd = {\r\n production: true,\r\n mock: false,\r\n routerLogging: false,\r\n hostUrl: 'https://api.insapp.pro/',\r\n apiUrl: 'https://api.insapp.pro/',\r\n carInfoApi: 'https://api.insapp.pro/',\r\n dadataKey: '6e1e70327c0437a3d0d34fe74fd68a767c32d0d4',\r\n armHost: 'arm.insapp.ru',\r\n yandexMetrika: 94047660,\r\n yandexMetrikaPartner: 0\r\n};\r\n","import {environmentProd} from \"@environment/environment.common.prod\";\r\n\r\n\r\nexport const environment = {\r\n apiKey: 'cf9e03f9bb414751bef036612b246d21',\r\n partnerSystemName: 'insapp',\r\n partnerBankId: '',\r\n // Выбрать другой банк кроме партнерского, нельзя\r\n onlyPartnerBank: false,\r\n cacheService: true,\r\n ...environmentProd,\r\n yandexMetrikaPartner: 0\r\n};\r\n","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\n\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","var map = {\n\t\"./locale\": 6333,\n\t\"./locale.js\": 6333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1748;","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */"],"names":["PreloadAllModules","RouterModule","routes","path","loadChildren","then","m","MortgageModule","canActivate","AppRoutingModule","forRoot","onSameUrlNavigation","preloadingStrategy","useHash","imports","exports","setTheme","finalize","fromEvent","i0","AppComponent","constructor","titleService","elementRef","appService","router","document","querySelector","isShowBlock","url","includes","ngOnInit","console","log","setTitle","title","favIcon","href","faviconHref","checkNetworkStatus","isLoading","loadApp","pipe","subscribe","navigate","queryParamsHandling","ngAfterViewInit","ngOnDestroy","subscriptions","forEach","subscription","unsubscribe","isAdmin","localStorage","getItem","onlineEvent","window","offlineEvent","push","e","reloadPage","connectionStatus","location","reload","selectors","viewQuery","ErrorHandler","BrowserModule","BrowserAnimationsModule","SharedModule","CoreModule","BsDatepickerModule","SwiperModule","PopoverModule","HTTP_INTERCEPTORS","HttpErrorInterceptor","GlobalErrorHandler","AppModule","bootstrap","provide","useClass","multi","declarations","CommonModule","AppService","DadataService","ContentService","BehaviorSubject","concatMap","Observable","of","catchError","map","take","tap","HttpClient","v4","uuidv4","HttpService","environment","CalendarHelper","getUtmData","YandexMetrikaGoalsEnum","http","settingsService","formService","formFilterService","ym","_armApplication","asObservable","checkIsArmApplication","_isArmApplication","isOpenFromArm","addEventListener","ev","armEventReceived","data","type","apiKey","apikey","applicationType","next","application","opener","postMessage","armApplication","value","referrer","URL","hostname","toLowerCase","armHost","isArmApplication","dateFromCacheIsNull","getApplicationIdFromQueryParams","res","offerId","getMortgageCacheByApplicationId","result","setFormDataFromCache","setFilterFormDataFromCache","saveFilterFormToLocalStorage","saveFormToLocalStorage","getClientId","createApplication","urlParams","request","applicationId","post","apiUrl","params","searchParams","src","get","srcUrlParam","form","setValue","clientId","setItem","cpaClientUid","cpaClientUid2","loyalty","offerIdFromUrlParams","subscriber","getUrlParams","lowerCaseParams","key","CpaClientUid","cpaClientId","CpaClientId","CpaClientUid2","creditRemain","replace","CreditRemain","insuredBirthDate","insuredGender","contractNumber","mortgageStartDate","platformId","webMasterID","utmSource","utmMedium","utmMid","utmCampaign","utmContent","utmTerm","productType","successPaymentUrl","origin","returnClientChannelType","undefined","channelType","SourceUrl","source","utm","localTime","getLocalDateTimeString","abTestingGroups","alfaIdABTestingGroup","onYandexReachGoal","CommontResultError","NewResultError","setWidgetDisplayed","setWidgetDisplayedStatus","error","ErrorCommon","ErrorAppNew","closeNewRequest","SetStatusWidgetDisplayedResultError","ErrorSetStatusWidgetDisplayed","clientIdFromLocalStorage","generateClientId","message","logged","_errorMessages","postLocal","factory","providedIn","Content","HttpHeaders","DaData","Accept","Authorization","dadataKey","method","mode","body","suggestionAddress","query","part","filterFiasLevel","ADDRESS","from_bound","to_bound","CITY","ADDRESS_FULL","SURNAME","parts","NAME","PATRONYMIC","FMS_UNIT","options","count","headers","requestOptions","suggestions","item","i","id","ROUTES","PermitRouteService","validationService","isPermitRoute","isPermit","MainPage","Form","validationFilterFormPage","SettingsService","EventEmitter","inject","EMPTY","Subject","Subscription","debounceTime","switchMap","takeUntil","checkIsHiddenBaseAmount","MortgageService","BorrowerFormComponent","dadataService","partnerSystemName","loadProfessions","subscribeHouseNumber","destroy$","complete","_subscription","onSubmit","isSaveForm","formBorrower","markAllAsTouched","invalid","isBorrowerFormComplete","borrowerFormComplete","emit","changeBorrowerPassportIssuer","event","code","changeBorrowerDepartmentCode","name","borrowerAddress","borrowerHouseNumber","borrowerAddressFullDaData","controls","insuranceObjectFormGroup","insuranceObjectAddressSameAsInsurer","add","valueChanges","daData","changeInsuranceObjectAddress","enable","disable","insuranceBaseAmount","kadastr","insuranceObjectSquare","insuranceObjectSquareIsHidden","flat_area","insuranceBaseAmountIsHidden","flat_cadnum","kadastrIsHidden","flatArea","square_meter_price","price","Number","toString","toLocaleString","maximumFractionDigits","minimumFractionDigits","useGrouping","flat_price","mortgageService","getProfessions","response","professions","inputs","isBorrowerFormDisabled","isApproveOffersComplete","outputs","decls","vars","consts","template","ctx","conformToMask","MASKS","ContactFormComponent","phoneMask","formContacts","phone","find","systemName","mask","guide","conformedValue","email","sendContacts","isContactFormComplete","contactFormComplete","throwError","NavigationEnd","filter","FormComponent","navigationService","permitRouteService","navigateToBack","Event","checkArmApplication","armApplication$","events","routerEvent","scrollTo","top","behavior","getFormDataFromARM","getFormDataFromLocalStorage","showDefaultForm","selectedOffer","offers","isMortgageFormComplete","isPolicyFormComplete","isInsuranceFormComplete","isMortgageFormDisabled","isPolicyFormDisabled","isInsuranceFormDisabled","preventDefault","triggerNewGetOffers","inspectFormValid","mortgageFormComplete","policyFormComplete","getOffers","insuranceFormComplete","isGetOffers","isError","formServiceValue","formFilterServiceValue","repeatGetOffers","approveOffer","offer","status","isApproveOffer","saveMortgageApplication","repeatGetOffersAfterNotAprove","formData","getFormFromLocalStorage","patchValue","PdfDocViewComponent","checkIsHiddenObjectSquare","InsuranceObjectFormComponent","modalService","formInsuranceObject","subscribeForm","insuranceObjectFullAddressDaData","showPdfDocModal","initialState","bsModalRef","show","class","insuranceObjectAddress","insuranceHouseNumber","setDadataResponse","daDataRes","getDisabledStatus","OfflineFormComponent","MainComponent","contentService","bsModalService","Math","PI","radius","getDashArray","progress","circumference","startTimer","interval","step","timerDuration","intervalId","setInterval","clearInterval","checkFormDataFromLocalStorage","getFormValue","formFilterValue","formElement","nativeElement","scrollIntoView","block","isChangeCalculateFromEmail","startPaymentCountdown","calculateFromEmail","product","allMortgageProductList","bankId","mortgagePropertyTypes","mortgagePropertyType","calculateDefault","formValue","calculate","stopTimer","countdownInterval","length","paymentCountdown","timeParts","split","minutes","seconds","padStart","SelectObjectComponent","CONTENT","SelectCompanyFilterComponent","route","onlyPartnerBank","partnerBankId","getMortgageProductList","draftLink","additionalPolicyDraft","filterForm","borrowerFormGroup","weight","height","bankList","getBankList","getMortgageProducts","mortgageProductList","getUniqueInsurerTypeBankProducts","setDefaultBank","getParamsFromUrl","queryParams","productId","bank","selectBank","getFilterDataFromLocalStorage","filterProductList","setProductType","changeFormValue","selectedBank","filterData","getFilterFromLocalStorage","InsurerProductName","InsuredBirthDate","InsuredGender","ContractNumber","MortgageStartDate","valid","findProduct","isLoadingCalculate","MortgageFormComponent","formMortgage","mortgageBeginEndDate","mortgageEndDate","formPolicy","mortgagePolicyDate","multiYearValue","formOfflineService","formOffline","saveOfflineMortgage","hide","moment","PlicyDateFormComponent","isReadonlyMortgageEndDate","bankSystemName","getFormatDate","subtract","format","SuccessPageComponent","fb","URLSearchParams","search","isOfflineStatus","clientEmail","contacts","clientPhone","initPhoneNumber","group","updateOn","currentValue","optionSelected","copyLink","navigator","clipboard","writeText","paymentLink","isCopied","send","isSending","isSendError","sendEmail","sendSms","sendPaymentLink","isSent","phoneNumber","maskedPhone","substr","component","MortgageRoutingModule","FormsModule","ReactiveFormsModule","AlertModule","TooltipModule","forwardRef","Injector","UntypedFormControl","FormControlName","FormGroupDirective","NG_VALUE_ACCESSOR","NgControl","distinctUntilChanged","TypeaheadMatch","handleClickOutsideDropdown","triggerIframe","ctx_r17","ctx_r25","AutocompleteComponent","injector","renderer","injectedControl","control","getControl","daDataControlName","daDataControl","parent","initPropertyControl","suggestionPart","controlIsSuggestion","ngDoCheck","injectedControlName","propertyControl","propertyControls","validation","messages","label","placeholder","showMask","inputmode","typeaheadOptionField","idKeyName","typeaheadMinLength","setControlValidation","closed","typeaheadAsync","asyncTypeaheadList","observer","searchControl","getSuggestionData","subjectDaData","writeValue","selected","typeaheadList","emitEvent","filteredList","onChange","onTouched","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","selectItem","setTimeout","Object","assign","typeaheadOnSelect","focusEvent","target","dispatchEvent","isFocus","blurEvent","reset","markAsTouched","findValue","trim","findValueSearchControl","findValueParentControl","resetControl","inputElement","focus","filterList","indexOf","getHeightControl","textarea","setStyle","scrollHeight","adjustTextareaHeight","useExisting","BsDatepickerDirective","defineLocale","ruLocale","FormDateFieldComponent","onScrollEvent","localeService","use","locale","bsConfig","showWeekNumbers","dateMask","inputControl","cleanValue","maxDate","toDate","policyStartDateMaxOffsetDaysDate","minDate","minDateYear","isReadonly","onlySelf","dateString","date","inputDate","blurControl","focusDateControl","changeDate","formattedDate","FormFieldErrorComponent","required","errors","controlErrors","DEFAULT_MESSAGES","customValidation","arrays","keys","Array","isArray","concat","apply","createNumberMask","maskProperty","prefix","suffix","includeThousandsSeparator","thousandsSeparatorSymbol","allowDecimal","decimalLimit","FormNumberFieldComponent","decimalSeparator","postfix","s","pattern","numericThousandSeparator","numericMaxLength","maxLength","isHidden","decimalSymbol","requireDecimal","allowNegative","allowLeadingZeroes","integerLimit","isDot","touched","untouched","isFieldValid","field","onKeyDown","input","insertedChar","slice","strWithoutPostfix","setSelectionRange","numb","selectionStart","selectionEnd","features","NG_VALIDATORS","FormTextFieldComponent","validate","c","digits","charPositionValue","textControl","LoaderOfferComponent","isPaymentCountdownStarted","OfferItemComponent","cd","getMortgagePaymentLink","getPreapprovePremiumAmount","floor","preapprovePremiumAmount","premiumAmount","getCreditRemainAmount","selectOffer","isRepeatOffers","markAsUntouched","paymentLinkIsEmpty","calculateAprove","isDraftLoader","draft","policyDraft","detectChanges","mortgagePaymentLink","setClickForDocs","markForCheck","payment","clickPay","open","openDraft","openAdditionalDraft","elements","querySelectorAll","element","ProgressCircleComponent","ngOnChanges","changes","updateCountdownTime","resetTimer","countdownTime","remainingTime","SelectedOfferComponent","alertProductProperty","alertProductLife","alertProductLifeAndProperty","clearMask","index","DateDirective","navigationKeys","ctrlKey","metaKey","hostBindings","IsNumericDirective","el","elem","getValidText","currentPosition","getCaretPosition","maxPosition","setCaretPosition","blur","isInPostfixPart","maxlength","isInDecimalPart","join","checkDecimalMaxPlaces","noSpaces","match","onInput","decimalPlaces","indexFromValue","position","createTextRange","range","move","select","MortgageObjectsEnum","sizeWindow","modalContent","offsetHeight","dropdownElm","frameHeight","targetElement","closest","JSON","stringify","utm_source","utm_medium","utm_campaign","utm_content","utm_term","utm_mid","TextMaskHelper","adjustCaretPosition","fieldId","getElementById","getDate","maskedValue","isDash","getYear","driverLicense","removeMask","translateChar","char","unmask","toPtsFormat","toVinFormat","FormControl","UntypedFormGroup","Validators","FormFilterService","validators","initMortgageObjectsList","validateAllFormFields","formGroup","markAsPristine","mortgageObjects","entries","bankProducts","uniqueInsurerTypes","uniqueBankProducts","filterDataFromLocalStorage","parse","insured","birthDate","mortgageLoan","insurerProductId","FormOfflineService","offlineFormFirstName","offlineFormLastName","offlineFormMiddleName","city","PropertyControls","FormService","privacy","requiredTrue","borrower","borrowerFirstName","borrowerLastName","borrowerMiddleName","borrowerBirthDate","borrowerPassportLicense","borrowerPassportDate","borrowerAddressDaData","borrowerGender","borrowerDepartmentCode","borrowerPassportIssuer","borrowerPassportIssuerDadata","borrowerBirthPlace","borrowerProfession","professionId","highPressure","lowPressure","mortgage","mortgageCreditRemain","mortgageWithoutCreditNumber","mortgageCreditNumber","mortgageBeginDate","creditRate","withRefusalRate","loanIssueAddress","loanIssueAddressDaData","multiYear","insuranceObject","insuranceObjectAddressDaData","insuranceObjectBuiltYear","floorCount","monthlyPayment","ownershipLessThreeYears","ownershipRestrictDoc","hasGas","withWood","loanAgreementNumber","loanAgreementEndDate","hasIllegalRedevelopment","mortgageObject","ownershipConfirmDoc","roomsCount","hasOwnership","insurer","insurerFirstName","insurerLastName","insurerMiddleName","insurerBirthDate","passportLicense","insurerPassportDate","insurerCity","insurerAddressDaData","insurerIsJuridical","smsCode","disabled","checkValidationDynamicFields","fields","productRestrictions","birthPlace","profession","mortgageBeginEndDateValue","mortgageStartDateValue","policyStartDateMaxOffsetDays","agreements","formDataFromLocalStorage","contactsFormGroup","insurerFormGroup","mortgageFormGroup","mortgagePolicyDateFormGroup","addressSameAsInsurer","matchAddress","passport","registrationAddressData","fullAddressString","extractedAddress","flat","addressData","builtYear","square","baseAmount","policyStartDate","withoutContractNumber","firstName","lastName","middleName","passportSeries","passportNumber","passportIssueDate","passportIssuer","departmentCode","addressAsString","handleError","Inject","baseUrl","_hostUrl","hostUrl","_baseUrl","responseType","relativeUrl","logResponse","getWithOptions","getLocal","getWithOptionsLocal","__param","intercept","handle","ModalService","modalRef","openModal","config","_combine","onHide","reason","_reason","onHidden","expand","last","delay","GetMortgageProductsResultError","ErrorGetMortgageProducts","GetBanksResultError","ErrorGetBanks","getAppInfo","appStatus","preapproveMortgageApplication","filterUniqueOffers","allOffersReceived","selectedOfferInsurerType","insurerType","offersMap","Map","has","set","splice","seen","Set","getProductDetails","ProductId","GetProductDetailsResultError","ErrorGetProductDetails","InsurerProductId","MortgagePropertyType","MortgageObjectPararms","WithoutCreditNumber","WithoutOwnership","WithWood","WithGas","WithIllegalRedevelopment","PreapproveMortgageApplicationResultError","ErrorPreapproveMortgageApplication","GetOffersResultError","ErrorGetOffers","SelectOfferResultError","ErrorSelectOffer","replaceDate","getMortgageApplicationRequest","SaveMortgageApplicationResultError","Error","ErrorSaveMortgageApplication","approveMortgageApplication","isSelectedOfferInRes","approvedOffer","AddressData","policy","MortgageLoan","BankId","CreditRate","CreditRateRefusal","MortgageEndDate","MonthlyPayment","hasNoApartment","mortgageObjectPararms","withoutCreditNumber","withoutOwnership","withGas","withIllegalRedevelopment","loanissueaddress","enabled","daDataAddress","Insured","Height","Weight","LowPressure","HighPressure","Phone","sanitizePhoneNumber","Email","buildYear","ApproveMortgageOfferResultError","ErrorApproveMortgageOffer","getPaymentLink","isProcessing","skipNotification","GetMortgagePaymentLinkResultError","ErrorGetMortgagePaymentLink","sms","SetStatusBuyButtonPressedResultError","ErrorSetStatusBuyButtonPressed","emailFromForm","phoneFromForm","SaveContactsResultError","ErrorSaveContacts","applicationData","applicationStatus","GetApplicationInfoResultError","ErrorGetApplicationInfo","sanitizedNumber","NavigationService","queryParamsHandlingValue","relativeTo","changeQueryParams","ValidationService","values","validName","min","validValue","max","minLength","RegExp","passportDate","daDataRequired","daDataAddressHouseFlatNumber","numberValidator","insuranceObjectBuiltYearValidator","maxDecimal","setValidators","dependedControlName","fc","isValid","isAfter","experienceDate","updateValueAndValidity","experienceStartDate","ignore","birthDateFieldName","birthDateValue","experienceStartYear","year","productionYear","stsDate","ptsDate","ePtsDate","birthdateFieldName","isBefore","thirtyYearsAgo","mortgageBeginDateControlName","mortgageBeginDateControl","daDataFieldName","cityDaData","house","errorCode","isValidCode","fieldName","isNumber","test","invalidNumber","currentYear","Date","getFullYear","stringNumber","YandexMetrikaService","ymTarget","goalParams","yandexMetrika","yandexMetrikaPartner","TypeaheadModule","TextMaskModule","HttpClientModule","ModalModule","RatingModule","PdfViewerModule","RouterLink","environmentProd","production","mock","routerLogging","carInfoApi","cacheService","__NgCli_bootstrap_1","bootstrapModule","catch","err"],"sourceRoot":"webpack:///","x_google_ignoreList":[82]}