{"version":3,"file":"default-src_app_components_form-groups_employer-group_employer-group_module_ts.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMwB;AAM4B;;;;;;;;;;;ICXlD,sEAAyB;IACvB,kFAAoE;IAEpE,wEAAgC;IAAA,2EAAgB;IAAA,4DAAK;IAErD,iFAAkE;IAIpE,4DAAM;;;IARe,0DAA4B;IAA5B,4FAA4B;IAI7B,0DAA4B;IAA5B,4FAA4B;IAC5B,0DAA4B;IAA5B,4FAA4B;;ADUlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAMI,MAAM,sBAAsB;IAuBjC,YAAoB,WAAwB,EAAU,MAAc;QAAhD,gBAAW,GAAX,WAAW,CAAa;QAAU,WAAM,GAAN,MAAM,CAAQ;QAtB3D,oBAAe,GAEpB,EAAE,CAAC;QACE,sBAAiB,GAEtB,EAAE,CAAC;QAWP,oBAAe,GAAgC,IAAI,CAAC;QACpD,gBAAW,GAAG,KAAK,CAAC;QACpB,eAAU,GAAG,KAAK,CAAC;QAEX,kBAAa,GAAwB,EAAE,CAAC;QAG9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAC7C,CAAC,IAAiC,EAAE,EAAE;;YACpC,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,eAAe,qBAAQ,IAAI,CAAE,CAAC;gBAEnC,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW;oBACpC,CAAC,CAAC,uBAAuB;oBACzB,CAAC,CAAC,qBAAqB,CAAC;gBAC1B,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW;oBACxC,CAAC,CAAC,6BAA6B;oBAC/B,CAAC,CAAC,2BAA2B,CAAC;gBAEhC,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;oBACvB,+CAA+C;oBAC/C,IAAI,CAAC,UAAU;wBACb,WAAI,CAAC,aAAa,CAAC,0CAAE,gBAAgB;4BACnC,uGAA+B;4BACjC,WAAI,CAAC,aAAa,CAAC,0CAAE,gBAAgB;gCACnC,oGAA4B,CAAC;oBAEjC,IAAI,IAAI,CAAC,UAAU,EAAE;wBACnB,mEAAmE;wBACnE,IAAI,CAAC,eAAe,CAClB,IAAI,CAAC,UAAU,EACf,WAAI,CAAC,aAAa,CAAC,0CAAE,gBAAgB;4BACnC,oGAA4B,CAC/B,CAAC;wBAEF,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,QAAQ,CAC1C,WAAI,CAAC,aAAa,CAAC,0CAAE,WAAW,KAAI,EAAE,CACvC,CAAC;qBACH;yBAAM;wBACL,MAAM,OAAO,GAAG,gBAAI,CAAC,aAAa,CAAC,0CAAE,SAAS,mCAAI,EAAE,CAAC;wBAErD,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvB,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;wBACxC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;qBAC/D;iBACF;gBAED,8DAA8D;gBAC9D,IACE,WAAI,CAAC,aAAa,CAAC,0CAAE,gBAAgB;oBACrC,oGAA4B,EAC5B;oBACA,IAAI,CAAC,wBAAwB,EAAE,CAAC;oBAChC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC;oBACjD,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC7D;qBAAM;oBACL,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE;wBAC3B,IAAI,CAAC,aAAa,CAChB,IAAI,CAAC,iBAAiB,CAAC,EACvB,IAAI,CAAC,iBAAiB,CACvB,CAAC;wBACF,IAAI,CAAC,mBAAmB,CACtB,gBAAI,CAAC,iBAAiB,CAAC,0CAAE,YAAY,mCAAI,EAAE,CAC5C,CAAC;qBACH;iBACF;aACF;QACH,CAAC,CACF,CACF,CAAC;IACJ,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjC,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,cAAc,CACZ,GAAW,EACX,QAEC;QAED,OAAO,QAAQ,CAAC,GAAG,CAAgB,CAAC;IACtC,CAAC;IAED,aAAa,CACX,IAAS,EACT,QAEC;QAED,kBAAkB;QAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChC,uCAAuC;YACvC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE;gBACtC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,GAAG,CAAC,CAAC,CAAC;aAC1D;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,OAAO,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK;QAChD,mGAAmG;QACnG,MAAM,sBAAsB,GAAG;YAC7B,WAAW;YACX,OAAO;YACP,iBAAiB;YACjB,cAAc;YACd,cAAc;SACf,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChD,mCAAmC;YACnC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACzC,IAAI,OAAO,EAAE;oBACX,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE;wBACtD,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC;qBAC1D;iBACF;qBAAM;oBACL,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;iBACzD;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,yBAAyB,CAAC,OAAO,GAAG,EAAE;QACpC,MAAM,oBAAoB,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9C,MAAM,mBAAmB,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAE3D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChD,IAAI,OAAO,KAAK,sFAAc,EAAE;gBAC9B,IAAI,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACtC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC1D;qBAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;iBACzD;aACF;iBAAM;gBACL,IAAI,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACtC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;iBACzD;qBAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC1D;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,KAAa;QAC3B,6DAA6D;QAC7D,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACpD,IAAI,CAAC,WAAW,CAAC,oBAAoB,iCAE9B,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAC3B,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAElC,IAAI,CAAC,WAAW,CACjB,CAAC;SACH;QAED,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE/D,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,wBAAwB;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CACtC,cAAc,EACd,IAAI,CAAC,iBAAiB,CACvB,CAAC;QACF,MAAM,uBAAuB,GAAG,IAAI,CAAC,cAAc,CACjD,yBAAyB,EACzB,IAAI,CAAC,iBAAiB,CACvB,CAAC;QAEF,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1B,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACrC,uBAAuB,CAAC,eAAe,EAAE,CAAC;QAC1C,uBAAuB,CAAC,sBAAsB,EAAE,CAAC;IACnD,CAAC;IAED,mBAAmB,CAAC,KAAoB;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CACjC,yBAAyB,EACzB,IAAI,CAAC,iBAAiB,CACvB,CAAC;QAEF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,CAAC,eAAe,EAAE,CAAC;SAC3B;aAAM;YACL,OAAO,CAAC,aAAa,CAAC,CAAC,+DAAmB,EAAE,0DAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACjE;QAED,OAAO,CAAC,sBAAsB,EAAE,CAAC;IACnC,CAAC;;4FApOU,sBAAsB;oHAAtB,sBAAsB;QC3DnC,wEAAc;QACZ,kHASM;QAEN,+FAC0C;QAAxC,mLAAe,2BAAuB,IAAC;QAAC,4DAA4B;QAEtE,4FAC8C;QADS,wKAAc,8BAA0B,IAAC,wHAC/E,+BAA2B,IADoD;QAClD,4DAAyB;QACzE,qEAAe;;QAhBP,0DAAiB;QAAjB,iFAAiB;QAWI,0DAA4B;QAA5B,yFAA4B;QAG/B,0DAA8B;QAA9B,2FAA8B;;;;;;;;;;;;;;;;;;;;;;;;;ACdT;AACmB;AAEE;AACmB;AACH;AACA;AAC0B;AACT;;AAgB9F,MAAM,mBAAmB;;sFAAnB,mBAAmB;gHAAnB,mBAAmB;oHAZrB;YACP,yDAAY;YACZ,uDAAW;YACX,+DAAmB;YACnB,4FAAkB;YAClB,yFAAiB;YACjB,yFAAiB;YACjB,mHAAyB;YACzB,0GAAsB;SACvB;mIAGU,mBAAmB,mBAbf,6EAAsB,aAEnC,yDAAY;QACZ,uDAAW;QACX,+DAAmB;QACnB,4FAAkB;QAClB,yFAAiB;QACjB,yFAAiB;QACjB,mHAAyB;QACzB,0GAAsB,aAEd,6EAAsB","sources":["./src/app/components/form-groups/employer-group/employer-group.component.ts","./src/app/components/form-groups/employer-group/employer-group.component.html","./src/app/components/form-groups/employer-group/employer-group.module.ts"],"sourcesContent":["import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport {\n EmploymentStatusType,\n PayType,\n} from 'src/app/services/dropdowns/dropdowns.model';\n\nimport { FinalLoanApplication } from 'src/app/services/loan/loan.model';\nimport { LoanService } from 'src/app/services/loan/loan.service';\n\n/**\n * The parent {FormGroup} must contain the following controls.\n *\n * Employer Information {primaryControls}:\n * * EmployerName\n * * Position\n * * Years\n * * Months\n * * Address\n * * AptNumber\n * * POBox\n * * City\n * * State\n * * ZipCode\n * * PhoneNumber\n * * PhoneNumberType\n * * EmailAddress\n * * PayTypeCD\n * * PayPeriod\n * * TakeHomePay\n * * AnnualSalary\n * * NetIncomePPP\n * * HoursPerWeek\n * * HourlyRate\n *\n * Additional Income {secondaryControls}:\n * * OtherIncomes\n * * MonthlyAdditionalIncome\n *\n * The parent {FormGroup} can disable unneeded controls. Disabling will hide the controls from the UI.\n *\n * ```typescript\n * this.formBuilder.group({\n * POBox: [{ value: '', disabled: true }]\n * });\n * ```\n */\n@Component({\n selector: 'app-employer-group',\n templateUrl: './employer-group.component.html',\n styleUrls: ['./employer-group.component.scss'],\n})\nexport class EmployerGroupComponent implements OnInit, OnDestroy {\n @Input() primaryControls: {\n [key: string]: AbstractControl;\n } = {};\n @Input() secondaryControls: {\n [key: string]: AbstractControl;\n } = {};\n\n /**\n * Used to save the user's progress on the form when there's a pay type change.\n */\n @Input() primaryFormGroup?: FormGroup;\n /**\n * Used to save the user's progress on the form when there's a pay type change.\n */\n @Input() secondaryFormGroup?: FormGroup;\n\n loanApplication: FinalLoanApplication | null = null;\n coApplicant = false;\n unemployed = false;\n\n private subscriptions: Array = [];\n\n constructor(private loanService: LoanService, private router: Router) {\n this.coApplicant = this.router.url.includes('co-applicant');\n }\n\n ngOnInit(): void {\n this.subscriptions.push(\n this.loanService.finalLoanApplication.subscribe(\n (data: FinalLoanApplication | null) => {\n if (data) {\n this.loanApplication = { ...data };\n\n const employmentKey = this.coApplicant\n ? 'CoApplicantEmployment'\n : 'ApplicantEmployment';\n const additionIncomeKey = this.coApplicant\n ? 'CoApplicantAdditionalIncome'\n : 'ApplicantAdditionalIncome';\n\n if (data[employmentKey]) {\n // Check if applicant is unemployed or retired.\n this.unemployed =\n data[employmentKey]?.EmploymentStatus ===\n EmploymentStatusType.unemployed ||\n data[employmentKey]?.EmploymentStatus ===\n EmploymentStatusType.retired;\n\n if (this.unemployed) {\n // Disable form controls if the applicant is unemployed or retired.\n this.setFormControls(\n this.unemployed,\n data[employmentKey]?.EmploymentStatus ===\n EmploymentStatusType.retired\n );\n\n this.primaryControls['TakeHomePay'].setValue(\n data[employmentKey]?.TakeHomePay || ''\n );\n } else {\n const payType = data[employmentKey]?.PayTypeCD ?? '';\n\n this.setFormControls();\n this.setFormControlsForPayType(payType);\n this.setFormValues(data[employmentKey], this.primaryControls);\n }\n }\n\n // Hide the other income controls if the applicant is retired.\n if (\n data[employmentKey]?.EmploymentStatus ===\n EmploymentStatusType.retired\n ) {\n this.onClearOtherIncomesClick();\n this.secondaryControls['OtherIncomes'].disable();\n this.secondaryControls['MonthlyAdditionalIncome'].disable();\n } else {\n if (data[additionIncomeKey]) {\n this.setFormValues(\n data[additionIncomeKey],\n this.secondaryControls\n );\n this.onOtherIncomeChange(\n data[additionIncomeKey]?.OtherIncomes ?? []\n );\n }\n }\n }\n }\n )\n );\n }\n\n ngOnDestroy(): void {\n if (this.subscriptions.length > 0) {\n this.subscriptions.forEach((sub) => {\n sub.unsubscribe();\n });\n }\n }\n\n getFormControl(\n key: string,\n controls: {\n [key: string]: AbstractControl;\n }\n ): FormControl {\n return controls[key] as FormControl;\n }\n\n setFormValues(\n data: any,\n controls: {\n [key: string]: AbstractControl;\n }\n ) {\n // Set form values\n Object.keys(data).forEach((key) => {\n // Check if key exists on current form.\n if (this.getFormControl(key, controls)) {\n this.getFormControl(key, controls).setValue(data?.[key]);\n }\n });\n }\n\n /**\n * Disable {FormControl}s on {primaryControls} if applicant is unemployed or retired.\n *\n * @param disable Defaults to `false`. Will disable the control if `true` otherwise it will be enabled.\n * @param isRetired Defaults to `false`. If retired, form will keep the control `TakeHomePay` enabled.\n */\n setFormControls(disable = false, isRetired = false) {\n // Do NOT do anything to these form controls, they are already deactivated and removed from the UI.\n const deactivatedControlKeys = [\n 'AptNumber',\n 'POBox',\n 'PhoneNumberType',\n 'EmailAddress',\n 'NetIncomePPP',\n ];\n\n Object.keys(this.primaryControls).forEach((key) => {\n // Check if key exists on controls.\n if (!deactivatedControlKeys.includes(key)) {\n if (disable) {\n if ((isRetired && key !== 'TakeHomePay') || !isRetired) {\n this.getFormControl(key, this.primaryControls).disable();\n }\n } else {\n this.getFormControl(key, this.primaryControls).enable();\n }\n }\n });\n }\n\n /**\n * Disable {FormControl}s on {primaryControls} based on applicant's pay type.\n *\n * @param payType Defaults to empty string.\n */\n setFormControlsForPayType(payType = '') {\n const disableKeysForHourly = ['AnnualSalary'];\n const disableKeysForOther = ['HoursPerWeek', 'HourlyRate'];\n\n Object.keys(this.primaryControls).forEach((key) => {\n if (payType === PayType.hourly) {\n if (disableKeysForHourly.includes(key)) {\n this.getFormControl(key, this.primaryControls).disable();\n } else if (disableKeysForOther.includes(key)) {\n this.getFormControl(key, this.primaryControls).enable();\n }\n } else {\n if (disableKeysForHourly.includes(key)) {\n this.getFormControl(key, this.primaryControls).enable();\n } else if (disableKeysForOther.includes(key)) {\n this.getFormControl(key, this.primaryControls).disable();\n }\n }\n });\n }\n\n onPayTypeChange(value: string) {\n // Get form data and update the loan object to save progress.\n if (this.primaryFormGroup && this.secondaryFormGroup) {\n this.loanService.setApplicantEmployer(\n {\n ...this.primaryFormGroup.value,\n ...this.secondaryFormGroup.value,\n },\n this.coApplicant\n );\n }\n\n this.loanService.clearOnPayTypeChange(value, this.coApplicant);\n\n this.setFormControlsForPayType(value);\n }\n\n onClearOtherIncomesClick() {\n const otherIncomes = this.getFormControl(\n 'OtherIncomes',\n this.secondaryControls\n );\n const monthlyAdditionalIncome = this.getFormControl(\n 'MonthlyAdditionalIncome',\n this.secondaryControls\n );\n\n otherIncomes.setValue([]);\n monthlyAdditionalIncome.setValue('');\n monthlyAdditionalIncome.clearValidators();\n monthlyAdditionalIncome.updateValueAndValidity();\n }\n\n onOtherIncomeChange(value: Array) {\n const control = this.getFormControl(\n 'MonthlyAdditionalIncome',\n this.secondaryControls\n );\n\n if (value.length === 0) {\n control.clearValidators();\n } else {\n control.addValidators([Validators.required, Validators.min(0)]);\n }\n\n control.updateValueAndValidity();\n }\n}\n","\n
\n \n\n

Employer Address

\n\n \n \n\n
\n
\n\n \n\n \n
","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { EmployerGroupComponent } from './employer-group.component';\nimport { EmployerInfoModule } from '../../controls/employer-info/employer-info.module';\nimport { AddressInfoModule } from '../../controls/address-info/address-info.module';\nimport { ContactInfoModule } from '../../controls/contact-info/contact-info.module';\nimport { EmployerPaymentInfoModule } from '../../controls/employer-payment-info/employer-payment-info.module';\nimport { OtherIncomesInfoModule } from '../../controls/other-incomes-info/other-incomes-info.module';\n\n@NgModule({\n declarations: [EmployerGroupComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n EmployerInfoModule,\n AddressInfoModule,\n ContactInfoModule,\n EmployerPaymentInfoModule,\n OtherIncomesInfoModule,\n ],\n exports: [EmployerGroupComponent],\n})\nexport class EmployerGroupModule {}\n"],"names":[],"sourceRoot":"webpack:///"}