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 { return this.clientsService.getClientDataAndTemplate(clientId); case 'Close': return this.clientsService.getClientCommandTemplate('close'); + case 'Survey': + return this.clientsService.getSurveys(clientId); default: return undefined; }