From 894b9afeb67af79d17c2c0dd540d3179fe1481fd Mon Sep 17 00:00:00 2001
From: Muskan Khedia <36980003+muskankhedia@users.noreply.github.com>
Date: Mon, 13 Jul 2020 13:58:59 +0530
Subject: [PATCH] feat: add client action (surveys) (#618)
Fixes: #617
---
.../client-actions.component.html | 2 +-
.../client-actions.component.ts | 6 +-
.../view-survey/view-survey.component.html | 71 +++++++++++++++++++
.../view-survey/view-survey.component.scss | 8 +++
.../view-survey/view-survey.component.spec.ts | 25 +++++++
.../view-survey/view-survey.component.ts | 71 +++++++++++++++++++
.../clients-view/clients-view.component.html | 1 +
.../clients-view/clients-view.component.ts | 1 +
src/app/clients/clients.module.ts | 5 +-
src/app/clients/clients.service.ts | 7 ++
.../client-actions.resolver.ts | 2 +
11 files changed, 194 insertions(+), 5 deletions(-)
create mode 100644 src/app/clients/clients-view/client-actions/view-survey/view-survey.component.html
create mode 100644 src/app/clients/clients-view/client-actions/view-survey/view-survey.component.scss
create mode 100644 src/app/clients/clients-view/client-actions/view-survey/view-survey.component.spec.ts
create mode 100644 src/app/clients/clients-view/client-actions/view-survey/view-survey.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 9e041ae99..76d3132b0 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
@@ -1,3 +1,3 @@
-
+
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 3301c0b66..7101f6d16 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
@@ -15,10 +15,12 @@ export class ClientActionsComponent {
/** Flag object to store possible actions and render appropriate UI to the user */
actions: {
'Assign Staff': boolean
- 'Close': boolean
+ 'Close': boolean,
+ 'Survey': boolean
} = {
'Assign Staff': false,
- 'Close': false
+ 'Close': false,
+ 'Survey': false
};
/**
diff --git a/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.html b/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.html
new file mode 100644
index 000000000..8a20c6192
--- /dev/null
+++ b/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
List of All Surveys
+
+
+
+
+
+
+
+
+
+
+
+ Filter
+
+
+
+
+
+
+
+
+
+ | Survey |
+ {{ surveydata.surveyName }} |
+
+
+
+ Created By |
+ {{ surveydata.createdby }} |
+
+
+
+ Date |
+ {{ surveydata.date | date }} |
+
+
+
+ Score |
+ {{ surveydata.score }} |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.scss b/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.scss
new file mode 100644
index 000000000..a7ee88af4
--- /dev/null
+++ b/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.scss
@@ -0,0 +1,8 @@
+.headingContent{
+ margin-bottom: 1%;
+ margin-top: 1%;
+}
+
+.headingName {
+ display: block;
+}
diff --git a/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.spec.ts b/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.spec.ts
new file mode 100644
index 000000000..efd6b8094
--- /dev/null
+++ b/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ViewSurveyComponent } from './view-survey.component';
+
+describe('ViewSurveyComponent', () => {
+ let component: ViewSurveyComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ViewSurveyComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ViewSurveyComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.ts b/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.ts
new file mode 100644
index 000000000..7b635ab94
--- /dev/null
+++ b/src/app/clients/clients-view/client-actions/view-survey/view-survey.component.ts
@@ -0,0 +1,71 @@
+/** Angular Imports */
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
+import { MatTableDataSource, MatPaginator, MatSort } from '@angular/material';
+
+/**
+ * View Survey component.
+ */
+@Component({
+ selector: 'mifosx-view-survey',
+ templateUrl: './view-survey.component.html',
+ styleUrls: ['./view-survey.component.scss']
+})
+export class ViewSurveyComponent implements OnInit {
+
+ surveyData: any;
+ /** Data source for view surveys table. */
+ dataSource: MatTableDataSource;
+ /** Columns to be displayed in list of surveys table. */
+ displayedColumns: string[] = ['surveyName', 'createdBy', 'date', 'score'];
+ /** Paginator for list of surveys table. */
+ @ViewChild(MatPaginator) paginator: MatPaginator;
+ /** Sorter for list of surveys table. */
+ @ViewChild(MatSort) sort: MatSort;
+
+
+ /**
+ * Retrieves the survey data from `resolve`.
+ * @param {ActivatedRoute} route Activated Route.
+ */
+ constructor(private route: ActivatedRoute) {
+ this.route.data.subscribe((data: { clientActionData: any }) => {
+ this.surveyData = data.clientActionData;
+ });
+ }
+
+ ngOnInit() {
+ this.constructSurvey(this.surveyData);
+ }
+
+ /**
+ * Constructs the list of survey data
+ * @param data Survey Data
+ */
+ constructSurvey(data: any) {
+ const surveys: any[] = [];
+ data.forEach((ele: { id: number, userId: number, username: string, clientId: number, surveyId: number, surveyName: string, scorecardValues: Object[] }) => {
+ ele.scorecardValues.forEach((element: { createdOn: number, value: number }) => {
+ const item = {} as { surveyName: string, createdby: string, date: number, score: number };
+ item.surveyName = ele.surveyName;
+ item.createdby = ele.username;
+ item.date = element.createdOn;
+ item.score = element.value;
+ surveys.push(item);
+ });
+ });
+
+ this.dataSource = new MatTableDataSource(surveys);
+ this.dataSource.paginator = this.paginator;
+ this.dataSource.sort = this.sort;
+ }
+
+ /**
+ * Filters data in list of surveys table based on passed value.
+ * @param {string} filterValue Value to filter data.
+ */
+ applyFilter(filterValue: string) {
+ this.dataSource.filter = filterValue.trim().toLowerCase();
+ }
+
+}
diff --git a/src/app/clients/clients-view/clients-view.component.html b/src/app/clients/clients-view/clients-view.component.html
index 504ac821a..eac9695e4 100644
--- a/src/app/clients/clients-view/clients-view.component.html
+++ b/src/app/clients/clients-view/clients-view.component.html
@@ -43,6 +43,7 @@
+
diff --git a/src/app/clients/clients-view/clients-view.component.ts b/src/app/clients/clients-view/clients-view.component.ts
index 270c33bdf..a8aed99ae 100644
--- a/src/app/clients/clients-view/clients-view.component.ts
+++ b/src/app/clients/clients-view/clients-view.component.ts
@@ -52,6 +52,7 @@ export class ClientsViewComponent implements OnInit {
switch (name) {
case 'Assign Staff':
case 'Close':
+ case 'Survey':
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 5b7003a34..0c73222f0 100644
--- a/src/app/clients/clients.module.ts
+++ b/src/app/clients/clients.module.ts
@@ -29,7 +29,7 @@ import { ClientActionsComponent } from './clients-view/client-actions/client-act
import { ClientAssignStaffComponent } from './clients-view/client-actions/client-assign-staff/client-assign-staff.component';
import { UnassignStaffDialogComponent } from './clients-view/custom-dialogs/unassign-staff-dialog/unassign-staff-dialog.component';
import { CloseClientComponent } from './clients-view/client-actions/close-client/close-client.component';
-
+import { ViewSurveyComponent } from './clients-view/client-actions/view-survey/view-survey.component';
/**
* Clients Module
@@ -63,7 +63,8 @@ import { CloseClientComponent } from './clients-view/client-actions/close-client
ClientActionsComponent,
ClientAssignStaffComponent,
UnassignStaffDialogComponent,
- CloseClientComponent
+ CloseClientComponent,
+ ViewSurveyComponent
],
entryComponents: [
UploadDocumentDialogComponent,
diff --git a/src/app/clients/clients.service.ts b/src/app/clients/clients.service.ts
index bacc50415..c79fc90fc 100644
--- a/src/app/clients/clients.service.ts
+++ b/src/app/clients/clients.service.ts
@@ -223,4 +223,11 @@ export class ClientsService {
return this.http.get(`/clients/template`, { params: httpParams });
}
+ /**
+ * returns the list of survey data of the particular Client
+ * @param clientId
+ */
+ getSurveys(clientId: string) {
+ return this.http.get(`/surveys/scorecards/clients/${clientId}`);
+ }
}
diff --git a/src/app/clients/common-resolvers/client-actions.resolver.ts b/src/app/clients/common-resolvers/client-actions.resolver.ts
index dc395ea82..761f4ca00 100644
--- a/src/app/clients/common-resolvers/client-actions.resolver.ts
+++ b/src/app/clients/common-resolvers/client-actions.resolver.ts
@@ -32,6 +32,8 @@ export class ClientActionsResolver implements Resolve