diff --git a/src/app/clients/clients-routing.module.ts b/src/app/clients/clients-routing.module.ts
index 38846748b..df705b6c9 100644
--- a/src/app/clients/clients-routing.module.ts
+++ b/src/app/clients/clients-routing.module.ts
@@ -12,6 +12,8 @@ import { ClientsComponent } from './clients.component';
import { ClientsViewComponent } from './clients-view/clients-view.component';
import { GeneralTabComponent } from './clients-view/general-tab/general-tab.component';
import { FamilyMembersTabComponent } from './clients-view/family-members-tab/family-members-tab.component';
+import { AddFamilyMemberComponent } from './clients-view/family-members-tab/add-family-member/add-family-member.component';
+import { EditFamilyMemberComponent } from './clients-view/family-members-tab/edit-family-member/edit-family-member.component';
/** Custom Resolvers */
import { ClientsResolver } from './common-resolvers/clients.resolver';
@@ -61,6 +63,24 @@ const routes: Routes = [
resolve: {
clientFamilyMembers: ClientFamilyMembersResolver
}
+ },
+ {
+ path: 'add',
+ component: AddFamilyMemberComponent,
+ resolve: {
+ clientTemplate: ClientTemplateResolver
+ }
+ },
+ {
+ path: ':familyMemberId',
+ children: [{
+ path: 'edit',
+ component: EditFamilyMemberComponent,
+ resolve: {
+ clientTemplate: ClientTemplateResolver,
+ editFamilyMember: ClientFamilyMemberResolver
+ }
+ }]
}
]
}
diff --git a/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.html b/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.html
new file mode 100644
index 000000000..75339a241
--- /dev/null
+++ b/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.html
@@ -0,0 +1,108 @@
+
\ No newline at end of file
diff --git a/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.scss b/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.scss
new file mode 100644
index 000000000..b14273f69
--- /dev/null
+++ b/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.scss
@@ -0,0 +1,13 @@
+.add-family-member-container {
+ width: 70%;
+ margin: 0 auto;
+ padding: 5%;
+ @media screen and (min-width:960px) {
+ [fxFlex]:nth-child(odd) {
+ margin-right: 25px;
+ }
+ [fxFlex]:last-child {
+ margin-right: 0;
+ }
+ }
+}
diff --git a/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.spec.ts b/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.spec.ts
new file mode 100644
index 000000000..9a15bd49c
--- /dev/null
+++ b/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AddFamilyMemberComponent } from './add-family-member.component';
+
+describe('AddFamilyMemberComponent', () => {
+ let component: AddFamilyMemberComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AddFamilyMemberComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AddFamilyMemberComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.ts b/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.ts
new file mode 100644
index 000000000..9a425fab1
--- /dev/null
+++ b/src/app/clients/clients-view/family-members-tab/add-family-member/add-family-member.component.ts
@@ -0,0 +1,75 @@
+import { Component, OnInit } from '@angular/core';
+import { FormGroup, FormBuilder, Validators } from '@angular/forms';
+import { Router, ActivatedRoute } from '@angular/router';
+import { DatePipe } from '@angular/common';
+
+/** Custom Services */
+import { ClientsService } from '../../../clients.service';
+
+
+@Component({
+ selector: 'mifosx-add-family-member',
+ templateUrl: './add-family-member.component.html',
+ styleUrls: ['./add-family-member.component.scss']
+})
+export class AddFamilyMemberComponent implements OnInit {
+ /** Minimum Due Date allowed. */
+ minDate = new Date(2000, 0, 1);
+ /** Maximum Due Date allowed. */
+ maxDate = new Date();
+ /** Add family member form. */
+ addFamilyMemberForm: FormGroup;
+ /** Add family member template. */
+ addFamilyMemberTemplate: any;
+ clientId: any;
+ constructor(private formBuilder: FormBuilder,
+ private datePipe: DatePipe,
+ private router: Router,
+ private route: ActivatedRoute,
+ private clientsService: ClientsService) {
+ this.route.data.subscribe((data: { clientTemplate: any }) => {
+ this.addFamilyMemberTemplate = data.clientTemplate.familyMemberOptions;
+ });
+ this.clientId = this.route.parent.parent.snapshot.params['clientId'];
+
+ }
+
+ ngOnInit() {
+ this.createAddFamilyMemberForm();
+
+ }
+
+
+ createAddFamilyMemberForm() {
+ this.addFamilyMemberForm = this.formBuilder.group({
+ 'firstName': ['', Validators.required],
+ 'middleName': [''],
+ 'lastName': ['', Validators.required],
+ 'qualification': [''],
+ 'age': ['', Validators.required],
+ 'isDependent': [''],
+ 'relationshipId': ['', Validators.required],
+ 'genderId': ['', Validators.required],
+ 'professionId': [''],
+ 'maritalStatusId': [''],
+ 'dateOfBirth': ['', Validators.required]
+ });
+ }
+
+ submit() {
+ const prevDateOfBirth: Date = this.addFamilyMemberForm.value.dateOfBirth;
+ // TODO: Update once language and date settings are setup
+ const dateFormat = 'yyyy-MM-dd';
+ this.addFamilyMemberForm.patchValue({
+ dateOfBirth: this.datePipe.transform(prevDateOfBirth, dateFormat)
+ });
+ const familyMemberData = this.addFamilyMemberForm.value;
+ familyMemberData.locale = 'en';
+ familyMemberData.dateFormat = dateFormat;
+ this.clientsService.addFamilyMember(this.clientId, familyMemberData).subscribe(res => {
+ this.router.navigate(['../'], { relativeTo: this.route });
+ });
+
+ }
+
+}
diff --git a/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.html b/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.html
new file mode 100644
index 000000000..1cf711ccb
--- /dev/null
+++ b/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.html
@@ -0,0 +1,108 @@
+
\ No newline at end of file
diff --git a/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.scss b/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.scss
new file mode 100644
index 000000000..2e7103347
--- /dev/null
+++ b/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.scss
@@ -0,0 +1,14 @@
+.add-family-member-container {
+ width: 70%;
+ margin: 0 auto;
+ padding: 5%;
+ @media screen and (min-width:960px) {
+ [fxFlex]:nth-child(odd) {
+ margin-right: 25px;
+ }
+ [fxFlex]:last-child {
+ margin-right: 0;
+ }
+ }
+ }
+
\ No newline at end of file
diff --git a/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.spec.ts b/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.spec.ts
new file mode 100644
index 000000000..1fdfb1889
--- /dev/null
+++ b/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { EditFamilyMemberComponent } from './edit-family-member.component';
+
+describe('EditFamilyMemberComponent', () => {
+ let component: EditFamilyMemberComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ EditFamilyMemberComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(EditFamilyMemberComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.ts b/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.ts
new file mode 100644
index 000000000..7ecc0f7a3
--- /dev/null
+++ b/src/app/clients/clients-view/family-members-tab/edit-family-member/edit-family-member.component.ts
@@ -0,0 +1,72 @@
+import { Component, OnInit } from '@angular/core';
+import { FormGroup, FormBuilder, Validators } from '@angular/forms';
+import { Router, ActivatedRoute } from '@angular/router';
+import { DatePipe } from '@angular/common';
+
+/** Custom Services */
+import { ClientsService } from '../../../clients.service';
+
+@Component({
+ selector: 'mifosx-edit-family-member',
+ templateUrl: './edit-family-member.component.html',
+ styleUrls: ['./edit-family-member.component.scss']
+})
+export class EditFamilyMemberComponent implements OnInit {
+ /** Minimum Due Date allowed. */
+ minDate = new Date(2000, 0, 1);
+ /** Maximum Due Date allowed. */
+ maxDate = new Date();
+ /** Add family member form. */
+ editFamilyMemberForm: FormGroup;
+ /** Add family member template. */
+ addFamilyMemberTemplate: any;
+ familyMemberDetails: any;
+
+ constructor(private formBuilder: FormBuilder,
+ private datePipe: DatePipe,
+ private router: Router,
+ private route: ActivatedRoute,
+ private clientsService: ClientsService) {
+ this.route.data.subscribe((data: { clientTemplate: any, editFamilyMember: any }) => {
+ this.addFamilyMemberTemplate = data.clientTemplate.familyMemberOptions;
+ this.familyMemberDetails = data.editFamilyMember;
+ });
+ }
+
+ ngOnInit() {
+ this.createEditFamilyMemberForm(this.familyMemberDetails);
+
+ }
+
+ createEditFamilyMemberForm(familyMember: any) {
+ this.editFamilyMemberForm = this.formBuilder.group({
+ 'firstName': [familyMember.firstName, Validators.required],
+ 'middleName': [familyMember.middleName],
+ 'lastName': [familyMember.lastName, Validators.required],
+ 'qualification': [familyMember.qualification],
+ 'age': [familyMember.age, Validators.required],
+ 'isDependent': [familyMember.isDependent],
+ 'relationshipId': [familyMember.relationshipId, Validators.required],
+ 'genderId': [familyMember.genderId, Validators.required],
+ 'professionId': [familyMember.professionId],
+ 'maritalStatusId': [familyMember.maritalStatusId],
+ 'dateOfBirth': [this.datePipe.transform(familyMember.dateOfBirth, 'yyyy-MM-dd'), Validators.required]
+ });
+ }
+
+ submit() {
+ const prevDateOfBirth: Date = this.editFamilyMemberForm.value.dateOfBirth;
+ // TODO: Update once language and date settings are setup
+ const dateFormat = 'yyyy-MM-dd';
+ this.editFamilyMemberForm.patchValue({
+ dateOfBirth: this.datePipe.transform(prevDateOfBirth, dateFormat)
+ });
+ const familyMemberData = this.editFamilyMemberForm.value;
+ familyMemberData.locale = 'en';
+ familyMemberData.dateFormat = dateFormat;
+ this.clientsService.editFamilyMember(this.familyMemberDetails.clientId, this.familyMemberDetails.id, familyMemberData).subscribe(res => {
+ this.router.navigate(['../../'], { relativeTo: this.route });
+ });
+
+ }
+}
diff --git a/src/app/clients/clients.module.ts b/src/app/clients/clients.module.ts
index 6e2e47013..6db2ee131 100644
--- a/src/app/clients/clients.module.ts
+++ b/src/app/clients/clients.module.ts
@@ -12,7 +12,8 @@ import { ClientsViewComponent } from './clients-view/clients-view.component';
import { GeneralTabComponent } from './clients-view/general-tab/general-tab.component';
import {PipesModule} from '../pipes/pipes.module';
import { FamilyMembersTabComponent } from './clients-view/family-members-tab/family-members-tab.component';
-
+import { AddFamilyMemberComponent } from './clients-view/family-members-tab/add-family-member/add-family-member.component';
+import { EditFamilyMemberComponent } from './clients-view/family-members-tab/edit-family-member/edit-family-member.component';
/**
@@ -31,6 +32,8 @@ import { FamilyMembersTabComponent } from './clients-view/family-members-tab/fam
ClientsViewComponent,
GeneralTabComponent,
FamilyMembersTabComponent,
+ AddFamilyMemberComponent,
+ EditFamilyMemberComponent
],
providers: [DatePipe]