74 lines
2.3 KiB
TypeScript
74 lines
2.3 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
|
|
import { TranslateService } from '@ngx-translate/core';
|
|
|
|
import { PdfDocumentService } from 'app/core/services/pdf-document.service';
|
|
import { UserPdfService } from './user-pdf.service';
|
|
import { ViewUser } from '../models/view-user';
|
|
|
|
/**
|
|
* Export service to handle various kind of exporting necessities for participants.
|
|
*/
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class UserPdfExportService {
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param translate TranslateService - handle translations
|
|
* @param userPdfService UserPdfService - convert users to PDF
|
|
* @param pdfDocumentService PdfDocumentService Actual pdfmake functions and global doc definitions
|
|
*/
|
|
public constructor(
|
|
private translate: TranslateService,
|
|
private userPdfService: UserPdfService,
|
|
private pdfDocumentService: PdfDocumentService
|
|
) {}
|
|
|
|
/**
|
|
* Exports a single user with access information to PDF
|
|
*
|
|
* @param user The user to export
|
|
*/
|
|
public exportSingleUserAccessPDF(user: ViewUser): void {
|
|
const doc = this.userPdfService.userAccessToDocDef(user);
|
|
const filename = `${this.translate.instant('Access-data')} ${user.short_name}`;
|
|
const metadata = {
|
|
title: filename
|
|
};
|
|
this.pdfDocumentService.download(doc, filename, metadata);
|
|
}
|
|
|
|
/**
|
|
* Exports multiple users with access information to a collection of PDFs
|
|
*
|
|
* @param Users
|
|
*/
|
|
public exportMultipleUserAccessPDF(users: ViewUser[]): void {
|
|
const doc: object[] = [];
|
|
users.forEach(user => {
|
|
doc.push(this.userPdfService.userAccessToDocDef(user));
|
|
doc.push({ text: '', pageBreak: 'after' });
|
|
});
|
|
const filename = this.translate.instant('Access-data');
|
|
const metadata = {
|
|
title: filename
|
|
};
|
|
this.pdfDocumentService.download(doc, filename, metadata);
|
|
}
|
|
|
|
/**
|
|
* Export a participant list
|
|
* @param users: The users to appear on that list
|
|
*
|
|
*/
|
|
public exportUserList(users: ViewUser[]): void {
|
|
const filename = this.translate.instant('List of participants');
|
|
const metadata = {
|
|
title: filename
|
|
};
|
|
this.pdfDocumentService.download(this.userPdfService.createUserListDocDef(users), filename, metadata);
|
|
}
|
|
}
|