();\n themes = [\n {\n value: \"default\",\n name: \"Light\"\n },\n {\n value: \"dark\",\n name: \"Dark\"\n },\n {\n value: \"cosmic\",\n name: \"Cosmic\"\n },\n {\n value: \"corporate\",\n name: \"Corporate\"\n }\n ];\n\n constructor(\n private themeService: NbThemeService,\n private nbMenuService: NbMenuService,\n private sidebarService: NbSidebarService,\n private dialogService: NbDialogService,\n public oktaAuth: OktaAuthService,\n private router: Router\n ) {}\n\n async ngOnInit() {\n /***\n * Place to change the application theme\n * **/\n\n this.changeTheme(this.themes[0].value);\n this.themeService\n .onThemeChange()\n .pipe(\n map(({ name }) => name),\n takeUntil(this.destroy$)\n )\n .subscribe(themeName => (this.currentTheme = themeName));\n }\n changeTheme(themeName: string) {\n this.themeService.changeTheme(themeName);\n }\n toggleSidebar() {\n this.sidebarService.toggle(true, 'left');\n return false;\n }\n\n\n\n}\n","\n \n \n \n \n \n \n
\n \n \n \n \n\n","import { Component, OnInit } from '@angular/core';\nimport { NbMenuItem, NbSidebarService } from '@nebular/theme';\nimport { ThemeService } from '@app/service/theme.service';\nimport { NbMenuService } from '@nebular/theme';\nimport { GlobalService } from '@app/service/global.service';\nimport { QuickQuote } from '@data/schema';\nimport { occupancy } from '@data/schema/quote-constants';\nimport { employment } from '@data/schema/quote-constants';\nimport { transaction } from '@data/schema/quote-constants';\n\n@Component({\n selector: 'app-quickquote-layout',\n templateUrl: './quickquote-layout.component.html',\n styleUrls: ['./quickquote-layout.component.scss'],\n providers: [NbSidebarService]\n})\nexport class QuickquoteLayoutComponent implements OnInit {\n constructor(\n private themeService: ThemeService,\n private menuService: NbMenuService,\n private globalService: GlobalService,\n private sidebarService: NbSidebarService\n ) {}\n public theme = 'my-light-theme';\n private globalQQ: QuickQuote;\n menuItems: NbMenuItem[] = [\n {\n title: 'Property Location',\n link: '/quickquote/property-location'\n },\n {\n title: 'Transaction',\n link: '/quickquote/transaction'\n },\n {\n title: 'Occupancy',\n link: '/quickquote/occupancy'\n },\n {\n title: 'Employment',\n link: '/quickquote/employment'\n },\n {\n title: 'Income Documentation',\n link: '/quickquote/income-documentation'\n },\n {\n title: 'Property Information',\n link: '/quickquote/property-info'\n },\n {\n title: 'Property Value',\n link: '/quickquote/property-value'\n },\n {\n title: 'Requested Loan Amount',\n link: '/quickquote/purchase-loan-amount'\n },\n {\n title: 'Estimated Credit Score',\n link: '/quickquote/credit-score'\n },\n {\n title: 'Mortgage Insurance',\n link: '/quickquote/mortgage-insurance'\n },\n {\n title: 'Tax and Insurance Escrows',\n link: '/quickquote/tax-insurance-escrows'\n },\n {\n title: 'Pre-Payment Penalty',\n link: '/quickquote/pre-payment-penalty'\n },\n {\n title: 'Request Rate Quote',\n link: '/quickquote/request-rate-quote'\n },\n {\n title: 'Search Results',\n link: '/quickquote/search-results'\n },\n {\n title: 'Product Details',\n link: '/quickquote/product-details'\n }\n\n ];\n\n ngOnInit() {\n this.globalService.getQuickQuote().subscribe(quickQuote => {\n this.globalQQ = quickQuote;\n });\n this.themeService.setDarkTheme(false);\n\n this.themeService.getDarkTheme().subscribe(theme => {\n this.theme = theme ? 'my-dark-theme' : 'my-light-theme';\n });\n }\n\n onActivate(event) {\n this.menuItems = this.menuItems.map(menuItem => {\n if (this.globalQQ) {\n if (\n menuItem.title === 'Income Documentation' &&\n (this.globalQQ.employmentType === employment.RETIRED ||\n this.globalQQ.employmentType === employment.WORK_FOR_COMPANY)\n ) {\n menuItem.hidden = true;\n } else if (\n menuItem.title === 'Property Value' &&\n this.globalQQ.transactionType === transaction.PURCHASE\n ) {\n menuItem.hidden = true;\n } else if (menuItem.title === 'Requested Loan Amount') {\n if (this.globalQQ.transactionType === transaction.PURCHASE) {\n menuItem.link = '/quickquote/purchase-loan-amount';\n } else {\n menuItem.link = '/quickquote/refinance-loan-amount';\n }\n } else if (\n menuItem.title === 'Mortgage Insurance' &&\n !this.globalService.isMIMandatory()\n ) {\n menuItem.hidden = true;\n } else if (\n menuItem.title === 'Pre-Payment Penalty' &&\n this.globalQQ.occupancyType !== occupancy.INVESTMENT\n ) {\n menuItem.hidden = true;\n } else if (\n menuItem.title === 'Tax and Insurance Escrows' &&\n !this.globalService.isTaxAndEscrowsMandatory()\n ) {\n menuItem.hidden = true;\n } else {\n menuItem.hidden = false;\n }\n }\n return menuItem;\n });\n }\n}\n","\n\n\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-sales-footer',\n templateUrl: './sales-footer.component.html',\n styleUrls: ['./sales-footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SalesFooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n\n\n\t
\n\t\t
\n\t\t\t

\n\t\t
\n\t\t
\n\t\t
\n\t\n\t\n\t\n\t
\n\n\n\n
\n\n\n\n\n\n\n\t\n\t
\n\t\t
\n\t\t\t

\n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\n\t
\n\t\n\t\n\t\n\t
\n
\n\n\n\n\n\n\n\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport {NbDialogService, NbMenuService, NbSidebarService, NbThemeService} from '@nebular/theme';\nimport {OktaAuthService} from '@okta/okta-angular';\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'app-sales-header',\n templateUrl: './sales-header.component.html',\n styleUrls: ['./sales-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SalesHeaderComponent implements OnInit {\n\n constructor(\n private themeService: NbThemeService,\n private nbMenuService: NbMenuService,\n private sidebarService: NbSidebarService,\n private dialogService: NbDialogService,\n public oktaAuth: OktaAuthService,\n private router: Router\n ) {}\n\n ngOnInit(): void {}\n toggleSidebar() {\n this.sidebarService.toggle(true, \"left\");\n return false;\n }\n\n}\n","\n\t\n\t\t\n\t\n\t\n\t\n\t\t\n\t\t\t\n\t\t
\n\t\n\t\n\t\t\n\t\n\n\n\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport {NbMenuItem, NbSidebarService} from '@nebular/theme';\nimport {ThemeService} from '@app/service/theme.service';\n\n@Component({\n selector: 'app-sales-layout',\n templateUrl: './sales-layout.component.html',\n styleUrls: ['./sales-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SalesLayoutComponent implements OnInit {\n public theme = \"my-light-theme\";\n\n menuItems: NbMenuItem[] = [\n {\n title: \"New Company\",\n icon: \"briefcase-outline\",\n link: \"/company/company-initial\"\n }\n ];\n\n constructor(\n private themeService: ThemeService,\n private sidebarService: NbSidebarService\n ) {}\n\n ngOnInit() {}\n\n}\n","\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n\n\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport {NbMenuItem, NbSidebarService} from \"@nebular/theme\";\nimport {ThemeService} from \"@app/service/theme.service\";\n\n@Component({\n selector: 'app-servicing-layout',\n templateUrl: './servicing-layout.component.html',\n styleUrls: ['./servicing-layout.component.scss'],\n providers: [NbSidebarService],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class ServicingLayoutComponent implements OnInit {\n\n public theme = 'my-light-theme';\n\n menuItems: NbMenuItem[] = [\n {\n title: 'One time ACH Payment',\n icon: 'briefcase-outline',\n link: '/servicing/initial-payment/payment'\n },\n {\n title: 'Payment History',\n icon: 'undo-outline',\n link: '/servicing/payment-history/history'\n },\n\n ];\n\n constructor(\n private themeService: ThemeService,\n private sidebarService: NbSidebarService\n ) {}\n\n ngOnInit() {\n\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoginComponent } from './page/login/login.component';\nimport { ForgotComponent } from './page/forgot/forgot.component';\nimport { SharedModule } from '@shared/shared.module';\n\nimport { AuthRoutingModule } from './auth.routing';\nimport { NbCardModule } from '@nebular/theme';\nimport { CorrespondenceLoginComponent } from './page/correspondence-login/correspondence-login.component';\n\n@NgModule({\n declarations: [LoginComponent, ForgotComponent, CorrespondenceLoginComponent],\n imports: [CommonModule, AuthRoutingModule, SharedModule, NbCardModule]\n})\nexport class AuthModule {}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { LoginComponent } from './page/login/login.component';\nimport { ForgotComponent } from './page/forgot/forgot.component';\nimport {CorrespondenceLoginComponent} from '@modules/auth/page/correspondence-login/correspondence-login.component';\n\nconst routes: Routes = [\n {\n path: 'login',\n component: LoginComponent\n },\n {\n path: 'forgot',\n component: ForgotComponent\n },\n {\n path: 'correspondence-login',\n component: CorrespondenceLoginComponent\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AuthRoutingModule {}\n","\n","import { Component, OnInit } from \"@angular/core\";\nimport { Router, NavigationStart } from \"@angular/router\";\nimport { environment } from \"@env\";\n\nimport { OktaAuthService } from \"@okta/okta-angular\";\nimport * as OktaSignIn from \"@okta/okta-signin-widget\";\n\n@Component({\n selector: \"app-correspondence-login\",\n templateUrl: \"./correspondence-login.component.html\",\n styleUrls: [\"./correspondence-login.component.scss\"]\n})\nexport class CorrespondenceLoginComponent implements OnInit {\n signIn;\n widget = new OktaSignIn({\n baseUrl: environment.OKTA_ISSUER,\n authParams: {\n responseType: 'id_token',\n responseMode: 'okta_post_message',\n pkce: true,\n scopes: ['openid', 'profile', 'email']\n\n\n },\n logo:'assets/images/resmac_newlogo.png'\n\n });\n\n\n\n constructor(oktaAuth: OktaAuthService, public router: Router) {\n this.signIn = oktaAuth;\n }\n\n ngOnInit() {\n this.widget.renderEl(\n {\n el: \"#okta-signin-container\"\n },\n res => {\n if (res.status === \"SUCCESS\") {\n this.signIn.loginRedirect(\"correspondence/home\", {\n sessionToken: res.session.token\n });\n // this.widget.hide();\n }\n },\n err => {\n throw err;\n }\n );\n }\n}\n\n","\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-forgot',\n templateUrl: './forgot.component.html',\n styleUrls: ['./forgot.component.css']\n})\nexport class ForgotComponent {}\n","\n\n\n\n\n","import { Component, OnInit } from \"@angular/core\";\nimport { Router, NavigationStart } from \"@angular/router\";\nimport { environment } from \"@env\";\n\nimport { OktaAuthService } from \"@okta/okta-angular\";\nimport * as OktaSignIn from \"@okta/okta-signin-widget\";\n\n@Component({\n selector: \"app-login\",\n templateUrl: \"./login.component.html\",\n styleUrls: [\"./login.component.scss\"]\n})\nexport class LoginComponent implements OnInit {\n signIn;\n widget = new OktaSignIn({\n baseUrl: environment.OKTA_ISSUER,\n authParams: {\n responseType: 'id_token',\n responseMode: 'okta_post_message',\n pkce: true,\n scopes: ['openid', 'profile', 'email']\n\n\n },\n logo:'assets/images/resmac_newlogo.png'\n\n });\n\n\n\n constructor(oktaAuth: OktaAuthService, public router: Router) {\n this.signIn = oktaAuth;\n }\n\n ngOnInit() {\n try {\n this.widget.renderEl(\n {\n el: \"#okta-signin-container\"\n },\n res => {\n if (res.status === \"SUCCESS\") {\n this.signIn.loginRedirect(\"corporate/home\", {\n sessionToken: res.session.token\n });\n // this.widget.hide();\n }\n },\n err => {\n throw err;\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n}\n","import { ErrorHandler, Injectable, NgZone } from \"@angular/core\";\nimport { MessageService } from \"./message.service\";\nimport { Message } from \"./message.model\";\n\n@Injectable()\nexport class MessageErrorHandler implements ErrorHandler {\n\n constructor(private messageService: MessageService, private ngZone: NgZone) {\n }\n\n handleError(error) {\n let msg = error instanceof Error ? error.message : error.toString();\n this.ngZone.run(() => this.messageService\n .reportMessage(new Message(msg, true)), 0);\n }\n}\n","export class Message {\n\n constructor(public text: string,\n public error: boolean = false) {\n\n\n }\n}\t\n","import { NgModule, ErrorHandler } from \"@angular/core\";\n\nimport { MessageComponent } from \"./message.component\";\nimport { MessageService } from \"./message.service\";\nimport { MessageErrorHandler } from \"./errorHandler\";\nimport {SharedModule} from \"@shared/shared.module\";\n\n@NgModule({\n imports: [ SharedModule],\n declarations: [MessageComponent],\n exports: [MessageComponent],\n providers: [MessageService,\n { provide: ErrorHandler, useClass: MessageErrorHandler }]\n})\nexport class MessageModule { }\n","import { Injectable } from \"@angular/core\";\nimport { Message } from \"./message.model\";\nimport {BehaviorSubject, Observable} from \"rxjs\";\n@Injectable()\nexport class MessageService {\n private subject = new BehaviorSubject(new Message(\"\",false));\n reportMessage(msg: Message) {\n\n this.subject.next(msg);\n\n }\n\n get messages(): Observable {\n return this.subject;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatListModule } from '@angular/material/list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\n\n@NgModule({\n declarations: [],\n imports: [\n MatButtonModule,\n MatToolbarModule,\n MatMenuModule,\n MatSelectModule,\n MatTabsModule,\n MatInputModule,\n MatProgressSpinnerModule,\n MatChipsModule,\n MatSidenavModule,\n MatCheckboxModule,\n MatCardModule,\n MatListModule,\n MatIconModule,\n MatTooltipModule,\n MatSnackBarModule,\n MatSlideToggleModule,\n MatDividerModule,\n MatSliderModule,\n MatDatepickerModule,\n MatNativeDateModule\n ],\n exports: [\n MatButtonModule,\n MatToolbarModule,\n MatMenuModule,\n MatSelectModule,\n MatTabsModule,\n MatInputModule,\n MatProgressSpinnerModule,\n MatChipsModule,\n MatSidenavModule,\n MatCheckboxModule,\n MatCardModule,\n MatListModule,\n MatIconModule,\n MatTooltipModule,\n MatSnackBarModule,\n MatSlideToggleModule,\n MatDividerModule,\n MatSliderModule,\n MatDatepickerModule,\n MatNativeDateModule\n ]\n})\nexport class MaterialModule {}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { RouterModule } from \"@angular/router\";\n\nimport { MaterialModule } from \"./material.module\";\n\nimport { NgbModule } from \"@ng-bootstrap/ng-bootstrap\";\nimport { NgxMasonryModule } from \"ngx-masonry\";\n\nimport {\n FontAwesomeModule,\n FaIconLibrary\n} from \"@fortawesome/angular-fontawesome\";\n\nimport { faAsterisk, faUserCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { NgxMaskModule } from \"ngx-mask\";\nimport { ControlMessagesComponent } from \"./component/control-messages/control-messages.component\";\nimport { SpinnerComponent } from \"./component/spinner/spinner.component\";\nimport { AgmCoreModule } from \"@agm/core\";\nimport { SafeHtmlPipe } from \"@shared/component/pipe/safepipe\";\nimport { GaugeModule } from \"angular-gauge\";\nimport {\n NbAccordionModule,\n NbAlertModule,\n NbButtonModule,\n NbCardModule, NbChatModule,\n NbCheckboxModule,\n NbIconModule,\n NbInputModule,\n NbLayoutModule,\n NbRadioModule,\n NbSelectModule,\n NbSidebarModule,\n NbSpinnerModule,\n NbTabsetModule,\n NbToggleModule,\n NbTooltipModule\n} from '@nebular/theme';\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { MatButtonModule } from \"@angular/material/button\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n\n NgxMaskModule,\n NgbModule,\n FontAwesomeModule,\n AgmCoreModule.forRoot({\n apiKey: \"AIzaSyDonQOow4jOPJE-Ch129zQ0qpLEUceCXQ4\"\n }),\n GaugeModule.forRoot(),\n NbCardModule,\n MatDialogModule,\n MatButtonModule,\n NbButtonModule,\n NbAlertModule,\n NbIconModule,\n NbInputModule,\n NbRadioModule,\n NbSelectModule,\n NbSpinnerModule,\n NbTooltipModule,\n NbAlertModule,\n NbLayoutModule,\n NbSidebarModule,\n NbTabsetModule,\n NbToggleModule,\n NbCheckboxModule,\n NbAccordionModule,\n NbChatModule,\n ],\n declarations: [ControlMessagesComponent, SpinnerComponent, SafeHtmlPipe],\n exports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n NbCardModule,\n NbSpinnerModule,\n MaterialModule,\n\n NgbModule,\n FontAwesomeModule,\n NgxMasonryModule,\n NgxMaskModule,\n\n ControlMessagesComponent,\n SpinnerComponent,\n SafeHtmlPipe,\n GaugeModule,\n NbChatModule,\n ]\n})\nexport class SharedModule {\n constructor(library: FaIconLibrary) {\n library.addIcons(faAsterisk);\n library.addIcons(faUserCircle);\n }\n}\n","export default {\n 'npm_package_version': '1.0.0'\n};\n ","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\n// `.env.ts` is generated by the `npm run env` command\nimport env from \"./.env\";\n\nexport const environment = {\n production: false,\n version: env.npm_package_version + \"-dev\",\n serverUrl: \"/api\",\n envName: \"DEV\",\n API_URL: \"https://prod1lqbbff.resmac.com\",\n LQB_API_URL: \"https://prod1lqbbff.resmac.com\",\n LQB_API2_URL: \"https://prod2lqbbff.resmac.com\",\n OKTA_ISSUER: \"https://dev-830016.okta.com/oauth2/default\",\n OKTA_REDIRECT_URI: window.location.origin + \"/implicit/callback\",\n OKTA_CLIENT_ID: \"0oalw8p05WcWvdUF04x6\",\n GOOGLE_ANALYTICS_ID: \"\",\n is_taxonomy_static: false,\n is_lp_service_static: false,\n recapture_site_key: \"6LfZHuMUAAAAAHERjPWL44BWLdtm6Q6A2qNkgqMm\",\n ENCRYPT_PUBLIC_KEY:\n \"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCWv+wpfXxZbXFxAwOxTUZHevyb4qQbn48OLcouYgztTxm3uTAMY2sAics1fFY4weCLgkM1ma2cDYcEaXL6dhc4CENOJbym1oqhw4fNNUliAcGJqzh+Ak81INA1eWOhzRAwPXSBNvB46y0ROkA8WkJMluozMEctO+WlU9/6XZ7tewIDAQAB\",\n BULK_PRICING_SAMPLE_TAPE_LINK:\n \"https://resmac-corporate.s3.amazonaws.com/Agency-Bulk-Pricing-Sheet+(1).xlsx\",\n COMPANY_APP_BASE_URL: \"https://corp.resmac.com/company\"\n};\n\n/*\n * In development mode, to ignore zone related error stack frames such as\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\n * import the following file, but please comment it out in production mode\n * because it will have performance impact when throw error\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from '@env';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch(err => console.log(err));\n","import { Action, createAction, props } from \"@ngrx/store\";\nimport { LoanApplication } from \"@data/schema/loan-appication/loan-application\";\n\nexport const loadLoanApplication = createAction(\n \"[LoanApplication List] Load Loan Application\"\n);\nexport const loadLoanApplicationSuccess = createAction(\n \"[Loan Application List] Load Loan Application Success\",\n props<{ loanApplications: LoanApplication[] }>()\n);\nexport const loadLoanApplicationError = createAction(\n \"[Photo List] Load Loan Application Error\",\n props<{ isError: boolean }>()\n);\n\nexport const updateLoanApplication = createAction(\n \"[Photo List] Like Photo\",\n props<{ loanApplication: LoanApplication }>()\n);\nexport const updateLoanApplicationSuccess = createAction(\n \"[Loan Application List] Update Loan Application Success\",\n props<{ loanApplication: LoanApplication }>()\n);\nexport const updateLoanApplicationError = createAction(\n \"[Photo List] Update Loan Application Error\"\n);\n\nexport const loadLoanApplicationById = createAction(\n \"[Loan Application] Load Loan Application By Id\",\n props<{ id: string }>()\n);\nexport const loadLoanApplicationByIdSuccess = createAction(\n \"[Loan Application List] Load Loan Application By Id\",\n props<{ loanApplications: LoanApplication }>()\n);\nexport const loadLoanApplicationByIdError = createAction(\n \"[Loan Application] Load Loan Application By Id Error\"\n);\n","import { Actions, createEffect, Effect, ofType } from \"@ngrx/effects\";\nimport { LoanApplicationService } from \"../app/data/service/loanapplication.service\";\nimport { Injectable } from \"@angular/core\";\nimport {\n updateLoanApplication,\n loadLoanApplication,\n loadLoanApplicationError,\n loadLoanApplicationSuccess,\n updateLoanApplicationError,\n updateLoanApplicationSuccess,\n loadLoanApplicationById,\n loadLoanApplicationByIdError,\n loadLoanApplicationByIdSuccess\n} from \"./loanapplication.actions\";\nimport { catchError, map, switchMap, withLatestFrom } from \"rxjs/operators\";\n\n@Injectable()\nexport class LoanApplicationEffects {\n @Effect()\n loadLoanApplication$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadLoanApplication),\n switchMap(() =>\n this.loanApplicationService.getLoanApplication().pipe(\n map(loanApplications =>\n loadLoanApplicationSuccess({ loanApplications })\n ),\n catchError(() => [loadLoanApplicationError({ isError: true })])\n )\n )\n )\n );\n\n @Effect()\n loadLoanApplicationById$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadLoanApplicationById),\n switchMap((action: any) =>\n this.loanApplicationService.getLoanApplicationById(action.id).pipe(\n map(loanApplication =>\n updateLoanApplicationSuccess({ loanApplication })\n ),\n catchError(() => [loadLoanApplicationByIdError()])\n )\n )\n )\n );\n\n @Effect()\n updateLoanApplication$ = createEffect(() =>\n this.actions$.pipe(\n ofType(updateLoanApplication),\n switchMap(({ loanApplication }) =>\n this.loanApplicationService.updateLoanApplication(loanApplication).pipe(\n map(loanApplication =>\n updateLoanApplicationSuccess({ loanApplication })\n ),\n catchError(() => [updateLoanApplicationError()])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private loanApplicationService: LoanApplicationService\n ) {}\n}\n","import { Action, createReducer, on, State } from \"@ngrx/store\";\nimport {\n loadLoanApplicationByIdSuccess,\n loadLoanApplicationError,\n loadLoanApplicationSuccess,\n updateLoanApplicationSuccess\n} from \"./loanapplication.actions\";\nimport { LoanApplication } from \"../app/data/schema/loan-appication/loan-application\";\n\nexport interface LoanApplicationState {\n [id: string]: LoanApplication;\n}\n\nexport const loanApplicationFeatureKey = \"loanApplication\";\n\nexport interface LoanApplicationRootState {\n [loanApplicationFeatureKey]: LoanApplicationState;\n}\n\nconst initialState: LoanApplicationState = { loanApp: null };\n\nconst reducer = createReducer(\n initialState,\n on(loadLoanApplicationSuccess, (state, { loanApplications }) =>\n loanApplications.reduce(\n (acc, loanApplication) => ({\n ...acc,\n [loanApplication.id]: loanApplication\n }),\n {}\n )\n ),\n\n on(updateLoanApplicationSuccess, (state, { loanApplication }) => ({\n ...state,\n [loanApplication.id]: loanApplication\n }))\n);\n\nexport function loanApplicationReducer(\n state: LoanApplicationState | undefined,\n action: Action\n) {\n return reducer(state, action);\n}\n"],"sourceRoot":"webpack:///"}