From e48e94c61c8e9cb01795dfca8d2402f59387dab5 Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Tue, 13 Oct 2020 16:58:54 +0200
Subject: [PATCH] FEAT #15047 TIME 1:10 Improve msg error in export seda action

---
 .../exportSeda/controllers/SedaController.php | 32 ++++++++++++-------
 src/lang/lang-fr.json                         |  7 +++-
 2 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/src/app/external/exportSeda/controllers/SedaController.php b/src/app/external/exportSeda/controllers/SedaController.php
index 9a75e925e86..db454c3382a 100755
--- a/src/app/external/exportSeda/controllers/SedaController.php
+++ b/src/app/external/exportSeda/controllers/SedaController.php
@@ -71,7 +71,7 @@ class SedaController
 
         $sedaXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/export_seda/xml/config.xml']);
         if (empty($sedaXml->CONFIG->senderOrgRegNumber)) {
-            return $response->withStatus(400)->withJson(['errors' => 'No senderOrgRegNumber found in config.xml (export_seda)']);
+            return $response->withStatus(400)->withJson(['errors' => 'No senderOrgRegNumber found in config.xml (export_seda)', 'lang' => 'noSenderOrgRegNumber']);
         }
 
         $date = new \DateTime();
@@ -182,17 +182,17 @@ class SedaController
             ];
         }
 
-        $archivalAgreements       = SedaController::getArchivalAgreements([
+        $archivalAgreements = SedaController::getArchivalAgreements([
             'configXml'           => $sedaXml,
             'senderArchiveEntity' => (string)$sedaXml->CONFIG->senderOrgRegNumber,
             'producerService'     => $entity['producer_service']
         ]);
-        if (!empty($archivalAgreements['error'])) {
-            return $response->withStatus(400)->withJson(['errors' => 'ArchivalAgreements error : ' . $archivalAgreements['error']]);
+        if (!empty($archivalAgreements['errors'])) {
+            return $response->withStatus(400)->withJson($archivalAgreements);
         }
         $recipientArchiveEntities = SedaController::getRecipientArchiveEntities(['configXml' => $sedaXml, 'archivalAgreements' => $archivalAgreements['archivalAgreements']]);
-        if (!empty($recipientArchiveEntities['error'])) {
-            return $response->withStatus(400)->withJson(['errors' => 'ArchivalEntities error : ' . $recipientArchiveEntities['error']]);
+        if (!empty($recipientArchiveEntities['errors'])) {
+            return $response->withStatus(400)->withJson($recipientArchiveEntities);
         }
 
         $return['archivalAgreements']       = $archivalAgreements['archivalAgreements'];
@@ -217,7 +217,9 @@ class SedaController
             ]);
 
             if (!empty($curlResponse['errors'])) {
-                return ['error' => 'Error during processing in getRecipientArchiveEntities : ' . $curlResponse['errors']];
+                return ['errors' => 'Error returned by the route /organization/organization/Byrole/archiver : ' . $curlResponse['errors']];
+            } elseif ($curlResponse['code'] != 200) {
+                return ['errors' => 'Error returned by the route /organization/organization/Byrole/archiver : ' . $curlResponse['response']['message']];
             }
 
             $archiveEntitiesAllowed = array_column($args['archivalAgreements'], 'archiveEntityRegNumber');
@@ -267,14 +269,16 @@ class SedaController
             ]);
 
             if (!empty($curlResponse['errors'])) {
-                return ['error' => 'Error during processing in getArchivalAgreements : ' . $curlResponse['errors']];
+                return ['errors' => 'Error returned by the route /medona/archivalAgreement/Index : ' . $curlResponse['errors']];
+            } elseif ($curlResponse['code'] != 200) {
+                return ['errors' => 'Error returned by the route /medona/archivalAgreement/Index : ' . $curlResponse['response']['message']];
             }
 
             $producerService = SedaController::getProducerServiceInfo(['configXml' => $args['configXml'], 'producerServiceName' => $args['producerService']]);
             if (!empty($producerService['errors'])) {
-                return ['error' => 'Error during processing in getArchivalAgreements producer service info : ' . $curlResponse['errors']];
+                return ['errors' => $curlResponse['errors']];
             } elseif (empty($producerService['producerServiceInfo'])) {
-                return ['error' => 'ProducerService does not exists in MaarchRM'];
+                return ['errors' => 'ProducerService does not exists in MaarchRM', 'lang' => 'producerServiceDoesNotExists'];
             }
 
             $archivalAgreements[] = [
@@ -321,7 +325,9 @@ class SedaController
         ]);
 
         if (!empty($curlResponse['errors'])) {
-            return ['error' => $curlResponse['errors']];
+            return ['errors' => 'Error returned by the route /organization/organization/Search : ' . $curlResponse['errors']];
+        } elseif ($curlResponse['code'] != 200) {
+            return ['errors' => 'Error returned by the route /organization/organization/Search : ' . $curlResponse['response']['message']];
         }
 
         return ['producerServiceInfo' => $curlResponse['response'][0]];
@@ -352,7 +358,9 @@ class SedaController
             ]);
 
             if (!empty($curlResponse['errors'])) {
-                return $response->withStatus(400)->withJson(['errors' => 'Error during processing in getRetentionRules : ' . $curlResponse['errors']]);
+                return $response->withStatus(400)->withJson(['errors' => 'Error returned by the route /recordsManagement/retentionRule/Index : ' . $curlResponse['errors']]);
+            } elseif ($curlResponse['code'] != 200) {
+                return $response->withStatus(400)->withJson(['errors' => 'Error returned by the route /recordsManagement/retentionRule/Index : ' . $curlResponse['response']['message']]);
             }
 
             $retentionRules[] = [
diff --git a/src/lang/lang-fr.json b/src/lang/lang-fr.json
index 94dd83d0fde..3b33450aa57 100644
--- a/src/lang/lang-fr.json
+++ b/src/lang/lang-fr.json
@@ -2057,7 +2057,7 @@
     "manualSearchInfo" : "Vous pouvez laisser le terme dans le champ sans sélectionner de valeur pour la recherche.",
     "groupSign" : "Groupe du signataire",
     "noAdminSearchConfiguration": "Aucune configuration de recherche trouvée",
-    "producerService": "Service producteur",
+    "producerService": "Identifiant de service producteur",
     "sendersDepartment": "Département des expéditeurs",
     "recordManagement": "Archivage électronique",
     "slipLabel": "Libellé du bordereau",
@@ -2078,6 +2078,11 @@
     "recordManagement_replyNotReadable": "La réponse de transfert de ce courrier n'est pas correctement structurée",
     "recordManagement_noReplyReference": "Aucun bordereau correspond à la réponse de transfert",
     "recordManagement_wrongReply": "La réponse de transfert n'est pas lié au bon courrier",
+    "noDestination": "Le courrier n'a pas d'entité traitante",
+    "noRetentionInfo": "Le type de courrier n'a pas de règle de conservation ou de sort final",
+    "noProducerService": "L'entité traitante n'a pas d'identifiant de service producteur",
+    "noSenderOrgRegNumber": "Aucun service versant défini (Balise senderOrgRegNumber dans config.xml)",
+    "producerServiceDoesNotExists": "Le service producteur n'existe pas dans MaarchRM",
     "nextPage": "Page suivante",
     "prevPage": "Page précédente",
     "onlySingleResourceAllowed": "Seule une ressource peut être traité par cette action"
-- 
GitLab