diff --git a/apps/red-ui/src/app/components/base-screen/base-screen.component.ts b/apps/red-ui/src/app/components/base-screen/base-screen.component.ts index b4217e4e7..8648f04c9 100644 --- a/apps/red-ui/src/app/components/base-screen/base-screen.component.ts +++ b/apps/red-ui/src/app/components/base-screen/base-screen.component.ts @@ -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; diff --git a/apps/red-ui/src/app/components/notifications/notifications.component.ts b/apps/red-ui/src/app/components/notifications/notifications.component.ts index ba157104a..1cc50d2a1 100644 --- a/apps/red-ui/src/app/components/notifications/notifications.component.ts +++ b/apps/red-ui/src/app/components/notifications/notifications.component.ts @@ -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', diff --git a/apps/red-ui/src/app/models/file/redaction-log-entry.wrapper.ts b/apps/red-ui/src/app/models/file/redaction-log-entry.wrapper.ts index 4e0498b7c..8c7649645 100644 --- a/apps/red-ui/src/app/models/file/redaction-log-entry.wrapper.ts +++ b/apps/red-ui/src/app/models/file/redaction-log-entry.wrapper.ts @@ -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; @@ -29,7 +29,7 @@ export interface RedactionLogEntryWrapper { textBefore?: string; value?: string; image?: boolean; - legalBasisList?: Array; + legalBasisList?: Array; recommendation?: boolean; recommendationAnnotationId?: string; diff --git a/apps/red-ui/src/app/models/justification.model.ts b/apps/red-ui/src/app/models/justification.model.ts new file mode 100644 index 000000000..dc4a898b1 --- /dev/null +++ b/apps/red-ui/src/app/models/justification.model.ts @@ -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; + } +} diff --git a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts index 6c1854d48..5bed7ed49 100644 --- a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts @@ -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' }, ], }, diff --git a/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts b/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts index 4c2f41d95..3fc91804e 100644 --- a/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts +++ b/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts @@ -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') }, ], }; diff --git a/apps/red-ui/src/app/modules/admin/admin.module.ts b/apps/red-ui/src/app/modules/admin/admin.module.ts index a75a79525..f21670f8d 100644 --- a/apps/red-ui/src/app/modules/admin/admin.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin.module.ts @@ -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, diff --git a/apps/red-ui/src/app/modules/admin/base-admin-screen/base-admin-screen.component.html b/apps/red-ui/src/app/modules/admin/base-admin-screen/base-admin-screen.component.html new file mode 100644 index 000000000..e4f858437 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/base-admin-screen/base-admin-screen.component.html @@ -0,0 +1,26 @@ + + +
+ + +
+
+ + + + +
+
diff --git a/apps/red-ui/src/app/modules/admin/base-admin-screen/base-admin-screen.component.scss b/apps/red-ui/src/app/modules/admin/base-admin-screen/base-admin-screen.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/apps/red-ui/src/app/modules/admin/base-admin-screen/base-admin-screen.component.ts b/apps/red-ui/src/app/modules/admin/base-admin-screen/base-admin-screen.component.ts new file mode 100644 index 000000000..fd4af2801 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/base-admin-screen/base-admin-screen.component.ts @@ -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 {} diff --git a/apps/red-ui/src/app/modules/admin/components/breadcrumbs/admin-breadcrumbs.component.ts b/apps/red-ui/src/app/modules/admin/components/breadcrumbs/admin-breadcrumbs.component.ts index 7d3f522c0..3c1d06a08 100644 --- a/apps/red-ui/src/app/modules/admin/components/breadcrumbs/admin-breadcrumbs.component.ts +++ b/apps/red-ui/src/app/modules/admin/components/breadcrumbs/admin-breadcrumbs.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/admin/components/dossier-template-actions/dossier-template-actions.component.ts b/apps/red-ui/src/app/modules/admin/components/dossier-template-actions/dossier-template-actions.component.ts index 1cd7a31d1..95ee9824e 100644 --- a/apps/red-ui/src/app/modules/admin/components/dossier-template-actions/dossier-template-actions.component.ts +++ b/apps/red-ui/src/app/modules/admin/components/dossier-template-actions/dossier-template-actions.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts index 23f18bc1f..25d6c377d 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component.ts index f2fd66060..8029582d8 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component.ts @@ -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({ diff --git a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts index 631687884..dfdfdf0e5 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts index 42f749f25..bd78df974 100644 --- a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.ts index cd60948b6..f0f50b86c 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.ts @@ -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, diff --git a/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.ts index c564eb92c..d04bd756a 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dictionary-overview/dictionary-overview-screen.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts index 6f760eff9..282cb5a1b 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts index 8172592dd..5a338ccfb 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts index f645c234a..6bbaaa1fa 100644 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.html b/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.html new file mode 100644 index 000000000..40fc74501 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.html @@ -0,0 +1,55 @@ +
+
+ +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ + +
+
+
+ + +
diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.scss b/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.ts b/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.ts new file mode 100644 index 000000000..99416e913 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/add-edit-justification-dialog/add-edit-justification-dialog.component.ts @@ -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, + @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); + } +} diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-dialog.service.ts b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-dialog.service.ts new file mode 100644 index 000000000..a9330e21d --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-dialog.service.ts @@ -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 { + protected readonly _config: DialogConfig = { + 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) { + 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(); + }); + } +} diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.html new file mode 100644 index 000000000..2feb42084 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.html @@ -0,0 +1,34 @@ + + + + + + + + + + + +
+ +
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.scss new file mode 100644 index 000000000..658f7ee0a --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.scss @@ -0,0 +1,3 @@ +:host { + width: 100%; +} diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts new file mode 100644 index 000000000..8c274b165 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts @@ -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 implements OnInit { + readonly iconButtonTypes = IconButtonTypes; + readonly circleButtonTypes = CircleButtonTypes; + + readonly tableHeaderLabel = _('justifications-listing.table-header'); + readonly tableColumnConfigs: TableColumnConfig[] = [ + { 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 { + 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); + } +} diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications.module.ts b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications.module.ts new file mode 100644 index 000000000..a33c5ae0f --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications.module.ts @@ -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 {} diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.html b/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.html new file mode 100644 index 000000000..db52b4bb5 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.html @@ -0,0 +1,33 @@ +
+
+ {{ justification.name }} +
+
+ +
+ {{ justification.reason }} +
+ +
+ + {{ justification.description }} + + +
+ + + +
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.scss b/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.ts b/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.ts new file mode 100644 index 000000000..483026d1a --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/table-item/table-item.component.ts @@ -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, + readonly userService: UserService, + ) {} + + openEditJustificationDialog() { + this._dialogService.openDialog('addEditJustification', null, this.justification); + } + + openConfirmDeleteDialog() { + this._dialogService.confirmDelete([this.justification], this._listingService); + } +} 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 0798a2591..44a281508 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 @@ -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; diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts index 6b9a7a0ed..5f3908265 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts index 5fc783876..28e3683d2 100644 --- a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts @@ -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'; diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.ts index fb11607b3..33d90a62e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen.component.ts @@ -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, diff --git a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts index 3ca7d13af..068c1aea6 100644 --- a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts +++ b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts @@ -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; - dialogConfig?: MatDialogConfig; - }; -}; + | 'addEditDossierAttribute' + | 'addEditJustification'; @Injectable() export class AdminDialogService extends DialogService { - protected readonly _config: AdminDialogConfig = { + protected readonly _config: DialogConfig = { confirm: { component: ConfirmationDialogComponent, }, @@ -78,6 +72,10 @@ export class AdminDialogService extends DialogService { component: AddEditDossierAttributeDialogComponent, dialogConfig: { autoFocus: true }, }, + addEditJustification: { + component: AddEditJustificationDialogComponent, + dialogConfig: { autoFocus: true }, + }, }; constructor(protected readonly _dialog: MatDialog) { diff --git a/apps/red-ui/src/app/modules/dossier/components/document-info/document-info.component.ts b/apps/red-ui/src/app/modules/dossier/components/document-info/document-info.component.ts index d6aed5cdc..a6e3c5093 100644 --- a/apps/red-ui/src/app/modules/dossier/components/document-info/document-info.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/document-info/document-info.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/dossier/components/page-indicator/page-indicator.component.ts b/apps/red-ui/src/app/modules/dossier/components/page-indicator/page-indicator.component.ts index 99e690162..578bd79ef 100644 --- a/apps/red-ui/src/app/modules/dossier/components/page-indicator/page-indicator.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/page-indicator/page-indicator.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts b/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts index 5cf3c3618..e3e35a338 100644 --- a/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts @@ -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', 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 42bed8aa6..1bebf9ab2 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 @@ -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', diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts index 2a5e8f849..46a5823e3 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts @@ -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'; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts index 6f32c2601..831ed6d98 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/document-info-dialog/document-info-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/document-info-dialog/document-info-dialog.component.ts index 6ad604d96..3d325dc0a 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/document-info-dialog/document-info-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/document-info-dialog/document-info-dialog.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts index c3a45ab90..b0756b69c 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts index 50fedda00..f399023df 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts @@ -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', 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 d39436f42..9b18601e5 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 @@ -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', diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts index dcc5d4e98..f039a1e35 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts @@ -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'; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts index 0b2139d20..562ef918d 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts index f12f8be20..d095c4c70 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts index 60ba724f6..29fcf97ec 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts index bb34fe1e3..b6e747537 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts @@ -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({ diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts index d189ec595..9bc3230c4 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/config.service.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/config.service.ts index e21d3e4f1..ef4c7c1a8 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/config.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/config.service.ts @@ -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 { diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts index b97ce901b..cb150efe8 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts @@ -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'; diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts index cd4716c2b..a67ed64a8 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-dossier-name/dossiers-listing-dossier-name.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-dossier-name/dossiers-listing-dossier-name.component.ts index 4ac0d1031..755418f20 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-dossier-name/dossiers-listing-dossier-name.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-dossier-name/dossiers-listing-dossier-name.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts index 142a46560..36c126a2d 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts @@ -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 { diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts index 86008b4cb..2fa098113 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts @@ -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 - 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'); diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts index d46cd2a4a..3ea6fd6a6 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/dossier/screens/search-screen/search-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/search-screen/search-screen.component.ts index e15ff880a..d8214db9b 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/search-screen/search-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/search-screen/search-screen.component.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/dossier/services/annotation-draw.service.ts b/apps/red-ui/src/app/modules/dossier/services/annotation-draw.service.ts index 9d4a1ec32..11eef6acd 100644 --- a/apps/red-ui/src/app/modules/dossier/services/annotation-draw.service.ts +++ b/apps/red-ui/src/app/modules/dossier/services/annotation-draw.service.ts @@ -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() diff --git a/apps/red-ui/src/app/modules/dossier/services/dossiers-dialog.service.ts b/apps/red-ui/src/app/modules/dossier/services/dossiers-dialog.service.ts index 6131fb4fb..331349a4c 100644 --- a/apps/red-ui/src/app/modules/dossier/services/dossiers-dialog.service.ts +++ b/apps/red-ui/src/app/modules/dossier/services/dossiers-dialog.service.ts @@ -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; - dialogConfig?: MatDialogConfig; - }; -}; - @Injectable() export class DossiersDialogService extends DialogService { - protected readonly _config: DossiersDialogConfig = { + protected readonly _config: DialogConfig = { confirm: { component: ConfirmationDialogComponent, }, @@ -73,12 +62,7 @@ export class DossiersDialogService extends DialogService { }, }; - constructor( - protected readonly _dialog: MatDialog, - private readonly _appStateService: AppStateService, - private readonly _manualAnnotationService: ManualAnnotationService, - private readonly _configService: ConfigService, - ) { + constructor(protected readonly _dialog: MatDialog) { super(_dialog); } } diff --git a/apps/red-ui/src/app/modules/dossier/services/manual-annotation.service.ts b/apps/red-ui/src/app/modules/dossier/services/manual-annotation.service.ts index 91ee3f08c..d78e5b9dc 100644 --- a/apps/red-ui/src/app/modules/dossier/services/manual-annotation.service.ts +++ b/apps/red-ui/src/app/modules/dossier/services/manual-annotation.service.ts @@ -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 { diff --git a/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts b/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts index d249114d7..c49be6c66 100644 --- a/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts +++ b/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts @@ -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 { diff --git a/apps/red-ui/src/app/modules/dossier/shared/components/file-actions/file-actions.component.ts b/apps/red-ui/src/app/modules/dossier/shared/components/file-actions/file-actions.component.ts index 50ae579b6..d0e1c506a 100644 --- a/apps/red-ui/src/app/modules/dossier/shared/components/file-actions/file-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossier/shared/components/file-actions/file-actions.component.ts @@ -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'; diff --git a/apps/red-ui/src/app/modules/dossier/shared/services/file-action.service.ts b/apps/red-ui/src/app/modules/dossier/shared/services/file-action.service.ts index 2f2c1d5b9..cbcbfb73f 100644 --- a/apps/red-ui/src/app/modules/dossier/shared/services/file-action.service.ts +++ b/apps/red-ui/src/app/modules/dossier/shared/services/file-action.service.ts @@ -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 { diff --git a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts index 83bd2139c..6a322f016 100644 --- a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts @@ -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'; diff --git a/apps/red-ui/src/app/modules/shared/services/controller-wrappers/dossier-attributes.service.ts b/apps/red-ui/src/app/modules/shared/services/controller-wrappers/dossier-attributes.service.ts index 2ea94ca2a..b7ce87bc1 100644 --- a/apps/red-ui/src/app/modules/shared/services/controller-wrappers/dossier-attributes.service.ts +++ b/apps/red-ui/src/app/modules/shared/services/controller-wrappers/dossier-attributes.service.ts @@ -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'; diff --git a/apps/red-ui/src/app/modules/upload-download/file-drop/file-drop.component.ts b/apps/red-ui/src/app/modules/upload-download/file-drop/file-drop.component.ts index 3faff91c0..77826af5d 100644 --- a/apps/red-ui/src/app/modules/upload-download/file-drop/file-drop.component.ts +++ b/apps/red-ui/src/app/modules/upload-download/file-drop/file-drop.component.ts @@ -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', diff --git a/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts b/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts index 626d3d216..e2299262f 100644 --- a/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts +++ b/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts @@ -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; diff --git a/apps/red-ui/src/app/modules/dossier/services/dossier-templates.service.ts b/apps/red-ui/src/app/services/entity-services/dossier-templates.service.ts similarity index 100% rename from apps/red-ui/src/app/modules/dossier/services/dossier-templates.service.ts rename to apps/red-ui/src/app/services/entity-services/dossier-templates.service.ts diff --git a/apps/red-ui/src/app/modules/dossier/services/dossiers.service.ts b/apps/red-ui/src/app/services/entity-services/dossiers.service.ts similarity index 100% rename from apps/red-ui/src/app/modules/dossier/services/dossiers.service.ts rename to apps/red-ui/src/app/services/entity-services/dossiers.service.ts diff --git a/apps/red-ui/src/app/modules/dossier/services/file-attributes.service.ts b/apps/red-ui/src/app/services/entity-services/file-attributes.service.ts similarity index 100% rename from apps/red-ui/src/app/modules/dossier/services/file-attributes.service.ts rename to apps/red-ui/src/app/services/entity-services/file-attributes.service.ts diff --git a/apps/red-ui/src/app/modules/dossier/services/files.service.ts b/apps/red-ui/src/app/services/entity-services/files.service.ts similarity index 98% rename from apps/red-ui/src/app/modules/dossier/services/files.service.ts rename to apps/red-ui/src/app/services/entity-services/files.service.ts index 136afe1f1..4cec35fdd 100644 --- a/apps/red-ui/src/app/modules/dossier/services/files.service.ts +++ b/apps/red-ui/src/app/services/entity-services/files.service.ts @@ -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', diff --git a/apps/red-ui/src/app/services/entity-services/justifications.service.ts b/apps/red-ui/src/app/services/entity-services/justifications.service.ts new file mode 100644 index 000000000..563cc951e --- /dev/null +++ b/apps/red-ui/src/app/services/entity-services/justifications.service.ts @@ -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 { + 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 { + return super.loadAll(`${this._defaultModelPath}/${dossierTemplateId}`); + } + + @Validate() + delete(@RequiredParam() justificationNames: string[], @RequiredParam() dossierTemplateId: string): Observable { + return this._post(justificationNames, `${this._defaultModelPath}/${dossierTemplateId}/delete`); + } +} diff --git a/apps/red-ui/src/app/services/permissions.service.ts b/apps/red-ui/src/app/services/permissions.service.ts index fa38d423e..d9455c5e7 100644 --- a/apps/red-ui/src/app/services/permissions.service.ts +++ b/apps/red-ui/src/app/services/permissions.service.ts @@ -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', diff --git a/apps/red-ui/src/app/state/app-state.guard.ts b/apps/red-ui/src/app/state/app-state.guard.ts index f2913b3bd..e52638e04 100644 --- a/apps/red-ui/src/app/state/app-state.guard.ts +++ b/apps/red-ui/src/app/state/app-state.guard.ts @@ -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', diff --git a/apps/red-ui/src/app/state/app-state.service.ts b/apps/red-ui/src/app/state/app-state.service.ts index ef99d5a43..ac2c43d5c 100644 --- a/apps/red-ui/src/app/state/app-state.service.ts +++ b/apps/red-ui/src/app/state/app-state.service.ts @@ -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; diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 949d11775..380680b7c 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -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", diff --git a/libs/common-ui b/libs/common-ui index d8a0c189b..4040db5fb 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit d8a0c189b0c96b48af030a53828dba2ac2b2603c +Subproject commit 4040db5fba7c9ae951d721266380dba4bbb312a4 diff --git a/libs/red-ui-http/src/lib/api/legalBasisMappingController.service.ts b/libs/red-ui-http/src/lib/api/legalBasisMappingController.service.ts index 2ccc59b07..88059ace0 100644 --- a/libs/red-ui-http/src/lib/api/legalBasisMappingController.service.ts +++ b/libs/red-ui-http/src/lib/api/legalBasisMappingController.service.ts @@ -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>; + public getLegalBasisMapping(dossierTemplateId: string, observe?: 'body', reportProgress?: boolean): Observable>; public getLegalBasisMapping( dossierTemplateId: string, observe?: 'response', - reportProgress?: boolean - ): Observable>>; + reportProgress?: boolean, + ): Observable>>; public getLegalBasisMapping( dossierTemplateId: string, observe?: 'events', - reportProgress?: boolean - ): Observable>>; + reportProgress?: boolean, + ): Observable>>; public getLegalBasisMapping(dossierTemplateId: string, observe: any = 'body', reportProgress: boolean = false): Observable { if (dossierTemplateId === null || dossierTemplateId === undefined) { @@ -82,7 +82,7 @@ export class LegalBasisMappingControllerService { headers = headers.set('Accept', httpHeaderAcceptSelected); } - return this.httpClient.request>( + return this.httpClient.request>( '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, + body: Array, dossierTemplateId: string, observe?: 'body', - reportProgress?: boolean + reportProgress?: boolean, ): Observable; public setLegalBasisMapping( - body: Array, + body: Array, dossierTemplateId: string, observe?: 'response', - reportProgress?: boolean + reportProgress?: boolean, ): Observable>; public setLegalBasisMapping( - body: Array, + body: Array, dossierTemplateId: string, observe?: 'events', - reportProgress?: boolean + reportProgress?: boolean, ): Observable>; public setLegalBasisMapping( - body: Array, + body: Array, dossierTemplateId: string, observe: any = 'body', reportProgress: boolean = false, diff --git a/libs/red-ui-http/src/lib/model/legalBasis.ts b/libs/red-ui-http/src/lib/model/legalBasis.ts index e31c7ab97..4837ddc59 100644 --- a/libs/red-ui-http/src/lib/model/legalBasis.ts +++ b/libs/red-ui-http/src/lib/model/legalBasis.ts @@ -10,9 +10,8 @@ * Do not edit the class manually. */ -export interface LegalBasis { +export interface ILegalBasis { description?: string; - id?: number; name?: string; reason?: string; } diff --git a/libs/red-ui-http/src/lib/model/redactionLog.ts b/libs/red-ui-http/src/lib/model/redactionLog.ts index 575a7f4b7..326b1f634 100644 --- a/libs/red-ui-http/src/lib/model/redactionLog.ts +++ b/libs/red-ui-http/src/lib/model/redactionLog.ts @@ -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?: Array; legalBasisVersion?: number; redactionLogEntry?: Array; rulesVersion?: number;