diff --git a/src/app/clients/clients-routing.module.ts b/src/app/clients/clients-routing.module.ts index c868868f1..eb8c5a89f 100644 --- a/src/app/clients/clients-routing.module.ts +++ b/src/app/clients/clients-routing.module.ts @@ -18,11 +18,13 @@ import { IdentitiesTabComponent } from './clients-view/identities-tab/identities import { NotesTabComponent } from './clients-view/notes-tab/notes-tab.component'; import { DocumentsTabComponent } from './clients-view/documents-tab/documents-tab.component'; import { DatatableTabComponent } from './clients-view/datatable-tab/datatable-tab.component'; +import { AddressTabComponent } from './clients-view/address-tab/address-tab.component'; /** Custom Resolvers */ import { ClientsResolver } from './common-resolvers/clients.resolver'; import { ClientViewResolver } from './common-resolvers/client-view.resolver'; import { ClientAccountsResolver } from './common-resolvers/client-accounts.resolver'; +import { ClientAddressResolver } from './common-resolvers/client-address.resolver'; import { ClientChargesResolver } from './common-resolvers/client-charges.resolver'; import { ClientSummaryResolver } from './common-resolvers/client-summary.resolver'; import { ClientFamilyMembersResolver } from './common-resolvers/client-family-members.resolver'; @@ -34,6 +36,8 @@ import { ClientDocumentsResolver } from './common-resolvers/client-document.reso import { ClientDatatablesResolver } from './common-resolvers/client-datatables.resolver'; import { ClientDatatableResolver } from './common-resolvers/client-datatable.resolver'; import { ClientIdentifierTemplateResolver } from './common-resolvers/client-identifier-template.resolver'; +import { ClientAddressFieldConfigurationResolver } from './common-resolvers/client-address-fieldconfiguration.resolver'; +import { ClientAddressTemplateResolver } from './common-resolvers/client-address-template.resolver'; const routes: Routes = [ Route.withShell([{ @@ -53,6 +57,7 @@ const routes: Routes = [ data: { title: extract('Clients View'), routeParamBreadcrumb: 'clientId' }, resolve: { clientViewData: ClientViewResolver, + clientTemplateData: ClientTemplateResolver, clientDatatables: ClientDatatablesResolver }, children: [ @@ -65,6 +70,15 @@ const routes: Routes = [ clientSummary: ClientSummaryResolver } }, + { + path: 'address', + component: AddressTabComponent, + resolve: { + clientAddressFieldConfig: ClientAddressFieldConfigurationResolver, + clientAddressTemplateData: ClientAddressTemplateResolver, + clientAddressData: ClientAddressResolver + } + }, { path: 'family-members', children: [ @@ -141,6 +155,7 @@ const routes: Routes = [ ClientsResolver, ClientViewResolver, ClientAccountsResolver, + ClientAddressResolver, ClientChargesResolver, ClientSummaryResolver, ClientFamilyMembersResolver, @@ -151,7 +166,9 @@ const routes: Routes = [ ClientDocumentsResolver, ClientDatatablesResolver, ClientDatatableResolver, - ClientIdentifierTemplateResolver + ClientIdentifierTemplateResolver, + ClientAddressFieldConfigurationResolver, + ClientAddressTemplateResolver ] }) export class ClientsRoutingModule { } diff --git a/src/app/clients/clients-view/address-tab/address-tab.component.html b/src/app/clients/clients-view/address-tab/address-tab.component.html new file mode 100644 index 000000000..8b51d6694 --- /dev/null +++ b/src/app/clients/clients-view/address-tab/address-tab.component.html @@ -0,0 +1,40 @@ +
+

Address

+
+ +
+ + + + + {{address.addressType}} + + + {{address.relationship}} + + + +
+ +
+

+ Street : {{address.street}}
+ Address Line 1 : {{address.addressLine1}}
+ Address Line 2 : {{address.addressLine2}}
+ Address Line 3 : {{address.addressLine3}}
+ Town / Village : {{address.townVillage}}
+ City : {{address.city}}
+ State / Province : + {{getSelectedValue('stateProvinceIdOptions',address.stateProvinceId)?.name}}
+ Country : + {{getSelectedValue('countryIdOptions',address.countryId)?.name}}
+ Postal Code : {{address.postalCode}}
+ Active Status : {{address.isActive}}
+

+
+
+
diff --git a/src/app/clients/clients-view/address-tab/address-tab.component.scss b/src/app/clients/clients-view/address-tab/address-tab.component.scss new file mode 100644 index 000000000..23b964989 --- /dev/null +++ b/src/app/clients/clients-view/address-tab/address-tab.component.scss @@ -0,0 +1,22 @@ +.tab-container { + padding:1%; + margin: 1%; + + .address { + .address-actions{ + margin-top: 1%; + button{ + margin-right: 1%; + } + } + h3 { + margin: 1% auto; + } + + p { + line-height: 30px; + margin-left: 2%; + } + } + } + \ No newline at end of file diff --git a/src/app/clients/clients-view/address-tab/address-tab.component.spec.ts b/src/app/clients/clients-view/address-tab/address-tab.component.spec.ts new file mode 100644 index 000000000..f7e326f61 --- /dev/null +++ b/src/app/clients/clients-view/address-tab/address-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddressTabComponent } from './address-tab.component'; + +describe('AddressTabComponent', () => { + let component: AddressTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AddressTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AddressTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/clients/clients-view/address-tab/address-tab.component.ts b/src/app/clients/clients-view/address-tab/address-tab.component.ts new file mode 100644 index 000000000..2cd8d2839 --- /dev/null +++ b/src/app/clients/clients-view/address-tab/address-tab.component.ts @@ -0,0 +1,38 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; + +@Component({ + selector: 'mifosx-address-tab', + templateUrl: './address-tab.component.html', + styleUrls: ['./address-tab.component.scss'] +}) +export class AddressTabComponent implements OnInit { + + clientAddressData: any; + clientAddressFieldConfig: any; + clientAddressTemplate: any; + + constructor(private route: ActivatedRoute) { + this.route.data.subscribe((data: { + clientAddressData: any, + clientAddressFieldConfig: any, + clientAddressTemplateData: any + }) => { + this.clientAddressData = data.clientAddressData; + this.clientAddressFieldConfig = data.clientAddressFieldConfig; + this.clientAddressTemplate = data.clientAddressTemplateData; + }); + } + + ngOnInit() { + } + + isFieldEnabled(fieldName: any) { + return (this.clientAddressFieldConfig.find((fieldObj: any) => fieldObj.field === fieldName)).is_enabled; + } + + getSelectedValue(fieldName: any, fieldId: any) { + return (this.clientAddressTemplate[fieldName].find((fieldObj: any) => fieldObj.id === fieldId)); + } + +} diff --git a/src/app/clients/clients-view/clients-view.component.html b/src/app/clients/clients-view/clients-view.component.html index bb3ff9fc5..d43c3438d 100644 --- a/src/app/clients/clients-view/clients-view.component.html +++ b/src/app/clients/clients-view/clients-view.component.html @@ -48,6 +48,10 @@ [active]="general.isActive"> General + + Address + Family Members diff --git a/src/app/clients/clients-view/clients-view.component.ts b/src/app/clients/clients-view/clients-view.component.ts index 1d5783f23..806cff99a 100644 --- a/src/app/clients/clients-view/clients-view.component.ts +++ b/src/app/clients/clients-view/clients-view.component.ts @@ -14,16 +14,19 @@ export class ClientsViewComponent implements OnInit { clientViewData: any; clientDatatables: any; clientImage: any; - clientTemplate: any; + clientTemplateData: any; + constructor(private route: ActivatedRoute, private clientsService: ClientsService, private _sanitizer: DomSanitizer) { this.route.data.subscribe((data: { clientViewData: any, + clientTemplateData: any, clientDatatables: any }) => { this.clientViewData = data.clientViewData; this.clientDatatables = data.clientDatatables; + this.clientTemplateData = data.clientTemplateData; }); } diff --git a/src/app/clients/clients-view/identities-tab/identities-tab.component.html b/src/app/clients/clients-view/identities-tab/identities-tab.component.html index 7e5268a32..a6af6c87e 100644 --- a/src/app/clients/clients-view/identities-tab/identities-tab.component.html +++ b/src/app/clients/clients-view/identities-tab/identities-tab.component.html @@ -49,7 +49,7 @@ - diff --git a/src/app/clients/clients.module.ts b/src/app/clients/clients.module.ts index 6e602c6d6..dd54f570a 100644 --- a/src/app/clients/clients.module.ts +++ b/src/app/clients/clients.module.ts @@ -22,6 +22,7 @@ import { DocumentsTabComponent } from './clients-view/documents-tab/documents-ta import { DatatableTabComponent } from './clients-view/datatable-tab/datatable-tab.component'; import { MultiRowComponent } from './clients-view/datatable-tab/multi-row/multi-row.component'; import { SingleRowComponent } from './clients-view/datatable-tab/single-row/single-row.component'; +import { AddressTabComponent } from './clients-view/address-tab/address-tab.component'; /** @@ -49,7 +50,8 @@ import { SingleRowComponent } from './clients-view/datatable-tab/single-row/sing DocumentsTabComponent, DatatableTabComponent, MultiRowComponent, - SingleRowComponent + SingleRowComponent, + AddressTabComponent ], entryComponents: [ UploadDocumentDialogComponent, diff --git a/src/app/clients/clients.service.ts b/src/app/clients/clients.service.ts index 23e927709..ca7301b51 100644 --- a/src/app/clients/clients.service.ts +++ b/src/app/clients/clients.service.ts @@ -39,6 +39,7 @@ export class ClientsService { return this.http.get(`/datatables/${datatableName}/${clientId}`, { params: httpParams }); } + getClientAccountData(clientId: string) { return this.http.get(`/clients/${clientId}/accounts`); } @@ -138,4 +139,16 @@ export class ClientsService { deleteClientNote(clientId: string, noteId: string) { return this.http.delete(`/clients/${clientId}/notes/${noteId}`); } + + getAddressFieldConfiguration() { + return this.http.get(`/fieldconfiguration/ADDRESS`); + } + + getClientAddressData(clientId: string) { + return this.http.get(`/client/${clientId}/addresses`); + } + + getClientAddressTemplate() { + return this.http.get(`/client/addresses/template`); + } } diff --git a/src/app/clients/common-resolvers/client-address-fieldconfiguration.resolver.ts b/src/app/clients/common-resolvers/client-address-fieldconfiguration.resolver.ts new file mode 100644 index 000000000..d93b311fc --- /dev/null +++ b/src/app/clients/common-resolvers/client-address-fieldconfiguration.resolver.ts @@ -0,0 +1,30 @@ +/** Angular Imports */ +import { Injectable } from '@angular/core'; +import { Resolve } from '@angular/router'; + +/** rxjs Imports */ +import { Observable } from 'rxjs'; + +/** Custom Services */ +import { ClientsService } from '../clients.service'; + +/** + * Client Address Field Configuration resolver. + */ +@Injectable() +export class ClientAddressFieldConfigurationResolver implements Resolve { + + /** + * @param {ClientsService} ClientsService Clients service. + */ + constructor(private clientsService: ClientsService) { } + + /** + * Returns the Client Address Field Configuration. + * @returns {Observable} + */ + resolve(): Observable { + return this.clientsService.getAddressFieldConfiguration(); + } + +} diff --git a/src/app/clients/common-resolvers/client-address-template.resolver.ts b/src/app/clients/common-resolvers/client-address-template.resolver.ts new file mode 100644 index 000000000..495ce42a6 --- /dev/null +++ b/src/app/clients/common-resolvers/client-address-template.resolver.ts @@ -0,0 +1,30 @@ +/** Angular Imports */ +import { Injectable } from '@angular/core'; +import { Resolve } from '@angular/router'; + +/** rxjs Imports */ +import { Observable } from 'rxjs'; + +/** Custom Services */ +import { ClientsService } from '../clients.service'; + +/** + * Client Address Field Configuration resolver. + */ +@Injectable() +export class ClientAddressTemplateResolver implements Resolve { + + /** + * @param {ClientsService} ClientsService Clients service. + */ + constructor(private clientsService: ClientsService) { } + + /** + * Returns the Client Address Field Configuration. + * @returns {Observable} + */ + resolve(): Observable { + return this.clientsService.getClientAddressTemplate(); + } + +} diff --git a/src/app/clients/common-resolvers/client-address.resolver.ts b/src/app/clients/common-resolvers/client-address.resolver.ts new file mode 100644 index 000000000..fd2822410 --- /dev/null +++ b/src/app/clients/common-resolvers/client-address.resolver.ts @@ -0,0 +1,31 @@ +/** Angular Imports */ +import { Injectable } from '@angular/core'; +import { Resolve, ActivatedRouteSnapshot } from '@angular/router'; + +/** rxjs Imports */ +import { Observable } from 'rxjs'; + +/** Custom Services */ +import { ClientsService } from '../clients.service'; + +/** + * Client Address data resolver. + */ +@Injectable() +export class ClientAddressResolver implements Resolve { + + /** + * @param {ClientsService} ClientsService Clients service. + */ + constructor(private clientsService: ClientsService) { } + + /** + * Returns the Client Address data. + * @returns {Observable} + */ + resolve(route: ActivatedRouteSnapshot): Observable { + const clientId = route.parent.paramMap.get('clientId'); + return this.clientsService.getClientAddressData(clientId); + } + +}