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
+
+
+ Add
+
+
+
+
+
+
+ {{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);
+ }
+
+}