RED-6774 - fixed remove redaction issues

This commit is contained in:
Valentin Mihai 2023-07-08 21:26:24 +03:00
parent af3ceccac2
commit 97fa06ef7e
2 changed files with 27 additions and 17 deletions

View File

@ -9,6 +9,7 @@ import { IqserDialogComponent } from '../../../../../../../../libs/common-ui/src
import { PermissionsService } from '@services/permissions.service';
import { tap } from 'rxjs/operators';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { RedactTextOption } from '../redact-text-dialog/redact-text-options';
const PIN_ICON = 'red:push-pin';
const FOLDER_ICON = 'red:folder';
@ -25,6 +26,7 @@ export interface RemoveRedactionData {
dossier: Dossier;
falsePositiveContext: string;
permissions: RemoveRedactionPermissions;
applyToAllDossiers: boolean;
}
export interface RemoveRedactionResult {
@ -50,6 +52,7 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
readonly #redaction: AnnotationWrapper;
readonly #permissions: RemoveRedactionPermissions;
readonly #translations = removeRedactionTranslations;
#applyToAllDossiers: boolean;
constructor(private readonly _formBuilder: FormBuilder, private readonly _permissionsService: PermissionsService) {
super();
@ -57,13 +60,17 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
this.#permissions = this.data.permissions;
this.options = this.#options();
this.form = this.#getForm();
this.#applyToAllDossiers = this.data.applyToAllDossiers ?? true;
this.form
.get('option')
.valueChanges.pipe(
tap(() => {
this.options[1].extraOption.checked = true;
this.options[2].extraOption.checked = true;
for (const option of this.options) {
if (option.extraOption) {
option.extraOption.checked = this.#applyToAllDossiers;
}
}
}),
takeUntilDestroyed(),
)
@ -101,7 +108,7 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
value: RemoveRedactionOptions.IN_DOSSIER,
extraOption: {
label: this.#translations.IN_DOSSIER.extraOptionLabel,
checked: true,
checked: this.data.applyToAllDossiers ?? true,
},
});
}
@ -114,7 +121,7 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
value: RemoveRedactionOptions.FALSE_POSITIVE,
extraOption: {
label: this.#translations.FALSE_POSITIVE.extraOptionLabel,
checked: true,
checked: this.data.applyToAllDossiers ?? true,
},
});
}

View File

@ -125,6 +125,7 @@ export class AnnotationActionsService {
canRemoveOrSuggestToRemoveFromDictionary: permissions.canRemoveOrSuggestToRemoveFromDictionary,
canMarkAsFalsePositive: permissions.canMarkAsFalsePositive,
};
const dossierTemplate = this._dossierTemplatesService.find(this._state.dossierTemplateId);
const result: RemoveRedactionResult = await this._iqserDialog
.openDefault(RemoveRedactionDialogComponent, {
@ -133,24 +134,23 @@ export class AnnotationActionsService {
dossier: this._state.dossier(),
falsePositiveContext: this._getFalsePositiveText(redaction),
permissions: removePermissions,
applyToAllDossiers: dossierTemplate.applyDictionaryUpdatesToAllDossiersByDefault,
},
})
.result();
if (result) {
if (result.option.value === RemoveRedactionOptions.FALSE_POSITIVE) {
this.#setAsFalsePositive(redaction, result.comment);
this.#setAsFalsePositive(redaction, result);
} else {
const removeFromDictionary = result.option.value === RemoveRedactionOptions.IN_DOSSIER;
this.#removeRedaction(redaction, result.comment, removeFromDictionary);
this.#removeRedaction(redaction, result);
}
}
if (result.option.extraOption) {
const dossierTemplate = this._dossierTemplatesService.find(this._state.dossierTemplateId);
const { ...body } = dossierTemplate;
body.applyDictionaryUpdatesToAllDossiersByDefault = result.applyToAllDossiers;
await this._dossierTemplatesService.createOrUpdate(body);
if (result.option.extraOption) {
const { ...body } = dossierTemplate;
body.applyDictionaryUpdatesToAllDossiersByDefault = result.option.extraOption.checked;
await this._dossierTemplatesService.createOrUpdate(body);
}
}
}
@ -380,29 +380,32 @@ export class AnnotationActionsService {
return words;
}
#setAsFalsePositive(redaction: AnnotationWrapper, comment: string) {
#setAsFalsePositive(redaction: AnnotationWrapper, dialogResult: RemoveRedactionResult) {
const request = {
sourceId: redaction.id,
value: this._getFalsePositiveText(redaction),
type: redaction.type,
positions: redaction.positions,
addToDictionary: true,
addToAllDossiers: !!dialogResult.option.extraOption?.checked,
reason: 'False Positive',
dictionaryEntryType: redaction.isRecommendation
? DictionaryEntryTypes.FALSE_RECOMMENDATION
: DictionaryEntryTypes.FALSE_POSITIVE,
comment: comment ? { text: comment } : null,
comment: dialogResult.comment ? { text: dialogResult.comment } : null,
};
const { dossierId, fileId } = this._state;
this.#processObsAndEmit(this._manualRedactionService.addAnnotation([request], dossierId, fileId)).then();
}
#removeRedaction(redaction: AnnotationWrapper, comment: string, removeFromDictionary: boolean) {
#removeRedaction(redaction: AnnotationWrapper, dialogResult: RemoveRedactionResult) {
const removeFromDictionary = dialogResult.option.value === RemoveRedactionOptions.IN_DOSSIER;
const body = {
annotationId: redaction.id,
comment: comment,
comment: dialogResult.comment,
removeFromDictionary,
removeFromAllDossiers: !!dialogResult.option.extraOption?.checked,
};
const { dossierId, fileId } = this._state;
this.#processObsAndEmit(