OpenSlides/client/src/app/site/users/services/user-pdf-export.service.ts

74 lines
2.3 KiB
TypeScript
Raw Normal View History

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('User')} ${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('User');
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);
}
}