diff --git a/src/frontend/app/actions/redirect-action/redirect-action.component.html b/src/frontend/app/actions/redirect-action/redirect-action.component.html index db0591fbc8aca9032f2e208869394e02fd593bd1..18e6a5fb4bfccd8ffa3965159ed4b0500eec6189 100755 --- a/src/frontend/app/actions/redirect-action/redirect-action.component.html +++ b/src/frontend/app/actions/redirect-action/redirect-action.component.html @@ -48,7 +48,7 @@ </div> </div> <div *ngIf="redirectMode == 'user'" class="row"> - <mat-form-field appearance="outline" floatLabel="never" [style.fontSize.px]="10"> + <mat-form-field *ngIf="actionKeyword !== 'autoRedirectToUser'" appearance="outline" floatLabel="never" [style.fontSize.px]="10"> <input class="searchUserRedirect" matInput placeholder="{{'lang.searchNewAssignee' | translate}}" [matAutocomplete]="auto" [formControl]="userRedirectCtrl" (click)="userRedirectCtrl.setValue('')"> <mat-autocomplete #auto="matAutocomplete" (optionSelected)="changeDest($event)" isOpen="true"> diff --git a/src/frontend/app/actions/redirect-action/redirect-action.component.ts b/src/frontend/app/actions/redirect-action/redirect-action.component.ts index 13c33e14810db9daf664c626cde355f2ba681208..2b278902a47a868109b5ffecb9e4195c563c45b9 100644 --- a/src/frontend/app/actions/redirect-action/redirect-action.component.ts +++ b/src/frontend/app/actions/redirect-action/redirect-action.component.ts @@ -9,6 +9,7 @@ import { map, tap, finalize, catchError, startWith } from 'rxjs/operators'; import { NoteEditorComponent } from '../../notes/note-editor.component'; import { FunctionsService } from '@service/functions.service'; import { Observable, of } from 'rxjs'; +import { HeaderService } from '@service/header.service'; declare let $: any; @@ -44,23 +45,29 @@ export class RedirectActionComponent implements OnInit { filteredUserRedirect: Observable<any[]>; isDestinationChanging: boolean = false; + actionKeyword: string = ''; + constructor( public translate: TranslateService, public http: HttpClient, private notify: NotificationService, public dialogRef: MatDialogRef<RedirectActionComponent>, + public headerService: HeaderService, @Inject(MAT_DIALOG_DATA) public data: any, private functionsService: FunctionsService ) { } async ngOnInit(): Promise<void> { - this.loading = true; await this.getEntities(); await this.getDefaultEntity(); - if (this.userListRedirect.length === 0 && this.entities.filter((entity: any) => entity.allowed).length === 0) { + if (this.actionKeyword === 'autoRedirectToUser') { + this.redirectMode = 'user'; + this.changeDest({option: { value: this.formatUser()}}); + this.loading = false; + } else if (this.userListRedirect.length === 0 && this.entities.filter((entity: any) => entity.allowed).length === 0) { this.redirectMode = 'none'; this.loading = false; } else if (this.userListRedirect.length === 0 && this.entities.filter((entity: any) => entity.allowed).length > 0) { @@ -76,11 +83,15 @@ export class RedirectActionComponent implements OnInit { return new Promise((resolve, reject) => { this.http.get(`../rest/resourcesList/users/${this.data.userId}/groups/${this.data.groupId}/baskets/${this.data.basketId}/actions/${this.data.action.id}/getRedirect`).pipe( tap((data: any) => { - this.entities = data['entities']; this.userListRedirect = data.users; + if (data.autoRedirectToUser) { + this.actionKeyword = 'autoRedirectToUser'; + } else { + this.userListRedirect.push(this.formatUser()); + } + this.entities = data['entities']; this.keepDestForRedirection = data.keepDestForRedirection; this.injectDatasParam.keepDestForRedirection = data.keepDestForRedirection; - resolve(true); }), catchError((err: any) => { @@ -315,6 +326,19 @@ export class RedirectActionComponent implements OnInit { } } + formatUser() { + return { + difflist_type: 'entity_id', + item_mode: 'dest', + item_type: 'user_id', + id: this.headerService.user.id, + item_id: this.headerService.user.id, + itemSerialId: this.headerService.user.id, + labelToDisplay: `${this.headerService.user.firstname} ${this.headerService.user.lastname}`, + descriptionToDisplay: this.headerService.user.entities.find((entity: any) => entity.primary_entity === 'Y').entity_label + }; + } + private _filterUserRedirect(value: string): any[] { if (typeof value === 'string') { const filterValue = value.toLowerCase(); diff --git a/src/frontend/app/administration/basket/basket-administration.component.ts b/src/frontend/app/administration/basket/basket-administration.component.ts index c56e677cfe897304c9c2a01559ec4d20a1539848..5212e6c7994de970d1f1809490955b5258d5c847 100755 --- a/src/frontend/app/administration/basket/basket-administration.component.ts +++ b/src/frontend/app/administration/basket/basket-administration.component.ts @@ -410,6 +410,13 @@ export class BasketAdministrationSettingsModalComponent implements OnInit { icon: 'fa fa-hashtag', allowed: true, text: this.translate.instant('lang.immediatelySuperiorMyPrimaryEntity') + }, { + id: 'AUTO_REDIRECT_TO_USER', + keyword: 'AUTO_REDIRECT_TO_USER', + parent: '#', + icon: 'fa fa-hashtag', + allowed: true, + text: this.translate.instant('lang.autoRedirectToUser') }]; keywordEntities.forEach((keyword: any) => { @@ -443,7 +450,7 @@ export class BasketAdministrationSettingsModalComponent implements OnInit { 'name': 'proton', 'responsive': true }, - 'data': this.allEntities + 'data': this.allEntities.filter((entity: any) => entity.id !== 'AUTO_REDIRECT_TO_USER') }, 'plugins': ['checkbox', 'search'] }); diff --git a/src/lang/lang-fr.json b/src/lang/lang-fr.json index f20430fa7b5ef596ff722fb9738ef0b662dc7db0..5ebbfb60017cccf9984f697074c464a7b501c5a2 100644 --- a/src/lang/lang-fr.json +++ b/src/lang/lang-fr.json @@ -2542,5 +2542,6 @@ "switchSae": "Configurer Maarch RM", "configSaeInfo": "Pour plus d'informations sur la configuration d'un système d'archivage électronique. Consulter la documentation : <a href=\"{{url}}\" target=\"_blank\" class=\"link\">Configurer un SAE</a>", "delegatedOpinion": "Avis donné à la place de", - "requestedOpinion": "Avis demandé à la place de" + "requestedOpinion": "Avis demandé à la place de", + "autoRedirectToUser": "A moi-même" }