From 14de8283d2b3d237ef8eee8d8db465251e8c2fd6 Mon Sep 17 00:00:00 2001 From: Alex ORLUC <alex.orluc@maarch.org> Date: Mon, 12 Oct 2020 16:29:19 +0200 Subject: [PATCH] FEAT #15051 TIME 0:35 front CheckAcknowledgment action --- core/xml/actions_pages.xml | 10 +++ src/core/lang/lang-fr.php | 11 ++- src/frontend/app/actions/actions.service.ts | 24 ++++++ ...wledgment-record-management.component.html | 43 ++++++++++ ...wledgment-record-management.component.scss | 20 +++++ ...nowledgment-record-management.component.ts | 81 +++++++++++++++++++ ...eck-reply-record-management.component.html | 5 -- src/frontend/app/app.module.ts | 2 + src/lang/lang-fr.json | 3 +- 9 files changed, 189 insertions(+), 10 deletions(-) create mode 100644 src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.html create mode 100644 src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.scss create mode 100644 src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.ts diff --git a/core/xml/actions_pages.xml b/core/xml/actions_pages.xml index c1fc6c52f60..e81a43981e0 100755 --- a/core/xml/actions_pages.xml +++ b/core/xml/actions_pages.xml @@ -486,4 +486,14 @@ An action page is described in a ACTIONPAGE tag : <MODULE>recordManagement</MODULE> <FLAG_CREATE>false</FLAG_CREATE> </ACTIONPAGE> + <ACTIONPAGE> + <ID>checkAcknowledgmentRecordManagement</ID> + <LABEL>_CHECK_ACKNOWLEDGMENT_RECORD_MANAGEMENT</LABEL> + <NAME>checkAcknowledgmentRecordManagement</NAME> + <DESC>_CHECK_ACKNOWLEDGMENT_RECORD_MANAGEMENT_DESC</DESC> + <component>checkAcknowledgmentRecordManagementAction</component> + <ORIGIN>apps</ORIGIN> + <MODULE>recordManagement</MODULE> + <FLAG_CREATE>false</FLAG_CREATE> + </ACTIONPAGE> </ROOT> diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php index 3c657978255..22a46fd2b00 100755 --- a/src/core/lang/lang-fr.php +++ b/src/core/lang/lang-fr.php @@ -484,8 +484,11 @@ define('_REGISTERED_MAIL_DISTRIBUTED', 'Accusé de réception reçu : recommand define('_REGISTERED_MAIL_NOT_DISTRIBUTED', 'Accusé de réception reçu : recommandé non distribué'); define('_CONFIGURATION_UPDATED', 'Configuration modifiée'); -define('_SEND_TO_RECORD_MANAGEMENT', 'Envoyer dans un Système d\'Archivage Électronique'); -define('_SEND_TO_RECORD_MANAGEMENT_DESC', 'Envoyer dans un Système d\'Archivage Électronique'); +define('_SEND_TO_RECORD_MANAGEMENT', 'Envoyer dans un système d\'archivage électronique'); +define('_SEND_TO_RECORD_MANAGEMENT_DESC', 'Envoyer dans un système d\'archivage électronique'); -define('_CHECK_REPLY_RECORD_MANAGEMENT', 'Vérification de la réponse au transfert'); -define('_CHECK_REPLY_RECORD_MANAGEMENT_DESC', 'Vérification de la réponse au transfert'); \ No newline at end of file +define('_CHECK_REPLY_RECORD_MANAGEMENT', 'Vérification de la réponse au transfert du système d\'archivage électronique'); +define('_CHECK_REPLY_RECORD_MANAGEMENT_DESC', 'Vérification de la réponse au transfert du système d\'archivage électronique'); + +define('_CHECK_ACKNOWLEDGMENT_RECORD_MANAGEMENT', 'Vérification du transfert du paquet au système d\'archivage électronique'); +define('_CHECK_ACKNOWLEDGMENT_RECORD_MANAGEMENT_DESC', 'Vérification du transfert du paquet au système d\'archivage électronique'); \ No newline at end of file diff --git a/src/frontend/app/actions/actions.service.ts b/src/frontend/app/actions/actions.service.ts index 0804f7c7ea2..4dd7b7e2e92 100644 --- a/src/frontend/app/actions/actions.service.ts +++ b/src/frontend/app/actions/actions.service.ts @@ -43,6 +43,7 @@ import { PrintRegisteredMailActionComponent } from './print-registered-mail-acti import { PrintDepositListActionComponent } from './print-deposit-list-action/print-deposit-list-action.component'; import { SendToRecordManagementComponent } from './send-to-record-management/send-to-record-management.component'; import { CheckReplyRecordManagementComponent } from './check-reply-record-management/check-reply-record-management.component'; +import { CheckAcknowledgmentRecordManagementComponent } from './check-acknowledgment-record-management/check-acknowledgment-record-management.component'; @Injectable() export class ActionsService implements OnDestroy { @@ -1144,4 +1145,27 @@ export class ActionsService implements OnDestroy { }) ).subscribe(); } + + checkAcknowledgmentRecordManagementAction(options: any = null) { + const dialogRef = this.dialog.open(CheckAcknowledgmentRecordManagementComponent, { + panelClass: 'maarch-modal', + autoFocus: false, + disableClose: true, + data: this.setDatasActionToSend() + }); + dialogRef.afterClosed().pipe( + tap((data: any) => { + this.unlockResourceAfterActionModal(data); + }), + filter((data: string) => data === 'success'), + tap((result: any) => { + this.endAction(result); + }), + finalize(() => this.loading = false), + catchError((err: any) => { + this.notify.handleErrors(err); + return of(false); + }) + ).subscribe(); + } } diff --git a/src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.html b/src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.html new file mode 100644 index 00000000000..e48c68bd0c5 --- /dev/null +++ b/src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.html @@ -0,0 +1,43 @@ +<div class="mat-dialog-content-container"> + <h1 mat-dialog-title>{{data.action.label}}</h1> + <div mat-dialog-content> + <div *ngIf="checking" class="checking" color="primary" style="display:flex;height:100%;justify-content: center;padding: 30px;"> + <mat-spinner diameter="24"></mat-spinner> {{'lang.checkInProgress' | translate}} ... + </div> + <div *ngIf="loading" class="loading" color="primary"> + <mat-spinner></mat-spinner> + </div> + <div class="row" *ngIf="!checking"> + <div class="alert-message alert-message-info" role="alert" style="margin-top: 0px;" [innerHTML]="'lang.checkAcknowledgmentRecordManagementDesc' | translate"></div> + <ng-container *ngIf="data.resIds.length > 0"> + <div class="col-md-12"> + {{'lang.makeActionOn' | translate}} + <b *ngIf="data.resIds.length === 0" color="primary" + class="highlight">{{'lang.currentIndexingMail' | translate}}</b> + <b *ngIf="data.resIds.length === 1" color="primary" class="highlight">{{data.resource.chrono}}</b> + <b *ngIf="data.resIds.length > 1" color="primary" class="highlight">{{data.resIds.length}} + {{'lang.elements' | translate}}</b> ? + </div> + <div class="col-md-12"> + <div *ngIf="resourcesErrors.length > 0" class="alert-message alert-message-danger mailList" + style="max-width: 100%;"> + <p> + {{'lang.canNotMakeAction' | translate}} : + </p> + <ul> + <li *ngFor="let ressource of resourcesErrors"> + <b>{{ressource.alt_identifier}}</b> : {{'lang.' + ressource.reason | translate}} + </li> + </ul> + </div> + </div> + </ng-container> + </div> + </div> + <span class="divider-modal"></span> + <div mat-dialog-actions class="actions"> + <button mat-raised-button mat-button color="primary" [disabled]="loading || selectedRes.length == 0" + (click)="onSubmit()">{{'lang.validate' | translate}}</button> + <button mat-raised-button mat-button [disabled]="loading" [mat-dialog-close]="">{{'lang.cancel' | translate}}</button> + </div> +</div> \ No newline at end of file diff --git a/src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.scss b/src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.scss new file mode 100644 index 00000000000..f978990ea48 --- /dev/null +++ b/src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.scss @@ -0,0 +1,20 @@ +.loading { + position: absolute; + display: flex; + height: 100%; + justify-content: center; + width: 100%; + left: 0px; + top: 0px; + align-items: center; + z-index: 1; + background: rgba(255, 255, 255, 0.8); +} + +.checking { + display: flex; + height: 100%; + justify-content: center; + align-items: center; + padding: 30px; +} \ No newline at end of file diff --git a/src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.ts b/src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.ts new file mode 100644 index 00000000000..0033a9caad1 --- /dev/null +++ b/src/frontend/app/actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component.ts @@ -0,0 +1,81 @@ +import { HttpClient } from '@angular/common/http'; +import { Component, Inject, OnInit, ViewChild } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { NoteEditorComponent } from '@appRoot/notes/note-editor.component'; +import { TranslateService } from '@ngx-translate/core'; +import { FunctionsService } from '@service/functions.service'; +import { NotificationService } from '@service/notification/notification.service'; +import { of } from 'rxjs'; +import { catchError, finalize, tap } from 'rxjs/operators'; + +@Component({ + selector: 'app-check-acknowledgment-record-management', + templateUrl: './check-acknowledgment-record-management.component.html', + styleUrls: ['./check-acknowledgment-record-management.component.scss'] +}) +export class CheckAcknowledgmentRecordManagementComponent implements OnInit { + + loading: boolean = false; + checking: boolean = true; + resourcesErrors: any[] = []; + selectedRes: number[] = []; + + @ViewChild('noteEditor', { static: false }) noteEditor: NoteEditorComponent; + + constructor( + public translate: TranslateService, + public http: HttpClient, + private notify: NotificationService, + public dialogRef: MatDialogRef<CheckAcknowledgmentRecordManagementComponent>, + @Inject(MAT_DIALOG_DATA) public data: any, + public functions: FunctionsService + ) { } + + ngOnInit(): void { + // this.checkReply(); + + // FOR TEST + setTimeout(() => { + this.checking = false; + this.selectedRes = this.data.resIds; + }, 2000); + } + + checkReply() { + this.http.post(`../rest/resourcesList/users/${this.data.userId}/groups/${this.data.groupId}/baskets/${this.data.basketId}/actions/${this.data.action.id}/checkCloseWithFieldsAction`, { resources: this.data.resIds }).pipe( + tap((data: any) => { + // TO DO + this.resourcesErrors = data.errors; + this.selectedRes = data.success; + }), + finalize(() => this.loading = false), + catchError((err: any) => { + this.notify.handleSoftErrors(err); + return of(false); + }) + ).subscribe(); + } + + onSubmit() { + this.loading = true; + // this.executeAction(); + + // FOR TEST + setTimeout(() => { + this.loading = false; + }, 3000); + } + + executeAction() { + this.http.put(this.data.processActionRoute, { resources: this.selectedRes, note: this.noteEditor.getNote() }).pipe( + tap(() => { + this.dialogRef.close(this.selectedRes); + }), + finalize(() => this.loading = false), + catchError((err: any) => { + this.notify.handleSoftErrors(err); + return of(false); + }) + ).subscribe(); + } +} diff --git a/src/frontend/app/actions/check-reply-record-management/check-reply-record-management.component.html b/src/frontend/app/actions/check-reply-record-management/check-reply-record-management.component.html index feed343fd65..4c56e622792 100644 --- a/src/frontend/app/actions/check-reply-record-management/check-reply-record-management.component.html +++ b/src/frontend/app/actions/check-reply-record-management/check-reply-record-management.component.html @@ -31,11 +31,6 @@ </ul> </div> </div> - <div *ngIf="!selectedRes.length === 0" class="col-md-12"> - <div class="alert-message alert-message-info" role="alert" style="max-width: 100%;" - [innerHTML]="data.resIds.length === 1 ? this.translate.instant('lang.reconcileMsg') : this.translate.instant('lang.reconcileMsg') + '<br/>' + this.translate.instant('lang.reconcileMsg2')"> - </div> - </div> </ng-container> </div> </div> diff --git a/src/frontend/app/app.module.ts b/src/frontend/app/app.module.ts index 4183df23cc9..f8406efc318 100755 --- a/src/frontend/app/app.module.ts +++ b/src/frontend/app/app.module.ts @@ -66,6 +66,7 @@ import { PrintRegisteredMailActionComponent } from './actions/print-registered-m import { PrintDepositListActionComponent } from './actions/print-deposit-list-action/print-deposit-list-action.component'; import { SendToRecordManagementComponent } from './actions/send-to-record-management/send-to-record-management.component'; import { CheckReplyRecordManagementComponent } from './actions/check-reply-record-management/check-reply-record-management.component'; +import { CheckAcknowledgmentRecordManagementComponent } from './actions/check-acknowledgment-record-management/check-acknowledgment-record-management.component'; // PROCESS @@ -236,6 +237,7 @@ export class MyHammerConfig extends HammerGestureConfig { ReconcileActionComponent, SendToRecordManagementComponent, CheckReplyRecordManagementComponent, + CheckAcknowledgmentRecordManagementComponent, ], exports : [ SharedModule diff --git a/src/lang/lang-fr.json b/src/lang/lang-fr.json index ceda8d33cc0..c2aa9ae71dd 100644 --- a/src/lang/lang-fr.json +++ b/src/lang/lang-fr.json @@ -2067,6 +2067,7 @@ "senderArchiveEntity": "Service versant", "descriptionLevel": "Niveau de description", "archiveId": "Identifiant de l'archive", - "checkReplyRecordManagementDesc": "Vérifie les <b>réponses</b> des paquets transférés au <b>système d'archivage</b>", + "checkReplyRecordManagementDesc": "Vérifie les <b>réponses</b> des paquets qui on été transférés au <b>système d'archivage électronique</b>.", + "checkAcknowledgmentRecordManagementDesc": "Vérifie si le <b>système d'archivage électronique</b> a bien reçu les <b>paquets</b>.", "checkInProgress": "Vérification en cours" } -- GitLab