{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/app-routing.module.ts","./landings/alfa-mlm/app/app.component.ts","./landings/alfa-mlm/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","./landings/alfa-mlm/success-page/success-page.component.ts","./landings/alfa/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","./landings/alfa-mlm/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","./landings/alfa-mlm/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.alfa-mlm.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 {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit, ViewChild,\r\n} from '@angular/core';\r\nimport {setTheme} from 'ngx-bootstrap/utils';\r\nimport {fromEvent, Observable, Subscription} from 'rxjs';\r\nimport {Title} from '@angular/platform-browser';\r\n\r\nimport {AppService} from \"src/app/core/services/app.service\";\r\nimport {finalize} from \"rxjs/operators\";\r\nimport {Router} from \"@angular/router\";\r\nimport Swiper, {Autoplay} from \"swiper\";\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: '../../../landings/alfa-mlm/app/app.component.html',\r\n styleUrls: ['../../../landings/alfa-mlm/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 // Показываем блок с картой лояльности\r\n public showLoyalty!: boolean;\r\n\r\n items = ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5', 'Slide 6', 'Slide 7', 'Slide 8'];\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
\r\n
\r\n \"Insapp\"\r\n
\r\n
\r\n\r\n
\r\n

Страхование ипотеки\r\n любого банка с выгодой\r\n до 80%

\r\n

Оформите страхование ипотеки с выгодой до 80% за счет разницы цен в страховых компаниях. Рассчитаете цену, выберите лучшее предложение и получите полис на e-mail.

\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n \"Ипотека\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n Выгодные условия.\r\n
\r\n
Цены в страховых компаниях выгодно отличаются. Разница между ценовыми предложениями достигает 80%
\r\n
\r\n
\r\n
\r\n Экономия времени.\r\n
\r\n
\r\n Оформление страховки происходит онлайн – готовый полис сразу придет Вам на почту.\r\n
\r\n
\r\n
\r\n
\r\n Надежность.\r\n
\r\n
\r\n Среди страховых компаний – самые надежные и проверенные. Будьте уверены – банк примет любой купленный на сайте полис.\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n Преимущества\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"Альфа\r\n
\r\n
\r\n Выгодные условия.\r\n
\r\n
\r\n Цены в страховых компаниях выгодно отличаются. Разница между ценовыми предложениями достигает 80%\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"Альфа\r\n
\r\n
\r\n Экономия времени.\r\n
\r\n
\r\n Оформление страховки происходит онлайн – готовый полис сразу придет Вам на почту.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"Альфа\r\n
\r\n
\r\n Надежность.\r\n
\r\n
\r\n Среди страховых компаний – самые надежные и проверенные. Будьте уверены – банк примет любой купленный на сайте полис.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n Как оформить полис\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Введите данные.\r\n
\r\n
\r\n Заполните поля для расчета - тип жилья, банк, остаток по ипотеке, дату рождения.\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Сравните предложения страховых.\r\n
\r\n
\r\n Выберите наиболее выгодное предложение.\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Оформите полис.\r\n
\r\n
\r\n Заполните все нужные данные, оплатите полис и сразу получите его на почту.\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n

Вопросы и ответы

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

\r\n \r\n

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

\r\n Ипотечное страхование — это защита заемщика от финансовых потерь и гарантия возврата долга банку в непредвиденных ситуациях. Если оформленная в ипотеку недвижимость или жизнь и здоровье заемщика пострадают, страховая компания закроет долг перед банком.\r\n При оформлении полиса страхования жизни и здоровья риск невыплаты долга банку снижается, и он готов предложить лучшие условия по ипотеке.\r\n

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

\r\n \r\n

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

Данная информация содержится в Кредитном договоре в разделе «Требования к заёмщикам». Согласно федеральному закону «Об ипотеке» заемщик обязан оформить страхование имущества.

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

\r\n \r\n

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

Для того чтобы внести изменения в оплаченный полис страхования, Вам необходимо связаться со страховой компанией, в который был оформлен полис.

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

\r\n \r\n

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

После оформления и оплаты полиса на Вашу электронную почту будет направлен оригинал полиса страхования, заявление на страхование, чек, подтверждающий факт оплаты страхового полиса. На ипотечную сделку потребуется предоставить: полис страхования, чек подтверждающий оплату полиса.

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

\r\n \r\n

\r\n
\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 Insapp\r\n
\r\n
Поддержка пользователей support@insapp.ru.
\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, OnDestroy, OnInit} from '@angular/core';\r\nimport { AppService } from 'src/app/core/services/app.service';\r\nimport { MortgageService } from 'src/app/shared/services/mortgage.service';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { FormService } from 'src/app/shared/services/form.service';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { ISaveMortgageApplicationResponce } from 'src/app/shared/interface/mortgage-application.interface';\r\nimport {ActivatedRoute} from \"@angular/router\";\r\nimport {YandexMetrikaService} from \"src/app/shared/services/yandex-metrika.service\";\r\n\r\n@Component({\r\n selector: 'app-success-page',\r\n templateUrl: '../../../landings/alfa/success-page/success-page.component.html',\r\n styleUrls: ['../../../landings/alfa/success-page/success-page.component.scss']\r\n})\r\nexport class SuccessPageComponent implements OnInit, OnDestroy {\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 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 route: ActivatedRoute,\r\n private readonly ym: YandexMetrikaService) {\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 // --------------------------------------------------------------------------\r\n // Инициализация\r\n public ngOnInit() {\r\n this.ym.onYandexReachGoal('SUCCESS_GOAL');\r\n this.route.queryParams.subscribe(params => {\r\n this.isOfflineStatus = params['status'] === 'offline';\r\n });\r\n }\r\n\r\n // Уничтожение\r\n public ngOnDestroy(): void {\r\n\r\n }\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","\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n \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 И поступит Вам на почту в течение 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 \r\n Ссылка скопирована в буфер обмена\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n Ссылка отправлена\r\n \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 pdfSrc: {\r\n alertProductProperty: 'http://www.sberbank.ru/common/img/uploaded/files/pdf/credit_org/tt_insur.pdf',\r\n alertProductLife: 'http://www.sberbank.ru/common/img/uploaded/files/pdf/pril_5_min_tr.pdf',\r\n alertProductLifeAndProperty1: 'http://www.sberbank.ru/common/img/uploaded/files/pdf/credit_org/tt_insur.pdf',\r\n alertProductLifeAndProperty2: 'http://www.sberbank.ru/common/img/uploaded/files/pdf/pril_5_min_tr.pdf'\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 Apartments = \"Апартаменты\"\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: 'f3a458d85af64377a3a3d4581df76b9f',\r\n partnerSystemName: 'alfaBank',\r\n partnerBankId: '772e9afd-c7b5-424c-8bfb-d5cd013282f9',\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","fromEvent","finalize","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","clientEmail","contacts","clientPhone","initPhoneNumber","group","updateOn","currentValue","optionSelected","isOfflineStatus","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","pdfSrc","alertProductLifeAndProperty1","alertProductLifeAndProperty2","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]}