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 8a54bd743..bed88c9c7 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
@@ -12,4 +12,5 @@
-
\ No newline at end of file
+
+
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 30aa9c23f..638855923 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
@@ -28,6 +28,7 @@ export class ClientActionsComponent {
'Undo Rejection': boolean
'Add Charge': boolean
'Take Survey': boolean
+ 'Client Screen Reports': boolean
} = {
'Assign Staff': false,
'Close': false,
@@ -42,7 +43,8 @@ export class ClientActionsComponent {
'Reactivate': false,
'Undo Rejection': false,
'Add Charge': false,
- 'Take Survey': false
+ 'Take Survey': false,
+ 'Client Screen Reports': false
};
/**
diff --git a/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.html b/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.html
new file mode 100644
index 000000000..46c603c73
--- /dev/null
+++ b/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
Please select a screen report.
+
+
+
+
+
diff --git a/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.scss b/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.scss
new file mode 100644
index 000000000..8d249eb07
--- /dev/null
+++ b/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.scss
@@ -0,0 +1,6 @@
+.container {
+ max-width: 37rem;
+ .print {
+ align-self: flex-end;
+ }
+}
diff --git a/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.spec.ts b/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.spec.ts
new file mode 100644
index 000000000..59948cf1d
--- /dev/null
+++ b/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ClientScreenReportsComponent } from './client-screen-reports.component';
+
+describe('ClientScreenReportsComponent', () => {
+ let component: ClientScreenReportsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ClientScreenReportsComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ClientScreenReportsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.ts b/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.ts
new file mode 100644
index 000000000..bb097458e
--- /dev/null
+++ b/src/app/clients/clients-view/client-actions/client-screen-reports/client-screen-reports.component.ts
@@ -0,0 +1,91 @@
+/** Angular Imports */
+import { Component, OnInit, Renderer2, ViewChild, ElementRef, SecurityContext } from '@angular/core';
+import { FormGroup, FormBuilder } from '@angular/forms';
+import { ActivatedRoute, Router } from '@angular/router';
+
+/** Custom Services */
+import { ClientsService } from 'app/clients/clients.service';
+import { DomSanitizer } from '@angular/platform-browser';
+
+/**
+ * Client Screen Reports Component.
+ */
+@Component({
+ selector: 'mifosx-client-screen-reports',
+ templateUrl: './client-screen-reports.component.html',
+ styleUrls: ['./client-screen-reports.component.scss']
+})
+export class ClientScreenReportsComponent implements OnInit {
+
+ /** Client Screen Reportform. */
+ clientScreenReportForm: FormGroup;
+ /** Templates Data */
+ templatesData: any;
+ /** Client Id */
+ clientId: any;
+ /** HTML Template */
+ template: any;
+
+ /** Screen report output reference */
+ @ViewChild('screenReport') screenReportRef: ElementRef;
+
+ /**
+ * Fetches Client Action Data from `resolve`
+ * @param {FormBuilder} formBuilder Form Builder
+ * @param {ClientsService} clientsService Clients Service
+ * @param {ActivatedRoute} route Activated Route
+ * @param {DomSanitizer} sanitizer DOM Sanitizer
+ * @param {Renderer2} renderer Renderer 2
+ */
+ constructor(private formBuilder: FormBuilder,
+ private clientsService: ClientsService,
+ private route: ActivatedRoute,
+ private sanitizer: DomSanitizer,
+ private renderer: Renderer2) {
+ this.route.data.subscribe((data: { clientActionData: any }) => {
+ this.templatesData = data.clientActionData;
+ });
+ this.clientId = this.route.parent.snapshot.params['clientId'];
+ }
+
+ /**
+ * Creates the client screen report form.
+ */
+ ngOnInit() {
+ this.createClientScreenReportForm();
+ }
+
+ /**
+ * Creates the client screen report form.
+ */
+ createClientScreenReportForm() {
+ this.clientScreenReportForm = this.formBuilder.group({
+ 'templateId': ['']
+ });
+ }
+
+ /**
+ * Prints client screen report
+ */
+ print() {
+ const templateWindow = window.open('', 'Screen Report', 'height=400,width=600');
+ templateWindow.document.write('');
+ templateWindow.document.write('');
+ templateWindow.document.write(this.template);
+ templateWindow.document.write('');
+ templateWindow.print();
+ templateWindow.close();
+ }
+
+ /**
+ * Submits the form and generates screen report for the client.
+ */
+ generate() {
+ const templateId = this.clientScreenReportForm.get('templateId').value;
+ this.clientsService.retrieveClientReportTemplate(templateId, this.clientId).subscribe((response: any) => {
+ this.template = this.sanitizer.sanitize(SecurityContext.HTML, response);
+ this.renderer.setProperty(this.screenReportRef.nativeElement, 'innerHTML', this.template);
+ });
+ }
+
+}
diff --git a/src/app/clients/clients-view/clients-view.component.html b/src/app/clients/clients-view/clients-view.component.html
index 674920155..e20526ffa 100644
--- a/src/app/clients/clients-view/clients-view.component.html
+++ b/src/app/clients/clients-view/clients-view.component.html
@@ -51,6 +51,7 @@
+
diff --git a/src/app/clients/clients-view/clients-view.component.ts b/src/app/clients/clients-view/clients-view.component.ts
index 2eb6d2744..5bf695670 100644
--- a/src/app/clients/clients-view/clients-view.component.ts
+++ b/src/app/clients/clients-view/clients-view.component.ts
@@ -71,6 +71,7 @@ export class ClientsViewComponent implements OnInit {
case 'Reactivate':
case 'Undo Rejection':
case 'Add Charge':
+ case 'Client Screen Reports':
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 85a78941b..7cc664ab7 100644
--- a/src/app/clients/clients.module.ts
+++ b/src/app/clients/clients.module.ts
@@ -48,6 +48,7 @@ import { ViewSignatureDialogComponent } from './clients-view/custom-dialogs/view
import { UploadSignatureDialogComponent } from './clients-view/custom-dialogs/upload-signature-dialog/upload-signature-dialog.component';
import { DeleteSignatureDialogComponent } from './clients-view/custom-dialogs/delete-signature-dialog/delete-signature-dialog.component';
import { UploadImageDialogComponent } from './clients-view/custom-dialogs/upload-image-dialog/upload-image-dialog.component';
+import { ClientScreenReportsComponent } from './clients-view/client-actions/client-screen-reports/client-screen-reports.component';
/**
@@ -101,7 +102,8 @@ import { UploadImageDialogComponent } from './clients-view/custom-dialogs/upload
ViewSignatureDialogComponent,
UploadSignatureDialogComponent,
DeleteSignatureDialogComponent,
- UploadImageDialogComponent
+ UploadImageDialogComponent,
+ ClientScreenReportsComponent
],
entryComponents: [
UploadDocumentDialogComponent,
diff --git a/src/app/clients/clients.service.ts b/src/app/clients/clients.service.ts
index 086de13a6..08796cba7 100644
--- a/src/app/clients/clients.service.ts
+++ b/src/app/clients/clients.service.ts
@@ -301,6 +301,18 @@ export class ClientsService {
return this.http.post(`/clients/${clientId}/charges`, charge);
}
+ getClientReportTemplates() {
+ const httpParams = new HttpParams()
+ .set('entityId', '0')
+ .set('typeId', '0');
+ return this.http.get('/templates', { params: httpParams });
+ }
+
+ retrieveClientReportTemplate(templateId: string, clientId: string) {
+ const httpParams = new HttpParams().set('clientId', clientId);
+ return this.http.post(`/templates/${templateId}`, {}, { params: httpParams, responseType: 'text' });
+ }
+
/**
* @returns {Observable} Offices data
*/
diff --git a/src/app/clients/common-resolvers/client-actions.resolver.ts b/src/app/clients/common-resolvers/client-actions.resolver.ts
index 03e10fffb..787ee707e 100644
--- a/src/app/clients/common-resolvers/client-actions.resolver.ts
+++ b/src/app/clients/common-resolvers/client-actions.resolver.ts
@@ -28,9 +28,6 @@ export class ClientActionsResolver implements Resolve