From d366f32dfd6c7ed3058cca9a4950a1fa0ebc7fbc Mon Sep 17 00:00:00 2001 From: Jose Hernandez Date: Tue, 19 Apr 2022 16:29:39 -0500 Subject: [PATCH] Add email field to Client --- .../client-general-step.component.html | 18 +++++++--- .../client-general-step.component.ts | 1 + .../client-preview-step.component.html | 33 +++++++++-------- src/app/clients/clients-routing.module.ts | 3 +- .../general-tab/general-tab.component.ts | 2 +- .../edit-client/edit-client.component.html | 36 +++++++++++-------- .../edit-client/edit-client.component.ts | 6 ++-- src/app/settings/settings.service.ts | 10 ++++++ .../language-selector.component.html | 2 +- .../language-selector.component.scss | 5 +-- .../language-selector.component.ts | 16 +++++---- src/app/web-app.component.ts | 10 ++---- 12 files changed, 87 insertions(+), 55 deletions(-) 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 ff745fb2e..d634b6b3c 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 @@ -85,11 +85,6 @@ - - Mobile No - - - Gender @@ -103,6 +98,19 @@ Is staff? + + Mobile No + + + + + Email Address + + + Email not valid + + + Client Type 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 b2acd4514..fd5875d00 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 @@ -76,6 +76,7 @@ export class ClientGeneralStepComponent implements OnInit { 'externalId': [''], 'genderId': [''], 'mobileNo': [''], + 'emailAddress': ['', Validators.email], 'dateOfBirth': [''], 'clientTypeId': [''], 'clientClassificationId': [''], 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 5c84a7995..ef7037e28 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 @@ -40,6 +40,11 @@ {{ client.mobileNo }} +
+ Email Address + {{ client.emailAddress }} +
+
Client Type {{ client.clientTypeId | find:clientTemplate.clientTypeOptions:'id':'name' }} @@ -76,7 +81,7 @@ Gender {{ client.genderId | find:clientTemplate.genderOptions:'id':'name' }}
- +
Is Staff? {{ client.isStaff ? 'Yes' : 'No' }} @@ -90,22 +95,22 @@ Incorporation Validity Till Date {{ client.clientNonPersonDetails.incorpValidityTillDate | date }}
- +
Incorportation Number {{ client.clientNonPersonDetails.incorpNumber || 'Not Provided' }}
- +
Main Business Line {{ client.clientNonPersonDetails.mainBusinessLineId | find:clientTemplate.clientNonPersonMainBusinessLineOptions:'id':'name' }}
- +
Constitution {{ client.clientNonPersonDetails.constitutionId | find:clientTemplate.clientNonPersonConstitutionOptions:'id':'name'}}
- +
Remarks {{ client.clientNonPersonDetails.remarks || 'N/A' }} @@ -153,7 +158,7 @@ - +
@@ -166,21 +171,21 @@ - + - + {{ getSelectedValue('addressTypeIdOptions',address.addressTypeId)?.name }} - + {{address.relationship}} - + - + - +

Street : {{address.street}}
Address Line 1 : {{address.addressLine1}}
@@ -195,9 +200,9 @@ Postal Code : {{address.postalCode}}
Active Status : {{address.isActive}}

- +
- +
diff --git a/src/app/clients/clients-routing.module.ts b/src/app/clients/clients-routing.module.ts index 5e154b13c..185a4ee9b 100644 --- a/src/app/clients/clients-routing.module.ts +++ b/src/app/clients/clients-routing.module.ts @@ -83,8 +83,7 @@ const routes: Routes = [ data: { title: extract('General'), breadcrumb: 'General', routeParamBreadcrumb: false }, resolve: { clientAccountsData: ClientAccountsResolver, - clientChargesData: ClientChargesResolver, - clientSummary: ClientSummaryResolver + clientChargesData: ClientChargesResolver } }, { diff --git a/src/app/clients/clients-view/general-tab/general-tab.component.ts b/src/app/clients/clients-view/general-tab/general-tab.component.ts index 21b07fced..fb0e27f8d 100644 --- a/src/app/clients/clients-view/general-tab/general-tab.component.ts +++ b/src/app/clients/clients-view/general-tab/general-tab.component.ts @@ -73,7 +73,7 @@ export class GeneralTabComponent { this.loanAccounts = data.clientAccountsData.loanAccounts; this.shareAccounts = data.clientAccountsData.shareAccounts; this.upcomingCharges = data.clientChargesData.pageItems; - this.clientSummary = data.clientSummary[0]; + this.clientSummary = data.clientSummary ? data.clientSummary[0] : []; this.clientid = this.route.parent.snapshot.params['clientId']; }); } diff --git a/src/app/clients/edit-client/edit-client.component.html b/src/app/clients/edit-client/edit-client.component.html index 7b4dfbaee..4d325e203 100644 --- a/src/app/clients/edit-client/edit-client.component.html +++ b/src/app/clients/edit-client/edit-client.component.html @@ -84,9 +84,21 @@
+ + Is staff? + + Mobile No - + + + + + Email Address + + + Email not valid + @@ -109,20 +121,20 @@ Submitted On - + + + Submitted Date is required + Activated On - - - Activation Date is required - @@ -134,10 +146,6 @@
- - Is staff? - -
@@ -147,12 +155,12 @@ - + Incorporation No - + Main Business Line @@ -161,7 +169,7 @@ - + Constitution @@ -170,7 +178,7 @@ - + Remarks diff --git a/src/app/clients/edit-client/edit-client.component.ts b/src/app/clients/edit-client/edit-client.component.ts index 647f33c29..18050bcab 100644 --- a/src/app/clients/edit-client/edit-client.component.ts +++ b/src/app/clients/edit-client/edit-client.component.ts @@ -79,6 +79,7 @@ export class EditClientComponent implements OnInit { 'isStaff': this.clientDataAndTemplate.isStaff, 'active': this.clientDataAndTemplate.active, 'mobileNo': this.clientDataAndTemplate.mobileNo, + 'emailAddress': this.clientDataAndTemplate.emailAddress, 'dateOfBirth': this.clientDataAndTemplate.dateOfBirth && new Date(this.clientDataAndTemplate.dateOfBirth), 'clientTypeId': this.clientDataAndTemplate.clientType && this.clientDataAndTemplate.clientType.id, 'clientClassificationId': this.clientDataAndTemplate.clientClassification && this.clientDataAndTemplate.clientClassification.id, @@ -101,11 +102,12 @@ export class EditClientComponent implements OnInit { 'externalId': [''], 'genderId': [''], 'mobileNo': [''], + 'emailAddress': ['', Validators.email], 'dateOfBirth': [''], 'clientTypeId': [''], 'clientClassificationId': [''], - 'submittedOnDate': [''], - 'activationDate': ['', Validators.required] + 'submittedOnDate': ['', Validators.required], + 'activationDate': [''] }); } diff --git a/src/app/settings/settings.service.ts b/src/app/settings/settings.service.ts index 32703ba53..413d2e481 100644 --- a/src/app/settings/settings.service.ts +++ b/src/app/settings/settings.service.ts @@ -30,6 +30,13 @@ export class SettingsService { localStorage.setItem('mifosXLanguage', JSON.stringify(language)); } + setDefaultLanguage() { + this.setLanguage({ + name: environment.defaultLanguage, + code: environment.defaultLanguage.substring(0, 2) + }); + } + /** * Sets server URL setting throughout the app. * @param {string} url URL @@ -57,6 +64,9 @@ export class SettingsService { * Returns language setting */ get language() { + if (!localStorage.getItem('mifosXLanguage')) { + this.setDefaultLanguage(); + } return JSON.parse(localStorage.getItem('mifosXLanguage')); } diff --git a/src/app/shared/language-selector/language-selector.component.html b/src/app/shared/language-selector/language-selector.component.html index ec3e6041a..59e1f58b8 100644 --- a/src/app/shared/language-selector/language-selector.component.html +++ b/src/app/shared/language-selector/language-selector.component.html @@ -1,6 +1,6 @@ Language - + {{ language }} diff --git a/src/app/shared/language-selector/language-selector.component.scss b/src/app/shared/language-selector/language-selector.component.scss index 85c1ac9b9..d95d19f6f 100644 --- a/src/app/shared/language-selector/language-selector.component.scss +++ b/src/app/shared/language-selector/language-selector.component.scss @@ -1,3 +1,4 @@ -#language-selector { - max-width: 4rem; +#language-selector, +.languageselector { + max-width: 6rem; } diff --git a/src/app/shared/language-selector/language-selector.component.ts b/src/app/shared/language-selector/language-selector.component.ts index 00c8b612b..db554170b 100644 --- a/src/app/shared/language-selector/language-selector.component.ts +++ b/src/app/shared/language-selector/language-selector.component.ts @@ -3,7 +3,8 @@ import { Component, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; /** Custom Services */ -import { I18nService } from '../../core/i18n/i18n.service'; +import { TranslateService } from '@ngx-translate/core'; +import { SettingsService } from 'app/settings/settings.service'; /** * Language selector component. @@ -25,9 +26,9 @@ export class LanguageSelectorComponent implements OnInit { * Sets the language of the application in the selector on initial setup. * @param {I18nService} i18nService Internationalization Service. */ - constructor(private i18nService: I18nService) { + constructor(private translate: TranslateService, + private settingsService: SettingsService) { this.languageSelector.setValue(this.currentLanguage); - this.languageSelector.valueChanges.subscribe( language => this.setLanguage(language) ); } ngOnInit() { @@ -37,8 +38,9 @@ export class LanguageSelectorComponent implements OnInit { * Sets a new language to be used by the application. * @param {string} language New language. */ - setLanguage(language: string) { - this.i18nService.language = language; + setLanguage() { + this.translate.use(this.languageSelector.value); + this.settingsService.setLanguage({ name: '', code: this.languageSelector.value.substring(0, 2) }); } /** @@ -46,7 +48,7 @@ export class LanguageSelectorComponent implements OnInit { * @returns {string} Current language. */ get currentLanguage(): string { - return this.i18nService.language; + return this.translate.currentLang; } /** @@ -54,7 +56,7 @@ export class LanguageSelectorComponent implements OnInit { * @return {string[]} Supported languages. */ get languages(): string[] { - return this.i18nService.supportedLanguages; + return this.translate.getLangs(); } } diff --git a/src/app/web-app.component.ts b/src/app/web-app.component.ts index 3215d6319..c8caab22c 100644 --- a/src/app/web-app.component.ts +++ b/src/app/web-app.component.ts @@ -16,7 +16,6 @@ import { environment } from 'environments/environment'; /** Custom Services */ import { Logger } from './core/logger/logger.service'; -import { I18nService } from './core/i18n/i18n.service'; import { ThemeStorageService } from './shared/theme-picker/theme-storage.service'; import { AlertService } from './core/alert/alert.service'; import { AuthenticationService } from './core/authentication/authentication.service'; @@ -56,7 +55,6 @@ export class WebAppComponent implements OnInit { private activatedRoute: ActivatedRoute, private titleService: Title, private translateService: TranslateService, - private i18nService: I18nService, private themeStorageService: ThemeStorageService, public snackBar: MatSnackBar, private alertService: AlertService, @@ -84,7 +82,8 @@ export class WebAppComponent implements OnInit { log.debug('init'); // Setup translations - this.i18nService.init(environment.defaultLanguage, environment.supportedLanguages); + this.translateService.addLangs(environment.supportedLanguages); + this.translateService.use(environment.defaultLanguage); // Change page title on navigation or language change, based on route data const onNavigationEnd = this.router.events.pipe(filter(event => event instanceof NavigationEnd)); @@ -138,10 +137,7 @@ export class WebAppComponent implements OnInit { // initialize language and date format if they are null. if (!localStorage.getItem('mifosXLanguage')) { - this.settingsService.setLanguage({ - name: 'English', - code: 'en' - }); + this.settingsService.setDefaultLanguage(); } if (!localStorage.getItem('mifosXDateFormat')) { this.settingsService.setDateFormat('dd MMMM yyyy');