diff --git a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.ts index 44a281508..e691adcf4 100644 --- a/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/reports/reports-screen.component.ts @@ -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(); } diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts index 1bebf9ab2..e2d1ff8f1 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts @@ -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, ) { this._filterInvalidDossierTemplates(); diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts index 9b18601e5..341aed718 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts @@ -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, ) {} diff --git a/apps/red-ui/src/app/services/report-template.service.ts b/apps/red-ui/src/app/services/report-template.service.ts new file mode 100644 index 000000000..573f695ff --- /dev/null +++ b/apps/red-ui/src/app/services/report-template.service.ts @@ -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 { + 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', multiFileReport); + } + if (file !== undefined) { + formParams.append('file', 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(`${this._defaultModelPath}/${dossierTemplateId}`); + } + + @Validate() + getAvailablePlaceholders(@RequiredParam() dossierTemplateId: string) { + return this._getOne([dossierTemplateId], 'placeholders'); + } + + downloadReportTemplate(dossierTemplateId: string, templateId: string, observe: 'response'): Observable>; + downloadReportTemplate(dossierTemplateId: string, templateId: string, observe: 'body'): Observable; + @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 }), + }); + } +} diff --git a/libs/red-ui-http/src/lib/api.module.ts b/libs/red-ui-http/src/lib/api.module.ts index cf571bf3f..16f3ce535 100644 --- a/libs/red-ui-http/src/lib/api.module.ts +++ b/libs/red-ui-http/src/lib/api.module.ts @@ -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,