{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/app-routing.module.ts","./landings/lovit/app/app.component.ts","./landings/lovit/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","./src/environments/environment.lovit.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 {AfterViewInit, 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\nimport Swiper, {Autoplay} from \"swiper\";\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: '../../../landings/lovit/app/app.component.html',\r\n styleUrls: ['../../../landings/lovit/app/app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy, AfterViewInit {\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 Swiper.use([Autoplay]);\r\n\r\n new Swiper(this.swiperRef.nativeElement, {\r\n slidesPerView: 2,\r\n speed: 8000,\r\n autoplay: {\r\n delay: 50,\r\n disableOnInteraction: false,\r\n },\r\n loop: false,\r\n breakpoints: {\r\n 1140: {\r\n slidesPerView: 8,\r\n slidesPerColumn: 1,\r\n loop: true,\r\n allowTouchMove: true,\r\n },\r\n 1000: {\r\n slidesPerView: 5,\r\n spaceBetween: 36,\r\n slidesPerColumn: 1,\r\n loop: true,\r\n allowTouchMove: true,\r\n },\r\n 767: {\r\n slidesPerView: 2,\r\n spaceBetween: 17,\r\n slidesPerColumn: 1,\r\n allowTouchMove: true,\r\n loop: true,\r\n }\r\n }\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 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 public scrollToForm(): void {\r\n const formElement = this.elementRef.nativeElement.querySelector('#mortgage-app');\r\n formElement.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n \"Ипотека\r\n \"Ипотека\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
Экономия до 4000 Р
\r\n

Цены в страховых компаниях отличаются. Рассчитаем полис в нескольких компаниях,\r\n чтобы вы могли купить страховку по выгодной цене

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
Банк примет полис
\r\n

Ваш банк примет любой купленный у нас полис. Его можно передать через сервис\r\n Домклик, по электронной почте или в отделении банка

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
Никакой комиссии
\r\n

Мы продаём полисы по ценам страховых компаний или ещё дешевле за счёт\r\n наших скидок

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \"Как\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Укажите свой банк, остаток долга, возраст и пол\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Сравните предложения и выберите лучшее\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Заполните анкету и оплатите полис\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Получите ваш полис на почту\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Зачем нужна страховка?\r\n
\r\n\r\n
\r\n
\r\n
\r\n \"...\"\r\n
\r\n
Страхование недвижимости
\r\n
Требуется, когда дом уже построили,
а вы получили право собственности.
\r\n Будут застрахованы только несущие
конструкции здания. Ремонт и отделка
включены не будут
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"...\"\r\n
\r\n
Комбинированный полис страхования
\r\n
Полис, который включает сразу страхование жилья и жизни заёмщика. Как правило,\r\n банки рекомендуют своим клиентам оформить именно этот вид страхования
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"...\"\r\n
\r\n
Страхование жизни
заёмщика
\r\n
Может потребоваться, если при оформлении ипотеки дом ещё не построен, и не получено\r\n право собственности. Будут застрахованы жизнь и здоровье заёмщика
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
FAQ
\r\n

\r\n Остались вопросы?\r\n

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

\r\n \r\n

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

\r\n Нужно обратиться в страховую, которая оформила полис.\r\n

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

\r\n \r\n

\r\n
\r\n
\r\n
    \r\n
  • Принять соответствующие меры по минимизации ущерба и сообщить о происшествии;
  • \r\n
  • Уведомить страховую компанию;
  • \r\n
  • Собрать документы по требованию страховой;
  • \r\n
\r\n

\r\n Для того, чтобы узнать дальнейшие действия после наступления страхового случая, обратитесь напрямую в\r\n свою страховую компанию.\r\n

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

\r\n \r\n

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

\r\n Страховая может отказать в выплате компенсации, если:\r\n

\r\n
    \r\n
  • заёмщик нарушил правила договора;
  • \r\n
  • в договоре не указан произошедший страховой случай;
  • \r\n
  • умышленно причинён вред имуществу или жизни и здоровью заёмщика.
  • \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

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

\r\n \r\n

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

\r\n Стоимость страхования жизни и здоровья зависит от пола и возраста заёмщика, а на стоимость страхования\r\n имущества влияет год постройки дома, наличие газа и другие факторы.\r\n

\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 {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\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 private destroy$ = new Subject();\r\n\r\n // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit(): void {\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}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \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","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.common.prod';\r\n\r\nexport const environment = {\r\n apiKey: '16b80b45f937452981fd8926aa458af3',\r\n partnerSystemName: 'base',\r\n partnerBankId: 'lovit',\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","Swiper","Autoplay","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","use","swiperRef","nativeElement","slidesPerView","speed","autoplay","delay","disableOnInteraction","loop","breakpoints","slidesPerColumn","allowTouchMove","spaceBetween","ngOnDestroy","subscriptions","forEach","subscription","unsubscribe","isAdmin","localStorage","getItem","onlineEvent","window","offlineEvent","push","e","reloadPage","connectionStatus","location","reload","scrollToForm","formElement","scrollIntoView","behavior","selectors","viewQuery","ctx","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","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","inputs","isBorrowerFormDisabled","isApproveOffersComplete","outputs","decls","vars","consts","template","conformToMask","MASKS","ContactFormComponent","mortgageService","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","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","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","getProfessions","professions","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","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","response","logResponse","getWithOptions","getLocal","getWithOptionsLocal","__param","intercept","handle","ModalService","modalRef","openModal","config","_combine","onHide","reason","_reason","onHidden","expand","last","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]}