diff --git a/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts b/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts
index e555969dd..8c3184cc1 100644
--- a/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts
+++ b/apps/red-ui/src/app/guards/dossier-template-exists.guard.ts
@@ -23,12 +23,14 @@ export function templateExistsWhenEnteringAdmin(): CanActivateFn {
const defaultColorsService = inject(DefaultColorsService);
const watermarksService = inject(WatermarkService);
const router = inject(Router);
+ const rulesService = inject(RulesService);
const isDocumine = getConfig().IS_DOCUMINE;
const dossierTemplate = inject(DossierTemplateStatsService).get(dossierTemplateId);
await firstValueFrom(fileAttributesService.loadFileAttributesConfig(dossierTemplateId));
await firstValueFrom(dictionaryService.loadDictionaryDataForDossierTemplate(dossierTemplateId));
await firstValueFrom(defaultColorsService.loadForDossierTemplate(dossierTemplateId));
+ await firstValueFrom(rulesService.getFor(dossierTemplateId));
if (!isDocumine) {
await firstValueFrom(watermarksService.loadForDossierTemplate(dossierTemplateId));
}
diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.html b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.html
index d8fa1b64c..2ef1b2e8c 100644
--- a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.html
@@ -34,6 +34,16 @@
+
+
+ {{ 'dossier-template-info-screen.rules-reset.label' | translate }}
+
+
{{ 'dossier-template-info-screen.entries' | translate: { count: ctx.stats.numberOfEntries } }}
diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.scss b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.scss
index dd00e21c8..eda21743e 100644
--- a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.scss
+++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.scss
@@ -18,3 +18,11 @@
padding-right: 24px;
margin-right: 24px;
}
+
+.error {
+ color: var(--iqser-primary);
+}
+
+.action-icon {
+ cursor: pointer;
+}
diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts
index a6dab16e7..49c904e80 100644
--- a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts
+++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-details/dossier-template-details.component.ts
@@ -1,4 +1,4 @@
-import { Component, Input, OnInit } from '@angular/core';
+import { Component, computed, Input, OnInit } from '@angular/core';
import { ContextComponent } from '@iqser/common-ui/lib/utils';
import { type DossierTemplate, type DossierTemplateStats } from '@red/domain';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
@@ -9,6 +9,11 @@ import { MatIcon } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { InitialsAvatarComponent } from '@common-ui/users';
import { DatePipe } from '@shared/pipes/date.pipe';
+import { RulesService } from '../../../services/rules.service';
+import { Toaster } from '@iqser/common-ui';
+import { MatTooltip } from '@angular/material/tooltip';
+import { firstValueFrom } from 'rxjs';
+import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
interface Context {
readonly dossierTemplate: DossierTemplate;
@@ -20,16 +25,20 @@ interface Context {
templateUrl: './dossier-template-details.component.html',
styleUrls: ['./dossier-template-details.component.scss'],
standalone: true,
- imports: [NgIf, AsyncPipe, MatIcon, TranslateModule, DatePipe, InitialsAvatarComponent],
+ imports: [NgIf, AsyncPipe, MatIcon, TranslateModule, DatePipe, InitialsAvatarComponent, MatTooltip],
})
export class DossierTemplateDetailsComponent extends ContextComponent implements OnInit {
readonly translations = dossierTemplateStatusTranslations;
-
@Input({ required: true }) dossierTemplateId: string;
+ readonly areRulesLocked = computed(() => {
+ return this._rulesService.currentTemplateRules().timeoutDetected;
+ });
constructor(
private readonly _dossierTemplatesService: DossierTemplatesService,
private readonly _dossierTemplateStatsService: DossierTemplateStatsService,
+ private readonly _rulesService: RulesService,
+ private readonly _toaster: Toaster,
) {
super();
}
@@ -40,4 +49,14 @@ export class DossierTemplateDetailsComponent extends ContextComponent i
stats: this._dossierTemplateStatsService.watch$(this.dossierTemplateId),
});
}
+
+ async resetRules() {
+ try {
+ await firstValueFrom(this._rulesService.reset(this.dossierTemplateId));
+ this._toaster.success(_('dossier-template-info-screen.rules-reset.success'));
+ await firstValueFrom(this._rulesService.getFor(this.dossierTemplateId));
+ } catch (error) {
+ this._toaster.rawError(error.error.message);
+ }
+ }
}
diff --git a/apps/red-ui/src/app/modules/admin/services/rules.service.ts b/apps/red-ui/src/app/modules/admin/services/rules.service.ts
index 09c20cc03..74eaa92cf 100644
--- a/apps/red-ui/src/app/modules/admin/services/rules.service.ts
+++ b/apps/red-ui/src/app/modules/admin/services/rules.service.ts
@@ -33,4 +33,8 @@ export class RulesService extends EntitiesService {
getFor(entityId: string, queryParams?: List): Observable {
return super.getFor(entityId, queryParams).pipe(tap(rules => this.setEntities([rules as Rules])));
}
+
+ reset(dossierTemplateId: string, ruleFileType: IRules['ruleFileType'] = 'ENTITY') {
+ return this._put(null, `${this._defaultModelPath}/${dossierTemplateId}/${ruleFileType}/reset`);
+ }
}
diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json
index 6ca1ce677..df419bfb5 100644
--- a/apps/red-ui/src/assets/i18n/redact/de.json
+++ b/apps/red-ui/src/assets/i18n/redact/de.json
@@ -1087,6 +1087,11 @@
"entities": "{count} {count, plural, one{Entität} other{Entitäten}}",
"entries": "{count} {count, plural, one{Eintrag} other{Einträge}}",
"modified-on": "Geändert am: {date}",
+ "rules-reset": {
+ "label": "Regeln gesperrt",
+ "success": "Die Regeln der Dossier-Vorlage wurden erfolgreich zurückgesetzt.",
+ "tooltip": "Klicken Sie hier, um die Regeln zurückzusetzen"
+ },
"title": "Dossier-Vorlage bearbeiten",
"valid-from": "Gültig ab: {date}",
"valid-to": "Gültig bis: {Datum}"
diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json
index 8eb095fdf..008733c66 100644
--- a/apps/red-ui/src/assets/i18n/redact/en.json
+++ b/apps/red-ui/src/assets/i18n/redact/en.json
@@ -1087,6 +1087,11 @@
"entities": "{count} {count, plural, one{entity} other{entities}}",
"entries": "{count} {count, plural, one{entry} other{entries}}",
"modified-on": "Modified on: {date}",
+ "rules-reset": {
+ "label": "Rules locked",
+ "success": "Dossier template rules successfully reset.",
+ "tooltip": "Click to reset rules"
+ },
"title": "Edit dossier template",
"valid-from": "Valid from: {date}",
"valid-to": "Valid to: {date}"
diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json
index 8cd4bf26e..80b01fd8a 100644
--- a/apps/red-ui/src/assets/i18n/scm/de.json
+++ b/apps/red-ui/src/assets/i18n/scm/de.json
@@ -1087,6 +1087,11 @@
"entities": "{count} {count, plural, one{Entität} other{Entitäten}}",
"entries": "{count} {count, plural, one{Eintrag} other{Einträge}}",
"modified-on": "Geändert am {date}",
+ "rules-reset": {
+ "label": "Regeln gesperrt",
+ "success": "Die Regeln der Dossier-Vorlage wurden erfolgreich zurückgesetzt.",
+ "tooltip": "Klicken Sie hier, um die Regeln zurückzusetzen"
+ },
"title": "Dossier-Vorlage bearbeiten",
"valid-from": "Gültig ab: {date}",
"valid-to": "Gültig bis: {date}"
diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json
index 9b4efdfbd..e8795bf00 100644
--- a/apps/red-ui/src/assets/i18n/scm/en.json
+++ b/apps/red-ui/src/assets/i18n/scm/en.json
@@ -1087,6 +1087,11 @@
"entities": "{count} {count, plural, one{entity} other{entities}}",
"entries": "{count} {count, plural, one{entry} other{entries}}",
"modified-on": "Modified on: {date}",
+ "rules-reset": {
+ "label": "Rules locked",
+ "success": "Dossier template rules successfully reset.",
+ "tooltip": "Click to reset rules"
+ },
"title": "Edit dossier template",
"valid-from": "Valid from: {date}",
"valid-to": "Valid to: {date}"