add report template service

This commit is contained in:
Dan Percic 2021-10-14 21:35:54 +03:00
parent df5dc1c30e
commit d8594964e9
5 changed files with 71 additions and 15 deletions

View File

@ -1,7 +1,7 @@
import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { AppStateService } from '@state/app-state.service';
import { PlaceholdersResponse, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http';
import { PlaceholdersResponse, ReportTemplate } from '@redaction/red-ui-http';
import { download } from '@utils/file-download-utils';
import { ConfirmationDialogInput, LoadingService, Toaster } from '@iqser/common-ui';
import { PermissionsService } from '@services/permissions.service';
@ -13,6 +13,7 @@ import { removeBraces } from '@utils/functions';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { ReportTemplateService } from '@services/report-template.service';
interface Placeholder {
placeholder: string;
@ -38,7 +39,7 @@ export class ReportsScreenComponent implements OnInit {
private readonly _activatedRoute: ActivatedRoute,
private readonly _appStateService: AppStateService,
private readonly _dossierTemplatesService: DossierTemplatesService,
private readonly _reportTemplateService: ReportTemplateControllerService,
private readonly _reportTemplateService: ReportTemplateService,
private readonly _dialogService: AdminDialogService,
private readonly _toaster: Toaster,
private readonly _loadingService: LoadingService,
@ -120,7 +121,7 @@ export class ReportsScreenComponent implements OnInit {
}
private async _deleteTemplate(template: ReportTemplate) {
await this._reportTemplateService.deleteTemplate(template.dossierTemplateId, template.templateId).toPromise();
await this._reportTemplateService.delete(template.dossierTemplateId, template.templateId).toPromise();
await this._loadReportTemplates();
}

View File

@ -1,18 +1,13 @@
import { Component } from '@angular/core';
import { MatDialogRef } from '@angular/material/dialog';
import {
DossierRequest,
DownloadFileType,
IDossierTemplate,
ReportTemplate,
ReportTemplateControllerService,
} from '@redaction/red-ui-http';
import { DossierRequest, DownloadFileType, IDossierTemplate, ReportTemplate } from '@redaction/red-ui-http';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import * as moment from 'moment';
import { downloadTypesTranslations } from '../../../../translations/download-types-translations';
import { IconButtonTypes } from '@iqser/common-ui';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { ReportTemplateService } from '@services/report-template.service';
@Component({
templateUrl: './add-dossier-dialog.component.html',
@ -34,7 +29,7 @@ export class AddDossierDialogComponent {
private readonly _dossiersService: DossiersService,
private readonly _dossierTemplatesService: DossierTemplatesService,
private readonly _formBuilder: FormBuilder,
private readonly _reportTemplateController: ReportTemplateControllerService,
private readonly _reportTemplateController: ReportTemplateService,
readonly dialogRef: MatDialogRef<AddDossierDialogComponent>,
) {
this._filterInvalidDossierTemplates();

View File

@ -1,10 +1,11 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { DownloadFileType, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http';
import { DownloadFileType, ReportTemplate } from '@redaction/red-ui-http';
import { FormBuilder, FormGroup } from '@angular/forms';
import { Dossier } from '@state/model/dossier';
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
import { downloadTypesTranslations } from '../../../../../translations/download-types-translations';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { ReportTemplateService } from '@services/report-template.service';
@Component({
selector: 'redaction-edit-dossier-download-package',
@ -24,7 +25,7 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS
constructor(
private readonly _dossiersService: DossiersService,
private readonly _reportTemplateController: ReportTemplateControllerService,
private readonly _reportTemplateController: ReportTemplateService,
private readonly _formBuilder: FormBuilder,
) {}

View File

@ -0,0 +1,61 @@
import { Injectable, Injector } from '@angular/core';
import { GenericService, RequiredParam, Validate } from '@iqser/common-ui';
import { PlaceholdersResponse, ReportTemplate } from '@redaction/red-ui-http';
import { Observable } from 'rxjs';
import { HttpResponse } from '@angular/common/http';
import { HeadersConfiguration } from '../../../../../libs/common-ui/src/lib/utils/headers-configuration';
@Injectable({
providedIn: 'root',
})
export class ReportTemplateService extends GenericService<unknown> {
constructor(protected readonly _injector: Injector) {
super(_injector, 'templateUpload');
}
@Validate()
uploadTemplateForm(@RequiredParam() dossierTemplateId: string, multiFileReport?: boolean, file?: Blob) {
const formParams = new FormData();
if (multiFileReport !== undefined) {
formParams.append('multiFileReport', <any>multiFileReport);
}
if (file !== undefined) {
formParams.append('file', <any>file);
}
return this._http.post(`/${this._defaultModelPath}/${dossierTemplateId}`, formParams, {
observe: 'body',
});
}
@Validate()
delete(@RequiredParam() dossierTemplateId: string, @RequiredParam() templateId: string) {
return super.delete({}, `${this._defaultModelPath}/${dossierTemplateId}/${templateId}`);
}
@Validate()
getAvailableReportTemplates(@RequiredParam() dossierTemplateId: string) {
return this.getAll<ReportTemplate[]>(`${this._defaultModelPath}/${dossierTemplateId}`);
}
@Validate()
getAvailablePlaceholders(@RequiredParam() dossierTemplateId: string) {
return this._getOne<PlaceholdersResponse>([dossierTemplateId], 'placeholders');
}
downloadReportTemplate(dossierTemplateId: string, templateId: string, observe: 'response'): Observable<HttpResponse<Blob>>;
downloadReportTemplate(dossierTemplateId: string, templateId: string, observe: 'body'): Observable<Blob>;
@Validate()
downloadReportTemplate(
@RequiredParam() dossierTemplateId: string,
@RequiredParam() templateId: string,
observe: 'body' | 'response' = 'body',
) {
return this._http.request('get', `/${this._defaultModelPath}/${dossierTemplateId}/${templateId}`, {
responseType: 'blob',
observe: observe,
headers: HeadersConfiguration.getHeaders({ contentType: false }),
});
}
}

View File

@ -1,7 +1,6 @@
import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';
import { Configuration } from './configuration';
import { HttpClient } from '@angular/common/http';
import { ReportTemplateControllerService } from './api/reportTemplateController.service';
import { RulesControllerService } from './api/rulesController.service';
import { SmtpConfigurationControllerService } from './api/smtpConfigurationController.service';
import { UploadControllerService } from './api/uploadController.service';
@ -15,7 +14,6 @@ import { NotificationControllerService } from './api/notificationController.serv
declarations: [],
exports: [],
providers: [
ReportTemplateControllerService,
RulesControllerService,
SmtpConfigurationControllerService,
UploadControllerService,