From 5541e1fe8d262875c1aa90a31c292c1115d7e7c5 Mon Sep 17 00:00:00 2001 From: Karan Takalkar Date: Mon, 13 Jul 2020 17:49:15 +0530 Subject: [PATCH] feat: client actions (update-savings) (#1079) Fixes: #1078 --- .../client-actions.component.html | 1 + .../client-actions.component.ts | 4 +- ...date-client-savings-account.component.html | 36 ++++++++++ ...date-client-savings-account.component.scss | 3 + ...e-client-savings-account.component.spec.ts | 25 +++++++ ...update-client-savings-account.component.ts | 69 +++++++++++++++++++ .../clients-view/clients-view.component.html | 1 + .../clients-view/clients-view.component.ts | 1 + src/app/clients/clients.module.ts | 4 +- .../client-actions.resolver.ts | 1 + 10 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.html create mode 100644 src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.scss create mode 100644 src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.spec.ts create mode 100644 src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.ts diff --git a/src/app/clients/clients-view/client-actions/client-actions.component.html b/src/app/clients/clients-view/client-actions/client-actions.component.html index df375541c..62baa2df0 100644 --- a/src/app/clients/clients-view/client-actions/client-actions.component.html +++ b/src/app/clients/clients-view/client-actions/client-actions.component.html @@ -4,3 +4,4 @@ + diff --git a/src/app/clients/clients-view/client-actions/client-actions.component.ts b/src/app/clients/clients-view/client-actions/client-actions.component.ts index d9abe5ff2..a5d898921 100644 --- a/src/app/clients/clients-view/client-actions/client-actions.component.ts +++ b/src/app/clients/clients-view/client-actions/client-actions.component.ts @@ -19,12 +19,14 @@ export class ClientActionsComponent { 'Reject': boolean 'Survey': boolean 'Withdraw': boolean + 'Update Default Savings': boolean } = { 'Assign Staff': false, 'Close': false, 'Reject': false, 'Survey': false, - 'Withdraw': false + 'Withdraw': false, + 'Update Default Savings': false }; /** diff --git a/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.html b/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.html new file mode 100644 index 000000000..152dee42e --- /dev/null +++ b/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.html @@ -0,0 +1,36 @@ +
+ + + +
+ + + +
+ + + Default Savings Account + + + {{ account.accountNo }} + + + + Account is required + + + +
+ +
+ + + + + + +
+ +
+ +
diff --git a/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.scss b/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.scss new file mode 100644 index 000000000..d774f68da --- /dev/null +++ b/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.scss @@ -0,0 +1,3 @@ +.container { + max-width: 37rem; +} diff --git a/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.spec.ts b/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.spec.ts new file mode 100644 index 000000000..1c3ce77a5 --- /dev/null +++ b/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UpdateClientSavingsAccountComponent } from './update-client-savings-account.component'; + +describe('UpdateClientSavingsAccountComponent', () => { + let component: UpdateClientSavingsAccountComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ UpdateClientSavingsAccountComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(UpdateClientSavingsAccountComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.ts b/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.ts new file mode 100644 index 000000000..0abd51263 --- /dev/null +++ b/src/app/clients/clients-view/client-actions/update-client-savings-account/update-client-savings-account.component.ts @@ -0,0 +1,69 @@ +/** Angular Imports */ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, FormBuilder } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; + +/** Custom Services */ +import { ClientsService } from 'app/clients/clients.service'; + +/** + * Clients Update Savings Account Component + */ +@Component({ + selector: 'mifosx-update-client-savings-account', + templateUrl: './update-client-savings-account.component.html', + styleUrls: ['./update-client-savings-account.component.scss'] +}) +export class UpdateClientSavingsAccountComponent implements OnInit { + + /** Client Update Savings Account form. */ + clientSavingsAccountForm: FormGroup; + /** Savings Accounts Officer Data */ + savingsAccounts: any; + /** Client Data */ + clientData: any; + + /** + * Fetches Client Action Data from `resolve` + * @param {FormBuilder} formBuilder Form Builder + * @param {SavingsService} savingsService Savings Service + * @param {ActivatedRoute} route Activated Route + * @param {Router} router Router + */ + constructor(private formBuilder: FormBuilder, + private clientsService: ClientsService, + private route: ActivatedRoute, + private router: Router) { + this.route.data.subscribe((data: { clientActionData: any }) => { + this.clientData = data.clientActionData; + }); + } + + /** + * Creates the client update savings account form. + */ + ngOnInit() { + this.savingsAccounts = this.clientData.savingAccountOptions; + this.createClientSavingsAccountForm(); + } + + /** + * Creates the client update savings account form. + */ + createClientSavingsAccountForm() { + this.clientSavingsAccountForm = this.formBuilder.group({ + 'savingsAccountId': [this.clientData.savingsAccountId] + }); + } + + /** + * Submits the form and update savings account for the client. + */ + submit() { + this.clientsService.executeClientCommand(this.clientData.id, 'updateSavingsAccount', this.clientSavingsAccountForm.value) + .subscribe(() => { + this.router.navigate(['../../'], { relativeTo: this.route }); + }); + } + +} diff --git a/src/app/clients/clients-view/clients-view.component.html b/src/app/clients/clients-view/clients-view.component.html index d2fcbed24..beea23cc1 100644 --- a/src/app/clients/clients-view/clients-view.component.html +++ b/src/app/clients/clients-view/clients-view.component.html @@ -44,6 +44,7 @@ + diff --git a/src/app/clients/clients-view/clients-view.component.ts b/src/app/clients/clients-view/clients-view.component.ts index f46809398..b606503ff 100644 --- a/src/app/clients/clients-view/clients-view.component.ts +++ b/src/app/clients/clients-view/clients-view.component.ts @@ -57,6 +57,7 @@ export class ClientsViewComponent implements OnInit { case 'Reject': case 'Activate': case 'Withdraw': + case 'Update Default Savings': this.router.navigate([`actions/${name}`], { relativeTo: this.route }); break; case 'Unassign Staff': diff --git a/src/app/clients/clients.module.ts b/src/app/clients/clients.module.ts index c53be0892..4106ce6a4 100644 --- a/src/app/clients/clients.module.ts +++ b/src/app/clients/clients.module.ts @@ -34,6 +34,7 @@ import { RejectClientComponent } from './clients-view/client-actions/reject-clie import { ActivateClientComponent } from './clients-view/client-actions/activate-client/activate-client.component'; import { WithdrawClientComponent } from './clients-view/client-actions/withdraw-client/withdraw-client.component'; import { TakeSurveyComponent } from './clients-view/client-actions/view-survey/take-survey/take-survey.component'; +import { UpdateClientSavingsAccountComponent } from './clients-view/client-actions/update-client-savings-account/update-client-savings-account.component'; /** @@ -73,7 +74,8 @@ import { TakeSurveyComponent } from './clients-view/client-actions/view-survey/t RejectClientComponent, ActivateClientComponent, WithdrawClientComponent, - TakeSurveyComponent + TakeSurveyComponent, + UpdateClientSavingsAccountComponent ], entryComponents: [ UploadDocumentDialogComponent, diff --git a/src/app/clients/common-resolvers/client-actions.resolver.ts b/src/app/clients/common-resolvers/client-actions.resolver.ts index b1331b2fe..75cfe95db 100644 --- a/src/app/clients/common-resolvers/client-actions.resolver.ts +++ b/src/app/clients/common-resolvers/client-actions.resolver.ts @@ -29,6 +29,7 @@ export class ClientActionsResolver implements Resolve { const clientId = route.paramMap.get('clientId') || route.parent.parent.paramMap.get('clientId'); switch (actionName) { case 'Assign Staff': + case 'Update Default Savings': return this.clientsService.getClientDataAndTemplate(clientId); case 'Survey': return this.clientsService.getSurveys(clientId);