Manage justifications

This commit is contained in:
Adina Țeudan 2021-10-11 21:04:15 +03:00
parent 57c345d404
commit 48b17eddec
84 changed files with 593 additions and 129 deletions

View File

@ -9,7 +9,7 @@ import { TranslateService } from '@ngx-translate/core';
import { SpotlightSearchAction } from '@components/spotlight-search/spotlight-search-action';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { distinctUntilChanged, filter, map, startWith } from 'rxjs/operators';
import { DossiersService } from '../../modules/dossier/services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
interface MenuItem {
readonly name: string;

View File

@ -8,7 +8,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { UserService } from '@services/user.service';
import { NotificationType, NotificationTypeEnum } from '@models/notification-types';
import { notificationsTranslations } from '../../translations/notifications-translations';
import { DossiersService } from '../../modules/dossier/services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Component({
selector: 'redaction-notifications',

View File

@ -1,4 +1,4 @@
import { Change, Comment, LegalBasis, Rectangle } from '@redaction/red-ui-http';
import { Change, Comment, ILegalBasis, Rectangle } from '@redaction/red-ui-http';
export interface RedactionLogEntryWrapper {
changes?: Array<Change>;
@ -29,7 +29,7 @@ export interface RedactionLogEntryWrapper {
textBefore?: string;
value?: string;
image?: boolean;
legalBasisList?: Array<LegalBasis>;
legalBasisList?: Array<ILegalBasis>;
recommendation?: boolean;
recommendationAnnotationId?: string;

View File

@ -0,0 +1,19 @@
import { ILegalBasis } from '@redaction/red-ui-http';
import { IListable } from '@iqser/common-ui';
export class Justification implements ILegalBasis, IListable {
readonly id: string;
readonly description?: string;
readonly name?: string;
readonly reason?: string;
readonly searchKey: string;
constructor(justification: ILegalBasis) {
this.id = justification.name;
this.description = justification.description;
this.name = justification.name;
this.reason = justification.reason;
this.searchKey = this.name;
}
}

View File

@ -20,6 +20,7 @@ import { ReportsScreenComponent } from './screens/reports/reports-screen.compone
import { DossierAttributesListingScreenComponent } from './screens/dossier-attributes-listing/dossier-attributes-listing-screen.component';
import { TrashScreenComponent } from './screens/trash/trash-screen.component';
import { GeneralConfigScreenComponent } from './screens/general-config/general-config-screen.component';
import { BaseAdminScreenComponent } from './base-admin-screen/base-admin-screen.component';
const routes = [
{ path: '', redirectTo: 'dossier-templates', pathMatch: 'full' },
@ -108,6 +109,12 @@ const routes = [
routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard],
},
},
{
path: 'justifications',
component: BaseAdminScreenComponent,
canActivate: [CompositeRouteGuard],
loadChildren: () => import('./screens/justifications/justifications.module').then(m => m.JustificationsModule),
},
{ path: '', redirectTo: 'dictionaries', pathMatch: 'full' },
],
},

View File

@ -61,6 +61,7 @@ export class AdminSideNavComponent {
{ screen: 'file-attributes', label: _('file-attributes') },
{ screen: 'dossier-attributes', label: _('dossier-attributes') },
{ screen: 'reports', label: _('reports') },
{ screen: 'justifications', label: _('justifications') },
],
};

View File

