From dbf1029d9f14a4a83d9235eb076234926b42ff5d Mon Sep 17 00:00:00 2001 From: Alex ORLUC <alex.orluc@maarch.org> Date: Thu, 30 Jan 2020 12:37:19 +0100 Subject: [PATCH] FEAT #11703 TIME 1:20 add load wrkfl with destination in idnexing + add param indexation + alow action send to visa --- src/app/group/controllers/GroupController.php | 2 +- .../send-signature-book-action.component.html | 2 +- .../send-signature-book-action.component.ts | 43 ++++++++++++++++--- .../app/visa/visa-workflow.component.ts | 7 ++- src/frontend/lang/lang-en.ts | 2 +- src/frontend/lang/lang-fr.ts | 2 +- src/frontend/lang/lang-nl.ts | 2 +- 7 files changed, 47 insertions(+), 13 deletions(-) diff --git a/src/app/group/controllers/GroupController.php b/src/app/group/controllers/GroupController.php index 0d75fe298c7..b4a181e2407 100755 --- a/src/app/group/controllers/GroupController.php +++ b/src/app/group/controllers/GroupController.php @@ -217,7 +217,7 @@ class GroupController $group['indexationParameters'] = json_decode($group['indexation_parameters'], true); unset($group['can_index'], $group['indexation_parameters']); - $allActions = ActionModel::get(['select' => ['id', 'label_action'], 'where' => ['component in (?)'], 'data' => [['confirmAction', 'closeMailAction', 'noConfirmAction']]]); + $allActions = ActionModel::get(['select' => ['id', 'label_action'], 'where' => ['component in (?)'], 'data' => [['confirmAction', 'closeMailAction', 'noConfirmAction', 'sendSignatureBookAction']]]); $allEntities = EntityModel::get([ 'select' => ['e1.id', 'e1.entity_id', 'e1.entity_label', 'e2.id as parent_id'], diff --git a/src/frontend/app/actions/visa-send-signature-book-action/send-signature-book-action.component.html b/src/frontend/app/actions/visa-send-signature-book-action/send-signature-book-action.component.html index 75aa68fced5..a060f2dd37e 100644 --- a/src/frontend/app/actions/visa-send-signature-book-action/send-signature-book-action.component.html +++ b/src/frontend/app/actions/visa-send-signature-book-action/send-signature-book-action.component.html @@ -22,7 +22,7 @@ </li> </ul> </div> - <app-visa-workflow *ngIf="data.resIds.length == 1 || (!noResourceToProcess && data.resIds.length > 1)" [adminMode]="true" #appVisaWorkflow> + <app-visa-workflow *ngIf="data.resIds.length <= 1 || (!noResourceToProcess && data.resIds.length > 1)" [adminMode]="true" #appVisaWorkflow> </app-visa-workflow> <div style="padding-top: 10px;"> <app-note-editor #noteEditor [resIds]="data.resIds"></app-note-editor> diff --git a/src/frontend/app/actions/visa-send-signature-book-action/send-signature-book-action.component.ts b/src/frontend/app/actions/visa-send-signature-book-action/send-signature-book-action.component.ts index d1db99685b3..40f4cfa1f06 100644 --- a/src/frontend/app/actions/visa-send-signature-book-action/send-signature-book-action.component.ts +++ b/src/frontend/app/actions/visa-send-signature-book-action/send-signature-book-action.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, Inject, ViewChild } from '@angular/core'; +import { Component, OnInit, Inject, ViewChild, AfterViewInit } from '@angular/core'; import { LANG } from '../../translate.component'; import { NotificationService } from '../../notification.service'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; @@ -13,10 +13,10 @@ import { VisaWorkflowComponent } from '../../visa/visa-workflow.component'; templateUrl: "send-signature-book-action.component.html", styleUrls: ['send-signature-book-action.component.scss'], }) -export class SendSignatureBookActionComponent implements OnInit { +export class SendSignatureBookActionComponent implements AfterViewInit { lang: any = LANG; - loading: boolean = false; + loading: boolean = true; resourcesError: any[] = []; @@ -32,11 +32,15 @@ export class SendSignatureBookActionComponent implements OnInit { @Inject(MAT_DIALOG_DATA) public data: any, public functions: FunctionsService) { } - async ngOnInit(): Promise<void> { - if (this.data.resIds.length > 0) { - this.loading = true; + async ngAfterViewInit(): Promise<void> { + if (this.data.resIds.length === 0 && !this.functions.empty(this.data.resource.destination)) { + await this.appVisaWorkflow.loadListModel(this.data.resource.destination); + this.loading = false; + } else if (this.data.resIds.length > 0) { await this.checkSignatureBook(); this.loading = false; + } else { + this.loading = false; } if (this.data.resIds.length === 1) { await this.appVisaWorkflow.loadWorkflow(this.data.resIds[0]); @@ -44,6 +48,7 @@ export class SendSignatureBookActionComponent implements OnInit { this.appVisaWorkflow.loadDefaultWorkflow(this.data.resIds[0]); } } + } checkSignatureBook() { @@ -71,7 +76,7 @@ export class SendSignatureBookActionComponent implements OnInit { res = await this.appVisaWorkflow.saveVisaWorkflow(this.data.resIds); } if (res) { - this.executeAction(this.data.resIds); + this.executeIndexingAction(this.data.resIds[0]); } } else { const realResSelected: number[] = this.data.resIds.filter((resId: any) => this.resourcesError.map(resErr => resErr.res_id).indexOf(resId) === -1); @@ -86,6 +91,11 @@ export class SendSignatureBookActionComponent implements OnInit { } indexDocument() { + this.data.resource.integrations = [ + { + inSignatureBook : true + } + ]; return new Promise((resolve, reject) => { this.http.post('../../rest/resources', this.data.resource).pipe( tap((data: any) => { @@ -120,6 +130,25 @@ export class SendSignatureBookActionComponent implements OnInit { ).subscribe(); } + executeIndexingAction(resId: number) { + + this.http.put(this.data.indexActionRoute, { resource: resId, note: this.noteEditor.getNoteContent() }).pipe( + tap((data: any) => { + if (!data) { + this.dialogRef.close('success'); + } + if (data && data.errors != null) { + this.notify.error(data.errors); + } + }), + finalize(() => this.loading = false), + catchError((err: any) => { + this.notify.handleErrors(err); + return of(false); + }) + ).subscribe(); + } + isValidAction() { if (!this.noResourceToProcess && this.appVisaWorkflow !== undefined && !this.appVisaWorkflow.emptyWorkflow() && !this.appVisaWorkflow.workflowEnd()) { return true; diff --git a/src/frontend/app/visa/visa-workflow.component.ts b/src/frontend/app/visa/visa-workflow.component.ts index ae28aa5f6cf..518dd736d66 100644 --- a/src/frontend/app/visa/visa-workflow.component.ts +++ b/src/frontend/app/visa/visa-workflow.component.ts @@ -83,7 +83,8 @@ export class VisaWorkflowComponent implements OnInit { let route = this.linkedToMaarchParapheur === true ? `../../rest/listTemplates/entities/${entityId}?type=visaCircuit&maarchParapheur=true` : `../../rest/listTemplates/entities/${entityId}?type=visaCircuit`; - this.http.get(route) + return new Promise((resolve, reject) => { + this.http.get(route) .subscribe((data: any) => { if (data.listTemplates[0]) { this.visaWorkflow.items = data.listTemplates[0].items.map((item: any) => { @@ -100,7 +101,11 @@ export class VisaWorkflowComponent implements OnInit { this.getMaarchParapheurUserAvatar(element.externalId.maarchParapheur, key); } }); + resolve(true); }); + }); + + } loadVisaSignUsersList() { diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts index 1b0faba1fc1..99563adfeff 100755 --- a/src/frontend/lang/lang-en.ts +++ b/src/frontend/lang/lang-en.ts @@ -1036,7 +1036,7 @@ export const LANG_EN = { "indexation" : "Mail indexation", "keywordAdded" : "Keyword added", "keywordDeleted" : "Keyword deleted", - "actionsInfo" : "Only actions with \"simple confirmation\", \"close mail\" and \"no confirmation\" will be displayed", + "actionsInfo" : "Only actions with \"simple confirmation\", \"close mail\", \"no confirmation\" and \"send to visa\" will be displayed", "eventList" : "Open page", "folderAdded" : "Folder added", "folderDeleted" : "Folder deleted", diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts index 9f691843e41..8f7988aad9f 100755 --- a/src/frontend/lang/lang-fr.ts +++ b/src/frontend/lang/lang-fr.ts @@ -1070,7 +1070,7 @@ export const LANG_FR = { "indexation" : "Enregistrement de courrier", "keywordAdded" : "Mot-clé ajouté", "keywordDeleted" : "Mot-clé supprimé", - "actionsInfo" : "Seules les actions avec \"confirmation simple\", \"clôturer un courrier\" et \"sans confirmation\" seront affichées", + "actionsInfo" : "Seules les actions avec \"confirmation simple\", \"clôturer un courrier\", \"sans confirmation\" et \"envoyer pour visa\" seront affichées", "noEventList" : "Ne rien faire", "eventVisaMail" : "Parapheur électronique", "eventProcessDoc" : "Fiche de traitement", diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts index 1d0fb87e8dc..c2096787e25 100755 --- a/src/frontend/lang/lang-nl.ts +++ b/src/frontend/lang/lang-nl.ts @@ -1062,7 +1062,7 @@ export const LANG_NL = { "indexation" : "Mail indexation", //_TO_TRANSLATE "keywordAdded" : "Keyword added", //_TO_TRANSLATE "keywordDeleted" : "Keyword deleted", //_TO_TRANSLATE - "actionsInfo" : "Only actions with \"simple confirmation\", \"close mail\" and \"no confirmation\" will be displayed", //_TO_TRANSLATE + "actionsInfo" : "Only actions with \"simple confirmation\", \"close mail\", \"no confirmation\" and \"send to visa\" will be displayed", //_TO_TRANSLATE "eventList" : "Open page", //_TO_TRANSLATE "folderAdded" : "Folder added", //_TO_TRANSLATE "folderDeleted" : "Folder deleted", //_TO_TRANSLATE -- GitLab