From cf7ced043c640fbc4343edadd6c04c0265d5e5cb Mon Sep 17 00:00:00 2001 From: Shubham Kumar Date: Sun, 1 Feb 2026 05:05:35 +0530 Subject: [PATCH] WEB-648 refactor: replace magic numbers with LegalFormId enum (#3068) --- .../client-general-step.component.html | 4 ++-- .../client-general-step.component.ts | 10 +++++++--- .../client-preview-step.component.html | 12 +++++++----- .../client-preview-step.component.ts | 4 ++++ .../personal-data-tab.component.ts | 9 +++++---- .../edit-client/edit-client.component.html | 4 ++-- .../edit-client/edit-client.component.ts | 12 ++++++++---- src/app/clients/models/legal-form.enum.ts | 18 ++++++++++++++++++ 8 files changed, 53 insertions(+), 20 deletions(-) create mode 100644 src/app/clients/models/legal-form.enum.ts diff --git a/src/app/clients/client-stepper/client-general-step/client-general-step.component.html b/src/app/clients/client-stepper/client-general-step/client-general-step.component.html index 054d1cce5..5e00fa397 100644 --- a/src/app/clients/client-stepper/client-general-step/client-general-step.component.html +++ b/src/app/clients/client-stepper/client-general-step/client-general-step.component.html @@ -181,7 +181,7 @@ } - @if (createClientForm.value.legalFormId === 1) { + @if (createClientForm.value.legalFormId === LegalFormId.PERSON) { {{ 'labels.inputs.Gender' | translate }} @@ -205,7 +205,7 @@ - @if (createClientForm.value.legalFormId === 1) { + @if (createClientForm.value.legalFormId === LegalFormId.PERSON) { {{ 'labels.inputs.Is staff' | translate }}? diff --git a/src/app/clients/client-stepper/client-general-step/client-general-step.component.ts b/src/app/clients/client-stepper/client-general-step/client-general-step.component.ts index 5552c08fa..d4649372f 100644 --- a/src/app/clients/client-stepper/client-general-step/client-general-step.component.ts +++ b/src/app/clients/client-stepper/client-general-step/client-general-step.component.ts @@ -19,6 +19,7 @@ import { Subject } from 'rxjs'; import { filter, switchMap, takeUntil } from 'rxjs/operators'; import { ClientsService } from 'app/clients/clients.service'; import { Dates } from 'app/core/utils/dates'; +import { LegalFormId } from 'app/clients/models/legal-form.enum'; /** Custom Services */ import { SettingsService } from 'app/settings/settings.service'; @@ -57,6 +58,9 @@ export class ClientGeneralStepComponent implements OnInit, OnDestroy { @Output() legalFormChangeEvent = new EventEmitter<{ legalForm: number }>(); + /** Expose enum to template */ + readonly LegalFormId = LegalFormId; + /** Minimum date allowed. */ minDate = new Date(2000, 0, 1); /** Maximum date allowed. */ @@ -161,7 +165,7 @@ export class ClientGeneralStepComponent implements OnInit, OnDestroy { .valueChanges.pipe(takeUntil(this.destroy$)) .subscribe((legalFormId: number) => { this.legalFormChangeEvent.emit({ legalForm: legalFormId }); - if (legalFormId === 1) { + if (legalFormId === LegalFormId.PERSON) { this.createClientForm.removeControl('fullname'); this.createClientForm.removeControl('clientNonPersonDetails'); this.createClientForm.addControl( @@ -205,7 +209,7 @@ export class ClientGeneralStepComponent implements OnInit, OnDestroy { ); } }); - this.createClientForm.get('legalFormId').patchValue(1); + this.createClientForm.get('legalFormId').patchValue(LegalFormId.PERSON); this.createClientForm .get('active') .valueChanges.pipe(takeUntil(this.destroy$)) @@ -244,7 +248,7 @@ export class ClientGeneralStepComponent implements OnInit, OnDestroy { } getDateLabel(legalFormId: number, values: string[]): string { - return legalFormId === 1 ? values[0] : values[1]; + return legalFormId === LegalFormId.PERSON ? values[0] : values[1]; } /** diff --git a/src/app/clients/client-stepper/client-preview-step/client-preview-step.component.html b/src/app/clients/client-stepper/client-preview-step/client-preview-step.component.html index 03b889ba3..7573b331b 100644 --- a/src/app/clients/client-stepper/client-preview-step/client-preview-step.component.html +++ b/src/app/clients/client-stepper/client-preview-step/client-preview-step.component.html @@ -13,10 +13,10 @@
{{ 'labels.inputs.name' | translate }} - @if (client.legalFormId === 2) { + @if (client.legalFormId === LegalFormId.ENTITY) { {{ client.fullname }} } - @if (client.legalFormId === 1) { + @if (client.legalFormId === LegalFormId.PERSON) { {{ client.firstname }} {{ client.middlename ? client.middlename + ' ' + client.lastname : client.lastname }} - {{ client.legalFormId === 1 ? 'Date of Birth' : 'Incorporation Date' }} + {{ + client.legalFormId === LegalFormId.PERSON ? 'Date of Birth' : 'Incorporation Date' + }} {{ client.dateOfBirth | dateFormat }}
} @@ -115,7 +117,7 @@ } - @if (client.legalFormId === 1) { + @if (client.legalFormId === LegalFormId.PERSON) { @if (client.genderId) {
{{ 'labels.inputs.Gender' | translate }} @@ -128,7 +130,7 @@
} - @if (client.legalFormId === 2) { + @if (client.legalFormId === LegalFormId.ENTITY) { @if (client.clientNonPersonDetails.incorpValidityTillDate) {
{{ 'labels.inputs.Incorporation Validity Till Date' | translate }} diff --git a/src/app/clients/client-stepper/client-preview-step/client-preview-step.component.ts b/src/app/clients/client-stepper/client-preview-step/client-preview-step.component.ts index 9c32d0145..2340e91e2 100644 --- a/src/app/clients/client-stepper/client-preview-step/client-preview-step.component.ts +++ b/src/app/clients/client-stepper/client-preview-step/client-preview-step.component.ts @@ -23,6 +23,7 @@ import { FindPipe } from '../../../pipes/find.pipe'; import { DateFormatPipe } from '../../../pipes/date-format.pipe'; import { YesnoPipe } from '../../../pipes/yesno.pipe'; import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; +import { LegalFormId } from 'app/clients/models/legal-form.enum'; /** * Client Preview Step Component @@ -58,6 +59,9 @@ export class ClientPreviewStepComponent { /** Form submission event */ @Output() submitEvent = new EventEmitter(); + /** Expose enum to template */ + readonly LegalFormId = LegalFormId; + constructor() {} /** diff --git a/src/app/clients/clients-view/personal-data-tab/personal-data-tab.component.ts b/src/app/clients/clients-view/personal-data-tab/personal-data-tab.component.ts index abc90ba5c..d7aff5147 100644 --- a/src/app/clients/clients-view/personal-data-tab/personal-data-tab.component.ts +++ b/src/app/clients/clients-view/personal-data-tab/personal-data-tab.component.ts @@ -14,6 +14,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; /** Custom Imports */ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module'; import { DateFormatPipe } from '../../../pipes/date-format.pipe'; +import { LegalFormId } from 'app/clients/models/legal-form.enum'; /** Interfaces */ interface ClientViewData { @@ -71,16 +72,16 @@ export class PersonalDataTabComponent { } /** - * Check if client is a person (legalFormId = 1) or entity (legalFormId = 2) + * Check if client is a person (individual) */ isPerson(): boolean { - return this.clientViewData?.legalForm?.id === 1; + return this.clientViewData?.legalForm?.id === LegalFormId.PERSON; } /** - * Check if client is a legal entity + * Check if client is a legal entity (organization) */ isLegalEntity(): boolean { - return this.clientViewData?.legalForm?.id === 2; + return this.clientViewData?.legalForm?.id === LegalFormId.ENTITY; } } diff --git a/src/app/clients/edit-client/edit-client.component.html b/src/app/clients/edit-client/edit-client.component.html index c489e2681..2ccf2622f 100644 --- a/src/app/clients/edit-client/edit-client.component.html +++ b/src/app/clients/edit-client/edit-client.component.html @@ -159,7 +159,7 @@ - @if (legalFormId === 1) { + @if (legalFormId === LegalFormId.PERSON) { {{ 'labels.inputs.Gender' | translate }} @@ -186,7 +186,7 @@ - @if (legalFormId === 1) { + @if (legalFormId === LegalFormId.PERSON) { {{ 'labels.inputs.Is staff' | translate }}? diff --git a/src/app/clients/edit-client/edit-client.component.ts b/src/app/clients/edit-client/edit-client.component.ts index fbfe53bea..92c95804b 100644 --- a/src/app/clients/edit-client/edit-client.component.ts +++ b/src/app/clients/edit-client/edit-client.component.ts @@ -9,6 +9,7 @@ /** Angular Imports */ import { Component, OnInit, inject } from '@angular/core'; import { ActivatedRoute, Router, RouterLink } from '@angular/router'; +import { LegalFormId } from 'app/clients/models/legal-form.enum'; import { UntypedFormBuilder, UntypedFormGroup, @@ -74,7 +75,10 @@ export class EditClientComponent implements OnInit { constitutionOptions: any; /** Gender Options */ genderOptions: any; - legalFormId = 1; + legalFormId = LegalFormId.PERSON; + + /** Expose enum to template */ + readonly LegalFormId = LegalFormId; /** * Fetches client template data from `resolve` @@ -96,7 +100,7 @@ export class EditClientComponent implements OnInit { this.createEditClientForm(); this.setOptions(); this.buildDependencies(); - this.legalFormId = 1; + this.legalFormId = LegalFormId.PERSON; this.editClientForm.patchValue({ officeId: this.clientDataAndTemplate.officeId, staffId: this.clientDataAndTemplate.staffId, @@ -172,7 +176,7 @@ export class EditClientComponent implements OnInit { */ buildDependencies() { this.editClientForm.get('legalFormId').valueChanges.subscribe((legalFormId: any) => { - if (legalFormId === 1) { + if (legalFormId === LegalFormId.PERSON) { this.editClientForm.removeControl('fullname'); this.editClientForm.removeControl('clientNonPersonDetails'); this.editClientForm.addControl( @@ -217,7 +221,7 @@ export class EditClientComponent implements OnInit { } getDateLabel(legalFormId: number, values: string[]): string { - return legalFormId === 1 ? values[0] : values[1]; + return legalFormId === LegalFormId.PERSON ? values[0] : values[1]; } /** diff --git a/src/app/clients/models/legal-form.enum.ts b/src/app/clients/models/legal-form.enum.ts new file mode 100644 index 000000000..7aedf862e --- /dev/null +++ b/src/app/clients/models/legal-form.enum.ts @@ -0,0 +1,18 @@ +/** + * Copyright since 2025 Mifos Initiative + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +/** + * Legal Form IDs for client types. + * These represent the different legal forms a client can have. + */ +export enum LegalFormId { + /** Individual/Personal client */ + PERSON = 1, + /** Non-person/Entity client (Organization, Corporation, etc.) */ + ENTITY = 2 +}