@ -41,6 +41,7 @@ import { DossierAttributesListingScreenComponent } from './screens/dossier-attri
import { TrashScreenComponent } from './screens/trash/trash-screen.component';
import { AuditService } from './services/audit.service';
import { DigitalSignatureService } from './services/digital-signature.service';
import { BaseAdminScreenComponent } from './base-admin-screen/base-admin-screen.component';
const dialogs = [
AddEditDossierTemplateDialogComponent,
@ -83,6 +84,7 @@ const components = [
AdminSideNavComponent,
ResetPasswordComponent,
UserDetailsComponent,
BaseAdminScreenComponent,
...dialogs,
...screens,

View File

@ -0,0 +1,26 @@
<!--TODO: This is only used for justifications for now, should be used for all admin screens-->
<section>
<div class="page-header">
<redaction-admin-breadcrumbs class="flex-1"></redaction-admin-breadcrumbs>
<div class="flex-1 actions">
<redaction-dossier-template-actions></redaction-dossier-template-actions>
<iqser-circle-button
[routerLink]="['../..']"
[tooltip]="'common.close' | translate"
icon="iqser:close"
tooltipPosition="below"
></iqser-circle-button>
</div>
</div>
<div class="content-inner">
<div class="overlay-shadow"></div>
<redaction-admin-side-nav type="dossierTemplates"></redaction-admin-side-nav>
<router-outlet></router-outlet>
</div>
</section>

View File

@ -0,0 +1,9 @@
import { ChangeDetectionStrategy, Component } from '@angular/core';
@Component({
selector: 'redaction-base-admin-screen',
templateUrl: './base-admin-screen.component.html',
styleUrls: ['./base-admin-screen.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class BaseAdminScreenComponent {}

View File

@ -2,7 +2,7 @@ import { Component, Input } from '@angular/core';
import { AppStateService } from '@state/app-state.service';
import { UserPreferenceService } from '@services/user-preference.service';
import { PermissionsService } from '@services/permissions.service';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Component({
selector: 'redaction-admin-breadcrumbs',

View File

@ -5,7 +5,7 @@ import { AdminDialogService } from '../../services/admin-dialog.service';
import { CircleButtonTypes, LoadingService, Toaster } from '@iqser/common-ui';
import { UserService } from '@services/user.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Component({
selector: 'redaction-dossier-template-actions',

View File

@ -7,7 +7,7 @@ import { Moment } from 'moment';
import { DownloadFileType, IDossierTemplate } from '@redaction/red-ui-http';
import { applyIntervalConstraints } from '@utils/date-inputs-utils';
import { downloadTypesTranslations } from '../../../../translations/download-types-translations';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Component({
templateUrl: './add-edit-dossier-template-dialog.component.html',

View File

@ -2,7 +2,7 @@ import { Component, Inject } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { List, LoadingService } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DossiersService } from '../../../dossier/services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { UserService } from '@services/user.service';
@Component({

View File

@ -8,7 +8,7 @@ import { map, startWith } from 'rxjs/operators';
import { DefaultListingServices, IListable, ListingComponent, TableColumnConfig, Toaster } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { FileAttributeConfig } from '@models/file/file-attribute-config';
import { FileAttributesService } from '../../../dossier/services/file-attributes.service';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
export interface Field extends IListable {
id: string;

View File

@ -16,7 +16,7 @@ import { defaultColorsTranslations } from '../../translations/default-colors-tra
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { UserService } from '@services/user.service';
import { DictionaryService } from '@shared/services/dictionary.service';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
interface ListItem extends IListable {
readonly key: string;

View File

@ -18,7 +18,7 @@ import { AdminDialogService } from '../../services/admin-dialog.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { UserService } from '@services/user.service';
import { DictionaryService } from '@shared/services/dictionary.service';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
const toChartConfig = (dict: TypeValue): DoughnutChartConfig => ({
value: dict.entries?.length ?? 0,

View File

@ -10,7 +10,7 @@ import { DictionaryService } from '@shared/services/dictionary.service';
import { TypeValue } from '@models/file/type-value';
import { CircleButtonTypes, LoadingService } from '@iqser/common-ui';
import { UserService } from '@services/user.service';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Component({
templateUrl: './dictionary-overview-screen.component.html',

View File

@ -17,7 +17,7 @@ import { dossierAttributeTypesTranslations } from '../../translations/dossier-at
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { UserService } from '@services/user.service';
import { DossierAttributeConfig } from '@state/model/dossier-attribute-config';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Component({
templateUrl: './dossier-attributes-listing-screen.component.html',

View File

@ -16,7 +16,7 @@ import {
import { UserService } from '@services/user.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { RouterHistoryService } from '@services/router-history.service';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Component({
templateUrl: './dossier-templates-listing-screen.component.html',

View File

@ -15,8 +15,8 @@ import { fileAttributeTypesTranslations } from '../../translations/file-attribut
import { UserService } from '@services/user.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { FileAttributeConfig } from '@models/file/file-attribute-config';
import { FileAttributesService } from '../../../dossier/services/file-attributes.service';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Component({
templateUrl: './file-attributes-listing-screen.component.html',

View File

@ -0,0 +1,55 @@
<section class="dialog">
<div
[translateParams]="{
type: justification ? 'edit' : 'create',
name: justification?.name
}"
[translate]="'add-edit-justification.title'"
class="dialog-header heading-l"
></div>
<form (submit)="save()" [formGroup]="justificationForm">
<div class="dialog-content">
<div class="iqser-input-group required w-400">
<label translate="add-edit-justification.form.name"></label>
<input
[placeholder]="'add-edit-justification.form.name-placeholder' | translate"
formControlName="name"
name="name"
type="text"
/>
</div>
<div class="iqser-input-group required w-400">
<label translate="add-edit-justification.form.reason"></label>
<input
[placeholder]="'add-edit-justification.form.reason-placeholder' | translate"
formControlName="reason"
name="reason"
type="text"
/>
</div>
<div class="iqser-input-group required w-400">
<label translate="add-edit-justification.form.description"></label>
<textarea
[placeholder]="'add-edit-justification.form.description-placeholder' | translate"
formControlName="description"
iqserHasScrollbar
name="description"
rows="5"
type="text"
></textarea>
</div>
</div>
<div class="dialog-actions">
<button [disabled]="justificationForm.invalid || !changed" color="primary" mat-flat-button type="submit">
{{ 'add-edit-justification.actions.save' | translate }}
</button>
<div class="all-caps-label cancel" mat-dialog-close translate="add-edit-justification.actions.cancel"></div>
</div>
</form>
<iqser-circle-button class="dialog-close" icon="iqser:close" mat-dialog-close></iqser-circle-button>
</section>

View File

@ -0,0 +1,52 @@
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { Justification } from '@models/justification.model';
import { JustificationsService } from '@services/entity-services/justifications.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { LoadingService } from '@iqser/common-ui';
@Component({
selector: 'redaction-add-edit-justification-dialog',
templateUrl: './add-edit-justification-dialog.component.html',
styleUrls: ['./add-edit-justification-dialog.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class AddEditJustificationDialogComponent {
justificationForm: FormGroup;
constructor(
private readonly _formBuilder: FormBuilder,
private readonly _justificationService: JustificationsService,
private readonly _dossierTemplatesService: DossierTemplatesService,
private readonly _loadingService: LoadingService,
public dialogRef: MatDialogRef<AddEditJustificationDialogComponent>,
@Inject(MAT_DIALOG_DATA) public justification: Justification,
) {
this.justificationForm = this._formBuilder.group({
name: [{ value: this.justification?.name, disabled: !!this.justification }, Validators.required],
reason: [this.justification?.reason, Validators.required],
description: [this.justification?.description, Validators.required],
});
}
get changed(): boolean {
return (
!this.justification ||
Object.keys(this.justificationForm.getRawValue()).reduce(
(prev, key) => prev || this.justification[key] !== this.justificationForm.get(key).value,
false,
)
);
}
async save() {
const dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId;
this._loadingService.start();
await this._justificationService.createOrUpdate(this.justificationForm.getRawValue(), dossierTemplateId).toPromise();
await this._justificationService.loadAll(dossierTemplateId).toPromise();
this._loadingService.stop();
this.dialogRef.close(true);
}
}

View File

@ -0,0 +1,61 @@
import { Injectable } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import {
ConfirmationDialogComponent,
ConfirmationDialogInput,
DialogConfig,
DialogService,
ListingService,
LoadingService,
TitleColors,
} from '@iqser/common-ui';
import { AddEditJustificationDialogComponent } from './add-edit-justification-dialog/add-edit-justification-dialog.component';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { JustificationsService } from '@services/entity-services/justifications.service';
import { Justification } from '@models/justification.model';
type DialogType = 'confirm' | 'addEditJustification';
@Injectable()
export class JustificationsDialogService extends DialogService<DialogType> {
protected readonly _config: DialogConfig<DialogType> = {
confirm: {
component: ConfirmationDialogComponent,
},
addEditJustification: {
component: AddEditJustificationDialogComponent,
dialogConfig: { autoFocus: true },
},
};
constructor(
protected readonly _dialog: MatDialog,
private readonly _loadingService: LoadingService,
private readonly _dossierTemplatesService: DossierTemplatesService,
private readonly _justificationService: JustificationsService,
) {
super(_dialog);
}
confirmDelete(justifications: Justification[], listingService: ListingService<Justification>) {
const data = new ConfirmationDialogInput({
title: _('confirmation-dialog.delete-justification.title'),
titleColor: TitleColors.WARN,
question: _('confirmation-dialog.delete-justification.question'),
translateParams: {
count: justifications.length,
justificationName: justifications[0].name,
},
});
this.openDialog('confirm', null, data, async () => {
this._loadingService.start();
const dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId;
const justificationIds = justifications.map(j => j.id);
await this._justificationService.delete(justificationIds, dossierTemplateId).toPromise();
await this._justificationService.loadAll(dossierTemplateId).toPromise();
listingService.updateSelection();
this._loadingService.stop();
});
}
}

View File

@ -0,0 +1,34 @@
<iqser-table
[bulkActions]="bulkActions"
[headerTemplate]="headerTemplate"
[itemSize]="80"
[noDataText]="'justifications-listing.no-data.title' | translate"
[selectionEnabled]="true"
noDataIcon="iqser:document"
></iqser-table>
<ng-template #bulkActions>
<iqser-circle-button
(action)="openConfirmDeleteDialog()"
*ngIf="userService.currentUser.isAdmin && listingService.areSomeSelected$ | async"
[tooltip]="'justifications-listing.bulk.delete' | translate"
[type]="circleButtonTypes.dark"
icon="iqser:trash"
></iqser-circle-button>
</ng-template>
<ng-template #tableItemTemplate let-justification="entity">
<redaction-table-item [justification]="justification"></redaction-table-item>
</ng-template>
<ng-template #headerTemplate>
<div class="table-header-actions">
<iqser-icon-button
(action)="openAddJustificationDialog()"
*ngIf="userService.currentUser.isAdmin"
[label]="'justifications-listing.add-new' | translate"
[type]="iconButtonTypes.primary"
icon="iqser:plus"
></iqser-icon-button>
</div>
</ng-template>

View File

@ -0,0 +1,64 @@
import { ChangeDetectionStrategy, Component, forwardRef, Injector, OnInit } from '@angular/core';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import {
CircleButtonTypes,
DefaultListingServicesTmp,
EntitiesService,
IconButtonTypes,
ListingComponent,
LoadingService,
TableColumnConfig,
} from '@iqser/common-ui';
import { Justification } from '@models/justification.model';
import { JustificationsService } from '@services/entity-services/justifications.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { JustificationsDialogService } from '../justifications-dialog.service';
import { UserService } from '@services/user.service';
@Component({
selector: 'redaction-justifications-screen',
templateUrl: './justifications-screen.component.html',
styleUrls: ['./justifications-screen.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [
...DefaultListingServicesTmp,
{ provide: EntitiesService, useExisting: JustificationsService },
{ provide: ListingComponent, useExisting: forwardRef(() => JustificationsScreenComponent) },
],
})
export class JustificationsScreenComponent extends ListingComponent<Justification> implements OnInit {
readonly iconButtonTypes = IconButtonTypes;
readonly circleButtonTypes = CircleButtonTypes;
readonly tableHeaderLabel = _('justifications-listing.table-header');
readonly tableColumnConfigs: TableColumnConfig<Justification>[] = [
{ label: _('justifications-listing.table-col-names.name'), width: '2fr' },
{ label: _('justifications-listing.table-col-names.reason') },
{ label: _('justifications-listing.table-col-names.description'), width: '2fr' },
];
constructor(
protected readonly _injector: Injector,
private readonly _justificationService: JustificationsService,
private readonly _loadingService: LoadingService,
private readonly _dossierTemplatesService: DossierTemplatesService,
private readonly _dialogService: JustificationsDialogService,
readonly userService: UserService,
) {
super(_injector);
}
async ngOnInit(): Promise<void> {
this._loadingService.start();
await this._justificationService.loadAll(this._dossierTemplatesService.activeDossierTemplateId).toPromise();
this._loadingService.stop();
}
openAddJustificationDialog(): void {
this._dialogService.openDialog('addEditJustification', null, null);
}
openConfirmDeleteDialog() {
this._dialogService.confirmDelete(this.listingService.selected, this.listingService);
}
}

View File

@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { JustificationsScreenComponent } from './justifications-screen/justifications-screen.component';
import { RouterModule } from '@angular/router';
import { SharedModule } from '@shared/shared.module';
import { TableItemComponent } from './table-item/table-item.component';
import { JustificationsDialogService } from './justifications-dialog.service';
import { AddEditJustificationDialogComponent } from './add-edit-justification-dialog/add-edit-justification-dialog.component';
const routes = [{ path: '', component: JustificationsScreenComponent }];
@NgModule({
declarations: [JustificationsScreenComponent, TableItemComponent, AddEditJustificationDialogComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule],
providers: [JustificationsDialogService],
})
export class JustificationsModule {}

View File

@ -0,0 +1,33 @@
<div class="cell">
<div [matTooltip]="justification.name" class="table-item-title" matTooltipPosition="above">
{{ justification.name }}
</div>
</div>
<div class="cell">
<span [matTooltip]="justification.reason" class="small-label clamp-4" matTooltipPosition="above"> {{ justification.reason }} </span>
</div>
<div class="cell">
<span [matTooltip]="justification.description" class="small-label clamp-4" matTooltipPosition="above">
{{ justification.description }}
</span>
<div class="action-buttons">
<iqser-circle-button
(action)="openEditJustificationDialog()"
*ngIf="userService.currentUser.isAdmin"
[tooltip]="'justifications-listing.actions.edit' | translate"
[type]="circleButtonTypes.dark"
icon="iqser:edit"
></iqser-circle-button>
<iqser-circle-button
(action)="openConfirmDeleteDialog()"
*ngIf="userService.currentUser.isAdmin"
[tooltip]="'justifications-listing.actions.delete' | translate"
[type]="circleButtonTypes.dark"
icon="iqser:trash"
></iqser-circle-button>
</div>
</div>

View File

@ -0,0 +1,31 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { Justification } from '@models/justification.model';
import { CircleButtonTypes, ListingService, LoadingService } from '@iqser/common-ui';
import { JustificationsDialogService } from '../justifications-dialog.service';
import { UserService } from '@services/user.service';
@Component({
selector: 'redaction-table-item',
templateUrl: './table-item.component.html',
styleUrls: ['./table-item.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class TableItemComponent {
readonly circleButtonTypes = CircleButtonTypes;
@Input() justification: Justification;
constructor(
private readonly _dialogService: JustificationsDialogService,
private readonly _loadingService: LoadingService,
private readonly _listingService: ListingService<Justification>,
readonly userService: UserService,
) {}
openEditJustificationDialog() {
this._dialogService.openDialog('addEditJustification', null, this.justification);
}
openConfirmDeleteDialog() {
this._dialogService.confirmDelete([this.justification], this._listingService);
}
}

View File

@ -12,7 +12,7 @@ import {
import { removeBraces } from '@utils/functions';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
interface Placeholder {
placeholder: string;

View File

@ -8,7 +8,7 @@ import { ComponentHasChanges } from '@guards/can-deactivate.guard';
import { ActivatedRoute } from '@angular/router';
import { AppStateService } from '@state/app-state.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import ICodeEditor = monaco.editor.ICodeEditor;
import IModelDeltaDecoration = monaco.editor.IModelDeltaDecoration;
import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions;

View File

@ -13,7 +13,7 @@ import {
} from '@iqser/common-ui';
import { ConfigService } from '@services/config.service';
import * as moment from 'moment';
import { DossiersService } from '../../../dossier/services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { Observable } from 'rxjs';

View File

@ -10,7 +10,7 @@ import { ActivatedRoute } from '@angular/router';
import { BASE_HREF } from '../../../../tokens';
import { stampPDFPage } from '@utils/page-stamper';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
export const DEFAULT_WATERMARK: WatermarkModel = {
text: null,

View File

@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { MatDialog, MatDialogConfig } from '@angular/material/dialog';
import { MatDialog } from '@angular/material/dialog';
import { AddEditFileAttributeDialogComponent } from '../dialogs/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component';
import { AddEditDictionaryDialogComponent } from '../dialogs/add-edit-dictionary-dialog/add-edit-dictionary-dialog.component';
import { AddEditDossierTemplateDialogComponent } from '../dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component';
@ -9,9 +9,9 @@ import { SmtpAuthDialogComponent } from '../dialogs/smtp-auth-dialog/smtp-auth-d
import { AddEditUserDialogComponent } from '../dialogs/add-edit-user-dialog/add-edit-user-dialog.component';
import { ConfirmDeleteUsersDialogComponent } from '../dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component';
import { FileAttributesCsvImportDialogComponent } from '../dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component';
import { ComponentType } from '@angular/cdk/portal';
import { AddEditDossierAttributeDialogComponent } from '../dialogs/add-edit-dossier-attribute-dialog/add-edit-dossier-attribute-dialog.component';
import { ConfirmationDialogComponent, DialogService, largeDialogConfig } from '@iqser/common-ui';
import { ConfirmationDialogComponent, DialogConfig, DialogService, largeDialogConfig } from '@iqser/common-ui';
import { AddEditJustificationDialogComponent } from '../screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component';
type DialogType =
| 'confirm'
@ -24,18 +24,12 @@ type DialogType =
| 'deleteUsers'
| 'smtpAuthConfig'
| 'addEditDossierTemplate'
| 'addEditDossierAttribute';
type AdminDialogConfig = {
[key in DialogType]: {
component: ComponentType<any>;
dialogConfig?: MatDialogConfig;
};
};
| 'addEditDossierAttribute'
| 'addEditJustification';
@Injectable()
export class AdminDialogService extends DialogService<DialogType> {
protected readonly _config: AdminDialogConfig = {
protected readonly _config: DialogConfig<DialogType> = {
confirm: {
component: ConfirmationDialogComponent,
},
@ -78,6 +72,10 @@ export class AdminDialogService extends DialogService<DialogType> {
component: AddEditDossierAttributeDialogComponent,
dialogConfig: { autoFocus: true },
},
addEditJustification: {
component: AddEditJustificationDialogComponent,
dialogConfig: { autoFocus: true },
},
};
constructor(protected readonly _dialog: MatDialog) {

View File

@ -4,9 +4,9 @@ import { AppStateService } from '@state/app-state.service';
import { DossiersDialogService } from '../../services/dossiers-dialog.service';
import { AutoUnsubscribe } from '@iqser/common-ui';
import { File } from '@models/file/file';
import { FileAttributesService } from '../../services/file-attributes.service';
import { DossiersService } from '../../services/dossiers.service';
import { DossierTemplatesService } from '../../services/dossier-templates.service';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Component({
selector: 'redaction-document-info',

View File

@ -4,7 +4,7 @@ import { AppStateService } from '@state/app-state.service';
import { PermissionsService } from '@services/permissions.service';
import { ConfigService } from '@services/config.service';
import { Subscription } from 'rxjs';
import { DossiersService } from '../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Component({
selector: 'redaction-page-indicator',

View File

@ -4,7 +4,7 @@ import { UserService } from '@services/user.service';
import { Toaster } from '@iqser/common-ui';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Dossier } from '@state/model/dossier';
import { DossiersService } from '../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Component({
selector: 'redaction-team-members-manager',

View File

@ -11,8 +11,8 @@ 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/dossiers.service';
import { DossierTemplatesService } from '../../services/dossier-templates.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Component({
templateUrl: './add-dossier-dialog.component.html',

View File

@ -7,8 +7,8 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { File } from '@models/file/file';
import { Dossier } from '@state/model/dossier';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { FilesService } from '../../services/files.service';
import { DossiersService } from '../../services/dossiers.service';
import { FilesService } from '@services/entity-services/files.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
class DialogData {
mode: 'approver' | 'reviewer';

View File

@ -6,7 +6,7 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { LegalBasisMappingControllerService } from '@redaction/red-ui-http';
import { AppStateService } from '@state/app-state.service';
import { PermissionsService } from '@services/permissions.service';
import { DossiersService } from '../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
export interface LegalBasisOption {
label?: string;

View File

@ -4,8 +4,8 @@ import { IFile, IFileAttributeConfig } from '@redaction/red-ui-http';
import { AppStateService } from '@state/app-state.service';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { Dossier } from '@state/model/dossier';
import { FileAttributesService } from '../../services/file-attributes.service';
import { DossiersService } from '../../services/dossiers.service';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Component({
templateUrl: './document-info-dialog.component.html',

View File

@ -21,7 +21,7 @@ import { Observable } from 'rxjs';
import { distinctUntilChanged, map } from 'rxjs/operators';
import { DossiersDialogService } from '../../../services/dossiers-dialog.service';
import { AppStateService } from '@state/app-state.service';
import { FilesService } from '../../../services/files.service';
import { FilesService } from '@services/entity-services/files.service';
interface FileListItem extends IFile, IListable {
readonly canRestore: boolean;

View File

@ -7,7 +7,7 @@ import { DictionaryService } from '@shared/services/dictionary.service';
import { FormBuilder } from '@angular/forms';
import { CircleButtonTypes, LoadingService } from '@iqser/common-ui';
import { IDictionary } from '@redaction/red-ui-http';
import { DossiersService } from '../../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Component({
selector: 'redaction-edit-dossier-dictionary',

View File

@ -4,7 +4,7 @@ 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/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Component({
selector: 'redaction-edit-dossier-download-package',

View File

@ -12,7 +12,7 @@ import { EditDossierAttributesComponent } from './attributes/edit-dossier-attrib
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { EditDossierDeletedDocumentsComponent } from './deleted-documents/edit-dossier-deleted-documents.component';
import { AppStateService } from '@state/app-state.service';
import { DossiersService } from '../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
type Section = 'dossierInfo' | 'downloadPackage' | 'dossierDictionary' | 'members' | 'dossierAttributes' | 'deletedDocuments';

View File

@ -11,8 +11,8 @@ import { MatDialogRef } from '@angular/material/dialog';
import { EditDossierDialogComponent } from '../edit-dossier-dialog.component';
import { ConfirmationDialogInput, IconButtonTypes, TitleColors, Toaster } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DossiersService } from '../../../services/dossiers.service';
import { DossierTemplatesService } from '../../../services/dossier-templates.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Component({
selector: 'redaction-edit-dossier-general-info',

View File

@ -7,7 +7,7 @@ import { TranslateService } from '@ngx-translate/core';
import { UserService } from '@services/user.service';
import { ManualAnnotationService } from '../../services/manual-annotation.service';
import { PermissionsService } from '@services/permissions.service';
import { DossiersService } from '../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
export interface LegalBasisOption {
label?: string;

View File

@ -11,7 +11,7 @@ import { ManualAnnotationService } from '../../services/manual-annotation.servic
import { ManualAnnotationResponse } from '@models/file/manual-annotation-response';
import { PermissionsService } from '@services/permissions.service';
import { TypeValue } from '@models/file/type-value';
import { DossiersService } from '../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
export interface LegalBasisOption {
label?: string;

View File

@ -3,8 +3,8 @@ import { DossierAttributeWithValue } from '@models/dossier-attributes.model';
import { AppStateService } from '@state/app-state.service';
import { Dossier } from '@state/model/dossier';
import { DossiersDialogService } from '../../../../services/dossiers-dialog.service';
import { DossiersService } from '../../../../services/dossiers.service';
import { DossierTemplatesService } from '../../../../services/dossier-templates.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { DossierTemplate } from '@models/file/dossier-template';
@Component({

View File

@ -10,7 +10,7 @@ import { fileStatusTranslations } from '../../../../translations/file-status-tra
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DossierRequest } from '@redaction/red-ui-http';
import { User } from '@models/user';
import { DossiersService } from '../../../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Component({
selector: 'redaction-dossier-details',

View File

@ -14,7 +14,7 @@ import { annotationFilterChecker, RedactionFilterSorter, StatusSorter } from '@u
import { workloadTranslations } from '../../translations/workload-translations';
import * as moment from 'moment';
import { ConfigService as AppConfigService } from '@services/config.service';
import { DossiersService } from '../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Injectable()
export class ConfigService {

View File

@ -48,11 +48,11 @@ import { PermissionsService } from '@services/permissions.service';
import { RouterHistoryService } from '@services/router-history.service';
import { Dossier } from '@state/model/dossier';
import { Router } from '@angular/router';
import { FileAttributesService } from '../../../services/file-attributes.service';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { ConfigService as AppConfigService } from '@services/config.service';
import { ConfigService } from '../config.service';
import { DossiersService } from '../../../services/dossiers.service';
import { DossierTemplatesService } from '../../../services/dossier-templates.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { LongPressEvent } from '@shared/directives/long-press.directive';
import { UserPreferenceService } from '@services/user-preference.service';

View File

@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { DoughnutChartConfig } from '@shared/components/simple-doughnut-chart/simple-doughnut-chart.component';
import { FilterService } from '@iqser/common-ui';
import { DossiersService } from '../../../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Component({
selector: 'redaction-dossiers-listing-details',

View File

@ -1,6 +1,6 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { Dossier } from '@state/model/dossier';
import { DossierTemplatesService } from '../../../../services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Component({
selector: 'redaction-dossiers-listing-dossier-name',

View File

@ -17,7 +17,7 @@ import {
} from '@utils/index';
import { workloadTranslations } from '../../translations/workload-translations';
import { AppStateService } from '@state/app-state.service';
import { DossierTemplatesService } from '../../services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Injectable()
export class ConfigService {

View File

@ -25,7 +25,7 @@ import { DefaultListingServicesTmp, EntitiesService, ListingComponent, OnAttach,
import { fileStatusTranslations } from '../../../translations/file-status-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { ConfigService } from '../config.service';
import { DossiersService } from '../../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Component({
templateUrl: './dossiers-listing-screen.component.html',
@ -39,7 +39,8 @@ import { DossiersService } from '../../../services/dossiers.service';
})
export class DossiersListingScreenComponent
extends ListingComponent<Dossier>
implements OnInit, AfterViewInit, OnDestroy, OnAttach, OnDetach {
implements OnInit, AfterViewInit, OnDestroy, OnAttach, OnDetach
{
readonly currentUser = this._userService.currentUser;
readonly tableColumnConfigs = this._configService.tableConfig;
readonly tableHeaderLabel = _('dossier-listing.table-header.title');

View File

@ -41,8 +41,8 @@ import { handleFilterDelta } from '@utils/filter-utils';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { FileActionsComponent } from '../../shared/components/file-actions/file-actions.component';
import { User } from '@models/user';
import { FilesService } from '../../services/files.service';
import { DossiersService } from '../../services/dossiers.service';
import { FilesService } from '@services/entity-services/files.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { Dossier } from '@state/model/dossier';
import Annotation = Core.Annotations.Annotation;

View File

@ -17,7 +17,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { fileStatusTranslations } from '../../translations/file-status-translations';
import { TranslateService } from '@ngx-translate/core';
import { RouterHistoryService } from '@services/router-history.service';
import { DossiersService } from '../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
interface ListItem extends IListable {
readonly dossierId: string;

View File

@ -5,7 +5,7 @@ import { hexToRgb } from '@utils/functions';
import { AppStateService } from '@state/app-state.service';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { UserPreferenceService } from '@services/user-preference.service';
import { DossiersService } from './dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import Annotation = Core.Annotations.Annotation;
@Injectable()

View File

@ -1,19 +1,15 @@
import { Injectable } from '@angular/core';
import { MatDialog, MatDialogConfig } from '@angular/material/dialog';
import { MatDialog } from '@angular/material/dialog';
import { AddDossierDialogComponent } from '../dialogs/add-dossier-dialog/add-dossier-dialog.component';
import { RemoveAnnotationsDialogComponent } from '../dialogs/remove-annotations-dialog/remove-annotations-dialog.component';
import { ForceRedactionDialogComponent } from '../dialogs/force-redaction-dialog/force-redaction-dialog.component';
import { DocumentInfoDialogComponent } from '../dialogs/document-info-dialog/document-info-dialog.component';
import { AppStateService } from '@state/app-state.service';
import { ManualAnnotationService } from './manual-annotation.service';
import { ManualAnnotationDialogComponent } from '../dialogs/manual-redaction-dialog/manual-annotation-dialog.component';
import { EditDossierDialogComponent } from '../dialogs/edit-dossier-dialog/edit-dossier-dialog.component';
import { AssignReviewerApproverDialogComponent } from '../dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component';
import { ConfigService } from '@services/config.service';
import { ChangeLegalBasisDialogComponent } from '../dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component';
import { RecategorizeImageDialogComponent } from '../dialogs/recategorize-image-dialog/recategorize-image-dialog.component';
import { ConfirmationDialogComponent, DialogService, largeDialogConfig } from '@iqser/common-ui';
import { ComponentType } from '@angular/cdk/portal';
import { ConfirmationDialogComponent, DialogConfig, DialogService, largeDialogConfig } from '@iqser/common-ui';
type DialogType =
| 'confirm'
@ -27,16 +23,9 @@ type DialogType =
| 'forceRedaction'
| 'manualAnnotation';
type DossiersDialogConfig = {
[key in DialogType]: {
component: ComponentType<any>;
dialogConfig?: MatDialogConfig;
};
};
@Injectable()
export class DossiersDialogService extends DialogService<DialogType> {
protected readonly _config: DossiersDialogConfig = {
protected readonly _config: DialogConfig<DialogType> = {
confirm: {
component: ConfirmationDialogComponent,
},
@ -73,12 +62,7 @@ export class DossiersDialogService extends DialogService<DialogType> {
},
};
constructor(
protected readonly _dialog: MatDialog,
private readonly _appStateService: AppStateService,
private readonly _manualAnnotationService: ManualAnnotationService,
private readonly _configService: ConfigService,
) {
constructor(protected readonly _dialog: MatDialog) {
super(_dialog);
}
}

View File

@ -10,7 +10,7 @@ import { PermissionsService } from '@services/permissions.service';
import { AnnotationActionMode } from '../models/annotation-action-mode.model';
import { annotationActionsTranslations } from '../translations/annotation-actions-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DossiersService } from './dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Injectable()
export class ManualAnnotationService {

View File

@ -11,7 +11,7 @@ import { FileDataModel } from '@models/file/file-data.model';
import { AppStateService } from '@state/app-state.service';
import { PermissionsService } from '@services/permissions.service';
import { File } from '@models/file/file';
import { DossiersService } from './dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Injectable()
export class PdfViewerDataService {

View File

@ -20,7 +20,7 @@ import { filter } from 'rxjs/operators';
import { UserPreferenceService } from '@services/user-preference.service';
import { LongPressEvent } from '@shared/directives/long-press.directive';
import { FileActionService } from '../../services/file-action.service';
import { DossiersService } from '../../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Component({
selector: 'redaction-file-actions',
@ -238,16 +238,16 @@ export class FileActionsComponent extends AutoUnsubscribe implements OnInit, OnD
}
}
forceReanalysisAction($event: LongPressEvent) {
this.analysisForced = !$event.touchEnd && this._userPreferenceService.areDevFeaturesEnabled;
}
private _setFileApproved() {
this.addSubscription = this._fileActionService.setFilesApproved([this.file]).subscribe(() => {
this.reloadDossiers('set-approved');
});
}
forceReanalysisAction($event: LongPressEvent) {
this.analysisForced = !$event.touchEnd && this._userPreferenceService.areDevFeaturesEnabled;
}
private _setup() {
this.statusBarConfig = [{ color: this.file.status, length: 1 }];
this.tooltipPosition = this.isFilePreview ? 'below' : 'above';

View File

@ -6,9 +6,9 @@ import { File } from '@models/file/file';
import { PermissionsService } from '@services/permissions.service';
import { DossiersDialogService } from '../../services/dossiers-dialog.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { FilesService } from '../../services/files.service';
import { FilesService } from '@services/entity-services/files.service';
import { ConfirmationDialogInput } from '@iqser/common-ui';
import { DossiersService } from '../../services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Injectable()
export class FileActionService {

View File

@ -5,8 +5,8 @@ import { map, take } from 'rxjs/operators';
import { Dossier } from '@state/model/dossier';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DictionaryService } from '@shared/services/dictionary.service';
import { DossiersService } from '../../../dossier/services/dossiers.service';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { DossierTemplate } from '@models/file/dossier-template';
import { AppStateService } from '@state/app-state.service';
import { EditorComponent } from '@shared/components/editor/editor.component';

View File

@ -4,7 +4,7 @@ import { Dossier } from '@state/model/dossier';
import { DossierAttributeWithValue } from '@models/dossier-attributes.model';
import { Observable } from 'rxjs';
import { DossierAttributeConfig } from '@state/model/dossier-attribute-config';
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { EntitiesService, List, mapEach, RequiredParam, Validate } from '@iqser/common-ui';
import { map, tap } from 'rxjs/operators';

View File

@ -4,7 +4,7 @@ import { FileUploadModel } from '../model/file-upload.model';
import { OverlayRef } from '@angular/cdk/overlay';
import { StatusOverlayService } from '../services/status-overlay.service';
import { handleFileDrop } from '@utils/file-drop-utils';
import { DossiersService } from '../../dossier/services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
@Component({
selector: 'redaction-file-drop',

View File

@ -9,7 +9,7 @@ import { UploadDownloadDialogService } from './upload-download-dialog.service';
import { UploadControllerService } from '@redaction/red-ui-http';
import { isCsv } from '@utils/file-drop-utils';
import { ErrorMessageService } from '@iqser/common-ui';
import { DossiersService } from '../../dossier/services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
export interface ActiveUpload {
subscription: Subscription;

View File

@ -4,7 +4,7 @@ import { IFile } from '@redaction/red-ui-http';
import { File } from '@models/file/file';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { UserService } from '@services/user.service';
import { UserService } from '../user.service';
@Injectable({
providedIn: 'root',

View File

@ -0,0 +1,29 @@
import { Injectable, Injector } from '@angular/core';
import { EntitiesService, RequiredParam, Validate } from '@iqser/common-ui';
import { ILegalBasis } from '@redaction/red-ui-http';
import { Justification } from '@models/justification.model';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class JustificationsService extends EntitiesService<Justification, ILegalBasis> {
constructor(protected readonly _injector: Injector) {
super(_injector, Justification, 'legalBasis');
}
@Validate()
createOrUpdate(@RequiredParam() justification: Justification, @RequiredParam() dossierTemplateId: string) {
return this._put(justification, `${this._defaultModelPath}/${dossierTemplateId}`);
}
@Validate()
loadAll(@RequiredParam() dossierTemplateId: string): Observable<Justification[]> {
return super.loadAll(`${this._defaultModelPath}/${dossierTemplateId}`);
}
@Validate()
delete(@RequiredParam() justificationNames: string[], @RequiredParam() dossierTemplateId: string): Observable<unknown> {
return this._post(justificationNames, `${this._defaultModelPath}/${dossierTemplateId}/delete`);
}
}

View File

@ -4,7 +4,7 @@ import { UserService } from './user.service';
import { File } from '@models/file/file';
import { Comment } from '@redaction/red-ui-http';
import { Dossier } from '@state/model/dossier';
import { DossiersService } from '../modules/dossier/services/dossiers.service';
import { DossiersService } from './entity-services/dossiers.service';
@Injectable({
providedIn: 'root',

View File

@ -2,8 +2,8 @@ import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router';
import { AppStateService } from './app-state.service';
import { UserService } from '@services/user.service';
import { DossiersService } from '../modules/dossier/services/dossiers.service';
import { DossierTemplatesService } from '../modules/dossier/services/dossier-templates.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@Injectable({
providedIn: 'root',

View File

@ -9,12 +9,12 @@ import { File } from '@models/file/file';
import { Dossier } from './model/dossier';
import { TypeValue } from '@models/file/type-value';
import { DossierTemplate } from '@models/file/dossier-template';
import { DossiersService } from '../modules/dossier/services/dossiers.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { UserPreferenceService } from '@services/user-preference.service';
import { FilesService } from '../modules/dossier/services/files.service';
import { FilesService } from '@services/entity-services/files.service';
import { DictionaryService } from '@shared/services/dictionary.service';
import { DossierTemplatesService } from '../modules/dossier/services/dossier-templates.service';
import { FileAttributesService } from '../modules/dossier/services/file-attributes.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
export interface AppState {
activeFileId?: string;

View File

@ -93,6 +93,21 @@
"save": "Save Attribute",
"title": "{type, select, edit{Edit {name}} create{Add New} other{}} File Attribute"
},
"add-edit-justification": {
"actions": {
"cancel": "Cancel",
"save": "Save Justification"
},
"form": {
"description": "Description",
"description-placeholder": "Enter Description",
"name": "Name",
"name-placeholder": "Enter Name",
"reason": "Reason",
"reason-placeholder": "Enter Reason"
},
"title": "{type, select, edit{Edit {name}} create{Add New} other{}} Justification"
},
"add-edit-user": {
"actions": {
"cancel": "Cancel",
@ -394,6 +409,10 @@
"question": "Do you wish to proceed?",
"title": "Delete Document"
},
"delete-justification": {
"question": "Are you sure you want to delete {count, plural, one{this justification} other{these justifications}}?",
"title": "Delete {count, plural, one{{justificationName}} other{Selected Justifications}}"
},
"input-label": "To proceed please type below",
"permanently-delete-file": {
"confirmation-text": "Delete {filesCount, plural, one{Document} other{Documents}}",
@ -1147,6 +1166,26 @@
"unassigned": "Unassigned",
"you": "You"
},
"justifications": "Justifications",
"justifications-listing": {
"actions": {
"delete": "Delete Justification",
"edit": "Edit Justification"
},
"add-new": "Add New Justification",
"bulk": {
"delete": "Delete Selected Justifications"
},
"no-data": {
"title": "There are no justifications yet."
},
"table-col-names": {
"description": "Description",
"name": "Name",
"reason": "Reason"
},
"table-header": "{length} {length, plural, one{justification} other{justifications}}"
},
"license-info-screen": {
"analyzed-pages": "Analyzed Pages",
"backend-version": "Backend Application Version",

@ -1 +1 @@
Subproject commit d8a0c189b0c96b48af030a53828dba2ac2b2603c
Subproject commit 4040db5fba7c9ae951d721266380dba4bbb312a4

View File

@ -15,7 +15,7 @@ import { HttpClient, HttpEvent, HttpHeaders, HttpResponse } from '@angular/commo
import { Observable } from 'rxjs';
import { LegalBasis } from '../model/legalBasis';
import { ILegalBasis } from '../model/legalBasis';
import { BASE_PATH } from '../variables';
import { Configuration } from '../configuration';
@ -47,19 +47,19 @@ export class LegalBasisMappingControllerService {
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
*/
public getLegalBasisMapping(dossierTemplateId: string, observe?: 'body', reportProgress?: boolean): Observable<Array<LegalBasis>>;
public getLegalBasisMapping(dossierTemplateId: string, observe?: 'body', reportProgress?: boolean): Observable<Array<ILegalBasis>>;
public getLegalBasisMapping(
dossierTemplateId: string,
observe?: 'response',
reportProgress?: boolean
): Observable<HttpResponse<Array<LegalBasis>>>;
reportProgress?: boolean,
): Observable<HttpResponse<Array<ILegalBasis>>>;
public getLegalBasisMapping(
dossierTemplateId: string,
observe?: 'events',
reportProgress?: boolean
): Observable<HttpEvent<Array<LegalBasis>>>;
reportProgress?: boolean,
): Observable<HttpEvent<Array<ILegalBasis>>>;
public getLegalBasisMapping(dossierTemplateId: string, observe: any = 'body', reportProgress: boolean = false): Observable<any> {
if (dossierTemplateId === null || dossierTemplateId === undefined) {
@ -82,7 +82,7 @@ export class LegalBasisMappingControllerService {
headers = headers.set('Accept', httpHeaderAcceptSelected);
}
return this.httpClient.request<Array<LegalBasis>>(
return this.httpClient.request<Array<ILegalBasis>>(
'get',
`${this.basePath}/legalBasis/${encodeURIComponent(String(dossierTemplateId))}`,
{
@ -103,28 +103,28 @@ export class LegalBasisMappingControllerService {
* @param reportProgress flag to report request and response progress.
*/
public setLegalBasisMapping(
body: Array<LegalBasis>,
body: Array<ILegalBasis>,
dossierTemplateId: string,
observe?: 'body',
reportProgress?: boolean
reportProgress?: boolean,
): Observable<any>;
public setLegalBasisMapping(
body: Array<LegalBasis>,
body: Array<ILegalBasis>,
dossierTemplateId: string,
observe?: 'response',
reportProgress?: boolean
reportProgress?: boolean,
): Observable<HttpResponse<any>>;
public setLegalBasisMapping(
body: Array<LegalBasis>,
body: Array<ILegalBasis>,
dossierTemplateId: string,
observe?: 'events',
reportProgress?: boolean
reportProgress?: boolean,
): Observable<HttpEvent<any>>;
public setLegalBasisMapping(
body: Array<LegalBasis>,
body: Array<ILegalBasis>,
dossierTemplateId: string,
observe: any = 'body',
reportProgress: boolean = false,

View File

@ -10,9 +10,8 @@
* Do not edit the class manually.
*/
export interface LegalBasis {
export interface ILegalBasis {
description?: string;
id?: number;
name?: string;
reason?: string;
}

View File

@ -9,14 +9,14 @@
* https://github.com/swagger-api/swagger-codegen.git
* Do not edit the class manually.
*/
import { LegalBasis } from './legalBasis';
import { ILegalBasis } from './legalBasis';
import { RedactionLogEntry } from './redactionLogEntry';
export interface RedactionLog {
analysisVersion?: number;
dictionaryVersion?: number;
dossierDictionaryVersion?: number;
legalBasis?: Array<LegalBasis>;
legalBasis?: Array<ILegalBasis>;
legalBasisVersion?: number;
redactionLogEntry?: Array<RedactionLogEntry>;
rulesVersion?: number;