From e416391f6e977343357a9529ab2506830f3b4546 Mon Sep 17 00:00:00 2001
From: Alex ORLUC <alex.orluc@maarch.org>
Date: Mon, 13 Jan 2020 16:20:30 +0100
Subject: [PATCH] FEAT #12764 TIME 0:10 add delete visa/avis workflow

---
 .../app/avis/avis-workflow.component.ts       | 34 +++++++++++++------
 .../app/visa/visa-workflow.component.ts       | 13 ++++++-
 src/frontend/lang/lang-en.ts                  |  2 ++
 src/frontend/lang/lang-fr.ts                  |  2 ++
 src/frontend/lang/lang-nl.ts                  |  2 ++
 5 files changed, 42 insertions(+), 11 deletions(-)

diff --git a/src/frontend/app/avis/avis-workflow.component.ts b/src/frontend/app/avis/avis-workflow.component.ts
index 5a8ca69f597..7d5d5ca7829 100644
--- a/src/frontend/app/avis/avis-workflow.component.ts
+++ b/src/frontend/app/avis/avis-workflow.component.ts
@@ -236,16 +236,30 @@ export class AvisWorkflowComponent implements OnInit {
     }
 
     saveAvisWorkflow() {
-        this.http.put(`../../rest/listinstances`, [{ resId: this.resId, listInstances: this.avisWorkflow.items }]).pipe(
-            tap((data: any) => {
-                this.avisWorkflowClone = JSON.parse(JSON.stringify(this.avisWorkflow.items));
-                this.notify.success(this.lang.avisWorkflowUpdated);
-            }),
-            catchError((err: any) => {
-                this.notify.handleSoftErrors(err);
-                return of(false);
-            })
-        ).subscribe();
+        if (this.avisWorkflow.items.length === 0) {
+            this.http.delete(`../../rest/resources/${this.resId}/circuits/opinionCircuit`).pipe(
+                tap(() => {
+                    this.avisWorkflowClone = JSON.parse(JSON.stringify(this.avisWorkflow.items));
+                    this.notify.success(this.lang.avisWorkflowDeleted);
+                }),
+                catchError((err: any) => {
+                    this.notify.handleSoftErrors(err);
+                    return of(false);
+                })
+            ).subscribe();
+        } else {
+            this.http.put(`../../rest/listinstances`, [{ resId: this.resId, listInstances: this.avisWorkflow.items }]).pipe(
+                tap((data: any) => {
+                    this.avisWorkflowClone = JSON.parse(JSON.stringify(this.avisWorkflow.items));
+                    this.notify.success(this.lang.avisWorkflowUpdated);
+                }),
+                catchError((err: any) => {
+                    this.notify.handleSoftErrors(err);
+                    return of(false);
+                })
+            ).subscribe();
+        }
+        
     }
 
     addItemToWorkflow(item: any) {
diff --git a/src/frontend/app/visa/visa-workflow.component.ts b/src/frontend/app/visa/visa-workflow.component.ts
index 537bc4630e4..20f452be792 100644
--- a/src/frontend/app/visa/visa-workflow.component.ts
+++ b/src/frontend/app/visa/visa-workflow.component.ts
@@ -281,7 +281,18 @@ export class VisaWorkflowComponent implements OnInit {
     }
 
     saveVisaWorkflow() {
-        if (this.isValidWorkflow()) {
+        if (this.visaWorkflow.items.length === 0) {
+            this.http.delete(`../../rest/resources/${this.resId}/circuits/visaCircuit`).pipe(
+                tap(() => {
+                    this.visaWorkflowClone = JSON.parse(JSON.stringify(this.visaWorkflow.items));
+                    this.notify.success(this.lang.visaWorkflowDeleted);
+                }),
+                catchError((err: any) => {
+                    this.notify.handleSoftErrors(err);
+                    return of(false);
+                })
+            ).subscribe();
+        } else if (this.isValidWorkflow()) {
             this.http.put(`../../rest/listinstances`, [{ resId: this.resId, listInstances: this.visaWorkflow.items }]).pipe(
                 tap((data: any) => {
                     this.visaWorkflowClone = JSON.parse(JSON.stringify(this.visaWorkflow.items));
diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts
index 0653cdc2503..8a0a7f08d9b 100755
--- a/src/frontend/lang/lang-en.ts
+++ b/src/frontend/lang/lang-en.ts
@@ -1392,6 +1392,7 @@ export const LANG_EN = {
     "modelDeleted" : "Model deleted",
     "modelSaved" : "Modèle saved",
     "visaWorkflowUpdated" : "Visa workflow updated",
+    "visaWorkflowDeleted" : "Visa workflow deleted",
     "publicModel" : "Public model",
     "privateModel" : "Private model",
     "moveVisaUserErr1" : "You cannot move", 
@@ -1399,6 +1400,7 @@ export const LANG_EN = {
     "moveAvisUserErr1" : "You cannot move", 
     "moveAvisUserErr2" : "with users who have already given an opinion", 
     "avisWorkflowUpdated" : "Opinion workflow updated",
+    "avisWorkflowDeleted" : "Opinion workflow deleted",
     "avisSent" : "Opinion given",
     "openFullscreen" : "Enable fullscreen",
     "closeFullscreen" : "Disable fullscreen",
diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts
index 93910421734..64ab655a6e0 100755
--- a/src/frontend/lang/lang-fr.ts
+++ b/src/frontend/lang/lang-fr.ts
@@ -1432,6 +1432,7 @@ export const LANG_FR = {
     "modelDeleted" : "Modèle supprimé",
     "modelSaved" : "Modèle sauvegardé",
     "visaWorkflowUpdated" : "Circuit de visa modifié",
+    "visaWorkflowDeleted" : "Circuit de visa supprimé",
     "publicModel" : "Modèle publique",
     "privateModel" : "Modèle privé", 
     "moveVisaUserErr1" : "Vous ne pouvez pas déplacer", 
@@ -1439,6 +1440,7 @@ export const LANG_FR = {
     "moveAvisUserErr1" : "Vous ne pouvez pas déplacer", 
     "moveAvisUserErr2" : "avec des personnes ayant déja donné un avis", 
     "avisWorkflowUpdated" : "Circuit d'avis modifié",
+    "avisWorkflowDeleted" : "Circuit d'avis supprimé",
     "avisSent" : "Avis donné",
     "openFullscreen" : "Activer le mode plein écran",
     "closeFullscreen" : "Désactiver le mode plein écran",
diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts
index 5936028d720..7670fd7cfd9 100755
--- a/src/frontend/lang/lang-nl.ts
+++ b/src/frontend/lang/lang-nl.ts
@@ -1417,6 +1417,7 @@ export const LANG_NL = {
     "modelDeleted" : "Model deleted", //_TO_TRANSLATE
     "modelSaved" : "Modèle saved", //_TO_TRANSLATE
     "visaWorkflowUpdated" : "Visa workflow updated", //_TO_TRANSLATE
+    "visaWorkflowDeleted" : "Visa workflow deleted", //_TO_TRANSLATE
     "publicModel" : "Public model", //_TO_TRANSLATE
     "privateModel" : "Private model", //_TO_TRANSLATE
     "moveVisaUserErr1" : "You cannot move", //_TO_TRANSLATE
@@ -1424,6 +1425,7 @@ export const LANG_NL = {
     "moveAvisUserErr1" : "You cannot move", //_TO_TRANSLATE
     "moveAvisUserErr2" : "with users who have already given an opinion", //_TO_TRANSLATE
     "avisWorkflowUpdated" : "Opinion workflow updated", //_TO_TRANSLATE
+    "avisWorkflowDeleted" : "Opinion workflow deleted", //_TO_TRANSLATE
     "avisSent" : "Opinion given", //_TO_TRANSLATE
     "openFullscreen" : "Enable fullscreen", //_TO_TRANSLATE
     "closeFullscreen" : "Disable fullscreen", //_TO_TRANSLATE
-- 
GitLab